c2runtime.js 909 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827278282782927830278312783227833278342783527836278372783827839278402784127842278432784427845278462784727848278492785027851278522785327854278552785627857278582785927860278612786227863278642786527866278672786827869278702787127872278732787427875278762787727878278792788027881278822788327884278852788627887278882788927890278912789227893278942789527896278972789827899279002790127902279032790427905279062790727908279092791027911279122791327914279152791627917279182791927920279212792227923279242792527926279272792827929279302793127932279332793427935279362793727938279392794027941279422794327944279452794627947279482794927950279512795227953279542795527956279572795827959279602796127962279632796427965279662796727968279692797027971279722797327974279752797627977279782797927980279812798227983279842798527986279872798827989279902799127992279932799427995279962799727998279992800028001280022800328004280052800628007280082800928010280112801228013280142801528016280172801828019280202802128022280232802428025280262802728028280292803028031280322803328034280352803628037280382803928040280412804228043280442804528046280472804828049280502805128052280532805428055280562805728058280592806028061280622806328064280652806628067280682806928070280712807228073280742807528076280772807828079280802808128082280832808428085280862808728088280892809028091280922809328094280952809628097280982809928100281012810228103281042810528106281072810828109281102811128112281132811428115281162811728118281192812028121281222812328124281252812628127281282812928130281312813228133281342813528136281372813828139281402814128142281432814428145281462814728148281492815028151281522815328154281552815628157281582815928160281612816228163281642816528166281672816828169281702817128172281732817428175281762817728178281792818028181281822818328184281852818628187281882818928190281912819228193281942819528196281972819828199282002820128202282032820428205282062820728208282092821028211282122821328214282152821628217282182821928220282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333293342933529336293372933829339293402934129342293432934429345293462934729348293492935029351293522935329354293552935629357293582935929360293612936229363293642936529366293672936829369293702937129372293732937429375293762937729378293792938029381293822938329384293852938629387293882938929390293912939229393293942939529396293972939829399294002940129402294032940429405294062940729408294092941029411294122941329414294152941629417294182941929420294212942229423294242942529426294272942829429294302943129432294332943429435294362943729438294392944029441294422944329444294452944629447294482944929450294512945229453294542945529456294572945829459294602946129462294632946429465294662946729468294692947029471294722947329474294752947629477294782947929480294812948229483294842948529486294872948829489294902949129492294932949429495294962949729498294992950029501295022950329504295052950629507295082950929510295112951229513295142951529516295172951829519295202952129522295232952429525295262952729528295292953029531295322953329534295352953629537295382953929540295412954229543295442954529546295472954829549295502955129552295532955429555295562955729558295592956029561295622956329564295652956629567295682956929570295712957229573295742957529576295772957829579295802958129582295832958429585295862958729588295892959029591295922959329594295952959629597295982959929600296012960229603296042960529606296072960829609296102961129612296132961429615296162961729618296192962029621296222962329624296252962629627296282962929630296312963229633296342963529636296372963829639296402964129642296432964429645296462964729648296492965029651296522965329654296552965629657296582965929660296612966229663296642966529666296672966829669296702967129672296732967429675296762967729678296792968029681296822968329684296852968629687296882968929690296912969229693296942969529696296972969829699297002970129702297032970429705297062970729708297092971029711297122971329714297152971629717297182971929720297212972229723297242972529726297272972829729297302973129732297332973429735297362973729738297392974029741297422974329744297452974629747297482974929750297512975229753297542975529756297572975829759297602976129762297632976429765297662976729768297692977029771297722977329774297752977629777297782977929780297812978229783297842978529786297872978829789297902979129792297932979429795297962979729798297992980029801298022980329804298052980629807298082980929810298112981229813298142981529816298172981829819298202982129822298232982429825298262982729828298292983029831298322983329834298352983629837298382983929840298412984229843298442984529846298472984829849298502985129852298532985429855298562985729858298592986029861298622986329864298652986629867298682986929870298712987229873298742987529876298772987829879298802988129882298832988429885298862988729888298892989029891298922989329894298952989629897298982989929900299012990229903299042990529906299072990829909299102991129912299132991429915299162991729918299192992029921299222992329924299252992629927299282992929930299312993229933299342993529936299372993829939299402994129942299432994429945299462994729948299492995029951299522995329954299552995629957299582995929960299612996229963299642996529966299672996829969299702997129972299732997429975299762997729978299792998029981299822998329984299852998629987299882998929990299912999229993299942999529996299972999829999300003000130002300033000430005300063000730008300093001030011300123001330014300153001630017300183001930020300213002230023300243002530026300273002830029300303003130032300333003430035300363003730038300393004030041300423004330044300453004630047300483004930050300513005230053300543005530056300573005830059300603006130062300633006430065300663006730068300693007030071300723007330074300753007630077300783007930080300813008230083300843008530086300873008830089300903009130092300933009430095300963009730098300993010030101301023010330104301053010630107301083010930110301113011230113301143011530116301173011830119301203012130122301233012430125301263012730128301293013030131301323013330134301353013630137301383013930140301413014230143301443014530146301473014830149301503015130152301533015430155301563015730158301593016030161301623016330164301653016630167301683016930170301713017230173301743017530176301773017830179301803018130182301833018430185301863018730188301893019030191301923019330194301953019630197301983019930200302013020230203302043020530206302073020830209302103021130212302133021430215302163021730218302193022030221302223022330224302253022630227302283022930230302313023230233302343023530236302373023830239302403024130242302433024430245302463024730248302493025030251302523025330254302553025630257302583025930260302613026230263302643026530266302673026830269302703027130272302733027430275302763027730278302793028030281302823028330284302853028630287302883028930290302913029230293302943029530296302973029830299303003030130302303033030430305303063030730308303093031030311303123031330314303153031630317303183031930320303213032230323303243032530326303273032830329303303033130332303333033430335303363033730338303393034030341303423034330344303453034630347303483034930350303513035230353303543035530356303573035830359303603036130362303633036430365303663036730368303693037030371303723037330374303753037630377303783037930380303813038230383303843038530386303873038830389303903039130392303933039430395303963039730398303993040030401304023040330404304053040630407304083040930410304113041230413304143041530416304173041830419304203042130422304233042430425304263042730428304293043030431304323043330434304353043630437304383043930440304413044230443304443044530446304473044830449304503045130452304533045430455304563045730458304593046030461304623046330464304653046630467304683046930470304713047230473304743047530476304773047830479304803048130482304833048430485304863048730488304893049030491304923049330494304953049630497304983049930500305013050230503305043050530506305073050830509305103051130512305133051430515305163051730518305193052030521305223052330524305253052630527305283052930530305313053230533305343053530536305373053830539305403054130542305433054430545305463054730548305493055030551305523055330554305553055630557305583055930560305613056230563305643056530566305673056830569305703057130572305733057430575305763057730578305793058030581305823058330584305853058630587305883058930590305913059230593305943059530596305973059830599306003060130602306033060430605306063060730608306093061030611306123061330614306153061630617306183061930620306213062230623306243062530626306273062830629306303063130632306333063430635306363063730638306393064030641306423064330644306453064630647306483064930650306513065230653306543065530656306573065830659306603066130662306633066430665306663066730668306693067030671306723067330674306753067630677306783067930680306813068230683306843068530686306873068830689306903069130692306933069430695306963069730698306993070030701307023070330704307053070630707307083070930710307113071230713307143071530716307173071830719307203072130722307233072430725307263072730728307293073030731307323073330734307353073630737307383073930740307413074230743307443074530746307473074830749307503075130752307533075430755307563075730758307593076030761307623076330764307653076630767307683076930770307713077230773307743077530776307773077830779307803078130782307833078430785307863078730788307893079030791307923079330794307953079630797307983079930800308013080230803308043080530806308073080830809308103081130812308133081430815308163081730818308193082030821308223082330824308253082630827308283082930830308313083230833308343083530836308373083830839308403084130842308433084430845308463084730848308493085030851308523085330854308553085630857308583085930860308613086230863308643086530866308673086830869308703087130872308733087430875308763087730878308793088030881308823088330884308853088630887308883088930890308913089230893308943089530896308973089830899309003090130902309033090430905309063090730908309093091030911309123091330914309153091630917309183091930920309213092230923309243092530926309273092830929309303093130932309333093430935309363093730938309393094030941309423094330944309453094630947309483094930950309513095230953309543095530956309573095830959309603096130962309633096430965309663096730968309693097030971309723097330974309753097630977309783097930980309813098230983309843098530986309873098830989309903099130992309933099430995309963099730998309993100031001310023100331004310053100631007310083100931010310113101231013310143101531016310173101831019310203102131022310233102431025310263102731028310293103031031310323103331034310353103631037310383103931040310413104231043310443104531046310473104831049310503105131052310533105431055310563105731058310593106031061310623106331064310653106631067310683106931070310713107231073310743107531076310773107831079310803108131082310833108431085310863108731088310893109031091310923109331094310953109631097310983109931100311013110231103311043110531106311073110831109311103111131112311133111431115311163111731118311193112031121311223112331124311253112631127311283112931130311313113231133311343113531136311373113831139311403114131142311433114431145311463114731148311493115031151311523115331154311553115631157311583115931160311613116231163311643116531166311673116831169311703117131172311733117431175311763117731178311793118031181311823118331184311853118631187311883118931190311913119231193311943119531196311973119831199312003120131202312033120431205312063120731208312093121031211312123121331214312153121631217312183121931220312213122231223312243122531226312273122831229312303123131232312333123431235312363123731238312393124031241312423124331244312453124631247312483124931250312513125231253312543125531256312573125831259312603126131262312633126431265312663126731268312693127031271312723127331274312753127631277312783127931280312813128231283312843128531286312873128831289312903129131292312933129431295312963129731298312993130031301313023130331304313053130631307313083130931310313113131231313313143131531316313173131831319313203132131322313233132431325313263132731328313293133031331313323133331334313353133631337313383133931340313413134231343313443134531346313473134831349313503135131352313533135431355313563135731358313593136031361313623136331364313653136631367313683136931370313713137231373313743137531376313773137831379313803138131382313833138431385313863138731388313893139031391313923139331394313953139631397313983139931400314013140231403314043140531406314073140831409314103141131412314133141431415314163141731418314193142031421314223142331424314253142631427314283142931430314313143231433314343143531436314373143831439314403144131442314433144431445314463144731448314493145031451314523145331454314553145631457314583145931460314613146231463314643146531466314673146831469314703147131472314733147431475314763147731478314793148031481314823148331484314853148631487314883148931490314913149231493314943149531496314973149831499315003150131502315033150431505315063150731508315093151031511315123151331514315153151631517315183151931520315213152231523315243152531526315273152831529315303153131532315333153431535315363153731538315393154031541315423154331544315453154631547315483154931550315513155231553315543155531556315573155831559315603156131562315633156431565315663156731568315693157031571315723157331574315753157631577315783157931580315813158231583315843158531586315873158831589315903159131592315933159431595315963159731598315993160031601316023160331604316053160631607316083160931610316113161231613316143161531616316173161831619316203162131622316233162431625316263162731628316293163031631316323163331634316353163631637316383163931640316413164231643316443164531646316473164831649316503165131652316533165431655316563165731658316593166031661316623166331664316653166631667316683166931670316713167231673316743167531676316773167831679316803168131682316833168431685316863168731688316893169031691316923169331694316953169631697316983169931700317013170231703317043170531706317073170831709317103171131712317133171431715317163171731718317193172031721317223172331724317253172631727317283172931730317313173231733317343173531736317373173831739317403174131742317433174431745317463174731748317493175031751317523175331754317553175631757317583175931760317613176231763317643176531766317673176831769317703177131772317733177431775317763177731778317793178031781317823178331784317853178631787317883178931790317913179231793317943179531796317973179831799318003180131802318033180431805318063180731808318093181031811318123181331814318153181631817318183181931820318213182231823318243182531826318273182831829318303183131832318333183431835318363183731838318393184031841318423184331844318453184631847318483184931850318513185231853318543185531856318573185831859318603186131862318633186431865318663186731868318693187031871318723187331874318753187631877318783187931880318813188231883318843188531886318873188831889318903189131892318933189431895318963189731898318993190031901319023190331904319053190631907319083190931910319113191231913319143191531916319173191831919319203192131922319233192431925319263192731928319293193031931319323193331934319353193631937319383193931940319413194231943319443194531946319473194831949319503195131952319533195431955319563195731958319593196031961319623196331964319653196631967319683196931970319713197231973319743197531976319773197831979319803198131982319833198431985319863198731988319893199031991319923199331994319953199631997319983199932000320013200232003320043200532006320073200832009320103201132012320133201432015320163201732018320193202032021320223202332024320253202632027320283202932030320313203232033320343203532036320373203832039320403204132042320433204432045320463204732048320493205032051320523205332054320553205632057320583205932060320613206232063320643206532066320673206832069320703207132072320733207432075320763207732078320793208032081320823208332084320853208632087320883208932090320913209232093320943209532096320973209832099321003210132102321033210432105321063210732108321093211032111321123211332114321153211632117321183211932120321213212232123321243212532126321273212832129321303213132132321333213432135321363213732138321393214032141321423214332144321453214632147321483214932150321513215232153321543215532156321573215832159321603216132162321633216432165321663216732168321693217032171321723217332174321753217632177321783217932180321813218232183321843218532186321873218832189321903219132192321933219432195321963219732198321993220032201322023220332204322053220632207322083220932210322113221232213322143221532216322173221832219322203222132222322233222432225322263222732228322293223032231322323223332234322353223632237322383223932240322413224232243322443224532246322473224832249322503225132252322533225432255322563225732258322593226032261322623226332264322653226632267322683226932270322713227232273322743227532276322773227832279322803228132282322833228432285322863228732288322893229032291322923229332294322953229632297322983229932300323013230232303323043230532306323073230832309323103231132312323133231432315323163231732318323193232032321323223232332324323253232632327323283232932330323313233232333323343233532336323373233832339323403234132342323433234432345323463234732348323493235032351323523235332354323553235632357323583235932360323613236232363323643236532366323673236832369323703237132372323733237432375323763237732378323793238032381323823238332384323853238632387323883238932390323913239232393323943239532396323973239832399324003240132402324033240432405324063240732408324093241032411324123241332414324153241632417324183241932420324213242232423324243242532426324273242832429324303243132432324333243432435324363243732438324393244032441324423244332444324453244632447324483244932450324513245232453324543245532456324573245832459324603246132462324633246432465324663246732468324693247032471324723247332474324753247632477324783247932480324813248232483324843248532486324873248832489324903249132492324933249432495324963249732498324993250032501325023250332504325053250632507325083250932510325113251232513325143251532516325173251832519325203252132522325233252432525325263252732528325293253032531325323253332534325353253632537325383253932540325413254232543325443254532546325473254832549325503255132552325533255432555325563255732558325593256032561325623256332564325653256632567325683256932570325713257232573325743257532576325773257832579325803258132582325833258432585325863258732588325893259032591325923259332594325953259632597325983259932600326013260232603326043260532606326073260832609326103261132612326133261432615326163261732618326193262032621326223262332624326253262632627326283262932630326313263232633326343263532636326373263832639326403264132642326433264432645326463264732648326493265032651326523265332654326553265632657326583265932660326613266232663326643266532666326673266832669326703267132672326733267432675326763267732678326793268032681326823268332684326853268632687326883268932690326913269232693326943269532696326973269832699327003270132702327033270432705327063270732708327093271032711327123271332714327153271632717327183271932720327213272232723327243272532726327273272832729327303273132732327333273432735327363273732738327393274032741327423274332744327453274632747327483274932750327513275232753327543275532756327573275832759327603276132762327633276432765327663276732768327693277032771327723277332774327753277632777327783277932780327813278232783327843278532786327873278832789327903279132792327933279432795327963279732798327993280032801328023280332804328053280632807328083280932810328113281232813328143281532816328173281832819328203282132822328233282432825328263282732828328293283032831328323283332834328353283632837328383283932840328413284232843328443284532846328473284832849328503285132852328533285432855328563285732858328593286032861328623286332864328653286632867328683286932870328713287232873328743287532876328773287832879328803288132882328833288432885328863288732888328893289032891328923289332894328953289632897328983289932900329013290232903329043290532906329073290832909329103291132912329133291432915329163291732918329193292032921329223292332924329253292632927329283292932930329313293232933329343293532936329373293832939329403294132942329433294432945329463294732948329493295032951329523295332954329553295632957329583295932960329613296232963329643296532966329673296832969329703297132972329733297432975329763297732978329793298032981329823298332984329853298632987329883298932990329913299232993329943299532996329973299832999330003300133002330033300433005330063300733008330093301033011330123301333014330153301633017330183301933020330213302233023330243302533026330273302833029330303303133032330333303433035330363303733038330393304033041330423304333044330453304633047330483304933050330513305233053330543305533056330573305833059330603306133062330633306433065330663306733068330693307033071330723307333074330753307633077330783307933080330813308233083330843308533086330873308833089330903309133092330933309433095330963309733098330993310033101331023310333104331053310633107331083310933110331113311233113331143311533116331173311833119331203312133122331233312433125331263312733128331293313033131331323313333134331353313633137331383313933140331413314233143331443314533146331473314833149331503315133152331533315433155331563315733158331593316033161331623316333164331653316633167331683316933170331713317233173331743317533176331773317833179331803318133182331833318433185331863318733188331893319033191331923319333194331953319633197331983319933200332013320233203332043320533206332073320833209332103321133212332133321433215332163321733218332193322033221332223322333224332253322633227332283322933230332313323233233332343323533236332373323833239332403324133242332433324433245332463324733248332493325033251332523325333254332553325633257332583325933260332613326233263332643326533266332673326833269332703327133272332733327433275332763327733278332793328033281332823328333284332853328633287332883328933290332913329233293332943329533296332973329833299333003330133302333033330433305333063330733308333093331033311333123331333314333153331633317333183331933320333213332233323333243332533326333273332833329333303333133332333333333433335333363333733338333393334033341333423334333344333453334633347333483334933350333513335233353333543335533356333573335833359333603336133362333633336433365333663336733368333693337033371333723337333374333753337633377333783337933380333813338233383333843338533386333873338833389333903339133392333933339433395333963339733398333993340033401334023340333404334053340633407334083340933410334113341233413334143341533416334173341833419334203342133422334233342433425334263342733428334293343033431334323343333434334353343633437334383343933440334413344233443334443344533446334473344833449334503345133452334533345433455334563345733458334593346033461334623346333464334653346633467334683346933470334713347233473334743347533476334773347833479334803348133482334833348433485334863348733488334893349033491334923349333494334953349633497334983349933500335013350233503335043350533506335073350833509335103351133512335133351433515335163351733518335193352033521335223352333524335253352633527335283352933530335313353233533335343353533536335373353833539335403354133542335433354433545335463354733548335493355033551335523355333554335553355633557335583355933560335613356233563335643356533566335673356833569335703357133572335733357433575335763357733578335793358033581335823358333584335853358633587335883358933590335913359233593335943359533596335973359833599336003360133602336033360433605336063360733608336093361033611336123361333614336153361633617336183361933620336213362233623336243362533626336273362833629336303363133632336333363433635336363363733638336393364033641336423364333644336453364633647336483364933650336513365233653336543365533656336573365833659336603366133662336633366433665336663366733668336693367033671336723367333674336753367633677336783367933680336813368233683336843368533686336873368833689336903369133692336933369433695336963369733698336993370033701337023370333704337053370633707337083370933710337113371233713337143371533716337173371833719337203372133722337233372433725337263372733728337293373033731337323373333734337353373633737337383373933740337413374233743337443374533746337473374833749337503375133752337533375433755337563375733758337593376033761337623376333764337653376633767337683376933770337713377233773337743377533776337773377833779337803378133782337833378433785337863378733788337893379033791337923379333794337953379633797337983379933800338013380233803338043380533806338073380833809338103381133812338133381433815338163381733818338193382033821338223382333824338253382633827338283382933830338313383233833338343383533836338373383833839338403384133842338433384433845338463384733848338493385033851338523385333854338553385633857338583385933860338613386233863338643386533866338673386833869338703387133872338733387433875338763387733878338793388033881338823388333884338853388633887338883388933890338913389233893338943389533896338973389833899339003390133902339033390433905339063390733908339093391033911339123391333914339153391633917339183391933920339213392233923339243392533926339273392833929339303393133932339333393433935339363393733938339393394033941339423394333944339453394633947339483394933950339513395233953339543395533956339573395833959339603396133962339633396433965339663396733968339693397033971339723397333974339753397633977339783397933980339813398233983339843398533986339873398833989339903399133992339933399433995339963399733998339993400034001340023400334004340053400634007340083400934010340113401234013340143401534016340173401834019340203402134022340233402434025340263402734028340293403034031340323403334034340353403634037340383403934040340413404234043340443404534046340473404834049340503405134052340533405434055340563405734058340593406034061340623406334064340653406634067340683406934070340713407234073340743407534076340773407834079340803408134082340833408434085340863408734088340893409034091340923409334094340953409634097340983409934100341013410234103341043410534106341073410834109341103411134112341133411434115341163411734118341193412034121341223412334124341253412634127341283412934130341313413234133341343413534136341373413834139341403414134142341433414434145341463414734148341493415034151341523415334154341553415634157341583415934160341613416234163341643416534166341673416834169341703417134172341733417434175341763417734178341793418034181341823418334184341853418634187341883418934190341913419234193341943419534196341973419834199342003420134202342033420434205342063420734208342093421034211342123421334214342153421634217342183421934220342213422234223342243422534226342273422834229342303423134232342333423434235342363423734238342393424034241342423424334244342453424634247342483424934250342513425234253342543425534256342573425834259342603426134262342633426434265342663426734268342693427034271342723427334274342753427634277342783427934280342813428234283342843428534286342873428834289342903429134292342933429434295342963429734298342993430034301343023430334304343053430634307343083430934310343113431234313343143431534316343173431834319343203432134322343233432434325343263432734328343293433034331343323433334334343353433634337343383433934340343413434234343343443434534346343473434834349343503435134352343533435434355343563435734358343593436034361343623436334364343653436634367343683436934370343713437234373343743437534376343773437834379343803438134382343833438434385343863438734388343893439034391343923439334394343953439634397343983439934400344013440234403344043440534406344073440834409344103441134412344133441434415344163441734418344193442034421344223442334424344253442634427344283442934430344313443234433344343443534436344373443834439344403444134442344433444434445344463444734448344493445034451344523445334454344553445634457344583445934460344613446234463344643446534466344673446834469344703447134472344733447434475344763447734478344793448034481344823448334484344853448634487344883448934490344913449234493344943449534496344973449834499345003450134502345033450434505345063450734508345093451034511345123451334514345153451634517345183451934520345213452234523345243452534526345273452834529345303453134532345333453434535345363453734538345393454034541345423454334544345453454634547345483454934550345513455234553345543455534556345573455834559345603456134562345633456434565345663456734568345693457034571345723457334574345753457634577345783457934580345813458234583345843458534586345873458834589345903459134592345933459434595345963459734598345993460034601346023460334604346053460634607346083460934610346113461234613346143461534616346173461834619346203462134622346233462434625346263462734628346293463034631346323463334634346353463634637346383463934640346413464234643346443464534646346473464834649346503465134652346533465434655346563465734658346593466034661346623466334664346653466634667346683466934670346713467234673346743467534676346773467834679346803468134682346833468434685346863468734688346893469034691346923469334694346953469634697346983469934700347013470234703347043470534706347073470834709347103471134712347133471434715347163471734718347193472034721347223472334724347253472634727347283472934730347313473234733347343473534736347373473834739347403474134742347433474434745347463474734748347493475034751347523475334754347553475634757347583475934760347613476234763347643476534766347673476834769347703477134772347733477434775347763477734778347793478034781347823478334784347853478634787347883478934790347913479234793347943479534796347973479834799348003480134802348033480434805348063480734808348093481034811348123481334814348153481634817348183481934820348213482234823348243482534826348273482834829348303483134832348333483434835348363483734838348393484034841348423484334844348453484634847348483484934850348513485234853348543485534856348573485834859348603486134862348633486434865348663486734868348693487034871348723487334874348753487634877348783487934880348813488234883348843488534886348873488834889348903489134892348933489434895348963489734898348993490034901349023490334904349053490634907349083490934910349113491234913349143491534916349173491834919349203492134922349233492434925349263492734928349293493034931349323493334934349353493634937349383493934940349413494234943349443494534946349473494834949349503495134952349533495434955349563495734958349593496034961349623496334964349653496634967349683496934970349713497234973349743497534976349773497834979349803498134982349833498434985349863498734988349893499034991349923499334994349953499634997349983499935000350013500235003350043500535006350073500835009350103501135012350133501435015350163501735018350193502035021350223502335024350253502635027350283502935030350313503235033350343503535036350373503835039350403504135042350433504435045350463504735048350493505035051350523505335054350553505635057350583505935060350613506235063350643506535066350673506835069350703507135072350733507435075350763507735078350793508035081350823508335084350853508635087350883508935090350913509235093350943509535096350973509835099351003510135102351033510435105351063510735108351093511035111351123511335114351153511635117351183511935120351213512235123351243512535126351273512835129351303513135132351333513435135351363513735138351393514035141351423514335144351453514635147351483514935150351513515235153351543515535156351573515835159351603516135162351633516435165351663516735168351693517035171351723517335174351753517635177351783517935180351813518235183351843518535186351873518835189351903519135192351933519435195351963519735198351993520035201352023520335204352053520635207352083520935210352113521235213352143521535216352173521835219352203522135222352233522435225352263522735228352293523035231352323523335234352353523635237352383523935240352413524235243352443524535246352473524835249352503525135252352533525435255352563525735258352593526035261352623526335264352653526635267352683526935270352713527235273352743527535276352773527835279352803528135282352833528435285352863528735288352893529035291352923529335294352953529635297352983529935300353013530235303353043530535306353073530835309353103531135312353133531435315353163531735318353193532035321353223532335324353253532635327353283532935330353313533235333353343533535336353373533835339353403534135342353433534435345353463534735348353493535035351353523535335354353553535635357353583535935360353613536235363353643536535366353673536835369353703537135372353733537435375353763537735378353793538035381353823538335384353853538635387353883538935390353913539235393353943539535396353973539835399354003540135402354033540435405354063540735408354093541035411354123541335414354153541635417354183541935420354213542235423354243542535426354273542835429354303543135432354333543435435354363543735438354393544035441354423544335444354453544635447354483544935450354513545235453354543545535456354573545835459354603546135462354633546435465354663546735468354693547035471354723547335474354753547635477354783547935480354813548235483354843548535486354873548835489354903549135492354933549435495354963549735498354993550035501355023550335504355053550635507355083550935510355113551235513355143551535516355173551835519355203552135522355233552435525355263552735528355293553035531355323553335534355353553635537355383553935540355413554235543355443554535546355473554835549355503555135552355533555435555355563555735558355593556035561355623556335564355653556635567355683556935570355713557235573355743557535576355773557835579355803558135582355833558435585355863558735588355893559035591355923559335594355953559635597355983559935600356013560235603356043560535606356073560835609356103561135612356133561435615356163561735618356193562035621356223562335624356253562635627356283562935630356313563235633356343563535636356373563835639356403564135642356433564435645356463564735648356493565035651356523565335654356553565635657356583565935660356613566235663356643566535666356673566835669356703567135672356733567435675356763567735678356793568035681356823568335684356853568635687356883568935690356913569235693356943569535696356973569835699357003570135702357033570435705357063570735708357093571035711357123571335714357153571635717357183571935720357213572235723357243572535726357273572835729357303573135732357333573435735357363573735738357393574035741357423574335744357453574635747357483574935750357513575235753357543575535756357573575835759357603576135762357633576435765357663576735768357693577035771357723577335774357753577635777357783577935780357813578235783357843578535786357873578835789357903579135792357933579435795357963579735798357993580035801358023580335804358053580635807358083580935810358113581235813358143581535816358173581835819358203582135822358233582435825358263582735828358293583035831358323583335834358353583635837358383583935840358413584235843358443584535846358473584835849358503585135852358533585435855358563585735858358593586035861358623586335864358653586635867358683586935870358713587235873358743587535876358773587835879358803588135882358833588435885358863588735888358893589035891358923589335894358953589635897358983589935900359013590235903359043590535906359073590835909359103591135912359133591435915359163591735918359193592035921359223592335924359253592635927359283592935930359313593235933359343593535936359373593835939359403594135942359433594435945359463594735948359493595035951359523595335954359553595635957359583595935960359613596235963359643596535966359673596835969359703597135972359733597435975359763597735978359793598035981359823598335984359853598635987359883598935990359913599235993359943599535996359973599835999360003600136002360033600436005360063600736008360093601036011360123601336014360153601636017360183601936020360213602236023360243602536026360273602836029360303603136032360333603436035360363603736038360393604036041360423604336044360453604636047360483604936050360513605236053360543605536056360573605836059360603606136062360633606436065360663606736068360693607036071360723607336074360753607636077360783607936080360813608236083360843608536086360873608836089360903609136092360933609436095360963609736098360993610036101361023610336104361053610636107361083610936110361113611236113361143611536116361173611836119361203612136122361233612436125361263612736128361293613036131361323613336134361353613636137361383613936140361413614236143361443614536146361473614836149361503615136152361533615436155361563615736158361593616036161361623616336164361653616636167361683616936170361713617236173361743617536176361773617836179361803618136182361833618436185361863618736188361893619036191361923619336194361953619636197361983619936200362013620236203362043620536206362073620836209362103621136212362133621436215362163621736218362193622036221362223622336224362253622636227362283622936230362313623236233362343623536236362373623836239362403624136242362433624436245362463624736248362493625036251362523625336254362553625636257362583625936260362613626236263362643626536266362673626836269362703627136272362733627436275362763627736278362793628036281362823628336284362853628636287362883628936290362913629236293362943629536296362973629836299363003630136302363033630436305363063630736308363093631036311363123631336314363153631636317363183631936320363213632236323363243632536326363273632836329363303633136332363333633436335363363633736338363393634036341363423634336344363453634636347363483634936350363513635236353363543635536356363573635836359363603636136362363633636436365363663636736368363693637036371363723637336374363753637636377363783637936380363813638236383363843638536386363873638836389363903639136392363933639436395363963639736398363993640036401364023640336404364053640636407364083640936410364113641236413364143641536416364173641836419364203642136422364233642436425364263642736428364293643036431364323643336434364353643636437364383643936440364413644236443364443644536446364473644836449364503645136452364533645436455364563645736458364593646036461364623646336464364653646636467364683646936470364713647236473364743647536476364773647836479364803648136482364833648436485364863648736488364893649036491364923649336494364953649636497364983649936500365013650236503365043650536506365073650836509365103651136512365133651436515365163651736518365193652036521365223652336524365253652636527365283652936530365313653236533365343653536536365373653836539365403654136542365433654436545365463654736548365493655036551365523655336554365553655636557365583655936560365613656236563365643656536566365673656836569365703657136572365733657436575365763657736578365793658036581365823658336584365853658636587365883658936590365913659236593365943659536596365973659836599366003660136602366033660436605366063660736608366093661036611366123661336614366153661636617366183661936620366213662236623366243662536626366273662836629366303663136632366333663436635366363663736638366393664036641366423664336644366453664636647366483664936650366513665236653366543665536656366573665836659366603666136662366633666436665366663666736668366693667036671366723667336674366753667636677366783667936680366813668236683366843668536686366873668836689366903669136692366933669436695366963669736698366993670036701367023670336704367053670636707367083670936710367113671236713367143671536716367173671836719367203672136722367233672436725367263672736728367293673036731367323673336734367353673636737367383673936740367413674236743367443674536746367473674836749367503675136752367533675436755367563675736758367593676036761367623676336764367653676636767367683676936770367713677236773367743677536776367773677836779367803678136782367833678436785367863678736788367893679036791367923679336794367953679636797367983679936800368013680236803368043680536806368073680836809368103681136812368133681436815368163681736818368193682036821368223682336824368253682636827368283682936830368313683236833368343683536836368373683836839368403684136842368433684436845368463684736848368493685036851368523685336854368553685636857368583685936860368613686236863368643686536866368673686836869368703687136872368733687436875368763687736878368793688036881368823688336884368853688636887368883688936890368913689236893368943689536896368973689836899369003690136902369033690436905369063690736908369093691036911369123691336914369153691636917369183691936920369213692236923369243692536926369273692836929369303693136932369333693436935369363693736938369393694036941369423694336944369453694636947369483694936950369513695236953369543695536956369573695836959369603696136962369633696436965369663696736968369693697036971369723697336974369753697636977369783697936980369813698236983369843698536986369873698836989369903699136992369933699436995369963699736998369993700037001370023700337004370053700637007370083700937010370113701237013370143701537016370173701837019370203702137022370233702437025370263702737028370293703037031370323703337034370353703637037370383703937040370413704237043370443704537046370473704837049370503705137052370533705437055370563705737058370593706037061370623706337064370653706637067370683706937070370713707237073370743707537076370773707837079370803708137082370833708437085370863708737088370893709037091370923709337094370953709637097370983709937100371013710237103371043710537106371073710837109371103711137112371133711437115371163711737118371193712037121371223712337124371253712637127371283712937130371313713237133371343713537136371373713837139371403714137142371433714437145371463714737148371493715037151371523715337154371553715637157371583715937160371613716237163371643716537166371673716837169371703717137172371733717437175371763717737178371793718037181371823718337184371853718637187371883718937190371913719237193371943719537196371973719837199372003720137202372033720437205372063720737208372093721037211372123721337214372153721637217372183721937220372213722237223372243722537226372273722837229372303723137232372333723437235372363723737238372393724037241372423724337244372453724637247372483724937250372513725237253372543725537256372573725837259372603726137262372633726437265372663726737268372693727037271372723727337274372753727637277372783727937280372813728237283372843728537286372873728837289372903729137292372933729437295372963729737298372993730037301373023730337304373053730637307373083730937310373113731237313373143731537316373173731837319373203732137322373233732437325373263732737328373293733037331373323733337334373353733637337373383733937340373413734237343373443734537346373473734837349373503735137352373533735437355373563735737358373593736037361373623736337364373653736637367373683736937370373713737237373373743737537376373773737837379373803738137382373833738437385373863738737388373893739037391373923739337394373953739637397373983739937400374013740237403374043740537406374073740837409374103741137412374133741437415374163741737418374193742037421374223742337424374253742637427374283742937430374313743237433374343743537436374373743837439374403744137442374433744437445374463744737448374493745037451374523745337454374553745637457374583745937460374613746237463374643746537466374673746837469374703747137472374733747437475374763747737478374793748037481374823748337484374853748637487374883748937490374913749237493374943749537496374973749837499375003750137502375033750437505375063750737508375093751037511375123751337514375153751637517375183751937520375213752237523375243752537526375273752837529375303753137532375333753437535375363753737538375393754037541375423754337544375453754637547375483754937550375513755237553375543755537556375573755837559375603756137562375633756437565375663756737568375693757037571375723757337574375753757637577375783757937580375813758237583375843758537586375873758837589375903759137592375933759437595375963759737598375993760037601376023760337604376053760637607376083760937610376113761237613376143761537616376173761837619376203762137622376233762437625376263762737628376293763037631376323763337634376353763637637376383763937640376413764237643376443764537646376473764837649376503765137652376533765437655376563765737658376593766037661376623766337664376653766637667376683766937670376713767237673376743767537676376773767837679376803768137682376833768437685376863768737688376893769037691376923769337694376953769637697376983769937700377013770237703377043770537706377073770837709377103771137712377133771437715377163771737718377193772037721377223772337724377253772637727377283772937730377313773237733377343773537736377373773837739377403774137742377433774437745377463774737748377493775037751377523775337754377553775637757377583775937760377613776237763377643776537766377673776837769377703777137772377733777437775377763777737778377793778037781377823778337784377853778637787377883778937790377913779237793377943779537796377973779837799378003780137802378033780437805378063780737808378093781037811378123781337814378153781637817378183781937820378213782237823378243782537826378273782837829378303783137832378333783437835378363783737838378393784037841378423784337844378453784637847378483784937850378513785237853378543785537856378573785837859378603786137862378633786437865378663786737868378693787037871378723787337874378753787637877378783787937880378813788237883378843788537886378873788837889378903789137892378933789437895378963789737898378993790037901379023790337904379053790637907379083790937910379113791237913379143791537916379173791837919379203792137922379233792437925379263792737928379293793037931379323793337934379353793637937379383793937940379413794237943379443794537946379473794837949379503795137952379533795437955379563795737958379593796037961379623796337964379653796637967379683796937970379713797237973379743797537976379773797837979379803798137982379833798437985379863798737988379893799037991379923799337994379953799637997379983799938000380013800238003380043800538006380073800838009380103801138012380133801438015380163801738018380193802038021380223802338024380253802638027380283802938030380313803238033380343803538036380373803838039380403804138042380433804438045380463804738048380493805038051380523805338054380553805638057380583805938060380613806238063380643806538066380673806838069380703807138072380733807438075380763807738078380793808038081380823808338084380853808638087380883808938090380913809238093380943809538096380973809838099381003810138102381033810438105381063810738108381093811038111381123811338114381153811638117381183811938120381213812238123381243812538126381273812838129381303813138132381333813438135381363813738138381393814038141381423814338144381453814638147381483814938150381513815238153381543815538156381573815838159381603816138162381633816438165381663816738168381693817038171381723817338174381753817638177381783817938180381813818238183381843818538186381873818838189381903819138192381933819438195381963819738198381993820038201382023820338204382053820638207382083820938210382113821238213382143821538216382173821838219382203822138222382233822438225382263822738228382293823038231382323823338234382353823638237382383823938240382413824238243382443824538246382473824838249382503825138252382533825438255382563825738258382593826038261382623826338264382653826638267382683826938270382713827238273382743827538276382773827838279382803828138282382833828438285382863828738288382893829038291382923829338294382953829638297382983829938300383013830238303383043830538306383073830838309383103831138312383133831438315383163831738318383193832038321383223832338324383253832638327383283832938330383313833238333383343833538336383373833838339383403834138342383433834438345383463834738348383493835038351383523835338354383553835638357383583835938360383613836238363383643836538366383673836838369383703837138372383733837438375383763837738378383793838038381383823838338384383853838638387383883838938390383913839238393383943839538396383973839838399384003840138402384033840438405384063840738408384093841038411384123841338414384153841638417384183841938420384213842238423384243842538426384273842838429384303843138432384333843438435384363843738438384393844038441384423844338444384453844638447384483844938450384513845238453384543845538456384573845838459384603846138462384633846438465384663846738468384693847038471384723847338474384753847638477384783847938480384813848238483384843848538486384873848838489384903849138492384933849438495384963849738498384993850038501385023850338504385053850638507385083850938510385113851238513385143851538516385173851838519385203852138522385233852438525385263852738528385293853038531385323853338534385353853638537385383853938540385413854238543385443854538546385473854838549385503855138552385533855438555385563855738558385593856038561385623856338564385653856638567385683856938570385713857238573385743857538576385773857838579385803858138582385833858438585385863858738588385893859038591385923859338594385953859638597385983859938600386013860238603386043860538606386073860838609386103861138612386133861438615386163861738618386193862038621386223862338624386253862638627386283862938630386313863238633386343863538636386373863838639386403864138642386433864438645386463864738648386493865038651386523865338654386553865638657386583865938660386613866238663386643866538666386673866838669386703867138672386733867438675386763867738678386793868038681386823868338684386853868638687386883868938690386913869238693386943869538696386973869838699387003870138702387033870438705387063870738708387093871038711387123871338714387153871638717387183871938720387213872238723387243872538726387273872838729387303873138732387333873438735387363873738738387393874038741387423874338744387453874638747387483874938750387513875238753387543875538756387573875838759387603876138762387633876438765387663876738768387693877038771387723877338774387753877638777387783877938780387813878238783387843878538786387873878838789387903879138792387933879438795387963879738798387993880038801388023880338804388053880638807388083880938810388113881238813388143881538816388173881838819388203882138822388233882438825388263882738828388293883038831388323883338834388353883638837388383883938840388413884238843388443884538846388473884838849388503885138852388533885438855388563885738858388593886038861388623886338864388653886638867388683886938870388713887238873388743887538876388773887838879388803888138882388833888438885388863888738888388893889038891388923889338894388953889638897388983889938900389013890238903389043890538906389073890838909389103891138912389133891438915389163891738918389193892038921389223892338924389253892638927389283892938930389313893238933389343893538936389373893838939389403894138942389433894438945389463894738948389493895038951389523895338954389553895638957389583895938960389613896238963389643896538966389673896838969389703897138972389733897438975389763897738978389793898038981389823898338984389853898638987389883898938990389913899238993389943899538996389973899838999390003900139002390033900439005390063900739008390093901039011390123901339014390153901639017390183901939020390213902239023390243902539026390273902839029390303903139032390333903439035390363903739038390393904039041390423904339044390453904639047390483904939050390513905239053390543905539056390573905839059390603906139062390633906439065390663906739068390693907039071390723907339074390753907639077390783907939080390813908239083390843908539086390873908839089390903909139092390933909439095390963909739098390993910039101391023910339104391053910639107391083910939110391113911239113391143911539116391173911839119391203912139122391233912439125391263912739128391293913039131391323913339134391353913639137391383913939140391413914239143391443914539146391473914839149391503915139152391533915439155391563915739158391593916039161391623916339164391653916639167391683916939170391713917239173391743917539176391773917839179391803918139182391833918439185391863918739188391893919039191391923919339194391953919639197391983919939200392013920239203392043920539206392073920839209392103921139212392133921439215392163921739218392193922039221392223922339224392253922639227392283922939230392313923239233392343923539236392373923839239392403924139242392433924439245392463924739248392493925039251392523925339254392553925639257392583925939260392613926239263392643926539266392673926839269392703927139272392733927439275392763927739278392793928039281392823928339284392853928639287392883928939290392913929239293392943929539296392973929839299393003930139302393033930439305393063930739308393093931039311393123931339314393153931639317393183931939320393213932239323393243932539326393273932839329393303933139332393333933439335393363933739338393393934039341393423934339344393453934639347393483934939350393513935239353393543935539356393573935839359393603936139362393633936439365393663936739368393693937039371393723937339374393753937639377393783937939380393813938239383393843938539386393873938839389393903939139392393933939439395393963939739398393993940039401394023940339404394053940639407394083940939410394113941239413394143941539416394173941839419394203942139422394233942439425394263942739428394293943039431394323943339434394353943639437394383943939440394413944239443394443944539446394473944839449394503945139452394533945439455394563945739458394593946039461394623946339464394653946639467394683946939470394713947239473394743947539476394773947839479394803948139482394833948439485394863948739488394893949039491394923949339494394953949639497394983949939500395013950239503395043950539506395073950839509395103951139512395133951439515395163951739518395193952039521395223952339524395253952639527395283952939530395313953239533395343953539536395373953839539395403954139542395433954439545395463954739548395493955039551395523955339554395553955639557395583955939560395613956239563395643956539566395673956839569395703957139572395733957439575395763957739578395793958039581395823958339584395853958639587395883958939590395913959239593395943959539596395973959839599396003960139602396033960439605396063960739608396093961039611396123961339614396153961639617396183961939620396213962239623396243962539626396273962839629396303963139632396333963439635396363963739638396393964039641396423964339644396453964639647396483964939650396513965239653396543965539656396573965839659396603966139662396633966439665396663966739668396693967039671396723967339674396753967639677396783967939680396813968239683396843968539686396873968839689396903969139692396933969439695396963969739698396993970039701397023970339704397053970639707397083970939710397113971239713397143971539716397173971839719397203972139722397233972439725397263972739728397293973039731397323973339734397353973639737397383973939740397413974239743397443974539746397473974839749397503975139752397533975439755397563975739758397593976039761397623976339764397653976639767397683976939770397713977239773397743977539776397773977839779397803978139782397833978439785397863978739788397893979039791397923979339794397953979639797397983979939800398013980239803398043980539806398073980839809398103981139812398133981439815398163981739818398193982039821398223982339824398253982639827398283982939830398313983239833398343983539836398373983839839398403984139842398433984439845398463984739848398493985039851398523985339854398553985639857398583985939860398613986239863398643986539866398673986839869398703987139872398733987439875398763987739878398793988039881398823988339884398853988639887398883988939890398913989239893398943989539896398973989839899399003990139902399033990439905399063990739908399093991039911399123991339914399153991639917399183991939920399213992239923399243992539926399273992839929399303993139932399333993439935399363993739938399393994039941399423994339944399453994639947399483994939950399513995239953399543995539956399573995839959399603996139962399633996439965399663996739968399693997039971399723997339974399753997639977399783997939980399813998239983399843998539986399873998839989399903999139992399933999439995399963999739998399994000040001400024000340004400054000640007400084000940010400114001240013400144001540016400174001840019400204002140022400234002440025400264002740028400294003040031400324003340034400354003640037400384003940040400414004240043400444004540046400474004840049400504005140052400534005440055400564005740058400594006040061400624006340064400654006640067400684006940070400714007240073400744007540076400774007840079400804008140082400834008440085400864008740088400894009040091400924009340094400954009640097400984009940100401014010240103401044010540106401074010840109401104011140112401134011440115401164011740118401194012040121401224012340124401254012640127401284012940130401314013240133401344013540136401374013840139401404014140142401434014440145401464014740148401494015040151401524015340154401554015640157401584015940160401614016240163401644016540166401674016840169401704017140172401734017440175401764017740178401794018040181401824018340184401854018640187401884018940190401914019240193401944019540196401974019840199402004020140202402034020440205402064020740208402094021040211402124021340214402154021640217402184021940220402214022240223402244022540226402274022840229402304023140232402334023440235402364023740238402394024040241402424024340244402454024640247402484024940250402514025240253402544025540256402574025840259402604026140262402634026440265402664026740268402694027040271402724027340274402754027640277402784027940280402814028240283402844028540286402874028840289402904029140292402934029440295402964029740298402994030040301403024030340304403054030640307403084030940310403114031240313403144031540316403174031840319403204032140322403234032440325403264032740328403294033040331403324033340334403354033640337403384033940340403414034240343403444034540346403474034840349403504035140352403534035440355403564035740358403594036040361403624036340364403654036640367403684036940370403714037240373403744037540376403774037840379403804038140382403834038440385403864038740388403894039040391403924039340394403954039640397403984039940400404014040240403404044040540406404074040840409404104041140412404134041440415404164041740418404194042040421404224042340424404254042640427404284042940430404314043240433404344043540436404374043840439404404044140442404434044440445404464044740448404494045040451404524045340454404554045640457404584045940460404614046240463404644046540466404674046840469404704047140472404734047440475404764047740478404794048040481404824048340484404854048640487404884048940490404914049240493404944049540496404974049840499405004050140502405034050440505405064050740508405094051040511405124051340514405154051640517405184051940520405214052240523405244052540526405274052840529405304053140532405334053440535405364053740538405394054040541405424054340544405454054640547405484054940550405514055240553405544055540556405574055840559405604056140562405634056440565405664056740568405694057040571405724057340574405754057640577405784057940580405814058240583405844058540586405874058840589405904059140592405934059440595405964059740598405994060040601406024060340604406054060640607406084060940610406114061240613406144061540616406174061840619406204062140622406234062440625406264062740628406294063040631406324063340634406354063640637406384063940640406414064240643406444064540646406474064840649406504065140652406534065440655406564065740658406594066040661406624066340664406654066640667406684066940670406714067240673406744067540676406774067840679406804068140682406834068440685406864068740688406894069040691406924069340694406954069640697406984069940700407014070240703407044070540706407074070840709407104071140712407134071440715407164071740718407194072040721407224072340724407254072640727407284072940730407314073240733407344073540736407374073840739407404074140742407434074440745407464074740748407494075040751407524075340754407554075640757407584075940760407614076240763407644076540766407674076840769407704077140772407734077440775407764077740778407794078040781407824078340784407854078640787407884078940790407914079240793407944079540796407974079840799408004080140802408034080440805408064080740808408094081040811408124081340814408154081640817408184081940820408214082240823408244082540826408274082840829408304083140832408334083440835408364083740838408394084040841408424084340844408454084640847408484084940850408514085240853408544085540856408574085840859408604086140862408634086440865408664086740868408694087040871408724087340874408754087640877408784087940880408814088240883408844088540886408874088840889408904089140892408934089440895408964089740898408994090040901409024090340904409054090640907409084090940910409114091240913409144091540916409174091840919409204092140922409234092440925409264092740928409294093040931409324093340934409354093640937409384093940940409414094240943409444094540946409474094840949409504095140952409534095440955409564095740958409594096040961409624096340964409654096640967409684096940970409714097240973409744097540976409774097840979409804098140982409834098440985409864098740988409894099040991409924099340994409954099640997409984099941000410014100241003410044100541006410074100841009410104101141012410134101441015410164101741018410194102041021410224102341024410254102641027410284102941030410314103241033410344103541036410374103841039410404104141042410434104441045410464104741048410494105041051410524105341054410554105641057410584105941060410614106241063410644106541066410674106841069410704107141072410734107441075410764107741078410794108041081410824108341084410854108641087410884108941090410914109241093410944109541096410974109841099411004110141102411034110441105411064110741108411094111041111411124111341114411154111641117411184111941120411214112241123411244112541126411274112841129411304113141132411334113441135411364113741138411394114041141411424114341144411454114641147411484114941150411514115241153411544115541156411574115841159411604116141162411634116441165411664116741168411694117041171411724117341174411754117641177411784117941180411814118241183411844118541186411874118841189411904119141192411934119441195411964119741198411994120041201412024120341204412054120641207412084120941210412114121241213412144121541216412174121841219412204122141222412234122441225412264122741228412294123041231412324123341234412354123641237412384123941240412414124241243412444124541246412474124841249412504125141252412534125441255412564125741258412594126041261412624126341264412654126641267412684126941270412714127241273412744127541276412774127841279412804128141282412834128441285412864128741288412894129041291412924129341294412954129641297412984129941300413014130241303413044130541306413074130841309413104131141312413134131441315413164131741318413194132041321413224132341324413254132641327413284132941330413314133241333413344133541336413374133841339413404134141342413434134441345413464134741348413494135041351413524135341354413554135641357413584135941360413614136241363413644136541366413674136841369413704137141372413734137441375413764137741378413794138041381413824138341384413854138641387413884138941390413914139241393413944139541396413974139841399414004140141402414034140441405414064140741408414094141041411414124141341414414154141641417414184141941420414214142241423414244142541426414274142841429414304143141432414334143441435414364143741438414394144041441414424144341444414454144641447414484144941450414514145241453414544145541456414574145841459414604146141462414634146441465414664146741468414694147041471414724147341474414754147641477414784147941480414814148241483414844148541486414874148841489414904149141492414934149441495414964149741498414994150041501415024150341504415054150641507415084150941510415114151241513415144151541516415174151841519415204152141522415234152441525415264152741528415294153041531415324153341534415354153641537415384153941540415414154241543415444154541546415474154841549415504155141552415534155441555415564155741558415594156041561415624156341564415654156641567415684156941570415714157241573415744157541576415774157841579415804158141582415834158441585415864158741588415894159041591415924159341594415954159641597415984159941600416014160241603416044160541606416074160841609416104161141612416134161441615416164161741618416194162041621416224162341624416254162641627416284162941630416314163241633416344163541636416374163841639416404164141642416434164441645416464164741648416494165041651416524165341654416554165641657416584165941660416614166241663416644166541666416674166841669416704167141672416734167441675416764167741678416794168041681416824168341684416854168641687416884168941690416914169241693416944169541696416974169841699417004170141702417034170441705417064170741708417094171041711417124171341714417154171641717417184171941720417214172241723417244172541726417274172841729417304173141732417334173441735417364173741738417394174041741417424174341744417454174641747417484174941750417514175241753417544175541756417574175841759417604176141762417634176441765417664176741768417694177041771417724177341774417754177641777417784177941780417814178241783417844178541786417874178841789417904179141792417934179441795417964179741798417994180041801418024180341804418054180641807418084180941810418114181241813418144181541816418174181841819418204182141822418234182441825418264182741828418294183041831418324183341834418354183641837418384183941840418414184241843418444184541846418474184841849418504185141852418534185441855418564185741858418594186041861418624186341864418654186641867418684186941870418714187241873418744187541876418774187841879418804188141882418834188441885418864188741888418894189041891418924189341894418954189641897418984189941900419014190241903419044190541906419074190841909419104191141912419134191441915419164191741918419194192041921419224192341924419254192641927419284192941930419314193241933419344193541936419374193841939419404194141942419434194441945419464194741948419494195041951419524195341954419554195641957419584195941960419614196241963419644196541966419674196841969419704197141972419734197441975419764197741978419794198041981419824198341984419854198641987419884198941990419914199241993419944199541996419974199841999420004200142002420034200442005420064200742008420094201042011420124201342014420154201642017420184201942020420214202242023420244202542026420274202842029420304203142032420334203442035420364203742038420394204042041420424204342044420454204642047420484204942050420514205242053420544205542056420574205842059420604206142062420634206442065420664206742068420694207042071420724207342074420754207642077420784207942080420814208242083420844208542086420874208842089420904209142092420934209442095420964209742098420994210042101421024210342104421054210642107421084210942110421114211242113421144211542116421174211842119421204212142122421234212442125421264212742128421294213042131421324213342134421354213642137421384213942140421414214242143421444214542146421474214842149421504215142152421534215442155421564215742158421594216042161421624216342164421654216642167421684216942170421714217242173421744217542176421774217842179421804218142182421834218442185421864218742188421894219042191421924219342194421954219642197421984219942200422014220242203422044220542206422074220842209422104221142212422134221442215422164221742218422194222042221422224222342224422254222642227422284222942230422314223242233422344223542236422374223842239422404224142242422434224442245422464224742248422494225042251422524225342254422554225642257422584225942260422614226242263422644226542266422674226842269422704227142272422734227442275422764227742278422794228042281422824228342284422854228642287422884228942290422914229242293422944229542296422974229842299423004230142302423034230442305423064230742308423094231042311423124231342314423154231642317423184231942320423214232242323423244232542326423274232842329423304233142332423334233442335423364233742338423394234042341423424234342344423454234642347423484234942350423514235242353423544235542356423574235842359423604236142362423634236442365423664236742368423694237042371423724237342374423754237642377423784237942380423814238242383423844238542386423874238842389423904239142392423934239442395423964239742398423994240042401424024240342404424054240642407424084240942410424114241242413424144241542416424174241842419424204242142422424234242442425424264242742428424294243042431424324243342434424354243642437424384243942440424414244242443424444244542446424474244842449424504245142452424534245442455424564245742458424594246042461424624246342464424654246642467424684246942470424714247242473424744247542476424774247842479424804248142482424834248442485424864248742488424894249042491424924249342494424954249642497424984249942500425014250242503425044250542506425074250842509425104251142512425134251442515425164251742518425194252042521425224252342524425254252642527425284252942530425314253242533425344253542536425374253842539425404254142542425434254442545425464254742548425494255042551425524255342554425554255642557425584255942560425614256242563425644256542566425674256842569425704257142572425734257442575425764257742578425794258042581425824258342584425854258642587425884258942590425914259242593425944259542596425974259842599426004260142602426034260442605426064260742608426094261042611426124261342614426154261642617426184261942620426214262242623426244262542626426274262842629426304263142632426334263442635426364263742638426394264042641426424264342644426454264642647426484264942650426514265242653426544265542656426574265842659426604266142662426634266442665426664266742668426694267042671426724267342674426754267642677426784267942680426814268242683426844268542686426874268842689426904269142692426934269442695426964269742698426994270042701427024270342704427054270642707427084270942710427114271242713427144271542716427174271842719427204272142722427234272442725427264272742728427294273042731427324273342734427354273642737427384273942740427414274242743427444274542746427474274842749427504275142752427534275442755427564275742758427594276042761427624276342764427654276642767427684276942770427714277242773427744277542776427774277842779427804278142782427834278442785427864278742788427894279042791427924279342794427954279642797427984279942800428014280242803428044280542806428074280842809428104281142812428134281442815428164281742818428194282042821428224282342824428254282642827428284282942830428314283242833428344283542836428374283842839428404284142842428434284442845428464284742848428494285042851428524285342854428554285642857428584285942860428614286242863428644286542866428674286842869428704287142872428734287442875428764287742878428794288042881428824288342884428854288642887428884288942890428914289242893428944289542896428974289842899429004290142902429034290442905429064290742908429094291042911429124291342914429154291642917429184291942920429214292242923429244292542926429274292842929429304293142932429334293442935429364293742938429394294042941429424294342944429454294642947429484294942950429514295242953429544295542956429574295842959429604296142962429634296442965429664296742968429694297042971429724297342974429754297642977429784297942980429814298242983429844298542986429874298842989429904299142992429934299442995429964299742998429994300043001430024300343004430054300643007430084300943010430114301243013430144301543016430174301843019430204302143022430234302443025430264302743028430294303043031430324303343034430354303643037430384303943040430414304243043430444304543046430474304843049430504305143052430534305443055430564305743058430594306043061430624306343064430654306643067430684306943070430714307243073430744307543076430774307843079430804308143082430834308443085430864308743088430894309043091430924309343094430954309643097430984309943100431014310243103431044310543106431074310843109431104311143112431134311443115431164311743118431194312043121431224312343124431254312643127431284312943130431314313243133431344313543136431374313843139431404314143142431434314443145431464314743148431494315043151431524315343154431554315643157431584315943160431614316243163431644316543166431674316843169431704317143172431734317443175431764317743178431794318043181431824318343184431854318643187431884318943190431914319243193431944319543196431974319843199432004320143202432034320443205432064320743208432094321043211432124321343214432154321643217432184321943220432214322243223432244322543226432274322843229432304323143232432334323443235432364323743238432394324043241432424324343244432454324643247432484324943250432514325243253432544325543256432574325843259432604326143262432634326443265432664326743268432694327043271432724327343274432754327643277432784327943280432814328243283432844328543286432874328843289432904329143292432934329443295432964329743298432994330043301433024330343304433054330643307433084330943310433114331243313433144331543316433174331843319433204332143322433234332443325433264332743328433294333043331433324333343334433354333643337433384333943340433414334243343433444334543346433474334843349433504335143352433534335443355433564335743358433594336043361433624336343364433654336643367433684336943370433714337243373433744337543376433774337843379433804338143382433834338443385433864338743388433894339043391433924339343394433954339643397433984339943400434014340243403434044340543406434074340843409434104341143412434134341443415434164341743418434194342043421434224342343424434254342643427434284342943430434314343243433434344343543436434374343843439434404344143442434434344443445434464344743448434494345043451434524345343454434554345643457434584345943460434614346243463434644346543466434674346843469434704347143472434734347443475434764347743478434794348043481434824348343484434854348643487434884348943490434914349243493434944349543496434974349843499435004350143502435034350443505435064350743508435094351043511435124351343514435154351643517435184351943520435214352243523435244352543526435274352843529435304353143532435334353443535435364353743538435394354043541435424354343544435454354643547435484354943550435514355243553435544355543556435574355843559435604356143562435634356443565435664356743568435694357043571435724357343574435754357643577435784357943580435814358243583435844358543586435874358843589435904359143592435934359443595435964359743598435994360043601436024360343604436054360643607436084360943610436114361243613436144361543616436174361843619436204362143622436234362443625436264362743628436294363043631436324363343634436354363643637436384363943640436414364243643436444364543646436474364843649436504365143652436534365443655436564365743658436594366043661436624366343664436654366643667436684366943670436714367243673436744367543676436774367843679436804368143682436834368443685436864368743688436894369043691436924369343694436954369643697436984369943700437014370243703437044370543706437074370843709437104371143712437134371443715437164371743718437194372043721437224372343724437254372643727437284372943730437314373243733437344373543736437374373843739437404374143742437434374443745437464374743748437494375043751437524375343754437554375643757437584375943760437614376243763437644376543766437674376843769437704377143772437734377443775437764377743778437794378043781437824378343784437854378643787437884378943790437914379243793437944379543796437974379843799438004380143802438034380443805438064380743808438094381043811438124381343814438154381643817438184381943820438214382243823438244382543826438274382843829438304383143832438334383443835438364383743838438394384043841438424384343844438454384643847438484384943850438514385243853438544385543856438574385843859438604386143862438634386443865438664386743868438694387043871438724387343874438754387643877438784387943880438814388243883438844388543886438874388843889438904389143892438934389443895438964389743898438994390043901439024390343904439054390643907439084390943910439114391243913439144391543916439174391843919439204392143922439234392443925439264392743928439294393043931439324393343934439354393643937439384393943940439414394243943439444394543946439474394843949439504395143952439534395443955439564395743958439594396043961439624396343964439654396643967439684396943970439714397243973439744397543976439774397843979439804398143982439834398443985439864398743988439894399043991439924399343994439954399643997439984399944000440014400244003440044400544006440074400844009440104401144012440134401444015440164401744018440194402044021440224402344024440254402644027440284402944030440314403244033440344403544036440374403844039440404404144042440434404444045440464404744048440494405044051440524405344054440554405644057440584405944060440614406244063440644406544066440674406844069440704407144072440734407444075440764407744078440794408044081440824408344084440854408644087440884408944090440914409244093440944409544096440974409844099441004410144102441034410444105441064410744108441094411044111441124411344114441154411644117441184411944120441214412244123441244412544126441274412844129441304413144132441334413444135441364413744138441394414044141441424414344144441454414644147441484414944150441514415244153441544415544156441574415844159441604416144162441634416444165441664416744168441694417044171441724417344174441754417644177441784417944180441814418244183441844418544186441874418844189441904419144192441934419444195441964419744198441994420044201442024420344204442054420644207442084420944210442114421244213442144421544216442174421844219442204422144222442234422444225442264422744228442294423044231442324423344234442354423644237442384423944240442414424244243442444424544246442474424844249442504425144252442534425444255442564425744258442594426044261442624426344264442654426644267442684426944270442714427244273442744427544276442774427844279442804428144282442834428444285442864428744288442894429044291442924429344294442954429644297442984429944300443014430244303443044430544306443074430844309443104431144312443134431444315443164431744318443194432044321443224432344324443254432644327443284432944330443314433244333443344433544336443374433844339443404434144342443434434444345443464434744348443494435044351443524435344354443554435644357443584435944360443614436244363443644436544366443674436844369443704437144372443734437444375443764437744378443794438044381443824438344384443854438644387443884438944390443914439244393443944439544396443974439844399444004440144402444034440444405444064440744408444094441044411444124441344414444154441644417444184441944420444214442244423444244442544426444274442844429444304443144432444334443444435444364443744438444394444044441444424444344444444454444644447444484444944450444514445244453444544445544456444574445844459444604446144462444634446444465444664446744468444694447044471444724447344474444754447644477444784447944480444814448244483444844448544486444874448844489444904449144492444934449444495444964449744498444994450044501445024450344504445054450644507445084450944510445114451244513445144451544516445174451844519445204452144522445234452444525445264452744528445294453044531445324453344534445354453644537445384453944540445414454244543445444454544546445474454844549445504455144552445534455444555445564455744558445594456044561445624456344564445654456644567445684456944570445714457244573445744457544576445774457844579445804458144582445834458444585445864458744588445894459044591445924459344594445954459644597445984459944600446014460244603446044460544606446074460844609446104461144612446134461444615446164461744618446194462044621446224462344624446254462644627446284462944630446314463244633446344463544636446374463844639446404464144642446434464444645446464464744648446494465044651446524465344654446554465644657446584465944660446614466244663446644466544666446674466844669446704467144672446734467444675446764467744678446794468044681446824468344684446854468644687446884468944690446914469244693446944469544696446974469844699447004470144702447034470444705447064470744708447094471044711447124471344714447154471644717447184471944720447214472244723447244472544726447274472844729447304473144732447334473444735447364473744738447394474044741447424474344744447454474644747447484474944750447514475244753447544475544756447574475844759447604476144762447634476444765447664476744768447694477044771447724477344774447754477644777447784477944780447814478244783447844478544786447874478844789447904479144792447934479444795447964479744798447994480044801448024480344804448054480644807448084480944810448114481244813448144481544816448174481844819448204482144822448234482444825448264482744828448294483044831448324483344834448354483644837448384483944840448414484244843448444484544846448474484844849448504485144852448534485444855448564485744858448594486044861448624486344864448654486644867448684486944870448714487244873448744487544876448774487844879448804488144882448834488444885448864488744888448894489044891448924489344894448954489644897448984489944900449014490244903449044490544906449074490844909449104491144912449134491444915449164491744918449194492044921449224492344924449254492644927449284492944930449314493244933449344493544936449374493844939449404494144942449434494444945449464494744948449494495044951449524495344954449554495644957449584495944960449614496244963449644496544966449674496844969449704497144972449734497444975449764497744978449794498044981449824498344984449854498644987449884498944990449914499244993449944499544996449974499844999450004500145002450034500445005450064500745008450094501045011450124501345014450154501645017450184501945020450214502245023450244502545026450274502845029450304503145032450334503445035450364503745038450394504045041450424504345044450454504645047450484504945050450514505245053450544505545056450574505845059450604506145062450634506445065450664506745068450694507045071450724507345074450754507645077450784507945080450814508245083450844508545086450874508845089450904509145092450934509445095450964509745098450994510045101451024510345104451054510645107451084510945110451114511245113451144511545116451174511845119451204512145122451234512445125451264512745128451294513045131451324513345134451354513645137451384513945140451414514245143451444514545146451474514845149451504515145152451534515445155451564515745158451594516045161451624516345164451654516645167451684516945170451714517245173451744517545176451774517845179451804518145182451834518445185451864518745188451894519045191451924519345194451954519645197451984519945200452014520245203452044520545206452074520845209452104521145212452134521445215452164521745218452194522045221452224522345224452254522645227452284522945230452314523245233452344523545236452374523845239452404524145242452434524445245452464524745248452494525045251452524525345254452554525645257452584525945260452614526245263452644526545266452674526845269452704527145272452734527445275452764527745278452794528045281452824528345284452854528645287452884528945290452914529245293452944529545296452974529845299453004530145302453034530445305453064530745308453094531045311453124531345314453154531645317453184531945320453214532245323453244532545326453274532845329453304533145332453334533445335453364533745338453394534045341453424534345344453454534645347453484534945350453514535245353453544535545356453574535845359453604536145362453634536445365453664536745368453694537045371453724537345374453754537645377453784537945380453814538245383453844538545386453874538845389453904539145392453934539445395453964539745398453994540045401454024540345404454054540645407454084540945410454114541245413454144541545416454174541845419454204542145422454234542445425454264542745428454294543045431454324543345434454354543645437454384543945440454414544245443454444544545446454474544845449454504545145452454534545445455454564545745458454594546045461454624546345464454654546645467454684546945470454714547245473454744547545476454774547845479454804548145482454834548445485454864548745488454894549045491454924549345494454954549645497454984549945500455014550245503455044550545506455074550845509455104551145512455134551445515455164551745518455194552045521455224552345524455254552645527455284552945530455314553245533455344553545536455374553845539455404554145542455434554445545455464554745548455494555045551455524555345554455554555645557455584555945560455614556245563455644556545566455674556845569455704557145572455734557445575455764557745578455794558045581455824558345584455854558645587455884558945590455914559245593455944559545596455974559845599456004560145602456034560445605456064560745608456094561045611456124561345614456154561645617456184561945620456214562245623456244562545626456274562845629456304563145632456334563445635456364563745638456394564045641456424564345644456454564645647456484564945650456514565245653456544565545656456574565845659456604566145662456634566445665456664566745668456694567045671456724567345674456754567645677456784567945680456814568245683456844568545686456874568845689456904569145692456934569445695456964569745698456994570045701457024570345704457054570645707457084570945710457114571245713457144571545716457174571845719457204572145722457234572445725457264572745728457294573045731457324573345734457354573645737457384573945740457414574245743457444574545746457474574845749457504575145752457534575445755457564575745758457594576045761457624576345764457654576645767457684576945770457714577245773457744577545776457774577845779457804578145782457834578445785457864578745788457894579045791457924579345794457954579645797457984579945800458014580245803458044580545806458074580845809458104581145812458134581445815458164581745818458194582045821458224582345824458254582645827458284582945830458314583245833458344583545836458374583845839458404584145842458434584445845458464584745848458494585045851458524585345854458554585645857458584585945860458614586245863458644586545866458674586845869458704587145872458734587445875458764587745878458794588045881458824588345884458854588645887458884588945890458914589245893458944589545896458974589845899459004590145902459034590445905459064590745908459094591045911459124591345914459154591645917459184591945920459214592245923459244592545926459274592845929459304593145932459334593445935459364593745938459394594045941459424594345944459454594645947459484594945950459514595245953459544595545956459574595845959459604596145962459634596445965459664596745968459694597045971459724597345974459754597645977459784597945980459814598245983459844598545986459874598845989459904599145992459934599445995459964599745998459994600046001460024600346004460054600646007460084600946010460114601246013460144601546016460174601846019460204602146022460234602446025460264602746028460294603046031460324603346034460354603646037460384603946040460414604246043460444604546046460474604846049460504605146052460534605446055460564605746058460594606046061460624606346064460654606646067460684606946070460714607246073460744607546076460774607846079460804608146082460834608446085460864608746088460894609046091460924609346094460954609646097460984609946100461014610246103461044610546106461074610846109461104611146112461134611446115461164611746118461194612046121461224612346124461254612646127461284612946130461314613246133461344613546136461374613846139461404614146142461434614446145461464614746148461494615046151461524615346154461554615646157461584615946160461614616246163461644616546166461674616846169461704617146172461734617446175461764617746178461794618046181461824618346184461854618646187461884618946190461914619246193461944619546196461974619846199462004620146202462034620446205462064620746208462094621046211462124621346214462154621646217462184621946220462214622246223462244622546226462274622846229462304623146232462334623446235462364623746238462394624046241462424624346244462454624646247462484624946250462514625246253462544625546256462574625846259462604626146262462634626446265462664626746268462694627046271462724627346274462754627646277462784627946280462814628246283462844628546286462874628846289462904629146292462934629446295462964629746298462994630046301463024630346304463054630646307463084630946310463114631246313463144631546316463174631846319463204632146322463234632446325463264632746328463294633046331463324633346334463354633646337463384633946340463414634246343463444634546346463474634846349463504635146352463534635446355463564635746358463594636046361463624636346364463654636646367463684636946370463714637246373463744637546376463774637846379463804638146382463834638446385463864638746388463894639046391463924639346394463954639646397463984639946400464014640246403464044640546406464074640846409464104641146412464134641446415464164641746418464194642046421464224642346424464254642646427464284642946430464314643246433464344643546436464374643846439464404644146442464434644446445464464644746448464494645046451464524645346454464554645646457464584645946460464614646246463464644646546466464674646846469464704647146472464734647446475464764647746478464794648046481464824648346484464854648646487464884648946490464914649246493464944649546496464974649846499465004650146502465034650446505465064650746508465094651046511465124651346514465154651646517465184651946520465214652246523465244652546526465274652846529465304653146532465334653446535465364653746538465394654046541465424654346544465454654646547465484654946550465514655246553465544655546556465574655846559465604656146562465634656446565465664656746568465694657046571465724657346574465754657646577465784657946580465814658246583465844658546586465874658846589465904659146592465934659446595465964659746598465994660046601466024660346604466054660646607466084660946610466114661246613466144661546616466174661846619466204662146622466234662446625466264662746628466294663046631466324663346634466354663646637466384663946640466414664246643466444664546646466474664846649466504665146652466534665446655466564665746658466594666046661466624666346664466654666646667466684666946670466714667246673466744667546676466774667846679466804668146682466834668446685466864668746688466894669046691466924669346694466954669646697466984669946700467014670246703467044670546706467074670846709467104671146712467134671446715467164671746718467194672046721467224672346724467254672646727467284672946730467314673246733467344673546736467374673846739467404674146742467434674446745467464674746748467494675046751467524675346754467554675646757467584675946760467614676246763467644676546766467674676846769467704677146772467734677446775467764677746778467794678046781467824678346784467854678646787467884678946790467914679246793467944679546796467974679846799468004680146802468034680446805468064680746808468094681046811468124681346814468154681646817468184681946820468214682246823468244682546826468274682846829468304683146832468334683446835468364683746838468394684046841468424684346844468454684646847468484684946850468514685246853468544685546856468574685846859468604686146862468634686446865468664686746868468694687046871468724687346874468754687646877468784687946880468814688246883468844688546886468874688846889468904689146892468934689446895468964689746898468994690046901469024690346904469054690646907469084690946910469114691246913469144691546916469174691846919469204692146922469234692446925469264692746928469294693046931469324693346934469354693646937469384693946940469414694246943469444694546946469474694846949469504695146952469534695446955469564695746958469594696046961469624696346964469654696646967469684696946970469714697246973469744697546976469774697846979469804698146982469834698446985469864698746988469894699046991469924699346994469954699646997469984699947000470014700247003470044700547006470074700847009470104701147012470134701447015470164701747018470194702047021470224702347024470254702647027470284702947030470314703247033470344703547036470374703847039470404704147042470434704447045470464704747048470494705047051470524705347054470554705647057470584705947060470614706247063470644706547066470674706847069470704707147072470734707447075470764707747078470794708047081470824708347084470854708647087470884708947090470914709247093470944709547096470974709847099471004710147102471034710447105471064710747108471094711047111471124711347114471154711647117471184711947120471214712247123471244712547126471274712847129471304713147132471334713447135471364713747138471394714047141471424714347144471454714647147471484714947150471514715247153471544715547156471574715847159471604716147162471634716447165471664716747168471694717047171471724717347174471754717647177471784717947180471814718247183471844718547186471874718847189471904719147192471934719447195471964719747198471994720047201472024720347204472054720647207472084720947210472114721247213472144721547216472174721847219472204722147222472234722447225472264722747228472294723047231472324723347234472354723647237472384723947240472414724247243472444724547246472474724847249472504725147252472534725447255472564725747258472594726047261472624726347264472654726647267472684726947270472714727247273472744727547276472774727847279472804728147282472834728447285472864728747288472894729047291472924729347294472954729647297472984729947300473014730247303473044730547306473074730847309473104731147312473134731447315473164731747318473194732047321473224732347324473254732647327473284732947330473314733247333473344733547336473374733847339473404734147342473434734447345473464734747348473494735047351473524735347354473554735647357473584735947360473614736247363473644736547366473674736847369473704737147372473734737447375473764737747378473794738047381473824738347384473854738647387473884738947390473914739247393473944739547396473974739847399474004740147402474034740447405474064740747408474094741047411474124741347414474154741647417474184741947420474214742247423474244742547426474274742847429474304743147432474334743447435474364743747438474394744047441474424744347444474454744647447474484744947450474514745247453474544745547456474574745847459474604746147462474634746447465474664746747468474694747047471474724747347474474754747647477474784747947480474814748247483474844748547486474874748847489474904749147492474934749447495474964749747498474994750047501475024750347504475054750647507475084750947510475114751247513475144751547516475174751847519475204752147522475234752447525475264752747528475294753047531475324753347534475354753647537475384753947540475414754247543475444754547546475474754847549475504755147552475534755447555475564755747558475594756047561475624756347564475654756647567475684756947570475714757247573475744757547576475774757847579475804758147582475834758447585475864758747588475894759047591475924759347594475954759647597475984759947600476014760247603476044760547606476074760847609476104761147612476134761447615476164761747618476194762047621476224762347624476254762647627476284762947630476314763247633476344763547636476374763847639476404764147642476434764447645476464764747648476494765047651476524765347654476554765647657476584765947660476614766247663476644766547666476674766847669476704767147672476734767447675476764767747678476794768047681476824768347684476854768647687476884768947690476914769247693476944769547696476974769847699477004770147702477034770447705477064770747708477094771047711477124771347714477154771647717477184771947720477214772247723477244772547726477274772847729477304773147732477334773447735477364773747738477394774047741477424774347744477454774647747477484774947750477514775247753477544775547756477574775847759477604776147762477634776447765477664776747768477694777047771477724777347774477754777647777477784777947780477814778247783477844778547786477874778847789477904779147792477934779447795477964779747798477994780047801478024780347804478054780647807478084780947810478114781247813478144781547816478174781847819478204782147822478234782447825478264782747828478294783047831478324783347834478354783647837478384783947840478414784247843478444784547846478474784847849478504785147852478534785447855478564785747858478594786047861478624786347864478654786647867478684786947870478714787247873478744787547876478774787847879478804788147882478834788447885478864788747888478894789047891478924789347894478954789647897478984789947900479014790247903479044790547906479074790847909479104791147912479134791447915479164791747918479194792047921479224792347924479254792647927479284792947930479314793247933479344793547936479374793847939479404794147942479434794447945479464794747948479494795047951479524795347954479554795647957479584795947960479614796247963479644796547966479674796847969479704797147972479734797447975479764797747978479794798047981479824798347984479854798647987479884798947990479914799247993479944799547996479974799847999480004800148002480034800448005480064800748008480094801048011480124801348014480154801648017480184801948020480214802248023480244802548026480274802848029480304803148032480334803448035480364803748038480394804048041480424804348044480454804648047480484804948050480514805248053480544805548056480574805848059480604806148062480634806448065480664806748068480694807048071480724807348074480754807648077480784807948080480814808248083480844808548086480874808848089480904809148092480934809448095480964809748098480994810048101481024810348104481054810648107481084810948110481114811248113481144811548116481174811848119481204812148122481234812448125481264812748128481294813048131481324813348134481354813648137481384813948140481414814248143481444814548146481474814848149481504815148152481534815448155481564815748158481594816048161481624816348164481654816648167481684816948170481714817248173481744817548176481774817848179481804818148182481834818448185481864818748188481894819048191481924819348194481954819648197481984819948200482014820248203482044820548206482074820848209482104821148212482134821448215482164821748218482194822048221482224822348224482254822648227482284822948230482314823248233482344823548236482374823848239482404824148242482434824448245482464824748248482494825048251482524825348254482554825648257482584825948260482614826248263482644826548266482674826848269482704827148272482734827448275482764827748278482794828048281482824828348284482854828648287482884828948290482914829248293482944829548296482974829848299483004830148302483034830448305483064830748308483094831048311483124831348314483154831648317483184831948320483214832248323483244832548326483274832848329483304833148332483334833448335483364833748338483394834048341483424834348344483454834648347483484834948350483514835248353483544835548356483574835848359483604836148362483634836448365483664836748368483694837048371483724837348374483754837648377483784837948380483814838248383483844838548386483874838848389483904839148392483934839448395483964839748398483994840048401484024840348404484054840648407484084840948410484114841248413484144841548416484174841848419484204842148422484234842448425484264842748428484294843048431484324843348434484354843648437484384843948440484414844248443484444844548446484474844848449484504845148452484534845448455484564845748458484594846048461484624846348464484654846648467484684846948470484714847248473484744847548476484774847848479484804848148482484834848448485484864848748488484894849048491484924849348494484954849648497484984849948500485014850248503485044850548506485074850848509485104851148512485134851448515485164851748518485194852048521485224852348524485254852648527485284852948530485314853248533485344853548536485374853848539485404854148542485434854448545485464854748548485494855048551485524855348554485554855648557485584855948560485614856248563485644856548566485674856848569485704857148572485734857448575485764857748578485794858048581485824858348584485854858648587485884858948590485914859248593485944859548596485974859848599486004860148602486034860448605486064860748608486094861048611486124861348614486154861648617486184861948620486214862248623486244862548626486274862848629486304863148632486334863448635486364863748638486394864048641486424864348644486454864648647486484864948650486514865248653486544865548656486574865848659486604866148662486634866448665486664866748668486694867048671486724867348674486754867648677486784867948680486814868248683486844868548686486874868848689486904869148692486934869448695486964869748698486994870048701487024870348704487054870648707487084870948710487114871248713487144871548716487174871848719487204872148722487234872448725487264872748728487294873048731487324873348734487354873648737487384873948740487414874248743487444874548746487474874848749487504875148752487534875448755487564875748758487594876048761487624876348764487654876648767487684876948770487714877248773487744877548776487774877848779487804878148782487834878448785487864878748788487894879048791487924879348794487954879648797487984879948800488014880248803488044880548806488074880848809488104881148812488134881448815488164881748818488194882048821488224882348824488254882648827488284882948830488314883248833488344883548836488374883848839488404884148842488434884448845488464884748848488494885048851488524885348854488554885648857488584885948860488614886248863488644886548866488674886848869488704887148872488734887448875488764887748878488794888048881488824888348884488854888648887488884888948890488914889248893488944889548896488974889848899489004890148902489034890448905489064890748908489094891048911489124891348914489154891648917489184891948920489214892248923489244892548926489274892848929489304893148932489334893448935489364893748938489394894048941489424894348944489454894648947489484894948950489514895248953489544895548956489574895848959489604896148962489634896448965489664896748968489694897048971489724897348974489754897648977489784897948980489814898248983489844898548986489874898848989489904899148992489934899448995489964899748998489994900049001490024900349004490054900649007490084900949010490114901249013490144901549016490174901849019490204902149022490234902449025490264902749028490294903049031490324903349034490354903649037490384903949040490414904249043490444904549046490474904849049490504905149052490534905449055490564905749058490594906049061490624906349064490654906649067490684906949070490714907249073490744907549076490774907849079490804908149082490834908449085490864908749088490894909049091490924909349094490954909649097490984909949100491014910249103491044910549106491074910849109491104911149112491134911449115491164911749118491194912049121491224912349124491254912649127491284912949130491314913249133491344913549136491374913849139491404914149142491434914449145491464914749148491494915049151491524915349154491554915649157491584915949160491614916249163491644916549166491674916849169491704917149172491734917449175491764917749178491794918049181491824918349184491854918649187491884918949190491914919249193491944919549196491974919849199492004920149202492034920449205492064920749208492094921049211492124921349214492154921649217492184921949220492214922249223492244922549226492274922849229492304923149232492334923449235492364923749238492394924049241492424924349244492454924649247492484924949250492514925249253492544925549256492574925849259492604926149262492634926449265492664926749268492694927049271492724927349274492754927649277492784927949280492814928249283492844928549286492874928849289492904929149292492934929449295492964929749298492994930049301493024930349304493054930649307493084930949310493114931249313493144931549316493174931849319493204932149322493234932449325493264932749328493294933049331493324933349334493354933649337493384933949340493414934249343493444934549346493474934849349493504935149352493534935449355493564935749358493594936049361493624936349364493654936649367493684936949370493714937249373493744937549376493774937849379493804938149382493834938449385493864938749388493894939049391493924939349394493954939649397493984939949400494014940249403494044940549406494074940849409494104941149412494134941449415494164941749418494194942049421494224942349424494254942649427494284942949430494314943249433494344943549436494374943849439494404944149442494434944449445494464944749448494494945049451494524945349454494554945649457494584945949460494614946249463494644946549466494674946849469494704947149472494734947449475494764947749478494794948049481494824948349484494854948649487494884948949490494914949249493494944949549496494974949849499495004950149502495034950449505495064950749508495094951049511495124951349514495154951649517495184951949520495214952249523495244952549526495274952849529495304953149532495334953449535495364953749538495394954049541495424954349544495454954649547495484954949550495514955249553495544955549556495574955849559495604956149562495634956449565495664956749568495694957049571495724957349574495754957649577495784957949580495814958249583495844958549586495874958849589495904959149592495934959449595495964959749598495994960049601496024960349604496054960649607496084960949610496114961249613496144961549616496174961849619496204962149622496234962449625496264962749628496294963049631496324963349634496354963649637496384963949640496414964249643496444964549646496474964849649496504965149652496534965449655496564965749658496594966049661496624966349664496654966649667496684966949670496714967249673496744967549676496774967849679496804968149682496834968449685496864968749688496894969049691496924969349694496954969649697496984969949700497014970249703497044970549706497074970849709497104971149712497134971449715497164971749718497194972049721497224972349724497254972649727497284972949730497314973249733497344973549736497374973849739497404974149742497434974449745497464974749748497494975049751497524975349754497554975649757497584975949760497614976249763497644976549766497674976849769497704977149772497734977449775497764977749778497794978049781497824978349784497854978649787497884978949790497914979249793497944979549796497974979849799498004980149802498034980449805498064980749808498094981049811498124981349814498154981649817498184981949820498214982249823498244982549826498274982849829498304983149832498334983449835498364983749838498394984049841498424984349844498454984649847498484984949850498514985249853498544985549856498574985849859498604986149862498634986449865498664986749868498694987049871498724987349874498754987649877498784987949880498814988249883498844988549886498874988849889498904989149892498934989449895498964989749898498994990049901499024990349904499054990649907499084990949910499114991249913499144991549916499174991849919499204992149922499234992449925499264992749928499294993049931499324993349934499354993649937499384993949940499414994249943499444994549946499474994849949499504995149952499534995449955499564995749958499594996049961499624996349964499654996649967499684996949970499714997249973499744997549976499774997849979499804998149982499834998449985499864998749988499894999049991499924999349994499954999649997499984999950000500015000250003500045000550006500075000850009500105001150012500135001450015500165001750018500195002050021500225002350024500255002650027500285002950030500315003250033500345003550036500375003850039500405004150042500435004450045500465004750048500495005050051500525005350054500555005650057500585005950060500615006250063500645006550066500675006850069500705007150072500735007450075500765007750078500795008050081500825008350084500855008650087500885008950090500915009250093500945009550096500975009850099501005010150102501035010450105501065010750108501095011050111501125011350114501155011650117501185011950120501215012250123501245012550126501275012850129501305013150132501335013450135501365013750138501395014050141501425014350144501455014650147501485014950150501515015250153501545015550156501575015850159501605016150162501635016450165501665016750168501695017050171501725017350174501755017650177501785017950180501815018250183501845018550186501875018850189501905019150192501935019450195501965019750198501995020050201502025020350204502055020650207502085020950210502115021250213502145021550216502175021850219502205022150222502235022450225502265022750228502295023050231502325023350234502355023650237502385023950240502415024250243502445024550246502475024850249502505025150252502535025450255502565025750258502595026050261502625026350264502655026650267502685026950270502715027250273502745027550276502775027850279502805028150282502835028450285502865028750288502895029050291502925029350294502955029650297502985029950300503015030250303503045030550306503075030850309503105031150312503135031450315503165031750318503195032050321503225032350324503255032650327503285032950330503315033250333503345033550336503375033850339503405034150342503435034450345503465034750348503495035050351503525035350354503555035650357503585035950360503615036250363503645036550366503675036850369503705037150372503735037450375503765037750378503795038050381503825038350384503855038650387503885038950390503915039250393503945039550396503975039850399504005040150402504035040450405504065040750408504095041050411504125041350414504155041650417504185041950420504215042250423504245042550426504275042850429504305043150432504335043450435504365043750438504395044050441504425044350444504455044650447504485044950450504515045250453504545045550456504575045850459504605046150462504635046450465504665046750468504695047050471504725047350474504755047650477504785047950480504815048250483504845048550486504875048850489504905049150492504935049450495504965049750498504995050050501505025050350504505055050650507505085050950510505115051250513505145051550516505175051850519505205052150522505235052450525505265052750528505295053050531505325053350534505355053650537505385053950540505415054250543505445054550546505475054850549505505055150552505535055450555505565055750558505595056050561505625056350564505655056650567505685056950570505715057250573505745057550576505775057850579505805058150582505835058450585505865058750588505895059050591505925059350594505955059650597505985059950600506015060250603506045060550606506075060850609506105061150612506135061450615506165061750618506195062050621506225062350624506255062650627506285062950630506315063250633506345063550636506375063850639506405064150642506435064450645506465064750648506495065050651506525065350654506555065650657506585065950660506615066250663506645066550666506675066850669506705067150672506735067450675506765067750678506795068050681506825068350684506855068650687506885068950690506915069250693506945069550696506975069850699507005070150702507035070450705507065070750708507095071050711507125071350714507155071650717507185071950720507215072250723507245072550726507275072850729507305073150732507335073450735507365073750738507395074050741507425074350744507455074650747507485074950750507515075250753507545075550756507575075850759507605076150762507635076450765507665076750768507695077050771507725077350774507755077650777507785077950780507815078250783507845078550786507875078850789507905079150792507935079450795507965079750798507995080050801508025080350804508055080650807508085080950810508115081250813508145081550816508175081850819508205082150822508235082450825508265082750828508295083050831508325083350834508355083650837508385083950840508415084250843508445084550846508475084850849508505085150852508535085450855508565085750858508595086050861508625086350864508655086650867508685086950870508715087250873508745087550876508775087850879508805088150882508835088450885508865088750888508895089050891508925089350894508955089650897508985089950900509015090250903509045090550906509075090850909509105091150912509135091450915509165091750918509195092050921509225092350924509255092650927509285092950930509315093250933509345093550936509375093850939509405094150942509435094450945509465094750948509495095050951509525095350954509555095650957509585095950960509615096250963509645096550966509675096850969509705097150972509735097450975509765097750978509795098050981509825098350984509855098650987509885098950990509915099250993509945099550996509975099850999510005100151002510035100451005510065100751008510095101051011510125101351014510155101651017510185101951020510215102251023510245102551026510275102851029510305103151032510335103451035510365103751038510395104051041510425104351044510455104651047510485104951050510515105251053510545105551056510575105851059510605106151062510635106451065510665106751068510695107051071510725107351074510755107651077510785107951080510815108251083510845108551086510875108851089510905109151092510935109451095510965109751098510995110051101511025110351104511055110651107511085110951110511115111251113511145111551116511175111851119511205112151122511235112451125511265112751128511295113051131511325113351134511355113651137511385113951140511415114251143511445114551146511475114851149511505115151152511535115451155511565115751158511595116051161511625116351164511655116651167511685116951170511715117251173511745117551176511775117851179511805118151182511835118451185511865118751188511895119051191511925119351194511955119651197511985119951200512015120251203512045120551206512075120851209512105121151212512135121451215512165121751218512195122051221512225122351224512255122651227512285122951230512315123251233512345123551236512375123851239512405124151242512435124451245512465124751248512495125051251512525125351254512555125651257512585125951260512615126251263512645126551266512675126851269512705127151272512735127451275512765127751278512795128051281512825128351284512855128651287512885128951290512915129251293512945129551296512975129851299513005130151302513035130451305513065130751308513095131051311513125131351314513155131651317513185131951320513215132251323513245132551326513275132851329513305133151332513335133451335513365133751338513395134051341513425134351344513455134651347513485134951350513515135251353513545135551356513575135851359513605136151362513635136451365513665136751368513695137051371513725137351374513755137651377513785137951380513815138251383513845138551386513875138851389513905139151392513935139451395513965139751398513995140051401514025140351404514055140651407514085140951410514115141251413514145141551416514175141851419514205142151422514235142451425514265142751428514295143051431514325143351434514355143651437514385143951440514415144251443514445144551446514475144851449514505145151452514535145451455514565145751458514595146051461514625146351464514655146651467514685146951470514715147251473514745147551476514775147851479514805148151482514835148451485514865148751488514895149051491514925149351494514955149651497514985149951500515015150251503515045150551506515075150851509515105151151512515135151451515515165151751518515195152051521515225152351524515255152651527515285152951530515315153251533515345153551536515375153851539515405154151542515435154451545515465154751548515495155051551515525155351554515555155651557515585155951560515615156251563515645156551566515675156851569515705157151572515735157451575515765157751578515795158051581515825158351584515855158651587515885158951590515915159251593515945159551596515975159851599516005160151602516035160451605516065160751608516095161051611516125161351614516155161651617516185161951620516215162251623516245162551626516275162851629516305163151632516335163451635516365163751638516395164051641516425164351644516455164651647516485164951650516515165251653516545165551656516575165851659516605166151662516635166451665516665166751668516695167051671516725167351674516755167651677516785167951680516815168251683516845168551686516875168851689516905169151692516935169451695516965169751698516995170051701517025170351704517055170651707517085170951710517115171251713517145171551716517175171851719517205172151722517235172451725517265172751728517295173051731517325173351734517355173651737517385173951740517415174251743517445174551746517475174851749517505175151752517535175451755517565175751758517595176051761517625176351764517655176651767517685176951770517715177251773517745177551776517775177851779517805178151782517835178451785517865178751788517895179051791517925179351794517955179651797517985179951800518015180251803518045180551806518075180851809518105181151812518135181451815518165181751818518195182051821518225182351824518255182651827518285182951830518315183251833518345183551836518375183851839518405184151842518435184451845518465184751848518495185051851518525185351854518555185651857518585185951860518615186251863518645186551866518675186851869518705187151872518735187451875518765187751878518795188051881518825188351884518855188651887518885188951890518915189251893518945189551896518975189851899519005190151902519035190451905519065190751908519095191051911519125191351914519155191651917519185191951920519215192251923519245192551926519275192851929519305193151932519335193451935519365193751938519395194051941519425194351944519455194651947519485194951950519515195251953519545195551956519575195851959519605196151962519635196451965519665196751968519695197051971519725197351974519755197651977519785197951980519815198251983519845198551986519875198851989519905199151992519935199451995519965199751998519995200052001520025200352004520055200652007520085200952010520115201252013520145201552016520175201852019520205202152022520235202452025520265202752028520295203052031520325203352034520355203652037520385203952040520415204252043520445204552046520475204852049520505205152052520535205452055520565205752058520595206052061520625206352064520655206652067520685206952070520715207252073520745207552076520775207852079520805208152082520835208452085520865208752088520895209052091520925209352094520955209652097520985209952100521015210252103521045210552106521075210852109521105211152112521135211452115521165211752118521195212052121521225212352124521255212652127521285212952130521315213252133521345213552136521375213852139521405214152142521435214452145521465214752148521495215052151521525215352154521555215652157521585215952160521615216252163521645216552166521675216852169521705217152172521735217452175521765217752178521795218052181521825218352184521855218652187521885218952190521915219252193521945219552196521975219852199522005220152202522035220452205522065220752208522095221052211522125221352214522155221652217522185221952220522215222252223522245222552226522275222852229522305223152232522335223452235522365223752238522395224052241522425224352244522455224652247522485224952250522515225252253522545225552256522575225852259522605226152262522635226452265522665226752268522695227052271522725227352274522755227652277522785227952280522815228252283522845228552286522875228852289522905229152292522935229452295522965229752298522995230052301523025230352304523055230652307523085230952310523115231252313523145231552316523175231852319523205232152322523235232452325523265232752328523295233052331523325233352334523355233652337523385233952340523415234252343523445234552346523475234852349523505235152352523535235452355523565235752358523595236052361523625236352364523655236652367523685236952370523715237252373523745237552376523775237852379523805238152382523835238452385523865238752388523895239052391523925239352394523955239652397523985239952400524015240252403524045240552406524075240852409524105241152412524135241452415524165241752418524195242052421524225242352424524255242652427524285242952430524315243252433524345243552436524375243852439524405244152442524435244452445524465244752448524495245052451524525245352454524555245652457524585245952460524615246252463524645246552466524675246852469524705247152472524735247452475524765247752478524795248052481524825248352484524855248652487524885248952490524915249252493524945249552496524975249852499525005250152502525035250452505525065250752508525095251052511525125251352514525155251652517525185251952520525215252252523525245252552526525275252852529525305253152532525335253452535525365253752538525395254052541525425254352544525455254652547525485254952550525515255252553525545255552556525575255852559525605256152562525635256452565525665256752568525695257052571525725257352574525755257652577525785257952580525815258252583525845258552586525875258852589525905259152592525935259452595525965259752598525995260052601526025260352604526055260652607526085260952610526115261252613526145261552616526175261852619526205262152622526235262452625526265262752628526295263052631526325263352634526355263652637526385263952640526415264252643526445264552646526475264852649526505265152652526535265452655526565265752658526595266052661526625266352664526655266652667526685266952670526715267252673526745267552676526775267852679526805268152682526835268452685526865268752688526895269052691526925269352694526955269652697526985269952700527015270252703527045270552706527075270852709527105271152712527135271452715527165271752718527195272052721527225272352724527255272652727527285272952730527315273252733527345273552736527375273852739527405274152742527435274452745527465274752748527495275052751527525275352754527555275652757527585275952760527615276252763527645276552766527675276852769527705277152772527735277452775527765277752778527795278052781527825278352784527855278652787527885278952790527915279252793527945279552796527975279852799528005280152802528035280452805528065280752808528095281052811528125281352814528155281652817528185281952820528215282252823528245282552826528275282852829528305283152832528335283452835528365283752838528395284052841528425284352844528455284652847528485284952850528515285252853528545285552856528575285852859528605286152862528635286452865528665286752868528695287052871528725287352874528755287652877528785287952880528815288252883528845288552886528875288852889528905289152892528935289452895528965289752898528995290052901529025290352904529055290652907529085290952910529115291252913529145291552916529175291852919529205292152922529235292452925529265292752928529295293052931529325293352934529355293652937529385293952940529415294252943529445294552946529475294852949529505295152952529535295452955529565295752958529595296052961529625296352964529655296652967529685296952970529715297252973529745297552976529775297852979529805298152982529835298452985529865298752988529895299052991529925299352994529955299652997529985299953000530015300253003530045300553006530075300853009530105301153012530135301453015530165301753018530195302053021530225302353024530255302653027530285302953030530315303253033530345303553036530375303853039530405304153042530435304453045530465304753048530495305053051530525305353054530555305653057530585305953060530615306253063530645306553066530675306853069530705307153072530735307453075530765307753078530795308053081530825308353084530855308653087530885308953090530915309253093530945309553096530975309853099531005310153102531035310453105531065310753108531095311053111531125311353114531155311653117531185311953120531215312253123531245312553126531275312853129531305313153132531335313453135531365313753138531395314053141531425314353144531455314653147531485314953150531515315253153531545315553156531575315853159531605316153162531635316453165531665316753168531695317053171531725317353174531755317653177531785317953180531815318253183531845318553186531875318853189531905319153192531935319453195531965319753198531995320053201532025320353204532055320653207532085320953210532115321253213532145321553216532175321853219532205322153222532235322453225532265322753228532295323053231532325323353234532355323653237532385323953240532415324253243532445324553246532475324853249532505325153252532535325453255532565325753258532595326053261532625326353264532655326653267532685326953270532715327253273532745327553276532775327853279532805328153282532835328453285532865328753288532895329053291532925329353294532955329653297532985329953300533015330253303533045330553306533075330853309533105331153312533135331453315533165331753318533195332053321533225332353324533255332653327533285332953330533315333253333533345333553336533375333853339533405334153342533435334453345533465334753348533495335053351533525335353354533555335653357533585335953360533615336253363533645336553366533675336853369533705337153372533735337453375533765337753378533795338053381533825338353384533855338653387533885338953390533915339253393533945339553396533975339853399534005340153402534035340453405534065340753408534095341053411534125341353414534155341653417534185341953420534215342253423534245342553426534275342853429534305343153432534335343453435534365343753438534395344053441534425344353444534455344653447534485344953450534515345253453534545345553456534575345853459534605346153462534635346453465534665346753468534695347053471534725347353474534755347653477534785347953480534815348253483534845348553486534875348853489534905349153492534935349453495534965349753498534995350053501535025350353504535055350653507535085350953510535115351253513535145351553516535175351853519535205352153522535235352453525535265352753528535295353053531535325353353534535355353653537535385353953540535415354253543535445354553546535475354853549535505355153552535535355453555535565355753558535595356053561535625356353564535655356653567535685356953570535715357253573535745357553576535775357853579535805358153582535835358453585535865358753588535895359053591535925359353594535955359653597535985359953600536015360253603536045360553606536075360853609536105361153612536135361453615536165361753618536195362053621536225362353624536255362653627536285362953630536315363253633536345363553636536375363853639536405364153642536435364453645536465364753648536495365053651536525365353654536555365653657536585365953660536615366253663536645366553666536675366853669536705367153672536735367453675536765367753678536795368053681536825368353684536855368653687536885368953690536915369253693536945369553696536975369853699537005370153702537035370453705537065370753708537095371053711537125371353714537155371653717537185371953720537215372253723537245372553726537275372853729537305373153732537335373453735537365373753738537395374053741537425374353744537455374653747537485374953750537515375253753537545375553756537575375853759537605376153762537635376453765537665376753768537695377053771537725377353774537755377653777537785377953780537815378253783537845378553786537875378853789537905379153792537935379453795537965379753798537995380053801538025380353804538055380653807538085380953810538115381253813538145381553816538175381853819538205382153822538235382453825538265382753828538295383053831538325383353834538355383653837538385383953840538415384253843538445384553846538475384853849538505385153852538535385453855538565385753858538595386053861538625386353864538655386653867538685386953870538715387253873538745387553876538775387853879538805388153882538835388453885538865388753888538895389053891538925389353894538955389653897538985389953900539015390253903539045390553906539075390853909539105391153912539135391453915539165391753918539195392053921539225392353924539255392653927539285392953930539315393253933539345393553936539375393853939539405394153942539435394453945539465394753948539495395053951539525395353954539555395653957539585395953960539615396253963539645396553966539675396853969539705397153972539735397453975539765397753978539795398053981539825398353984539855398653987539885398953990539915399253993539945399553996539975399853999540005400154002540035400454005540065400754008540095401054011540125401354014540155401654017540185401954020540215402254023540245402554026540275402854029540305403154032540335403454035540365403754038540395404054041540425404354044540455404654047540485404954050540515405254053540545405554056540575405854059540605406154062540635406454065540665406754068540695407054071540725407354074540755407654077540785407954080540815408254083540845408554086540875408854089540905409154092540935409454095540965409754098540995410054101541025410354104541055410654107541085410954110541115411254113541145411554116541175411854119541205412154122541235412454125541265412754128541295413054131541325413354134541355413654137541385413954140541415414254143541445414554146541475414854149541505415154152541535415454155541565415754158541595416054161541625416354164541655416654167541685416954170541715417254173541745417554176541775417854179541805418154182541835418454185541865418754188541895419054191541925419354194541955419654197541985419954200542015420254203542045420554206542075420854209542105421154212542135421454215542165421754218542195422054221542225422354224542255422654227542285422954230542315423254233542345423554236542375423854239542405424154242542435424454245542465424754248542495425054251542525425354254542555425654257542585425954260542615426254263542645426554266542675426854269542705427154272542735427454275542765427754278542795428054281542825428354284542855428654287542885428954290542915429254293542945429554296542975429854299543005430154302543035430454305543065430754308543095431054311543125431354314543155431654317543185431954320543215432254323543245432554326543275432854329543305433154332543335433454335543365433754338543395434054341543425434354344543455434654347543485434954350543515435254353543545435554356543575435854359543605436154362543635436454365543665436754368543695437054371543725437354374543755437654377543785437954380543815438254383543845438554386543875438854389543905439154392543935439454395543965439754398543995440054401544025440354404544055440654407544085440954410544115441254413544145441554416544175441854419544205442154422544235442454425544265442754428544295443054431544325443354434544355443654437544385443954440544415444254443544445444554446544475444854449544505445154452544535445454455544565445754458544595446054461544625446354464544655446654467544685446954470544715447254473544745447554476544775447854479544805448154482544835448454485544865448754488544895449054491544925449354494544955449654497544985449954500545015450254503545045450554506545075450854509545105451154512545135451454515545165451754518545195452054521545225452354524545255452654527545285452954530545315453254533545345453554536545375453854539545405454154542545435454454545545465454754548545495455054551545525455354554545555455654557545585455954560545615456254563545645456554566545675456854569545705457154572545735457454575545765457754578545795458054581545825458354584545855458654587545885458954590545915459254593545945459554596545975459854599546005460154602546035460454605546065460754608546095461054611546125461354614546155461654617546185461954620546215462254623546245462554626546275462854629546305463154632546335463454635546365463754638546395464054641546425464354644546455464654647546485464954650546515465254653546545465554656546575465854659546605466154662546635466454665546665466754668546695467054671546725467354674546755467654677546785467954680546815468254683546845468554686546875468854689546905469154692546935469454695546965469754698546995470054701547025470354704547055470654707547085470954710547115471254713547145471554716547175471854719547205472154722547235472454725547265472754728547295473054731547325473354734547355473654737547385473954740547415474254743547445474554746547475474854749547505475154752547535475454755547565475754758547595476054761547625476354764547655476654767547685476954770547715477254773547745477554776547775477854779547805478154782547835478454785547865478754788547895479054791547925479354794547955479654797547985479954800548015480254803548045480554806548075480854809548105481154812548135481454815548165481754818548195482054821548225482354824548255482654827548285482954830548315483254833548345483554836548375483854839548405484154842548435484454845548465484754848548495485054851548525485354854548555485654857548585485954860548615486254863548645486554866548675486854869548705487154872548735487454875548765487754878548795488054881548825488354884548855488654887548885488954890548915489254893548945489554896548975489854899549005490154902549035490454905549065490754908549095491054911549125491354914549155491654917549185491954920549215492254923549245492554926549275492854929549305493154932549335493454935549365493754938549395494054941549425494354944549455494654947549485494954950549515495254953549545495554956549575495854959549605496154962549635496454965549665496754968549695497054971549725497354974549755497654977549785497954980549815498254983549845498554986549875498854989549905499154992549935499454995549965499754998549995500055001550025500355004550055500655007550085500955010550115501255013550145501555016550175501855019550205502155022550235502455025550265502755028550295503055031550325503355034550355503655037550385503955040550415504255043550445504555046550475504855049550505505155052550535505455055550565505755058550595506055061550625506355064550655506655067550685506955070550715507255073550745507555076550775507855079550805508155082550835508455085550865508755088550895509055091550925509355094550955509655097550985509955100551015510255103551045510555106551075510855109551105511155112551135511455115551165511755118551195512055121551225512355124551255512655127551285512955130551315513255133551345513555136551375513855139551405514155142551435514455145551465514755148551495515055151551525515355154551555515655157551585515955160551615516255163551645516555166551675516855169551705517155172551735517455175551765517755178551795518055181551825518355184551855518655187551885518955190551915519255193551945519555196551975519855199552005520155202552035520455205552065520755208552095521055211552125521355214552155521655217552185521955220552215522255223552245522555226552275522855229552305523155232552335523455235552365523755238552395524055241552425524355244552455524655247552485524955250552515525255253552545525555256552575525855259552605526155262552635526455265552665526755268552695527055271552725527355274552755527655277552785527955280552815528255283552845528555286552875528855289552905529155292552935529455295552965529755298552995530055301553025530355304553055530655307553085530955310553115531255313553145531555316553175531855319553205532155322553235532455325553265532755328553295533055331553325533355334553355533655337553385533955340553415534255343553445534555346553475534855349553505535155352553535535455355553565535755358553595536055361553625536355364553655536655367553685536955370553715537255373553745537555376553775537855379553805538155382553835538455385553865538755388553895539055391553925539355394553955539655397553985539955400554015540255403554045540555406554075540855409554105541155412554135541455415554165541755418554195542055421554225542355424554255542655427554285542955430554315543255433554345543555436554375543855439554405544155442554435544455445554465544755448554495545055451554525545355454554555545655457554585545955460554615546255463554645546555466554675546855469554705547155472554735547455475554765547755478554795548055481554825548355484554855548655487554885548955490554915549255493554945549555496554975549855499555005550155502555035550455505555065550755508555095551055511555125551355514555155551655517555185551955520555215552255523555245552555526555275552855529555305553155532555335553455535555365553755538555395554055541555425554355544555455554655547555485554955550555515555255553555545555555556555575555855559555605556155562555635556455565555665556755568555695557055571555725557355574555755557655577555785557955580555815558255583555845558555586555875558855589555905559155592555935559455595555965559755598555995560055601556025560355604556055560655607556085560955610556115561255613556145561555616556175561855619556205562155622556235562455625556265562755628556295563055631556325563355634556355563655637556385563955640556415564255643556445564555646556475564855649556505565155652556535565455655556565565755658556595566055661556625566355664556655566655667556685566955670556715567255673556745567555676556775567855679556805568155682556835568455685556865568755688556895569055691556925569355694556955569655697556985569955700557015570255703557045570555706557075570855709557105571155712557135571455715557165571755718557195572055721557225572355724557255572655727557285572955730557315573255733557345573555736557375573855739557405574155742557435574455745557465574755748557495575055751557525575355754557555575655757557585575955760557615576255763557645576555766557675576855769557705577155772557735577455775557765577755778557795578055781557825578355784557855578655787557885578955790557915579255793557945579555796557975579855799558005580155802558035580455805558065580755808558095581055811558125581355814558155581655817558185581955820558215582255823558245582555826558275582855829558305583155832558335583455835558365583755838558395584055841558425584355844558455584655847558485584955850558515585255853558545585555856558575585855859558605586155862558635586455865558665586755868558695587055871558725587355874558755587655877558785587955880558815588255883558845588555886558875588855889558905589155892558935589455895558965589755898558995590055901559025590355904559055590655907559085590955910559115591255913559145591555916559175591855919559205592155922559235592455925559265592755928559295593055931559325593355934559355593655937559385593955940559415594255943559445594555946559475594855949559505595155952559535595455955559565595755958559595596055961559625596355964559655596655967559685596955970559715597255973559745597555976559775597855979559805598155982559835598455985559865598755988559895599055991559925599355994559955599655997559985599956000560015600256003560045600556006560075600856009560105601156012560135601456015560165601756018560195602056021560225602356024560255602656027560285602956030560315603256033560345603556036560375603856039560405604156042560435604456045560465604756048560495605056051560525605356054560555605656057560585605956060560615606256063560645606556066560675606856069560705607156072560735607456075560765607756078560795608056081560825608356084560855608656087560885608956090560915609256093560945609556096560975609856099561005610156102561035610456105561065610756108561095611056111561125611356114561155611656117561185611956120561215612256123561245612556126561275612856129561305613156132561335613456135561365613756138561395614056141561425614356144561455614656147561485614956150561515615256153561545615556156561575615856159561605616156162561635616456165561665616756168561695617056171561725617356174561755617656177561785617956180561815618256183561845618556186561875618856189561905619156192561935619456195561965619756198561995620056201562025620356204562055620656207562085620956210562115621256213562145621556216562175621856219562205622156222562235622456225562265622756228562295623056231562325623356234562355623656237562385623956240562415624256243562445624556246562475624856249562505625156252562535625456255562565625756258562595626056261562625626356264562655626656267562685626956270562715627256273562745627556276562775627856279562805628156282562835628456285562865628756288562895629056291562925629356294562955629656297562985629956300563015630256303563045630556306563075630856309563105631156312563135631456315563165631756318563195632056321563225632356324563255632656327563285632956330563315633256333563345633556336563375633856339563405634156342563435634456345563465634756348563495635056351563525635356354563555635656357563585635956360563615636256363563645636556366563675636856369563705637156372563735637456375563765637756378563795638056381563825638356384563855638656387563885638956390563915639256393563945639556396563975639856399564005640156402564035640456405564065640756408564095641056411564125641356414564155641656417564185641956420564215642256423564245642556426564275642856429564305643156432564335643456435564365643756438564395644056441564425644356444564455644656447564485644956450564515645256453564545645556456564575645856459564605646156462564635646456465564665646756468564695647056471564725647356474564755647656477564785647956480564815648256483564845648556486564875648856489564905649156492564935649456495564965649756498564995650056501565025650356504565055650656507565085650956510565115651256513565145651556516565175651856519565205652156522565235652456525565265652756528565295653056531565325653356534565355653656537565385653956540565415654256543565445654556546565475654856549565505655156552565535655456555565565655756558565595656056561565625656356564565655656656567565685656956570565715657256573565745657556576565775657856579565805658156582565835658456585565865658756588565895659056591565925659356594565955659656597565985659956600566015660256603566045660556606566075660856609566105661156612566135661456615566165661756618566195662056621566225662356624566255662656627566285662956630566315663256633566345663556636566375663856639566405664156642566435664456645566465664756648566495665056651566525665356654566555665656657566585665956660566615666256663566645666556666566675666856669566705667156672566735667456675566765667756678566795668056681566825668356684566855668656687566885668956690566915669256693566945669556696566975669856699567005670156702567035670456705567065670756708567095671056711567125671356714567155671656717567185671956720567215672256723567245672556726567275672856729567305673156732567335673456735567365673756738567395674056741567425674356744567455674656747567485674956750567515675256753567545675556756567575675856759567605676156762567635676456765567665676756768567695677056771567725677356774567755677656777567785677956780567815678256783567845678556786567875678856789567905679156792567935679456795567965679756798567995680056801568025680356804568055680656807568085680956810568115681256813568145681556816568175681856819568205682156822568235682456825568265682756828568295683056831568325683356834568355683656837568385683956840568415684256843568445684556846568475684856849568505685156852568535685456855568565685756858568595686056861568625686356864568655686656867568685686956870568715687256873568745687556876568775687856879568805688156882568835688456885568865688756888568895689056891568925689356894568955689656897568985689956900569015690256903569045690556906569075690856909569105691156912569135691456915569165691756918569195692056921569225692356924569255692656927569285692956930569315693256933569345693556936569375693856939569405694156942569435694456945569465694756948569495695056951569525695356954569555695656957569585695956960569615696256963569645696556966569675696856969569705697156972569735697456975569765697756978569795698056981569825698356984569855698656987569885698956990569915699256993569945699556996569975699856999570005700157002570035700457005570065700757008570095701057011570125701357014570155701657017570185701957020570215702257023570245702557026570275702857029570305703157032570335703457035570365703757038570395704057041570425704357044570455704657047570485704957050570515705257053570545705557056570575705857059570605706157062570635706457065570665706757068570695707057071570725707357074570755707657077570785707957080570815708257083570845708557086570875708857089570905709157092570935709457095570965709757098570995710057101571025710357104571055710657107571085710957110571115711257113571145711557116571175711857119571205712157122571235712457125571265712757128571295713057131571325713357134571355713657137571385713957140571415714257143571445714557146571475714857149571505715157152571535715457155571565715757158571595716057161571625716357164571655716657167571685716957170571715717257173571745717557176571775717857179571805718157182571835718457185571865718757188571895719057191571925719357194571955719657197571985719957200572015720257203572045720557206572075720857209572105721157212572135721457215572165721757218572195722057221572225722357224572255722657227572285722957230572315723257233572345723557236572375723857239572405724157242572435724457245572465724757248572495725057251572525725357254572555725657257572585725957260572615726257263572645726557266572675726857269572705727157272572735727457275572765727757278572795728057281572825728357284572855728657287572885728957290572915729257293572945729557296572975729857299573005730157302573035730457305573065730757308573095731057311573125731357314573155731657317573185731957320573215732257323573245732557326573275732857329573305733157332573335733457335573365733757338573395734057341573425734357344573455734657347573485734957350573515735257353573545735557356573575735857359573605736157362573635736457365573665736757368573695737057371573725737357374573755737657377573785737957380573815738257383573845738557386573875738857389573905739157392573935739457395573965739757398573995740057401574025740357404574055740657407574085740957410574115741257413574145741557416574175741857419574205742157422574235742457425574265742757428574295743057431574325743357434574355743657437574385743957440574415744257443574445744557446574475744857449574505745157452574535745457455574565745757458574595746057461574625746357464574655746657467574685746957470574715747257473574745747557476574775747857479574805748157482574835748457485574865748757488574895749057491574925749357494574955749657497574985749957500575015750257503575045750557506575075750857509575105751157512575135751457515575165751757518575195752057521575225752357524575255752657527575285752957530575315753257533575345753557536575375753857539575405754157542575435754457545575465754757548575495755057551575525755357554575555755657557575585755957560575615756257563575645756557566575675756857569575705757157572575735757457575575765757757578575795758057581575825758357584575855758657587575885758957590575915759257593575945759557596575975759857599576005760157602576035760457605576065760757608576095761057611576125761357614576155761657617576185761957620576215762257623576245762557626576275762857629576305763157632576335763457635576365763757638576395764057641576425764357644576455764657647576485764957650576515765257653576545765557656576575765857659576605766157662576635766457665576665766757668576695767057671576725767357674576755767657677576785767957680576815768257683576845768557686576875768857689576905769157692576935769457695576965769757698576995770057701577025770357704577055770657707577085770957710577115771257713577145771557716577175771857719577205772157722577235772457725577265772757728577295773057731577325773357734577355773657737577385773957740577415774257743577445774557746577475774857749577505775157752577535775457755577565775757758577595776057761577625776357764577655776657767577685776957770577715777257773577745777557776577775777857779577805778157782577835778457785577865778757788577895779057791577925779357794577955779657797577985779957800578015780257803578045780557806578075780857809578105781157812578135781457815578165781757818578195782057821578225782357824578255782657827578285782957830578315783257833578345783557836578375783857839578405784157842578435784457845578465784757848578495785057851578525785357854578555785657857578585785957860578615786257863578645786557866578675786857869578705787157872578735787457875578765787757878578795788057881578825788357884578855788657887578885788957890578915789257893578945789557896578975789857899579005790157902579035790457905579065790757908579095791057911579125791357914579155791657917579185791957920579215792257923579245792557926579275792857929579305793157932579335793457935579365793757938579395794057941579425794357944579455794657947579485794957950579515795257953579545795557956579575795857959579605796157962579635796457965579665796757968579695797057971579725797357974579755797657977579785797957980579815798257983579845798557986579875798857989579905799157992579935799457995579965799757998579995800058001580025800358004580055800658007580085800958010580115801258013580145801558016580175801858019580205802158022580235802458025580265802758028580295803058031580325803358034580355803658037580385803958040580415804258043580445804558046580475804858049580505805158052580535805458055580565805758058580595806058061580625806358064580655806658067580685806958070580715807258073580745807558076580775807858079580805808158082580835808458085580865808758088580895809058091580925809358094580955809658097580985809958100581015810258103581045810558106581075810858109581105811158112581135811458115581165811758118581195812058121581225812358124581255812658127581285812958130581315813258133581345813558136581375813858139581405814158142581435814458145581465814758148581495815058151581525815358154581555815658157581585815958160581615816258163581645816558166581675816858169581705817158172581735817458175581765817758178581795818058181581825818358184581855818658187581885818958190581915819258193581945819558196581975819858199582005820158202582035820458205582065820758208582095821058211582125821358214582155821658217582185821958220582215822258223582245822558226582275822858229582305823158232582335823458235582365823758238582395824058241582425824358244582455824658247582485824958250582515825258253582545825558256582575825858259582605826158262582635826458265582665826758268582695827058271582725827358274582755827658277582785827958280582815828258283582845828558286582875828858289582905829158292582935829458295582965829758298582995830058301583025830358304583055830658307583085830958310583115831258313583145831558316583175831858319583205832158322583235832458325583265832758328583295833058331583325833358334583355833658337583385833958340583415834258343583445834558346583475834858349583505835158352583535835458355583565835758358583595836058361583625836358364583655836658367583685836958370583715837258373583745837558376583775837858379583805838158382583835838458385583865838758388583895839058391583925839358394583955839658397583985839958400584015840258403584045840558406584075840858409584105841158412584135841458415584165841758418584195842058421584225842358424584255842658427584285842958430584315843258433584345843558436584375843858439584405844158442584435844458445584465844758448584495845058451584525845358454584555845658457584585845958460584615846258463584645846558466584675846858469584705847158472584735847458475584765847758478584795848058481584825848358484584855848658487584885848958490584915849258493584945849558496584975849858499585005850158502585035850458505585065850758508585095851058511585125851358514585155851658517585185851958520585215852258523585245852558526585275852858529585305853158532585335853458535585365853758538585395854058541585425854358544585455854658547585485854958550585515855258553585545855558556585575855858559585605856158562585635856458565585665856758568585695857058571585725857358574585755857658577585785857958580585815858258583585845858558586585875858858589585905859158592585935859458595585965859758598585995860058601586025860358604586055860658607586085860958610586115861258613586145861558616586175861858619586205862158622586235862458625586265862758628586295863058631586325863358634586355863658637586385863958640586415864258643586445864558646586475864858649586505865158652586535865458655586565865758658586595866058661586625866358664586655866658667586685866958670586715867258673586745867558676586775867858679586805868158682586835868458685586865868758688586895869058691586925869358694586955869658697586985869958700587015870258703587045870558706587075870858709587105871158712587135871458715587165871758718587195872058721587225872358724587255872658727587285872958730587315873258733587345873558736587375873858739587405874158742587435874458745587465874758748587495875058751587525875358754587555875658757587585875958760587615876258763587645876558766587675876858769587705877158772587735877458775587765877758778587795878058781587825878358784587855878658787587885878958790587915879258793587945879558796587975879858799588005880158802588035880458805588065880758808588095881058811588125881358814588155881658817588185881958820588215882258823588245882558826588275882858829588305883158832588335883458835588365883758838588395884058841588425884358844588455884658847588485884958850588515885258853588545885558856588575885858859588605886158862588635886458865588665886758868588695887058871588725887358874588755887658877588785887958880588815888258883588845888558886588875888858889588905889158892588935889458895588965889758898588995890058901589025890358904589055890658907
  1. // Generated by Construct 2, the HTML5 game and app creator :: http://www.scirra.com
  2. var cr = {};
  3. cr.plugins_ = {};
  4. cr.behaviors = {};
  5. // SG.detectPortalUrl();
  6. if (typeof Object.getPrototypeOf !== "function")
  7. {
  8. if (typeof "test".__proto__ === "object")
  9. {
  10. Object.getPrototypeOf = function(object) {
  11. return object.__proto__;
  12. };
  13. }
  14. else
  15. {
  16. Object.getPrototypeOf = function(object) {
  17. return object.constructor.prototype;
  18. };
  19. }
  20. }
  21. (function(){
  22. cr.logexport = function (msg)
  23. {
  24. if (window.console && window.console.log)
  25. window.console.log(msg);
  26. };
  27. cr.seal = function(x)
  28. {
  29. return x;
  30. };
  31. cr.freeze = function(x)
  32. {
  33. return x;
  34. };
  35. cr.is_undefined = function (x)
  36. {
  37. return typeof x === "undefined";
  38. };
  39. cr.is_number = function (x)
  40. {
  41. return typeof x === "number";
  42. };
  43. cr.is_string = function (x)
  44. {
  45. return typeof x === "string";
  46. };
  47. cr.isPOT = function (x)
  48. {
  49. return x > 0 && ((x - 1) & x) === 0;
  50. };
  51. cr.nextHighestPowerOfTwo = function(x) {
  52. --x;
  53. for (var i = 1; i < 32; i <<= 1) {
  54. x = x | x >> i;
  55. }
  56. return x + 1;
  57. }
  58. cr.abs = function (x)
  59. {
  60. return (x < 0 ? -x : x);
  61. };
  62. cr.max = function (a, b)
  63. {
  64. return (a > b ? a : b);
  65. };
  66. cr.min = function (a, b)
  67. {
  68. return (a < b ? a : b);
  69. };
  70. cr.PI = Math.PI;
  71. cr.round = function (x)
  72. {
  73. return (x + 0.5) | 0;
  74. };
  75. cr.floor = function (x)
  76. {
  77. if (x >= 0)
  78. return x | 0;
  79. else
  80. return (x | 0) - 1; // correctly round down when negative
  81. };
  82. cr.ceil = function (x)
  83. {
  84. var f = x | 0;
  85. return (f === x ? f : f + 1);
  86. };
  87. function Vector2(x, y)
  88. {
  89. this.x = x;
  90. this.y = y;
  91. cr.seal(this);
  92. };
  93. Vector2.prototype.offset = function (px, py)
  94. {
  95. this.x += px;
  96. this.y += py;
  97. return this;
  98. };
  99. Vector2.prototype.mul = function (px, py)
  100. {
  101. this.x *= px;
  102. this.y *= py;
  103. return this;
  104. };
  105. cr.vector2 = Vector2;
  106. cr.segments_intersect = function(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y)
  107. {
  108. var max_ax, min_ax, max_ay, min_ay, max_bx, min_bx, max_by, min_by;
  109. if (a1x < a2x)
  110. {
  111. min_ax = a1x;
  112. max_ax = a2x;
  113. }
  114. else
  115. {
  116. min_ax = a2x;
  117. max_ax = a1x;
  118. }
  119. if (b1x < b2x)
  120. {
  121. min_bx = b1x;
  122. max_bx = b2x;
  123. }
  124. else
  125. {
  126. min_bx = b2x;
  127. max_bx = b1x;
  128. }
  129. if (max_ax < min_bx || min_ax > max_bx)
  130. return false;
  131. if (a1y < a2y)
  132. {
  133. min_ay = a1y;
  134. max_ay = a2y;
  135. }
  136. else
  137. {
  138. min_ay = a2y;
  139. max_ay = a1y;
  140. }
  141. if (b1y < b2y)
  142. {
  143. min_by = b1y;
  144. max_by = b2y;
  145. }
  146. else
  147. {
  148. min_by = b2y;
  149. max_by = b1y;
  150. }
  151. if (max_ay < min_by || min_ay > max_by)
  152. return false;
  153. var dpx = b1x - a1x + b2x - a2x;
  154. var dpy = b1y - a1y + b2y - a2y;
  155. var qax = a2x - a1x;
  156. var qay = a2y - a1y;
  157. var qbx = b2x - b1x;
  158. var qby = b2y - b1y;
  159. var d = cr.abs(qay * qbx - qby * qax);
  160. var la = qbx * dpy - qby * dpx;
  161. if (cr.abs(la) > d)
  162. return false;
  163. var lb = qax * dpy - qay * dpx;
  164. return cr.abs(lb) <= d;
  165. };
  166. function Rect(left, top, right, bottom)
  167. {
  168. this.set(left, top, right, bottom);
  169. cr.seal(this);
  170. };
  171. Rect.prototype.set = function (left, top, right, bottom)
  172. {
  173. this.left = left;
  174. this.top = top;
  175. this.right = right;
  176. this.bottom = bottom;
  177. };
  178. Rect.prototype.copy = function (r)
  179. {
  180. this.left = r.left;
  181. this.top = r.top;
  182. this.right = r.right;
  183. this.bottom = r.bottom;
  184. };
  185. Rect.prototype.width = function ()
  186. {
  187. return this.right - this.left;
  188. };
  189. Rect.prototype.height = function ()
  190. {
  191. return this.bottom - this.top;
  192. };
  193. Rect.prototype.offset = function (px, py)
  194. {
  195. this.left += px;
  196. this.top += py;
  197. this.right += px;
  198. this.bottom += py;
  199. return this;
  200. };
  201. Rect.prototype.normalize = function ()
  202. {
  203. var temp = 0;
  204. if (this.left > this.right)
  205. {
  206. temp = this.left;
  207. this.left = this.right;
  208. this.right = temp;
  209. }
  210. if (this.top > this.bottom)
  211. {
  212. temp = this.top;
  213. this.top = this.bottom;
  214. this.bottom = temp;
  215. }
  216. };
  217. Rect.prototype.intersects_rect = function (rc)
  218. {
  219. return !(rc.right < this.left || rc.bottom < this.top || rc.left > this.right || rc.top > this.bottom);
  220. };
  221. Rect.prototype.intersects_rect_off = function (rc, ox, oy)
  222. {
  223. return !(rc.right + ox < this.left || rc.bottom + oy < this.top || rc.left + ox > this.right || rc.top + oy > this.bottom);
  224. };
  225. Rect.prototype.contains_pt = function (x, y)
  226. {
  227. return (x >= this.left && x <= this.right) && (y >= this.top && y <= this.bottom);
  228. };
  229. Rect.prototype.equals = function (r)
  230. {
  231. return this.left === r.left && this.top === r.top && this.right === r.right && this.bottom === r.bottom;
  232. };
  233. cr.rect = Rect;
  234. function Quad()
  235. {
  236. this.tlx = 0;
  237. this.tly = 0;
  238. this.trx = 0;
  239. this.try_ = 0; // is a keyword otherwise!
  240. this.brx = 0;
  241. this.bry = 0;
  242. this.blx = 0;
  243. this.bly = 0;
  244. cr.seal(this);
  245. };
  246. Quad.prototype.set_from_rect = function (rc)
  247. {
  248. this.tlx = rc.left;
  249. this.tly = rc.top;
  250. this.trx = rc.right;
  251. this.try_ = rc.top;
  252. this.brx = rc.right;
  253. this.bry = rc.bottom;
  254. this.blx = rc.left;
  255. this.bly = rc.bottom;
  256. };
  257. Quad.prototype.set_from_rotated_rect = function (rc, a)
  258. {
  259. if (a === 0)
  260. {
  261. this.set_from_rect(rc);
  262. }
  263. else
  264. {
  265. var sin_a = Math.sin(a);
  266. var cos_a = Math.cos(a);
  267. var left_sin_a = rc.left * sin_a;
  268. var top_sin_a = rc.top * sin_a;
  269. var right_sin_a = rc.right * sin_a;
  270. var bottom_sin_a = rc.bottom * sin_a;
  271. var left_cos_a = rc.left * cos_a;
  272. var top_cos_a = rc.top * cos_a;
  273. var right_cos_a = rc.right * cos_a;
  274. var bottom_cos_a = rc.bottom * cos_a;
  275. this.tlx = left_cos_a - top_sin_a;
  276. this.tly = top_cos_a + left_sin_a;
  277. this.trx = right_cos_a - top_sin_a;
  278. this.try_ = top_cos_a + right_sin_a;
  279. this.brx = right_cos_a - bottom_sin_a;
  280. this.bry = bottom_cos_a + right_sin_a;
  281. this.blx = left_cos_a - bottom_sin_a;
  282. this.bly = bottom_cos_a + left_sin_a;
  283. }
  284. };
  285. Quad.prototype.offset = function (px, py)
  286. {
  287. this.tlx += px;
  288. this.tly += py;
  289. this.trx += px;
  290. this.try_ += py;
  291. this.brx += px;
  292. this.bry += py;
  293. this.blx += px;
  294. this.bly += py;
  295. return this;
  296. };
  297. var minresult = 0;
  298. var maxresult = 0;
  299. function minmax4(a, b, c, d)
  300. {
  301. if (a < b)
  302. {
  303. if (c < d)
  304. {
  305. if (a < c)
  306. minresult = a;
  307. else
  308. minresult = c;
  309. if (b > d)
  310. maxresult = b;
  311. else
  312. maxresult = d;
  313. }
  314. else
  315. {
  316. if (a < d)
  317. minresult = a;
  318. else
  319. minresult = d;
  320. if (b > c)
  321. maxresult = b;
  322. else
  323. maxresult = c;
  324. }
  325. }
  326. else
  327. {
  328. if (c < d)
  329. {
  330. if (b < c)
  331. minresult = b;
  332. else
  333. minresult = c;
  334. if (a > d)
  335. maxresult = a;
  336. else
  337. maxresult = d;
  338. }
  339. else
  340. {
  341. if (b < d)
  342. minresult = b;
  343. else
  344. minresult = d;
  345. if (a > c)
  346. maxresult = a;
  347. else
  348. maxresult = c;
  349. }
  350. }
  351. };
  352. Quad.prototype.bounding_box = function (rc)
  353. {
  354. minmax4(this.tlx, this.trx, this.brx, this.blx);
  355. rc.left = minresult;
  356. rc.right = maxresult;
  357. minmax4(this.tly, this.try_, this.bry, this.bly);
  358. rc.top = minresult;
  359. rc.bottom = maxresult;
  360. };
  361. Quad.prototype.contains_pt = function (x, y)
  362. {
  363. var v0x = this.trx - this.tlx;
  364. var v0y = this.try_ - this.tly;
  365. var v1x = this.brx - this.tlx;
  366. var v1y = this.bry - this.tly;
  367. var v2x = x - this.tlx;
  368. var v2y = y - this.tly;
  369. var dot00 = v0x * v0x + v0y * v0y
  370. var dot01 = v0x * v1x + v0y * v1y
  371. var dot02 = v0x * v2x + v0y * v2y
  372. var dot11 = v1x * v1x + v1y * v1y
  373. var dot12 = v1x * v2x + v1y * v2y
  374. var invDenom = 1.0 / (dot00 * dot11 - dot01 * dot01);
  375. var u = (dot11 * dot02 - dot01 * dot12) * invDenom;
  376. var v = (dot00 * dot12 - dot01 * dot02) * invDenom;
  377. if ((u >= 0.0) && (v > 0.0) && (u + v < 1))
  378. return true;
  379. v0x = this.blx - this.tlx;
  380. v0y = this.bly - this.tly;
  381. var dot00 = v0x * v0x + v0y * v0y
  382. var dot01 = v0x * v1x + v0y * v1y
  383. var dot02 = v0x * v2x + v0y * v2y
  384. invDenom = 1.0 / (dot00 * dot11 - dot01 * dot01);
  385. u = (dot11 * dot02 - dot01 * dot12) * invDenom;
  386. v = (dot00 * dot12 - dot01 * dot02) * invDenom;
  387. return (u >= 0.0) && (v > 0.0) && (u + v < 1);
  388. };
  389. Quad.prototype.at = function (i, xory)
  390. {
  391. if (xory)
  392. {
  393. switch (i)
  394. {
  395. case 0: return this.tlx;
  396. case 1: return this.trx;
  397. case 2: return this.brx;
  398. case 3: return this.blx;
  399. case 4: return this.tlx;
  400. default: return this.tlx;
  401. }
  402. }
  403. else
  404. {
  405. switch (i)
  406. {
  407. case 0: return this.tly;
  408. case 1: return this.try_;
  409. case 2: return this.bry;
  410. case 3: return this.bly;
  411. case 4: return this.tly;
  412. default: return this.tly;
  413. }
  414. }
  415. };
  416. Quad.prototype.midX = function ()
  417. {
  418. return (this.tlx + this.trx + this.brx + this.blx) / 4;
  419. };
  420. Quad.prototype.midY = function ()
  421. {
  422. return (this.tly + this.try_ + this.bry + this.bly) / 4;
  423. };
  424. Quad.prototype.intersects_segment = function (x1, y1, x2, y2)
  425. {
  426. if (this.contains_pt(x1, y1) || this.contains_pt(x2, y2))
  427. return true;
  428. var a1x, a1y, a2x, a2y;
  429. var i;
  430. for (i = 0; i < 4; i++)
  431. {
  432. a1x = this.at(i, true);
  433. a1y = this.at(i, false);
  434. a2x = this.at(i + 1, true);
  435. a2y = this.at(i + 1, false);
  436. if (cr.segments_intersect(x1, y1, x2, y2, a1x, a1y, a2x, a2y))
  437. return true;
  438. }
  439. return false;
  440. };
  441. Quad.prototype.intersects_quad = function (rhs)
  442. {
  443. var midx = rhs.midX();
  444. var midy = rhs.midY();
  445. if (this.contains_pt(midx, midy))
  446. return true;
  447. midx = this.midX();
  448. midy = this.midY();
  449. if (rhs.contains_pt(midx, midy))
  450. return true;
  451. var a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y;
  452. var i, j;
  453. for (i = 0; i < 4; i++)
  454. {
  455. for (j = 0; j < 4; j++)
  456. {
  457. a1x = this.at(i, true);
  458. a1y = this.at(i, false);
  459. a2x = this.at(i + 1, true);
  460. a2y = this.at(i + 1, false);
  461. b1x = rhs.at(j, true);
  462. b1y = rhs.at(j, false);
  463. b2x = rhs.at(j + 1, true);
  464. b2y = rhs.at(j + 1, false);
  465. if (cr.segments_intersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y))
  466. return true;
  467. }
  468. }
  469. return false;
  470. };
  471. cr.quad = Quad;
  472. cr.RGB = function (red, green, blue)
  473. {
  474. return Math.max(Math.min(red, 255), 0)
  475. | (Math.max(Math.min(green, 255), 0) << 8)
  476. | (Math.max(Math.min(blue, 255), 0) << 16);
  477. };
  478. cr.GetRValue = function (rgb)
  479. {
  480. return rgb & 0xFF;
  481. };
  482. cr.GetGValue = function (rgb)
  483. {
  484. return (rgb & 0xFF00) >> 8;
  485. };
  486. cr.GetBValue = function (rgb)
  487. {
  488. return (rgb & 0xFF0000) >> 16;
  489. };
  490. cr.shallowCopy = function (a, b, allowOverwrite)
  491. {
  492. var attr;
  493. for (attr in b)
  494. {
  495. if (b.hasOwnProperty(attr))
  496. {
  497. ;
  498. a[attr] = b[attr];
  499. }
  500. }
  501. return a;
  502. };
  503. cr.arrayRemove = function (arr, index)
  504. {
  505. var i, len;
  506. index = cr.floor(index);
  507. if (index < 0 || index >= arr.length)
  508. return; // index out of bounds
  509. if (index === 0) // removing first item
  510. arr.shift();
  511. else if (index === arr.length - 1) // removing last item
  512. arr.pop();
  513. else
  514. {
  515. for (i = index, len = arr.length - 1; i < len; i++)
  516. arr[i] = arr[i + 1];
  517. arr.length = len;
  518. }
  519. };
  520. cr.shallowAssignArray = function (dest, src)
  521. {
  522. dest.length = src.length;
  523. var i, len;
  524. for (i = 0, len = src.length; i < len; i++)
  525. dest[i] = src[i];
  526. };
  527. cr.appendArray = function (a, b)
  528. {
  529. a.push.apply(a, b);
  530. };
  531. cr.arrayFindRemove = function (arr, item)
  532. {
  533. var index = arr.indexOf(item);
  534. if (index !== -1)
  535. cr.arrayRemove(arr, index);
  536. };
  537. cr.clamp = function(x, a, b)
  538. {
  539. if (x < a)
  540. return a;
  541. else if (x > b)
  542. return b;
  543. else
  544. return x;
  545. };
  546. cr.to_radians = function(x)
  547. {
  548. return x / (180.0 / cr.PI);
  549. };
  550. cr.to_degrees = function(x)
  551. {
  552. return x * (180.0 / cr.PI);
  553. };
  554. cr.clamp_angle_degrees = function (a)
  555. {
  556. a %= 360; // now in (-360, 360) range
  557. if (a < 0)
  558. a += 360; // now in [0, 360) range
  559. return a;
  560. };
  561. cr.clamp_angle = function (a)
  562. {
  563. a %= 2 * cr.PI; // now in (-2pi, 2pi) range
  564. if (a < 0)
  565. a += 2 * cr.PI; // now in [0, 2pi) range
  566. return a;
  567. };
  568. cr.to_clamped_degrees = function (x)
  569. {
  570. return cr.clamp_angle_degrees(cr.to_degrees(x));
  571. };
  572. cr.to_clamped_radians = function (x)
  573. {
  574. return cr.clamp_angle(cr.to_radians(x));
  575. };
  576. cr.angleTo = function(x1, y1, x2, y2)
  577. {
  578. var dx = x2 - x1;
  579. var dy = y2 - y1;
  580. return Math.atan2(dy, dx);
  581. };
  582. cr.angleDiff = function (a1, a2)
  583. {
  584. if (a1 === a2)
  585. return 0;
  586. var s1 = Math.sin(a1);
  587. var c1 = Math.cos(a1);
  588. var s2 = Math.sin(a2);
  589. var c2 = Math.cos(a2);
  590. var n = s1 * s2 + c1 * c2;
  591. if (n >= 1)
  592. return 0;
  593. if (n <= -1)
  594. return cr.PI;
  595. return Math.acos(n);
  596. };
  597. cr.angleRotate = function (start, end, step)
  598. {
  599. var ss = Math.sin(start);
  600. var cs = Math.cos(start);
  601. var se = Math.sin(end);
  602. var ce = Math.cos(end);
  603. if (Math.acos(ss * se + cs * ce) > step)
  604. {
  605. if (cs * se - ss * ce > 0)
  606. return cr.clamp_angle(start + step);
  607. else
  608. return cr.clamp_angle(start - step);
  609. }
  610. else
  611. return cr.clamp_angle(end);
  612. };
  613. cr.angleClockwise = function (a1, a2)
  614. {
  615. var s1 = Math.sin(a1);
  616. var c1 = Math.cos(a1);
  617. var s2 = Math.sin(a2);
  618. var c2 = Math.cos(a2);
  619. return c1 * s2 - s1 * c2 <= 0;
  620. };
  621. cr.rotatePtAround = function (px, py, a, ox, oy, getx)
  622. {
  623. if (a === 0)
  624. return getx ? px : py;
  625. var sin_a = Math.sin(a);
  626. var cos_a = Math.cos(a);
  627. px -= ox;
  628. py -= oy;
  629. var left_sin_a = px * sin_a;
  630. var top_sin_a = py * sin_a;
  631. var left_cos_a = px * cos_a;
  632. var top_cos_a = py * cos_a;
  633. px = left_cos_a - top_sin_a;
  634. py = top_cos_a + left_sin_a;
  635. px += ox;
  636. py += oy;
  637. return getx ? px : py;
  638. }
  639. cr.distanceTo = function(x1, y1, x2, y2)
  640. {
  641. var dx = x2 - x1;
  642. var dy = y2 - y1;
  643. return Math.sqrt(dx*dx + dy*dy);
  644. };
  645. cr.xor = function (x, y)
  646. {
  647. return !x !== !y;
  648. };
  649. cr.lerp = function (a, b, x)
  650. {
  651. return a + (b - a) * x;
  652. };
  653. cr.hasAnyOwnProperty = function (o)
  654. {
  655. var p;
  656. for (p in o)
  657. {
  658. if (o.hasOwnProperty(p))
  659. return true;
  660. }
  661. return false;
  662. };
  663. cr.wipe = function (obj)
  664. {
  665. var p;
  666. for (p in obj)
  667. {
  668. if (obj.hasOwnProperty(p))
  669. delete obj[p];
  670. }
  671. };
  672. var startup_time = +(new Date());
  673. cr.performance_now = function()
  674. {
  675. if (typeof window["performance"] !== "undefined")
  676. {
  677. var winperf = window["performance"];
  678. if (typeof winperf.now !== "undefined")
  679. return winperf.now();
  680. else if (typeof winperf["webkitNow"] !== "undefined")
  681. return winperf["webkitNow"]();
  682. else if (typeof winperf["mozNow"] !== "undefined")
  683. return winperf["mozNow"]();
  684. else if (typeof winperf["msNow"] !== "undefined")
  685. return winperf["msNow"]();
  686. }
  687. return Date.now() - startup_time;
  688. };
  689. var supports_set = (typeof Set !== "undefined" && typeof Set.prototype["forEach"] !== "undefined");
  690. function ObjectSet_()
  691. {
  692. this.s = null;
  693. this.items = null;
  694. this.item_count = 0;
  695. if (supports_set)
  696. {
  697. this.s = new Set();
  698. }
  699. else
  700. {
  701. this.items = {};
  702. }
  703. this.values_cache = [];
  704. this.cache_valid = true;
  705. cr.seal(this);
  706. };
  707. ObjectSet_.prototype.contains = function (x)
  708. {
  709. if (supports_set)
  710. return this.s["has"](x);
  711. else
  712. return this.items.hasOwnProperty(x.toString());
  713. };
  714. ObjectSet_.prototype.add = function (x)
  715. {
  716. if (supports_set)
  717. {
  718. if (!this.s["has"](x))
  719. {
  720. this.s["add"](x);
  721. this.cache_valid = false;
  722. }
  723. }
  724. else
  725. {
  726. var str = x.toString();
  727. if (!this.items.hasOwnProperty(str))
  728. {
  729. this.items[str] = x;
  730. this.item_count++;
  731. this.cache_valid = false;
  732. }
  733. }
  734. return this;
  735. };
  736. ObjectSet_.prototype.remove = function (x)
  737. {
  738. if (supports_set)
  739. {
  740. if (this.s["has"](x))
  741. {
  742. this.s["delete"](x);
  743. this.cache_valid = false;
  744. }
  745. }
  746. else
  747. {
  748. var str = x.toString();
  749. if (this.items.hasOwnProperty(str))
  750. {
  751. delete this.items[str];
  752. this.item_count--;
  753. this.cache_valid = false;
  754. }
  755. }
  756. return this;
  757. };
  758. ObjectSet_.prototype.clear = function ()
  759. {
  760. if (supports_set)
  761. {
  762. this.s["clear"]();
  763. }
  764. else
  765. {
  766. this.items = {};
  767. this.item_count = 0;
  768. }
  769. this.values_cache.length = 0;
  770. this.cache_valid = true;
  771. return this;
  772. };
  773. ObjectSet_.prototype.isEmpty = function ()
  774. {
  775. if (supports_set)
  776. return this.s["size"] === 0;
  777. else
  778. return this.item_count === 0;
  779. };
  780. ObjectSet_.prototype.count = function ()
  781. {
  782. if (supports_set)
  783. return this.s["size"];
  784. else
  785. return this.item_count;
  786. };
  787. var current_arr = null;
  788. var current_index = 0;
  789. function set_append_to_arr(x)
  790. {
  791. current_arr[current_index++] = x;
  792. };
  793. ObjectSet_.prototype.update_cache = function ()
  794. {
  795. if (this.cache_valid)
  796. return;
  797. if (supports_set)
  798. {
  799. this.values_cache.length = this.s["size"];
  800. current_arr = this.values_cache;
  801. current_index = 0;
  802. this.s["forEach"](set_append_to_arr);
  803. ;
  804. current_arr = null;
  805. current_index = 0;
  806. }
  807. else
  808. {
  809. this.values_cache.length = this.item_count;
  810. var p, n = 0;
  811. for (p in this.items)
  812. {
  813. if (this.items.hasOwnProperty(p))
  814. this.values_cache[n++] = this.items[p];
  815. }
  816. ;
  817. }
  818. this.cache_valid = true;
  819. };
  820. ObjectSet_.prototype.values = function ()
  821. {
  822. this.update_cache();
  823. return this.values_cache.slice(0);
  824. };
  825. ObjectSet_.prototype.valuesRef = function ()
  826. {
  827. this.update_cache();
  828. return this.values_cache;
  829. };
  830. cr.ObjectSet = ObjectSet_;
  831. function KahanAdder_()
  832. {
  833. this.c = 0;
  834. this.y = 0;
  835. this.t = 0;
  836. this.sum = 0;
  837. cr.seal(this);
  838. };
  839. KahanAdder_.prototype.add = function (v)
  840. {
  841. this.y = v - this.c;
  842. this.t = this.sum + this.y;
  843. this.c = (this.t - this.sum) - this.y;
  844. this.sum = this.t;
  845. };
  846. KahanAdder_.prototype.reset = function ()
  847. {
  848. this.c = 0;
  849. this.y = 0;
  850. this.t = 0;
  851. this.sum = 0;
  852. };
  853. cr.KahanAdder = KahanAdder_;
  854. cr.regexp_escape = function(text)
  855. {
  856. return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
  857. };
  858. function CollisionPoly_(pts_array_)
  859. {
  860. this.pts_cache = [];
  861. this.bboxLeft = 0;
  862. this.bboxTop = 0;
  863. this.bboxRight = 0;
  864. this.bboxBottom = 0;
  865. this.convexpolys = null; // for physics behavior to cache separated polys
  866. this.set_pts(pts_array_);
  867. cr.seal(this);
  868. };
  869. CollisionPoly_.prototype.set_pts = function(pts_array_)
  870. {
  871. this.pts_array = pts_array_;
  872. this.pts_count = pts_array_.length / 2; // x, y, x, y... in array
  873. this.pts_cache.length = pts_array_.length;
  874. this.cache_width = -1;
  875. this.cache_height = -1;
  876. this.cache_angle = 0;
  877. };
  878. CollisionPoly_.prototype.is_empty = function()
  879. {
  880. return !this.pts_array.length;
  881. };
  882. CollisionPoly_.prototype.update_bbox = function ()
  883. {
  884. var myptscache = this.pts_cache;
  885. var bboxLeft_ = myptscache[0];
  886. var bboxRight_ = bboxLeft_;
  887. var bboxTop_ = myptscache[1];
  888. var bboxBottom_ = bboxTop_;
  889. var x, y, i = 1, i2, len = this.pts_count;
  890. for ( ; i < len; ++i)
  891. {
  892. i2 = i*2;
  893. x = myptscache[i2];
  894. y = myptscache[i2+1];
  895. if (x < bboxLeft_)
  896. bboxLeft_ = x;
  897. if (x > bboxRight_)
  898. bboxRight_ = x;
  899. if (y < bboxTop_)
  900. bboxTop_ = y;
  901. if (y > bboxBottom_)
  902. bboxBottom_ = y;
  903. }
  904. this.bboxLeft = bboxLeft_;
  905. this.bboxRight = bboxRight_;
  906. this.bboxTop = bboxTop_;
  907. this.bboxBottom = bboxBottom_;
  908. };
  909. CollisionPoly_.prototype.set_from_rect = function(rc, offx, offy)
  910. {
  911. this.pts_cache.length = 8;
  912. this.pts_count = 4;
  913. var myptscache = this.pts_cache;
  914. myptscache[0] = rc.left - offx;
  915. myptscache[1] = rc.top - offy;
  916. myptscache[2] = rc.right - offx;
  917. myptscache[3] = rc.top - offy;
  918. myptscache[4] = rc.right - offx;
  919. myptscache[5] = rc.bottom - offy;
  920. myptscache[6] = rc.left - offx;
  921. myptscache[7] = rc.bottom - offy;
  922. this.cache_width = rc.right - rc.left;
  923. this.cache_height = rc.bottom - rc.top;
  924. this.update_bbox();
  925. };
  926. CollisionPoly_.prototype.set_from_quad = function(q, offx, offy, w, h)
  927. {
  928. this.pts_cache.length = 8;
  929. this.pts_count = 4;
  930. var myptscache = this.pts_cache;
  931. myptscache[0] = q.tlx - offx;
  932. myptscache[1] = q.tly - offy;
  933. myptscache[2] = q.trx - offx;
  934. myptscache[3] = q.try_ - offy;
  935. myptscache[4] = q.brx - offx;
  936. myptscache[5] = q.bry - offy;
  937. myptscache[6] = q.blx - offx;
  938. myptscache[7] = q.bly - offy;
  939. this.cache_width = w;
  940. this.cache_height = h;
  941. this.update_bbox();
  942. };
  943. CollisionPoly_.prototype.set_from_poly = function (r)
  944. {
  945. this.pts_count = r.pts_count;
  946. cr.shallowAssignArray(this.pts_cache, r.pts_cache);
  947. this.bboxLeft = r.bboxLeft;
  948. this.bboxTop - r.bboxTop;
  949. this.bboxRight = r.bboxRight;
  950. this.bboxBottom = r.bboxBottom;
  951. };
  952. CollisionPoly_.prototype.cache_poly = function(w, h, a)
  953. {
  954. if (this.cache_width === w && this.cache_height === h && this.cache_angle === a)
  955. return; // cache up-to-date
  956. this.cache_width = w;
  957. this.cache_height = h;
  958. this.cache_angle = a;
  959. var i, i2, i21, len, x, y;
  960. var sina = 0;
  961. var cosa = 1;
  962. var myptsarray = this.pts_array;
  963. var myptscache = this.pts_cache;
  964. if (a !== 0)
  965. {
  966. sina = Math.sin(a);
  967. cosa = Math.cos(a);
  968. }
  969. for (i = 0, len = this.pts_count; i < len; i++)
  970. {
  971. i2 = i*2;
  972. i21 = i2+1;
  973. x = myptsarray[i2] * w;
  974. y = myptsarray[i21] * h;
  975. myptscache[i2] = (x * cosa) - (y * sina);
  976. myptscache[i21] = (y * cosa) + (x * sina);
  977. }
  978. this.update_bbox();
  979. };
  980. CollisionPoly_.prototype.contains_pt = function (a2x, a2y)
  981. {
  982. var myptscache = this.pts_cache;
  983. if (a2x === myptscache[0] && a2y === myptscache[1])
  984. return true;
  985. var i, i2, imod, len = this.pts_count;
  986. var a1x = this.bboxLeft - 110;
  987. var a1y = this.bboxTop - 101;
  988. var a3x = this.bboxRight + 131
  989. var a3y = this.bboxBottom + 120;
  990. var b1x, b1y, b2x, b2y;
  991. var count1 = 0, count2 = 0;
  992. for (i = 0; i < len; i++)
  993. {
  994. i2 = i*2;
  995. imod = ((i+1)%len)*2;
  996. b1x = myptscache[i2];
  997. b1y = myptscache[i2+1];
  998. b2x = myptscache[imod];
  999. b2y = myptscache[imod+1];
  1000. if (cr.segments_intersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y))
  1001. count1++;
  1002. if (cr.segments_intersect(a3x, a3y, a2x, a2y, b1x, b1y, b2x, b2y))
  1003. count2++;
  1004. }
  1005. return (count1 % 2 === 1) || (count2 % 2 === 1);
  1006. };
  1007. CollisionPoly_.prototype.intersects_poly = function (rhs, offx, offy)
  1008. {
  1009. var rhspts = rhs.pts_cache;
  1010. var mypts = this.pts_cache;
  1011. if (this.contains_pt(rhspts[0] + offx, rhspts[1] + offy))
  1012. return true;
  1013. if (rhs.contains_pt(mypts[0] - offx, mypts[1] - offy))
  1014. return true;
  1015. var i, i2, imod, leni, j, j2, jmod, lenj;
  1016. var a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y;
  1017. for (i = 0, leni = this.pts_count; i < leni; i++)
  1018. {
  1019. i2 = i*2;
  1020. imod = ((i+1)%leni)*2;
  1021. a1x = mypts[i2];
  1022. a1y = mypts[i2+1];
  1023. a2x = mypts[imod];
  1024. a2y = mypts[imod+1];
  1025. for (j = 0, lenj = rhs.pts_count; j < lenj; j++)
  1026. {
  1027. j2 = j*2;
  1028. jmod = ((j+1)%lenj)*2;
  1029. b1x = rhspts[j2] + offx;
  1030. b1y = rhspts[j2+1] + offy;
  1031. b2x = rhspts[jmod] + offx;
  1032. b2y = rhspts[jmod+1] + offy;
  1033. if (cr.segments_intersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y))
  1034. return true;
  1035. }
  1036. }
  1037. return false;
  1038. };
  1039. CollisionPoly_.prototype.intersects_segment = function (offx, offy, x1, y1, x2, y2)
  1040. {
  1041. var mypts = this.pts_cache;
  1042. if (this.contains_pt(x1 - offx, y1 - offy))
  1043. return true;
  1044. var i, leni, i2, imod;
  1045. var a1x, a1y, a2x, a2y;
  1046. for (i = 0, leni = this.pts_count; i < leni; i++)
  1047. {
  1048. i2 = i*2;
  1049. imod = ((i+1)%leni)*2;
  1050. a1x = mypts[i2] + offx;
  1051. a1y = mypts[i2+1] + offy;
  1052. a2x = mypts[imod] + offx;
  1053. a2y = mypts[imod+1] + offy;
  1054. if (cr.segments_intersect(x1, y1, x2, y2, a1x, a1y, a2x, a2y))
  1055. return true;
  1056. }
  1057. return false;
  1058. };
  1059. CollisionPoly_.prototype.mirror = function (px)
  1060. {
  1061. var i, leni, i2;
  1062. for (i = 0, leni = this.pts_count; i < leni; ++i)
  1063. {
  1064. i2 = i*2;
  1065. this.pts_cache[i2] = px * 2 - this.pts_cache[i2];
  1066. }
  1067. };
  1068. CollisionPoly_.prototype.flip = function (py)
  1069. {
  1070. var i, leni, i21;
  1071. for (i = 0, leni = this.pts_count; i < leni; ++i)
  1072. {
  1073. i21 = i*2+1;
  1074. this.pts_cache[i21] = py * 2 - this.pts_cache[i21];
  1075. }
  1076. };
  1077. CollisionPoly_.prototype.diag = function ()
  1078. {
  1079. var i, leni, i2, i21, temp;
  1080. for (i = 0, leni = this.pts_count; i < leni; ++i)
  1081. {
  1082. i2 = i*2;
  1083. i21 = i2+1;
  1084. temp = this.pts_cache[i2];
  1085. this.pts_cache[i2] = this.pts_cache[i21];
  1086. this.pts_cache[i21] = temp;
  1087. }
  1088. };
  1089. cr.CollisionPoly = CollisionPoly_;
  1090. function SparseGrid_(cellwidth_, cellheight_)
  1091. {
  1092. this.cellwidth = cellwidth_;
  1093. this.cellheight = cellheight_;
  1094. this.cells = {};
  1095. };
  1096. SparseGrid_.prototype.totalCellCount = 0;
  1097. SparseGrid_.prototype.getCell = function (x_, y_, create_if_missing)
  1098. {
  1099. var ret;
  1100. var col = this.cells[x_];
  1101. if (!col)
  1102. {
  1103. if (create_if_missing)
  1104. {
  1105. ret = allocGridCell(this, x_, y_);
  1106. this.cells[x_] = {};
  1107. this.cells[x_][y_] = ret;
  1108. return ret;
  1109. }
  1110. else
  1111. return null;
  1112. }
  1113. ret = col[y_];
  1114. if (ret)
  1115. return ret;
  1116. else if (create_if_missing)
  1117. {
  1118. ret = allocGridCell(this, x_, y_);
  1119. this.cells[x_][y_] = ret;
  1120. return ret;
  1121. }
  1122. else
  1123. return null;
  1124. };
  1125. SparseGrid_.prototype.XToCell = function (x_)
  1126. {
  1127. return cr.floor(x_ / this.cellwidth);
  1128. };
  1129. SparseGrid_.prototype.YToCell = function (y_)
  1130. {
  1131. return cr.floor(y_ / this.cellheight);
  1132. };
  1133. SparseGrid_.prototype.update = function (inst, oldrange, newrange)
  1134. {
  1135. var x, lenx, y, leny, cell;
  1136. if (oldrange)
  1137. {
  1138. for (x = oldrange.left, lenx = oldrange.right; x <= lenx; ++x)
  1139. {
  1140. for (y = oldrange.top, leny = oldrange.bottom; y <= leny; ++y)
  1141. {
  1142. if (newrange && newrange.contains_pt(x, y))
  1143. continue; // is still in this cell
  1144. cell = this.getCell(x, y, false); // don't create if missing
  1145. if (!cell)
  1146. continue; // cell does not exist yet
  1147. cell.remove(inst);
  1148. if (cell.isEmpty())
  1149. {
  1150. freeGridCell(cell);
  1151. this.cells[x][y] = null;
  1152. }
  1153. }
  1154. }
  1155. }
  1156. if (newrange)
  1157. {
  1158. for (x = newrange.left, lenx = newrange.right; x <= lenx; ++x)
  1159. {
  1160. for (y = newrange.top, leny = newrange.bottom; y <= leny; ++y)
  1161. {
  1162. if (oldrange && oldrange.contains_pt(x, y))
  1163. continue; // is still in this cell
  1164. this.getCell(x, y, true).insert(inst);
  1165. }
  1166. }
  1167. }
  1168. };
  1169. SparseGrid_.prototype.queryRange = function (rc, result)
  1170. {
  1171. var x, lenx, ystart, y, leny, cell;
  1172. x = this.XToCell(rc.left);
  1173. ystart = this.YToCell(rc.top);
  1174. lenx = this.XToCell(rc.right);
  1175. leny = this.YToCell(rc.bottom);
  1176. for ( ; x <= lenx; ++x)
  1177. {
  1178. for (y = ystart; y <= leny; ++y)
  1179. {
  1180. cell = this.getCell(x, y, false);
  1181. if (!cell)
  1182. continue;
  1183. cell.dump(result);
  1184. }
  1185. }
  1186. };
  1187. cr.SparseGrid = SparseGrid_;
  1188. var gridcellcache = [];
  1189. function allocGridCell(grid_, x_, y_)
  1190. {
  1191. var ret;
  1192. SparseGrid_.prototype.totalCellCount++;
  1193. if (gridcellcache.length)
  1194. {
  1195. ret = gridcellcache.pop();
  1196. ret.grid = grid_;
  1197. ret.x = x_;
  1198. ret.y = y_;
  1199. return ret;
  1200. }
  1201. else
  1202. return new cr.GridCell(grid_, x_, y_);
  1203. };
  1204. function freeGridCell(c)
  1205. {
  1206. SparseGrid_.prototype.totalCellCount--;
  1207. c.objects.clear();
  1208. if (gridcellcache.length < 1000)
  1209. gridcellcache.push(c);
  1210. };
  1211. function GridCell_(grid_, x_, y_)
  1212. {
  1213. this.grid = grid_;
  1214. this.x = x_;
  1215. this.y = y_;
  1216. this.objects = new cr.ObjectSet();
  1217. };
  1218. GridCell_.prototype.isEmpty = function ()
  1219. {
  1220. return this.objects.isEmpty();
  1221. };
  1222. GridCell_.prototype.insert = function (inst)
  1223. {
  1224. this.objects.add(inst);
  1225. };
  1226. GridCell_.prototype.remove = function (inst)
  1227. {
  1228. this.objects.remove(inst);
  1229. };
  1230. GridCell_.prototype.dump = function (result)
  1231. {
  1232. cr.appendArray(result, this.objects.valuesRef());
  1233. };
  1234. cr.GridCell = GridCell_;
  1235. var fxNames = [ "lighter",
  1236. "xor",
  1237. "copy",
  1238. "destination-over",
  1239. "source-in",
  1240. "destination-in",
  1241. "source-out",
  1242. "destination-out",
  1243. "source-atop",
  1244. "destination-atop"];
  1245. cr.effectToCompositeOp = function(effect)
  1246. {
  1247. if (effect <= 0 || effect >= 11)
  1248. return "source-over";
  1249. return fxNames[effect - 1]; // not including "none" so offset by 1
  1250. };
  1251. cr.setGLBlend = function(this_, effect, gl)
  1252. {
  1253. if (!gl)
  1254. return;
  1255. this_.srcBlend = gl.ONE;
  1256. this_.destBlend = gl.ONE_MINUS_SRC_ALPHA;
  1257. switch (effect) {
  1258. case 1: // lighter (additive)
  1259. this_.srcBlend = gl.ONE;
  1260. this_.destBlend = gl.ONE;
  1261. break;
  1262. case 2: // xor
  1263. break; // todo
  1264. case 3: // copy
  1265. this_.srcBlend = gl.ONE;
  1266. this_.destBlend = gl.ZERO;
  1267. break;
  1268. case 4: // destination-over
  1269. this_.srcBlend = gl.ONE_MINUS_DST_ALPHA;
  1270. this_.destBlend = gl.ONE;
  1271. break;
  1272. case 5: // source-in
  1273. this_.srcBlend = gl.DST_ALPHA;
  1274. this_.destBlend = gl.ZERO;
  1275. break;
  1276. case 6: // destination-in
  1277. this_.srcBlend = gl.ZERO;
  1278. this_.destBlend = gl.SRC_ALPHA;
  1279. break;
  1280. case 7: // source-out
  1281. this_.srcBlend = gl.ONE_MINUS_DST_ALPHA;
  1282. this_.destBlend = gl.ZERO;
  1283. break;
  1284. case 8: // destination-out
  1285. this_.srcBlend = gl.ZERO;
  1286. this_.destBlend = gl.ONE_MINUS_SRC_ALPHA;
  1287. break;
  1288. case 9: // source-atop
  1289. this_.srcBlend = gl.DST_ALPHA;
  1290. this_.destBlend = gl.ONE_MINUS_SRC_ALPHA;
  1291. break;
  1292. case 10: // destination-atop
  1293. this_.srcBlend = gl.ONE_MINUS_DST_ALPHA;
  1294. this_.destBlend = gl.SRC_ALPHA;
  1295. break;
  1296. }
  1297. };
  1298. cr.round6dp = function (x)
  1299. {
  1300. return cr.round(x * 1000000) / 1000000;
  1301. };
  1302. /*
  1303. var localeCompare_options = {
  1304. "usage": "search",
  1305. "sensitivity": "accent"
  1306. };
  1307. var has_localeCompare = !!"a".localeCompare;
  1308. var localeCompare_works1 = (has_localeCompare && "a".localeCompare("A", undefined, localeCompare_options) === 0);
  1309. var localeCompare_works2 = (has_localeCompare && "a".localeCompare("á", undefined, localeCompare_options) !== 0);
  1310. var supports_localeCompare = (has_localeCompare && localeCompare_works1 && localeCompare_works2);
  1311. */
  1312. cr.equals_nocase = function (a, b)
  1313. {
  1314. if (typeof a !== "string" || typeof b !== "string")
  1315. return false;
  1316. if (a.length !== b.length)
  1317. return false;
  1318. if (a === b)
  1319. return true;
  1320. /*
  1321. if (supports_localeCompare)
  1322. {
  1323. return (a.localeCompare(b, undefined, localeCompare_options) === 0);
  1324. }
  1325. else
  1326. {
  1327. */
  1328. return a.toLowerCase() === b.toLowerCase();
  1329. };
  1330. }());
  1331. var MatrixArray=typeof Float32Array!=="undefined"?Float32Array:Array,glMatrixArrayType=MatrixArray,vec3={},mat3={},mat4={},quat4={};vec3.create=function(a){var b=new MatrixArray(3);a&&(b[0]=a[0],b[1]=a[1],b[2]=a[2]);return b};vec3.set=function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];return b};vec3.add=function(a,b,c){if(!c||a===c)return a[0]+=b[0],a[1]+=b[1],a[2]+=b[2],a;c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];return c};
  1332. vec3.subtract=function(a,b,c){if(!c||a===c)return a[0]-=b[0],a[1]-=b[1],a[2]-=b[2],a;c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];return c};vec3.negate=function(a,b){b||(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];return b};vec3.scale=function(a,b,c){if(!c||a===c)return a[0]*=b,a[1]*=b,a[2]*=b,a;c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;return c};
  1333. vec3.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],g=Math.sqrt(c*c+d*d+e*e);if(g){if(g===1)return b[0]=c,b[1]=d,b[2]=e,b}else return b[0]=0,b[1]=0,b[2]=0,b;g=1/g;b[0]=c*g;b[1]=d*g;b[2]=e*g;return b};vec3.cross=function(a,b,c){c||(c=a);var d=a[0],e=a[1],a=a[2],g=b[0],f=b[1],b=b[2];c[0]=e*b-a*f;c[1]=a*g-d*b;c[2]=d*f-e*g;return c};vec3.length=function(a){var b=a[0],c=a[1],a=a[2];return Math.sqrt(b*b+c*c+a*a)};vec3.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]};
  1334. vec3.direction=function(a,b,c){c||(c=a);var d=a[0]-b[0],e=a[1]-b[1],a=a[2]-b[2],b=Math.sqrt(d*d+e*e+a*a);if(!b)return c[0]=0,c[1]=0,c[2]=0,c;b=1/b;c[0]=d*b;c[1]=e*b;c[2]=a*b;return c};vec3.lerp=function(a,b,c,d){d||(d=a);d[0]=a[0]+c*(b[0]-a[0]);d[1]=a[1]+c*(b[1]-a[1]);d[2]=a[2]+c*(b[2]-a[2]);return d};vec3.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};
  1335. mat3.create=function(a){var b=new MatrixArray(9);a&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8]);return b};mat3.set=function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];return b};mat3.identity=function(a){a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a};
  1336. mat3.transpose=function(a,b){if(!b||a===b){var c=a[1],d=a[2],e=a[5];a[1]=a[3];a[2]=a[6];a[3]=c;a[5]=a[7];a[6]=d;a[7]=e;return a}b[0]=a[0];b[1]=a[3];b[2]=a[6];b[3]=a[1];b[4]=a[4];b[5]=a[7];b[6]=a[2];b[7]=a[5];b[8]=a[8];return b};mat3.toMat4=function(a,b){b||(b=mat4.create());b[15]=1;b[14]=0;b[13]=0;b[12]=0;b[11]=0;b[10]=a[8];b[9]=a[7];b[8]=a[6];b[7]=0;b[6]=a[5];b[5]=a[4];b[4]=a[3];b[3]=0;b[2]=a[2];b[1]=a[1];b[0]=a[0];return b};
  1337. mat3.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+"]"};mat4.create=function(a){var b=new MatrixArray(16);a&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]);return b};
  1338. mat4.set=function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b};mat4.identity=function(a){a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};
  1339. mat4.transpose=function(a,b){if(!b||a===b){var c=a[1],d=a[2],e=a[3],g=a[6],f=a[7],h=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=c;a[6]=a[9];a[7]=a[13];a[8]=d;a[9]=g;a[11]=a[14];a[12]=e;a[13]=f;a[14]=h;return a}b[0]=a[0];b[1]=a[4];b[2]=a[8];b[3]=a[12];b[4]=a[1];b[5]=a[5];b[6]=a[9];b[7]=a[13];b[8]=a[2];b[9]=a[6];b[10]=a[10];b[11]=a[14];b[12]=a[3];b[13]=a[7];b[14]=a[11];b[15]=a[15];return b};
  1340. mat4.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],g=a[4],f=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],n=a[11],o=a[12],m=a[13],p=a[14],a=a[15];return o*k*h*e-j*m*h*e-o*f*l*e+g*m*l*e+j*f*p*e-g*k*p*e-o*k*d*i+j*m*d*i+o*c*l*i-b*m*l*i-j*c*p*i+b*k*p*i+o*f*d*n-g*m*d*n-o*c*h*n+b*m*h*n+g*c*p*n-b*f*p*n-j*f*d*a+g*k*d*a+j*c*h*a-b*k*h*a-g*c*l*a+b*f*l*a};
  1341. mat4.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],g=a[3],f=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=a[9],n=a[10],o=a[11],m=a[12],p=a[13],r=a[14],s=a[15],A=c*h-d*f,B=c*i-e*f,t=c*j-g*f,u=d*i-e*h,v=d*j-g*h,w=e*j-g*i,x=k*p-l*m,y=k*r-n*m,z=k*s-o*m,C=l*r-n*p,D=l*s-o*p,E=n*s-o*r,q=1/(A*E-B*D+t*C+u*z-v*y+w*x);b[0]=(h*E-i*D+j*C)*q;b[1]=(-d*E+e*D-g*C)*q;b[2]=(p*w-r*v+s*u)*q;b[3]=(-l*w+n*v-o*u)*q;b[4]=(-f*E+i*z-j*y)*q;b[5]=(c*E-e*z+g*y)*q;b[6]=(-m*w+r*t-s*B)*q;b[7]=(k*w-n*t+o*B)*q;b[8]=(f*D-h*z+j*x)*q;
  1342. b[9]=(-c*D+d*z-g*x)*q;b[10]=(m*v-p*t+s*A)*q;b[11]=(-k*v+l*t-o*A)*q;b[12]=(-f*C+h*y-i*x)*q;b[13]=(c*C-d*y+e*x)*q;b[14]=(-m*u+p*B-r*A)*q;b[15]=(k*u-l*B+n*A)*q;return b};mat4.toRotationMat=function(a,b){b||(b=mat4.create());b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b};
  1343. mat4.toMat3=function(a,b){b||(b=mat3.create());b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[4];b[4]=a[5];b[5]=a[6];b[6]=a[8];b[7]=a[9];b[8]=a[10];return b};mat4.toInverseMat3=function(a,b){var c=a[0],d=a[1],e=a[2],g=a[4],f=a[5],h=a[6],i=a[8],j=a[9],k=a[10],l=k*f-h*j,n=-k*g+h*i,o=j*g-f*i,m=c*l+d*n+e*o;if(!m)return null;m=1/m;b||(b=mat3.create());b[0]=l*m;b[1]=(-k*d+e*j)*m;b[2]=(h*d-e*f)*m;b[3]=n*m;b[4]=(k*c-e*i)*m;b[5]=(-h*c+e*g)*m;b[6]=o*m;b[7]=(-j*c+d*i)*m;b[8]=(f*c-d*g)*m;return b};
  1344. mat4.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],g=a[2],f=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],n=a[9],o=a[10],m=a[11],p=a[12],r=a[13],s=a[14],a=a[15],A=b[0],B=b[1],t=b[2],u=b[3],v=b[4],w=b[5],x=b[6],y=b[7],z=b[8],C=b[9],D=b[10],E=b[11],q=b[12],F=b[13],G=b[14],b=b[15];c[0]=A*d+B*h+t*l+u*p;c[1]=A*e+B*i+t*n+u*r;c[2]=A*g+B*j+t*o+u*s;c[3]=A*f+B*k+t*m+u*a;c[4]=v*d+w*h+x*l+y*p;c[5]=v*e+w*i+x*n+y*r;c[6]=v*g+w*j+x*o+y*s;c[7]=v*f+w*k+x*m+y*a;c[8]=z*d+C*h+D*l+E*p;c[9]=z*e+C*i+D*n+E*r;c[10]=z*g+C*
  1345. j+D*o+E*s;c[11]=z*f+C*k+D*m+E*a;c[12]=q*d+F*h+G*l+b*p;c[13]=q*e+F*i+G*n+b*r;c[14]=q*g+F*j+G*o+b*s;c[15]=q*f+F*k+G*m+b*a;return c};mat4.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],b=b[2];c[0]=a[0]*d+a[4]*e+a[8]*b+a[12];c[1]=a[1]*d+a[5]*e+a[9]*b+a[13];c[2]=a[2]*d+a[6]*e+a[10]*b+a[14];return c};
  1346. mat4.multiplyVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],g=b[2],b=b[3];c[0]=a[0]*d+a[4]*e+a[8]*g+a[12]*b;c[1]=a[1]*d+a[5]*e+a[9]*g+a[13]*b;c[2]=a[2]*d+a[6]*e+a[10]*g+a[14]*b;c[3]=a[3]*d+a[7]*e+a[11]*g+a[15]*b;return c};
  1347. mat4.translate=function(a,b,c){var d=b[0],e=b[1],b=b[2],g,f,h,i,j,k,l,n,o,m,p,r;if(!c||a===c)return a[12]=a[0]*d+a[4]*e+a[8]*b+a[12],a[13]=a[1]*d+a[5]*e+a[9]*b+a[13],a[14]=a[2]*d+a[6]*e+a[10]*b+a[14],a[15]=a[3]*d+a[7]*e+a[11]*b+a[15],a;g=a[0];f=a[1];h=a[2];i=a[3];j=a[4];k=a[5];l=a[6];n=a[7];o=a[8];m=a[9];p=a[10];r=a[11];c[0]=g;c[1]=f;c[2]=h;c[3]=i;c[4]=j;c[5]=k;c[6]=l;c[7]=n;c[8]=o;c[9]=m;c[10]=p;c[11]=r;c[12]=g*d+j*e+o*b+a[12];c[13]=f*d+k*e+m*b+a[13];c[14]=h*d+l*e+p*b+a[14];c[15]=i*d+n*e+r*b+a[15];
  1348. return c};mat4.scale=function(a,b,c){var d=b[0],e=b[1],b=b[2];if(!c||a===c)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=b,a[9]*=b,a[10]*=b,a[11]*=b,a;c[0]=a[0]*d;c[1]=a[1]*d;c[2]=a[2]*d;c[3]=a[3]*d;c[4]=a[4]*e;c[5]=a[5]*e;c[6]=a[6]*e;c[7]=a[7]*e;c[8]=a[8]*b;c[9]=a[9]*b;c[10]=a[10]*b;c[11]=a[11]*b;c[12]=a[12];c[13]=a[13];c[14]=a[14];c[15]=a[15];return c};
  1349. mat4.rotate=function(a,b,c,d){var e=c[0],g=c[1],c=c[2],f=Math.sqrt(e*e+g*g+c*c),h,i,j,k,l,n,o,m,p,r,s,A,B,t,u,v,w,x,y,z;if(!f)return null;f!==1&&(f=1/f,e*=f,g*=f,c*=f);h=Math.sin(b);i=Math.cos(b);j=1-i;b=a[0];f=a[1];k=a[2];l=a[3];n=a[4];o=a[5];m=a[6];p=a[7];r=a[8];s=a[9];A=a[10];B=a[11];t=e*e*j+i;u=g*e*j+c*h;v=c*e*j-g*h;w=e*g*j-c*h;x=g*g*j+i;y=c*g*j+e*h;z=e*c*j+g*h;e=g*c*j-e*h;g=c*c*j+i;d?a!==d&&(d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]):d=a;d[0]=b*t+n*u+r*v;d[1]=f*t+o*u+s*v;d[2]=k*t+m*u+A*
  1350. v;d[3]=l*t+p*u+B*v;d[4]=b*w+n*x+r*y;d[5]=f*w+o*x+s*y;d[6]=k*w+m*x+A*y;d[7]=l*w+p*x+B*y;d[8]=b*z+n*e+r*g;d[9]=f*z+o*e+s*g;d[10]=k*z+m*e+A*g;d[11]=l*z+p*e+B*g;return d};mat4.rotateX=function(a,b,c){var d=Math.sin(b),b=Math.cos(b),e=a[4],g=a[5],f=a[6],h=a[7],i=a[8],j=a[9],k=a[10],l=a[11];c?a!==c&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[4]=e*b+i*d;c[5]=g*b+j*d;c[6]=f*b+k*d;c[7]=h*b+l*d;c[8]=e*-d+i*b;c[9]=g*-d+j*b;c[10]=f*-d+k*b;c[11]=h*-d+l*b;return c};
  1351. mat4.rotateY=function(a,b,c){var d=Math.sin(b),b=Math.cos(b),e=a[0],g=a[1],f=a[2],h=a[3],i=a[8],j=a[9],k=a[10],l=a[11];c?a!==c&&(c[4]=a[4],c[5]=a[5],c[6]=a[6],c[7]=a[7],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=e*b+i*-d;c[1]=g*b+j*-d;c[2]=f*b+k*-d;c[3]=h*b+l*-d;c[8]=e*d+i*b;c[9]=g*d+j*b;c[10]=f*d+k*b;c[11]=h*d+l*b;return c};
  1352. mat4.rotateZ=function(a,b,c){var d=Math.sin(b),b=Math.cos(b),e=a[0],g=a[1],f=a[2],h=a[3],i=a[4],j=a[5],k=a[6],l=a[7];c?a!==c&&(c[8]=a[8],c[9]=a[9],c[10]=a[10],c[11]=a[11],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=e*b+i*d;c[1]=g*b+j*d;c[2]=f*b+k*d;c[3]=h*b+l*d;c[4]=e*-d+i*b;c[5]=g*-d+j*b;c[6]=f*-d+k*b;c[7]=h*-d+l*b;return c};
  1353. mat4.frustum=function(a,b,c,d,e,g,f){f||(f=mat4.create());var h=b-a,i=d-c,j=g-e;f[0]=e*2/h;f[1]=0;f[2]=0;f[3]=0;f[4]=0;f[5]=e*2/i;f[6]=0;f[7]=0;f[8]=(b+a)/h;f[9]=(d+c)/i;f[10]=-(g+e)/j;f[11]=-1;f[12]=0;f[13]=0;f[14]=-(g*e*2)/j;f[15]=0;return f};mat4.perspective=function(a,b,c,d,e){a=c*Math.tan(a*Math.PI/360);b*=a;return mat4.frustum(-b,b,-a,a,c,d,e)};
  1354. mat4.ortho=function(a,b,c,d,e,g,f){f||(f=mat4.create());var h=b-a,i=d-c,j=g-e;f[0]=2/h;f[1]=0;f[2]=0;f[3]=0;f[4]=0;f[5]=2/i;f[6]=0;f[7]=0;f[8]=0;f[9]=0;f[10]=-2/j;f[11]=0;f[12]=-(a+b)/h;f[13]=-(d+c)/i;f[14]=-(g+e)/j;f[15]=1;return f};
  1355. mat4.lookAt=function(a,b,c,d){d||(d=mat4.create());var e,g,f,h,i,j,k,l,n=a[0],o=a[1],a=a[2];g=c[0];f=c[1];e=c[2];c=b[1];j=b[2];if(n===b[0]&&o===c&&a===j)return mat4.identity(d);c=n-b[0];j=o-b[1];k=a-b[2];l=1/Math.sqrt(c*c+j*j+k*k);c*=l;j*=l;k*=l;b=f*k-e*j;e=e*c-g*k;g=g*j-f*c;(l=Math.sqrt(b*b+e*e+g*g))?(l=1/l,b*=l,e*=l,g*=l):g=e=b=0;f=j*g-k*e;h=k*b-c*g;i=c*e-j*b;(l=Math.sqrt(f*f+h*h+i*i))?(l=1/l,f*=l,h*=l,i*=l):i=h=f=0;d[0]=b;d[1]=f;d[2]=c;d[3]=0;d[4]=e;d[5]=h;d[6]=j;d[7]=0;d[8]=g;d[9]=i;d[10]=k;d[11]=
  1356. 0;d[12]=-(b*n+e*o+g*a);d[13]=-(f*n+h*o+i*a);d[14]=-(c*n+j*o+k*a);d[15]=1;return d};mat4.fromRotationTranslation=function(a,b,c){c||(c=mat4.create());var d=a[0],e=a[1],g=a[2],f=a[3],h=d+d,i=e+e,j=g+g,a=d*h,k=d*i;d*=j;var l=e*i;e*=j;g*=j;h*=f;i*=f;f*=j;c[0]=1-(l+g);c[1]=k+f;c[2]=d-i;c[3]=0;c[4]=k-f;c[5]=1-(a+g);c[6]=e+h;c[7]=0;c[8]=d+i;c[9]=e-h;c[10]=1-(a+l);c[11]=0;c[12]=b[0];c[13]=b[1];c[14]=b[2];c[15]=1;return c};
  1357. mat4.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"};quat4.create=function(a){var b=new MatrixArray(4);a&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]);return b};quat4.set=function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b};
  1358. quat4.calculateW=function(a,b){var c=a[0],d=a[1],e=a[2];if(!b||a===b)return a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e)),a;b[0]=c;b[1]=d;b[2]=e;b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e));return b};quat4.inverse=function(a,b){if(!b||a===b)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=a[3];return b};quat4.length=function(a){var b=a[0],c=a[1],d=a[2],a=a[3];return Math.sqrt(b*b+c*c+d*d+a*a)};
  1359. quat4.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],g=a[3],f=Math.sqrt(c*c+d*d+e*e+g*g);if(f===0)return b[0]=0,b[1]=0,b[2]=0,b[3]=0,b;f=1/f;b[0]=c*f;b[1]=d*f;b[2]=e*f;b[3]=g*f;return b};quat4.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],g=a[2],a=a[3],f=b[0],h=b[1],i=b[2],b=b[3];c[0]=d*b+a*f+e*i-g*h;c[1]=e*b+a*h+g*f-d*i;c[2]=g*b+a*i+d*h-e*f;c[3]=a*b-d*f-e*h-g*i;return c};
  1360. quat4.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],g=b[2],b=a[0],f=a[1],h=a[2],a=a[3],i=a*d+f*g-h*e,j=a*e+h*d-b*g,k=a*g+b*e-f*d,d=-b*d-f*e-h*g;c[0]=i*a+d*-b+j*-h-k*-f;c[1]=j*a+d*-f+k*-b-i*-h;c[2]=k*a+d*-h+i*-f-j*-b;return c};quat4.toMat3=function(a,b){b||(b=mat3.create());var c=a[0],d=a[1],e=a[2],g=a[3],f=c+c,h=d+d,i=e+e,j=c*f,k=c*h;c*=i;var l=d*h;d*=i;e*=i;f*=g;h*=g;g*=i;b[0]=1-(l+e);b[1]=k+g;b[2]=c-h;b[3]=k-g;b[4]=1-(j+e);b[5]=d+f;b[6]=c+h;b[7]=d-f;b[8]=1-(j+l);return b};
  1361. quat4.toMat4=function(a,b){b||(b=mat4.create());var c=a[0],d=a[1],e=a[2],g=a[3],f=c+c,h=d+d,i=e+e,j=c*f,k=c*h;c*=i;var l=d*h;d*=i;e*=i;f*=g;h*=g;g*=i;b[0]=1-(l+e);b[1]=k+g;b[2]=c-h;b[3]=0;b[4]=k-g;b[5]=1-(j+e);b[6]=d+f;b[7]=0;b[8]=c+h;b[9]=d-f;b[10]=1-(j+l);b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b};
  1362. quat4.slerp=function(a,b,c,d){d||(d=a);var e=a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3],g,f;if(Math.abs(e)>=1)return d!==a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]),d;g=Math.acos(e);f=Math.sqrt(1-e*e);if(Math.abs(f)<0.001)return d[0]=a[0]*0.5+b[0]*0.5,d[1]=a[1]*0.5+b[1]*0.5,d[2]=a[2]*0.5+b[2]*0.5,d[3]=a[3]*0.5+b[3]*0.5,d;e=Math.sin((1-c)*g)/f;c=Math.sin(c*g)/f;d[0]=a[0]*e+b[0]*c;d[1]=a[1]*e+b[1]*c;d[2]=a[2]*e+b[2]*c;d[3]=a[3]*e+b[3]*c;return d};
  1363. quat4.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"};
  1364. (function()
  1365. {
  1366. var MAX_VERTICES = 8000; // equates to 2500 objects being drawn
  1367. var MAX_INDICES = (MAX_VERTICES / 2) * 3; // 6 indices for every 4 vertices
  1368. var MAX_POINTS = 8000;
  1369. var MULTI_BUFFERS = 4; // cycle 4 buffers to try and avoid blocking
  1370. var BATCH_NULL = 0;
  1371. var BATCH_QUAD = 1;
  1372. var BATCH_SETTEXTURE = 2;
  1373. var BATCH_SETOPACITY = 3;
  1374. var BATCH_SETBLEND = 4;
  1375. var BATCH_UPDATEMODELVIEW = 5;
  1376. var BATCH_RENDERTOTEXTURE = 6;
  1377. var BATCH_CLEAR = 7;
  1378. var BATCH_POINTS = 8;
  1379. var BATCH_SETPROGRAM = 9;
  1380. var BATCH_SETPROGRAMPARAMETERS = 10;
  1381. var BATCH_SETTEXTURE1 = 11;
  1382. function GLWrap_(gl, isMobile)
  1383. {
  1384. this.isIE = /msie/i.test(navigator.userAgent) || /trident/i.test(navigator.userAgent);
  1385. this.width = 0; // not yet known, wait for call to setSize()
  1386. this.height = 0;
  1387. this.cam = vec3.create([0, 0, 100]); // camera position
  1388. this.look = vec3.create([0, 0, 0]); // lookat position
  1389. this.up = vec3.create([0, 1, 0]); // up vector
  1390. this.worldScale = vec3.create([1, 1, 1]); // world scaling factor
  1391. this.matP = mat4.create(); // perspective matrix
  1392. this.matMV = mat4.create(); // model view matrix
  1393. this.lastMV = mat4.create();
  1394. this.currentMV = mat4.create();
  1395. this.gl = gl;
  1396. this.initState();
  1397. };
  1398. GLWrap_.prototype.initState = function ()
  1399. {
  1400. var gl = this.gl;
  1401. var i, len;
  1402. this.lastOpacity = 1;
  1403. this.lastTexture0 = null; // last bound to TEXTURE0
  1404. this.lastTexture1 = null; // last bound to TEXTURE1
  1405. this.currentOpacity = 1;
  1406. gl.clearColor(0, 0, 0, 0);
  1407. gl.clear(gl.COLOR_BUFFER_BIT);
  1408. gl.enable(gl.BLEND);
  1409. gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
  1410. gl.disable(gl.CULL_FACE);
  1411. gl.disable(gl.DEPTH_TEST);
  1412. this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);
  1413. this.lastSrcBlend = gl.ONE;
  1414. this.lastDestBlend = gl.ONE_MINUS_SRC_ALPHA;
  1415. this.pointBuffer = gl.createBuffer();
  1416. gl.bindBuffer(gl.ARRAY_BUFFER, this.pointBuffer);
  1417. this.vertexBuffers = new Array(MULTI_BUFFERS);
  1418. this.texcoordBuffers = new Array(MULTI_BUFFERS);
  1419. for (i = 0; i < MULTI_BUFFERS; i++)
  1420. {
  1421. this.vertexBuffers[i] = gl.createBuffer();
  1422. gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffers[i]);
  1423. this.texcoordBuffers[i] = gl.createBuffer();
  1424. gl.bindBuffer(gl.ARRAY_BUFFER, this.texcoordBuffers[i]);
  1425. }
  1426. this.curBuffer = 0;
  1427. this.indexBuffer = gl.createBuffer();
  1428. gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer);
  1429. this.vertexData = new Float32Array(MAX_VERTICES * 2);
  1430. this.texcoordData = new Float32Array(MAX_VERTICES * 2);
  1431. this.pointData = new Float32Array(MAX_POINTS * 4);
  1432. var indexData = new Uint16Array(MAX_INDICES);
  1433. i = 0, len = MAX_INDICES;
  1434. var fv = 0;
  1435. while (i < len)
  1436. {
  1437. indexData[i++] = fv; // top left
  1438. indexData[i++] = fv + 1; // top right
  1439. indexData[i++] = fv + 2; // bottom right (first tri)
  1440. indexData[i++] = fv; // top left
  1441. indexData[i++] = fv + 2; // bottom right
  1442. indexData[i++] = fv + 3; // bottom left
  1443. fv += 4;
  1444. }
  1445. gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indexData, gl.STATIC_DRAW);
  1446. this.vertexPtr = 0;
  1447. this.pointPtr = 0;
  1448. var fsSource, vsSource;
  1449. this.shaderPrograms = [];
  1450. fsSource = [
  1451. "varying mediump vec2 vTex;",
  1452. "uniform lowp float opacity;",
  1453. "uniform lowp sampler2D samplerFront;",
  1454. "void main(void) {",
  1455. " gl_FragColor = texture2D(samplerFront, vTex);",
  1456. " gl_FragColor *= opacity;",
  1457. "}"
  1458. ].join("\n");
  1459. vsSource = [
  1460. "attribute highp vec2 aPos;",
  1461. "attribute mediump vec2 aTex;",
  1462. "varying mediump vec2 vTex;",
  1463. "uniform highp mat4 matP;",
  1464. "uniform highp mat4 matMV;",
  1465. "void main(void) {",
  1466. " gl_Position = matP * matMV * vec4(aPos.x, aPos.y, 0.0, 1.0);",
  1467. " vTex = aTex;",
  1468. "}"
  1469. ].join("\n");
  1470. var shaderProg = this.createShaderProgram({src: fsSource}, vsSource, "<default>");
  1471. ;
  1472. this.shaderPrograms.push(shaderProg); // Default shader is always shader 0
  1473. fsSource = [
  1474. "uniform mediump sampler2D samplerFront;",
  1475. "varying lowp float opacity;",
  1476. "void main(void) {",
  1477. " gl_FragColor = texture2D(samplerFront, gl_PointCoord);",
  1478. " gl_FragColor *= opacity;",
  1479. "}"
  1480. ].join("\n");
  1481. var pointVsSource = [
  1482. "attribute vec4 aPos;",
  1483. "varying float opacity;",
  1484. "uniform mat4 matP;",
  1485. "uniform mat4 matMV;",
  1486. "void main(void) {",
  1487. " gl_Position = matP * matMV * vec4(aPos.x, aPos.y, 0.0, 1.0);",
  1488. " gl_PointSize = aPos.z;",
  1489. " opacity = aPos.w;",
  1490. "}"
  1491. ].join("\n");
  1492. shaderProg = this.createShaderProgram({src: fsSource}, pointVsSource, "<point>");
  1493. ;
  1494. this.shaderPrograms.push(shaderProg); // Point shader is always shader 1
  1495. for (var shader_name in cr.shaders)
  1496. {
  1497. if (cr.shaders.hasOwnProperty(shader_name))
  1498. this.shaderPrograms.push(this.createShaderProgram(cr.shaders[shader_name], vsSource, shader_name));
  1499. }
  1500. gl.activeTexture(gl.TEXTURE0);
  1501. gl.bindTexture(gl.TEXTURE_2D, null);
  1502. this.batch = [];
  1503. this.batchPtr = 0;
  1504. this.hasQuadBatchTop = false;
  1505. this.hasPointBatchTop = false;
  1506. this.lastProgram = -1; // start -1 so first switchProgram can do work
  1507. this.currentProgram = -1; // current program during batch execution
  1508. this.currentShader = null;
  1509. this.fbo = gl.createFramebuffer();
  1510. this.renderToTex = null;
  1511. this.tmpVec3 = vec3.create([0, 0, 0]);
  1512. ;
  1513. ;
  1514. var pointsizes = gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE);
  1515. this.minPointSize = pointsizes[0];
  1516. this.maxPointSize = pointsizes[1];
  1517. ;
  1518. this.switchProgram(0);
  1519. cr.seal(this);
  1520. };
  1521. function GLShaderProgram(gl, shaderProgram, name)
  1522. {
  1523. this.gl = gl;
  1524. this.shaderProgram = shaderProgram;
  1525. this.name = name;
  1526. this.locAPos = gl.getAttribLocation(shaderProgram, "aPos");
  1527. this.locATex = gl.getAttribLocation(shaderProgram, "aTex");
  1528. this.locMatP = gl.getUniformLocation(shaderProgram, "matP");
  1529. this.locMatMV = gl.getUniformLocation(shaderProgram, "matMV");
  1530. this.locOpacity = gl.getUniformLocation(shaderProgram, "opacity");
  1531. this.locSamplerFront = gl.getUniformLocation(shaderProgram, "samplerFront");
  1532. this.locSamplerBack = gl.getUniformLocation(shaderProgram, "samplerBack");
  1533. this.locDestStart = gl.getUniformLocation(shaderProgram, "destStart");
  1534. this.locDestEnd = gl.getUniformLocation(shaderProgram, "destEnd");
  1535. this.locSeconds = gl.getUniformLocation(shaderProgram, "seconds");
  1536. this.locPixelWidth = gl.getUniformLocation(shaderProgram, "pixelWidth");
  1537. this.locPixelHeight = gl.getUniformLocation(shaderProgram, "pixelHeight");
  1538. this.locLayerScale = gl.getUniformLocation(shaderProgram, "layerScale");
  1539. if (this.locOpacity)
  1540. gl.uniform1f(this.locOpacity, 1);
  1541. if (this.locSamplerFront)
  1542. gl.uniform1i(this.locSamplerFront, 0);
  1543. if (this.locSamplerBack)
  1544. gl.uniform1i(this.locSamplerBack, 1);
  1545. if (this.locDestStart)
  1546. gl.uniform2f(this.locDestStart, 0.0, 0.0);
  1547. if (this.locDestEnd)
  1548. gl.uniform2f(this.locDestEnd, 1.0, 1.0);
  1549. this.hasCurrentMatMV = false; // matMV needs updating
  1550. };
  1551. GLWrap_.prototype.createShaderProgram = function(shaderEntry, vsSource, name)
  1552. {
  1553. var gl = this.gl;
  1554. var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
  1555. gl.shaderSource(fragmentShader, shaderEntry.src);
  1556. gl.compileShader(fragmentShader);
  1557. if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS))
  1558. {
  1559. ;
  1560. gl.deleteShader(fragmentShader);
  1561. return null;
  1562. }
  1563. var vertexShader = gl.createShader(gl.VERTEX_SHADER);
  1564. gl.shaderSource(vertexShader, vsSource);
  1565. gl.compileShader(vertexShader);
  1566. if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS))
  1567. {
  1568. ;
  1569. gl.deleteShader(fragmentShader);
  1570. gl.deleteShader(vertexShader);
  1571. return null;
  1572. }
  1573. var shaderProgram = gl.createProgram();
  1574. gl.attachShader(shaderProgram, fragmentShader);
  1575. gl.attachShader(shaderProgram, vertexShader);
  1576. gl.linkProgram(shaderProgram);
  1577. if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS))
  1578. {
  1579. ;
  1580. gl.deleteShader(fragmentShader);
  1581. gl.deleteShader(vertexShader);
  1582. gl.deleteProgram(shaderProgram);
  1583. return null;
  1584. }
  1585. gl.useProgram(shaderProgram);
  1586. ;
  1587. gl.deleteShader(fragmentShader);
  1588. gl.deleteShader(vertexShader);
  1589. var ret = new GLShaderProgram(gl, shaderProgram, name);
  1590. ret.extendBoxHorizontal = shaderEntry.extendBoxHorizontal || 0;
  1591. ret.extendBoxVertical = shaderEntry.extendBoxVertical || 0;
  1592. ret.crossSampling = !!shaderEntry.crossSampling;
  1593. ret.animated = !!shaderEntry.animated;
  1594. ret.parameters = shaderEntry.parameters || [];
  1595. var i, len;
  1596. for (i = 0, len = ret.parameters.length; i < len; i++)
  1597. {
  1598. ret.parameters[i][1] = gl.getUniformLocation(shaderProgram, ret.parameters[i][0]);
  1599. gl.uniform1f(ret.parameters[i][1], 0);
  1600. }
  1601. cr.seal(ret);
  1602. return ret;
  1603. };
  1604. GLWrap_.prototype.getShaderIndex = function(name_)
  1605. {
  1606. var i, len;
  1607. for (i = 0, len = this.shaderPrograms.length; i < len; i++)
  1608. {
  1609. if (this.shaderPrograms[i].name === name_)
  1610. return i;
  1611. }
  1612. return -1;
  1613. };
  1614. GLWrap_.prototype.project = function (x, y, out)
  1615. {
  1616. var mv = this.matMV;
  1617. var proj = this.matP;
  1618. var fTempo = [0, 0, 0, 0, 0, 0, 0, 0];
  1619. fTempo[0] = mv[0]*x+mv[4]*y+mv[12];
  1620. fTempo[1] = mv[1]*x+mv[5]*y+mv[13];
  1621. fTempo[2] = mv[2]*x+mv[6]*y+mv[14];
  1622. fTempo[3] = mv[3]*x+mv[7]*y+mv[15];
  1623. fTempo[4] = proj[0]*fTempo[0]+proj[4]*fTempo[1]+proj[8]*fTempo[2]+proj[12]*fTempo[3];
  1624. fTempo[5] = proj[1]*fTempo[0]+proj[5]*fTempo[1]+proj[9]*fTempo[2]+proj[13]*fTempo[3];
  1625. fTempo[6] = proj[2]*fTempo[0]+proj[6]*fTempo[1]+proj[10]*fTempo[2]+proj[14]*fTempo[3];
  1626. fTempo[7] = -fTempo[2];
  1627. if(fTempo[7]===0.0) //The w value
  1628. return;
  1629. fTempo[7]=1.0/fTempo[7];
  1630. fTempo[4]*=fTempo[7];
  1631. fTempo[5]*=fTempo[7];
  1632. fTempo[6]*=fTempo[7];
  1633. out[0]=(fTempo[4]*0.5+0.5)*this.width;
  1634. out[1]=(fTempo[5]*0.5+0.5)*this.height;
  1635. };
  1636. GLWrap_.prototype.setSize = function(w, h, force)
  1637. {
  1638. if (this.width === w && this.height === h && !force)
  1639. return;
  1640. this.endBatch();
  1641. this.width = w;
  1642. this.height = h;
  1643. this.gl.viewport(0, 0, w, h);
  1644. mat4.perspective(45, w / h, 1, 1000, this.matP);
  1645. mat4.lookAt(this.cam, this.look, this.up, this.matMV);
  1646. var tl = [0, 0];
  1647. var br = [0, 0];
  1648. this.project(0, 0, tl);
  1649. this.project(1, 1, br);
  1650. this.worldScale[0] = 1 / (br[0] - tl[0]);
  1651. this.worldScale[1] = -1 / (br[1] - tl[1]);
  1652. var i, len, s;
  1653. for (i = 0, len = this.shaderPrograms.length; i < len; i++)
  1654. {
  1655. s = this.shaderPrograms[i];
  1656. s.hasCurrentMatMV = false;
  1657. if (s.locMatP)
  1658. {
  1659. this.gl.useProgram(s.shaderProgram);
  1660. this.gl.uniformMatrix4fv(s.locMatP, false, this.matP);
  1661. }
  1662. }
  1663. this.gl.useProgram(this.shaderPrograms[this.lastProgram].shaderProgram);
  1664. this.gl.bindTexture(this.gl.TEXTURE_2D, null);
  1665. this.gl.activeTexture(this.gl.TEXTURE1);
  1666. this.gl.bindTexture(this.gl.TEXTURE_2D, null);
  1667. this.gl.activeTexture(this.gl.TEXTURE0);
  1668. this.lastTexture0 = null;
  1669. this.lastTexture1 = null;
  1670. };
  1671. GLWrap_.prototype.resetModelView = function ()
  1672. {
  1673. mat4.lookAt(this.cam, this.look, this.up, this.matMV);
  1674. mat4.scale(this.matMV, this.worldScale);
  1675. };
  1676. GLWrap_.prototype.translate = function (x, y)
  1677. {
  1678. if (x === 0 && y === 0)
  1679. return;
  1680. this.tmpVec3[0] = x;// * this.worldScale[0];
  1681. this.tmpVec3[1] = y;// * this.worldScale[1];
  1682. this.tmpVec3[2] = 0;
  1683. mat4.translate(this.matMV, this.tmpVec3);
  1684. };
  1685. GLWrap_.prototype.scale = function (x, y)
  1686. {
  1687. if (x === 1 && y === 1)
  1688. return;
  1689. this.tmpVec3[0] = x;
  1690. this.tmpVec3[1] = y;
  1691. this.tmpVec3[2] = 1;
  1692. mat4.scale(this.matMV, this.tmpVec3);
  1693. };
  1694. GLWrap_.prototype.rotateZ = function (a)
  1695. {
  1696. if (a === 0)
  1697. return;
  1698. mat4.rotateZ(this.matMV, a);
  1699. };
  1700. GLWrap_.prototype.updateModelView = function()
  1701. {
  1702. var anydiff = false;
  1703. for (var i = 0; i < 16; i++)
  1704. {
  1705. if (this.lastMV[i] !== this.matMV[i])
  1706. {
  1707. anydiff = true;
  1708. break;
  1709. }
  1710. }
  1711. if (!anydiff)
  1712. return;
  1713. var b = this.pushBatch();
  1714. b.type = BATCH_UPDATEMODELVIEW;
  1715. if (b.mat4param)
  1716. mat4.set(this.matMV, b.mat4param);
  1717. else
  1718. b.mat4param = mat4.create(this.matMV);
  1719. mat4.set(this.matMV, this.lastMV);
  1720. this.hasQuadBatchTop = false;
  1721. this.hasPointBatchTop = false;
  1722. };
  1723. /*
  1724. var debugBatch = false;
  1725. jQuery(document).mousedown(
  1726. function(info) {
  1727. if (info.which === 2)
  1728. debugBatch = true;
  1729. }
  1730. );
  1731. */
  1732. function GLBatchJob(type_, glwrap_)
  1733. {
  1734. this.type = type_;
  1735. this.glwrap = glwrap_;
  1736. this.gl = glwrap_.gl;
  1737. this.opacityParam = 0; // for setOpacity()
  1738. this.startIndex = 0; // for quad()
  1739. this.indexCount = 0; // "
  1740. this.texParam = null; // for setTexture()
  1741. this.mat4param = null; // for updateModelView()
  1742. this.shaderParams = []; // for user parameters
  1743. cr.seal(this);
  1744. };
  1745. GLBatchJob.prototype.doSetTexture = function ()
  1746. {
  1747. this.gl.bindTexture(this.gl.TEXTURE_2D, this.texParam);
  1748. };
  1749. GLBatchJob.prototype.doSetTexture1 = function ()
  1750. {
  1751. var gl = this.gl;
  1752. gl.activeTexture(gl.TEXTURE1);
  1753. gl.bindTexture(gl.TEXTURE_2D, this.texParam);
  1754. gl.activeTexture(gl.TEXTURE0);
  1755. };
  1756. GLBatchJob.prototype.doSetOpacity = function ()
  1757. {
  1758. var o = this.opacityParam;
  1759. var glwrap = this.glwrap;
  1760. glwrap.currentOpacity = o;
  1761. var curProg = glwrap.currentShader;
  1762. if (curProg.locOpacity)
  1763. this.gl.uniform1f(curProg.locOpacity, o);
  1764. };
  1765. GLBatchJob.prototype.doQuad = function ()
  1766. {
  1767. this.gl.drawElements(this.gl.TRIANGLES, this.indexCount, this.gl.UNSIGNED_SHORT, this.startIndex * 2);
  1768. };
  1769. GLBatchJob.prototype.doSetBlend = function ()
  1770. {
  1771. this.gl.blendFunc(this.startIndex, this.indexCount);
  1772. };
  1773. GLBatchJob.prototype.doUpdateModelView = function ()
  1774. {
  1775. var i, len, s, shaderPrograms = this.glwrap.shaderPrograms, currentProgram = this.glwrap.currentProgram;
  1776. for (i = 0, len = shaderPrograms.length; i < len; i++)
  1777. {
  1778. s = shaderPrograms[i];
  1779. if (i === currentProgram && s.locMatMV)
  1780. {
  1781. this.gl.uniformMatrix4fv(s.locMatMV, false, this.mat4param);
  1782. s.hasCurrentMatMV = true;
  1783. }
  1784. else
  1785. s.hasCurrentMatMV = false;
  1786. }
  1787. mat4.set(this.mat4param, this.glwrap.currentMV);
  1788. };
  1789. GLBatchJob.prototype.doRenderToTexture = function ()
  1790. {
  1791. var gl = this.gl;
  1792. var glwrap = this.glwrap;
  1793. if (this.texParam)
  1794. {
  1795. if (glwrap.lastTexture1 === this.texParam)
  1796. {
  1797. gl.activeTexture(gl.TEXTURE1);
  1798. gl.bindTexture(gl.TEXTURE_2D, null);
  1799. glwrap.lastTexture1 = null;
  1800. gl.activeTexture(gl.TEXTURE0);
  1801. }
  1802. gl.bindFramebuffer(gl.FRAMEBUFFER, glwrap.fbo);
  1803. gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.texParam, 0);
  1804. }
  1805. else
  1806. {
  1807. gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, null, 0);
  1808. gl.bindFramebuffer(gl.FRAMEBUFFER, null);
  1809. }
  1810. };
  1811. GLBatchJob.prototype.doClear = function ()
  1812. {
  1813. var gl = this.gl;
  1814. if (this.startIndex === 0) // clear whole surface
  1815. {
  1816. gl.clearColor(this.mat4param[0], this.mat4param[1], this.mat4param[2], this.mat4param[3]);
  1817. gl.clear(gl.COLOR_BUFFER_BIT);
  1818. }
  1819. else // clear rectangle
  1820. {
  1821. gl.enable(gl.SCISSOR_TEST);
  1822. gl.scissor(this.mat4param[0], this.mat4param[1], this.mat4param[2], this.mat4param[3]);
  1823. gl.clearColor(0, 0, 0, 0);
  1824. gl.clear(this.gl.COLOR_BUFFER_BIT);
  1825. gl.disable(gl.SCISSOR_TEST);
  1826. }
  1827. };
  1828. GLBatchJob.prototype.doPoints = function ()
  1829. {
  1830. var gl = this.gl;
  1831. var glwrap = this.glwrap;
  1832. var s = glwrap.shaderPrograms[1];
  1833. gl.useProgram(s.shaderProgram);
  1834. if (!s.hasCurrentMatMV && s.locMatMV)
  1835. {
  1836. gl.uniformMatrix4fv(s.locMatMV, false, glwrap.currentMV);
  1837. s.hasCurrentMatMV = true;
  1838. }
  1839. gl.enableVertexAttribArray(s.locAPos);
  1840. gl.bindBuffer(gl.ARRAY_BUFFER, glwrap.pointBuffer);
  1841. gl.vertexAttribPointer(s.locAPos, 4, gl.FLOAT, false, 0, 0);
  1842. gl.drawArrays(gl.POINTS, this.startIndex / 4, this.indexCount);
  1843. s = glwrap.currentShader;
  1844. gl.useProgram(s.shaderProgram);
  1845. if (s.locAPos >= 0)
  1846. {
  1847. gl.enableVertexAttribArray(s.locAPos);
  1848. gl.bindBuffer(gl.ARRAY_BUFFER, glwrap.vertexBuffers[glwrap.curBuffer]);
  1849. gl.vertexAttribPointer(s.locAPos, 2, gl.FLOAT, false, 0, 0);
  1850. }
  1851. if (s.locATex >= 0)
  1852. {
  1853. gl.enableVertexAttribArray(s.locATex);
  1854. gl.bindBuffer(gl.ARRAY_BUFFER, glwrap.texcoordBuffers[glwrap.curBuffer]);
  1855. gl.vertexAttribPointer(s.locATex, 2, gl.FLOAT, false, 0, 0);
  1856. }
  1857. };
  1858. GLBatchJob.prototype.doSetProgram = function ()
  1859. {
  1860. var gl = this.gl;
  1861. var glwrap = this.glwrap;
  1862. var s = glwrap.shaderPrograms[this.startIndex]; // recycled param to save memory
  1863. glwrap.currentProgram = this.startIndex; // current batch program
  1864. glwrap.currentShader = s;
  1865. gl.useProgram(s.shaderProgram); // switch to
  1866. if (!s.hasCurrentMatMV && s.locMatMV)
  1867. {
  1868. gl.uniformMatrix4fv(s.locMatMV, false, glwrap.currentMV);
  1869. s.hasCurrentMatMV = true;
  1870. }
  1871. if (s.locOpacity)
  1872. gl.uniform1f(s.locOpacity, glwrap.currentOpacity);
  1873. if (s.locAPos >= 0)
  1874. {
  1875. gl.enableVertexAttribArray(s.locAPos);
  1876. gl.bindBuffer(gl.ARRAY_BUFFER, glwrap.vertexBuffers[glwrap.curBuffer]);
  1877. gl.vertexAttribPointer(s.locAPos, 2, gl.FLOAT, false, 0, 0);
  1878. }
  1879. if (s.locATex >= 0)
  1880. {
  1881. gl.enableVertexAttribArray(s.locATex);
  1882. gl.bindBuffer(gl.ARRAY_BUFFER, glwrap.texcoordBuffers[glwrap.curBuffer]);
  1883. gl.vertexAttribPointer(s.locATex, 2, gl.FLOAT, false, 0, 0);
  1884. }
  1885. }
  1886. GLBatchJob.prototype.doSetProgramParameters = function ()
  1887. {
  1888. var i, len, s = this.glwrap.currentShader;
  1889. var gl = this.gl;
  1890. if (s.locSamplerBack && this.glwrap.lastTexture1 !== this.texParam)
  1891. {
  1892. gl.activeTexture(gl.TEXTURE1);
  1893. gl.bindTexture(gl.TEXTURE_2D, this.texParam);
  1894. this.glwrap.lastTexture1 = this.texParam;
  1895. gl.activeTexture(gl.TEXTURE0);
  1896. }
  1897. if (s.locPixelWidth)
  1898. gl.uniform1f(s.locPixelWidth, this.mat4param[0]);
  1899. if (s.locPixelHeight)
  1900. gl.uniform1f(s.locPixelHeight, this.mat4param[1]);
  1901. if (s.locDestStart)
  1902. gl.uniform2f(s.locDestStart, this.mat4param[2], this.mat4param[3]);
  1903. if (s.locDestEnd)
  1904. gl.uniform2f(s.locDestEnd, this.mat4param[4], this.mat4param[5]);
  1905. if (s.locLayerScale)
  1906. gl.uniform1f(s.locLayerScale, this.mat4param[6]);
  1907. if (s.locSeconds)
  1908. gl.uniform1f(s.locSeconds, cr.performance_now() / 1000.0);
  1909. if (s.parameters.length)
  1910. {
  1911. for (i = 0, len = s.parameters.length; i < len; i++)
  1912. {
  1913. gl.uniform1f(s.parameters[i][1], this.shaderParams[i]);
  1914. }
  1915. }
  1916. };
  1917. GLWrap_.prototype.pushBatch = function ()
  1918. {
  1919. if (this.batchPtr === this.batch.length)
  1920. this.batch.push(new GLBatchJob(BATCH_NULL, this));
  1921. return this.batch[this.batchPtr++];
  1922. };
  1923. GLWrap_.prototype.endBatch = function ()
  1924. {
  1925. if (this.batchPtr === 0)
  1926. return;
  1927. if (this.gl.isContextLost())
  1928. return;
  1929. var gl = this.gl;
  1930. if (this.pointPtr > 0)
  1931. {
  1932. gl.bindBuffer(gl.ARRAY_BUFFER, this.pointBuffer);
  1933. gl.bufferData(gl.ARRAY_BUFFER, this.pointData.subarray(0, this.pointPtr), gl.STREAM_DRAW);
  1934. if (s && s.locAPos >= 0 && s.name === "<point>")
  1935. gl.vertexAttribPointer(s.locAPos, 4, gl.FLOAT, false, 0, 0);
  1936. }
  1937. if (this.vertexPtr > 0)
  1938. {
  1939. var s = this.currentShader;
  1940. gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffers[this.curBuffer]);
  1941. gl.bufferData(gl.ARRAY_BUFFER, this.vertexData.subarray(0, this.vertexPtr), gl.STREAM_DRAW);
  1942. if (s && s.locAPos >= 0 && s.name !== "<point>")
  1943. gl.vertexAttribPointer(s.locAPos, 2, gl.FLOAT, false, 0, 0);
  1944. gl.bindBuffer(gl.ARRAY_BUFFER, this.texcoordBuffers[this.curBuffer]);
  1945. gl.bufferData(gl.ARRAY_BUFFER, this.texcoordData.subarray(0, this.vertexPtr), gl.STREAM_DRAW);
  1946. if (s && s.locATex >= 0 && s.name !== "<point>")
  1947. gl.vertexAttribPointer(s.locATex, 2, gl.FLOAT, false, 0, 0);
  1948. }
  1949. var i, len, b;
  1950. for (i = 0, len = this.batchPtr; i < len; i++)
  1951. {
  1952. b = this.batch[i];
  1953. switch (b.type) {
  1954. case BATCH_QUAD:
  1955. b.doQuad();
  1956. break;
  1957. case BATCH_SETTEXTURE:
  1958. b.doSetTexture();
  1959. break;
  1960. case BATCH_SETOPACITY:
  1961. b.doSetOpacity();
  1962. break;
  1963. case BATCH_SETBLEND:
  1964. b.doSetBlend();
  1965. break;
  1966. case BATCH_UPDATEMODELVIEW:
  1967. b.doUpdateModelView();
  1968. break;
  1969. case BATCH_RENDERTOTEXTURE:
  1970. b.doRenderToTexture();
  1971. break;
  1972. case BATCH_CLEAR:
  1973. b.doClear();
  1974. break;
  1975. case BATCH_POINTS:
  1976. b.doPoints();
  1977. break;
  1978. case BATCH_SETPROGRAM:
  1979. b.doSetProgram();
  1980. break;
  1981. case BATCH_SETPROGRAMPARAMETERS:
  1982. b.doSetProgramParameters();
  1983. break;
  1984. case BATCH_SETTEXTURE1:
  1985. b.doSetTexture1();
  1986. break;
  1987. }
  1988. }
  1989. this.batchPtr = 0;
  1990. this.vertexPtr = 0;
  1991. this.pointPtr = 0;
  1992. this.hasQuadBatchTop = false;
  1993. this.hasPointBatchTop = false;
  1994. this.curBuffer++;
  1995. if (this.curBuffer >= MULTI_BUFFERS)
  1996. this.curBuffer = 0;
  1997. };
  1998. GLWrap_.prototype.setOpacity = function (op)
  1999. {
  2000. if (op === this.lastOpacity)
  2001. return;
  2002. var b = this.pushBatch();
  2003. b.type = BATCH_SETOPACITY;
  2004. b.opacityParam = op;
  2005. this.lastOpacity = op;
  2006. this.hasQuadBatchTop = false;
  2007. this.hasPointBatchTop = false;
  2008. };
  2009. GLWrap_.prototype.setTexture = function (tex)
  2010. {
  2011. if (tex === this.lastTexture0)
  2012. return;
  2013. ;
  2014. var b = this.pushBatch();
  2015. b.type = BATCH_SETTEXTURE;
  2016. b.texParam = tex;
  2017. this.lastTexture0 = tex;
  2018. this.hasQuadBatchTop = false;
  2019. this.hasPointBatchTop = false;
  2020. };
  2021. GLWrap_.prototype.setBlend = function (s, d)
  2022. {
  2023. if (s === this.lastSrcBlend && d === this.lastDestBlend)
  2024. return;
  2025. var b = this.pushBatch();
  2026. b.type = BATCH_SETBLEND;
  2027. b.startIndex = s; // recycle params to save memory
  2028. b.indexCount = d;
  2029. this.lastSrcBlend = s;
  2030. this.lastDestBlend = d;
  2031. this.hasQuadBatchTop = false;
  2032. this.hasPointBatchTop = false;
  2033. };
  2034. GLWrap_.prototype.setAlphaBlend = function ()
  2035. {
  2036. this.setBlend(this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA);
  2037. };
  2038. var LAST_VERTEX = MAX_VERTICES * 2 - 8;
  2039. GLWrap_.prototype.quad = function(tlx, tly, trx, try_, brx, bry, blx, bly)
  2040. {
  2041. if (this.vertexPtr >= LAST_VERTEX)
  2042. this.endBatch();
  2043. var v = this.vertexPtr; // vertex cursor
  2044. var vd = this.vertexData; // vertex data array
  2045. var td = this.texcoordData; // texture coord data array
  2046. if (this.hasQuadBatchTop)
  2047. {
  2048. this.batch[this.batchPtr - 1].indexCount += 6;
  2049. }
  2050. else
  2051. {
  2052. var b = this.pushBatch();
  2053. b.type = BATCH_QUAD;
  2054. b.startIndex = (v / 4) * 3;
  2055. b.indexCount = 6;
  2056. this.hasQuadBatchTop = true;
  2057. this.hasPointBatchTop = false;
  2058. }
  2059. vd[v] = tlx;
  2060. td[v++] = 0;
  2061. vd[v] = tly;
  2062. td[v++] = 0;
  2063. vd[v] = trx;
  2064. td[v++] = 1;
  2065. vd[v] = try_;
  2066. td[v++] = 0;
  2067. vd[v] = brx;
  2068. td[v++] = 1;
  2069. vd[v] = bry;
  2070. td[v++] = 1;
  2071. vd[v] = blx;
  2072. td[v++] = 0;
  2073. vd[v] = bly;
  2074. td[v++] = 1;
  2075. this.vertexPtr = v;
  2076. };
  2077. GLWrap_.prototype.quadTex = function(tlx, tly, trx, try_, brx, bry, blx, bly, rcTex)
  2078. {
  2079. if (this.vertexPtr >= LAST_VERTEX)
  2080. this.endBatch();
  2081. var v = this.vertexPtr; // vertex cursor
  2082. var vd = this.vertexData; // vertex data array
  2083. var td = this.texcoordData; // texture coord data array
  2084. if (this.hasQuadBatchTop)
  2085. {
  2086. this.batch[this.batchPtr - 1].indexCount += 6;
  2087. }
  2088. else
  2089. {
  2090. var b = this.pushBatch();
  2091. b.type = BATCH_QUAD;
  2092. b.startIndex = (v / 4) * 3;
  2093. b.indexCount = 6;
  2094. this.hasQuadBatchTop = true;
  2095. this.hasPointBatchTop = false;
  2096. }
  2097. var rc_left = rcTex.left;
  2098. var rc_top = rcTex.top;
  2099. var rc_right = rcTex.right;
  2100. var rc_bottom = rcTex.bottom;
  2101. vd[v] = tlx;
  2102. td[v++] = rc_left;
  2103. vd[v] = tly;
  2104. td[v++] = rc_top;
  2105. vd[v] = trx;
  2106. td[v++] = rc_right;
  2107. vd[v] = try_;
  2108. td[v++] = rc_top;
  2109. vd[v] = brx;
  2110. td[v++] = rc_right;
  2111. vd[v] = bry;
  2112. td[v++] = rc_bottom;
  2113. vd[v] = blx;
  2114. td[v++] = rc_left;
  2115. vd[v] = bly;
  2116. td[v++] = rc_bottom;
  2117. this.vertexPtr = v;
  2118. };
  2119. GLWrap_.prototype.quadTexUV = function(tlx, tly, trx, try_, brx, bry, blx, bly, tlu, tlv, tru, trv, bru, brv, blu, blv)
  2120. {
  2121. if (this.vertexPtr >= LAST_VERTEX)
  2122. this.endBatch();
  2123. var v = this.vertexPtr; // vertex cursor
  2124. var vd = this.vertexData; // vertex data array
  2125. var td = this.texcoordData; // texture coord data array
  2126. if (this.hasQuadBatchTop)
  2127. {
  2128. this.batch[this.batchPtr - 1].indexCount += 6;
  2129. }
  2130. else
  2131. {
  2132. var b = this.pushBatch();
  2133. b.type = BATCH_QUAD;
  2134. b.startIndex = (v / 4) * 3;
  2135. b.indexCount = 6;
  2136. this.hasQuadBatchTop = true;
  2137. this.hasPointBatchTop = false;
  2138. }
  2139. vd[v] = tlx;
  2140. td[v++] = tlu;
  2141. vd[v] = tly;
  2142. td[v++] = tlv;
  2143. vd[v] = trx;
  2144. td[v++] = tru;
  2145. vd[v] = try_;
  2146. td[v++] = trv;
  2147. vd[v] = brx;
  2148. td[v++] = bru;
  2149. vd[v] = bry;
  2150. td[v++] = brv;
  2151. vd[v] = blx;
  2152. td[v++] = blu;
  2153. vd[v] = bly;
  2154. td[v++] = blv;
  2155. this.vertexPtr = v;
  2156. };
  2157. var LAST_POINT = MAX_POINTS - 4;
  2158. GLWrap_.prototype.point = function(x_, y_, size_, opacity_)
  2159. {
  2160. if (this.pointPtr >= LAST_POINT)
  2161. this.endBatch();
  2162. var p = this.pointPtr; // point cursor
  2163. var pd = this.pointData; // point data array
  2164. if (this.hasPointBatchTop)
  2165. {
  2166. this.batch[this.batchPtr - 1].indexCount++;
  2167. }
  2168. else
  2169. {
  2170. var b = this.pushBatch();
  2171. b.type = BATCH_POINTS;
  2172. b.startIndex = p;
  2173. b.indexCount = 1;
  2174. this.hasPointBatchTop = true;
  2175. this.hasQuadBatchTop = false;
  2176. }
  2177. pd[p++] = x_;
  2178. pd[p++] = y_;
  2179. pd[p++] = size_;
  2180. pd[p++] = opacity_;
  2181. this.pointPtr = p;
  2182. };
  2183. GLWrap_.prototype.switchProgram = function (progIndex)
  2184. {
  2185. if (this.lastProgram === progIndex)
  2186. return; // no change
  2187. var shaderProg = this.shaderPrograms[progIndex];
  2188. if (!shaderProg)
  2189. {
  2190. if (this.lastProgram === 0)
  2191. return; // already on default shader
  2192. progIndex = 0;
  2193. shaderProg = this.shaderPrograms[0];
  2194. }
  2195. var b = this.pushBatch();
  2196. b.type = BATCH_SETPROGRAM;
  2197. b.startIndex = progIndex;
  2198. this.lastProgram = progIndex;
  2199. this.hasQuadBatchTop = false;
  2200. this.hasPointBatchTop = false;
  2201. };
  2202. GLWrap_.prototype.programUsesDest = function (progIndex)
  2203. {
  2204. var s = this.shaderPrograms[progIndex];
  2205. return !!(s.locDestStart || s.locDestEnd);
  2206. };
  2207. GLWrap_.prototype.programUsesCrossSampling = function (progIndex)
  2208. {
  2209. var s = this.shaderPrograms[progIndex];
  2210. return !!(s.locDestStart || s.locDestEnd || s.crossSampling);
  2211. };
  2212. GLWrap_.prototype.programExtendsBox = function (progIndex)
  2213. {
  2214. var s = this.shaderPrograms[progIndex];
  2215. return s.extendBoxHorizontal !== 0 || s.extendBoxVertical !== 0;
  2216. };
  2217. GLWrap_.prototype.getProgramBoxExtendHorizontal = function (progIndex)
  2218. {
  2219. return this.shaderPrograms[progIndex].extendBoxHorizontal;
  2220. };
  2221. GLWrap_.prototype.getProgramBoxExtendVertical = function (progIndex)
  2222. {
  2223. return this.shaderPrograms[progIndex].extendBoxVertical;
  2224. };
  2225. GLWrap_.prototype.getProgramParameterType = function (progIndex, paramIndex)
  2226. {
  2227. return this.shaderPrograms[progIndex].parameters[paramIndex][2];
  2228. };
  2229. GLWrap_.prototype.programIsAnimated = function (progIndex)
  2230. {
  2231. return this.shaderPrograms[progIndex].animated;
  2232. };
  2233. GLWrap_.prototype.setProgramParameters = function (backTex, pixelWidth, pixelHeight, destStartX, destStartY, destEndX, destEndY, layerScale, params)
  2234. {
  2235. var i, len, s = this.shaderPrograms[this.lastProgram];
  2236. if (s.locPixelWidth || s.locPixelHeight || s.locSeconds || s.locSamplerBack ||
  2237. s.locDestStart || s.locDestEnd || s.locLayerScale || params.length)
  2238. {
  2239. var b = this.pushBatch();
  2240. b.type = BATCH_SETPROGRAMPARAMETERS;
  2241. if (b.mat4param)
  2242. mat4.set(this.matMV, b.mat4param);
  2243. else
  2244. b.mat4param = mat4.create();
  2245. b.mat4param[0] = pixelWidth;
  2246. b.mat4param[1] = pixelHeight;
  2247. b.mat4param[2] = destStartX;
  2248. b.mat4param[3] = destStartY;
  2249. b.mat4param[4] = destEndX;
  2250. b.mat4param[5] = destEndY;
  2251. b.mat4param[6] = layerScale;
  2252. if (s.locSamplerBack)
  2253. {
  2254. ;
  2255. b.texParam = backTex;
  2256. }
  2257. else
  2258. b.texParam = null;
  2259. if (params.length)
  2260. {
  2261. b.shaderParams.length = params.length;
  2262. for (i = 0, len = params.length; i < len; i++)
  2263. b.shaderParams[i] = params[i];
  2264. }
  2265. this.hasQuadBatchTop = false;
  2266. this.hasPointBatchTop = false;
  2267. }
  2268. };
  2269. GLWrap_.prototype.clear = function (r, g, b_, a)
  2270. {
  2271. var b = this.pushBatch();
  2272. b.type = BATCH_CLEAR;
  2273. b.startIndex = 0; // clear all mode
  2274. if (!b.mat4param)
  2275. b.mat4param = mat4.create();
  2276. b.mat4param[0] = r;
  2277. b.mat4param[1] = g;
  2278. b.mat4param[2] = b_;
  2279. b.mat4param[3] = a;
  2280. this.hasQuadBatchTop = false;
  2281. this.hasPointBatchTop = false;
  2282. };
  2283. GLWrap_.prototype.clearRect = function (x, y, w, h)
  2284. {
  2285. var b = this.pushBatch();
  2286. b.type = BATCH_CLEAR;
  2287. b.startIndex = 1; // clear rect mode
  2288. if (!b.mat4param)
  2289. b.mat4param = mat4.create();
  2290. b.mat4param[0] = x;
  2291. b.mat4param[1] = y;
  2292. b.mat4param[2] = w;
  2293. b.mat4param[3] = h;
  2294. this.hasQuadBatchTop = false;
  2295. this.hasPointBatchTop = false;
  2296. };
  2297. GLWrap_.prototype.present = function ()
  2298. {
  2299. this.endBatch();
  2300. this.gl.flush();
  2301. /*
  2302. if (debugBatch)
  2303. {
  2304. ;
  2305. debugBatch = false;
  2306. }
  2307. */
  2308. };
  2309. function nextHighestPowerOfTwo(x) {
  2310. --x;
  2311. for (var i = 1; i < 32; i <<= 1) {
  2312. x = x | x >> i;
  2313. }
  2314. return x + 1;
  2315. }
  2316. var all_textures = [];
  2317. var textures_by_src = {};
  2318. var BF_RGBA8 = 0;
  2319. var BF_RGB8 = 1;
  2320. var BF_RGBA4 = 2;
  2321. var BF_RGB5_A1 = 3;
  2322. var BF_RGB565 = 4;
  2323. GLWrap_.prototype.loadTexture = function (img, tiling, linearsampling, pixelformat, tiletype)
  2324. {
  2325. tiling = !!tiling;
  2326. linearsampling = !!linearsampling;
  2327. var tex_key = img.src + "," + tiling + "," + linearsampling + (tiling ? ("," + tiletype) : "");
  2328. var webGL_texture = null;
  2329. if (typeof img.src !== "undefined" && textures_by_src.hasOwnProperty(tex_key))
  2330. {
  2331. webGL_texture = textures_by_src[tex_key];
  2332. webGL_texture.c2refcount++;
  2333. return webGL_texture;
  2334. }
  2335. this.endBatch();
  2336. ;
  2337. var gl = this.gl;
  2338. var isPOT = (cr.isPOT(img.width) && cr.isPOT(img.height));
  2339. webGL_texture = gl.createTexture();
  2340. gl.bindTexture(gl.TEXTURE_2D, webGL_texture);
  2341. gl.pixelStorei(gl["UNPACK_PREMULTIPLY_ALPHA_WEBGL"], true);
  2342. var internalformat = gl.RGBA;
  2343. var format = gl.RGBA;
  2344. var type = gl.UNSIGNED_BYTE;
  2345. if (pixelformat && !this.isIE)
  2346. {
  2347. switch (pixelformat) {
  2348. case BF_RGB8:
  2349. internalformat = gl.RGB;
  2350. format = gl.RGB;
  2351. break;
  2352. case BF_RGBA4:
  2353. type = gl.UNSIGNED_SHORT_4_4_4_4;
  2354. break;
  2355. case BF_RGB5_A1:
  2356. type = gl.UNSIGNED_SHORT_5_5_5_1;
  2357. break;
  2358. case BF_RGB565:
  2359. internalformat = gl.RGB;
  2360. format = gl.RGB;
  2361. type = gl.UNSIGNED_SHORT_5_6_5;
  2362. break;
  2363. }
  2364. }
  2365. if (!isPOT && tiling)
  2366. {
  2367. var canvas = document.createElement("canvas");
  2368. canvas.width = cr.nextHighestPowerOfTwo(img.width);
  2369. canvas.height = cr.nextHighestPowerOfTwo(img.height);
  2370. var ctx = canvas.getContext("2d");
  2371. ctx.drawImage(img,
  2372. 0, 0, img.width, img.height,
  2373. 0, 0, canvas.width, canvas.height);
  2374. gl.texImage2D(gl.TEXTURE_2D, 0, internalformat, format, type, canvas);
  2375. }
  2376. else
  2377. gl.texImage2D(gl.TEXTURE_2D, 0, internalformat, format, type, img);
  2378. if (tiling)
  2379. {
  2380. if (tiletype === "repeat-x")
  2381. {
  2382. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
  2383. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
  2384. }
  2385. else if (tiletype === "repeat-y")
  2386. {
  2387. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
  2388. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
  2389. }
  2390. else
  2391. {
  2392. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
  2393. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
  2394. }
  2395. }
  2396. else
  2397. {
  2398. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
  2399. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
  2400. }
  2401. if (linearsampling)
  2402. {
  2403. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
  2404. if (isPOT)
  2405. {
  2406. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
  2407. gl.generateMipmap(gl.TEXTURE_2D);
  2408. }
  2409. else
  2410. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
  2411. }
  2412. else
  2413. {
  2414. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
  2415. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
  2416. }
  2417. gl.bindTexture(gl.TEXTURE_2D, null);
  2418. this.lastTexture0 = null;
  2419. webGL_texture.c2width = img.width;
  2420. webGL_texture.c2height = img.height;
  2421. webGL_texture.c2refcount = 1;
  2422. webGL_texture.c2texkey = tex_key;
  2423. all_textures.push(webGL_texture);
  2424. textures_by_src[tex_key] = webGL_texture;
  2425. return webGL_texture;
  2426. };
  2427. GLWrap_.prototype.createEmptyTexture = function (w, h, linearsampling, _16bit, tiling)
  2428. {
  2429. this.endBatch();
  2430. var gl = this.gl;
  2431. if (this.isIE)
  2432. _16bit = false;
  2433. var webGL_texture = gl.createTexture();
  2434. gl.bindTexture(gl.TEXTURE_2D, webGL_texture);
  2435. gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, _16bit ? gl.UNSIGNED_SHORT_4_4_4_4 : gl.UNSIGNED_BYTE, null);
  2436. if (tiling)
  2437. {
  2438. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
  2439. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
  2440. }
  2441. else
  2442. {
  2443. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
  2444. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
  2445. }
  2446. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, linearsampling ? gl.LINEAR : gl.NEAREST);
  2447. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, linearsampling ? gl.LINEAR : gl.NEAREST);
  2448. gl.bindTexture(gl.TEXTURE_2D, null);
  2449. this.lastTexture0 = null;
  2450. webGL_texture.c2width = w;
  2451. webGL_texture.c2height = h;
  2452. all_textures.push(webGL_texture);
  2453. return webGL_texture;
  2454. };
  2455. GLWrap_.prototype.videoToTexture = function (video_, texture_, _16bit)
  2456. {
  2457. this.endBatch();
  2458. var gl = this.gl;
  2459. if (this.isIE)
  2460. _16bit = false;
  2461. gl.bindTexture(gl.TEXTURE_2D, texture_);
  2462. gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, _16bit ? gl.UNSIGNED_SHORT_4_4_4_4 : gl.UNSIGNED_BYTE, video_);
  2463. gl.bindTexture(gl.TEXTURE_2D, null);
  2464. this.lastTexture0 = null;
  2465. };
  2466. GLWrap_.prototype.deleteTexture = function (tex)
  2467. {
  2468. if (!tex)
  2469. return;
  2470. if (typeof tex.c2refcount !== "undefined" && tex.c2refcount > 1)
  2471. {
  2472. tex.c2refcount--;
  2473. return;
  2474. }
  2475. this.endBatch();
  2476. if (tex === this.lastTexture0)
  2477. {
  2478. this.gl.bindTexture(this.gl.TEXTURE_2D, null);
  2479. this.lastTexture0 = null;
  2480. }
  2481. if (tex === this.lastTexture1)
  2482. {
  2483. this.gl.activeTexture(this.gl.TEXTURE1);
  2484. this.gl.bindTexture(this.gl.TEXTURE_2D, null);
  2485. this.gl.activeTexture(this.gl.TEXTURE0);
  2486. this.lastTexture1 = null;
  2487. }
  2488. cr.arrayFindRemove(all_textures, tex);
  2489. if (typeof tex.c2texkey !== "undefined")
  2490. delete textures_by_src[tex.c2texkey];
  2491. this.gl.deleteTexture(tex);
  2492. };
  2493. GLWrap_.prototype.estimateVRAM = function ()
  2494. {
  2495. var total = this.width * this.height * 4 * 2;
  2496. var i, len, t;
  2497. for (i = 0, len = all_textures.length; i < len; i++)
  2498. {
  2499. t = all_textures[i];
  2500. total += (t.c2width * t.c2height * 4);
  2501. }
  2502. return total;
  2503. };
  2504. GLWrap_.prototype.textureCount = function ()
  2505. {
  2506. return all_textures.length;
  2507. };
  2508. GLWrap_.prototype.setRenderingToTexture = function (tex)
  2509. {
  2510. if (tex === this.renderToTex)
  2511. return;
  2512. ;
  2513. var b = this.pushBatch();
  2514. b.type = BATCH_RENDERTOTEXTURE;
  2515. b.texParam = tex;
  2516. this.renderToTex = tex;
  2517. this.hasQuadBatchTop = false;
  2518. this.hasPointBatchTop = false;
  2519. };
  2520. cr.GLWrap = GLWrap_;
  2521. }());
  2522. ;
  2523. (function()
  2524. {
  2525. function Runtime(canvas)
  2526. {
  2527. if (!canvas || (!canvas.getContext && !canvas["dc"]))
  2528. return;
  2529. if (canvas["c2runtime"])
  2530. return;
  2531. else
  2532. canvas["c2runtime"] = this;
  2533. var self = this;
  2534. this.isCrosswalk = /crosswalk/i.test(navigator.userAgent) || /xwalk/i.test(navigator.userAgent) || !!(typeof window["c2isCrosswalk"] !== "undefined" && window["c2isCrosswalk"]);
  2535. this.isPhoneGap = (!this.isCrosswalk && (typeof window["device"] !== "undefined" && (typeof window["device"]["cordova"] !== "undefined" || typeof window["device"]["phonegap"] !== "undefined")));
  2536. this.isDirectCanvas = !!canvas["dc"];
  2537. this.isAppMobi = (typeof window["AppMobi"] !== "undefined" || this.isDirectCanvas);
  2538. this.isCocoonJs = !!window["c2cocoonjs"];
  2539. if (this.isCocoonJs)
  2540. {
  2541. CocoonJS["App"]["onSuspended"].addEventListener(function() {
  2542. self["setSuspended"](true);
  2543. });
  2544. CocoonJS["App"]["onActivated"].addEventListener(function () {
  2545. self["setSuspended"](false);
  2546. });
  2547. }
  2548. this.isDomFree = this.isDirectCanvas || this.isCocoonJs;
  2549. this.isTizen = /tizen/i.test(navigator.userAgent);
  2550. this.isAndroid = /android/i.test(navigator.userAgent) && !this.isTizen; // tizen says "like Android"
  2551. this.isIE = /msie/i.test(navigator.userAgent) || /trident/i.test(navigator.userAgent);
  2552. this.isiPhone = /iphone/i.test(navigator.userAgent) || /ipod/i.test(navigator.userAgent); // treat ipod as an iphone
  2553. this.isiPad = /ipad/i.test(navigator.userAgent);
  2554. this.isiOS = this.isiPhone || this.isiPad;
  2555. this.isChrome = /chrome/i.test(navigator.userAgent) || /chromium/i.test(navigator.userAgent);
  2556. this.isAmazonWebApp = /amazonwebappplatform/i.test(navigator.userAgent);
  2557. this.isFirefox = /firefox/i.test(navigator.userAgent);
  2558. this.isSafari = !this.isChrome && /safari/i.test(navigator.userAgent); // Chrome includes Safari in UA
  2559. this.isWindows = /windows/i.test(navigator.userAgent);
  2560. this.isNodeWebkit = (typeof window["c2nodewebkit"] !== "undefined" || /nodewebkit/i.test(navigator.userAgent));
  2561. this.isArcade = (typeof window["is_scirra_arcade"] !== "undefined");
  2562. this.isWindows8App = !!(typeof window["c2isWindows8"] !== "undefined" && window["c2isWindows8"]);
  2563. this.isWindowsPhone8 = !!(typeof window["c2isWindowsPhone8"] !== "undefined" && window["c2isWindowsPhone8"]);
  2564. this.isBlackberry10 = !!(typeof window["c2isBlackberry10"] !== "undefined" && window["c2isBlackberry10"]);
  2565. this.isAndroidStockBrowser = (this.isAndroid && !this.isChrome && !this.isFirefox && !this.isAmazonWebApp && !this.isDomFree);
  2566. this.devicePixelRatio = 1;
  2567. this.isMobile = (this.isPhoneGap || this.isCrosswalk || this.isAppMobi || this.isCocoonJs || this.isAndroid || this.isiOS || this.isWindowsPhone8 || this.isBlackberry10 || this.isTizen);
  2568. if (!this.isMobile)
  2569. this.isMobile = /(blackberry|bb10|playbook|palm|symbian|nokia|windows\s+ce|phone|mobile|tablet)/i.test(navigator.userAgent);
  2570. if (typeof cr_is_preview !== "undefined" && !this.isNodeWebkit && (window.location.search === "?nw" || /nodewebkit/i.test(navigator.userAgent)))
  2571. {
  2572. this.isNodeWebkit = true;
  2573. }
  2574. this.isDebug = (typeof cr_is_preview !== "undefined" && window.location.search.indexOf("debug") > -1)
  2575. this.canvas = canvas;
  2576. this.canvasdiv = document.getElementById("c2canvasdiv");
  2577. this.gl = null;
  2578. this.glwrap = null;
  2579. this.ctx = null;
  2580. this.fullscreenOldMarginCss = "";
  2581. this.firstInFullscreen = false;
  2582. this.oldWidth = 0; // for restoring non-fullscreen canvas after fullscreen
  2583. this.oldHeight = 0;
  2584. this.canvas.oncontextmenu = function (e) { if (e.preventDefault) e.preventDefault(); return false; };
  2585. this.canvas.onselectstart = function (e) { if (e.preventDefault) e.preventDefault(); return false; };
  2586. if (this.isDirectCanvas)
  2587. window["c2runtime"] = this;
  2588. if (this.isNodeWebkit)
  2589. {
  2590. window.ondragover = function(e) { e.preventDefault(); return false; };
  2591. window.ondrop = function(e) { e.preventDefault(); return false; };
  2592. require("nw.gui")["App"]["clearCache"]();
  2593. }
  2594. this.width = canvas.width;
  2595. this.height = canvas.height;
  2596. this.draw_width = this.width;
  2597. this.draw_height = this.height;
  2598. this.cssWidth = this.width;
  2599. this.cssHeight = this.height;
  2600. this.lastWindowWidth = window.innerWidth;
  2601. this.lastWindowHeight = window.innerHeight;
  2602. this.redraw = true;
  2603. this.isSuspended = false;
  2604. if (!Date.now) {
  2605. Date.now = function now() {
  2606. return +new Date();
  2607. };
  2608. }
  2609. this.plugins = [];
  2610. this.types = {};
  2611. this.types_by_index = [];
  2612. this.behaviors = [];
  2613. this.layouts = {};
  2614. this.layouts_by_index = [];
  2615. this.eventsheets = {};
  2616. this.eventsheets_by_index = [];
  2617. this.wait_for_textures = []; // for blocking until textures loaded
  2618. this.triggers_to_postinit = [];
  2619. this.all_global_vars = [];
  2620. this.all_local_vars = [];
  2621. this.solidBehavior = null;
  2622. this.jumpthruBehavior = null;
  2623. this.deathRow = new cr.ObjectSet();
  2624. this.isInClearDeathRow = false;
  2625. this.isInOnDestroy = 0; // needs to support recursion so increments and decrements and is true if > 0
  2626. this.isRunningEvents = false;
  2627. this.createRow = [];
  2628. this.isLoadingState = false;
  2629. this.saveToSlot = "";
  2630. this.loadFromSlot = "";
  2631. this.loadFromJson = "";
  2632. this.lastSaveJson = "";
  2633. this.signalledContinuousPreview = false;
  2634. this.suspendDrawing = false; // for hiding display until continuous preview loads
  2635. this.dt = 0;
  2636. this.dt1 = 0;
  2637. this.logictime = 0; // used to calculate CPUUtilisation
  2638. this.cpuutilisation = 0;
  2639. this.zeroDtCount = 0;
  2640. this.timescale = 1.0;
  2641. this.kahanTime = new cr.KahanAdder();
  2642. this.last_tick_time = 0;
  2643. this.measuring_dt = true;
  2644. this.fps = 0;
  2645. this.last_fps_time = 0;
  2646. this.tickcount = 0;
  2647. this.execcount = 0;
  2648. this.framecount = 0; // for fps
  2649. this.objectcount = 0;
  2650. this.changelayout = null;
  2651. this.destroycallbacks = [];
  2652. this.event_stack = [];
  2653. this.event_stack_index = -1;
  2654. this.localvar_stack = [[]];
  2655. this.localvar_stack_index = 0;
  2656. this.trigger_depth = 0; // recursion depth for triggers
  2657. this.pushEventStack(null);
  2658. this.loop_stack = [];
  2659. this.loop_stack_index = -1;
  2660. this.next_uid = 0;
  2661. this.next_puid = 0; // permanent unique ids
  2662. this.layout_first_tick = true;
  2663. this.family_count = 0;
  2664. this.suspend_events = [];
  2665. this.raf_id = 0;
  2666. this.timeout_id = 0;
  2667. this.isloading = true;
  2668. this.loadingprogress = 0;
  2669. this.isNodeFullscreen = false;
  2670. this.stackLocalCount = 0; // number of stack-based local vars for recursion
  2671. this.halfFramerateMode = false;
  2672. this.lastRafTime = 0; // time of last requestAnimationFrame call
  2673. this.ranLastRaf = false; // false if last requestAnimationFrame was skipped for half framerate mode
  2674. this.had_a_click = false;
  2675. this.isInUserInputEvent = false;
  2676. this.objects_to_tick = new cr.ObjectSet();
  2677. this.objects_to_tick2 = new cr.ObjectSet();
  2678. this.registered_collisions = [];
  2679. this.temp_poly = new cr.CollisionPoly([]);
  2680. this.temp_poly2 = new cr.CollisionPoly([]);
  2681. this.allGroups = []; // array of all event groups
  2682. this.activeGroups = {}; // event group activation states
  2683. this.cndsBySid = {};
  2684. this.actsBySid = {};
  2685. this.varsBySid = {};
  2686. this.blocksBySid = {};
  2687. this.running_layout = null; // currently running layout
  2688. this.layer_canvas = null; // for layers "render-to-texture"
  2689. this.layer_ctx = null;
  2690. this.layer_tex = null;
  2691. this.layout_tex = null;
  2692. this.layout_canvas = null;
  2693. this.layout_ctx = null;
  2694. this.is_WebGL_context_lost = false;
  2695. this.uses_background_blending = false; // if any shader uses background blending, so entire layout renders to texture
  2696. this.fx_tex = [null, null];
  2697. this.fullscreen_scaling = 0;
  2698. this.files_subfolder = ""; // path with project files
  2699. this.objectsByUid = {}; // maps every in-use UID (as a string) to its instance
  2700. this.loaderlogo = null;
  2701. this.snapshotCanvas = null;
  2702. this.snapshotData = "";
  2703. this.load();
  2704. this.isRetina = (!this.isDomFree && this.useHighDpi && !this.isAndroidStockBrowser);
  2705. this.devicePixelRatio = (this.isRetina ? (window["devicePixelRatio"] || window["webkitDevicePixelRatio"] || window["mozDevicePixelRatio"] || window["msDevicePixelRatio"] || 1) : 1);
  2706. this.ClearDeathRow();
  2707. var attribs;
  2708. var alpha_canvas = this.alphaBackground && !(this.isNodeWebkit || this.isWindows8App || this.isWindowsPhone8);
  2709. if (this.fullscreen_mode > 0)
  2710. this["setSize"](window.innerWidth, window.innerHeight, true);
  2711. try {
  2712. if (this.enableWebGL && (this.isCocoonJs || !this.isDomFree))
  2713. {
  2714. attribs = {
  2715. "alpha": alpha_canvas,
  2716. "depth": false,
  2717. "antialias": false,
  2718. "failIfMajorPerformanceCaveat": true
  2719. };
  2720. this.gl = (canvas.getContext("webgl", attribs) || canvas.getContext("experimental-webgl", attribs));
  2721. }
  2722. }
  2723. catch (e) {
  2724. }
  2725. if (this.gl)
  2726. {
  2727. ;
  2728. if (!this.isDomFree)
  2729. {
  2730. this.overlay_canvas = document.createElement("canvas");
  2731. jQuery(this.overlay_canvas).appendTo(this.canvas.parentNode);
  2732. this.overlay_canvas.oncontextmenu = function (e) { return false; };
  2733. this.overlay_canvas.onselectstart = function (e) { return false; };
  2734. this.overlay_canvas.width = this.cssWidth;
  2735. this.overlay_canvas.height = this.cssHeight;
  2736. jQuery(this.overlay_canvas).css({"width": this.cssWidth + "px",
  2737. "height": this.cssHeight + "px"});
  2738. this.positionOverlayCanvas();
  2739. this.overlay_ctx = this.overlay_canvas.getContext("2d");
  2740. }
  2741. this.glwrap = new cr.GLWrap(this.gl, this.isMobile);
  2742. this.glwrap.setSize(canvas.width, canvas.height);
  2743. this.ctx = null;
  2744. this.canvas.addEventListener("webglcontextlost", function (ev) {
  2745. ev.preventDefault();
  2746. self.onContextLost();
  2747. console.log("[Construct 2] WebGL context lost");
  2748. window["cr_setSuspended"](true); // stop rendering
  2749. }, false);
  2750. this.canvas.addEventListener("webglcontextrestored", function (ev) {
  2751. self.glwrap.initState();
  2752. self.glwrap.setSize(self.glwrap.width, self.glwrap.height, true);
  2753. self.layer_tex = null;
  2754. self.layout_tex = null;
  2755. self.fx_tex[0] = null;
  2756. self.fx_tex[1] = null;
  2757. self.onContextRestored();
  2758. self.redraw = true;
  2759. console.log("[Construct 2] WebGL context restored");
  2760. window["cr_setSuspended"](false); // resume rendering
  2761. }, false);
  2762. var i, len, j, lenj, k, lenk, t, s, l, y;
  2763. for (i = 0, len = this.types_by_index.length; i < len; i++)
  2764. {
  2765. t = this.types_by_index[i];
  2766. for (j = 0, lenj = t.effect_types.length; j < lenj; j++)
  2767. {
  2768. s = t.effect_types[j];
  2769. s.shaderindex = this.glwrap.getShaderIndex(s.id);
  2770. this.uses_background_blending = this.uses_background_blending || this.glwrap.programUsesDest(s.shaderindex);
  2771. }
  2772. }
  2773. for (i = 0, len = this.layouts_by_index.length; i < len; i++)
  2774. {
  2775. l = this.layouts_by_index[i];
  2776. for (j = 0, lenj = l.effect_types.length; j < lenj; j++)
  2777. {
  2778. s = l.effect_types[j];
  2779. s.shaderindex = this.glwrap.getShaderIndex(s.id);
  2780. }
  2781. for (j = 0, lenj = l.layers.length; j < lenj; j++)
  2782. {
  2783. y = l.layers[j];
  2784. for (k = 0, lenk = y.effect_types.length; k < lenk; k++)
  2785. {
  2786. s = y.effect_types[k];
  2787. s.shaderindex = this.glwrap.getShaderIndex(s.id);
  2788. this.uses_background_blending = this.uses_background_blending || this.glwrap.programUsesDest(s.shaderindex);
  2789. }
  2790. }
  2791. }
  2792. }
  2793. else
  2794. {
  2795. if (this.fullscreen_mode > 0 && this.isDirectCanvas)
  2796. {
  2797. ;
  2798. this.canvas = null;
  2799. document.oncontextmenu = function (e) { return false; };
  2800. document.onselectstart = function (e) { return false; };
  2801. this.ctx = AppMobi["canvas"]["getContext"]("2d");
  2802. try {
  2803. this.ctx["samplingMode"] = this.linearSampling ? "smooth" : "sharp";
  2804. this.ctx["globalScale"] = 1;
  2805. this.ctx["HTML5CompatibilityMode"] = true;
  2806. this.ctx["imageSmoothingEnabled"] = this.linearSampling;
  2807. } catch(e){}
  2808. if (this.width !== 0 && this.height !== 0)
  2809. {
  2810. this.ctx.width = this.width;
  2811. this.ctx.height = this.height;
  2812. }
  2813. }
  2814. if (!this.ctx)
  2815. {
  2816. ;
  2817. if (this.isCocoonJs)
  2818. {
  2819. attribs = {
  2820. "antialias": !!this.linearSampling,
  2821. "alpha": alpha_canvas
  2822. };
  2823. this.ctx = canvas.getContext("2d", attribs);
  2824. }
  2825. else
  2826. {
  2827. attribs = {
  2828. "alpha": alpha_canvas
  2829. };
  2830. this.ctx = canvas.getContext("2d", attribs);
  2831. }
  2832. this.ctx["webkitImageSmoothingEnabled"] = this.linearSampling;
  2833. this.ctx["mozImageSmoothingEnabled"] = this.linearSampling;
  2834. this.ctx["msImageSmoothingEnabled"] = this.linearSampling;
  2835. this.ctx["imageSmoothingEnabled"] = this.linearSampling;
  2836. }
  2837. this.overlay_canvas = null;
  2838. this.overlay_ctx = null;
  2839. }
  2840. this.tickFunc = function () { self.tick(); };
  2841. if (window != window.top && !this.isDomFree && !this.isWindows8App)
  2842. {
  2843. document.addEventListener("mousedown", function () {
  2844. window.focus();
  2845. }, true);
  2846. document.addEventListener("touchstart", function () {
  2847. window.focus();
  2848. }, true);
  2849. }
  2850. if (typeof cr_is_preview !== "undefined")
  2851. {
  2852. if (this.isCocoonJs)
  2853. console.log("[Construct 2] In preview-over-wifi via CocoonJS mode");
  2854. if (window.location.search.indexOf("continuous") > -1)
  2855. {
  2856. cr.logexport("Reloading for continuous preview");
  2857. this.loadFromSlot = "__c2_continuouspreview";
  2858. this.suspendDrawing = true;
  2859. }
  2860. if (this.pauseOnBlur && !this.isMobile)
  2861. {
  2862. jQuery(window).focus(function ()
  2863. {
  2864. self["setSuspended"](false);
  2865. });
  2866. jQuery(window).blur(function ()
  2867. {
  2868. self["setSuspended"](true);
  2869. });
  2870. }
  2871. }
  2872. if (this.fullscreen_mode === 0 && this.isRetina && this.devicePixelRatio > 1)
  2873. {
  2874. this["setSize"](this.original_width, this.original_height, true);
  2875. }
  2876. this.tryLockOrientation();
  2877. this.go(); // run loading screen
  2878. this.extra = {};
  2879. cr.seal(this);
  2880. };
  2881. var webkitRepaintFlag = false;
  2882. Runtime.prototype["setSize"] = function (w, h, force)
  2883. {
  2884. var offx = 0, offy = 0;
  2885. var neww = 0, newh = 0, intscale = 0;
  2886. if (this.lastWindowWidth === w && this.lastWindowHeight === h && !force)
  2887. return;
  2888. this.lastWindowWidth = w;
  2889. this.lastWindowHeight = h;
  2890. var mode = this.fullscreen_mode;
  2891. var orig_aspect, cur_aspect;
  2892. var isfullscreen = (document["mozFullScreen"] || document["webkitIsFullScreen"] || !!document["msFullscreenElement"] || document["fullScreen"] || this.isNodeFullscreen);
  2893. if (!isfullscreen && this.fullscreen_mode === 0 && !force)
  2894. return; // ignore size events when not fullscreen and not using a fullscreen-in-browser mode
  2895. if (isfullscreen && this.fullscreen_scaling > 0)
  2896. mode = this.fullscreen_scaling;
  2897. if (mode >= 4)
  2898. {
  2899. orig_aspect = this.original_width / this.original_height;
  2900. cur_aspect = w / h;
  2901. if (cur_aspect > orig_aspect)
  2902. {
  2903. neww = h * orig_aspect;
  2904. if (mode === 5) // integer scaling
  2905. {
  2906. intscale = neww / this.original_width;
  2907. if (intscale > 1)
  2908. intscale = Math.floor(intscale);
  2909. else if (intscale < 1)
  2910. intscale = 1 / Math.ceil(1 / intscale);
  2911. neww = this.original_width * intscale;
  2912. newh = this.original_height * intscale;
  2913. offx = (w - neww) / 2;
  2914. offy = (h - newh) / 2;
  2915. w = neww;
  2916. h = newh;
  2917. }
  2918. else
  2919. {
  2920. offx = (w - neww) / 2;
  2921. w = neww;
  2922. }
  2923. }
  2924. else
  2925. {
  2926. newh = w / orig_aspect;
  2927. if (mode === 5) // integer scaling
  2928. {
  2929. intscale = newh / this.original_height;
  2930. if (intscale > 1)
  2931. intscale = Math.floor(intscale);
  2932. else if (intscale < 1)
  2933. intscale = 1 / Math.ceil(1 / intscale);
  2934. neww = this.original_width * intscale;
  2935. newh = this.original_height * intscale;
  2936. offx = (w - neww) / 2;
  2937. offy = (h - newh) / 2;
  2938. w = neww;
  2939. h = newh;
  2940. }
  2941. else
  2942. {
  2943. offy = (h - newh) / 2;
  2944. h = newh;
  2945. }
  2946. }
  2947. if (isfullscreen && !this.isNodeWebkit)
  2948. {
  2949. offx = 0;
  2950. offy = 0;
  2951. }
  2952. offx = Math.floor(offx);
  2953. offy = Math.floor(offy);
  2954. w = Math.floor(w);
  2955. h = Math.floor(h);
  2956. }
  2957. else if (this.isNodeWebkit && this.isNodeFullscreen && this.fullscreen_mode_set === 0)
  2958. {
  2959. offx = Math.floor((w - this.original_width) / 2);
  2960. offy = Math.floor((h - this.original_height) / 2);
  2961. w = this.original_width;
  2962. h = this.original_height;
  2963. }
  2964. if (mode < 2)
  2965. this.aspect_scale = this.devicePixelRatio;
  2966. if (this.isRetina && this.isiPad && this.devicePixelRatio > 1) // don't apply to iPad 1-2
  2967. {
  2968. if (w >= 1024)
  2969. w = 1023; // 2046 retina pixels
  2970. if (h >= 1024)
  2971. h = 1023;
  2972. }
  2973. var multiplier = this.devicePixelRatio;
  2974. this.cssWidth = w;
  2975. this.cssHeight = h;
  2976. this.width = Math.round(w * multiplier);
  2977. this.height = Math.round(h * multiplier);
  2978. this.redraw = true;
  2979. if (this.wantFullscreenScalingQuality)
  2980. {
  2981. this.draw_width = this.width;
  2982. this.draw_height = this.height;
  2983. this.fullscreenScalingQuality = true;
  2984. }
  2985. else
  2986. {
  2987. if ((this.width < this.original_width && this.height < this.original_height) || mode === 1)
  2988. {
  2989. this.draw_width = this.width;
  2990. this.draw_height = this.height;
  2991. this.fullscreenScalingQuality = true;
  2992. }
  2993. else
  2994. {
  2995. this.draw_width = this.original_width;
  2996. this.draw_height = this.original_height;
  2997. this.fullscreenScalingQuality = false;
  2998. /*var orig_aspect = this.original_width / this.original_height;
  2999. var cur_aspect = this.width / this.height;
  3000. if ((this.fullscreen_mode !== 2 && cur_aspect > orig_aspect) || (this.fullscreen_mode === 2 && cur_aspect < orig_aspect))
  3001. this.aspect_scale = this.height / this.original_height;
  3002. else
  3003. this.aspect_scale = this.width / this.original_width;*/
  3004. if (mode === 2) // scale inner
  3005. {
  3006. orig_aspect = this.original_width / this.original_height;
  3007. cur_aspect = this.lastWindowWidth / this.lastWindowHeight;
  3008. if (cur_aspect < orig_aspect)
  3009. this.draw_width = this.draw_height * cur_aspect;
  3010. else if (cur_aspect > orig_aspect)
  3011. this.draw_height = this.draw_width / cur_aspect;
  3012. }
  3013. else if (mode === 3)
  3014. {
  3015. orig_aspect = this.original_width / this.original_height;
  3016. cur_aspect = this.lastWindowWidth / this.lastWindowHeight;
  3017. if (cur_aspect > orig_aspect)
  3018. this.draw_width = this.draw_height * cur_aspect;
  3019. else if (cur_aspect < orig_aspect)
  3020. this.draw_height = this.draw_width / cur_aspect;
  3021. }
  3022. }
  3023. }
  3024. if (this.canvasdiv && !this.isDomFree)
  3025. {
  3026. jQuery(this.canvasdiv).css({"width": w + "px",
  3027. "height": h + "px",
  3028. "margin-left": offx,
  3029. "margin-top": offy});
  3030. if (typeof cr_is_preview !== "undefined")
  3031. {
  3032. jQuery("#borderwrap").css({"width": w + "px",
  3033. "height": h + "px"});
  3034. }
  3035. }
  3036. if (this.canvas)
  3037. {
  3038. this.canvas.width = Math.round(w * multiplier);
  3039. this.canvas.height = Math.round(h * multiplier);
  3040. if (this.isRetina)
  3041. {
  3042. jQuery(this.canvas).css({"width": w + "px",
  3043. "height": h + "px"});
  3044. }
  3045. }
  3046. if (this.overlay_canvas)
  3047. {
  3048. this.overlay_canvas.width = w;
  3049. this.overlay_canvas.height = h;
  3050. jQuery(this.overlay_canvas).css({"width": w + "px",
  3051. "height": h + "px"});
  3052. }
  3053. if (this.glwrap)
  3054. {
  3055. this.glwrap.setSize(Math.round(w * multiplier), Math.round(h * multiplier));
  3056. }
  3057. if (this.isDirectCanvas && this.ctx)
  3058. {
  3059. this.ctx.width = w;
  3060. this.ctx.height = h;
  3061. }
  3062. if (this.ctx)
  3063. {
  3064. this.ctx["webkitImageSmoothingEnabled"] = this.linearSampling;
  3065. this.ctx["mozImageSmoothingEnabled"] = this.linearSampling;
  3066. this.ctx["msImageSmoothingEnabled"] = this.linearSampling;
  3067. this.ctx["imageSmoothingEnabled"] = this.linearSampling;
  3068. }
  3069. this.tryLockOrientation();
  3070. };
  3071. Runtime.prototype.tryLockOrientation = function ()
  3072. {
  3073. if (!this.autoLockOrientation || this.orientations === 0)
  3074. return;
  3075. var orientation = "portrait";
  3076. if (this.orientations === 2)
  3077. orientation = "landscape";
  3078. if (screen["lockOrientation"])
  3079. screen["lockOrientation"](orientation);
  3080. else if (screen["webkitLockOrientation"])
  3081. screen["webkitLockOrientation"](orientation);
  3082. else if (screen["mozLockOrientation"])
  3083. screen["mozLockOrientation"](orientation);
  3084. else if (screen["msLockOrientation"])
  3085. screen["msLockOrientation"](orientation);
  3086. };
  3087. Runtime.prototype.onContextLost = function ()
  3088. {
  3089. this.is_WebGL_context_lost = true;
  3090. var i, len, t;
  3091. for (i = 0, len = this.types_by_index.length; i < len; i++)
  3092. {
  3093. t = this.types_by_index[i];
  3094. if (t.onLostWebGLContext)
  3095. t.onLostWebGLContext();
  3096. }
  3097. };
  3098. Runtime.prototype.onContextRestored = function ()
  3099. {
  3100. this.is_WebGL_context_lost = false;
  3101. var i, len, t;
  3102. for (i = 0, len = this.types_by_index.length; i < len; i++)
  3103. {
  3104. t = this.types_by_index[i];
  3105. if (t.onRestoreWebGLContext)
  3106. t.onRestoreWebGLContext();
  3107. }
  3108. };
  3109. Runtime.prototype.positionOverlayCanvas = function()
  3110. {
  3111. if (this.isDomFree)
  3112. return;
  3113. var isfullscreen = (document["mozFullScreen"] || document["webkitIsFullScreen"] || document["fullScreen"] || !!document["msFullscreenElement"] || this.isNodeFullscreen);
  3114. var overlay_position = isfullscreen ? jQuery(this.canvas).offset() : jQuery(this.canvas).position();
  3115. overlay_position.position = "absolute";
  3116. jQuery(this.overlay_canvas).css(overlay_position);
  3117. };
  3118. var caf = window["cancelAnimationFrame"] ||
  3119. window["mozCancelAnimationFrame"] ||
  3120. window["webkitCancelAnimationFrame"] ||
  3121. window["msCancelAnimationFrame"] ||
  3122. window["oCancelAnimationFrame"];
  3123. Runtime.prototype["setSuspended"] = function (s)
  3124. {
  3125. var i, len;
  3126. if (s && !this.isSuspended)
  3127. {
  3128. cr.logexport("[Construct 2] Suspending");
  3129. this.isSuspended = true; // next tick will be last
  3130. if (this.raf_id !== 0 && caf) // note: CocoonJS does not implement cancelAnimationFrame
  3131. caf(this.raf_id);
  3132. if (this.timeout_id !== 0)
  3133. clearTimeout(this.timeout_id);
  3134. for (i = 0, len = this.suspend_events.length; i < len; i++)
  3135. this.suspend_events[i](true);
  3136. }
  3137. else if (!s && this.isSuspended)
  3138. {
  3139. cr.logexport("[Construct 2] Resuming");
  3140. this.isSuspended = false;
  3141. this.last_tick_time = cr.performance_now(); // ensure first tick is a zero-dt one
  3142. this.last_fps_time = cr.performance_now(); // reset FPS counter
  3143. this.framecount = 0;
  3144. this.logictime = 0;
  3145. for (i = 0, len = this.suspend_events.length; i < len; i++)
  3146. this.suspend_events[i](false);
  3147. this.tick(); // kick off runtime again
  3148. }
  3149. };
  3150. Runtime.prototype.addSuspendCallback = function (f)
  3151. {
  3152. this.suspend_events.push(f);
  3153. };
  3154. Runtime.prototype.load = function ()
  3155. {
  3156. ;
  3157. var pm = cr.getProjectModel();
  3158. this.name = pm[0];
  3159. this.first_layout = pm[1];
  3160. this.fullscreen_mode = pm[11]; // 0 = off, 1 = crop, 2 = scale inner, 3 = scale outer, 4 = letterbox scale, 5 = integer letterbox scale
  3161. this.fullscreen_mode_set = pm[11];
  3162. this.original_width = pm[9];
  3163. this.original_height = pm[10];
  3164. this.parallax_x_origin = this.original_width / 2;
  3165. this.parallax_y_origin = this.original_height / 2;
  3166. if (this.isDomFree && (pm[11] >= 4 || pm[11] === 0))
  3167. {
  3168. cr.logexport("[Construct 2] Letterbox scale fullscreen modes are not supported on this platform - falling back to 'Scale outer'");
  3169. this.fullscreen_mode = 3;
  3170. this.fullscreen_mode_set = 3;
  3171. }
  3172. this.uses_loader_layout = pm[17];
  3173. this.loaderstyle = pm[18];
  3174. if (this.loaderstyle === 0)
  3175. {
  3176. this.loaderlogo = new Image();
  3177. this.loaderlogo.src = "loading-logo.png";
  3178. }
  3179. this.next_uid = pm[20];
  3180. this.system = new cr.system_object(this);
  3181. var i, len, j, lenj, k, lenk, idstr, m, b, t, f;
  3182. var plugin, plugin_ctor;
  3183. for (i = 0, len = pm[2].length; i < len; i++)
  3184. {
  3185. m = pm[2][i];
  3186. ;
  3187. cr.add_common_aces(m);
  3188. plugin = new m[0](this);
  3189. plugin.singleglobal = m[1];
  3190. plugin.is_world = m[2];
  3191. plugin.must_predraw = m[9];
  3192. if (plugin.onCreate)
  3193. plugin.onCreate(); // opportunity to override default ACEs
  3194. cr.seal(plugin);
  3195. this.plugins.push(plugin);
  3196. }
  3197. pm = cr.getProjectModel();
  3198. for (i = 0, len = pm[3].length; i < len; i++)
  3199. {
  3200. m = pm[3][i];
  3201. plugin_ctor = m[1];
  3202. ;
  3203. plugin = null;
  3204. for (j = 0, lenj = this.plugins.length; j < lenj; j++)
  3205. {
  3206. if (this.plugins[j] instanceof plugin_ctor)
  3207. {
  3208. plugin = this.plugins[j];
  3209. break;
  3210. }
  3211. }
  3212. ;
  3213. ;
  3214. var type_inst = new plugin.Type(plugin);
  3215. ;
  3216. type_inst.name = m[0];
  3217. type_inst.is_family = m[2];
  3218. type_inst.instvar_sids = m[3].slice(0);
  3219. type_inst.vars_count = m[3].length;
  3220. type_inst.behs_count = m[4];
  3221. type_inst.fx_count = m[5];
  3222. type_inst.sid = m[11];
  3223. if (type_inst.is_family)
  3224. {
  3225. type_inst.members = []; // types in this family
  3226. type_inst.family_index = this.family_count++;
  3227. type_inst.families = null;
  3228. }
  3229. else
  3230. {
  3231. type_inst.members = null;
  3232. type_inst.family_index = -1;
  3233. type_inst.families = []; // families this type belongs to
  3234. }
  3235. type_inst.family_var_map = null;
  3236. type_inst.family_beh_map = null;
  3237. type_inst.family_fx_map = null;
  3238. type_inst.is_contained = false;
  3239. type_inst.container = null;
  3240. if (m[6])
  3241. {
  3242. type_inst.texture_file = m[6][0];
  3243. type_inst.texture_filesize = m[6][1];
  3244. type_inst.texture_pixelformat = m[6][2];
  3245. }
  3246. else
  3247. {
  3248. type_inst.texture_file = null;
  3249. type_inst.texture_filesize = 0;
  3250. type_inst.texture_pixelformat = 0; // rgba8
  3251. }
  3252. if (m[7])
  3253. {
  3254. type_inst.animations = m[7];
  3255. }
  3256. else
  3257. {
  3258. type_inst.animations = null;
  3259. }
  3260. type_inst.index = i; // save index in to types array in type
  3261. type_inst.instances = []; // all instances of this type
  3262. type_inst.deadCache = []; // destroyed instances to recycle next create
  3263. type_inst.solstack = [new cr.selection(type_inst)]; // initialise SOL stack with one empty SOL
  3264. type_inst.cur_sol = 0;
  3265. type_inst.default_instance = null;
  3266. type_inst.stale_iids = true;
  3267. type_inst.updateIIDs = cr.type_updateIIDs;
  3268. type_inst.getFirstPicked = cr.type_getFirstPicked;
  3269. type_inst.getPairedInstance = cr.type_getPairedInstance;
  3270. type_inst.getCurrentSol = cr.type_getCurrentSol;
  3271. type_inst.pushCleanSol = cr.type_pushCleanSol;
  3272. type_inst.pushCopySol = cr.type_pushCopySol;
  3273. type_inst.popSol = cr.type_popSol;
  3274. type_inst.getBehaviorByName = cr.type_getBehaviorByName;
  3275. type_inst.getBehaviorIndexByName = cr.type_getBehaviorIndexByName;
  3276. type_inst.getEffectIndexByName = cr.type_getEffectIndexByName;
  3277. type_inst.applySolToContainer = cr.type_applySolToContainer;
  3278. type_inst.getInstanceByIID = cr.type_getInstanceByIID;
  3279. type_inst.collision_grid = new cr.SparseGrid(this.original_width, this.original_height);
  3280. type_inst.any_bbox_changed = true;
  3281. type_inst.any_instance_parallaxed = false;
  3282. type_inst.extra = {};
  3283. type_inst.toString = cr.type_toString;
  3284. type_inst.behaviors = [];
  3285. for (j = 0, lenj = m[8].length; j < lenj; j++)
  3286. {
  3287. b = m[8][j];
  3288. var behavior_ctor = b[1];
  3289. var behavior_plugin = null;
  3290. for (k = 0, lenk = this.behaviors.length; k < lenk; k++)
  3291. {
  3292. if (this.behaviors[k] instanceof behavior_ctor)
  3293. {
  3294. behavior_plugin = this.behaviors[k];
  3295. break;
  3296. }
  3297. }
  3298. if (!behavior_plugin)
  3299. {
  3300. behavior_plugin = new behavior_ctor(this);
  3301. behavior_plugin.my_types = []; // types using this behavior
  3302. behavior_plugin.my_instances = new cr.ObjectSet(); // instances of this behavior
  3303. if (behavior_plugin.onCreate)
  3304. behavior_plugin.onCreate();
  3305. cr.seal(behavior_plugin);
  3306. this.behaviors.push(behavior_plugin);
  3307. if (cr.behaviors.solid && behavior_plugin instanceof cr.behaviors.solid)
  3308. this.solidBehavior = behavior_plugin;
  3309. if (cr.behaviors.jumpthru && behavior_plugin instanceof cr.behaviors.jumpthru)
  3310. this.jumpthruBehavior = behavior_plugin;
  3311. }
  3312. if (behavior_plugin.my_types.indexOf(type_inst) === -1)
  3313. behavior_plugin.my_types.push(type_inst);
  3314. var behavior_type = new behavior_plugin.Type(behavior_plugin, type_inst);
  3315. behavior_type.name = b[0];
  3316. behavior_type.sid = b[2];
  3317. behavior_type.onCreate();
  3318. cr.seal(behavior_type);
  3319. type_inst.behaviors.push(behavior_type);
  3320. }
  3321. type_inst.global = m[9];
  3322. type_inst.isOnLoaderLayout = m[10];
  3323. type_inst.effect_types = [];
  3324. for (j = 0, lenj = m[12].length; j < lenj; j++)
  3325. {
  3326. type_inst.effect_types.push({
  3327. id: m[12][j][0],
  3328. name: m[12][j][1],
  3329. shaderindex: -1,
  3330. active: true,
  3331. index: j
  3332. });
  3333. }
  3334. type_inst.tile_poly_data = m[13];
  3335. if (!this.uses_loader_layout || type_inst.is_family || type_inst.isOnLoaderLayout || !plugin.is_world)
  3336. {
  3337. type_inst.onCreate();
  3338. cr.seal(type_inst);
  3339. }
  3340. if (type_inst.name)
  3341. this.types[type_inst.name] = type_inst;
  3342. this.types_by_index.push(type_inst);
  3343. if (plugin.singleglobal)
  3344. {
  3345. var instance = new plugin.Instance(type_inst);
  3346. instance.uid = this.next_uid++;
  3347. instance.puid = this.next_puid++;
  3348. instance.iid = 0;
  3349. instance.get_iid = cr.inst_get_iid;
  3350. instance.toString = cr.inst_toString;
  3351. instance.properties = m[14];
  3352. instance.onCreate();
  3353. cr.seal(instance);
  3354. type_inst.instances.push(instance);
  3355. this.objectsByUid[instance.uid.toString()] = instance;
  3356. }
  3357. }
  3358. for (i = 0, len = pm[4].length; i < len; i++)
  3359. {
  3360. var familydata = pm[4][i];
  3361. var familytype = this.types_by_index[familydata[0]];
  3362. var familymember;
  3363. for (j = 1, lenj = familydata.length; j < lenj; j++)
  3364. {
  3365. familymember = this.types_by_index[familydata[j]];
  3366. familymember.families.push(familytype);
  3367. familytype.members.push(familymember);
  3368. }
  3369. }
  3370. for (i = 0, len = pm[23].length; i < len; i++)
  3371. {
  3372. var containerdata = pm[23][i];
  3373. var containertypes = [];
  3374. for (j = 0, lenj = containerdata.length; j < lenj; j++)
  3375. containertypes.push(this.types_by_index[containerdata[j]]);
  3376. for (j = 0, lenj = containertypes.length; j < lenj; j++)
  3377. {
  3378. containertypes[j].is_contained = true;
  3379. containertypes[j].container = containertypes;
  3380. }
  3381. }
  3382. if (this.family_count > 0)
  3383. {
  3384. for (i = 0, len = this.types_by_index.length; i < len; i++)
  3385. {
  3386. t = this.types_by_index[i];
  3387. if (t.is_family || !t.families.length)
  3388. continue;
  3389. t.family_var_map = new Array(this.family_count);
  3390. t.family_beh_map = new Array(this.family_count);
  3391. t.family_fx_map = new Array(this.family_count);
  3392. var all_fx = [];
  3393. var varsum = 0;
  3394. var behsum = 0;
  3395. var fxsum = 0;
  3396. for (j = 0, lenj = t.families.length; j < lenj; j++)
  3397. {
  3398. f = t.families[j];
  3399. t.family_var_map[f.family_index] = varsum;
  3400. varsum += f.vars_count;
  3401. t.family_beh_map[f.family_index] = behsum;
  3402. behsum += f.behs_count;
  3403. t.family_fx_map[f.family_index] = fxsum;
  3404. fxsum += f.fx_count;
  3405. for (k = 0, lenk = f.effect_types.length; k < lenk; k++)
  3406. all_fx.push(cr.shallowCopy({}, f.effect_types[k]));
  3407. }
  3408. t.effect_types = all_fx.concat(t.effect_types);
  3409. for (j = 0, lenj = t.effect_types.length; j < lenj; j++)
  3410. t.effect_types[j].index = j;
  3411. }
  3412. }
  3413. for (i = 0, len = pm[5].length; i < len; i++)
  3414. {
  3415. m = pm[5][i];
  3416. var layout = new cr.layout(this, m);
  3417. cr.seal(layout);
  3418. this.layouts[layout.name] = layout;
  3419. this.layouts_by_index.push(layout);
  3420. }
  3421. for (i = 0, len = pm[6].length; i < len; i++)
  3422. {
  3423. m = pm[6][i];
  3424. var sheet = new cr.eventsheet(this, m);
  3425. cr.seal(sheet);
  3426. this.eventsheets[sheet.name] = sheet;
  3427. this.eventsheets_by_index.push(sheet);
  3428. }
  3429. for (i = 0, len = this.eventsheets_by_index.length; i < len; i++)
  3430. this.eventsheets_by_index[i].postInit();
  3431. for (i = 0, len = this.triggers_to_postinit.length; i < len; i++)
  3432. this.triggers_to_postinit[i].postInit();
  3433. this.triggers_to_postinit.length = 0;
  3434. this.files_subfolder = pm[7];
  3435. this.pixel_rounding = pm[8];
  3436. this.aspect_scale = 1.0;
  3437. this.enableWebGL = pm[12];
  3438. this.linearSampling = pm[13];
  3439. this.alphaBackground = pm[14];
  3440. this.versionstr = pm[15];
  3441. this.useHighDpi = pm[16];
  3442. this.orientations = pm[19]; // 0 = any, 1 = portrait, 2 = landscape
  3443. this.autoLockOrientation = (this.orientations > 0);
  3444. this.pauseOnBlur = pm[21];
  3445. this.wantFullscreenScalingQuality = pm[22]; // false = low quality, true = high quality
  3446. this.fullscreenScalingQuality = this.wantFullscreenScalingQuality;
  3447. this.start_time = Date.now();
  3448. };
  3449. Runtime.prototype.findWaitingTexture = function (src_)
  3450. {
  3451. var i, len;
  3452. for (i = 0, len = this.wait_for_textures.length; i < len; i++)
  3453. {
  3454. if (this.wait_for_textures[i].cr_src === src_)
  3455. return this.wait_for_textures[i];
  3456. }
  3457. return null;
  3458. };
  3459. Runtime.prototype.areAllTexturesLoaded = function ()
  3460. {
  3461. var totalsize = 0;
  3462. var completedsize = 0;
  3463. var ret = true;
  3464. var i, len;
  3465. for (i = 0, len = this.wait_for_textures.length; i < len; i++)
  3466. {
  3467. var filesize = this.wait_for_textures[i].cr_filesize;
  3468. if (!filesize || filesize <= 0)
  3469. filesize = 50000;
  3470. totalsize += filesize;
  3471. if (this.wait_for_textures[i].complete || this.wait_for_textures[i]["loaded"])
  3472. completedsize += filesize;
  3473. else
  3474. ret = false; // not all textures loaded
  3475. }
  3476. if (totalsize == 0)
  3477. this.progress = 0;
  3478. else
  3479. this.progress = (completedsize / totalsize);
  3480. return ret;
  3481. };
  3482. Runtime.prototype.go = function ()
  3483. {
  3484. if (!this.ctx && !this.glwrap)
  3485. return;
  3486. var ctx = this.ctx || this.overlay_ctx;
  3487. if (this.overlay_canvas)
  3488. this.positionOverlayCanvas();
  3489. this.progress = 0;
  3490. this.last_progress = -1;
  3491. if (this.areAllTexturesLoaded())
  3492. this.go_textures_done();
  3493. else
  3494. {
  3495. var ms_elapsed = Date.now() - this.start_time;
  3496. if (ctx)
  3497. {
  3498. var overlay_width = this.width;
  3499. var overlay_height = this.height;
  3500. var multiplier = this.devicePixelRatio;
  3501. if (this.overlay_canvas)
  3502. {
  3503. overlay_width = this.cssWidth;
  3504. overlay_height = this.cssHeight;
  3505. multiplier = 1;
  3506. }
  3507. if (this.loaderstyle !== 3 && ms_elapsed >= 500 && this.last_progress != this.progress)
  3508. {
  3509. ctx.clearRect(0, 0, overlay_width, overlay_height);
  3510. var mx = overlay_width / 2;
  3511. var my = overlay_height / 2;
  3512. var haslogo = (this.loaderstyle === 0 && this.loaderlogo.complete);
  3513. var hlw = 40 * multiplier;
  3514. var hlh = 0;
  3515. var logowidth = 80 * multiplier;
  3516. var logoheight;
  3517. if (haslogo)
  3518. {
  3519. logowidth = this.loaderlogo.width * multiplier;
  3520. logoheight = this.loaderlogo.height * multiplier;
  3521. hlw = logowidth / 2;
  3522. hlh = logoheight / 2;
  3523. ctx.drawImage(this.loaderlogo, cr.floor(mx - hlw), cr.floor(my - hlh), logowidth, logoheight);
  3524. }
  3525. if (this.loaderstyle <= 1)
  3526. {
  3527. my += hlh + (haslogo ? 12 * multiplier : 0);
  3528. mx -= hlw;
  3529. mx = cr.floor(mx) + 0.5;
  3530. my = cr.floor(my) + 0.5;
  3531. ctx.fillStyle = "DodgerBlue";
  3532. ctx.fillRect(mx, my, Math.floor(logowidth * this.progress), 6 * multiplier);
  3533. ctx.strokeStyle = "black";
  3534. ctx.strokeRect(mx, my, logowidth, 6 * multiplier);
  3535. ctx.strokeStyle = "white";
  3536. ctx.strokeRect(mx - 1 * multiplier, my - 1 * multiplier, logowidth + 2 * multiplier, 8 * multiplier);
  3537. }
  3538. else if (this.loaderstyle === 2)
  3539. {
  3540. ctx.font = "12pt Arial";
  3541. ctx.fillStyle = "#999";
  3542. ctx.textBaseLine = "middle";
  3543. var percent_text = Math.round(this.progress * 100) + "%";
  3544. var text_dim = ctx.measureText ? ctx.measureText(percent_text) : null;
  3545. var text_width = text_dim ? text_dim.width : 0;
  3546. ctx.fillText(percent_text, mx - (text_width / 2), my);
  3547. }
  3548. }
  3549. this.last_progress = this.progress;
  3550. }
  3551. setTimeout((function (self) { return function () { self.go(); }; })(this), 100);
  3552. }
  3553. };
  3554. Runtime.prototype.go_textures_done = function ()
  3555. {
  3556. if (this.overlay_canvas)
  3557. {
  3558. this.canvas.parentNode.removeChild(this.overlay_canvas);
  3559. this.overlay_ctx = null;
  3560. this.overlay_canvas = null;
  3561. }
  3562. this.start_time = Date.now();
  3563. this.last_fps_time = cr.performance_now(); // for counting framerate
  3564. var i, len, t;
  3565. if (this.uses_loader_layout)
  3566. {
  3567. for (i = 0, len = this.types_by_index.length; i < len; i++)
  3568. {
  3569. t = this.types_by_index[i];
  3570. if (!t.is_family && !t.isOnLoaderLayout && t.plugin.is_world)
  3571. {
  3572. t.onCreate();
  3573. cr.seal(t);
  3574. }
  3575. }
  3576. }
  3577. else
  3578. this.isloading = false;
  3579. for (i = 0, len = this.layouts_by_index.length; i < len; i++)
  3580. {
  3581. this.layouts_by_index[i].createGlobalNonWorlds();
  3582. }
  3583. if (this.fullscreen_mode >= 2)
  3584. {
  3585. var orig_aspect = this.original_width / this.original_height;
  3586. var cur_aspect = this.width / this.height;
  3587. if ((this.fullscreen_mode !== 2 && cur_aspect > orig_aspect) || (this.fullscreen_mode === 2 && cur_aspect < orig_aspect))
  3588. this.aspect_scale = this.height / this.original_height;
  3589. else
  3590. this.aspect_scale = this.width / this.original_width;
  3591. }
  3592. if (this.first_layout)
  3593. this.layouts[this.first_layout].startRunning();
  3594. else
  3595. this.layouts_by_index[0].startRunning();
  3596. ;
  3597. if (!this.uses_loader_layout)
  3598. {
  3599. this.loadingprogress = 1;
  3600. this.trigger(cr.system_object.prototype.cnds.OnLoadFinished, null);
  3601. }
  3602. if (navigator["splashscreen"] && navigator["splashscreen"]["hide"])
  3603. navigator["splashscreen"]["hide"]();
  3604. this.tick();
  3605. if (this.isDirectCanvas)
  3606. AppMobi["webview"]["execute"]("onGameReady();");
  3607. };
  3608. var raf = window["requestAnimationFrame"] ||
  3609. window["mozRequestAnimationFrame"] ||
  3610. window["webkitRequestAnimationFrame"] ||
  3611. window["msRequestAnimationFrame"] ||
  3612. window["oRequestAnimationFrame"];
  3613. Runtime.prototype.tick = function ()
  3614. {
  3615. if (!this.running_layout)
  3616. return;
  3617. var logic_start = cr.performance_now();
  3618. if (this.halfFramerateMode && this.ranLastRaf)
  3619. {
  3620. if (logic_start - this.lastRafTime < 29)
  3621. {
  3622. this.ranLastRaf = false;
  3623. this.lastRafTime = logic_start;
  3624. if (raf)
  3625. this.raf_id = raf(this.tickFunc, this.canvas);
  3626. else // no idea if this works without raf/hi res timers but let's hope for the best
  3627. this.timeout_id = setTimeout(this.tickFunc, this.isMobile ? 1 : 16);
  3628. return; // skipped this frame
  3629. }
  3630. }
  3631. this.ranLastRaf = true;
  3632. this.lastRafTime = logic_start;
  3633. var fsmode = this.fullscreen_mode;
  3634. var isfullscreen = (document["mozFullScreen"] || document["webkitIsFullScreen"] || document["fullScreen"] || !!document["msFullscreenElement"]);
  3635. if ((isfullscreen || this.isNodeFullscreen) && this.fullscreen_scaling > 0)
  3636. fsmode = this.fullscreen_scaling;
  3637. if (fsmode > 0 && !this.isiPhone)
  3638. {
  3639. var curwidth = window.innerWidth;
  3640. var curheight = window.innerHeight;
  3641. if (this.lastWindowWidth !== curwidth || this.lastWindowHeight !== curheight)
  3642. {
  3643. this["setSize"](curwidth, curheight);
  3644. }
  3645. }
  3646. if (!this.isDomFree)
  3647. {
  3648. if (isfullscreen)
  3649. {
  3650. if (!this.firstInFullscreen)
  3651. {
  3652. this.fullscreenOldMarginCss = jQuery(this.canvas).css("margin") || "0";
  3653. this.firstInFullscreen = true;
  3654. }
  3655. if (!this.isChrome && !this.isNodeWebkit)
  3656. {
  3657. jQuery(this.canvas).css({
  3658. "margin-left": "" + Math.floor((screen.width - (this.width / this.devicePixelRatio)) / 2) + "px",
  3659. "margin-top": "" + Math.floor((screen.height - (this.height / this.devicePixelRatio)) / 2) + "px"
  3660. });
  3661. }
  3662. }
  3663. else
  3664. {
  3665. if (this.firstInFullscreen)
  3666. {
  3667. if (!this.isChrome && !this.isNodeWebkit)
  3668. {
  3669. jQuery(this.canvas).css("margin", this.fullscreenOldMarginCss);
  3670. }
  3671. this.fullscreenOldMarginCss = "";
  3672. this.firstInFullscreen = false;
  3673. if (this.fullscreen_mode === 0)
  3674. {
  3675. this["setSize"](Math.round(this.oldWidth / this.devicePixelRatio), Math.round(this.oldHeight / this.devicePixelRatio), true);
  3676. }
  3677. }
  3678. else
  3679. {
  3680. this.oldWidth = this.width;
  3681. this.oldHeight = this.height;
  3682. }
  3683. }
  3684. }
  3685. if (this.isloading)
  3686. {
  3687. var done = this.areAllTexturesLoaded(); // updates this.progress
  3688. this.loadingprogress = this.progress;
  3689. if (done)
  3690. {
  3691. this.isloading = false;
  3692. this.progress = 1;
  3693. this.trigger(cr.system_object.prototype.cnds.OnLoadFinished, null);
  3694. }
  3695. }
  3696. this.logic();
  3697. if ((this.redraw || this.isCocoonJs) && !this.is_WebGL_context_lost && !this.suspendDrawing)
  3698. {
  3699. this.redraw = false;
  3700. if (this.glwrap)
  3701. this.drawGL();
  3702. else
  3703. this.draw();
  3704. if (this.snapshotCanvas)
  3705. {
  3706. if (this.canvas && this.canvas.toDataURL)
  3707. {
  3708. this.snapshotData = this.canvas.toDataURL(this.snapshotCanvas[0], this.snapshotCanvas[1]);
  3709. this.trigger(cr.system_object.prototype.cnds.OnCanvasSnapshot, null);
  3710. }
  3711. this.snapshotCanvas = null;
  3712. }
  3713. }
  3714. if (!this.hit_breakpoint)
  3715. {
  3716. this.tickcount++;
  3717. this.execcount++;
  3718. this.framecount++;
  3719. }
  3720. this.logictime += cr.performance_now() - logic_start;
  3721. if (this.isSuspended)
  3722. return;
  3723. if (raf)
  3724. this.raf_id = raf(this.tickFunc, this.canvas);
  3725. else
  3726. {
  3727. this.timeout_id = setTimeout(this.tickFunc, this.isMobile ? 1 : 16);
  3728. }
  3729. };
  3730. Runtime.prototype.logic = function ()
  3731. {
  3732. var i, leni, j, lenj, k, lenk, type, inst, binst;
  3733. var cur_time = cr.performance_now();
  3734. if (cur_time - this.last_fps_time >= 1000) // every 1 second
  3735. {
  3736. this.last_fps_time += 1000;
  3737. this.fps = this.framecount;
  3738. this.framecount = 0;
  3739. this.cpuutilisation = this.logictime;
  3740. this.logictime = 0;
  3741. }
  3742. if (this.measuring_dt)
  3743. {
  3744. if (this.last_tick_time !== 0)
  3745. {
  3746. var ms_diff = cur_time - this.last_tick_time;
  3747. if (ms_diff === 0 && !this.isDebug)
  3748. {
  3749. this.zeroDtCount++;
  3750. if (this.zeroDtCout >= 10)
  3751. this.measuring_dt = false;
  3752. this.dt1 = 1.0 / 60.0; // 60fps assumed (0.01666...)
  3753. }
  3754. else
  3755. {
  3756. this.dt1 = ms_diff / 1000.0; // dt measured in seconds
  3757. if (this.dt1 > 0.5)
  3758. this.dt1 = 0;
  3759. else if (this.dt1 > 0.1)
  3760. this.dt1 = 0.1;
  3761. }
  3762. }
  3763. this.last_tick_time = cur_time;
  3764. }
  3765. this.dt = this.dt1 * this.timescale;
  3766. this.kahanTime.add(this.dt);
  3767. var isfullscreen = (document["mozFullScreen"] || document["webkitIsFullScreen"] || document["fullScreen"] || !!document["msFullscreenElement"] || this.isNodeFullscreen);
  3768. if (this.fullscreen_mode >= 2 /* scale */ || (isfullscreen && this.fullscreen_scaling > 0))
  3769. {
  3770. var orig_aspect = this.original_width / this.original_height;
  3771. var cur_aspect = this.width / this.height;
  3772. var mode = this.fullscreen_mode;
  3773. if (isfullscreen && this.fullscreen_scaling > 0)
  3774. mode = this.fullscreen_scaling;
  3775. if ((mode !== 2 && cur_aspect > orig_aspect) || (mode === 2 && cur_aspect < orig_aspect))
  3776. {
  3777. this.aspect_scale = this.height / this.original_height;
  3778. }
  3779. else
  3780. {
  3781. this.aspect_scale = this.width / this.original_width;
  3782. }
  3783. if (this.running_layout)
  3784. {
  3785. this.running_layout.scrollToX(this.running_layout.scrollX);
  3786. this.running_layout.scrollToY(this.running_layout.scrollY);
  3787. }
  3788. }
  3789. else
  3790. this.aspect_scale = (this.isRetina ? this.devicePixelRatio : 1);
  3791. this.ClearDeathRow();
  3792. this.isInOnDestroy++;
  3793. this.system.runWaits(); // prevent instance list changing
  3794. this.isInOnDestroy--;
  3795. this.ClearDeathRow(); // allow instance list changing
  3796. this.isInOnDestroy++;
  3797. for (i = 0, leni = this.types_by_index.length; i < leni; i++)
  3798. {
  3799. type = this.types_by_index[i];
  3800. if (type.is_family || (!type.behaviors.length && !type.families.length))
  3801. continue;
  3802. for (j = 0, lenj = type.instances.length; j < lenj; j++)
  3803. {
  3804. inst = type.instances[j];
  3805. for (k = 0, lenk = inst.behavior_insts.length; k < lenk; k++)
  3806. {
  3807. inst.behavior_insts[k].tick();
  3808. }
  3809. }
  3810. }
  3811. for (i = 0, leni = this.types_by_index.length; i < leni; i++)
  3812. {
  3813. type = this.types_by_index[i];
  3814. if (type.is_family || (!type.behaviors.length && !type.families.length))
  3815. continue; // type doesn't have any behaviors
  3816. for (j = 0, lenj = type.instances.length; j < lenj; j++)
  3817. {
  3818. inst = type.instances[j];
  3819. for (k = 0, lenk = inst.behavior_insts.length; k < lenk; k++)
  3820. {
  3821. binst = inst.behavior_insts[k];
  3822. if (binst.posttick)
  3823. binst.posttick();
  3824. }
  3825. }
  3826. }
  3827. var tickarr = this.objects_to_tick.valuesRef();
  3828. for (i = 0, leni = tickarr.length; i < leni; i++)
  3829. tickarr[i].tick();
  3830. this.isInOnDestroy--; // end preventing instance lists from being changed
  3831. this.handleSaveLoad(); // save/load now if queued
  3832. i = 0;
  3833. while (this.changelayout && i++ < 10)
  3834. {
  3835. this.doChangeLayout(this.changelayout);
  3836. }
  3837. for (i = 0, leni = this.eventsheets_by_index.length; i < leni; i++)
  3838. this.eventsheets_by_index[i].hasRun = false;
  3839. if (this.running_layout.event_sheet)
  3840. this.running_layout.event_sheet.run();
  3841. this.registered_collisions.length = 0;
  3842. this.layout_first_tick = false;
  3843. this.isInOnDestroy++; // prevent instance lists from being changed
  3844. for (i = 0, leni = this.types_by_index.length; i < leni; i++)
  3845. {
  3846. type = this.types_by_index[i];
  3847. if (type.is_family || (!type.behaviors.length && !type.families.length))
  3848. continue; // type doesn't have any behaviors
  3849. for (j = 0, lenj = type.instances.length; j < lenj; j++)
  3850. {
  3851. var inst = type.instances[j];
  3852. for (k = 0, lenk = inst.behavior_insts.length; k < lenk; k++)
  3853. {
  3854. binst = inst.behavior_insts[k];
  3855. if (binst.tick2)
  3856. binst.tick2();
  3857. }
  3858. }
  3859. }
  3860. tickarr = this.objects_to_tick2.valuesRef();
  3861. for (i = 0, leni = tickarr.length; i < leni; i++)
  3862. tickarr[i].tick2();
  3863. this.isInOnDestroy--; // end preventing instance lists from being changed
  3864. };
  3865. Runtime.prototype.doChangeLayout = function (changeToLayout)
  3866. {
  3867. ;
  3868. var prev_layout = this.running_layout;
  3869. this.running_layout.stopRunning();
  3870. var i, len, j, lenj, k, lenk, type, inst, binst;
  3871. if (this.glwrap)
  3872. {
  3873. for (i = 0, len = this.types_by_index.length; i < len; i++)
  3874. {
  3875. type = this.types_by_index[i];
  3876. if (type.is_family)
  3877. continue;
  3878. if (type.unloadTextures && (!type.global || type.instances.length === 0) && changeToLayout.initial_types.indexOf(type) === -1)
  3879. {
  3880. type.unloadTextures();
  3881. }
  3882. }
  3883. }
  3884. if (prev_layout == changeToLayout)
  3885. this.system.waits.length = 0;
  3886. changeToLayout.startRunning();
  3887. for (i = 0, len = this.types_by_index.length; i < len; i++)
  3888. {
  3889. type = this.types_by_index[i];
  3890. if (!type.global && !type.plugin.singleglobal)
  3891. continue;
  3892. for (j = 0, lenj = type.instances.length; j < lenj; j++)
  3893. {
  3894. inst = type.instances[j];
  3895. if (inst.onLayoutChange)
  3896. inst.onLayoutChange();
  3897. if (inst.behavior_insts)
  3898. {
  3899. for (k = 0, lenk = inst.behavior_insts.length; k < lenk; k++)
  3900. {
  3901. binst = inst.behavior_insts[k];
  3902. if (binst.onLayoutChange)
  3903. binst.onLayoutChange();
  3904. }
  3905. }
  3906. }
  3907. }
  3908. this.redraw = true;
  3909. this.layout_first_tick = true;
  3910. this.ClearDeathRow();
  3911. };
  3912. Runtime.prototype.tickMe = function (inst)
  3913. {
  3914. this.objects_to_tick.add(inst);
  3915. };
  3916. Runtime.prototype.untickMe = function (inst)
  3917. {
  3918. this.objects_to_tick.remove(inst);
  3919. };
  3920. Runtime.prototype.tick2Me = function (inst)
  3921. {
  3922. this.objects_to_tick2.add(inst);
  3923. };
  3924. Runtime.prototype.untick2Me = function (inst)
  3925. {
  3926. this.objects_to_tick2.remove(inst);
  3927. };
  3928. Runtime.prototype.getDt = function (inst)
  3929. {
  3930. if (!inst || inst.my_timescale === -1.0)
  3931. return this.dt;
  3932. return this.dt1 * inst.my_timescale;
  3933. };
  3934. Runtime.prototype.draw = function ()
  3935. {
  3936. this.running_layout.draw(this.ctx);
  3937. if (this.isDirectCanvas)
  3938. this.ctx["present"]();
  3939. };
  3940. Runtime.prototype.drawGL = function ()
  3941. {
  3942. this.running_layout.drawGL(this.glwrap);
  3943. this.glwrap.present();
  3944. };
  3945. Runtime.prototype.addDestroyCallback = function (f)
  3946. {
  3947. if (f)
  3948. this.destroycallbacks.push(f);
  3949. };
  3950. Runtime.prototype.removeDestroyCallback = function (f)
  3951. {
  3952. cr.arrayFindRemove(this.destroycallbacks, f);
  3953. };
  3954. Runtime.prototype.getObjectByUID = function (uid_)
  3955. {
  3956. ;
  3957. return this.objectsByUid[uid_.toString()];
  3958. };
  3959. Runtime.prototype.DestroyInstance = function (inst)
  3960. {
  3961. var i, len;
  3962. if (!this.deathRow.contains(inst))
  3963. {
  3964. this.deathRow.add(inst);
  3965. if (inst.is_contained)
  3966. {
  3967. for (i = 0, len = inst.siblings.length; i < len; i++)
  3968. {
  3969. this.DestroyInstance(inst.siblings[i]);
  3970. }
  3971. }
  3972. if (this.isInClearDeathRow)
  3973. this.deathRow.values_cache.push(inst);
  3974. this.isInOnDestroy++; // support recursion
  3975. this.trigger(Object.getPrototypeOf(inst.type.plugin).cnds.OnDestroyed, inst);
  3976. this.isInOnDestroy--;
  3977. }
  3978. };
  3979. Runtime.prototype.ClearDeathRow = function ()
  3980. {
  3981. var inst, index, type, instances, binst;
  3982. var i, j, k, leni, lenj, lenk;
  3983. var w, f;
  3984. this.isInClearDeathRow = true;
  3985. for (i = 0, leni = this.createRow.length; i < leni; i++)
  3986. {
  3987. inst = this.createRow[i];
  3988. type = inst.type;
  3989. type.instances.push(inst);
  3990. for (j = 0, lenj = type.families.length; j < lenj; j++)
  3991. {
  3992. type.families[j].instances.push(inst);
  3993. type.families[j].stale_iids = true;
  3994. }
  3995. }
  3996. this.createRow.length = 0;
  3997. var arr = this.deathRow.valuesRef(); // get array of items from set
  3998. for (i = 0; i < arr.length; i++) // check array length every time in case it changes
  3999. {
  4000. inst = arr[i];
  4001. type = inst.type;
  4002. instances = type.instances;
  4003. for (j = 0, lenj = this.destroycallbacks.length; j < lenj; j++)
  4004. this.destroycallbacks[j](inst);
  4005. cr.arrayFindRemove(instances, inst);
  4006. if (instances.length === 0)
  4007. type.any_instance_parallaxed = false;
  4008. if (inst.collcells)
  4009. {
  4010. type.collision_grid.update(inst, inst.collcells, null);
  4011. }
  4012. if (inst.layer)
  4013. {
  4014. cr.arrayRemove(inst.layer.instances, inst.get_zindex());
  4015. inst.layer.zindices_stale = true;
  4016. }
  4017. for (j = 0, lenj = type.families.length; j < lenj; j++)
  4018. {
  4019. cr.arrayFindRemove(type.families[j].instances, inst);
  4020. type.families[j].stale_iids = true;
  4021. }
  4022. if (inst.behavior_insts)
  4023. {
  4024. for (j = 0, lenj = inst.behavior_insts.length; j < lenj; j++)
  4025. {
  4026. binst = inst.behavior_insts[j];
  4027. if (binst.onDestroy)
  4028. binst.onDestroy();
  4029. binst.behavior.my_instances.remove(inst);
  4030. }
  4031. }
  4032. this.objects_to_tick.remove(inst);
  4033. this.objects_to_tick2.remove(inst);
  4034. for (j = 0, lenj = this.system.waits.length; j < lenj; j++)
  4035. {
  4036. w = this.system.waits[j];
  4037. if (w.sols.hasOwnProperty(type.index))
  4038. cr.arrayFindRemove(w.sols[type.index].insts, inst);
  4039. if (!type.is_family)
  4040. {
  4041. for (k = 0, lenk = type.families.length; k < lenk; k++)
  4042. {
  4043. f = type.families[k];
  4044. if (w.sols.hasOwnProperty(f.index))
  4045. cr.arrayFindRemove(w.sols[f.index].insts, inst);
  4046. }
  4047. }
  4048. }
  4049. if (inst.onDestroy)
  4050. inst.onDestroy();
  4051. if (this.objectsByUid.hasOwnProperty(inst.uid.toString()))
  4052. delete this.objectsByUid[inst.uid.toString()];
  4053. this.objectcount--;
  4054. if (type.deadCache.length < 64)
  4055. type.deadCache.push(inst);
  4056. type.stale_iids = true;
  4057. }
  4058. if (!this.deathRow.isEmpty())
  4059. this.redraw = true;
  4060. this.deathRow.clear();
  4061. this.isInClearDeathRow = false;
  4062. };
  4063. Runtime.prototype.createInstance = function (type, layer, sx, sy)
  4064. {
  4065. if (type.is_family)
  4066. {
  4067. var i = cr.floor(Math.random() * type.members.length);
  4068. return this.createInstance(type.members[i], layer, sx, sy);
  4069. }
  4070. if (!type.default_instance)
  4071. {
  4072. return null;
  4073. }
  4074. return this.createInstanceFromInit(type.default_instance, layer, false, sx, sy, false);
  4075. };
  4076. var all_behaviors = [];
  4077. Runtime.prototype.createInstanceFromInit = function (initial_inst, layer, is_startup_instance, sx, sy, skip_siblings)
  4078. {
  4079. var i, len, j, lenj, p, effect_fallback, x, y;
  4080. if (!initial_inst)
  4081. return null;
  4082. var type = this.types_by_index[initial_inst[1]];
  4083. ;
  4084. ;
  4085. var is_world = type.plugin.is_world;
  4086. ;
  4087. if (this.isloading && is_world && !type.isOnLoaderLayout)
  4088. return null;
  4089. if (is_world && !this.glwrap && initial_inst[0][11] === 11)
  4090. return null;
  4091. var original_layer = layer;
  4092. if (!is_world)
  4093. layer = null;
  4094. var inst;
  4095. if (type.deadCache.length)
  4096. {
  4097. inst = type.deadCache.pop();
  4098. inst.recycled = true;
  4099. type.plugin.Instance.call(inst, type);
  4100. }
  4101. else
  4102. {
  4103. inst = new type.plugin.Instance(type);
  4104. inst.recycled = false;
  4105. }
  4106. if (is_startup_instance && !skip_siblings)
  4107. inst.uid = initial_inst[2];
  4108. else
  4109. inst.uid = this.next_uid++;
  4110. this.objectsByUid[inst.uid.toString()] = inst;
  4111. inst.puid = this.next_puid++;
  4112. inst.iid = type.instances.length;
  4113. for (i = 0, len = this.createRow.length; i < len; ++i)
  4114. {
  4115. if (this.createRow[i].type === type)
  4116. inst.iid++;
  4117. }
  4118. inst.get_iid = cr.inst_get_iid;
  4119. var initial_vars = initial_inst[3];
  4120. if (inst.recycled)
  4121. {
  4122. cr.wipe(inst.extra);
  4123. }
  4124. else
  4125. {
  4126. inst.extra = {};
  4127. if (typeof cr_is_preview !== "undefined")
  4128. {
  4129. inst.instance_var_names = [];
  4130. inst.instance_var_names.length = initial_vars.length;
  4131. for (i = 0, len = initial_vars.length; i < len; i++)
  4132. inst.instance_var_names[i] = initial_vars[i][1];
  4133. }
  4134. inst.instance_vars = [];
  4135. inst.instance_vars.length = initial_vars.length;
  4136. }
  4137. for (i = 0, len = initial_vars.length; i < len; i++)
  4138. inst.instance_vars[i] = initial_vars[i][0];
  4139. if (is_world)
  4140. {
  4141. var wm = initial_inst[0];
  4142. ;
  4143. inst.x = cr.is_undefined(sx) ? wm[0] : sx;
  4144. inst.y = cr.is_undefined(sy) ? wm[1] : sy;
  4145. inst.z = wm[2];
  4146. inst.width = wm[3];
  4147. inst.height = wm[4];
  4148. inst.depth = wm[5];
  4149. inst.angle = wm[6];
  4150. inst.opacity = wm[7];
  4151. inst.hotspotX = wm[8];
  4152. inst.hotspotY = wm[9];
  4153. inst.blend_mode = wm[10];
  4154. effect_fallback = wm[11];
  4155. if (!this.glwrap && type.effect_types.length) // no WebGL renderer and shaders used
  4156. inst.blend_mode = effect_fallback; // use fallback blend mode - destroy mode was handled above
  4157. inst.compositeOp = cr.effectToCompositeOp(inst.blend_mode);
  4158. if (this.gl)
  4159. cr.setGLBlend(inst, inst.blend_mode, this.gl);
  4160. if (inst.recycled)
  4161. {
  4162. for (i = 0, len = wm[12].length; i < len; i++)
  4163. {
  4164. for (j = 0, lenj = wm[12][i].length; j < lenj; j++)
  4165. inst.effect_params[i][j] = wm[12][i][j];
  4166. }
  4167. inst.bbox.set(0, 0, 0, 0);
  4168. inst.collcells.set(0, 0, -1, -1);
  4169. inst.bquad.set_from_rect(inst.bbox);
  4170. inst.bbox_changed_callbacks.length = 0;
  4171. }
  4172. else
  4173. {
  4174. inst.effect_params = wm[12].slice(0);
  4175. for (i = 0, len = inst.effect_params.length; i < len; i++)
  4176. inst.effect_params[i] = wm[12][i].slice(0);
  4177. inst.active_effect_types = [];
  4178. inst.active_effect_flags = [];
  4179. inst.active_effect_flags.length = type.effect_types.length;
  4180. inst.bbox = new cr.rect(0, 0, 0, 0);
  4181. inst.collcells = new cr.rect(0, 0, -1, -1);
  4182. inst.bquad = new cr.quad();
  4183. inst.bbox_changed_callbacks = [];
  4184. inst.set_bbox_changed = cr.set_bbox_changed;
  4185. inst.add_bbox_changed_callback = cr.add_bbox_changed_callback;
  4186. inst.contains_pt = cr.inst_contains_pt;
  4187. inst.update_bbox = cr.update_bbox;
  4188. inst.get_zindex = cr.inst_get_zindex;
  4189. }
  4190. inst.tilemap_exists = false;
  4191. inst.tilemap_width = 0;
  4192. inst.tilemap_height = 0;
  4193. inst.tilemap_data = null;
  4194. if (wm.length === 14)
  4195. {
  4196. inst.tilemap_exists = true;
  4197. inst.tilemap_width = wm[13][0];
  4198. inst.tilemap_height = wm[13][1];
  4199. inst.tilemap_data = wm[13][2];
  4200. }
  4201. for (i = 0, len = type.effect_types.length; i < len; i++)
  4202. inst.active_effect_flags[i] = true;
  4203. inst.updateActiveEffects = cr.inst_updateActiveEffects;
  4204. inst.updateActiveEffects();
  4205. inst.uses_shaders = !!inst.active_effect_types.length;
  4206. inst.bbox_changed = true;
  4207. type.any_bbox_changed = true;
  4208. inst.visible = true;
  4209. inst.my_timescale = -1.0;
  4210. inst.layer = layer;
  4211. inst.zindex = layer.instances.length; // will be placed at top of current layer
  4212. if (typeof inst.collision_poly === "undefined")
  4213. inst.collision_poly = null;
  4214. inst.collisionsEnabled = true;
  4215. this.redraw = true;
  4216. }
  4217. inst.toString = cr.inst_toString;
  4218. var initial_props, binst;
  4219. all_behaviors.length = 0;
  4220. for (i = 0, len = type.families.length; i < len; i++)
  4221. {
  4222. all_behaviors.push.apply(all_behaviors, type.families[i].behaviors);
  4223. }
  4224. all_behaviors.push.apply(all_behaviors, type.behaviors);
  4225. if (inst.recycled)
  4226. {
  4227. for (i = 0, len = all_behaviors.length; i < len; i++)
  4228. {
  4229. var btype = all_behaviors[i];
  4230. binst = inst.behavior_insts[i];
  4231. binst.recycled = true;
  4232. btype.behavior.Instance.call(binst, btype, inst);
  4233. initial_props = initial_inst[4][i];
  4234. for (j = 0, lenj = initial_props.length; j < lenj; j++)
  4235. binst.properties[j] = initial_props[j];
  4236. binst.onCreate();
  4237. btype.behavior.my_instances.add(inst);
  4238. }
  4239. }
  4240. else
  4241. {
  4242. inst.behavior_insts = [];
  4243. for (i = 0, len = all_behaviors.length; i < len; i++)
  4244. {
  4245. var btype = all_behaviors[i];
  4246. var binst = new btype.behavior.Instance(btype, inst);
  4247. binst.recycled = false;
  4248. binst.properties = initial_inst[4][i].slice(0);
  4249. binst.onCreate();
  4250. cr.seal(binst);
  4251. inst.behavior_insts.push(binst);
  4252. btype.behavior.my_instances.add(inst);
  4253. }
  4254. }
  4255. initial_props = initial_inst[5];
  4256. if (inst.recycled)
  4257. {
  4258. for (i = 0, len = initial_props.length; i < len; i++)
  4259. inst.properties[i] = initial_props[i];
  4260. }
  4261. else
  4262. inst.properties = initial_props.slice(0);
  4263. this.createRow.push(inst);
  4264. if (layer)
  4265. {
  4266. ;
  4267. layer.instances.push(inst);
  4268. if (layer.parallaxX !== 1 || layer.parallaxY !== 1)
  4269. type.any_instance_parallaxed = true;
  4270. }
  4271. this.objectcount++;
  4272. if (type.is_contained)
  4273. {
  4274. inst.is_contained = true;
  4275. if (inst.recycled)
  4276. inst.siblings.length = 0;
  4277. else
  4278. inst.siblings = []; // note: should not include self in siblings
  4279. if (!is_startup_instance && !skip_siblings) // layout links initial instances
  4280. {
  4281. for (i = 0, len = type.container.length; i < len; i++)
  4282. {
  4283. if (type.container[i] === type)
  4284. continue;
  4285. if (!type.container[i].default_instance)
  4286. {
  4287. return null;
  4288. }
  4289. inst.siblings.push(this.createInstanceFromInit(type.container[i].default_instance, original_layer, false, is_world ? inst.x : sx, is_world ? inst.y : sy, true));
  4290. }
  4291. for (i = 0, len = inst.siblings.length; i < len; i++)
  4292. {
  4293. inst.siblings[i].siblings.push(inst);
  4294. for (j = 0; j < len; j++)
  4295. {
  4296. if (i !== j)
  4297. inst.siblings[i].siblings.push(inst.siblings[j]);
  4298. }
  4299. }
  4300. }
  4301. }
  4302. else
  4303. {
  4304. inst.is_contained = false;
  4305. inst.siblings = null;
  4306. }
  4307. inst.onCreate();
  4308. if (!inst.recycled)
  4309. cr.seal(inst);
  4310. for (i = 0, len = inst.behavior_insts.length; i < len; i++)
  4311. {
  4312. if (inst.behavior_insts[i].postCreate)
  4313. inst.behavior_insts[i].postCreate();
  4314. }
  4315. return inst;
  4316. };
  4317. Runtime.prototype.getLayerByName = function (layer_name)
  4318. {
  4319. var i, len;
  4320. for (i = 0, len = this.running_layout.layers.length; i < len; i++)
  4321. {
  4322. var layer = this.running_layout.layers[i];
  4323. if (cr.equals_nocase(layer.name, layer_name))
  4324. return layer;
  4325. }
  4326. return null;
  4327. };
  4328. Runtime.prototype.getLayerByNumber = function (index)
  4329. {
  4330. index = cr.floor(index);
  4331. if (index < 0)
  4332. index = 0;
  4333. if (index >= this.running_layout.layers.length)
  4334. index = this.running_layout.layers.length - 1;
  4335. return this.running_layout.layers[index];
  4336. };
  4337. Runtime.prototype.getLayer = function (l)
  4338. {
  4339. if (cr.is_number(l))
  4340. return this.getLayerByNumber(l);
  4341. else
  4342. return this.getLayerByName(l.toString());
  4343. };
  4344. Runtime.prototype.clearSol = function (solModifiers)
  4345. {
  4346. var i, len;
  4347. for (i = 0, len = solModifiers.length; i < len; i++)
  4348. {
  4349. solModifiers[i].getCurrentSol().select_all = true;
  4350. }
  4351. };
  4352. Runtime.prototype.pushCleanSol = function (solModifiers)
  4353. {
  4354. var i, len;
  4355. for (i = 0, len = solModifiers.length; i < len; i++)
  4356. {
  4357. solModifiers[i].pushCleanSol();
  4358. }
  4359. };
  4360. Runtime.prototype.pushCopySol = function (solModifiers)
  4361. {
  4362. var i, len;
  4363. for (i = 0, len = solModifiers.length; i < len; i++)
  4364. {
  4365. solModifiers[i].pushCopySol();
  4366. }
  4367. };
  4368. Runtime.prototype.popSol = function (solModifiers)
  4369. {
  4370. var i, len;
  4371. for (i = 0, len = solModifiers.length; i < len; i++)
  4372. {
  4373. solModifiers[i].popSol();
  4374. }
  4375. };
  4376. Runtime.prototype.updateAllBBoxes = function (type)
  4377. {
  4378. if (!type.any_bbox_changed)
  4379. return; // all instances must already be up-to-date
  4380. var i, len, instances = type.instances;
  4381. for (i = 0, len = instances.length; i < len; ++i)
  4382. {
  4383. instances[i].update_bbox();
  4384. }
  4385. type.any_bbox_changed = false;
  4386. };
  4387. Runtime.prototype.getCollisionCandidates = function (layer, rtype, bbox, candidates)
  4388. {
  4389. var i, len, t;
  4390. var is_parallaxed = (layer ? (layer.parallaxX !== 1 || layer.parallaxY !== 1) : false);
  4391. if (rtype.is_family)
  4392. {
  4393. for (i = 0, len = rtype.members.length; i < len; ++i)
  4394. {
  4395. t = rtype.members[i];
  4396. if (is_parallaxed || t.any_instance_parallaxed)
  4397. {
  4398. cr.appendArray(candidates, t.instances);
  4399. }
  4400. else
  4401. {
  4402. this.updateAllBBoxes(t);
  4403. t.collision_grid.queryRange(bbox, candidates);
  4404. }
  4405. }
  4406. }
  4407. else
  4408. {
  4409. if (is_parallaxed || rtype.any_instance_parallaxed)
  4410. {
  4411. cr.appendArray(candidates, rtype.instances);
  4412. }
  4413. else
  4414. {
  4415. this.updateAllBBoxes(rtype);
  4416. rtype.collision_grid.queryRange(bbox, candidates);
  4417. }
  4418. }
  4419. };
  4420. Runtime.prototype.getTypesCollisionCandidates = function (layer, types, bbox, candidates)
  4421. {
  4422. var i, len;
  4423. for (i = 0, len = types.length; i < len; ++i)
  4424. {
  4425. this.getCollisionCandidates(layer, types[i], bbox, candidates);
  4426. }
  4427. };
  4428. Runtime.prototype.getSolidCollisionCandidates = function (layer, bbox, candidates)
  4429. {
  4430. var solid = this.getSolidBehavior();
  4431. if (!solid)
  4432. return null;
  4433. this.getTypesCollisionCandidates(layer, solid.my_types, bbox, candidates);
  4434. };
  4435. Runtime.prototype.getJumpthruCollisionCandidates = function (layer, bbox, candidates)
  4436. {
  4437. var jumpthru = this.getJumpthruBehavior();
  4438. if (!jumpthru)
  4439. return null;
  4440. this.getTypesCollisionCandidates(layer, jumpthru.my_types, bbox, candidates);
  4441. };
  4442. Runtime.prototype.testAndSelectCanvasPointOverlap = function (type, ptx, pty, inverted)
  4443. {
  4444. var sol = type.getCurrentSol();
  4445. var i, j, inst, len;
  4446. var lx, ly;
  4447. if (sol.select_all)
  4448. {
  4449. if (!inverted)
  4450. {
  4451. sol.select_all = false;
  4452. sol.instances.length = 0; // clear contents
  4453. }
  4454. for (i = 0, len = type.instances.length; i < len; i++)
  4455. {
  4456. inst = type.instances[i];
  4457. inst.update_bbox();
  4458. lx = inst.layer.canvasToLayer(ptx, pty, true);
  4459. ly = inst.layer.canvasToLayer(ptx, pty, false);
  4460. if (inst.contains_pt(lx, ly))
  4461. {
  4462. if (inverted)
  4463. return false;
  4464. else
  4465. sol.instances.push(inst);
  4466. }
  4467. }
  4468. }
  4469. else
  4470. {
  4471. j = 0;
  4472. for (i = 0, len = sol.instances.length; i < len; i++)
  4473. {
  4474. inst = sol.instances[i];
  4475. inst.update_bbox();
  4476. lx = inst.layer.canvasToLayer(ptx, pty, true);
  4477. ly = inst.layer.canvasToLayer(ptx, pty, false);
  4478. if (inst.contains_pt(lx, ly))
  4479. {
  4480. if (inverted)
  4481. return false;
  4482. else
  4483. {
  4484. sol.instances[j] = sol.instances[i];
  4485. j++;
  4486. }
  4487. }
  4488. }
  4489. if (!inverted)
  4490. sol.instances.length = j;
  4491. }
  4492. type.applySolToContainer();
  4493. if (inverted)
  4494. return true; // did not find anything overlapping
  4495. else
  4496. return sol.hasObjects();
  4497. };
  4498. Runtime.prototype.testOverlap = function (a, b)
  4499. {
  4500. if (!a || !b || a === b || !a.collisionsEnabled || !b.collisionsEnabled)
  4501. return false;
  4502. a.update_bbox();
  4503. b.update_bbox();
  4504. var layera = a.layer;
  4505. var layerb = b.layer;
  4506. var different_layers = (layera !== layerb && (layera.parallaxX !== layerb.parallaxX || layerb.parallaxY !== layerb.parallaxY || layera.scale !== layerb.scale || layera.angle !== layerb.angle || layera.zoomRate !== layerb.zoomRate));
  4507. var i, len, i2, i21, x, y, haspolya, haspolyb, polya, polyb;
  4508. if (!different_layers) // same layers: easy check
  4509. {
  4510. if (!a.bbox.intersects_rect(b.bbox))
  4511. return false;
  4512. if (!a.bquad.intersects_quad(b.bquad))
  4513. return false;
  4514. if (a.tilemap_exists && b.tilemap_exists)
  4515. return false;
  4516. if (a.tilemap_exists)
  4517. return this.testTilemapOverlap(a, b);
  4518. if (b.tilemap_exists)
  4519. return this.testTilemapOverlap(b, a);
  4520. haspolya = (a.collision_poly && !a.collision_poly.is_empty());
  4521. haspolyb = (b.collision_poly && !b.collision_poly.is_empty());
  4522. if (!haspolya && !haspolyb)
  4523. return true;
  4524. if (haspolya)
  4525. {
  4526. a.collision_poly.cache_poly(a.width, a.height, a.angle);
  4527. polya = a.collision_poly;
  4528. }
  4529. else
  4530. {
  4531. this.temp_poly.set_from_quad(a.bquad, a.x, a.y, a.width, a.height);
  4532. polya = this.temp_poly;
  4533. }
  4534. if (haspolyb)
  4535. {
  4536. b.collision_poly.cache_poly(b.width, b.height, b.angle);
  4537. polyb = b.collision_poly;
  4538. }
  4539. else
  4540. {
  4541. this.temp_poly.set_from_quad(b.bquad, b.x, b.y, b.width, b.height);
  4542. polyb = this.temp_poly;
  4543. }
  4544. return polya.intersects_poly(polyb, b.x - a.x, b.y - a.y);
  4545. }
  4546. else // different layers: need to do full translated check
  4547. {
  4548. haspolya = (a.collision_poly && !a.collision_poly.is_empty());
  4549. haspolyb = (b.collision_poly && !b.collision_poly.is_empty());
  4550. if (haspolya)
  4551. {
  4552. a.collision_poly.cache_poly(a.width, a.height, a.angle);
  4553. this.temp_poly.set_from_poly(a.collision_poly);
  4554. }
  4555. else
  4556. {
  4557. this.temp_poly.set_from_quad(a.bquad, a.x, a.y, a.width, a.height);
  4558. }
  4559. polya = this.temp_poly;
  4560. if (haspolyb)
  4561. {
  4562. b.collision_poly.cache_poly(b.width, b.height, b.angle);
  4563. this.temp_poly2.set_from_poly(b.collision_poly);
  4564. }
  4565. else
  4566. {
  4567. this.temp_poly2.set_from_quad(b.bquad, b.x, b.y, b.width, b.height);
  4568. }
  4569. polyb = this.temp_poly2;
  4570. for (i = 0, len = polya.pts_count; i < len; i++)
  4571. {
  4572. i2 = i * 2;
  4573. i21 = i2 + 1;
  4574. x = polya.pts_cache[i2];
  4575. y = polya.pts_cache[i21];
  4576. polya.pts_cache[i2] = layera.layerToCanvas(x + a.x, y + a.y, true);
  4577. polya.pts_cache[i21] = layera.layerToCanvas(x + a.x, y + a.y, false);
  4578. }
  4579. polya.update_bbox();
  4580. for (i = 0, len = polyb.pts_count; i < len; i++)
  4581. {
  4582. i2 = i * 2;
  4583. i21 = i2 + 1;
  4584. x = polyb.pts_cache[i2];
  4585. y = polyb.pts_cache[i21];
  4586. polyb.pts_cache[i2] = layerb.layerToCanvas(x + b.x, y + b.y, true);
  4587. polyb.pts_cache[i21] = layerb.layerToCanvas(x + b.x, y + b.y, false);
  4588. }
  4589. polyb.update_bbox();
  4590. return polya.intersects_poly(polyb, 0, 0);
  4591. }
  4592. };
  4593. var tmpQuad = new cr.quad();
  4594. var tmpRect = new cr.rect(0, 0, 0, 0);
  4595. Runtime.prototype.testTilemapOverlap = function (tm, a)
  4596. {
  4597. var collrects = tm.collision_rects;
  4598. var i, len, c, rc;
  4599. var bbox = a.bbox;
  4600. var tmx = tm.x;
  4601. var tmy = tm.y;
  4602. var haspolya = (a.collision_poly && !a.collision_poly.is_empty());
  4603. for (i = 0, len = collrects.length; i < len; ++i)
  4604. {
  4605. c = collrects[i];
  4606. rc = c.rc;
  4607. if (bbox.intersects_rect_off(rc, tmx, tmy))
  4608. {
  4609. tmpQuad.set_from_rect(rc);
  4610. tmpQuad.offset(tmx, tmy);
  4611. if (tmpQuad.intersects_quad(a.bquad))
  4612. {
  4613. if (haspolya)
  4614. {
  4615. a.collision_poly.cache_poly(a.width, a.height, a.angle);
  4616. if (c.poly)
  4617. {
  4618. if (c.poly.intersects_poly(a.collision_poly, a.x - (tmx + rc.left), a.y - (tmy + rc.top)))
  4619. {
  4620. return true;
  4621. }
  4622. }
  4623. else
  4624. {
  4625. this.temp_poly.set_from_quad(tmpQuad, 0, 0, rc.right - rc.left, rc.bottom - rc.top);
  4626. if (this.temp_poly.intersects_poly(a.collision_poly, a.x, a.y))
  4627. return true;
  4628. }
  4629. }
  4630. else
  4631. {
  4632. if (c.poly)
  4633. {
  4634. this.temp_poly.set_from_quad(a.bquad, 0, 0, a.width, a.height);
  4635. if (c.poly.intersects_poly(this.temp_poly, -(tmx + rc.left), -(tmy + rc.top)))
  4636. {
  4637. return true;
  4638. }
  4639. }
  4640. else
  4641. return true;
  4642. }
  4643. }
  4644. }
  4645. }
  4646. return false;
  4647. };
  4648. Runtime.prototype.testRectOverlap = function (r, b)
  4649. {
  4650. if (!b || !b.collisionsEnabled)
  4651. return false;
  4652. b.update_bbox();
  4653. var layerb = b.layer;
  4654. var haspolyb, polyb;
  4655. if (!b.bbox.intersects_rect(r))
  4656. return false;
  4657. if (b.tilemap_exists)
  4658. {
  4659. var collrects = b.collision_rects;
  4660. var i, len, c, tilerc;
  4661. var tmx = b.x;
  4662. var tmy = b.y;
  4663. for (i = 0, len = collrects.length; i < len; ++i)
  4664. {
  4665. c = collrects[i];
  4666. tilerc = c.rc;
  4667. if (r.intersects_rect_off(tilerc, tmx, tmy))
  4668. {
  4669. if (c.poly)
  4670. {
  4671. this.temp_poly.set_from_rect(r, 0, 0);
  4672. if (c.poly.intersects_poly(this.temp_poly, -(tmx + tilerc.left), -(tmy + tilerc.top)))
  4673. return true;
  4674. }
  4675. else
  4676. return true;
  4677. }
  4678. }
  4679. return false;
  4680. }
  4681. else
  4682. {
  4683. tmpQuad.set_from_rect(r);
  4684. if (!b.bquad.intersects_quad(tmpQuad))
  4685. return false;
  4686. haspolyb = (b.collision_poly && !b.collision_poly.is_empty());
  4687. if (!haspolyb)
  4688. return true;
  4689. b.collision_poly.cache_poly(b.width, b.height, b.angle);
  4690. tmpQuad.offset(-r.left, -r.top);
  4691. this.temp_poly.set_from_quad(tmpQuad, 0, 0, 1, 1);
  4692. return b.collision_poly.intersects_poly(this.temp_poly, r.left - b.x, r.top - b.y);
  4693. }
  4694. };
  4695. Runtime.prototype.testSegmentOverlap = function (x1, y1, x2, y2, b)
  4696. {
  4697. if (!b || !b.collisionsEnabled)
  4698. return false;
  4699. b.update_bbox();
  4700. var layerb = b.layer;
  4701. var haspolyb, polyb;
  4702. tmpRect.set(cr.min(x1, x2), cr.min(y1, y2), cr.max(x1, x2), cr.max(y1, y2));
  4703. if (!b.bbox.intersects_rect(tmpRect))
  4704. return false;
  4705. if (b.tilemap_exists)
  4706. {
  4707. var collrects = b.collision_rects;
  4708. var i, len, c, tilerc;
  4709. var tmx = b.x;
  4710. var tmy = b.y;
  4711. for (i = 0, len = collrects.length; i < len; ++i)
  4712. {
  4713. c = collrects[i];
  4714. tilerc = c.rc;
  4715. if (tmpRect.intersects_rect_off(tilerc, tmx, tmy))
  4716. {
  4717. tmpQuad.set_from_rect(tilerc);
  4718. tmpQuad.offset(tmx, tmy);
  4719. if (tmpQuad.intersects_segment(x1, y1, x2, y2))
  4720. {
  4721. if (c.poly)
  4722. {
  4723. if (c.poly.intersects_segment(tmx + tilerc.left, tmy + tilerc.top, x1, y1, x2, y2))
  4724. {
  4725. return true;
  4726. }
  4727. }
  4728. else
  4729. return true;
  4730. }
  4731. }
  4732. }
  4733. return false;
  4734. }
  4735. else
  4736. {
  4737. if (!b.bquad.intersects_segment(x1, y1, x2, y2))
  4738. return false;
  4739. haspolyb = (b.collision_poly && !b.collision_poly.is_empty());
  4740. if (!haspolyb)
  4741. return true;
  4742. b.collision_poly.cache_poly(b.width, b.height, b.angle);
  4743. return b.collision_poly.intersects_segment(b.x, b.y, x1, y1, x2, y2);
  4744. }
  4745. };
  4746. Runtime.prototype.typeHasBehavior = function (t, b)
  4747. {
  4748. if (!b)
  4749. return false;
  4750. var i, len, j, lenj, f;
  4751. for (i = 0, len = t.behaviors.length; i < len; i++)
  4752. {
  4753. if (t.behaviors[i].behavior instanceof b)
  4754. return true;
  4755. }
  4756. if (!t.is_family)
  4757. {
  4758. for (i = 0, len = t.families.length; i < len; i++)
  4759. {
  4760. f = t.families[i];
  4761. for (j = 0, lenj = f.behaviors.length; j < lenj; j++)
  4762. {
  4763. if (f.behaviors[j].behavior instanceof b)
  4764. return true;
  4765. }
  4766. }
  4767. }
  4768. return false;
  4769. };
  4770. Runtime.prototype.typeHasNoSaveBehavior = function (t)
  4771. {
  4772. return this.typeHasBehavior(t, cr.behaviors.NoSave);
  4773. };
  4774. Runtime.prototype.typeHasPersistBehavior = function (t)
  4775. {
  4776. return this.typeHasBehavior(t, cr.behaviors.Persist);
  4777. };
  4778. Runtime.prototype.getSolidBehavior = function ()
  4779. {
  4780. return this.solidBehavior;
  4781. };
  4782. Runtime.prototype.getJumpthruBehavior = function ()
  4783. {
  4784. return this.jumpthruBehavior;
  4785. };
  4786. var candidates = [];
  4787. Runtime.prototype.testOverlapSolid = function (inst)
  4788. {
  4789. var i, len, s;
  4790. inst.update_bbox();
  4791. this.getSolidCollisionCandidates(inst.layer, inst.bbox, candidates);
  4792. for (i = 0, len = candidates.length; i < len; ++i)
  4793. {
  4794. s = candidates[i];
  4795. if (!s.extra.solidEnabled)
  4796. continue;
  4797. if (this.testOverlap(inst, s))
  4798. {
  4799. candidates.length = 0;
  4800. return s;
  4801. }
  4802. }
  4803. candidates.length = 0;
  4804. return null;
  4805. };
  4806. Runtime.prototype.testRectOverlapSolid = function (r)
  4807. {
  4808. var i, len, s;
  4809. this.getSolidCollisionCandidates(null, r, candidates);
  4810. for (i = 0, len = candidates.length; i < len; ++i)
  4811. {
  4812. s = candidates[i];
  4813. if (!s.extra.solidEnabled)
  4814. continue;
  4815. if (this.testRectOverlap(r, s))
  4816. {
  4817. candidates.length = 0;
  4818. return s;
  4819. }
  4820. }
  4821. candidates.length = 0;
  4822. return null;
  4823. };
  4824. var jumpthru_array_ret = [];
  4825. Runtime.prototype.testOverlapJumpThru = function (inst, all)
  4826. {
  4827. var ret = null;
  4828. if (all)
  4829. {
  4830. ret = jumpthru_array_ret;
  4831. ret.length = 0;
  4832. }
  4833. inst.update_bbox();
  4834. this.getJumpthruCollisionCandidates(inst.layer, inst.bbox, candidates);
  4835. var i, len, j;
  4836. for (i = 0, len = candidates.length; i < len; ++i)
  4837. {
  4838. j = candidates[i];
  4839. if (!j.extra.jumpthruEnabled)
  4840. continue;
  4841. if (this.testOverlap(inst, j))
  4842. {
  4843. if (all)
  4844. ret.push(j);
  4845. else
  4846. {
  4847. candidates.length = 0;
  4848. return j;
  4849. }
  4850. }
  4851. }
  4852. candidates.length = 0;
  4853. return ret;
  4854. };
  4855. Runtime.prototype.pushOutSolid = function (inst, xdir, ydir, dist, include_jumpthrus, specific_jumpthru)
  4856. {
  4857. var push_dist = dist || 50;
  4858. var oldx = inst.x
  4859. var oldy = inst.y;
  4860. var i;
  4861. var last_overlapped = null, secondlast_overlapped = null;
  4862. for (i = 0; i < push_dist; i++)
  4863. {
  4864. inst.x = (oldx + (xdir * i));
  4865. inst.y = (oldy + (ydir * i));
  4866. inst.set_bbox_changed();
  4867. if (!this.testOverlap(inst, last_overlapped))
  4868. {
  4869. last_overlapped = this.testOverlapSolid(inst);
  4870. if (last_overlapped)
  4871. secondlast_overlapped = last_overlapped;
  4872. if (!last_overlapped)
  4873. {
  4874. if (include_jumpthrus)
  4875. {
  4876. if (specific_jumpthru)
  4877. last_overlapped = (this.testOverlap(inst, specific_jumpthru) ? specific_jumpthru : null);
  4878. else
  4879. last_overlapped = this.testOverlapJumpThru(inst);
  4880. if (last_overlapped)
  4881. secondlast_overlapped = last_overlapped;
  4882. }
  4883. if (!last_overlapped)
  4884. {
  4885. if (secondlast_overlapped)
  4886. this.pushInFractional(inst, xdir, ydir, secondlast_overlapped, 16);
  4887. return true;
  4888. }
  4889. }
  4890. }
  4891. }
  4892. inst.x = oldx;
  4893. inst.y = oldy;
  4894. inst.set_bbox_changed();
  4895. return false;
  4896. };
  4897. Runtime.prototype.pushOut = function (inst, xdir, ydir, dist, otherinst)
  4898. {
  4899. var push_dist = dist || 50;
  4900. var oldx = inst.x
  4901. var oldy = inst.y;
  4902. var i;
  4903. for (i = 0; i < push_dist; i++)
  4904. {
  4905. inst.x = (oldx + (xdir * i));
  4906. inst.y = (oldy + (ydir * i));
  4907. inst.set_bbox_changed();
  4908. if (!this.testOverlap(inst, otherinst))
  4909. return true;
  4910. }
  4911. inst.x = oldx;
  4912. inst.y = oldy;
  4913. inst.set_bbox_changed();
  4914. return false;
  4915. };
  4916. Runtime.prototype.pushInFractional = function (inst, xdir, ydir, obj, limit)
  4917. {
  4918. var divisor = 2;
  4919. var frac;
  4920. var forward = false;
  4921. var overlapping = false;
  4922. var bestx = inst.x;
  4923. var besty = inst.y;
  4924. while (divisor <= limit)
  4925. {
  4926. frac = 1 / divisor;
  4927. divisor *= 2;
  4928. inst.x += xdir * frac * (forward ? 1 : -1);
  4929. inst.y += ydir * frac * (forward ? 1 : -1);
  4930. inst.set_bbox_changed();
  4931. if (this.testOverlap(inst, obj))
  4932. {
  4933. forward = true;
  4934. overlapping = true;
  4935. }
  4936. else
  4937. {
  4938. forward = false;
  4939. overlapping = false;
  4940. bestx = inst.x;
  4941. besty = inst.y;
  4942. }
  4943. }
  4944. if (overlapping)
  4945. {
  4946. inst.x = bestx;
  4947. inst.y = besty;
  4948. inst.set_bbox_changed();
  4949. }
  4950. };
  4951. Runtime.prototype.pushOutSolidNearest = function (inst, max_dist_)
  4952. {
  4953. var max_dist = (cr.is_undefined(max_dist_) ? 100 : max_dist_);
  4954. var dist = 0;
  4955. var oldx = inst.x
  4956. var oldy = inst.y;
  4957. var dir = 0;
  4958. var dx = 0, dy = 0;
  4959. var last_overlapped = this.testOverlapSolid(inst);
  4960. if (!last_overlapped)
  4961. return true; // already clear of solids
  4962. while (dist <= max_dist)
  4963. {
  4964. switch (dir) {
  4965. case 0: dx = 0; dy = -1; dist++; break;
  4966. case 1: dx = 1; dy = -1; break;
  4967. case 2: dx = 1; dy = 0; break;
  4968. case 3: dx = 1; dy = 1; break;
  4969. case 4: dx = 0; dy = 1; break;
  4970. case 5: dx = -1; dy = 1; break;
  4971. case 6: dx = -1; dy = 0; break;
  4972. case 7: dx = -1; dy = -1; break;
  4973. }
  4974. dir = (dir + 1) % 8;
  4975. inst.x = cr.floor(oldx + (dx * dist));
  4976. inst.y = cr.floor(oldy + (dy * dist));
  4977. inst.set_bbox_changed();
  4978. if (!this.testOverlap(inst, last_overlapped))
  4979. {
  4980. last_overlapped = this.testOverlapSolid(inst);
  4981. if (!last_overlapped)
  4982. return true;
  4983. }
  4984. }
  4985. inst.x = oldx;
  4986. inst.y = oldy;
  4987. inst.set_bbox_changed();
  4988. return false;
  4989. };
  4990. Runtime.prototype.registerCollision = function (a, b)
  4991. {
  4992. if (!a.collisionsEnabled || !b.collisionsEnabled)
  4993. return;
  4994. this.registered_collisions.push([a, b]);
  4995. };
  4996. Runtime.prototype.checkRegisteredCollision = function (a, b)
  4997. {
  4998. var i, len, x;
  4999. for (i = 0, len = this.registered_collisions.length; i < len; i++)
  5000. {
  5001. x = this.registered_collisions[i];
  5002. if ((x[0] == a && x[1] == b) || (x[0] == b && x[1] == a))
  5003. return true;
  5004. }
  5005. return false;
  5006. };
  5007. Runtime.prototype.calculateSolidBounceAngle = function(inst, startx, starty, obj)
  5008. {
  5009. var objx = inst.x;
  5010. var objy = inst.y;
  5011. var radius = cr.max(10, cr.distanceTo(startx, starty, objx, objy));
  5012. var startangle = cr.angleTo(startx, starty, objx, objy);
  5013. var firstsolid = obj || this.testOverlapSolid(inst);
  5014. if (!firstsolid)
  5015. return cr.clamp_angle(startangle + cr.PI);
  5016. var cursolid = firstsolid;
  5017. var i, curangle, anticlockwise_free_angle, clockwise_free_angle;
  5018. var increment = cr.to_radians(5); // 5 degree increments
  5019. for (i = 1; i < 36; i++)
  5020. {
  5021. curangle = startangle - i * increment;
  5022. inst.x = startx + Math.cos(curangle) * radius;
  5023. inst.y = starty + Math.sin(curangle) * radius;
  5024. inst.set_bbox_changed();
  5025. if (!this.testOverlap(inst, cursolid))
  5026. {
  5027. cursolid = obj ? null : this.testOverlapSolid(inst);
  5028. if (!cursolid)
  5029. {
  5030. anticlockwise_free_angle = curangle;
  5031. break;
  5032. }
  5033. }
  5034. }
  5035. if (i === 36)
  5036. anticlockwise_free_angle = cr.clamp_angle(startangle + cr.PI);
  5037. var cursolid = firstsolid;
  5038. for (i = 1; i < 36; i++)
  5039. {
  5040. curangle = startangle + i * increment;
  5041. inst.x = startx + Math.cos(curangle) * radius;
  5042. inst.y = starty + Math.sin(curangle) * radius;
  5043. inst.set_bbox_changed();
  5044. if (!this.testOverlap(inst, cursolid))
  5045. {
  5046. cursolid = obj ? null : this.testOverlapSolid(inst);
  5047. if (!cursolid)
  5048. {
  5049. clockwise_free_angle = curangle;
  5050. break;
  5051. }
  5052. }
  5053. }
  5054. if (i === 36)
  5055. clockwise_free_angle = cr.clamp_angle(startangle + cr.PI);
  5056. inst.x = objx;
  5057. inst.y = objy;
  5058. inst.set_bbox_changed();
  5059. if (clockwise_free_angle === anticlockwise_free_angle)
  5060. return clockwise_free_angle;
  5061. var half_diff = cr.angleDiff(clockwise_free_angle, anticlockwise_free_angle) / 2;
  5062. var normal;
  5063. if (cr.angleClockwise(clockwise_free_angle, anticlockwise_free_angle))
  5064. {
  5065. normal = cr.clamp_angle(anticlockwise_free_angle + half_diff + cr.PI);
  5066. }
  5067. else
  5068. {
  5069. normal = cr.clamp_angle(clockwise_free_angle + half_diff);
  5070. }
  5071. ;
  5072. var vx = Math.cos(startangle);
  5073. var vy = Math.sin(startangle);
  5074. var nx = Math.cos(normal);
  5075. var ny = Math.sin(normal);
  5076. var v_dot_n = vx * nx + vy * ny;
  5077. var rx = vx - 2 * v_dot_n * nx;
  5078. var ry = vy - 2 * v_dot_n * ny;
  5079. return cr.angleTo(0, 0, rx, ry);
  5080. };
  5081. var triggerSheetStack = [];
  5082. var triggerSheetIndex = -1;
  5083. Runtime.prototype.trigger = function (method, inst, value /* for fast triggers */)
  5084. {
  5085. ;
  5086. if (!this.running_layout)
  5087. return false;
  5088. var sheet = this.running_layout.event_sheet;
  5089. if (!sheet)
  5090. return false; // no event sheet active; nothing to trigger
  5091. triggerSheetIndex++;
  5092. if (triggerSheetIndex === triggerSheetStack.length)
  5093. triggerSheetStack.push(new cr.ObjectSet());
  5094. else
  5095. triggerSheetStack[triggerSheetIndex].clear();
  5096. var ret = this.triggerOnSheet(method, inst, sheet, value);
  5097. triggerSheetIndex--;
  5098. return ret;
  5099. };
  5100. Runtime.prototype.triggerOnSheet = function (method, inst, sheet, value)
  5101. {
  5102. var alreadyTriggeredSheets = triggerSheetStack[triggerSheetIndex];
  5103. if (alreadyTriggeredSheets.contains(sheet))
  5104. return false;
  5105. alreadyTriggeredSheets.add(sheet);
  5106. var includes = sheet.includes.valuesRef();
  5107. var ret = false;
  5108. var i, leni, r;
  5109. for (i = 0, leni = includes.length; i < leni; i++)
  5110. {
  5111. if (includes[i].isActive())
  5112. {
  5113. r = this.triggerOnSheet(method, inst, includes[i].include_sheet, value);
  5114. ret = ret || r;
  5115. }
  5116. }
  5117. if (!inst)
  5118. {
  5119. r = this.triggerOnSheetForTypeName(method, inst, "system", sheet, value);
  5120. ret = ret || r;
  5121. }
  5122. else
  5123. {
  5124. r = this.triggerOnSheetForTypeName(method, inst, inst.type.name, sheet, value);
  5125. ret = ret || r;
  5126. for (i = 0, leni = inst.type.families.length; i < leni; i++)
  5127. {
  5128. r = this.triggerOnSheetForTypeName(method, inst, inst.type.families[i].name, sheet, value);
  5129. ret = ret || r;
  5130. }
  5131. }
  5132. return ret; // true if anything got triggered
  5133. };
  5134. Runtime.prototype.triggerOnSheetForTypeName = function (method, inst, type_name, sheet, value)
  5135. {
  5136. var i, leni;
  5137. var ret = false, ret2 = false;
  5138. var trig, index;
  5139. var fasttrigger = (typeof value !== "undefined");
  5140. var triggers = (fasttrigger ? sheet.fasttriggers : sheet.triggers);
  5141. var obj_entry = triggers[type_name];
  5142. if (!obj_entry)
  5143. return ret;
  5144. var triggers_list = null;
  5145. for (i = 0, leni = obj_entry.length; i < leni; i++)
  5146. {
  5147. if (obj_entry[i].method == method)
  5148. {
  5149. triggers_list = obj_entry[i].evs;
  5150. break;
  5151. }
  5152. }
  5153. if (!triggers_list)
  5154. return ret;
  5155. var triggers_to_fire;
  5156. if (fasttrigger)
  5157. {
  5158. triggers_to_fire = triggers_list[value];
  5159. }
  5160. else
  5161. {
  5162. triggers_to_fire = triggers_list;
  5163. }
  5164. if (!triggers_to_fire)
  5165. return null;
  5166. for (i = 0, leni = triggers_to_fire.length; i < leni; i++)
  5167. {
  5168. trig = triggers_to_fire[i][0];
  5169. index = triggers_to_fire[i][1];
  5170. ret2 = this.executeSingleTrigger(inst, type_name, trig, index);
  5171. ret = ret || ret2;
  5172. }
  5173. return ret;
  5174. };
  5175. Runtime.prototype.executeSingleTrigger = function (inst, type_name, trig, index)
  5176. {
  5177. var i, leni;
  5178. var ret = false;
  5179. this.trigger_depth++;
  5180. var current_event = this.getCurrentEventStack().current_event;
  5181. if (current_event)
  5182. this.pushCleanSol(current_event.solModifiersIncludingParents);
  5183. var isrecursive = (this.trigger_depth > 1); // calling trigger from inside another trigger
  5184. this.pushCleanSol(trig.solModifiersIncludingParents);
  5185. if (isrecursive)
  5186. this.pushLocalVarStack();
  5187. var event_stack = this.pushEventStack(trig);
  5188. event_stack.current_event = trig;
  5189. if (inst)
  5190. {
  5191. var sol = this.types[type_name].getCurrentSol();
  5192. sol.select_all = false;
  5193. sol.instances.length = 1;
  5194. sol.instances[0] = inst;
  5195. this.types[type_name].applySolToContainer();
  5196. }
  5197. var ok_to_run = true;
  5198. if (trig.parent)
  5199. {
  5200. var temp_parents_arr = event_stack.temp_parents_arr;
  5201. var cur_parent = trig.parent;
  5202. while (cur_parent)
  5203. {
  5204. temp_parents_arr.push(cur_parent);
  5205. cur_parent = cur_parent.parent;
  5206. }
  5207. temp_parents_arr.reverse();
  5208. for (i = 0, leni = temp_parents_arr.length; i < leni; i++)
  5209. {
  5210. if (!temp_parents_arr[i].run_pretrigger()) // parent event failed
  5211. {
  5212. ok_to_run = false;
  5213. break;
  5214. }
  5215. }
  5216. }
  5217. if (ok_to_run)
  5218. {
  5219. this.execcount++;
  5220. if (trig.orblock)
  5221. trig.run_orblocktrigger(index);
  5222. else
  5223. trig.run();
  5224. ret = ret || event_stack.last_event_true;
  5225. }
  5226. this.popEventStack();
  5227. if (isrecursive)
  5228. this.popLocalVarStack();
  5229. this.popSol(trig.solModifiersIncludingParents);
  5230. if (current_event)
  5231. this.popSol(current_event.solModifiersIncludingParents);
  5232. if (this.isInOnDestroy === 0 && triggerSheetIndex === 0 && !this.isRunningEvents && (!this.deathRow.isEmpty() || this.createRow.length))
  5233. {
  5234. this.ClearDeathRow();
  5235. }
  5236. this.trigger_depth--;
  5237. return ret;
  5238. };
  5239. Runtime.prototype.getCurrentCondition = function ()
  5240. {
  5241. var evinfo = this.getCurrentEventStack();
  5242. return evinfo.current_event.conditions[evinfo.cndindex];
  5243. };
  5244. Runtime.prototype.getCurrentAction = function ()
  5245. {
  5246. var evinfo = this.getCurrentEventStack();
  5247. return evinfo.current_event.actions[evinfo.actindex];
  5248. };
  5249. Runtime.prototype.pushLocalVarStack = function ()
  5250. {
  5251. this.localvar_stack_index++;
  5252. if (this.localvar_stack_index >= this.localvar_stack.length)
  5253. this.localvar_stack.push([]);
  5254. };
  5255. Runtime.prototype.popLocalVarStack = function ()
  5256. {
  5257. ;
  5258. this.localvar_stack_index--;
  5259. };
  5260. Runtime.prototype.getCurrentLocalVarStack = function ()
  5261. {
  5262. return this.localvar_stack[this.localvar_stack_index];
  5263. };
  5264. Runtime.prototype.pushEventStack = function (cur_event)
  5265. {
  5266. this.event_stack_index++;
  5267. if (this.event_stack_index >= this.event_stack.length)
  5268. this.event_stack.push(new cr.eventStackFrame());
  5269. var ret = this.getCurrentEventStack();
  5270. ret.reset(cur_event);
  5271. return ret;
  5272. };
  5273. Runtime.prototype.popEventStack = function ()
  5274. {
  5275. ;
  5276. this.event_stack_index--;
  5277. };
  5278. Runtime.prototype.getCurrentEventStack = function ()
  5279. {
  5280. return this.event_stack[this.event_stack_index];
  5281. };
  5282. Runtime.prototype.pushLoopStack = function (name_)
  5283. {
  5284. this.loop_stack_index++;
  5285. if (this.loop_stack_index >= this.loop_stack.length)
  5286. {
  5287. this.loop_stack.push(cr.seal({ name: name_, index: 0, stopped: false }));
  5288. }
  5289. var ret = this.getCurrentLoop();
  5290. ret.name = name_;
  5291. ret.index = 0;
  5292. ret.stopped = false;
  5293. return ret;
  5294. };
  5295. Runtime.prototype.popLoopStack = function ()
  5296. {
  5297. ;
  5298. this.loop_stack_index--;
  5299. };
  5300. Runtime.prototype.getCurrentLoop = function ()
  5301. {
  5302. return this.loop_stack[this.loop_stack_index];
  5303. };
  5304. Runtime.prototype.getEventVariableByName = function (name, scope)
  5305. {
  5306. var i, leni, j, lenj, sheet, e;
  5307. while (scope)
  5308. {
  5309. for (i = 0, leni = scope.subevents.length; i < leni; i++)
  5310. {
  5311. e = scope.subevents[i];
  5312. if (e instanceof cr.eventvariable && cr.equals_nocase(name, e.name))
  5313. return e;
  5314. }
  5315. scope = scope.parent;
  5316. }
  5317. for (i = 0, leni = this.eventsheets_by_index.length; i < leni; i++)
  5318. {
  5319. sheet = this.eventsheets_by_index[i];
  5320. for (j = 0, lenj = sheet.events.length; j < lenj; j++)
  5321. {
  5322. e = sheet.events[j];
  5323. if (e instanceof cr.eventvariable && cr.equals_nocase(name, e.name))
  5324. return e;
  5325. }
  5326. }
  5327. return null;
  5328. };
  5329. Runtime.prototype.getLayoutBySid = function (sid_)
  5330. {
  5331. var i, len;
  5332. for (i = 0, len = this.layouts_by_index.length; i < len; i++)
  5333. {
  5334. if (this.layouts_by_index[i].sid === sid_)
  5335. return this.layouts_by_index[i];
  5336. }
  5337. return null;
  5338. };
  5339. Runtime.prototype.getObjectTypeBySid = function (sid_)
  5340. {
  5341. var i, len;
  5342. for (i = 0, len = this.types_by_index.length; i < len; i++)
  5343. {
  5344. if (this.types_by_index[i].sid === sid_)
  5345. return this.types_by_index[i];
  5346. }
  5347. return null;
  5348. };
  5349. Runtime.prototype.getGroupBySid = function (sid_)
  5350. {
  5351. var i, len;
  5352. for (i = 0, len = this.allGroups.length; i < len; i++)
  5353. {
  5354. if (this.allGroups[i].sid === sid_)
  5355. return this.allGroups[i];
  5356. }
  5357. return null;
  5358. };
  5359. function makeSaveDb(e)
  5360. {
  5361. var db = e.target.result;
  5362. db.createObjectStore("saves", { keyPath: "slot" });
  5363. };
  5364. function IndexedDB_WriteSlot(slot_, data_, oncomplete_, onerror_)
  5365. {
  5366. var request = indexedDB.open("_C2SaveStates");
  5367. request.onupgradeneeded = makeSaveDb;
  5368. request.onerror = onerror_;
  5369. request.onsuccess = function (e)
  5370. {
  5371. var db = e.target.result;
  5372. db.onerror = onerror_;
  5373. var transaction = db.transaction(["saves"], "readwrite");
  5374. var objectStore = transaction.objectStore("saves");
  5375. var putReq = objectStore.put({"slot": slot_, "data": data_ });
  5376. putReq.onsuccess = oncomplete_;
  5377. };
  5378. };
  5379. function IndexedDB_ReadSlot(slot_, oncomplete_, onerror_)
  5380. {
  5381. var request = indexedDB.open("_C2SaveStates");
  5382. request.onupgradeneeded = makeSaveDb;
  5383. request.onerror = onerror_;
  5384. request.onsuccess = function (e)
  5385. {
  5386. var db = e.target.result;
  5387. db.onerror = onerror_;
  5388. var transaction = db.transaction(["saves"]);
  5389. var objectStore = transaction.objectStore("saves");
  5390. var readReq = objectStore.get(slot_);
  5391. readReq.onsuccess = function (e)
  5392. {
  5393. if (readReq.result)
  5394. oncomplete_(readReq.result["data"]);
  5395. else
  5396. oncomplete_(null);
  5397. };
  5398. };
  5399. };
  5400. Runtime.prototype.signalContinuousPreview = function ()
  5401. {
  5402. this.signalledContinuousPreview = true;
  5403. };
  5404. function doContinuousPreviewReload()
  5405. {
  5406. cr.logexport("Reloading for continuous preview");
  5407. if (!!window["c2cocoonjs"])
  5408. {
  5409. CocoonJS["App"]["reload"]();
  5410. }
  5411. else
  5412. {
  5413. if (window.location.search.indexOf("continuous") > -1)
  5414. window.location.reload(true);
  5415. else
  5416. window.location = window.location + "?continuous";
  5417. }
  5418. };
  5419. Runtime.prototype.handleSaveLoad = function ()
  5420. {
  5421. var self = this;
  5422. var savingToSlot = this.saveToSlot;
  5423. var savingJson = this.lastSaveJson;
  5424. var loadingFromSlot = this.loadFromSlot;
  5425. var continuous = false;
  5426. if (this.signalledContinuousPreview)
  5427. {
  5428. continuous = true;
  5429. savingToSlot = "__c2_continuouspreview";
  5430. this.signalledContinuousPreview = false;
  5431. }
  5432. if (savingToSlot.length)
  5433. {
  5434. this.ClearDeathRow();
  5435. savingJson = this.saveToJSONString();
  5436. if (window.indexedDB && !this.isCocoonJs)
  5437. {
  5438. IndexedDB_WriteSlot(savingToSlot, savingJson, function ()
  5439. {
  5440. cr.logexport("Saved state to IndexedDB storage (" + savingJson.length + " bytes)");
  5441. self.lastSaveJson = savingJson;
  5442. self.trigger(cr.system_object.prototype.cnds.OnSaveComplete, null);
  5443. self.lastSaveJson = "";
  5444. if (continuous)
  5445. doContinuousPreviewReload();
  5446. }, function (e)
  5447. {
  5448. try {
  5449. localStorage.setItem("__c2save_" + savingToSlot, savingJson);
  5450. cr.logexport("Saved state to WebStorage (" + savingJson.length + " bytes)");
  5451. self.lastSaveJson = savingJson;
  5452. self.trigger(cr.system_object.prototype.cnds.OnSaveComplete, null);
  5453. self.lastSaveJson = "";
  5454. if (continuous)
  5455. doContinuousPreviewReload();
  5456. }
  5457. catch (f)
  5458. {
  5459. cr.logexport("Failed to save game state: " + e + "; " + f);
  5460. }
  5461. });
  5462. }
  5463. else
  5464. {
  5465. try {
  5466. localStorage.setItem("__c2save_" + savingToSlot, savingJson);
  5467. cr.logexport("Saved state to WebStorage (" + savingJson.length + " bytes)");
  5468. self.lastSaveJson = savingJson;
  5469. this.trigger(cr.system_object.prototype.cnds.OnSaveComplete, null);
  5470. self.lastSaveJson = "";
  5471. if (continuous)
  5472. doContinuousPreviewReload();
  5473. }
  5474. catch (e)
  5475. {
  5476. cr.logexport("Error saving to WebStorage: " + e);
  5477. }
  5478. }
  5479. this.saveToSlot = "";
  5480. this.loadFromSlot = "";
  5481. this.loadFromJson = "";
  5482. }
  5483. if (loadingFromSlot.length)
  5484. {
  5485. if (window.indexedDB && !this.isCocoonJs)
  5486. {
  5487. IndexedDB_ReadSlot(loadingFromSlot, function (result_)
  5488. {
  5489. if (result_)
  5490. {
  5491. self.loadFromJson = result_;
  5492. cr.logexport("Loaded state from IndexedDB storage (" + self.loadFromJson.length + " bytes)");
  5493. }
  5494. else
  5495. {
  5496. self.loadFromJson = localStorage.getItem("__c2save_" + loadingFromSlot) || "";
  5497. cr.logexport("Loaded state from WebStorage (" + self.loadFromJson.length + " bytes)");
  5498. }
  5499. self.suspendDrawing = false;
  5500. if (!self.loadFromJson.length)
  5501. self.trigger(cr.system_object.prototype.cnds.OnLoadFailed, null);
  5502. }, function (e)
  5503. {
  5504. self.loadFromJson = localStorage.getItem("__c2save_" + loadingFromSlot) || "";
  5505. cr.logexport("Loaded state from WebStorage (" + self.loadFromJson.length + " bytes)");
  5506. self.suspendDrawing = false;
  5507. if (!self.loadFromJson.length)
  5508. self.trigger(cr.system_object.prototype.cnds.OnLoadFailed, null);
  5509. });
  5510. }
  5511. else
  5512. {
  5513. this.loadFromJson = localStorage.getItem("__c2save_" + loadingFromSlot) || "";
  5514. cr.logexport("Loaded state from WebStorage (" + this.loadFromJson.length + " bytes)");
  5515. this.suspendDrawing = false;
  5516. if (!self.loadFromJson.length)
  5517. self.trigger(cr.system_object.prototype.cnds.OnLoadFailed, null);
  5518. }
  5519. this.loadFromSlot = "";
  5520. this.saveToSlot = "";
  5521. }
  5522. if (this.loadFromJson.length)
  5523. {
  5524. this.ClearDeathRow();
  5525. this.loadFromJSONString(this.loadFromJson);
  5526. this.lastSaveJson = this.loadFromJson;
  5527. this.trigger(cr.system_object.prototype.cnds.OnLoadComplete, null);
  5528. this.lastSaveJson = "";
  5529. this.loadFromJson = "";
  5530. }
  5531. };
  5532. function CopyExtraObject(extra)
  5533. {
  5534. var p, ret = {};
  5535. for (p in extra)
  5536. {
  5537. if (extra.hasOwnProperty(p))
  5538. {
  5539. if (extra[p] instanceof cr.ObjectSet)
  5540. continue;
  5541. if (extra[p] && typeof extra[p].c2userdata !== "undefined")
  5542. continue;
  5543. ret[p] = extra[p];
  5544. }
  5545. }
  5546. return ret;
  5547. };
  5548. Runtime.prototype.saveToJSONString = function()
  5549. {
  5550. var i, len, j, lenj, type, layout, typeobj, g, c, a, v, p;
  5551. var o = {
  5552. "c2save": true,
  5553. "version": 1,
  5554. "rt": {
  5555. "time": this.kahanTime.sum,
  5556. "timescale": this.timescale,
  5557. "tickcount": this.tickcount,
  5558. "execcount": this.execcount,
  5559. "next_uid": this.next_uid,
  5560. "running_layout": this.running_layout.sid,
  5561. "start_time_offset": (Date.now() - this.start_time)
  5562. },
  5563. "types": {},
  5564. "layouts": {},
  5565. "events": {
  5566. "groups": {},
  5567. "cnds": {},
  5568. "acts": {},
  5569. "vars": {}
  5570. }
  5571. };
  5572. for (i = 0, len = this.types_by_index.length; i < len; i++)
  5573. {
  5574. type = this.types_by_index[i];
  5575. if (type.is_family || this.typeHasNoSaveBehavior(type))
  5576. continue;
  5577. typeobj = {
  5578. "instances": []
  5579. };
  5580. if (cr.hasAnyOwnProperty(type.extra))
  5581. typeobj["ex"] = CopyExtraObject(type.extra);
  5582. for (j = 0, lenj = type.instances.length; j < lenj; j++)
  5583. {
  5584. typeobj["instances"].push(this.saveInstanceToJSON(type.instances[j]));
  5585. }
  5586. o["types"][type.sid.toString()] = typeobj;
  5587. }
  5588. for (i = 0, len = this.layouts_by_index.length; i < len; i++)
  5589. {
  5590. layout = this.layouts_by_index[i];
  5591. o["layouts"][layout.sid.toString()] = layout.saveToJSON();
  5592. }
  5593. var ogroups = o["events"]["groups"];
  5594. for (i = 0, len = this.allGroups.length; i < len; i++)
  5595. {
  5596. g = this.allGroups[i];
  5597. ogroups[g.sid.toString()] = !!this.activeGroups[g.group_name];
  5598. }
  5599. var ocnds = o["events"]["cnds"];
  5600. for (p in this.cndsBySid)
  5601. {
  5602. if (this.cndsBySid.hasOwnProperty(p))
  5603. {
  5604. c = this.cndsBySid[p];
  5605. if (cr.hasAnyOwnProperty(c.extra))
  5606. ocnds[p] = { "ex": CopyExtraObject(c.extra) };
  5607. }
  5608. }
  5609. var oacts = o["events"]["acts"];
  5610. for (p in this.actsBySid)
  5611. {
  5612. if (this.actsBySid.hasOwnProperty(p))
  5613. {
  5614. a = this.actsBySid[p];
  5615. if (cr.hasAnyOwnProperty(a.extra))
  5616. oacts[p] = { "ex": a.extra };
  5617. }
  5618. }
  5619. var ovars = o["events"]["vars"];
  5620. for (p in this.varsBySid)
  5621. {
  5622. if (this.varsBySid.hasOwnProperty(p))
  5623. {
  5624. v = this.varsBySid[p];
  5625. if (!v.is_constant && (!v.parent || v.is_static))
  5626. ovars[p] = v.data;
  5627. }
  5628. }
  5629. o["system"] = this.system.saveToJSON();
  5630. return JSON.stringify(o);
  5631. };
  5632. Runtime.prototype.refreshUidMap = function ()
  5633. {
  5634. var i, len, type, j, lenj, inst;
  5635. this.objectsByUid = {};
  5636. for (i = 0, len = this.types_by_index.length; i < len; i++)
  5637. {
  5638. type = this.types_by_index[i];
  5639. if (type.is_family)
  5640. continue;
  5641. for (j = 0, lenj = type.instances.length; j < lenj; j++)
  5642. {
  5643. inst = type.instances[j];
  5644. this.objectsByUid[inst.uid.toString()] = inst;
  5645. }
  5646. }
  5647. };
  5648. Runtime.prototype.loadFromJSONString = function (str)
  5649. {
  5650. var o = JSON.parse(str);
  5651. if (!o["c2save"])
  5652. return; // probably not a c2 save state
  5653. if (o["version"] > 1)
  5654. return; // from future version of c2; assume not compatible
  5655. var rt = o["rt"];
  5656. this.kahanTime.reset();
  5657. this.kahanTime.sum = rt["time"];
  5658. this.timescale = rt["timescale"];
  5659. this.tickcount = rt["tickcount"];
  5660. this.execcount = rt["execcount"];
  5661. this.start_time = Date.now() - rt["start_time_offset"];
  5662. var layout_sid = rt["running_layout"];
  5663. if (layout_sid !== this.running_layout.sid)
  5664. {
  5665. var changeToLayout = this.getLayoutBySid(layout_sid);
  5666. if (changeToLayout)
  5667. this.doChangeLayout(changeToLayout);
  5668. else
  5669. return; // layout that was saved on has gone missing (deleted?)
  5670. }
  5671. this.isLoadingState = true;
  5672. var i, len, j, lenj, k, lenk, p, type, existing_insts, load_insts, inst, binst, layout, layer, g, iid, t;
  5673. var otypes = o["types"];
  5674. for (p in otypes)
  5675. {
  5676. if (otypes.hasOwnProperty(p))
  5677. {
  5678. type = this.getObjectTypeBySid(parseInt(p, 10));
  5679. if (!type || type.is_family || this.typeHasNoSaveBehavior(type))
  5680. continue;
  5681. if (otypes[p]["ex"])
  5682. type.extra = otypes[p]["ex"];
  5683. else
  5684. cr.wipe(type.extra);
  5685. existing_insts = type.instances;
  5686. load_insts = otypes[p]["instances"];
  5687. for (i = 0, len = cr.min(existing_insts.length, load_insts.length); i < len; i++)
  5688. {
  5689. this.loadInstanceFromJSON(existing_insts[i], load_insts[i]);
  5690. }
  5691. for (i = load_insts.length, len = existing_insts.length; i < len; i++)
  5692. this.DestroyInstance(existing_insts[i]);
  5693. for (i = existing_insts.length, len = load_insts.length; i < len; i++)
  5694. {
  5695. layer = null;
  5696. if (type.plugin.is_world)
  5697. {
  5698. layer = this.running_layout.getLayerBySid(load_insts[i]["w"]["l"]);
  5699. if (!layer)
  5700. continue;
  5701. }
  5702. inst = this.createInstanceFromInit(type.default_instance, layer, false, 0, 0, true);
  5703. this.loadInstanceFromJSON(inst, load_insts[i]);
  5704. }
  5705. type.stale_iids = true;
  5706. }
  5707. }
  5708. this.ClearDeathRow();
  5709. this.refreshUidMap();
  5710. var olayouts = o["layouts"];
  5711. for (p in olayouts)
  5712. {
  5713. if (olayouts.hasOwnProperty(p))
  5714. {
  5715. layout = this.getLayoutBySid(parseInt(p, 10));
  5716. if (!layout)
  5717. continue; // must've gone missing
  5718. layout.loadFromJSON(olayouts[p]);
  5719. }
  5720. }
  5721. var ogroups = o["events"]["groups"];
  5722. for (p in ogroups)
  5723. {
  5724. if (ogroups.hasOwnProperty(p))
  5725. {
  5726. g = this.getGroupBySid(parseInt(p, 10));
  5727. if (g)
  5728. this.activeGroups[g.group_name] = ogroups[p];
  5729. }
  5730. }
  5731. var ocnds = o["events"]["cnds"];
  5732. for (p in ocnds)
  5733. {
  5734. if (ocnds.hasOwnProperty(p) && this.cndsBySid.hasOwnProperty(p))
  5735. {
  5736. this.cndsBySid[p].extra = ocnds[p]["ex"];
  5737. }
  5738. }
  5739. var oacts = o["events"]["acts"];
  5740. for (p in oacts)
  5741. {
  5742. if (oacts.hasOwnProperty(p) && this.actsBySid.hasOwnProperty(p))
  5743. {
  5744. this.actsBySid[p].extra = oacts[p]["ex"];
  5745. }
  5746. }
  5747. var ovars = o["events"]["vars"];
  5748. for (p in ovars)
  5749. {
  5750. if (ovars.hasOwnProperty(p) && this.varsBySid.hasOwnProperty(p))
  5751. {
  5752. this.varsBySid[p].data = ovars[p];
  5753. }
  5754. }
  5755. this.next_uid = rt["next_uid"];
  5756. this.isLoadingState = false;
  5757. this.system.loadFromJSON(o["system"]);
  5758. for (i = 0, len = this.types_by_index.length; i < len; i++)
  5759. {
  5760. type = this.types_by_index[i];
  5761. if (type.is_family)
  5762. continue;
  5763. for (j = 0, lenj = type.instances.length; j < lenj; j++)
  5764. {
  5765. inst = type.instances[j];
  5766. if (type.is_contained)
  5767. {
  5768. iid = inst.get_iid();
  5769. inst.siblings.length = 0;
  5770. for (k = 0, lenk = type.container.length; k < lenk; k++)
  5771. {
  5772. t = type.container[k];
  5773. if (type === t)
  5774. continue;
  5775. ;
  5776. inst.siblings.push(t.instances[iid]);
  5777. }
  5778. }
  5779. if (inst.afterLoad)
  5780. inst.afterLoad();
  5781. if (inst.behavior_insts)
  5782. {
  5783. for (k = 0, lenk = inst.behavior_insts.length; k < lenk; k++)
  5784. {
  5785. binst = inst.behavior_insts[k];
  5786. if (binst.afterLoad)
  5787. binst.afterLoad();
  5788. }
  5789. }
  5790. }
  5791. }
  5792. this.redraw = true;
  5793. };
  5794. Runtime.prototype.saveInstanceToJSON = function(inst, state_only)
  5795. {
  5796. var i, len, world, behinst, et;
  5797. var type = inst.type;
  5798. var plugin = type.plugin;
  5799. var o = {};
  5800. if (state_only)
  5801. o["c2"] = true; // mark as known json data from Construct 2
  5802. else
  5803. o["uid"] = inst.uid;
  5804. if (cr.hasAnyOwnProperty(inst.extra))
  5805. o["ex"] = CopyExtraObject(inst.extra);
  5806. if (inst.instance_vars && inst.instance_vars.length)
  5807. {
  5808. o["ivs"] = {};
  5809. for (i = 0, len = inst.instance_vars.length; i < len; i++)
  5810. {
  5811. o["ivs"][inst.type.instvar_sids[i].toString()] = inst.instance_vars[i];
  5812. }
  5813. }
  5814. if (plugin.is_world)
  5815. {
  5816. world = {
  5817. "x": inst.x,
  5818. "y": inst.y,
  5819. "w": inst.width,
  5820. "h": inst.height,
  5821. "l": inst.layer.sid,
  5822. "zi": inst.get_zindex()
  5823. };
  5824. if (inst.angle !== 0)
  5825. world["a"] = inst.angle;
  5826. if (inst.opacity !== 1)
  5827. world["o"] = inst.opacity;
  5828. if (inst.hotspotX !== 0.5)
  5829. world["hX"] = inst.hotspotX;
  5830. if (inst.hotspotY !== 0.5)
  5831. world["hY"] = inst.hotspotY;
  5832. if (inst.blend_mode !== 0)
  5833. world["bm"] = inst.blend_mode;
  5834. if (!inst.visible)
  5835. world["v"] = inst.visible;
  5836. if (!inst.collisionsEnabled)
  5837. world["ce"] = inst.collisionsEnabled;
  5838. if (inst.my_timescale !== -1)
  5839. world["mts"] = inst.my_timescale;
  5840. if (type.effect_types.length)
  5841. {
  5842. world["fx"] = [];
  5843. for (i = 0, len = type.effect_types.length; i < len; i++)
  5844. {
  5845. et = type.effect_types[i];
  5846. world["fx"].push({"name": et.name,
  5847. "active": inst.active_effect_flags[et.index],
  5848. "params": inst.effect_params[et.index] });
  5849. }
  5850. }
  5851. o["w"] = world;
  5852. }
  5853. if (inst.behavior_insts && inst.behavior_insts.length)
  5854. {
  5855. o["behs"] = {};
  5856. for (i = 0, len = inst.behavior_insts.length; i < len; i++)
  5857. {
  5858. behinst = inst.behavior_insts[i];
  5859. if (behinst.saveToJSON)
  5860. o["behs"][behinst.type.sid.toString()] = behinst.saveToJSON();
  5861. }
  5862. }
  5863. if (inst.saveToJSON)
  5864. o["data"] = inst.saveToJSON();
  5865. return o;
  5866. };
  5867. Runtime.prototype.getInstanceVarIndexBySid = function (type, sid_)
  5868. {
  5869. var i, len;
  5870. for (i = 0, len = type.instvar_sids.length; i < len; i++)
  5871. {
  5872. if (type.instvar_sids[i] === sid_)
  5873. return i;
  5874. }
  5875. return -1;
  5876. };
  5877. Runtime.prototype.getBehaviorIndexBySid = function (inst, sid_)
  5878. {
  5879. var i, len;
  5880. for (i = 0, len = inst.behavior_insts.length; i < len; i++)
  5881. {
  5882. if (inst.behavior_insts[i].type.sid === sid_)
  5883. return i;
  5884. }
  5885. return -1;
  5886. };
  5887. Runtime.prototype.loadInstanceFromJSON = function(inst, o, state_only)
  5888. {
  5889. var p, i, len, iv, oivs, world, fxindex, obehs, behindex;
  5890. var oldlayer;
  5891. var type = inst.type;
  5892. var plugin = type.plugin;
  5893. if (state_only)
  5894. {
  5895. if (!o["c2"])
  5896. return;
  5897. }
  5898. else
  5899. inst.uid = o["uid"];
  5900. if (o["ex"])
  5901. inst.extra = o["ex"];
  5902. else
  5903. cr.wipe(inst.extra);
  5904. oivs = o["ivs"];
  5905. if (oivs)
  5906. {
  5907. for (p in oivs)
  5908. {
  5909. if (oivs.hasOwnProperty(p))
  5910. {
  5911. iv = this.getInstanceVarIndexBySid(type, parseInt(p, 10));
  5912. if (iv < 0 || iv >= inst.instance_vars.length)
  5913. continue; // must've gone missing
  5914. inst.instance_vars[iv] = oivs[p];
  5915. }
  5916. }
  5917. }
  5918. if (plugin.is_world)
  5919. {
  5920. world = o["w"];
  5921. if (inst.layer.sid !== world["l"])
  5922. {
  5923. oldlayer = inst.layer;
  5924. inst.layer = this.running_layout.getLayerBySid(world["l"]);
  5925. if (inst.layer)
  5926. {
  5927. inst.layer.instances.push(inst);
  5928. inst.layer.zindices_stale = true;
  5929. cr.arrayFindRemove(oldlayer.instances, inst);
  5930. oldlayer.zindices_stale = true;
  5931. }
  5932. else
  5933. {
  5934. inst.layer = oldlayer;
  5935. this.DestroyInstance(inst);
  5936. }
  5937. }
  5938. inst.x = world["x"];
  5939. inst.y = world["y"];
  5940. inst.width = world["w"];
  5941. inst.height = world["h"];
  5942. inst.zindex = world["zi"];
  5943. inst.angle = world.hasOwnProperty("a") ? world["a"] : 0;
  5944. inst.opacity = world.hasOwnProperty("o") ? world["o"] : 1;
  5945. inst.hotspotX = world.hasOwnProperty("hX") ? world["hX"] : 0.5;
  5946. inst.hotspotY = world.hasOwnProperty("hY") ? world["hY"] : 0.5;
  5947. inst.visible = world.hasOwnProperty("v") ? world["v"] : true;
  5948. inst.collisionsEnabled = world.hasOwnProperty("ce") ? world["ce"] : true;
  5949. inst.my_timescale = world.hasOwnProperty("mts") ? world["mts"] : -1;
  5950. inst.blend_mode = world.hasOwnProperty("bm") ? world["bm"] : 0;;
  5951. inst.compositeOp = cr.effectToCompositeOp(inst.blend_mode);
  5952. if (this.gl)
  5953. cr.setGLBlend(inst, inst.blend_mode, this.gl);
  5954. inst.set_bbox_changed();
  5955. if (world.hasOwnProperty("fx"))
  5956. {
  5957. for (i = 0, len = world["fx"].length; i < len; i++)
  5958. {
  5959. fxindex = type.getEffectIndexByName(world["fx"][i]["name"]);
  5960. if (fxindex < 0)
  5961. continue; // must've gone missing
  5962. inst.active_effect_flags[fxindex] = world["fx"][i]["active"];
  5963. inst.effect_params[fxindex] = world["fx"][i]["params"];
  5964. }
  5965. }
  5966. inst.updateActiveEffects();
  5967. }
  5968. obehs = o["behs"];
  5969. if (obehs)
  5970. {
  5971. for (p in obehs)
  5972. {
  5973. if (obehs.hasOwnProperty(p))
  5974. {
  5975. behindex = this.getBehaviorIndexBySid(inst, parseInt(p, 10));
  5976. if (behindex < 0)
  5977. continue; // must've gone missing
  5978. inst.behavior_insts[behindex].loadFromJSON(obehs[p]);
  5979. }
  5980. }
  5981. }
  5982. if (o["data"])
  5983. inst.loadFromJSON(o["data"]);
  5984. };
  5985. cr.runtime = Runtime;
  5986. cr.createRuntime = function (canvasid)
  5987. {
  5988. return new Runtime(document.getElementById(canvasid));
  5989. };
  5990. cr.createDCRuntime = function (w, h)
  5991. {
  5992. return new Runtime({ "dc": true, "width": w, "height": h });
  5993. };
  5994. window["cr_createRuntime"] = cr.createRuntime;
  5995. window["cr_createDCRuntime"] = cr.createDCRuntime;
  5996. window["createCocoonJSRuntime"] = function ()
  5997. {
  5998. window["c2cocoonjs"] = true;
  5999. var canvas = document.createElement("screencanvas") || document.createElement("canvas");
  6000. canvas.screencanvas = true;
  6001. document.body.appendChild(canvas);
  6002. var rt = new Runtime(canvas);
  6003. window["c2runtime"] = rt;
  6004. window.addEventListener("orientationchange", function () {
  6005. window["c2runtime"]["setSize"](window.innerWidth, window.innerHeight);
  6006. });
  6007. window["c2runtime"]["setSize"](window.innerWidth, window.innerHeight);
  6008. return rt;
  6009. };
  6010. }());
  6011. window["cr_getC2Runtime"] = function()
  6012. {
  6013. var canvas = document.getElementById("c2canvas");
  6014. if (canvas)
  6015. return canvas["c2runtime"];
  6016. else if (window["c2runtime"])
  6017. return window["c2runtime"];
  6018. else
  6019. return null;
  6020. }
  6021. window["cr_sizeCanvas"] = function(w, h)
  6022. {
  6023. if (w === 0 || h === 0)
  6024. return;
  6025. var runtime = window["cr_getC2Runtime"]();
  6026. if (runtime)
  6027. runtime["setSize"](w, h);
  6028. }
  6029. window["cr_setSuspended"] = function(s)
  6030. {
  6031. var runtime = window["cr_getC2Runtime"]();
  6032. if (runtime)
  6033. runtime["setSuspended"](s);
  6034. }
  6035. ;
  6036. (function()
  6037. {
  6038. function Layout(runtime, m)
  6039. {
  6040. this.runtime = runtime;
  6041. this.event_sheet = null;
  6042. this.scrollX = (this.runtime.original_width / 2);
  6043. this.scrollY = (this.runtime.original_height / 2);
  6044. this.scale = 1.0;
  6045. this.angle = 0;
  6046. this.first_visit = true;
  6047. this.name = m[0];
  6048. this.width = m[1];
  6049. this.height = m[2];
  6050. this.unbounded_scrolling = m[3];
  6051. this.sheetname = m[4];
  6052. this.sid = m[5];
  6053. var lm = m[6];
  6054. var i, len;
  6055. this.layers = [];
  6056. this.initial_types = [];
  6057. for (i = 0, len = lm.length; i < len; i++)
  6058. {
  6059. var layer = new cr.layer(this, lm[i]);
  6060. layer.number = i;
  6061. cr.seal(layer);
  6062. this.layers.push(layer);
  6063. }
  6064. var im = m[7];
  6065. this.initial_nonworld = [];
  6066. for (i = 0, len = im.length; i < len; i++)
  6067. {
  6068. var inst = im[i];
  6069. var type = this.runtime.types_by_index[inst[1]];
  6070. ;
  6071. if (!type.default_instance)
  6072. type.default_instance = inst;
  6073. this.initial_nonworld.push(inst);
  6074. if (this.initial_types.indexOf(type) === -1)
  6075. this.initial_types.push(type);
  6076. }
  6077. this.effect_types = [];
  6078. this.active_effect_types = [];
  6079. this.effect_params = [];
  6080. for (i = 0, len = m[8].length; i < len; i++)
  6081. {
  6082. this.effect_types.push({
  6083. id: m[8][i][0],
  6084. name: m[8][i][1],
  6085. shaderindex: -1,
  6086. active: true,
  6087. index: i
  6088. });
  6089. this.effect_params.push(m[8][i][2].slice(0));
  6090. }
  6091. this.updateActiveEffects();
  6092. this.rcTex = new cr.rect(0, 0, 1, 1);
  6093. this.rcTex2 = new cr.rect(0, 0, 1, 1);
  6094. this.persist_data = {};
  6095. };
  6096. Layout.prototype.saveObjectToPersist = function (inst)
  6097. {
  6098. var sidStr = inst.type.sid.toString();
  6099. if (!this.persist_data.hasOwnProperty(sidStr))
  6100. this.persist_data[sidStr] = [];
  6101. var type_persist = this.persist_data[sidStr];
  6102. type_persist.push(this.runtime.saveInstanceToJSON(inst));
  6103. };
  6104. Layout.prototype.hasOpaqueBottomLayer = function ()
  6105. {
  6106. var layer = this.layers[0];
  6107. return !layer.transparent && layer.opacity === 1.0 && !layer.forceOwnTexture && layer.visible;
  6108. };
  6109. Layout.prototype.updateActiveEffects = function ()
  6110. {
  6111. this.active_effect_types.length = 0;
  6112. var i, len, et;
  6113. for (i = 0, len = this.effect_types.length; i < len; i++)
  6114. {
  6115. et = this.effect_types[i];
  6116. if (et.active)
  6117. this.active_effect_types.push(et);
  6118. }
  6119. };
  6120. Layout.prototype.getEffectByName = function (name_)
  6121. {
  6122. var i, len, et;
  6123. for (i = 0, len = this.effect_types.length; i < len; i++)
  6124. {
  6125. et = this.effect_types[i];
  6126. if (et.name === name_)
  6127. return et;
  6128. }
  6129. return null;
  6130. };
  6131. var created_instances = [];
  6132. Layout.prototype.startRunning = function ()
  6133. {
  6134. if (this.sheetname)
  6135. {
  6136. this.event_sheet = this.runtime.eventsheets[this.sheetname];
  6137. ;
  6138. }
  6139. this.runtime.running_layout = this;
  6140. this.scrollX = (this.runtime.original_width / 2);
  6141. this.scrollY = (this.runtime.original_height / 2);
  6142. var i, k, len, lenk, type, type_instances, inst, iid, t, s, p, q, type_data, layer;
  6143. for (i = 0, len = this.runtime.types_by_index.length; i < len; i++)
  6144. {
  6145. type = this.runtime.types_by_index[i];
  6146. if (type.is_family)
  6147. continue; // instances are only transferred for their real type
  6148. type_instances = type.instances;
  6149. for (k = 0, lenk = type_instances.length; k < lenk; k++)
  6150. {
  6151. inst = type_instances[k];
  6152. if (inst.layer)
  6153. {
  6154. var num = inst.layer.number;
  6155. if (num >= this.layers.length)
  6156. num = this.layers.length - 1;
  6157. inst.layer = this.layers[num];
  6158. inst.layer.instances.push(inst);
  6159. inst.layer.zindices_stale = true;
  6160. }
  6161. }
  6162. }
  6163. var layer;
  6164. created_instances.length = 0;
  6165. this.boundScrolling();
  6166. for (i = 0, len = this.layers.length; i < len; i++)
  6167. {
  6168. layer = this.layers[i];
  6169. layer.createInitialInstances(); // fills created_instances
  6170. layer.disableAngle = true;
  6171. var px = layer.canvasToLayer(0, 0, true, true);
  6172. var py = layer.canvasToLayer(0, 0, false, true);
  6173. layer.disableAngle = false;
  6174. if (this.runtime.pixel_rounding)
  6175. {
  6176. px = (px + 0.5) | 0;
  6177. py = (py + 0.5) | 0;
  6178. }
  6179. layer.rotateViewport(px, py, null);
  6180. }
  6181. var uids_changed = false;
  6182. if (!this.first_visit)
  6183. {
  6184. for (p in this.persist_data)
  6185. {
  6186. if (this.persist_data.hasOwnProperty(p))
  6187. {
  6188. type = this.runtime.getObjectTypeBySid(parseInt(p, 10));
  6189. if (!type || type.is_family || !this.runtime.typeHasPersistBehavior(type))
  6190. continue;
  6191. type_data = this.persist_data[p];
  6192. for (i = 0, len = type_data.length; i < len; i++)
  6193. {
  6194. layer = null;
  6195. if (type.plugin.is_world)
  6196. {
  6197. layer = this.getLayerBySid(type_data[i]["w"]["l"]);
  6198. if (!layer)
  6199. continue;
  6200. }
  6201. inst = this.runtime.createInstanceFromInit(type.default_instance, layer, false, 0, 0, true);
  6202. this.runtime.loadInstanceFromJSON(inst, type_data[i]);
  6203. uids_changed = true;
  6204. created_instances.push(inst);
  6205. }
  6206. type_data.length = 0;
  6207. }
  6208. }
  6209. for (i = 0, len = this.layers.length; i < len; i++)
  6210. {
  6211. this.layers[i].instances.sort(sortInstanceByZIndex);
  6212. this.layers[i].zindices_stale = true; // in case of duplicates/holes
  6213. }
  6214. }
  6215. if (uids_changed)
  6216. {
  6217. this.runtime.ClearDeathRow();
  6218. this.runtime.refreshUidMap();
  6219. }
  6220. for (i = 0; i < created_instances.length; i++)
  6221. {
  6222. inst = created_instances[i];
  6223. if (!inst.type.is_contained)
  6224. continue;
  6225. iid = inst.get_iid();
  6226. for (k = 0, lenk = inst.type.container.length; k < lenk; k++)
  6227. {
  6228. t = inst.type.container[k];
  6229. if (inst.type === t)
  6230. continue;
  6231. if (t.instances.length > iid)
  6232. inst.siblings.push(t.instances[iid]);
  6233. else
  6234. {
  6235. if (!t.default_instance)
  6236. {
  6237. }
  6238. else
  6239. {
  6240. s = this.runtime.createInstanceFromInit(t.default_instance, inst.layer, true, inst.x, inst.y, true);
  6241. this.runtime.ClearDeathRow();
  6242. t.updateIIDs();
  6243. inst.siblings.push(s);
  6244. created_instances.push(s); // come back around and link up its own instances too
  6245. }
  6246. }
  6247. }
  6248. }
  6249. for (i = 0, len = this.initial_nonworld.length; i < len; i++)
  6250. {
  6251. inst = this.runtime.createInstanceFromInit(this.initial_nonworld[i], null, true);
  6252. ;
  6253. }
  6254. this.runtime.changelayout = null;
  6255. this.runtime.ClearDeathRow();
  6256. if (this.runtime.ctx && !this.runtime.isDomFree)
  6257. {
  6258. for (i = 0, len = this.runtime.types_by_index.length; i < len; i++)
  6259. {
  6260. t = this.runtime.types_by_index[i];
  6261. if (t.is_family || !t.instances.length || !t.preloadCanvas2D)
  6262. continue;
  6263. t.preloadCanvas2D(this.runtime.ctx);
  6264. }
  6265. }
  6266. /*
  6267. if (this.runtime.glwrap)
  6268. {
  6269. console.log("Estimated VRAM at layout start: " + this.runtime.glwrap.textureCount() + " textures, approx. " + Math.round(this.runtime.glwrap.estimateVRAM() / 1024) + " kb");
  6270. }
  6271. */
  6272. for (i = 0, len = created_instances.length; i < len; i++)
  6273. {
  6274. inst = created_instances[i];
  6275. this.runtime.trigger(Object.getPrototypeOf(inst.type.plugin).cnds.OnCreated, inst);
  6276. }
  6277. created_instances.length = 0;
  6278. this.runtime.trigger(cr.system_object.prototype.cnds.OnLayoutStart, null);
  6279. this.first_visit = false;
  6280. };
  6281. Layout.prototype.createGlobalNonWorlds = function ()
  6282. {
  6283. var i, k, len, initial_inst, inst, type;
  6284. for (i = 0, k = 0, len = this.initial_nonworld.length; i < len; i++)
  6285. {
  6286. initial_inst = this.initial_nonworld[i];
  6287. type = this.runtime.types_by_index[initial_inst[1]];
  6288. if (type.global)
  6289. inst = this.runtime.createInstanceFromInit(initial_inst, null, true);
  6290. else
  6291. {
  6292. this.initial_nonworld[k] = initial_inst;
  6293. k++;
  6294. }
  6295. }
  6296. this.initial_nonworld.length = k;
  6297. };
  6298. Layout.prototype.stopRunning = function ()
  6299. {
  6300. ;
  6301. /*
  6302. if (this.runtime.glwrap)
  6303. {
  6304. console.log("Estimated VRAM at layout end: " + this.runtime.glwrap.textureCount() + " textures, approx. " + Math.round(this.runtime.glwrap.estimateVRAM() / 1024) + " kb");
  6305. }
  6306. */
  6307. this.runtime.trigger(cr.system_object.prototype.cnds.OnLayoutEnd, null);
  6308. this.runtime.system.waits.length = 0;
  6309. var i, leni, j, lenj;
  6310. var layer_instances, inst, type;
  6311. for (i = 0, leni = this.layers.length; i < leni; i++)
  6312. {
  6313. layer_instances = this.layers[i].instances;
  6314. for (j = 0, lenj = layer_instances.length; j < lenj; j++)
  6315. {
  6316. inst = layer_instances[j];
  6317. if (!inst.type.global)
  6318. {
  6319. if (this.runtime.typeHasPersistBehavior(inst.type))
  6320. this.saveObjectToPersist(inst);
  6321. this.runtime.DestroyInstance(inst);
  6322. }
  6323. }
  6324. this.runtime.ClearDeathRow();
  6325. layer_instances.length = 0;
  6326. this.layers[i].zindices_stale = true;
  6327. }
  6328. for (i = 0, leni = this.runtime.types_by_index.length; i < leni; i++)
  6329. {
  6330. type = this.runtime.types_by_index[i];
  6331. if (type.global || type.plugin.is_world || type.plugin.singleglobal || type.is_family)
  6332. continue;
  6333. for (j = 0, lenj = type.instances.length; j < lenj; j++)
  6334. this.runtime.DestroyInstance(type.instances[j]);
  6335. this.runtime.ClearDeathRow();
  6336. }
  6337. };
  6338. Layout.prototype.draw = function (ctx)
  6339. {
  6340. var layout_canvas;
  6341. var layout_ctx = ctx;
  6342. var ctx_changed = false;
  6343. var render_offscreen = !this.runtime.fullscreenScalingQuality;
  6344. if (render_offscreen)
  6345. {
  6346. if (!this.runtime.layout_canvas)
  6347. {
  6348. this.runtime.layout_canvas = document.createElement("canvas");
  6349. layout_canvas = this.runtime.layout_canvas;
  6350. layout_canvas.width = this.runtime.draw_width;
  6351. layout_canvas.height = this.runtime.draw_height;
  6352. this.runtime.layout_ctx = layout_canvas.getContext("2d");
  6353. ctx_changed = true;
  6354. }
  6355. layout_canvas = this.runtime.layout_canvas;
  6356. layout_ctx = this.runtime.layout_ctx;
  6357. if (layout_canvas.width !== this.runtime.draw_width)
  6358. {
  6359. layout_canvas.width = this.runtime.draw_width;
  6360. ctx_changed = true;
  6361. }
  6362. if (layout_canvas.height !== this.runtime.draw_height)
  6363. {
  6364. layout_canvas.height = this.runtime.draw_height;
  6365. ctx_changed = true;
  6366. }
  6367. if (ctx_changed)
  6368. {
  6369. layout_ctx["webkitImageSmoothingEnabled"] = this.runtime.linearSampling;
  6370. layout_ctx["mozImageSmoothingEnabled"] = this.runtime.linearSampling;
  6371. layout_ctx["msImageSmoothingEnabled"] = this.runtime.linearSampling;
  6372. layout_ctx["imageSmoothingEnabled"] = this.runtime.linearSampling;
  6373. }
  6374. }
  6375. layout_ctx.globalAlpha = 1;
  6376. layout_ctx.globalCompositeOperation = "source-over";
  6377. if (this.runtime.alphaBackground && !this.hasOpaqueBottomLayer())
  6378. layout_ctx.clearRect(0, 0, this.runtime.draw_width, this.runtime.draw_height);
  6379. var i, len, l;
  6380. for (i = 0, len = this.layers.length; i < len; i++)
  6381. {
  6382. l = this.layers[i];
  6383. if (l.visible && l.opacity > 0 && l.blend_mode !== 11)
  6384. l.draw(layout_ctx);
  6385. }
  6386. if (render_offscreen)
  6387. {
  6388. ctx.drawImage(layout_canvas, 0, 0, this.runtime.width, this.runtime.height);
  6389. }
  6390. };
  6391. Layout.prototype.drawGL = function (glw)
  6392. {
  6393. var render_to_texture = (this.active_effect_types.length > 0 ||
  6394. this.runtime.uses_background_blending ||
  6395. !this.runtime.fullscreenScalingQuality);
  6396. if (render_to_texture)
  6397. {
  6398. if (!this.runtime.layout_tex)
  6399. {
  6400. this.runtime.layout_tex = glw.createEmptyTexture(this.runtime.draw_width, this.runtime.draw_height, this.runtime.linearSampling);
  6401. }
  6402. if (this.runtime.layout_tex.c2width !== this.runtime.draw_width || this.runtime.layout_tex.c2height !== this.runtime.draw_height)
  6403. {
  6404. glw.deleteTexture(this.runtime.layout_tex);
  6405. this.runtime.layout_tex = glw.createEmptyTexture(this.runtime.draw_width, this.runtime.draw_height, this.runtime.linearSampling);
  6406. }
  6407. glw.setRenderingToTexture(this.runtime.layout_tex);
  6408. if (!this.runtime.fullscreenScalingQuality)
  6409. {
  6410. glw.setSize(this.runtime.draw_width, this.runtime.draw_height);
  6411. }
  6412. }
  6413. else
  6414. {
  6415. if (this.runtime.layout_tex)
  6416. {
  6417. glw.setRenderingToTexture(null);
  6418. glw.deleteTexture(this.runtime.layout_tex);
  6419. this.runtime.layout_tex = null;
  6420. }
  6421. }
  6422. if (this.runtime.alphaBackground && !this.hasOpaqueBottomLayer())
  6423. glw.clear(0, 0, 0, 0);
  6424. var i, len;
  6425. for (i = 0, len = this.layers.length; i < len; i++)
  6426. {
  6427. if (this.layers[i].visible && this.layers[i].opacity > 0)
  6428. this.layers[i].drawGL(glw);
  6429. }
  6430. if (render_to_texture)
  6431. {
  6432. if (this.active_effect_types.length === 0 ||
  6433. (this.active_effect_types.length === 1 && this.runtime.fullscreenScalingQuality))
  6434. {
  6435. if (this.active_effect_types.length === 1)
  6436. {
  6437. var etindex = this.active_effect_types[0].index;
  6438. glw.switchProgram(this.active_effect_types[0].shaderindex);
  6439. glw.setProgramParameters(null, // backTex
  6440. 1.0 / this.runtime.draw_width, // pixelWidth
  6441. 1.0 / this.runtime.draw_height, // pixelHeight
  6442. 0.0, 0.0, // destStart
  6443. 1.0, 1.0, // destEnd
  6444. this.scale, // layerScale
  6445. this.effect_params[etindex]); // fx parameters
  6446. if (glw.programIsAnimated(this.active_effect_types[0].shaderindex))
  6447. this.runtime.redraw = true;
  6448. }
  6449. else
  6450. glw.switchProgram(0);
  6451. if (!this.runtime.fullscreenScalingQuality)
  6452. {
  6453. glw.setSize(this.runtime.width, this.runtime.height);
  6454. }
  6455. glw.setRenderingToTexture(null); // to backbuffer
  6456. glw.setOpacity(1);
  6457. glw.setTexture(this.runtime.layout_tex);
  6458. glw.setAlphaBlend();
  6459. glw.resetModelView();
  6460. glw.updateModelView();
  6461. var halfw = this.runtime.width / 2;
  6462. var halfh = this.runtime.height / 2;
  6463. glw.quad(-halfw, halfh, halfw, halfh, halfw, -halfh, -halfw, -halfh);
  6464. glw.setTexture(null);
  6465. }
  6466. else
  6467. {
  6468. this.renderEffectChain(glw, null, null, null);
  6469. }
  6470. }
  6471. };
  6472. Layout.prototype.getRenderTarget = function()
  6473. {
  6474. return (this.active_effect_types.length > 0 ||
  6475. this.runtime.uses_background_blending ||
  6476. !this.runtime.fullscreenScalingQuality) ? this.runtime.layout_tex : null;
  6477. };
  6478. Layout.prototype.getMinLayerScale = function ()
  6479. {
  6480. var m = this.layers[0].getScale();
  6481. var i, len, l;
  6482. for (i = 1, len = this.layers.length; i < len; i++)
  6483. {
  6484. l = this.layers[i];
  6485. if (l.parallaxX === 0 && l.parallaxY === 0)
  6486. continue;
  6487. if (l.getScale() < m)
  6488. m = l.getScale();
  6489. }
  6490. return m;
  6491. };
  6492. Layout.prototype.scrollToX = function (x)
  6493. {
  6494. if (!this.unbounded_scrolling)
  6495. {
  6496. var widthBoundary = (this.runtime.draw_width * (1 / this.getMinLayerScale()) / 2);
  6497. if (x > this.width - widthBoundary)
  6498. x = this.width - widthBoundary;
  6499. if (x < widthBoundary)
  6500. x = widthBoundary;
  6501. }
  6502. if (this.scrollX !== x)
  6503. {
  6504. this.scrollX = x;
  6505. this.runtime.redraw = true;
  6506. }
  6507. };
  6508. Layout.prototype.scrollToY = function (y)
  6509. {
  6510. if (!this.unbounded_scrolling)
  6511. {
  6512. var heightBoundary = (this.runtime.draw_height * (1 / this.getMinLayerScale()) / 2);
  6513. if (y > this.height - heightBoundary)
  6514. y = this.height - heightBoundary;
  6515. if (y < heightBoundary)
  6516. y = heightBoundary;
  6517. }
  6518. if (this.scrollY !== y)
  6519. {
  6520. this.scrollY = y;
  6521. this.runtime.redraw = true;
  6522. }
  6523. };
  6524. Layout.prototype.boundScrolling = function ()
  6525. {
  6526. this.scrollToX(this.scrollX);
  6527. this.scrollToY(this.scrollY);
  6528. };
  6529. Layout.prototype.renderEffectChain = function (glw, layer, inst, rendertarget)
  6530. {
  6531. var active_effect_types = inst ?
  6532. inst.active_effect_types :
  6533. layer ?
  6534. layer.active_effect_types :
  6535. this.active_effect_types;
  6536. var layerScale = inst ? inst.layer.getScale() :
  6537. layer ? layer.getScale() : 1;
  6538. var fx_tex = this.runtime.fx_tex;
  6539. var i, len, last, temp, fx_index = 0, other_fx_index = 1;
  6540. var y, h;
  6541. var windowWidth = this.runtime.draw_width;
  6542. var windowHeight = this.runtime.draw_height;
  6543. var halfw = windowWidth / 2;
  6544. var halfh = windowHeight / 2;
  6545. var rcTex = layer ? layer.rcTex : this.rcTex;
  6546. var rcTex2 = layer ? layer.rcTex2 : this.rcTex2;
  6547. var screenleft = 0, clearleft = 0;
  6548. var screentop = 0, cleartop = 0;
  6549. var screenright = windowWidth, clearright = windowWidth;
  6550. var screenbottom = windowHeight, clearbottom = windowHeight;
  6551. var boxExtendHorizontal = 0;
  6552. var boxExtendVertical = 0;
  6553. var inst_layer_angle = inst ? inst.layer.getAngle() : 0;
  6554. if (inst)
  6555. {
  6556. for (i = 0, len = active_effect_types.length; i < len; i++)
  6557. {
  6558. boxExtendHorizontal += glw.getProgramBoxExtendHorizontal(active_effect_types[i].shaderindex);
  6559. boxExtendVertical += glw.getProgramBoxExtendVertical(active_effect_types[i].shaderindex);
  6560. }
  6561. var bbox = inst.bbox;
  6562. screenleft = layer.layerToCanvas(bbox.left, bbox.top, true, true);
  6563. screentop = layer.layerToCanvas(bbox.left, bbox.top, false, true);
  6564. screenright = layer.layerToCanvas(bbox.right, bbox.bottom, true, true);
  6565. screenbottom = layer.layerToCanvas(bbox.right, bbox.bottom, false, true);
  6566. if (inst_layer_angle !== 0)
  6567. {
  6568. var screentrx = layer.layerToCanvas(bbox.right, bbox.top, true, true);
  6569. var screentry = layer.layerToCanvas(bbox.right, bbox.top, false, true);
  6570. var screenblx = layer.layerToCanvas(bbox.left, bbox.bottom, true, true);
  6571. var screenbly = layer.layerToCanvas(bbox.left, bbox.bottom, false, true);
  6572. temp = Math.min(screenleft, screenright, screentrx, screenblx);
  6573. screenright = Math.max(screenleft, screenright, screentrx, screenblx);
  6574. screenleft = temp;
  6575. temp = Math.min(screentop, screenbottom, screentry, screenbly);
  6576. screenbottom = Math.max(screentop, screenbottom, screentry, screenbly);
  6577. screentop = temp;
  6578. }
  6579. screenleft -= boxExtendHorizontal;
  6580. screentop -= boxExtendVertical;
  6581. screenright += boxExtendHorizontal;
  6582. screenbottom += boxExtendVertical;
  6583. rcTex2.left = screenleft / windowWidth;
  6584. rcTex2.top = 1 - screentop / windowHeight;
  6585. rcTex2.right = screenright / windowWidth;
  6586. rcTex2.bottom = 1 - screenbottom / windowHeight;
  6587. clearleft = screenleft = cr.floor(screenleft);
  6588. cleartop = screentop = cr.floor(screentop);
  6589. clearright = screenright = cr.ceil(screenright);
  6590. clearbottom = screenbottom = cr.ceil(screenbottom);
  6591. clearleft -= boxExtendHorizontal;
  6592. cleartop -= boxExtendVertical;
  6593. clearright += boxExtendHorizontal;
  6594. clearbottom += boxExtendVertical;
  6595. if (screenleft < 0) screenleft = 0;
  6596. if (screentop < 0) screentop = 0;
  6597. if (screenright > windowWidth) screenright = windowWidth;
  6598. if (screenbottom > windowHeight) screenbottom = windowHeight;
  6599. if (clearleft < 0) clearleft = 0;
  6600. if (cleartop < 0) cleartop = 0;
  6601. if (clearright > windowWidth) clearright = windowWidth;
  6602. if (clearbottom > windowHeight) clearbottom = windowHeight;
  6603. rcTex.left = screenleft / windowWidth;
  6604. rcTex.top = 1 - screentop / windowHeight;
  6605. rcTex.right = screenright / windowWidth;
  6606. rcTex.bottom = 1 - screenbottom / windowHeight;
  6607. }
  6608. else
  6609. {
  6610. rcTex.left = rcTex2.left = 0;
  6611. rcTex.top = rcTex2.top = 0;
  6612. rcTex.right = rcTex2.right = 1;
  6613. rcTex.bottom = rcTex2.bottom = 1;
  6614. }
  6615. var pre_draw = (inst && (((inst.angle || inst_layer_angle) && glw.programUsesDest(active_effect_types[0].shaderindex)) || boxExtendHorizontal !== 0 || boxExtendVertical !== 0 || inst.opacity !== 1 || inst.type.plugin.must_predraw)) || (layer && !inst && layer.opacity !== 1);
  6616. glw.setAlphaBlend();
  6617. if (pre_draw)
  6618. {
  6619. if (!fx_tex[fx_index])
  6620. {
  6621. fx_tex[fx_index] = glw.createEmptyTexture(windowWidth, windowHeight, this.runtime.linearSampling);
  6622. }
  6623. if (fx_tex[fx_index].c2width !== windowWidth || fx_tex[fx_index].c2height !== windowHeight)
  6624. {
  6625. glw.deleteTexture(fx_tex[fx_index]);
  6626. fx_tex[fx_index] = glw.createEmptyTexture(windowWidth, windowHeight, this.runtime.linearSampling);
  6627. }
  6628. glw.switchProgram(0);
  6629. glw.setRenderingToTexture(fx_tex[fx_index]);
  6630. h = clearbottom - cleartop;
  6631. y = (windowHeight - cleartop) - h;
  6632. glw.clearRect(clearleft, y, clearright - clearleft, h);
  6633. if (inst)
  6634. {
  6635. inst.drawGL(glw);
  6636. }
  6637. else
  6638. {
  6639. glw.setTexture(this.runtime.layer_tex);
  6640. glw.setOpacity(layer.opacity);
  6641. glw.resetModelView();
  6642. glw.translate(-halfw, -halfh);
  6643. glw.updateModelView();
  6644. glw.quadTex(screenleft, screenbottom, screenright, screenbottom, screenright, screentop, screenleft, screentop, rcTex);
  6645. }
  6646. rcTex2.left = rcTex2.top = 0;
  6647. rcTex2.right = rcTex2.bottom = 1;
  6648. if (inst)
  6649. {
  6650. temp = rcTex.top;
  6651. rcTex.top = rcTex.bottom;
  6652. rcTex.bottom = temp;
  6653. }
  6654. fx_index = 1;
  6655. other_fx_index = 0;
  6656. }
  6657. glw.setOpacity(1);
  6658. var last = active_effect_types.length - 1;
  6659. var post_draw = glw.programUsesCrossSampling(active_effect_types[last].shaderindex) ||
  6660. (!layer && !inst && !this.runtime.fullscreenScalingQuality);
  6661. var etindex = 0;
  6662. for (i = 0, len = active_effect_types.length; i < len; i++)
  6663. {
  6664. if (!fx_tex[fx_index])
  6665. {
  6666. fx_tex[fx_index] = glw.createEmptyTexture(windowWidth, windowHeight, this.runtime.linearSampling);
  6667. }
  6668. if (fx_tex[fx_index].c2width !== windowWidth || fx_tex[fx_index].c2height !== windowHeight)
  6669. {
  6670. glw.deleteTexture(fx_tex[fx_index]);
  6671. fx_tex[fx_index] = glw.createEmptyTexture(windowWidth, windowHeight, this.runtime.linearSampling);
  6672. }
  6673. glw.switchProgram(active_effect_types[i].shaderindex);
  6674. etindex = active_effect_types[i].index;
  6675. if (glw.programIsAnimated(active_effect_types[i].shaderindex))
  6676. this.runtime.redraw = true;
  6677. if (i == 0 && !pre_draw)
  6678. {
  6679. glw.setRenderingToTexture(fx_tex[fx_index]);
  6680. h = clearbottom - cleartop;
  6681. y = (windowHeight - cleartop) - h;
  6682. glw.clearRect(clearleft, y, clearright - clearleft, h);
  6683. if (inst)
  6684. {
  6685. glw.setProgramParameters(rendertarget, // backTex
  6686. 1.0 / inst.width, // pixelWidth
  6687. 1.0 / inst.height, // pixelHeight
  6688. rcTex2.left, rcTex2.top, // destStart
  6689. rcTex2.right, rcTex2.bottom, // destEnd
  6690. layerScale,
  6691. inst.effect_params[etindex]); // fx params
  6692. inst.drawGL(glw);
  6693. }
  6694. else
  6695. {
  6696. glw.setProgramParameters(rendertarget, // backTex
  6697. 1.0 / windowWidth, // pixelWidth
  6698. 1.0 / windowHeight, // pixelHeight
  6699. 0.0, 0.0, // destStart
  6700. 1.0, 1.0, // destEnd
  6701. layerScale,
  6702. layer ? // fx params
  6703. layer.effect_params[etindex] :
  6704. this.effect_params[etindex]);
  6705. glw.setTexture(layer ? this.runtime.layer_tex : this.runtime.layout_tex);
  6706. glw.resetModelView();
  6707. glw.translate(-halfw, -halfh);
  6708. glw.updateModelView();
  6709. glw.quadTex(screenleft, screenbottom, screenright, screenbottom, screenright, screentop, screenleft, screentop, rcTex);
  6710. }
  6711. rcTex2.left = rcTex2.top = 0;
  6712. rcTex2.right = rcTex2.bottom = 1;
  6713. if (inst && !post_draw)
  6714. {
  6715. temp = screenbottom;
  6716. screenbottom = screentop;
  6717. screentop = temp;
  6718. }
  6719. }
  6720. else
  6721. {
  6722. glw.setProgramParameters(rendertarget, // backTex
  6723. 1.0 / windowWidth, // pixelWidth
  6724. 1.0 / windowHeight, // pixelHeight
  6725. rcTex2.left, rcTex2.top, // destStart
  6726. rcTex2.right, rcTex2.bottom, // destEnd
  6727. layerScale,
  6728. inst ? // fx params
  6729. inst.effect_params[etindex] :
  6730. layer ?
  6731. layer.effect_params[etindex] :
  6732. this.effect_params[etindex]);
  6733. glw.setTexture(null);
  6734. if (i === last && !post_draw)
  6735. {
  6736. if (inst)
  6737. glw.setBlend(inst.srcBlend, inst.destBlend);
  6738. else if (layer)
  6739. glw.setBlend(layer.srcBlend, layer.destBlend);
  6740. glw.setRenderingToTexture(rendertarget);
  6741. }
  6742. else
  6743. {
  6744. glw.setRenderingToTexture(fx_tex[fx_index]);
  6745. h = clearbottom - cleartop;
  6746. y = (windowHeight - cleartop) - h;
  6747. glw.clearRect(clearleft, y, clearright - clearleft, h);
  6748. }
  6749. glw.setTexture(fx_tex[other_fx_index]);
  6750. glw.resetModelView();
  6751. glw.translate(-halfw, -halfh);
  6752. glw.updateModelView();
  6753. glw.quadTex(screenleft, screenbottom, screenright, screenbottom, screenright, screentop, screenleft, screentop, rcTex);
  6754. if (i === last && !post_draw)
  6755. glw.setTexture(null);
  6756. }
  6757. fx_index = (fx_index === 0 ? 1 : 0);
  6758. other_fx_index = (fx_index === 0 ? 1 : 0); // will be opposite to fx_index since it was just assigned
  6759. }
  6760. if (post_draw)
  6761. {
  6762. glw.switchProgram(0);
  6763. if (inst)
  6764. glw.setBlend(inst.srcBlend, inst.destBlend);
  6765. else if (layer)
  6766. glw.setBlend(layer.srcBlend, layer.destBlend);
  6767. else
  6768. {
  6769. if (!this.runtime.fullscreenScalingQuality)
  6770. {
  6771. glw.setSize(this.runtime.width, this.runtime.height);
  6772. halfw = this.runtime.width / 2;
  6773. halfh = this.runtime.height / 2;
  6774. screenleft = 0;
  6775. screentop = 0;
  6776. screenright = this.runtime.width;
  6777. screenbottom = this.runtime.height;
  6778. }
  6779. }
  6780. glw.setRenderingToTexture(rendertarget);
  6781. glw.setTexture(fx_tex[other_fx_index]);
  6782. glw.resetModelView();
  6783. glw.translate(-halfw, -halfh);
  6784. glw.updateModelView();
  6785. if (inst && active_effect_types.length === 1 && !pre_draw)
  6786. glw.quadTex(screenleft, screentop, screenright, screentop, screenright, screenbottom, screenleft, screenbottom, rcTex);
  6787. else
  6788. glw.quadTex(screenleft, screenbottom, screenright, screenbottom, screenright, screentop, screenleft, screentop, rcTex);
  6789. glw.setTexture(null);
  6790. }
  6791. };
  6792. Layout.prototype.getLayerBySid = function (sid_)
  6793. {
  6794. var i, len;
  6795. for (i = 0, len = this.layers.length; i < len; i++)
  6796. {
  6797. if (this.layers[i].sid === sid_)
  6798. return this.layers[i];
  6799. }
  6800. return null;
  6801. };
  6802. Layout.prototype.saveToJSON = function ()
  6803. {
  6804. var i, len, layer, et;
  6805. var o = {
  6806. "sx": this.scrollX,
  6807. "sy": this.scrollY,
  6808. "s": this.scale,
  6809. "a": this.angle,
  6810. "w": this.width,
  6811. "h": this.height,
  6812. "fv": this.first_visit, // added r127
  6813. "persist": this.persist_data,
  6814. "fx": [],
  6815. "layers": {}
  6816. };
  6817. for (i = 0, len = this.effect_types.length; i < len; i++)
  6818. {
  6819. et = this.effect_types[i];
  6820. o["fx"].push({"name": et.name, "active": et.active, "params": this.effect_params[et.index] });
  6821. }
  6822. for (i = 0, len = this.layers.length; i < len; i++)
  6823. {
  6824. layer = this.layers[i];
  6825. o["layers"][layer.sid.toString()] = layer.saveToJSON();
  6826. }
  6827. return o;
  6828. };
  6829. Layout.prototype.loadFromJSON = function (o)
  6830. {
  6831. var i, len, fx, p, layer;
  6832. this.scrollX = o["sx"];
  6833. this.scrollY = o["sy"];
  6834. this.scale = o["s"];
  6835. this.angle = o["a"];
  6836. this.width = o["w"];
  6837. this.height = o["h"];
  6838. this.persist_data = o["persist"];
  6839. if (typeof o["fv"] !== "undefined")
  6840. this.first_visit = o["fv"];
  6841. var ofx = o["fx"];
  6842. for (i = 0, len = ofx.length; i < len; i++)
  6843. {
  6844. fx = this.getEffectByName(ofx[i]["name"]);
  6845. if (!fx)
  6846. continue; // must've gone missing
  6847. fx.active = ofx[i]["active"];
  6848. this.effect_params[fx.index] = ofx[i]["params"];
  6849. }
  6850. this.updateActiveEffects();
  6851. var olayers = o["layers"];
  6852. for (p in olayers)
  6853. {
  6854. if (olayers.hasOwnProperty(p))
  6855. {
  6856. layer = this.getLayerBySid(parseInt(p, 10));
  6857. if (!layer)
  6858. continue; // must've gone missing
  6859. layer.loadFromJSON(olayers[p]);
  6860. }
  6861. }
  6862. };
  6863. cr.layout = Layout;
  6864. function Layer(layout, m)
  6865. {
  6866. this.layout = layout;
  6867. this.runtime = layout.runtime;
  6868. this.instances = []; // running instances
  6869. this.scale = 1.0;
  6870. this.angle = 0;
  6871. this.disableAngle = false;
  6872. this.tmprect = new cr.rect(0, 0, 0, 0);
  6873. this.tmpquad = new cr.quad();
  6874. this.viewLeft = 0;
  6875. this.viewRight = 0;
  6876. this.viewTop = 0;
  6877. this.viewBottom = 0;
  6878. this.zindices_stale = false;
  6879. this.name = m[0];
  6880. this.index = m[1];
  6881. this.sid = m[2];
  6882. this.visible = m[3]; // initially visible
  6883. this.background_color = m[4];
  6884. this.transparent = m[5];
  6885. this.parallaxX = m[6];
  6886. this.parallaxY = m[7];
  6887. this.opacity = m[8];
  6888. this.forceOwnTexture = m[9];
  6889. this.zoomRate = m[10];
  6890. this.blend_mode = m[11];
  6891. this.effect_fallback = m[12];
  6892. this.compositeOp = "source-over";
  6893. this.srcBlend = 0;
  6894. this.destBlend = 0;
  6895. this.render_offscreen = false;
  6896. var im = m[13];
  6897. var i, len;
  6898. this.initial_instances = [];
  6899. for (i = 0, len = im.length; i < len; i++)
  6900. {
  6901. var inst = im[i];
  6902. var type = this.runtime.types_by_index[inst[1]];
  6903. ;
  6904. if (!type.default_instance)
  6905. type.default_instance = inst;
  6906. this.initial_instances.push(inst);
  6907. if (this.layout.initial_types.indexOf(type) === -1)
  6908. this.layout.initial_types.push(type);
  6909. }
  6910. this.effect_types = [];
  6911. this.active_effect_types = [];
  6912. this.effect_params = [];
  6913. for (i = 0, len = m[14].length; i < len; i++)
  6914. {
  6915. this.effect_types.push({
  6916. id: m[14][i][0],
  6917. name: m[14][i][1],
  6918. shaderindex: -1,
  6919. active: true,
  6920. index: i
  6921. });
  6922. this.effect_params.push(m[14][i][2].slice(0));
  6923. }
  6924. this.updateActiveEffects();
  6925. this.rcTex = new cr.rect(0, 0, 1, 1);
  6926. this.rcTex2 = new cr.rect(0, 0, 1, 1);
  6927. };
  6928. Layer.prototype.updateActiveEffects = function ()
  6929. {
  6930. this.active_effect_types.length = 0;
  6931. var i, len, et;
  6932. for (i = 0, len = this.effect_types.length; i < len; i++)
  6933. {
  6934. et = this.effect_types[i];
  6935. if (et.active)
  6936. this.active_effect_types.push(et);
  6937. }
  6938. };
  6939. Layer.prototype.getEffectByName = function (name_)
  6940. {
  6941. var i, len, et;
  6942. for (i = 0, len = this.effect_types.length; i < len; i++)
  6943. {
  6944. et = this.effect_types[i];
  6945. if (et.name === name_)
  6946. return et;
  6947. }
  6948. return null;
  6949. };
  6950. Layer.prototype.createInitialInstances = function ()
  6951. {
  6952. var i, k, len, inst, initial_inst, type, keep, hasPersistBehavior;
  6953. for (i = 0, k = 0, len = this.initial_instances.length; i < len; i++)
  6954. {
  6955. initial_inst = this.initial_instances[i];
  6956. type = this.runtime.types_by_index[initial_inst[1]];
  6957. ;
  6958. hasPersistBehavior = this.runtime.typeHasPersistBehavior(type);
  6959. keep = true;
  6960. if (!hasPersistBehavior || this.layout.first_visit)
  6961. {
  6962. inst = this.runtime.createInstanceFromInit(initial_inst, this, true);
  6963. ;
  6964. created_instances.push(inst);
  6965. if (inst.type.global)
  6966. keep = false;
  6967. }
  6968. if (keep)
  6969. {
  6970. this.initial_instances[k] = this.initial_instances[i];
  6971. k++;
  6972. }
  6973. }
  6974. this.initial_instances.length = k;
  6975. this.runtime.ClearDeathRow(); // flushes creation row so IIDs will be correct
  6976. if (!this.runtime.glwrap && this.effect_types.length) // no WebGL renderer and shaders used
  6977. this.blend_mode = this.effect_fallback; // use fallback blend mode
  6978. this.compositeOp = cr.effectToCompositeOp(this.blend_mode);
  6979. if (this.runtime.gl)
  6980. cr.setGLBlend(this, this.blend_mode, this.runtime.gl);
  6981. };
  6982. Layer.prototype.updateZIndices = function ()
  6983. {
  6984. if (!this.zindices_stale)
  6985. return;
  6986. var i, len;
  6987. for (i = 0, len = this.instances.length; i < len; i++)
  6988. {
  6989. ;
  6990. ;
  6991. this.instances[i].zindex = i;
  6992. }
  6993. this.zindices_stale = false;
  6994. };
  6995. Layer.prototype.getScale = function (include_aspect)
  6996. {
  6997. return this.getNormalScale() * (this.runtime.fullscreenScalingQuality || include_aspect ? this.runtime.aspect_scale : 1);
  6998. };
  6999. Layer.prototype.getNormalScale = function ()
  7000. {
  7001. return ((this.scale * this.layout.scale) - 1) * this.zoomRate + 1;
  7002. };
  7003. Layer.prototype.getAngle = function ()
  7004. {
  7005. if (this.disableAngle)
  7006. return 0;
  7007. return cr.clamp_angle(this.layout.angle + this.angle);
  7008. };
  7009. Layer.prototype.draw = function (ctx)
  7010. {
  7011. this.render_offscreen = (this.forceOwnTexture || this.opacity !== 1.0 || this.blend_mode !== 0);
  7012. var layer_canvas = this.runtime.canvas;
  7013. var layer_ctx = ctx;
  7014. var ctx_changed = false;
  7015. ctx.globalAlpha = 1;
  7016. ctx.globalCompositeOperation = "source-over";
  7017. if (this.render_offscreen)
  7018. {
  7019. if (!this.runtime.layer_canvas)
  7020. {
  7021. this.runtime.layer_canvas = document.createElement("canvas");
  7022. ;
  7023. layer_canvas = this.runtime.layer_canvas;
  7024. layer_canvas.width = this.runtime.draw_width;
  7025. layer_canvas.height = this.runtime.draw_height;
  7026. this.runtime.layer_ctx = layer_canvas.getContext("2d");
  7027. ;
  7028. ctx_changed = true;
  7029. }
  7030. layer_canvas = this.runtime.layer_canvas;
  7031. layer_ctx = this.runtime.layer_ctx;
  7032. if (layer_canvas.width !== this.runtime.draw_width)
  7033. {
  7034. layer_canvas.width = this.runtime.draw_width;
  7035. ctx_changed = true;
  7036. }
  7037. if (layer_canvas.height !== this.runtime.draw_height)
  7038. {
  7039. layer_canvas.height = this.runtime.draw_height;
  7040. ctx_changed = true;
  7041. }
  7042. if (ctx_changed)
  7043. {
  7044. layer_ctx["webkitImageSmoothingEnabled"] = this.runtime.linearSampling;
  7045. layer_ctx["mozImageSmoothingEnabled"] = this.runtime.linearSampling;
  7046. layer_ctx["msImageSmoothingEnabled"] = this.runtime.linearSampling;
  7047. layer_ctx["imageSmoothingEnabled"] = this.runtime.linearSampling;
  7048. }
  7049. if (this.transparent)
  7050. layer_ctx.clearRect(0, 0, this.runtime.draw_width, this.runtime.draw_height);
  7051. }
  7052. if (!this.transparent)
  7053. {
  7054. layer_ctx.fillStyle = "rgb(" + this.background_color[0] + "," + this.background_color[1] + "," + this.background_color[2] + ")";
  7055. layer_ctx.fillRect(0, 0, this.runtime.draw_width, this.runtime.draw_height);
  7056. }
  7057. layer_ctx.save();
  7058. this.disableAngle = true;
  7059. var px = this.canvasToLayer(0, 0, true, true);
  7060. var py = this.canvasToLayer(0, 0, false, true);
  7061. this.disableAngle = false;
  7062. if (this.runtime.pixel_rounding)
  7063. {
  7064. px = (px + 0.5) | 0;
  7065. py = (py + 0.5) | 0;
  7066. }
  7067. this.rotateViewport(px, py, layer_ctx);
  7068. var myscale = this.getScale();
  7069. layer_ctx.scale(myscale, myscale);
  7070. layer_ctx.translate(-px, -py);
  7071. var i, len, inst, bbox;
  7072. for (i = 0, len = this.instances.length; i < len; i++)
  7073. {
  7074. inst = this.instances[i];
  7075. if (!inst.visible || inst.width === 0 || inst.height === 0)
  7076. continue;
  7077. inst.update_bbox();
  7078. bbox = inst.bbox;
  7079. if (bbox.right < this.viewLeft || bbox.bottom < this.viewTop || bbox.left > this.viewRight || bbox.top > this.viewBottom)
  7080. continue;
  7081. layer_ctx.globalCompositeOperation = inst.compositeOp;
  7082. inst.draw(layer_ctx);
  7083. }
  7084. layer_ctx.restore();
  7085. if (this.render_offscreen)
  7086. {
  7087. ctx.globalCompositeOperation = this.compositeOp;
  7088. ctx.globalAlpha = this.opacity;
  7089. ctx.drawImage(layer_canvas, 0, 0);
  7090. }
  7091. };
  7092. Layer.prototype.rotateViewport = function (px, py, ctx)
  7093. {
  7094. var myscale = this.getScale();
  7095. this.viewLeft = px;
  7096. this.viewTop = py;
  7097. this.viewRight = px + (this.runtime.draw_width * (1 / myscale));
  7098. this.viewBottom = py + (this.runtime.draw_height * (1 / myscale));
  7099. var myAngle = this.getAngle();
  7100. if (myAngle !== 0)
  7101. {
  7102. if (ctx)
  7103. {
  7104. ctx.translate(this.runtime.draw_width / 2, this.runtime.draw_height / 2);
  7105. ctx.rotate(-myAngle);
  7106. ctx.translate(this.runtime.draw_width / -2, this.runtime.draw_height / -2);
  7107. }
  7108. this.tmprect.set(this.viewLeft, this.viewTop, this.viewRight, this.viewBottom);
  7109. this.tmprect.offset((this.viewLeft + this.viewRight) / -2, (this.viewTop + this.viewBottom) / -2);
  7110. this.tmpquad.set_from_rotated_rect(this.tmprect, myAngle);
  7111. this.tmpquad.bounding_box(this.tmprect);
  7112. this.tmprect.offset((this.viewLeft + this.viewRight) / 2, (this.viewTop + this.viewBottom) / 2);
  7113. this.viewLeft = this.tmprect.left;
  7114. this.viewTop = this.tmprect.top;
  7115. this.viewRight = this.tmprect.right;
  7116. this.viewBottom = this.tmprect.bottom;
  7117. }
  7118. }
  7119. Layer.prototype.drawGL = function (glw)
  7120. {
  7121. var windowWidth = this.runtime.draw_width;
  7122. var windowHeight = this.runtime.draw_height;
  7123. var shaderindex = 0;
  7124. var etindex = 0;
  7125. this.render_offscreen = (this.forceOwnTexture || this.opacity !== 1.0 || this.active_effect_types.length > 0 || this.blend_mode !== 0);
  7126. if (this.render_offscreen)
  7127. {
  7128. if (!this.runtime.layer_tex)
  7129. {
  7130. this.runtime.layer_tex = glw.createEmptyTexture(this.runtime.draw_width, this.runtime.draw_height, this.runtime.linearSampling);
  7131. }
  7132. if (this.runtime.layer_tex.c2width !== this.runtime.draw_width || this.runtime.layer_tex.c2height !== this.runtime.draw_height)
  7133. {
  7134. glw.deleteTexture(this.runtime.layer_tex);
  7135. this.runtime.layer_tex = glw.createEmptyTexture(this.runtime.draw_width, this.runtime.draw_height, this.runtime.linearSampling);
  7136. }
  7137. glw.setRenderingToTexture(this.runtime.layer_tex);
  7138. if (this.transparent)
  7139. glw.clear(0, 0, 0, 0);
  7140. }
  7141. if (!this.transparent)
  7142. {
  7143. glw.clear(this.background_color[0] / 255, this.background_color[1] / 255, this.background_color[2] / 255, 1);
  7144. }
  7145. this.disableAngle = true;
  7146. var px = this.canvasToLayer(0, 0, true, true);
  7147. var py = this.canvasToLayer(0, 0, false, true);
  7148. this.disableAngle = false;
  7149. if (this.runtime.pixel_rounding)
  7150. {
  7151. px = (px + 0.5) | 0;
  7152. py = (py + 0.5) | 0;
  7153. }
  7154. this.rotateViewport(px, py, null);
  7155. var myscale = this.getScale();
  7156. glw.resetModelView();
  7157. glw.scale(myscale, myscale);
  7158. glw.rotateZ(-this.getAngle());
  7159. glw.translate((this.viewLeft + this.viewRight) / -2, (this.viewTop + this.viewBottom) / -2);
  7160. glw.updateModelView();
  7161. var i, len, inst, bbox;
  7162. for (i = 0, len = this.instances.length; i < len; i++)
  7163. {
  7164. inst = this.instances[i];
  7165. if (!inst.visible || inst.width === 0 || inst.height === 0)
  7166. continue;
  7167. inst.update_bbox();
  7168. bbox = inst.bbox;
  7169. if (bbox.right < this.viewLeft || bbox.bottom < this.viewTop || bbox.left > this.viewRight || bbox.top > this.viewBottom)
  7170. continue;
  7171. if (inst.uses_shaders)
  7172. {
  7173. shaderindex = inst.active_effect_types[0].shaderindex;
  7174. etindex = inst.active_effect_types[0].index;
  7175. if (inst.active_effect_types.length === 1 && !glw.programUsesCrossSampling(shaderindex) &&
  7176. !glw.programExtendsBox(shaderindex) && ((!inst.angle && !inst.layer.getAngle()) || !glw.programUsesDest(shaderindex)) &&
  7177. inst.opacity === 1 && !inst.type.plugin.must_predraw)
  7178. {
  7179. glw.switchProgram(shaderindex);
  7180. glw.setBlend(inst.srcBlend, inst.destBlend);
  7181. if (glw.programIsAnimated(shaderindex))
  7182. this.runtime.redraw = true;
  7183. var destStartX = 0, destStartY = 0, destEndX = 0, destEndY = 0;
  7184. if (glw.programUsesDest(shaderindex))
  7185. {
  7186. var bbox = inst.bbox;
  7187. var screenleft = this.layerToCanvas(bbox.left, bbox.top, true, true);
  7188. var screentop = this.layerToCanvas(bbox.left, bbox.top, false, true);
  7189. var screenright = this.layerToCanvas(bbox.right, bbox.bottom, true, true);
  7190. var screenbottom = this.layerToCanvas(bbox.right, bbox.bottom, false, true);
  7191. destStartX = screenleft / windowWidth;
  7192. destStartY = 1 - screentop / windowHeight;
  7193. destEndX = screenright / windowWidth;
  7194. destEndY = 1 - screenbottom / windowHeight;
  7195. }
  7196. glw.setProgramParameters(this.render_offscreen ? this.runtime.layer_tex : this.layout.getRenderTarget(), // backTex
  7197. 1.0 / inst.width, // pixelWidth
  7198. 1.0 / inst.height, // pixelHeight
  7199. destStartX, destStartY,
  7200. destEndX, destEndY,
  7201. this.getScale(),
  7202. inst.effect_params[etindex]);
  7203. inst.drawGL(glw);
  7204. }
  7205. else
  7206. {
  7207. this.layout.renderEffectChain(glw, this, inst, this.render_offscreen ? this.runtime.layer_tex : this.layout.getRenderTarget());
  7208. glw.resetModelView();
  7209. glw.scale(myscale, myscale);
  7210. glw.rotateZ(-this.getAngle());
  7211. glw.translate((this.viewLeft + this.viewRight) / -2, (this.viewTop + this.viewBottom) / -2);
  7212. glw.updateModelView();
  7213. }
  7214. }
  7215. else
  7216. {
  7217. glw.switchProgram(0); // un-set any previously set shader
  7218. glw.setBlend(inst.srcBlend, inst.destBlend);
  7219. inst.drawGL(glw);
  7220. }
  7221. }
  7222. if (this.render_offscreen)
  7223. {
  7224. shaderindex = this.active_effect_types.length ? this.active_effect_types[0].shaderindex : 0;
  7225. etindex = this.active_effect_types.length ? this.active_effect_types[0].index : 0;
  7226. if (this.active_effect_types.length === 0 || (this.active_effect_types.length === 1 &&
  7227. !glw.programUsesCrossSampling(shaderindex) && this.opacity === 1))
  7228. {
  7229. if (this.active_effect_types.length === 1)
  7230. {
  7231. glw.switchProgram(shaderindex);
  7232. glw.setProgramParameters(this.layout.getRenderTarget(), // backTex
  7233. 1.0 / this.runtime.draw_width, // pixelWidth
  7234. 1.0 / this.runtime.draw_height, // pixelHeight
  7235. 0.0, 0.0, // destStart
  7236. 1.0, 1.0, // destEnd
  7237. this.getScale(), // layerScale
  7238. this.effect_params[etindex]); // fx parameters
  7239. if (glw.programIsAnimated(shaderindex))
  7240. this.runtime.redraw = true;
  7241. }
  7242. else
  7243. glw.switchProgram(0);
  7244. glw.setRenderingToTexture(this.layout.getRenderTarget());
  7245. glw.setOpacity(this.opacity);
  7246. glw.setTexture(this.runtime.layer_tex);
  7247. glw.setBlend(this.srcBlend, this.destBlend);
  7248. glw.resetModelView();
  7249. glw.updateModelView();
  7250. var halfw = this.runtime.draw_width / 2;
  7251. var halfh = this.runtime.draw_height / 2;
  7252. glw.quad(-halfw, halfh, halfw, halfh, halfw, -halfh, -halfw, -halfh);
  7253. glw.setTexture(null);
  7254. }
  7255. else
  7256. {
  7257. this.layout.renderEffectChain(glw, this, null, this.layout.getRenderTarget());
  7258. }
  7259. }
  7260. };
  7261. Layer.prototype.canvasToLayer = function (ptx, pty, getx, using_draw_area)
  7262. {
  7263. var multiplier = this.runtime.devicePixelRatio;
  7264. if (this.runtime.isRetina)
  7265. {
  7266. ptx *= multiplier;
  7267. pty *= multiplier;
  7268. }
  7269. var ox = this.runtime.parallax_x_origin;
  7270. var oy = this.runtime.parallax_y_origin;
  7271. var x = ((this.layout.scrollX - ox) * this.parallaxX) + ox;
  7272. var y = ((this.layout.scrollY - oy) * this.parallaxY) + oy;
  7273. var invScale = 1 / this.getScale(!using_draw_area);
  7274. if (using_draw_area)
  7275. {
  7276. x -= (this.runtime.draw_width * invScale) / 2;
  7277. y -= (this.runtime.draw_height * invScale) / 2;
  7278. }
  7279. else
  7280. {
  7281. x -= (this.runtime.width * invScale) / 2;
  7282. y -= (this.runtime.height * invScale) / 2;
  7283. }
  7284. x += ptx * invScale;
  7285. y += pty * invScale;
  7286. var a = this.getAngle();
  7287. if (a !== 0)
  7288. {
  7289. x -= this.layout.scrollX;
  7290. y -= this.layout.scrollY;
  7291. var cosa = Math.cos(a);
  7292. var sina = Math.sin(a);
  7293. var x_temp = (x * cosa) - (y * sina);
  7294. y = (y * cosa) + (x * sina);
  7295. x = x_temp;
  7296. x += this.layout.scrollX;
  7297. y += this.layout.scrollY;
  7298. }
  7299. return getx ? x : y;
  7300. };
  7301. Layer.prototype.layerToCanvas = function (ptx, pty, getx, using_draw_area)
  7302. {
  7303. var a = this.getAngle();
  7304. if (a !== 0)
  7305. {
  7306. ptx -= this.layout.scrollX;
  7307. pty -= this.layout.scrollY;
  7308. var cosa = Math.cos(-a);
  7309. var sina = Math.sin(-a);
  7310. var x_temp = (ptx * cosa) - (pty * sina);
  7311. pty = (pty * cosa) + (ptx * sina);
  7312. ptx = x_temp;
  7313. ptx += this.layout.scrollX;
  7314. pty += this.layout.scrollY;
  7315. }
  7316. var ox = this.runtime.parallax_x_origin;
  7317. var oy = this.runtime.parallax_y_origin;
  7318. var x = ((this.layout.scrollX - ox) * this.parallaxX) + ox;
  7319. var y = ((this.layout.scrollY - oy) * this.parallaxY) + oy;
  7320. var invScale = 1 / this.getScale(!using_draw_area);
  7321. if (using_draw_area)
  7322. {
  7323. x -= (this.runtime.draw_width * invScale) / 2;
  7324. y -= (this.runtime.draw_height * invScale) / 2;
  7325. }
  7326. else
  7327. {
  7328. x -= (this.runtime.width * invScale) / 2;
  7329. y -= (this.runtime.height * invScale) / 2;
  7330. }
  7331. x = (ptx - x) / invScale;
  7332. y = (pty - y) / invScale;
  7333. var multiplier = this.runtime.devicePixelRatio;
  7334. if (this.runtime.isRetina)
  7335. {
  7336. x /= multiplier;
  7337. y /= multiplier;
  7338. }
  7339. return getx ? x : y;
  7340. };
  7341. Layer.prototype.rotatePt = function (x_, y_, getx)
  7342. {
  7343. if (this.getAngle() === 0)
  7344. return getx ? x_ : y_;
  7345. var nx = this.layerToCanvas(x_, y_, true);
  7346. var ny = this.layerToCanvas(x_, y_, false);
  7347. this.disableAngle = true;
  7348. var px = this.canvasToLayer(nx, ny, true);
  7349. var py = this.canvasToLayer(nx, ny, true);
  7350. this.disableAngle = false;
  7351. return getx ? px : py;
  7352. };
  7353. Layer.prototype.saveToJSON = function ()
  7354. {
  7355. var i, len, et;
  7356. var o = {
  7357. "s": this.scale,
  7358. "a": this.angle,
  7359. "vl": this.viewLeft,
  7360. "vt": this.viewTop,
  7361. "vr": this.viewRight,
  7362. "vb": this.viewBottom,
  7363. "v": this.visible,
  7364. "bc": this.background_color,
  7365. "t": this.transparent,
  7366. "px": this.parallaxX,
  7367. "py": this.parallaxY,
  7368. "o": this.opacity,
  7369. "zr": this.zoomRate,
  7370. "fx": [],
  7371. "instances": []
  7372. };
  7373. for (i = 0, len = this.effect_types.length; i < len; i++)
  7374. {
  7375. et = this.effect_types[i];
  7376. o["fx"].push({"name": et.name, "active": et.active, "params": this.effect_params[et.index] });
  7377. }
  7378. return o;
  7379. };
  7380. function sortInstanceByZIndex(a, b)
  7381. {
  7382. return a.zindex - b.zindex;
  7383. };
  7384. Layer.prototype.loadFromJSON = function (o)
  7385. {
  7386. var i, len, p, inst, fx;
  7387. this.scale = o["s"];
  7388. this.angle = o["a"];
  7389. this.viewLeft = o["vl"];
  7390. this.viewTop = o["vt"];
  7391. this.viewRight = o["vr"];
  7392. this.viewBottom = o["vb"];
  7393. this.visible = o["v"];
  7394. this.background_color = o["bc"];
  7395. this.transparent = o["t"];
  7396. this.parallaxX = o["px"];
  7397. this.parallaxY = o["py"];
  7398. this.opacity = o["o"];
  7399. this.zoomRate = o["zr"];
  7400. var ofx = o["fx"];
  7401. for (i = 0, len = ofx.length; i < len; i++)
  7402. {
  7403. fx = this.getEffectByName(ofx[i]["name"]);
  7404. if (!fx)
  7405. continue; // must've gone missing
  7406. fx.active = ofx[i]["active"];
  7407. this.effect_params[fx.index] = ofx[i]["params"];
  7408. }
  7409. this.updateActiveEffects();
  7410. this.instances.sort(sortInstanceByZIndex);
  7411. this.zindices_stale = true;
  7412. };
  7413. cr.layer = Layer;
  7414. }());
  7415. ;
  7416. (function()
  7417. {
  7418. var allUniqueSolModifiers = [];
  7419. function testSolsMatch(arr1, arr2)
  7420. {
  7421. var i, len = arr1.length;
  7422. switch (len) {
  7423. case 0:
  7424. return true;
  7425. case 1:
  7426. return arr1[0] === arr2[0];
  7427. case 2:
  7428. return arr1[0] === arr2[0] && arr1[1] === arr2[1];
  7429. default:
  7430. for (i = 0; i < len; i++)
  7431. {
  7432. if (arr1[i] !== arr2[i])
  7433. return false;
  7434. }
  7435. return true;
  7436. }
  7437. };
  7438. function solArraySorter(t1, t2)
  7439. {
  7440. return t1.index - t2.index;
  7441. };
  7442. function findMatchingSolModifier(arr)
  7443. {
  7444. var i, len, u, temp, subarr;
  7445. if (arr.length === 2)
  7446. {
  7447. if (arr[0].index > arr[1].index)
  7448. {
  7449. temp = arr[0];
  7450. arr[0] = arr[1];
  7451. arr[1] = temp;
  7452. }
  7453. }
  7454. else if (arr.length > 2)
  7455. arr.sort(solArraySorter); // so testSolsMatch compares in same order
  7456. if (arr.length >= allUniqueSolModifiers.length)
  7457. allUniqueSolModifiers.length = arr.length + 1;
  7458. if (!allUniqueSolModifiers[arr.length])
  7459. allUniqueSolModifiers[arr.length] = [];
  7460. subarr = allUniqueSolModifiers[arr.length];
  7461. for (i = 0, len = subarr.length; i < len; i++)
  7462. {
  7463. u = subarr[i];
  7464. if (testSolsMatch(arr, u))
  7465. return u;
  7466. }
  7467. subarr.push(arr);
  7468. return arr;
  7469. };
  7470. function EventSheet(runtime, m)
  7471. {
  7472. this.runtime = runtime;
  7473. this.triggers = {};
  7474. this.fasttriggers = {};
  7475. this.hasRun = false;
  7476. this.includes = new cr.ObjectSet(); // all event sheets included by this sheet, at first-level indirection only
  7477. this.name = m[0];
  7478. var em = m[1]; // events model
  7479. this.events = []; // triggers won't make it to this array
  7480. var i, len;
  7481. for (i = 0, len = em.length; i < len; i++)
  7482. this.init_event(em[i], null, this.events);
  7483. };
  7484. EventSheet.prototype.toString = function ()
  7485. {
  7486. return this.name;
  7487. };
  7488. EventSheet.prototype.init_event = function (m, parent, nontriggers)
  7489. {
  7490. switch (m[0]) {
  7491. case 0: // event block
  7492. {
  7493. var block = new cr.eventblock(this, parent, m);
  7494. cr.seal(block);
  7495. if (block.orblock)
  7496. {
  7497. nontriggers.push(block);
  7498. var i, len;
  7499. for (i = 0, len = block.conditions.length; i < len; i++)
  7500. {
  7501. if (block.conditions[i].trigger)
  7502. this.init_trigger(block, i);
  7503. }
  7504. }
  7505. else
  7506. {
  7507. if (block.is_trigger())
  7508. this.init_trigger(block, 0);
  7509. else
  7510. nontriggers.push(block);
  7511. }
  7512. break;
  7513. }
  7514. case 1: // variable
  7515. {
  7516. var v = new cr.eventvariable(this, parent, m);
  7517. cr.seal(v);
  7518. nontriggers.push(v);
  7519. break;
  7520. }
  7521. case 2: // include
  7522. {
  7523. var inc = new cr.eventinclude(this, parent, m);
  7524. cr.seal(inc);
  7525. nontriggers.push(inc);
  7526. break;
  7527. }
  7528. default:
  7529. ;
  7530. }
  7531. };
  7532. EventSheet.prototype.postInit = function ()
  7533. {
  7534. var i, len;
  7535. for (i = 0, len = this.events.length; i < len; i++)
  7536. {
  7537. this.events[i].postInit(i < len - 1 && this.events[i + 1].is_else_block);
  7538. }
  7539. };
  7540. EventSheet.prototype.run = function (from_include)
  7541. {
  7542. if (!this.runtime.resuming_breakpoint)
  7543. {
  7544. this.hasRun = true;
  7545. if (!from_include)
  7546. this.runtime.isRunningEvents = true;
  7547. }
  7548. var i, len;
  7549. for (i = 0, len = this.events.length; i < len; i++)
  7550. {
  7551. var ev = this.events[i];
  7552. ev.run();
  7553. this.runtime.clearSol(ev.solModifiers);
  7554. if (!this.runtime.deathRow.isEmpty() || this.runtime.createRow.length)
  7555. this.runtime.ClearDeathRow();
  7556. }
  7557. if (!from_include)
  7558. this.runtime.isRunningEvents = false;
  7559. };
  7560. EventSheet.prototype.init_trigger = function (trig, index)
  7561. {
  7562. if (!trig.orblock)
  7563. this.runtime.triggers_to_postinit.push(trig); // needs to be postInit'd later
  7564. var i, len;
  7565. var cnd = trig.conditions[index];
  7566. var type_name;
  7567. if (cnd.type)
  7568. type_name = cnd.type.name;
  7569. else
  7570. type_name = "system";
  7571. var fasttrigger = cnd.fasttrigger;
  7572. var triggers = (fasttrigger ? this.fasttriggers : this.triggers);
  7573. if (!triggers[type_name])
  7574. triggers[type_name] = [];
  7575. var obj_entry = triggers[type_name];
  7576. var method = cnd.func;
  7577. if (fasttrigger)
  7578. {
  7579. if (!cnd.parameters.length) // no parameters
  7580. return;
  7581. var firstparam = cnd.parameters[0];
  7582. if (firstparam.type !== 1 || // not a string param
  7583. firstparam.expression.type !== 2) // not a string literal node
  7584. {
  7585. return;
  7586. }
  7587. var fastevs;
  7588. var firstvalue = firstparam.expression.value.toLowerCase();
  7589. var i, len;
  7590. for (i = 0, len = obj_entry.length; i < len; i++)
  7591. {
  7592. if (obj_entry[i].method == method)
  7593. {
  7594. fastevs = obj_entry[i].evs;
  7595. if (!fastevs[firstvalue])
  7596. fastevs[firstvalue] = [[trig, index]];
  7597. else
  7598. fastevs[firstvalue].push([trig, index]);
  7599. return;
  7600. }
  7601. }
  7602. fastevs = {};
  7603. fastevs[firstvalue] = [[trig, index]];
  7604. obj_entry.push({ method: method, evs: fastevs });
  7605. }
  7606. else
  7607. {
  7608. for (i = 0, len = obj_entry.length; i < len; i++)
  7609. {
  7610. if (obj_entry[i].method == method)
  7611. {
  7612. obj_entry[i].evs.push([trig, index]);
  7613. return;
  7614. }
  7615. }
  7616. obj_entry.push({ method: method, evs: [[trig, index]]});
  7617. }
  7618. };
  7619. cr.eventsheet = EventSheet;
  7620. function Selection(type)
  7621. {
  7622. this.type = type;
  7623. this.instances = []; // subset of picked instances
  7624. this.else_instances = []; // subset of unpicked instances
  7625. this.select_all = true;
  7626. };
  7627. Selection.prototype.hasObjects = function ()
  7628. {
  7629. if (this.select_all)
  7630. return this.type.instances.length;
  7631. else
  7632. return this.instances.length;
  7633. };
  7634. Selection.prototype.getObjects = function ()
  7635. {
  7636. if (this.select_all)
  7637. return this.type.instances;
  7638. else
  7639. return this.instances;
  7640. };
  7641. /*
  7642. Selection.prototype.ensure_picked = function (inst, skip_siblings)
  7643. {
  7644. var i, len;
  7645. var orblock = inst.runtime.getCurrentEventStack().current_event.orblock;
  7646. if (this.select_all)
  7647. {
  7648. this.select_all = false;
  7649. if (orblock)
  7650. {
  7651. cr.shallowAssignArray(this.else_instances, inst.type.instances);
  7652. cr.arrayFindRemove(this.else_instances, inst);
  7653. }
  7654. this.instances.length = 1;
  7655. this.instances[0] = inst;
  7656. }
  7657. else
  7658. {
  7659. if (orblock)
  7660. {
  7661. i = this.else_instances.indexOf(inst);
  7662. if (i !== -1)
  7663. {
  7664. this.instances.push(this.else_instances[i]);
  7665. this.else_instances.splice(i, 1);
  7666. }
  7667. }
  7668. else
  7669. {
  7670. if (this.instances.indexOf(inst) === -1)
  7671. this.instances.push(inst);
  7672. }
  7673. }
  7674. if (!skip_siblings)
  7675. {
  7676. }
  7677. };
  7678. */
  7679. Selection.prototype.pick_one = function (inst)
  7680. {
  7681. if (!inst)
  7682. return;
  7683. if (inst.runtime.getCurrentEventStack().current_event.orblock)
  7684. {
  7685. if (this.select_all)
  7686. {
  7687. this.instances.length = 0;
  7688. cr.shallowAssignArray(this.else_instances, inst.type.instances);
  7689. this.select_all = false;
  7690. }
  7691. var i = this.else_instances.indexOf(inst);
  7692. if (i !== -1)
  7693. {
  7694. this.instances.push(this.else_instances[i]);
  7695. this.else_instances.splice(i, 1);
  7696. }
  7697. }
  7698. else
  7699. {
  7700. this.select_all = false;
  7701. this.instances.length = 1;
  7702. this.instances[0] = inst;
  7703. }
  7704. };
  7705. cr.selection = Selection;
  7706. function EventBlock(sheet, parent, m)
  7707. {
  7708. this.sheet = sheet;
  7709. this.parent = parent;
  7710. this.runtime = sheet.runtime;
  7711. this.solModifiers = [];
  7712. this.solModifiersIncludingParents = [];
  7713. this.solWriterAfterCnds = false; // block does not change SOL after running its conditions
  7714. this.group = false; // is group of events
  7715. this.initially_activated = false; // if a group, is active on startup
  7716. this.toplevelevent = false; // is an event block parented only by a top-level group
  7717. this.toplevelgroup = false; // is parented only by other groups or is top-level (i.e. not in a subevent)
  7718. this.has_else_block = false; // is followed by else
  7719. ;
  7720. this.conditions = [];
  7721. this.actions = [];
  7722. this.subevents = [];
  7723. if (m[1])
  7724. {
  7725. this.group_name = m[1][1].toLowerCase();
  7726. this.group = true;
  7727. this.initially_activated = !!m[1][0];
  7728. this.runtime.allGroups.push(this);
  7729. this.runtime.activeGroups[(/*this.sheet.name + "|" + */this.group_name).toLowerCase()] = this.initially_activated;
  7730. }
  7731. else
  7732. {
  7733. this.group_name = "";
  7734. this.group = false;
  7735. this.initially_activated = false;
  7736. }
  7737. this.orblock = m[2];
  7738. this.sid = m[4];
  7739. if (!this.group)
  7740. this.runtime.blocksBySid[this.sid.toString()] = this;
  7741. var i, len;
  7742. var cm = m[5];
  7743. for (i = 0, len = cm.length; i < len; i++)
  7744. {
  7745. var cnd = new cr.condition(this, cm[i]);
  7746. cnd.index = i;
  7747. cr.seal(cnd);
  7748. this.conditions.push(cnd);
  7749. /*
  7750. if (cnd.is_logical())
  7751. this.is_logical = true;
  7752. if (cnd.type && !cnd.type.plugin.singleglobal && this.cndReferences.indexOf(cnd.type) === -1)
  7753. this.cndReferences.push(cnd.type);
  7754. */
  7755. this.addSolModifier(cnd.type);
  7756. }
  7757. var am = m[6];
  7758. for (i = 0, len = am.length; i < len; i++)
  7759. {
  7760. var act = new cr.action(this, am[i]);
  7761. act.index = i;
  7762. cr.seal(act);
  7763. this.actions.push(act);
  7764. }
  7765. if (m.length === 8)
  7766. {
  7767. var em = m[7];
  7768. for (i = 0, len = em.length; i < len; i++)
  7769. this.sheet.init_event(em[i], this, this.subevents);
  7770. }
  7771. this.is_else_block = false;
  7772. if (this.conditions.length)
  7773. {
  7774. this.is_else_block = (this.conditions[0].type == null && this.conditions[0].func == cr.system_object.prototype.cnds.Else);
  7775. }
  7776. };
  7777. window["_c2hh_"] = "F533BB604F96E4A6B4B30D486C8927B0F6D1925D";
  7778. EventBlock.prototype.postInit = function (hasElse/*, prevBlock_*/)
  7779. {
  7780. var i, len;
  7781. var p = this.parent;
  7782. if (this.group)
  7783. {
  7784. this.toplevelgroup = true;
  7785. while (p)
  7786. {
  7787. if (!p.group)
  7788. {
  7789. this.toplevelgroup = false;
  7790. break;
  7791. }
  7792. p = p.parent;
  7793. }
  7794. }
  7795. this.toplevelevent = !this.is_trigger() && (!this.parent || (this.parent.group && this.parent.toplevelgroup));
  7796. this.has_else_block = !!hasElse;
  7797. this.solModifiersIncludingParents = this.solModifiers.slice(0);
  7798. p = this.parent;
  7799. while (p)
  7800. {
  7801. for (i = 0, len = p.solModifiers.length; i < len; i++)
  7802. this.addParentSolModifier(p.solModifiers[i]);
  7803. p = p.parent;
  7804. }
  7805. this.solModifiers = findMatchingSolModifier(this.solModifiers);
  7806. this.solModifiersIncludingParents = findMatchingSolModifier(this.solModifiersIncludingParents);
  7807. var i, len/*, s*/;
  7808. for (i = 0, len = this.conditions.length; i < len; i++)
  7809. this.conditions[i].postInit();
  7810. for (i = 0, len = this.actions.length; i < len; i++)
  7811. this.actions[i].postInit();
  7812. for (i = 0, len = this.subevents.length; i < len; i++)
  7813. {
  7814. this.subevents[i].postInit(i < len - 1 && this.subevents[i + 1].is_else_block);
  7815. }
  7816. /*
  7817. if (this.is_else_block && this.prev_block)
  7818. {
  7819. for (i = 0, len = this.prev_block.solModifiers.length; i < len; i++)
  7820. {
  7821. s = this.prev_block.solModifiers[i];
  7822. if (this.solModifiers.indexOf(s) === -1)
  7823. this.solModifiers.push(s);
  7824. }
  7825. }
  7826. */
  7827. }
  7828. function addSolModifierToList(type, arr)
  7829. {
  7830. var i, len, t;
  7831. if (!type)
  7832. return;
  7833. if (arr.indexOf(type) === -1)
  7834. arr.push(type);
  7835. if (type.is_contained)
  7836. {
  7837. for (i = 0, len = type.container.length; i < len; i++)
  7838. {
  7839. t = type.container[i];
  7840. if (type === t)
  7841. continue; // already handled
  7842. if (arr.indexOf(t) === -1)
  7843. arr.push(t);
  7844. }
  7845. }
  7846. };
  7847. EventBlock.prototype.addSolModifier = function (type)
  7848. {
  7849. addSolModifierToList(type, this.solModifiers);
  7850. };
  7851. EventBlock.prototype.addParentSolModifier = function (type)
  7852. {
  7853. addSolModifierToList(type, this.solModifiersIncludingParents);
  7854. };
  7855. EventBlock.prototype.setSolWriterAfterCnds = function ()
  7856. {
  7857. this.solWriterAfterCnds = true;
  7858. if (this.parent)
  7859. this.parent.setSolWriterAfterCnds();
  7860. };
  7861. EventBlock.prototype.is_trigger = function ()
  7862. {
  7863. if (!this.conditions.length) // no conditions
  7864. return false;
  7865. else
  7866. return this.conditions[0].trigger;
  7867. };
  7868. EventBlock.prototype.run = function ()
  7869. {
  7870. var i, len, any_true = false, cnd_result;
  7871. var evinfo = this.runtime.getCurrentEventStack();
  7872. evinfo.current_event = this;
  7873. if (!this.is_else_block)
  7874. evinfo.else_branch_ran = false;
  7875. if (this.orblock)
  7876. {
  7877. if (this.conditions.length === 0)
  7878. any_true = true; // be sure to run if empty block
  7879. evinfo.cndindex = 0
  7880. for (len = this.conditions.length; evinfo.cndindex < len; evinfo.cndindex++)
  7881. {
  7882. if (this.conditions[evinfo.cndindex].trigger) // skip triggers when running OR block
  7883. continue;
  7884. cnd_result = this.conditions[evinfo.cndindex].run();
  7885. if (cnd_result) // make sure all conditions run and run if any were true
  7886. any_true = true;
  7887. }
  7888. evinfo.last_event_true = any_true;
  7889. if (any_true)
  7890. this.run_actions_and_subevents();
  7891. }
  7892. else
  7893. {
  7894. evinfo.cndindex = 0
  7895. for (len = this.conditions.length; evinfo.cndindex < len; evinfo.cndindex++)
  7896. {
  7897. cnd_result = this.conditions[evinfo.cndindex].run();
  7898. if (!cnd_result) // condition failed
  7899. {
  7900. evinfo.last_event_true = false;
  7901. if (this.toplevelevent && (!this.runtime.deathRow.isEmpty() || this.runtime.createRow.length))
  7902. this.runtime.ClearDeathRow();
  7903. return; // bail out now
  7904. }
  7905. }
  7906. evinfo.last_event_true = true;
  7907. this.run_actions_and_subevents();
  7908. }
  7909. this.end_run(evinfo);
  7910. };
  7911. EventBlock.prototype.end_run = function (evinfo)
  7912. {
  7913. if (evinfo.last_event_true && this.has_else_block)
  7914. evinfo.else_branch_ran = true;
  7915. if (this.toplevelevent && (!this.runtime.deathRow.isEmpty() || this.runtime.createRow.length))
  7916. this.runtime.ClearDeathRow();
  7917. };
  7918. EventBlock.prototype.run_orblocktrigger = function (index)
  7919. {
  7920. var evinfo = this.runtime.getCurrentEventStack();
  7921. evinfo.current_event = this;
  7922. if (this.conditions[index].run())
  7923. {
  7924. this.run_actions_and_subevents();
  7925. this.runtime.getCurrentEventStack().last_event_true = true;
  7926. }
  7927. };
  7928. EventBlock.prototype.run_actions_and_subevents = function ()
  7929. {
  7930. var evinfo = this.runtime.getCurrentEventStack();
  7931. var len;
  7932. for (evinfo.actindex = 0, len = this.actions.length; evinfo.actindex < len; evinfo.actindex++)
  7933. {
  7934. if (this.actions[evinfo.actindex].run())
  7935. return;
  7936. }
  7937. this.run_subevents();
  7938. };
  7939. EventBlock.prototype.resume_actions_and_subevents = function ()
  7940. {
  7941. var evinfo = this.runtime.getCurrentEventStack();
  7942. var len;
  7943. for (len = this.actions.length; evinfo.actindex < len; evinfo.actindex++)
  7944. {
  7945. if (this.actions[evinfo.actindex].run())
  7946. return;
  7947. }
  7948. this.run_subevents();
  7949. };
  7950. EventBlock.prototype.run_subevents = function ()
  7951. {
  7952. if (!this.subevents.length)
  7953. return;
  7954. var i, len, subev, pushpop/*, skipped_pop = false, pop_modifiers = null*/;
  7955. var last = this.subevents.length - 1;
  7956. this.runtime.pushEventStack(this);
  7957. if (this.solWriterAfterCnds)
  7958. {
  7959. for (i = 0, len = this.subevents.length; i < len; i++)
  7960. {
  7961. subev = this.subevents[i];
  7962. pushpop = (!this.toplevelgroup || (!this.group && i < last));
  7963. if (pushpop)
  7964. this.runtime.pushCopySol(subev.solModifiers);
  7965. subev.run();
  7966. if (pushpop)
  7967. this.runtime.popSol(subev.solModifiers);
  7968. else
  7969. this.runtime.clearSol(subev.solModifiers);
  7970. }
  7971. }
  7972. else
  7973. {
  7974. for (i = 0, len = this.subevents.length; i < len; i++)
  7975. {
  7976. this.subevents[i].run();
  7977. }
  7978. }
  7979. this.runtime.popEventStack();
  7980. };
  7981. EventBlock.prototype.run_pretrigger = function ()
  7982. {
  7983. var evinfo = this.runtime.getCurrentEventStack();
  7984. evinfo.current_event = this;
  7985. var any_true = false;
  7986. var i, len;
  7987. for (evinfo.cndindex = 0, len = this.conditions.length; evinfo.cndindex < len; evinfo.cndindex++)
  7988. {
  7989. ;
  7990. if (this.conditions[evinfo.cndindex].run())
  7991. any_true = true;
  7992. else if (!this.orblock) // condition failed (let OR blocks run all conditions anyway)
  7993. return false; // bail out
  7994. }
  7995. return this.orblock ? any_true : true;
  7996. };
  7997. EventBlock.prototype.retrigger = function ()
  7998. {
  7999. this.runtime.execcount++;
  8000. var prevcndindex = this.runtime.getCurrentEventStack().cndindex;
  8001. var len;
  8002. var evinfo = this.runtime.pushEventStack(this);
  8003. if (!this.orblock)
  8004. {
  8005. for (evinfo.cndindex = prevcndindex + 1, len = this.conditions.length; evinfo.cndindex < len; evinfo.cndindex++)
  8006. {
  8007. if (!this.conditions[evinfo.cndindex].run()) // condition failed
  8008. {
  8009. this.runtime.popEventStack(); // moving up level of recursion
  8010. return false; // bail out
  8011. }
  8012. }
  8013. }
  8014. this.run_actions_and_subevents();
  8015. this.runtime.popEventStack();
  8016. return true; // ran an iteration
  8017. };
  8018. EventBlock.prototype.isFirstConditionOfType = function (cnd)
  8019. {
  8020. var cndindex = cnd.index;
  8021. if (cndindex === 0)
  8022. return true;
  8023. --cndindex;
  8024. for ( ; cndindex >= 0; --cndindex)
  8025. {
  8026. if (this.conditions[cndindex].type === cnd.type)
  8027. return false;
  8028. }
  8029. return true;
  8030. };
  8031. cr.eventblock = EventBlock;
  8032. function Condition(block, m)
  8033. {
  8034. this.block = block;
  8035. this.sheet = block.sheet;
  8036. this.runtime = block.runtime;
  8037. this.parameters = [];
  8038. this.results = [];
  8039. this.extra = {}; // for plugins to stow away some custom info
  8040. this.index = -1;
  8041. this.func = m[1];
  8042. ;
  8043. this.trigger = (m[3] > 0);
  8044. this.fasttrigger = (m[3] === 2);
  8045. this.looping = m[4];
  8046. this.inverted = m[5];
  8047. this.isstatic = m[6];
  8048. this.sid = m[7];
  8049. this.runtime.cndsBySid[this.sid.toString()] = this;
  8050. if (m[0] === -1) // system object
  8051. {
  8052. this.type = null;
  8053. this.run = this.run_system;
  8054. this.behaviortype = null;
  8055. this.beh_index = -1;
  8056. }
  8057. else
  8058. {
  8059. this.type = this.runtime.types_by_index[m[0]];
  8060. ;
  8061. if (this.isstatic)
  8062. this.run = this.run_static;
  8063. else
  8064. this.run = this.run_object;
  8065. if (m[2])
  8066. {
  8067. this.behaviortype = this.type.getBehaviorByName(m[2]);
  8068. ;
  8069. this.beh_index = this.type.getBehaviorIndexByName(m[2]);
  8070. ;
  8071. }
  8072. else
  8073. {
  8074. this.behaviortype = null;
  8075. this.beh_index = -1;
  8076. }
  8077. if (this.block.parent)
  8078. this.block.parent.setSolWriterAfterCnds();
  8079. }
  8080. if (this.fasttrigger)
  8081. this.run = this.run_true;
  8082. if (m.length === 10)
  8083. {
  8084. var i, len;
  8085. var em = m[9];
  8086. for (i = 0, len = em.length; i < len; i++)
  8087. {
  8088. var param = new cr.parameter(this, em[i]);
  8089. cr.seal(param);
  8090. this.parameters.push(param);
  8091. }
  8092. this.results.length = em.length;
  8093. }
  8094. };
  8095. Condition.prototype.postInit = function ()
  8096. {
  8097. var i, len;
  8098. for (i = 0, len = this.parameters.length; i < len; i++)
  8099. this.parameters[i].postInit();
  8100. };
  8101. /*
  8102. Condition.prototype.is_logical = function ()
  8103. {
  8104. return !this.type || this.type.plugin.singleglobal;
  8105. };
  8106. */
  8107. Condition.prototype.run_true = function ()
  8108. {
  8109. return true;
  8110. };
  8111. Condition.prototype.run_system = function ()
  8112. {
  8113. var i, len;
  8114. for (i = 0, len = this.parameters.length; i < len; i++)
  8115. this.results[i] = this.parameters[i].get();
  8116. return cr.xor(this.func.apply(this.runtime.system, this.results), this.inverted);
  8117. };
  8118. Condition.prototype.run_static = function ()
  8119. {
  8120. var i, len;
  8121. for (i = 0, len = this.parameters.length; i < len; i++)
  8122. this.results[i] = this.parameters[i].get(i);
  8123. var ret = this.func.apply(this.behaviortype ? this.behaviortype : this.type, this.results);
  8124. this.type.applySolToContainer();
  8125. return ret;
  8126. };
  8127. Condition.prototype.run_object = function ()
  8128. {
  8129. var i, j, leni, lenj, ret, met, inst, s, sol2;
  8130. var sol = this.type.getCurrentSol();
  8131. var is_orblock = this.block.orblock && !this.trigger; // triggers in OR blocks need to work normally
  8132. var offset = 0;
  8133. var is_contained = this.type.is_contained;
  8134. if (sol.select_all) {
  8135. sol.instances.length = 0; // clear contents
  8136. sol.else_instances.length = 0;
  8137. for (i = 0, leni = this.type.instances.length; i < leni; i++)
  8138. {
  8139. inst = this.type.instances[i];
  8140. ;
  8141. for (j = 0, lenj = this.parameters.length; j < lenj; j++)
  8142. this.results[j] = this.parameters[j].get(i); // default SOL index is current object
  8143. if (this.beh_index > -1)
  8144. {
  8145. if (this.type.is_family)
  8146. {
  8147. offset = inst.type.family_beh_map[this.type.family_index];
  8148. }
  8149. ret = this.func.apply(inst.behavior_insts[this.beh_index + offset], this.results);
  8150. }
  8151. else
  8152. ret = this.func.apply(inst, this.results);
  8153. met = cr.xor(ret, this.inverted);
  8154. if (met)
  8155. sol.instances.push(inst);
  8156. else if (is_orblock) // in OR blocks, keep the instances not meeting the condition for subsequent testing
  8157. sol.else_instances.push(inst);
  8158. }
  8159. if (this.type.finish)
  8160. this.type.finish(true);
  8161. sol.select_all = false;
  8162. this.type.applySolToContainer();
  8163. return sol.hasObjects();
  8164. }
  8165. else {
  8166. var k = 0;
  8167. var using_else_instances = (is_orblock && !this.block.isFirstConditionOfType(this));
  8168. var arr = (using_else_instances ? sol.else_instances : sol.instances);
  8169. var any_true = false;
  8170. for (i = 0, leni = arr.length; i < leni; i++)
  8171. {
  8172. inst = arr[i];
  8173. ;
  8174. for (j = 0, lenj = this.parameters.length; j < lenj; j++)
  8175. this.results[j] = this.parameters[j].get(i); // default SOL index is current object
  8176. if (this.beh_index > -1)
  8177. {
  8178. if (this.type.is_family)
  8179. {
  8180. offset = inst.type.family_beh_map[this.type.family_index];
  8181. }
  8182. ret = this.func.apply(inst.behavior_insts[this.beh_index + offset], this.results);
  8183. }
  8184. else
  8185. ret = this.func.apply(inst, this.results);
  8186. if (cr.xor(ret, this.inverted))
  8187. {
  8188. any_true = true;
  8189. if (using_else_instances)
  8190. {
  8191. sol.instances.push(inst);
  8192. if (is_contained)
  8193. {
  8194. for (j = 0, lenj = inst.siblings.length; j < lenj; j++)
  8195. {
  8196. s = inst.siblings[j];
  8197. s.type.getCurrentSol().instances.push(s);
  8198. }
  8199. }
  8200. }
  8201. else
  8202. {
  8203. arr[k] = inst;
  8204. if (is_contained)
  8205. {
  8206. for (j = 0, lenj = inst.siblings.length; j < lenj; j++)
  8207. {
  8208. s = inst.siblings[j];
  8209. s.type.getCurrentSol().instances[k] = s;
  8210. }
  8211. }
  8212. k++;
  8213. }
  8214. }
  8215. else
  8216. {
  8217. if (using_else_instances)
  8218. {
  8219. arr[k] = inst;
  8220. if (is_contained)
  8221. {
  8222. for (j = 0, lenj = inst.siblings.length; j < lenj; j++)
  8223. {
  8224. s = inst.siblings[j];
  8225. s.type.getCurrentSol().else_instances[k] = s;
  8226. }
  8227. }
  8228. k++;
  8229. }
  8230. else if (is_orblock)
  8231. {
  8232. sol.else_instances.push(inst);
  8233. if (is_contained)
  8234. {
  8235. for (j = 0, lenj = inst.siblings.length; j < lenj; j++)
  8236. {
  8237. s = inst.siblings[j];
  8238. s.type.getCurrentSol().else_instances.push(s);
  8239. }
  8240. }
  8241. }
  8242. }
  8243. }
  8244. arr.length = k;
  8245. if (is_contained)
  8246. {
  8247. for (i = 0, leni = this.type.container.length; i < leni; i++)
  8248. {
  8249. sol2 = this.type.container[i].getCurrentSol();
  8250. if (using_else_instances)
  8251. sol2.else_instances.length = k;
  8252. else
  8253. sol2.instances.length = k;
  8254. }
  8255. }
  8256. var pick_in_finish = any_true; // don't pick in finish() if we're only doing the logic test below
  8257. if (using_else_instances && !any_true)
  8258. {
  8259. for (i = 0, leni = sol.instances.length; i < leni; i++)
  8260. {
  8261. inst = sol.instances[i];
  8262. for (j = 0, lenj = this.parameters.length; j < lenj; j++)
  8263. this.results[j] = this.parameters[j].get(i);
  8264. if (this.beh_index > -1)
  8265. ret = this.func.apply(inst.behavior_insts[this.beh_index], this.results);
  8266. else
  8267. ret = this.func.apply(inst, this.results);
  8268. if (cr.xor(ret, this.inverted))
  8269. {
  8270. any_true = true;
  8271. break; // got our flag, don't need to test any more
  8272. }
  8273. }
  8274. }
  8275. if (this.type.finish)
  8276. this.type.finish(pick_in_finish || is_orblock);
  8277. return is_orblock ? any_true : sol.hasObjects();
  8278. }
  8279. };
  8280. cr.condition = Condition;
  8281. function Action(block, m)
  8282. {
  8283. this.block = block;
  8284. this.sheet = block.sheet;
  8285. this.runtime = block.runtime;
  8286. this.parameters = [];
  8287. this.results = [];
  8288. this.extra = {}; // for plugins to stow away some custom info
  8289. this.index = -1;
  8290. this.func = m[1];
  8291. ;
  8292. if (m[0] === -1) // system
  8293. {
  8294. this.type = null;
  8295. this.run = this.run_system;
  8296. this.behaviortype = null;
  8297. this.beh_index = -1;
  8298. }
  8299. else
  8300. {
  8301. this.type = this.runtime.types_by_index[m[0]];
  8302. ;
  8303. this.run = this.run_object;
  8304. if (m[2])
  8305. {
  8306. this.behaviortype = this.type.getBehaviorByName(m[2]);
  8307. ;
  8308. this.beh_index = this.type.getBehaviorIndexByName(m[2]);
  8309. ;
  8310. }
  8311. else
  8312. {
  8313. this.behaviortype = null;
  8314. this.beh_index = -1;
  8315. }
  8316. }
  8317. this.sid = m[3];
  8318. this.runtime.actsBySid[this.sid.toString()] = this;
  8319. if (m.length === 6)
  8320. {
  8321. var i, len;
  8322. var em = m[5];
  8323. for (i = 0, len = em.length; i < len; i++)
  8324. {
  8325. var param = new cr.parameter(this, em[i]);
  8326. cr.seal(param);
  8327. this.parameters.push(param);
  8328. }
  8329. this.results.length = em.length;
  8330. }
  8331. };
  8332. Action.prototype.postInit = function ()
  8333. {
  8334. var i, len;
  8335. for (i = 0, len = this.parameters.length; i < len; i++)
  8336. this.parameters[i].postInit();
  8337. };
  8338. Action.prototype.run_system = function ()
  8339. {
  8340. var i, len;
  8341. for (i = 0, len = this.parameters.length; i < len; i++)
  8342. this.results[i] = this.parameters[i].get();
  8343. return this.func.apply(this.runtime.system, this.results);
  8344. };
  8345. Action.prototype.run_object = function ()
  8346. {
  8347. var instances = this.type.getCurrentSol().getObjects();
  8348. var i, j, leni, lenj, inst;
  8349. for (i = 0, leni = instances.length; i < leni; i++)
  8350. {
  8351. inst = instances[i];
  8352. for (j = 0, lenj = this.parameters.length; j < lenj; j++)
  8353. this.results[j] = this.parameters[j].get(i); // pass i to use as default SOL index
  8354. if (this.beh_index > -1)
  8355. {
  8356. var offset = 0;
  8357. if (this.type.is_family)
  8358. {
  8359. offset = inst.type.family_beh_map[this.type.family_index];
  8360. }
  8361. this.func.apply(inst.behavior_insts[this.beh_index + offset], this.results);
  8362. }
  8363. else
  8364. this.func.apply(inst, this.results);
  8365. }
  8366. return false;
  8367. };
  8368. cr.action = Action;
  8369. var tempValues = [];
  8370. var tempValuesPtr = -1;
  8371. function Parameter(owner, m)
  8372. {
  8373. this.owner = owner;
  8374. this.block = owner.block;
  8375. this.sheet = owner.sheet;
  8376. this.runtime = owner.runtime;
  8377. this.type = m[0];
  8378. this.expression = null;
  8379. this.solindex = 0;
  8380. this.combosel = 0;
  8381. this.layout = null;
  8382. this.key = 0;
  8383. this.object = null;
  8384. this.index = 0;
  8385. this.varname = null;
  8386. this.eventvar = null;
  8387. this.fileinfo = null;
  8388. this.subparams = null;
  8389. this.variadicret = null;
  8390. var i, len, param;
  8391. switch (m[0])
  8392. {
  8393. case 0: // number
  8394. case 7: // any
  8395. this.expression = new cr.expNode(this, m[1]);
  8396. this.solindex = 0;
  8397. this.get = this.get_exp;
  8398. break;
  8399. case 1: // string
  8400. this.expression = new cr.expNode(this, m[1]);
  8401. this.solindex = 0;
  8402. this.get = this.get_exp_str;
  8403. break;
  8404. case 5: // layer
  8405. this.expression = new cr.expNode(this, m[1]);
  8406. this.solindex = 0;
  8407. this.get = this.get_layer;
  8408. break;
  8409. case 3: // combo
  8410. case 8: // cmp
  8411. this.combosel = m[1];
  8412. this.get = this.get_combosel;
  8413. break;
  8414. case 6: // layout
  8415. this.layout = this.runtime.layouts[m[1]];
  8416. ;
  8417. this.get = this.get_layout;
  8418. break;
  8419. case 9: // keyb
  8420. this.key = m[1];
  8421. this.get = this.get_key;
  8422. break;
  8423. case 4: // object
  8424. this.object = this.runtime.types_by_index[m[1]];
  8425. ;
  8426. this.get = this.get_object;
  8427. this.block.addSolModifier(this.object);
  8428. if (this.owner instanceof cr.action)
  8429. this.block.setSolWriterAfterCnds();
  8430. else if (this.block.parent)
  8431. this.block.parent.setSolWriterAfterCnds();
  8432. break;
  8433. case 10: // instvar
  8434. this.index = m[1];
  8435. if (owner.type.is_family)
  8436. this.get = this.get_familyvar;
  8437. else
  8438. this.get = this.get_instvar;
  8439. break;
  8440. case 11: // eventvar
  8441. this.varname = m[1];
  8442. this.eventvar = null;
  8443. this.get = this.get_eventvar;
  8444. break;
  8445. case 2: // audiofile ["name", ismusic]
  8446. case 12: // fileinfo "name"
  8447. this.fileinfo = m[1];
  8448. this.get = this.get_audiofile;
  8449. break;
  8450. case 13: // variadic
  8451. this.get = this.get_variadic;
  8452. this.subparams = [];
  8453. this.variadicret = [];
  8454. for (i = 1, len = m.length; i < len; i++)
  8455. {
  8456. param = new cr.parameter(this.owner, m[i]);
  8457. cr.seal(param);
  8458. this.subparams.push(param);
  8459. this.variadicret.push(0);
  8460. }
  8461. break;
  8462. default:
  8463. ;
  8464. }
  8465. };
  8466. Parameter.prototype.postInit = function ()
  8467. {
  8468. var i, len;
  8469. if (this.type === 11) // eventvar
  8470. {
  8471. this.eventvar = this.runtime.getEventVariableByName(this.varname, this.block.parent);
  8472. ;
  8473. }
  8474. else if (this.type === 13) // variadic, postInit all sub-params
  8475. {
  8476. for (i = 0, len = this.subparams.length; i < len; i++)
  8477. this.subparams[i].postInit();
  8478. }
  8479. if (this.expression)
  8480. this.expression.postInit();
  8481. };
  8482. Parameter.prototype.pushTempValue = function ()
  8483. {
  8484. tempValuesPtr++;
  8485. if (tempValues.length === tempValuesPtr)
  8486. tempValues.push(new cr.expvalue());
  8487. return tempValues[tempValuesPtr];
  8488. };
  8489. Parameter.prototype.popTempValue = function ()
  8490. {
  8491. tempValuesPtr--;
  8492. };
  8493. Parameter.prototype.get_exp = function (solindex)
  8494. {
  8495. this.solindex = solindex || 0; // default SOL index to use
  8496. var temp = this.pushTempValue();
  8497. this.expression.get(temp);
  8498. this.popTempValue();
  8499. return temp.data; // return actual JS value, not expvalue
  8500. };
  8501. Parameter.prototype.get_exp_str = function (solindex)
  8502. {
  8503. this.solindex = solindex || 0; // default SOL index to use
  8504. var temp = this.pushTempValue();
  8505. this.expression.get(temp);
  8506. this.popTempValue();
  8507. if (cr.is_string(temp.data))
  8508. return temp.data;
  8509. else
  8510. return "";
  8511. };
  8512. Parameter.prototype.get_object = function ()
  8513. {
  8514. return this.object;
  8515. };
  8516. Parameter.prototype.get_combosel = function ()
  8517. {
  8518. return this.combosel;
  8519. };
  8520. Parameter.prototype.get_layer = function (solindex)
  8521. {
  8522. this.solindex = solindex || 0; // default SOL index to use
  8523. var temp = this.pushTempValue();
  8524. this.expression.get(temp);
  8525. this.popTempValue();
  8526. if (temp.is_number())
  8527. return this.runtime.getLayerByNumber(temp.data);
  8528. else
  8529. return this.runtime.getLayerByName(temp.data);
  8530. }
  8531. Parameter.prototype.get_layout = function ()
  8532. {
  8533. return this.layout;
  8534. };
  8535. Parameter.prototype.get_key = function ()
  8536. {
  8537. return this.key;
  8538. };
  8539. Parameter.prototype.get_instvar = function ()
  8540. {
  8541. return this.index;
  8542. };
  8543. Parameter.prototype.get_familyvar = function (solindex)
  8544. {
  8545. var familytype = this.owner.type;
  8546. var realtype = null;
  8547. var sol = familytype.getCurrentSol();
  8548. var objs = sol.getObjects();
  8549. if (objs.length)
  8550. realtype = objs[solindex % objs.length].type;
  8551. else
  8552. {
  8553. ;
  8554. realtype = sol.else_instances[solindex % sol.else_instances.length].type;
  8555. }
  8556. return this.index + realtype.family_var_map[familytype.family_index];
  8557. };
  8558. Parameter.prototype.get_eventvar = function ()
  8559. {
  8560. return this.eventvar;
  8561. };
  8562. Parameter.prototype.get_audiofile = function ()
  8563. {
  8564. return this.fileinfo;
  8565. };
  8566. Parameter.prototype.get_variadic = function ()
  8567. {
  8568. var i, len;
  8569. for (i = 0, len = this.subparams.length; i < len; i++)
  8570. {
  8571. this.variadicret[i] = this.subparams[i].get();
  8572. }
  8573. return this.variadicret;
  8574. };
  8575. cr.parameter = Parameter;
  8576. function EventVariable(sheet, parent, m)
  8577. {
  8578. this.sheet = sheet;
  8579. this.parent = parent;
  8580. this.runtime = sheet.runtime;
  8581. this.solModifiers = [];
  8582. this.name = m[1];
  8583. this.vartype = m[2];
  8584. this.initial = m[3];
  8585. this.is_static = !!m[4];
  8586. this.is_constant = !!m[5];
  8587. this.sid = m[6];
  8588. this.runtime.varsBySid[this.sid.toString()] = this;
  8589. this.data = this.initial; // note: also stored in event stack frame for local nonstatic nonconst vars
  8590. if (this.parent) // local var
  8591. {
  8592. if (this.is_static || this.is_constant)
  8593. this.localIndex = -1;
  8594. else
  8595. this.localIndex = this.runtime.stackLocalCount++;
  8596. this.runtime.all_local_vars.push(this);
  8597. }
  8598. else // global var
  8599. {
  8600. this.localIndex = -1;
  8601. this.runtime.all_global_vars.push(this);
  8602. }
  8603. };
  8604. EventVariable.prototype.postInit = function ()
  8605. {
  8606. this.solModifiers = findMatchingSolModifier(this.solModifiers);
  8607. };
  8608. EventVariable.prototype.setValue = function (x)
  8609. {
  8610. ;
  8611. var lvs = this.runtime.getCurrentLocalVarStack();
  8612. if (!this.parent || this.is_static || !lvs)
  8613. this.data = x;
  8614. else // local nonstatic variable: use event stack to keep value at this level of recursion
  8615. {
  8616. if (this.localIndex >= lvs.length)
  8617. lvs.length = this.localIndex + 1;
  8618. lvs[this.localIndex] = x;
  8619. }
  8620. };
  8621. EventVariable.prototype.getValue = function ()
  8622. {
  8623. var lvs = this.runtime.getCurrentLocalVarStack();
  8624. if (!this.parent || this.is_static || !lvs || this.is_constant)
  8625. return this.data;
  8626. else // local nonstatic variable
  8627. {
  8628. if (this.localIndex >= lvs.length)
  8629. {
  8630. ;
  8631. return this.initial;
  8632. }
  8633. if (typeof lvs[this.localIndex] === "undefined")
  8634. {
  8635. ;
  8636. return this.initial;
  8637. }
  8638. return lvs[this.localIndex];
  8639. }
  8640. };
  8641. EventVariable.prototype.run = function ()
  8642. {
  8643. if (this.parent && !this.is_static && !this.is_constant)
  8644. this.setValue(this.initial);
  8645. };
  8646. cr.eventvariable = EventVariable;
  8647. function EventInclude(sheet, parent, m)
  8648. {
  8649. this.sheet = sheet;
  8650. this.parent = parent;
  8651. this.runtime = sheet.runtime;
  8652. this.solModifiers = [];
  8653. this.include_sheet = null; // determined in postInit
  8654. this.include_sheet_name = m[1];
  8655. };
  8656. EventInclude.prototype.toString = function ()
  8657. {
  8658. return "include:" + this.include_sheet.toString();
  8659. };
  8660. EventInclude.prototype.postInit = function ()
  8661. {
  8662. this.include_sheet = this.runtime.eventsheets[this.include_sheet_name];
  8663. ;
  8664. ;
  8665. this.sheet.includes.add(this);
  8666. this.solModifiers = findMatchingSolModifier(this.solModifiers);
  8667. };
  8668. EventInclude.prototype.run = function ()
  8669. {
  8670. if (this.parent)
  8671. this.runtime.pushCleanSol(this.runtime.types_by_index);
  8672. if (!this.include_sheet.hasRun)
  8673. this.include_sheet.run(true); // from include
  8674. if (this.parent)
  8675. this.runtime.popSol(this.runtime.types_by_index);
  8676. };
  8677. EventInclude.prototype.isActive = function ()
  8678. {
  8679. var p = this.parent;
  8680. while (p)
  8681. {
  8682. if (p.group)
  8683. {
  8684. if (!this.runtime.activeGroups[p.group_name.toLowerCase()])
  8685. return false;
  8686. }
  8687. p = p.parent;
  8688. }
  8689. return true;
  8690. };
  8691. cr.eventinclude = EventInclude;
  8692. function EventStackFrame()
  8693. {
  8694. this.temp_parents_arr = [];
  8695. this.reset(null);
  8696. cr.seal(this);
  8697. };
  8698. EventStackFrame.prototype.reset = function (cur_event)
  8699. {
  8700. this.current_event = cur_event;
  8701. this.cndindex = 0;
  8702. this.actindex = 0;
  8703. this.temp_parents_arr.length = 0;
  8704. this.last_event_true = false;
  8705. this.else_branch_ran = false;
  8706. this.any_true_state = false;
  8707. };
  8708. EventStackFrame.prototype.isModifierAfterCnds = function ()
  8709. {
  8710. if (this.current_event.solWriterAfterCnds)
  8711. return true;
  8712. if (this.cndindex < this.current_event.conditions.length - 1)
  8713. return !!this.current_event.solModifiers.length;
  8714. return false;
  8715. };
  8716. cr.eventStackFrame = EventStackFrame;
  8717. }());
  8718. (function()
  8719. {
  8720. function ExpNode(owner_, m)
  8721. {
  8722. this.owner = owner_;
  8723. this.runtime = owner_.runtime;
  8724. this.type = m[0];
  8725. ;
  8726. this.get = [this.eval_int,
  8727. this.eval_float,
  8728. this.eval_string,
  8729. this.eval_unaryminus,
  8730. this.eval_add,
  8731. this.eval_subtract,
  8732. this.eval_multiply,
  8733. this.eval_divide,
  8734. this.eval_mod,
  8735. this.eval_power,
  8736. this.eval_and,
  8737. this.eval_or,
  8738. this.eval_equal,
  8739. this.eval_notequal,
  8740. this.eval_less,
  8741. this.eval_lessequal,
  8742. this.eval_greater,
  8743. this.eval_greaterequal,
  8744. this.eval_conditional,
  8745. this.eval_system_exp,
  8746. this.eval_object_behavior_exp,
  8747. this.eval_instvar_exp,
  8748. this.eval_object_behavior_exp,
  8749. this.eval_eventvar_exp][this.type];
  8750. var paramsModel = null;
  8751. this.value = null;
  8752. this.first = null;
  8753. this.second = null;
  8754. this.third = null;
  8755. this.func = null;
  8756. this.results = null;
  8757. this.parameters = null;
  8758. this.object_type = null;
  8759. this.beh_index = -1;
  8760. this.instance_expr = null;
  8761. this.varindex = -1;
  8762. this.behavior_type = null;
  8763. this.varname = null;
  8764. this.eventvar = null;
  8765. this.return_string = false;
  8766. switch (this.type) {
  8767. case 0: // int
  8768. case 1: // float
  8769. case 2: // string
  8770. this.value = m[1];
  8771. break;
  8772. case 3: // unaryminus
  8773. this.first = new cr.expNode(owner_, m[1]);
  8774. break;
  8775. case 18: // conditional
  8776. this.first = new cr.expNode(owner_, m[1]);
  8777. this.second = new cr.expNode(owner_, m[2]);
  8778. this.third = new cr.expNode(owner_, m[3]);
  8779. break;
  8780. case 19: // system_exp
  8781. this.func = m[1];
  8782. ;
  8783. this.results = [];
  8784. this.parameters = [];
  8785. if (m.length === 3)
  8786. {
  8787. paramsModel = m[2];
  8788. this.results.length = paramsModel.length + 1; // must also fit 'ret'
  8789. }
  8790. else
  8791. this.results.length = 1; // to fit 'ret'
  8792. break;
  8793. case 20: // object_exp
  8794. this.object_type = this.runtime.types_by_index[m[1]];
  8795. ;
  8796. this.beh_index = -1;
  8797. this.func = m[2];
  8798. this.return_string = m[3];
  8799. if (m[4])
  8800. this.instance_expr = new cr.expNode(owner_, m[4]);
  8801. else
  8802. this.instance_expr = null;
  8803. this.results = [];
  8804. this.parameters = [];
  8805. if (m.length === 6)
  8806. {
  8807. paramsModel = m[5];
  8808. this.results.length = paramsModel.length + 1;
  8809. }
  8810. else
  8811. this.results.length = 1; // to fit 'ret'
  8812. break;
  8813. case 21: // instvar_exp
  8814. this.object_type = this.runtime.types_by_index[m[1]];
  8815. ;
  8816. this.return_string = m[2];
  8817. if (m[3])
  8818. this.instance_expr = new cr.expNode(owner_, m[3]);
  8819. else
  8820. this.instance_expr = null;
  8821. this.varindex = m[4];
  8822. break;
  8823. case 22: // behavior_exp
  8824. this.object_type = this.runtime.types_by_index[m[1]];
  8825. ;
  8826. this.behavior_type = this.object_type.getBehaviorByName(m[2]);
  8827. ;
  8828. this.beh_index = this.object_type.getBehaviorIndexByName(m[2]);
  8829. this.func = m[3];
  8830. this.return_string = m[4];
  8831. if (m[5])
  8832. this.instance_expr = new cr.expNode(owner_, m[5]);
  8833. else
  8834. this.instance_expr = null;
  8835. this.results = [];
  8836. this.parameters = [];
  8837. if (m.length === 7)
  8838. {
  8839. paramsModel = m[6];
  8840. this.results.length = paramsModel.length + 1;
  8841. }
  8842. else
  8843. this.results.length = 1; // to fit 'ret'
  8844. break;
  8845. case 23: // eventvar_exp
  8846. this.varname = m[1];
  8847. this.eventvar = null; // assigned in postInit
  8848. break;
  8849. }
  8850. if (this.type >= 4 && this.type <= 17)
  8851. {
  8852. this.first = new cr.expNode(owner_, m[1]);
  8853. this.second = new cr.expNode(owner_, m[2]);
  8854. }
  8855. if (paramsModel)
  8856. {
  8857. var i, len;
  8858. for (i = 0, len = paramsModel.length; i < len; i++)
  8859. this.parameters.push(new cr.expNode(owner_, paramsModel[i]));
  8860. }
  8861. cr.seal(this);
  8862. };
  8863. ExpNode.prototype.postInit = function ()
  8864. {
  8865. if (this.type === 23) // eventvar_exp
  8866. {
  8867. this.eventvar = this.owner.runtime.getEventVariableByName(this.varname, this.owner.block.parent);
  8868. ;
  8869. }
  8870. if (this.first)
  8871. this.first.postInit();
  8872. if (this.second)
  8873. this.second.postInit();
  8874. if (this.third)
  8875. this.third.postInit();
  8876. if (this.instance_expr)
  8877. this.instance_expr.postInit();
  8878. if (this.parameters)
  8879. {
  8880. var i, len;
  8881. for (i = 0, len = this.parameters.length; i < len; i++)
  8882. this.parameters[i].postInit();
  8883. }
  8884. };
  8885. ExpNode.prototype.eval_system_exp = function (ret)
  8886. {
  8887. this.results[0] = ret;
  8888. var temp = this.owner.pushTempValue();
  8889. var i, len;
  8890. for (i = 0, len = this.parameters.length; i < len; i++)
  8891. {
  8892. this.parameters[i].get(temp);
  8893. this.results[i + 1] = temp.data; // passing actual javascript value as argument instead of expvalue
  8894. }
  8895. this.owner.popTempValue();
  8896. this.func.apply(this.runtime.system, this.results);
  8897. };
  8898. ExpNode.prototype.eval_object_behavior_exp = function (ret)
  8899. {
  8900. var sol = this.object_type.getCurrentSol();
  8901. var instances = sol.getObjects();
  8902. if (!instances.length)
  8903. {
  8904. if (sol.else_instances.length)
  8905. instances = sol.else_instances;
  8906. else
  8907. {
  8908. if (this.return_string)
  8909. ret.set_string("");
  8910. else
  8911. ret.set_int(0);
  8912. return;
  8913. }
  8914. }
  8915. this.results[0] = ret;
  8916. ret.object_class = this.object_type; // so expression can access family type if need be
  8917. var temp = this.owner.pushTempValue();
  8918. var i, len;
  8919. for (i = 0, len = this.parameters.length; i < len; i++) {
  8920. this.parameters[i].get(temp);
  8921. this.results[i + 1] = temp.data; // passing actual javascript value as argument instead of expvalue
  8922. }
  8923. var index = this.owner.solindex;
  8924. if (this.instance_expr) {
  8925. this.instance_expr.get(temp);
  8926. if (temp.is_number()) {
  8927. index = temp.data;
  8928. instances = this.object_type.instances; // pick from all instances, not SOL
  8929. }
  8930. }
  8931. this.owner.popTempValue();
  8932. index %= instances.length; // wraparound
  8933. if (index < 0)
  8934. index += instances.length;
  8935. var returned_val;
  8936. var inst = instances[index];
  8937. if (this.beh_index > -1)
  8938. {
  8939. var offset = 0;
  8940. if (this.object_type.is_family)
  8941. {
  8942. offset = inst.type.family_beh_map[this.object_type.family_index];
  8943. }
  8944. returned_val = this.func.apply(inst.behavior_insts[this.beh_index + offset], this.results);
  8945. }
  8946. else
  8947. returned_val = this.func.apply(inst, this.results);
  8948. ;
  8949. };
  8950. ExpNode.prototype.eval_instvar_exp = function (ret)
  8951. {
  8952. var sol = this.object_type.getCurrentSol();
  8953. var instances = sol.getObjects();
  8954. if (!instances.length)
  8955. {
  8956. if (sol.else_instances.length)
  8957. instances = sol.else_instances;
  8958. else
  8959. {
  8960. if (this.return_string)
  8961. ret.set_string("");
  8962. else
  8963. ret.set_int(0);
  8964. return;
  8965. }
  8966. }
  8967. var index = this.owner.solindex;
  8968. if (this.instance_expr)
  8969. {
  8970. var temp = this.owner.pushTempValue();
  8971. this.instance_expr.get(temp);
  8972. if (temp.is_number())
  8973. {
  8974. index = temp.data;
  8975. var type_instances = this.object_type.instances;
  8976. index %= type_instances.length; // wraparound
  8977. if (index < 0) // offset
  8978. index += type_instances.length;
  8979. var to_ret = type_instances[index].instance_vars[this.varindex];
  8980. if (cr.is_string(to_ret))
  8981. ret.set_string(to_ret);
  8982. else
  8983. ret.set_float(to_ret);
  8984. this.owner.popTempValue();
  8985. return; // done
  8986. }
  8987. this.owner.popTempValue();
  8988. }
  8989. index %= instances.length; // wraparound
  8990. if (index < 0)
  8991. index += instances.length;
  8992. var inst = instances[index];
  8993. var offset = 0;
  8994. if (this.object_type.is_family)
  8995. {
  8996. offset = inst.type.family_var_map[this.object_type.family_index];
  8997. }
  8998. var to_ret = inst.instance_vars[this.varindex + offset];
  8999. if (cr.is_string(to_ret))
  9000. ret.set_string(to_ret);
  9001. else
  9002. ret.set_float(to_ret);
  9003. };
  9004. ExpNode.prototype.eval_int = function (ret)
  9005. {
  9006. ret.type = cr.exptype.Integer;
  9007. ret.data = this.value;
  9008. };
  9009. ExpNode.prototype.eval_float = function (ret)
  9010. {
  9011. ret.type = cr.exptype.Float;
  9012. ret.data = this.value;
  9013. };
  9014. ExpNode.prototype.eval_string = function (ret)
  9015. {
  9016. ret.type = cr.exptype.String;
  9017. ret.data = this.value;
  9018. };
  9019. ExpNode.prototype.eval_unaryminus = function (ret)
  9020. {
  9021. this.first.get(ret); // retrieve operand
  9022. if (ret.is_number())
  9023. ret.data = -ret.data;
  9024. };
  9025. ExpNode.prototype.eval_add = function (ret)
  9026. {
  9027. this.first.get(ret); // left operand
  9028. var temp = this.owner.pushTempValue();
  9029. this.second.get(temp); // right operand
  9030. if (ret.is_number() && temp.is_number())
  9031. {
  9032. ret.data += temp.data; // both operands numbers: add
  9033. if (temp.is_float())
  9034. ret.make_float();
  9035. }
  9036. this.owner.popTempValue();
  9037. };
  9038. ExpNode.prototype.eval_subtract = function (ret)
  9039. {
  9040. this.first.get(ret); // left operand
  9041. var temp = this.owner.pushTempValue();
  9042. this.second.get(temp); // right operand
  9043. if (ret.is_number() && temp.is_number())
  9044. {
  9045. ret.data -= temp.data; // both operands numbers: subtract
  9046. if (temp.is_float())
  9047. ret.make_float();
  9048. }
  9049. this.owner.popTempValue();
  9050. };
  9051. ExpNode.prototype.eval_multiply = function (ret)
  9052. {
  9053. this.first.get(ret); // left operand
  9054. var temp = this.owner.pushTempValue();
  9055. this.second.get(temp); // right operand
  9056. if (ret.is_number() && temp.is_number())
  9057. {
  9058. ret.data *= temp.data; // both operands numbers: multiply
  9059. if (temp.is_float())
  9060. ret.make_float();
  9061. }
  9062. this.owner.popTempValue();
  9063. };
  9064. ExpNode.prototype.eval_divide = function (ret)
  9065. {
  9066. this.first.get(ret); // left operand
  9067. var temp = this.owner.pushTempValue();
  9068. this.second.get(temp); // right operand
  9069. if (ret.is_number() && temp.is_number())
  9070. {
  9071. ret.data /= temp.data; // both operands numbers: divide
  9072. ret.make_float();
  9073. }
  9074. this.owner.popTempValue();
  9075. };
  9076. ExpNode.prototype.eval_mod = function (ret)
  9077. {
  9078. this.first.get(ret); // left operand
  9079. var temp = this.owner.pushTempValue();
  9080. this.second.get(temp); // right operand
  9081. if (ret.is_number() && temp.is_number())
  9082. {
  9083. ret.data %= temp.data; // both operands numbers: modulo
  9084. if (temp.is_float())
  9085. ret.make_float();
  9086. }
  9087. this.owner.popTempValue();
  9088. };
  9089. ExpNode.prototype.eval_power = function (ret)
  9090. {
  9091. this.first.get(ret); // left operand
  9092. var temp = this.owner.pushTempValue();
  9093. this.second.get(temp); // right operand
  9094. if (ret.is_number() && temp.is_number())
  9095. {
  9096. ret.data = Math.pow(ret.data, temp.data); // both operands numbers: raise to power
  9097. if (temp.is_float())
  9098. ret.make_float();
  9099. }
  9100. this.owner.popTempValue();
  9101. };
  9102. ExpNode.prototype.eval_and = function (ret)
  9103. {
  9104. this.first.get(ret); // left operand
  9105. var temp = this.owner.pushTempValue();
  9106. this.second.get(temp); // right operand
  9107. if (ret.is_number())
  9108. {
  9109. if (temp.is_string())
  9110. {
  9111. ret.set_string(ret.data.toString() + temp.data);
  9112. }
  9113. else
  9114. {
  9115. if (ret.data && temp.data)
  9116. ret.set_int(1);
  9117. else
  9118. ret.set_int(0);
  9119. }
  9120. }
  9121. else if (ret.is_string())
  9122. {
  9123. if (temp.is_string())
  9124. ret.data += temp.data;
  9125. else
  9126. {
  9127. ret.data += (Math.round(temp.data * 1e10) / 1e10).toString();
  9128. }
  9129. }
  9130. this.owner.popTempValue();
  9131. };
  9132. ExpNode.prototype.eval_or = function (ret)
  9133. {
  9134. this.first.get(ret); // left operand
  9135. var temp = this.owner.pushTempValue();
  9136. this.second.get(temp); // right operand
  9137. if (ret.is_number() && temp.is_number())
  9138. {
  9139. if (ret.data || temp.data)
  9140. ret.set_int(1);
  9141. else
  9142. ret.set_int(0);
  9143. }
  9144. this.owner.popTempValue();
  9145. };
  9146. ExpNode.prototype.eval_conditional = function (ret)
  9147. {
  9148. this.first.get(ret); // condition operand
  9149. if (ret.data) // is true
  9150. this.second.get(ret); // evaluate second operand to ret
  9151. else
  9152. this.third.get(ret); // evaluate third operand to ret
  9153. };
  9154. ExpNode.prototype.eval_equal = function (ret)
  9155. {
  9156. this.first.get(ret); // left operand
  9157. var temp = this.owner.pushTempValue();
  9158. this.second.get(temp); // right operand
  9159. ret.set_int(ret.data === temp.data ? 1 : 0);
  9160. this.owner.popTempValue();
  9161. };
  9162. ExpNode.prototype.eval_notequal = function (ret)
  9163. {
  9164. this.first.get(ret); // left operand
  9165. var temp = this.owner.pushTempValue();
  9166. this.second.get(temp); // right operand
  9167. ret.set_int(ret.data !== temp.data ? 1 : 0);
  9168. this.owner.popTempValue();
  9169. };
  9170. ExpNode.prototype.eval_less = function (ret)
  9171. {
  9172. this.first.get(ret); // left operand
  9173. var temp = this.owner.pushTempValue();
  9174. this.second.get(temp); // right operand
  9175. ret.set_int(ret.data < temp.data ? 1 : 0);
  9176. this.owner.popTempValue();
  9177. };
  9178. ExpNode.prototype.eval_lessequal = function (ret)
  9179. {
  9180. this.first.get(ret); // left operand
  9181. var temp = this.owner.pushTempValue();
  9182. this.second.get(temp); // right operand
  9183. ret.set_int(ret.data <= temp.data ? 1 : 0);
  9184. this.owner.popTempValue();
  9185. };
  9186. ExpNode.prototype.eval_greater = function (ret)
  9187. {
  9188. this.first.get(ret); // left operand
  9189. var temp = this.owner.pushTempValue();
  9190. this.second.get(temp); // right operand
  9191. ret.set_int(ret.data > temp.data ? 1 : 0);
  9192. this.owner.popTempValue();
  9193. };
  9194. ExpNode.prototype.eval_greaterequal = function (ret)
  9195. {
  9196. this.first.get(ret); // left operand
  9197. var temp = this.owner.pushTempValue();
  9198. this.second.get(temp); // right operand
  9199. ret.set_int(ret.data >= temp.data ? 1 : 0);
  9200. this.owner.popTempValue();
  9201. };
  9202. ExpNode.prototype.eval_eventvar_exp = function (ret)
  9203. {
  9204. var val = this.eventvar.getValue();
  9205. if (cr.is_number(val))
  9206. ret.set_float(val);
  9207. else
  9208. ret.set_string(val);
  9209. };
  9210. cr.expNode = ExpNode;
  9211. function ExpValue(type, data)
  9212. {
  9213. this.type = type || cr.exptype.Integer;
  9214. this.data = data || 0;
  9215. this.object_class = null;
  9216. ;
  9217. ;
  9218. ;
  9219. if (this.type == cr.exptype.Integer)
  9220. this.data = Math.floor(this.data);
  9221. cr.seal(this);
  9222. };
  9223. ExpValue.prototype.is_int = function ()
  9224. {
  9225. return this.type === cr.exptype.Integer;
  9226. };
  9227. ExpValue.prototype.is_float = function ()
  9228. {
  9229. return this.type === cr.exptype.Float;
  9230. };
  9231. ExpValue.prototype.is_number = function ()
  9232. {
  9233. return this.type === cr.exptype.Integer || this.type === cr.exptype.Float;
  9234. };
  9235. ExpValue.prototype.is_string = function ()
  9236. {
  9237. return this.type === cr.exptype.String;
  9238. };
  9239. ExpValue.prototype.make_int = function ()
  9240. {
  9241. if (!this.is_int())
  9242. {
  9243. if (this.is_float())
  9244. this.data = Math.floor(this.data); // truncate float
  9245. else if (this.is_string())
  9246. this.data = parseInt(this.data, 10);
  9247. this.type = cr.exptype.Integer;
  9248. }
  9249. };
  9250. ExpValue.prototype.make_float = function ()
  9251. {
  9252. if (!this.is_float())
  9253. {
  9254. if (this.is_string())
  9255. this.data = parseFloat(this.data);
  9256. this.type = cr.exptype.Float;
  9257. }
  9258. };
  9259. ExpValue.prototype.make_string = function ()
  9260. {
  9261. if (!this.is_string())
  9262. {
  9263. this.data = this.data.toString();
  9264. this.type = cr.exptype.String;
  9265. }
  9266. };
  9267. ExpValue.prototype.set_int = function (val)
  9268. {
  9269. ;
  9270. this.type = cr.exptype.Integer;
  9271. this.data = Math.floor(val);
  9272. };
  9273. ExpValue.prototype.set_float = function (val)
  9274. {
  9275. ;
  9276. this.type = cr.exptype.Float;
  9277. this.data = val;
  9278. };
  9279. ExpValue.prototype.set_string = function (val)
  9280. {
  9281. ;
  9282. this.type = cr.exptype.String;
  9283. this.data = val;
  9284. };
  9285. ExpValue.prototype.set_any = function (val)
  9286. {
  9287. if (cr.is_number(val))
  9288. {
  9289. this.type = cr.exptype.Float;
  9290. this.data = val;
  9291. }
  9292. else if (cr.is_string(val))
  9293. {
  9294. this.type = cr.exptype.String;
  9295. this.data = val.toString();
  9296. }
  9297. else
  9298. {
  9299. this.type = cr.exptype.Integer;
  9300. this.data = 0;
  9301. }
  9302. };
  9303. cr.expvalue = ExpValue;
  9304. cr.exptype = {
  9305. Integer: 0, // emulated; no native integer support in javascript
  9306. Float: 1,
  9307. String: 2
  9308. };
  9309. }());
  9310. ;
  9311. cr.system_object = function (runtime)
  9312. {
  9313. this.runtime = runtime;
  9314. this.waits = [];
  9315. };
  9316. cr.system_object.prototype.saveToJSON = function ()
  9317. {
  9318. var o = {};
  9319. var i, len, j, lenj, p, w, t, sobj;
  9320. o["waits"] = [];
  9321. var owaits = o["waits"];
  9322. var waitobj;
  9323. for (i = 0, len = this.waits.length; i < len; i++)
  9324. {
  9325. w = this.waits[i];
  9326. waitobj = {
  9327. "t": w.time,
  9328. "ev": w.ev.sid,
  9329. "sm": [],
  9330. "sols": {}
  9331. };
  9332. if (w.ev.actions[w.actindex])
  9333. waitobj["act"] = w.ev.actions[w.actindex].sid;
  9334. for (j = 0, lenj = w.solModifiers.length; j < lenj; j++)
  9335. waitobj["sm"].push(w.solModifiers[j].sid);
  9336. for (p in w.sols)
  9337. {
  9338. if (w.sols.hasOwnProperty(p))
  9339. {
  9340. t = this.runtime.types_by_index[parseInt(p, 10)];
  9341. ;
  9342. sobj = {
  9343. "sa": w.sols[p].sa,
  9344. "insts": []
  9345. };
  9346. for (j = 0, lenj = w.sols[p].insts.length; j < lenj; j++)
  9347. sobj["insts"].push(w.sols[p].insts[j].uid);
  9348. waitobj["sols"][t.sid.toString()] = sobj;
  9349. }
  9350. }
  9351. owaits.push(waitobj);
  9352. }
  9353. return o;
  9354. };
  9355. cr.system_object.prototype.loadFromJSON = function (o)
  9356. {
  9357. var owaits = o["waits"];
  9358. var i, len, j, lenj, p, w, addWait, e, aindex, t, savedsol, nusol, inst;
  9359. this.waits.length = 0;
  9360. for (i = 0, len = owaits.length; i < len; i++)
  9361. {
  9362. w = owaits[i];
  9363. e = this.runtime.blocksBySid[w["ev"].toString()];
  9364. if (!e)
  9365. continue; // event must've gone missing
  9366. aindex = -1;
  9367. for (j = 0, lenj = e.actions.length; j < lenj; j++)
  9368. {
  9369. if (e.actions[j].sid === w["act"])
  9370. {
  9371. aindex = j;
  9372. break;
  9373. }
  9374. }
  9375. if (aindex === -1)
  9376. continue; // action must've gone missing
  9377. addWait = {};
  9378. addWait.sols = {};
  9379. addWait.solModifiers = [];
  9380. addWait.deleteme = false;
  9381. addWait.time = w["t"];
  9382. addWait.ev = e;
  9383. addWait.actindex = aindex;
  9384. for (j = 0, lenj = w["sm"].length; j < lenj; j++)
  9385. {
  9386. t = this.runtime.getObjectTypeBySid(w["sm"][j]);
  9387. if (t)
  9388. addWait.solModifiers.push(t);
  9389. }
  9390. for (p in w["sols"])
  9391. {
  9392. if (w["sols"].hasOwnProperty(p))
  9393. {
  9394. t = this.runtime.getObjectTypeBySid(parseInt(p, 10));
  9395. if (!t)
  9396. continue; // type must've been deleted
  9397. savedsol = w["sols"][p];
  9398. nusol = {
  9399. sa: savedsol["sa"],
  9400. insts: []
  9401. };
  9402. for (j = 0, lenj = savedsol["insts"].length; j < lenj; j++)
  9403. {
  9404. inst = this.runtime.getObjectByUID(savedsol["insts"][j]);
  9405. if (inst)
  9406. nusol.insts.push(inst);
  9407. }
  9408. addWait.sols[t.index.toString()] = nusol;
  9409. }
  9410. }
  9411. this.waits.push(addWait);
  9412. }
  9413. };
  9414. (function ()
  9415. {
  9416. var sysProto = cr.system_object.prototype;
  9417. function SysCnds() {};
  9418. SysCnds.prototype.EveryTick = function()
  9419. {
  9420. return true;
  9421. };
  9422. SysCnds.prototype.OnLayoutStart = function()
  9423. {
  9424. return true;
  9425. };
  9426. SysCnds.prototype.OnLayoutEnd = function()
  9427. {
  9428. return true;
  9429. };
  9430. SysCnds.prototype.Compare = function(x, cmp, y)
  9431. {
  9432. return cr.do_cmp(x, cmp, y);
  9433. };
  9434. SysCnds.prototype.CompareTime = function (cmp, t)
  9435. {
  9436. var elapsed = this.runtime.kahanTime.sum;
  9437. if (cmp === 0)
  9438. {
  9439. var cnd = this.runtime.getCurrentCondition();
  9440. if (!cnd.extra.CompareTime_executed)
  9441. {
  9442. if (elapsed >= t)
  9443. {
  9444. cnd.extra.CompareTime_executed = true;
  9445. return true;
  9446. }
  9447. }
  9448. return false;
  9449. }
  9450. return cr.do_cmp(elapsed, cmp, t);
  9451. };
  9452. SysCnds.prototype.LayerVisible = function (layer)
  9453. {
  9454. if (!layer)
  9455. return false;
  9456. else
  9457. return layer.visible;
  9458. };
  9459. SysCnds.prototype.LayerCmpOpacity = function (layer, cmp, opacity_)
  9460. {
  9461. if (!layer)
  9462. return false;
  9463. return cr.do_cmp(layer.opacity * 100, cmp, opacity_);
  9464. };
  9465. SysCnds.prototype.Repeat = function (count)
  9466. {
  9467. var current_frame = this.runtime.getCurrentEventStack();
  9468. var current_event = current_frame.current_event;
  9469. var solModifierAfterCnds = current_frame.isModifierAfterCnds();
  9470. var current_loop = this.runtime.pushLoopStack();
  9471. var i;
  9472. if (solModifierAfterCnds)
  9473. {
  9474. for (i = 0; i < count && !current_loop.stopped; i++)
  9475. {
  9476. this.runtime.pushCopySol(current_event.solModifiers);
  9477. current_loop.index = i;
  9478. current_event.retrigger();
  9479. this.runtime.popSol(current_event.solModifiers);
  9480. }
  9481. }
  9482. else
  9483. {
  9484. for (i = 0; i < count && !current_loop.stopped; i++)
  9485. {
  9486. current_loop.index = i;
  9487. current_event.retrigger();
  9488. }
  9489. }
  9490. this.runtime.popLoopStack();
  9491. return false;
  9492. };
  9493. SysCnds.prototype.While = function (count)
  9494. {
  9495. var current_frame = this.runtime.getCurrentEventStack();
  9496. var current_event = current_frame.current_event;
  9497. var solModifierAfterCnds = current_frame.isModifierAfterCnds();
  9498. var current_loop = this.runtime.pushLoopStack();
  9499. var i;
  9500. if (solModifierAfterCnds)
  9501. {
  9502. for (i = 0; !current_loop.stopped; i++)
  9503. {
  9504. this.runtime.pushCopySol(current_event.solModifiers);
  9505. current_loop.index = i;
  9506. if (!current_event.retrigger()) // one of the other conditions returned false
  9507. current_loop.stopped = true; // break
  9508. this.runtime.popSol(current_event.solModifiers);
  9509. }
  9510. }
  9511. else
  9512. {
  9513. for (i = 0; !current_loop.stopped; i++)
  9514. {
  9515. current_loop.index = i;
  9516. if (!current_event.retrigger())
  9517. current_loop.stopped = true;
  9518. }
  9519. }
  9520. this.runtime.popLoopStack();
  9521. return false;
  9522. };
  9523. SysCnds.prototype.For = function (name, start, end)
  9524. {
  9525. var current_frame = this.runtime.getCurrentEventStack();
  9526. var current_event = current_frame.current_event;
  9527. var solModifierAfterCnds = current_frame.isModifierAfterCnds();
  9528. var current_loop = this.runtime.pushLoopStack(name);
  9529. var i;
  9530. if (end < start)
  9531. {
  9532. if (solModifierAfterCnds)
  9533. {
  9534. for (i = start; i >= end && !current_loop.stopped; --i) // inclusive to end
  9535. {
  9536. this.runtime.pushCopySol(current_event.solModifiers);
  9537. current_loop.index = i;
  9538. current_event.retrigger();
  9539. this.runtime.popSol(current_event.solModifiers);
  9540. }
  9541. }
  9542. else
  9543. {
  9544. for (i = start; i >= end && !current_loop.stopped; --i) // inclusive to end
  9545. {
  9546. current_loop.index = i;
  9547. current_event.retrigger();
  9548. }
  9549. }
  9550. }
  9551. else
  9552. {
  9553. if (solModifierAfterCnds)
  9554. {
  9555. for (i = start; i <= end && !current_loop.stopped; ++i) // inclusive to end
  9556. {
  9557. this.runtime.pushCopySol(current_event.solModifiers);
  9558. current_loop.index = i;
  9559. current_event.retrigger();
  9560. this.runtime.popSol(current_event.solModifiers);
  9561. }
  9562. }
  9563. else
  9564. {
  9565. for (i = start; i <= end && !current_loop.stopped; ++i) // inclusive to end
  9566. {
  9567. current_loop.index = i;
  9568. current_event.retrigger();
  9569. }
  9570. }
  9571. }
  9572. this.runtime.popLoopStack();
  9573. return false;
  9574. };
  9575. var foreach_instancestack = [];
  9576. var foreach_instanceptr = -1;
  9577. SysCnds.prototype.ForEach = function (obj)
  9578. {
  9579. var sol = obj.getCurrentSol();
  9580. foreach_instanceptr++;
  9581. if (foreach_instancestack.length === foreach_instanceptr)
  9582. foreach_instancestack.push([]);
  9583. var instances = foreach_instancestack[foreach_instanceptr];
  9584. cr.shallowAssignArray(instances, sol.getObjects());
  9585. var current_frame = this.runtime.getCurrentEventStack();
  9586. var current_event = current_frame.current_event;
  9587. var solModifierAfterCnds = current_frame.isModifierAfterCnds();
  9588. var current_loop = this.runtime.pushLoopStack();
  9589. var i, len, j, lenj, inst, s, sol2;
  9590. var is_contained = obj.is_contained;
  9591. if (solModifierAfterCnds)
  9592. {
  9593. for (i = 0, len = instances.length; i < len && !current_loop.stopped; i++)
  9594. {
  9595. this.runtime.pushCopySol(current_event.solModifiers);
  9596. inst = instances[i];
  9597. sol = obj.getCurrentSol();
  9598. sol.select_all = false;
  9599. sol.instances.length = 1;
  9600. sol.instances[0] = inst;
  9601. if (is_contained)
  9602. {
  9603. for (j = 0, lenj = inst.siblings.length; j < lenj; j++)
  9604. {
  9605. s = inst.siblings[j];
  9606. sol2 = s.type.getCurrentSol();
  9607. sol2.select_all = false;
  9608. sol2.instances.length = 1;
  9609. sol2.instances[0] = s;
  9610. }
  9611. }
  9612. current_loop.index = i;
  9613. current_event.retrigger();
  9614. this.runtime.popSol(current_event.solModifiers);
  9615. }
  9616. }
  9617. else
  9618. {
  9619. sol.select_all = false;
  9620. sol.instances.length = 1;
  9621. for (i = 0, len = instances.length; i < len && !current_loop.stopped; i++)
  9622. {
  9623. inst = instances[i];
  9624. sol.instances[0] = inst;
  9625. if (is_contained)
  9626. {
  9627. for (j = 0, lenj = inst.siblings.length; j < lenj; j++)
  9628. {
  9629. s = inst.siblings[j];
  9630. sol2 = s.type.getCurrentSol();
  9631. sol2.select_all = false;
  9632. sol2.instances.length = 1;
  9633. sol2.instances[0] = s;
  9634. }
  9635. }
  9636. current_loop.index = i;
  9637. current_event.retrigger();
  9638. }
  9639. }
  9640. instances.length = 0;
  9641. this.runtime.popLoopStack();
  9642. foreach_instanceptr--;
  9643. return false;
  9644. };
  9645. function foreach_sortinstances(a, b)
  9646. {
  9647. var va = a.extra.c2_foreachordered_val;
  9648. var vb = b.extra.c2_foreachordered_val;
  9649. if (cr.is_number(va) && cr.is_number(vb))
  9650. return va - vb;
  9651. else
  9652. {
  9653. va = "" + va;
  9654. vb = "" + vb;
  9655. if (va < vb)
  9656. return -1;
  9657. else if (va > vb)
  9658. return 1;
  9659. else
  9660. return 0;
  9661. }
  9662. };
  9663. SysCnds.prototype.ForEachOrdered = function (obj, exp, order)
  9664. {
  9665. var sol = obj.getCurrentSol();
  9666. foreach_instanceptr++;
  9667. if (foreach_instancestack.length === foreach_instanceptr)
  9668. foreach_instancestack.push([]);
  9669. var instances = foreach_instancestack[foreach_instanceptr];
  9670. cr.shallowAssignArray(instances, sol.getObjects());
  9671. var current_frame = this.runtime.getCurrentEventStack();
  9672. var current_event = current_frame.current_event;
  9673. var current_condition = this.runtime.getCurrentCondition();
  9674. var solModifierAfterCnds = current_frame.isModifierAfterCnds();
  9675. var current_loop = this.runtime.pushLoopStack();
  9676. var i, len, j, lenj, inst, s, sol2;
  9677. for (i = 0, len = instances.length; i < len; i++)
  9678. {
  9679. instances[i].extra.c2_foreachordered_val = current_condition.parameters[1].get(i);
  9680. }
  9681. instances.sort(foreach_sortinstances);
  9682. if (order === 1)
  9683. instances.reverse();
  9684. var is_contained = obj.is_contained;
  9685. if (solModifierAfterCnds)
  9686. {
  9687. for (i = 0, len = instances.length; i < len && !current_loop.stopped; i++)
  9688. {
  9689. this.runtime.pushCopySol(current_event.solModifiers);
  9690. inst = instances[i];
  9691. sol = obj.getCurrentSol();
  9692. sol.select_all = false;
  9693. sol.instances.length = 1;
  9694. sol.instances[0] = inst;
  9695. if (is_contained)
  9696. {
  9697. for (j = 0, lenj = inst.siblings.length; j < lenj; j++)
  9698. {
  9699. s = inst.siblings[j];
  9700. sol2 = s.type.getCurrentSol();
  9701. sol2.select_all = false;
  9702. sol2.instances.length = 1;
  9703. sol2.instances[0] = s;
  9704. }
  9705. }
  9706. current_loop.index = i;
  9707. current_event.retrigger();
  9708. this.runtime.popSol(current_event.solModifiers);
  9709. }
  9710. }
  9711. else
  9712. {
  9713. sol.select_all = false;
  9714. sol.instances.length = 1;
  9715. for (i = 0, len = instances.length; i < len && !current_loop.stopped; i++)
  9716. {
  9717. inst = instances[i];
  9718. sol.instances[0] = inst;
  9719. if (is_contained)
  9720. {
  9721. for (j = 0, lenj = inst.siblings.length; j < lenj; j++)
  9722. {
  9723. s = inst.siblings[j];
  9724. sol2 = s.type.getCurrentSol();
  9725. sol2.select_all = false;
  9726. sol2.instances.length = 1;
  9727. sol2.instances[0] = s;
  9728. }
  9729. }
  9730. current_loop.index = i;
  9731. current_event.retrigger();
  9732. }
  9733. }
  9734. instances.length = 0;
  9735. this.runtime.popLoopStack();
  9736. foreach_instanceptr--;
  9737. return false;
  9738. };
  9739. SysCnds.prototype.PickByComparison = function (obj_, exp_, cmp_, val_)
  9740. {
  9741. var i, len, k, inst;
  9742. if (!obj_)
  9743. return;
  9744. foreach_instanceptr++;
  9745. if (foreach_instancestack.length === foreach_instanceptr)
  9746. foreach_instancestack.push([]);
  9747. var tmp_instances = foreach_instancestack[foreach_instanceptr];
  9748. var sol = obj_.getCurrentSol();
  9749. cr.shallowAssignArray(tmp_instances, sol.getObjects());
  9750. if (sol.select_all)
  9751. sol.else_instances.length = 0;
  9752. var current_condition = this.runtime.getCurrentCondition();
  9753. for (i = 0, k = 0, len = tmp_instances.length; i < len; i++)
  9754. {
  9755. inst = tmp_instances[i];
  9756. tmp_instances[k] = inst;
  9757. exp_ = current_condition.parameters[1].get(i);
  9758. val_ = current_condition.parameters[3].get(i);
  9759. if (cr.do_cmp(exp_, cmp_, val_))
  9760. {
  9761. k++;
  9762. }
  9763. else
  9764. {
  9765. sol.else_instances.push(inst);
  9766. }
  9767. }
  9768. tmp_instances.length = k;
  9769. sol.select_all = false;
  9770. cr.shallowAssignArray(sol.instances, tmp_instances);
  9771. tmp_instances.length = 0;
  9772. foreach_instanceptr--;
  9773. obj_.applySolToContainer();
  9774. return !!sol.instances.length;
  9775. };
  9776. SysCnds.prototype.PickByEvaluate = function (obj_, exp_)
  9777. {
  9778. var i, len, k, inst;
  9779. if (!obj_)
  9780. return;
  9781. foreach_instanceptr++;
  9782. if (foreach_instancestack.length === foreach_instanceptr)
  9783. foreach_instancestack.push([]);
  9784. var tmp_instances = foreach_instancestack[foreach_instanceptr];
  9785. var sol = obj_.getCurrentSol();
  9786. cr.shallowAssignArray(tmp_instances, sol.getObjects());
  9787. if (sol.select_all)
  9788. sol.else_instances.length = 0;
  9789. var current_condition = this.runtime.getCurrentCondition();
  9790. for (i = 0, k = 0, len = tmp_instances.length; i < len; i++)
  9791. {
  9792. inst = tmp_instances[i];
  9793. tmp_instances[k] = inst;
  9794. exp_ = current_condition.parameters[1].get(i);
  9795. if (exp_)
  9796. {
  9797. k++;
  9798. }
  9799. else
  9800. {
  9801. sol.else_instances.push(inst);
  9802. }
  9803. }
  9804. tmp_instances.length = k;
  9805. sol.select_all = false;
  9806. cr.shallowAssignArray(sol.instances, tmp_instances);
  9807. tmp_instances.length = 0;
  9808. foreach_instanceptr--;
  9809. obj_.applySolToContainer();
  9810. return !!sol.instances.length;
  9811. };
  9812. SysCnds.prototype.TriggerOnce = function ()
  9813. {
  9814. var cndextra = this.runtime.getCurrentCondition().extra;
  9815. if (typeof cndextra.TriggerOnce_lastTick === "undefined")
  9816. cndextra.TriggerOnce_lastTick = -1;
  9817. var last_tick = cndextra.TriggerOnce_lastTick;
  9818. var cur_tick = this.runtime.tickcount;
  9819. cndextra.TriggerOnce_lastTick = cur_tick;
  9820. return this.runtime.layout_first_tick || last_tick !== cur_tick - 1;
  9821. };
  9822. SysCnds.prototype.Every = function (seconds)
  9823. {
  9824. var cnd = this.runtime.getCurrentCondition();
  9825. var last_time = cnd.extra.Every_lastTime || 0;
  9826. var cur_time = this.runtime.kahanTime.sum;
  9827. if (typeof cnd.extra.Every_seconds === "undefined")
  9828. cnd.extra.Every_seconds = seconds;
  9829. var this_seconds = cnd.extra.Every_seconds;
  9830. if (cur_time >= last_time + this_seconds)
  9831. {
  9832. cnd.extra.Every_lastTime = last_time + this_seconds;
  9833. if (cur_time >= cnd.extra.Every_lastTime + this_seconds)
  9834. cnd.extra.Every_lastTime = cur_time;
  9835. cnd.extra.Every_seconds = seconds;
  9836. return true;
  9837. }
  9838. else
  9839. return false;
  9840. };
  9841. SysCnds.prototype.PickNth = function (obj, index)
  9842. {
  9843. if (!obj)
  9844. return false;
  9845. var sol = obj.getCurrentSol();
  9846. var instances = sol.getObjects();
  9847. index = cr.floor(index);
  9848. if (index < 0 || index >= instances.length)
  9849. return false;
  9850. var inst = instances[index];
  9851. sol.pick_one(inst);
  9852. obj.applySolToContainer();
  9853. return true;
  9854. };
  9855. SysCnds.prototype.PickRandom = function (obj)
  9856. {
  9857. if (!obj)
  9858. return false;
  9859. var sol = obj.getCurrentSol();
  9860. var instances = sol.getObjects();
  9861. var index = cr.floor(Math.random() * instances.length);
  9862. if (index >= instances.length)
  9863. return false;
  9864. var inst = instances[index];
  9865. sol.pick_one(inst);
  9866. obj.applySolToContainer();
  9867. return true;
  9868. };
  9869. SysCnds.prototype.CompareVar = function (v, cmp, val)
  9870. {
  9871. return cr.do_cmp(v.getValue(), cmp, val);
  9872. };
  9873. SysCnds.prototype.IsGroupActive = function (group)
  9874. {
  9875. return this.runtime.activeGroups[(/*this.runtime.getCurrentCondition().sheet.name + "|" + */group).toLowerCase()];
  9876. };
  9877. SysCnds.prototype.IsPreview = function ()
  9878. {
  9879. return typeof cr_is_preview !== "undefined";
  9880. };
  9881. SysCnds.prototype.PickAll = function (obj)
  9882. {
  9883. if (!obj)
  9884. return false;
  9885. if (!obj.instances.length)
  9886. return false;
  9887. var sol = obj.getCurrentSol();
  9888. sol.select_all = true;
  9889. obj.applySolToContainer();
  9890. return true;
  9891. };
  9892. SysCnds.prototype.IsMobile = function ()
  9893. {
  9894. return this.runtime.isMobile;
  9895. };
  9896. SysCnds.prototype.CompareBetween = function (x, a, b)
  9897. {
  9898. return x >= a && x <= b;
  9899. };
  9900. SysCnds.prototype.Else = function ()
  9901. {
  9902. var current_frame = this.runtime.getCurrentEventStack();
  9903. if (current_frame.else_branch_ran)
  9904. return false; // another event in this else-if chain has run
  9905. else
  9906. return !current_frame.last_event_true;
  9907. /*
  9908. var current_frame = this.runtime.getCurrentEventStack();
  9909. var current_event = current_frame.current_event;
  9910. var prev_event = current_event.prev_block;
  9911. if (!prev_event)
  9912. return false;
  9913. if (prev_event.is_logical)
  9914. return !this.runtime.last_event_true;
  9915. var i, len, j, lenj, s, sol, temp, inst, any_picked = false;
  9916. for (i = 0, len = prev_event.cndReferences.length; i < len; i++)
  9917. {
  9918. s = prev_event.cndReferences[i];
  9919. sol = s.getCurrentSol();
  9920. if (sol.select_all || sol.instances.length === s.instances.length)
  9921. {
  9922. sol.select_all = false;
  9923. sol.instances.length = 0;
  9924. }
  9925. else
  9926. {
  9927. if (sol.instances.length === 1 && sol.else_instances.length === 0 && s.instances.length >= 2)
  9928. {
  9929. inst = sol.instances[0];
  9930. sol.instances.length = 0;
  9931. for (j = 0, lenj = s.instances.length; j < lenj; j++)
  9932. {
  9933. if (s.instances[j] != inst)
  9934. sol.instances.push(s.instances[j]);
  9935. }
  9936. any_picked = true;
  9937. }
  9938. else
  9939. {
  9940. temp = sol.instances;
  9941. sol.instances = sol.else_instances;
  9942. sol.else_instances = temp;
  9943. any_picked = true;
  9944. }
  9945. }
  9946. }
  9947. return any_picked;
  9948. */
  9949. };
  9950. SysCnds.prototype.OnLoadFinished = function ()
  9951. {
  9952. return true;
  9953. };
  9954. SysCnds.prototype.OnCanvasSnapshot = function ()
  9955. {
  9956. return true;
  9957. };
  9958. SysCnds.prototype.EffectsSupported = function ()
  9959. {
  9960. return !!this.runtime.glwrap;
  9961. };
  9962. SysCnds.prototype.OnSaveComplete = function ()
  9963. {
  9964. return true;
  9965. };
  9966. SysCnds.prototype.OnLoadComplete = function ()
  9967. {
  9968. return true;
  9969. };
  9970. SysCnds.prototype.OnLoadFailed = function ()
  9971. {
  9972. return true;
  9973. };
  9974. SysCnds.prototype.ObjectUIDExists = function (u)
  9975. {
  9976. return !!this.runtime.getObjectByUID(u);
  9977. };
  9978. SysCnds.prototype.IsOnPlatform = function (p)
  9979. {
  9980. var rt = this.runtime;
  9981. switch (p) {
  9982. case 0: // HTML5 website
  9983. return !rt.isDomFree && !rt.isNodeWebkit && !rt.isPhoneGap && !rt.isCrosswalk && !rt.isWindows8App && !rt.isWindowsPhone8 && !rt.isBlackberry10 && !rt.isAmazonWebApp;
  9984. case 1: // iOS
  9985. return rt.isiOS;
  9986. case 2: // Android
  9987. return rt.isAndroid;
  9988. case 3: // Windows 8
  9989. return rt.isWindows8App;
  9990. case 4: // Windows Phone 8
  9991. return rt.isWindowsPhone8;
  9992. case 5: // Blackberry 10
  9993. return rt.isBlackberry10;
  9994. case 6: // Tizen
  9995. return rt.isTizen;
  9996. case 7: // CocoonJS
  9997. return rt.isCocoonJs;
  9998. case 8: // PhoneGap
  9999. return rt.isPhoneGap;
  10000. case 9: // Scirra Arcade
  10001. return rt.isArcade;
  10002. case 10: // node-webkit
  10003. return rt.isNodeWebkit;
  10004. case 11: // crosswalk
  10005. return rt.isCrosswalk;
  10006. case 12: // amazon webapp
  10007. return rt.isAmazonWebApp;
  10008. default: // should not be possible
  10009. return false;
  10010. }
  10011. };
  10012. var cacheRegex = null;
  10013. var lastRegex = "";
  10014. var lastFlags = "";
  10015. function getRegex(regex_, flags_)
  10016. {
  10017. if (!cacheRegex || regex_ !== lastRegex || flags_ !== lastFlags)
  10018. {
  10019. cacheRegex = new RegExp(regex_, flags_);
  10020. lastRegex = regex_;
  10021. lastFlags = flags_;
  10022. }
  10023. cacheRegex.lastIndex = 0; // reset
  10024. return cacheRegex;
  10025. };
  10026. SysCnds.prototype.RegexTest = function (str_, regex_, flags_)
  10027. {
  10028. var regex = getRegex(regex_, flags_);
  10029. return regex.test(str_);
  10030. };
  10031. var tmp_arr = [];
  10032. SysCnds.prototype.PickOverlappingPoint = function (obj_, x_, y_)
  10033. {
  10034. if (!obj_)
  10035. return false;
  10036. var sol = obj_.getCurrentSol();
  10037. var instances = sol.getObjects();
  10038. var current_event = this.runtime.getCurrentEventStack().current_event;
  10039. var orblock = current_event.orblock;
  10040. var cnd = this.runtime.getCurrentCondition();
  10041. var i, len, inst, pick;
  10042. if (sol.select_all)
  10043. {
  10044. cr.shallowAssignArray(tmp_arr, instances);
  10045. sol.else_instances.length = 0;
  10046. sol.select_all = false;
  10047. sol.instances.length = 0;
  10048. }
  10049. else
  10050. {
  10051. if (orblock)
  10052. {
  10053. cr.shallowAssignArray(tmp_arr, sol.else_instances);
  10054. sol.else_instances.length = 0;
  10055. }
  10056. else
  10057. {
  10058. cr.shallowAssignArray(tmp_arr, instances);
  10059. sol.instances.length = 0;
  10060. }
  10061. }
  10062. for (i = 0, len = tmp_arr.length; i < len; ++i)
  10063. {
  10064. inst = tmp_arr[i];
  10065. pick = cr.xor(inst.contains_pt(x_, y_), cnd.inverted);
  10066. if (pick)
  10067. sol.instances.push(inst);
  10068. else
  10069. sol.else_instances.push(inst);
  10070. }
  10071. obj_.applySolToContainer();
  10072. return cr.xor(!!sol.instances.length, cnd.inverted);
  10073. };
  10074. sysProto.cnds = new SysCnds();
  10075. function SysActs() {};
  10076. SysActs.prototype.GoToLayout = function(to)
  10077. {
  10078. if (this.runtime.isloading)
  10079. return; // cannot change layout while loading on loader layout
  10080. if (this.runtime.changelayout)
  10081. return; // already changing to a different layout
  10082. ;
  10083. this.runtime.changelayout = to;
  10084. };
  10085. SysActs.prototype.CreateObject = function (obj, layer, x, y)
  10086. {
  10087. if (!layer || !obj)
  10088. return;
  10089. var inst = this.runtime.createInstance(obj, layer, x, y);
  10090. if (!inst)
  10091. return;
  10092. this.runtime.isInOnDestroy++;
  10093. var i, len, s;
  10094. this.runtime.trigger(Object.getPrototypeOf(obj.plugin).cnds.OnCreated, inst);
  10095. if (inst.is_contained)
  10096. {
  10097. for (i = 0, len = inst.siblings.length; i < len; i++)
  10098. {
  10099. s = inst.siblings[i];
  10100. this.runtime.trigger(Object.getPrototypeOf(s.type.plugin).cnds.OnCreated, s);
  10101. }
  10102. }
  10103. this.runtime.isInOnDestroy--;
  10104. var sol = obj.getCurrentSol();
  10105. sol.select_all = false;
  10106. sol.instances.length = 1;
  10107. sol.instances[0] = inst;
  10108. if (inst.is_contained)
  10109. {
  10110. for (i = 0, len = inst.siblings.length; i < len; i++)
  10111. {
  10112. s = inst.siblings[i];
  10113. sol = s.type.getCurrentSol();
  10114. sol.select_all = false;
  10115. sol.instances.length = 1;
  10116. sol.instances[0] = s;
  10117. }
  10118. }
  10119. };
  10120. SysActs.prototype.SetLayerVisible = function (layer, visible_)
  10121. {
  10122. if (!layer)
  10123. return;
  10124. if (layer.visible !== visible_)
  10125. {
  10126. layer.visible = visible_;
  10127. this.runtime.redraw = true;
  10128. }
  10129. };
  10130. SysActs.prototype.SetLayerOpacity = function (layer, opacity_)
  10131. {
  10132. if (!layer)
  10133. return;
  10134. opacity_ = cr.clamp(opacity_ / 100, 0, 1);
  10135. if (layer.opacity !== opacity_)
  10136. {
  10137. layer.opacity = opacity_;
  10138. this.runtime.redraw = true;
  10139. }
  10140. };
  10141. SysActs.prototype.SetLayerScaleRate = function (layer, sr)
  10142. {
  10143. if (!layer)
  10144. return;
  10145. if (layer.zoomRate !== sr)
  10146. {
  10147. layer.zoomRate = sr;
  10148. this.runtime.redraw = true;
  10149. }
  10150. };
  10151. SysActs.prototype.SetLayoutScale = function (s)
  10152. {
  10153. if (!this.runtime.running_layout)
  10154. return;
  10155. if (this.runtime.running_layout.scale !== s)
  10156. {
  10157. this.runtime.running_layout.scale = s;
  10158. this.runtime.running_layout.boundScrolling();
  10159. this.runtime.redraw = true;
  10160. }
  10161. };
  10162. SysActs.prototype.ScrollX = function(x)
  10163. {
  10164. this.runtime.running_layout.scrollToX(x);
  10165. };
  10166. SysActs.prototype.ScrollY = function(y)
  10167. {
  10168. this.runtime.running_layout.scrollToY(y);
  10169. };
  10170. SysActs.prototype.Scroll = function(x, y)
  10171. {
  10172. this.runtime.running_layout.scrollToX(x);
  10173. this.runtime.running_layout.scrollToY(y);
  10174. };
  10175. SysActs.prototype.ScrollToObject = function(obj)
  10176. {
  10177. var inst = obj.getFirstPicked();
  10178. if (inst)
  10179. {
  10180. this.runtime.running_layout.scrollToX(inst.x);
  10181. this.runtime.running_layout.scrollToY(inst.y);
  10182. }
  10183. };
  10184. SysActs.prototype.SetVar = function(v, x)
  10185. {
  10186. ;
  10187. if (v.vartype === 0)
  10188. {
  10189. if (cr.is_number(x))
  10190. v.setValue(x);
  10191. else
  10192. v.setValue(parseFloat(x));
  10193. }
  10194. else if (v.vartype === 1)
  10195. v.setValue(x.toString());
  10196. if (v.name=='stars') window.c2_score = x;
  10197. };
  10198. SysActs.prototype.AddVar = function(v, x)
  10199. {
  10200. ;
  10201. if (v.vartype === 0)
  10202. {
  10203. if (cr.is_number(x))
  10204. v.setValue(v.getValue() + x);
  10205. else
  10206. v.setValue(v.getValue() + parseFloat(x));
  10207. }
  10208. else if (v.vartype === 1)
  10209. v.setValue(v.getValue() + x.toString());
  10210. if( v.name == "currentLevel" ){
  10211. window.c2_level = v.getValue();
  10212. }
  10213. };
  10214. SysActs.prototype.SubVar = function(v, x)
  10215. {
  10216. ;
  10217. if (v.vartype === 0)
  10218. {
  10219. if (cr.is_number(x))
  10220. v.setValue(v.getValue() - x);
  10221. else
  10222. v.setValue(v.getValue() - parseFloat(x));
  10223. }
  10224. };
  10225. SysActs.prototype.SetGroupActive = function (group, active)
  10226. {
  10227. var activeGroups = this.runtime.activeGroups;
  10228. var groupkey = (/*this.runtime.getCurrentAction().sheet.name + "|" + */group).toLowerCase();
  10229. switch (active) {
  10230. case 0:
  10231. activeGroups[groupkey] = false;
  10232. break;
  10233. case 1:
  10234. activeGroups[groupkey] = true;
  10235. break;
  10236. case 2:
  10237. activeGroups[groupkey] = !activeGroups[groupkey];
  10238. break;
  10239. }
  10240. };
  10241. SysActs.prototype.SetTimescale = function (ts_)
  10242. {
  10243. var ts = ts_;
  10244. if (ts < 0)
  10245. ts = 0;
  10246. this.runtime.timescale = ts;
  10247. };
  10248. SysActs.prototype.SetObjectTimescale = function (obj, ts_)
  10249. {
  10250. var ts = ts_;
  10251. if (ts < 0)
  10252. ts = 0;
  10253. if (!obj)
  10254. return;
  10255. var sol = obj.getCurrentSol();
  10256. var instances = sol.getObjects();
  10257. var i, len;
  10258. for (i = 0, len = instances.length; i < len; i++)
  10259. {
  10260. instances[i].my_timescale = ts;
  10261. }
  10262. };
  10263. SysActs.prototype.RestoreObjectTimescale = function (obj)
  10264. {
  10265. if (!obj)
  10266. return false;
  10267. var sol = obj.getCurrentSol();
  10268. var instances = sol.getObjects();
  10269. var i, len;
  10270. for (i = 0, len = instances.length; i < len; i++)
  10271. {
  10272. instances[i].my_timescale = -1.0;
  10273. }
  10274. };
  10275. var waitobjrecycle = [];
  10276. function allocWaitObject()
  10277. {
  10278. var w;
  10279. if (waitobjrecycle.length)
  10280. w = waitobjrecycle.pop();
  10281. else
  10282. {
  10283. w = {};
  10284. w.sols = {};
  10285. w.solModifiers = [];
  10286. }
  10287. w.deleteme = false;
  10288. return w;
  10289. };
  10290. function freeWaitObject(w)
  10291. {
  10292. cr.wipe(w.sols);
  10293. w.solModifiers.length = 0;
  10294. waitobjrecycle.push(w);
  10295. };
  10296. var solstateobjects = [];
  10297. function allocSolStateObject()
  10298. {
  10299. var s;
  10300. if (solstateobjects.length)
  10301. s = solstateobjects.pop();
  10302. else
  10303. {
  10304. s = {};
  10305. s.insts = [];
  10306. }
  10307. s.sa = false;
  10308. return s;
  10309. };
  10310. function freeSolStateObject(s)
  10311. {
  10312. s.insts.length = 0;
  10313. solstateobjects.push(s);
  10314. };
  10315. SysActs.prototype.Wait = function (seconds)
  10316. {
  10317. if (seconds < 0)
  10318. return;
  10319. var i, len, s, t, ss;
  10320. var evinfo = this.runtime.getCurrentEventStack();
  10321. var waitobj = allocWaitObject();
  10322. waitobj.time = this.runtime.kahanTime.sum + seconds;
  10323. waitobj.ev = evinfo.current_event;
  10324. waitobj.actindex = evinfo.actindex + 1; // pointing at next action
  10325. for (i = 0, len = this.runtime.types_by_index.length; i < len; i++)
  10326. {
  10327. t = this.runtime.types_by_index[i];
  10328. s = t.getCurrentSol();
  10329. if (s.select_all && evinfo.current_event.solModifiers.indexOf(t) === -1)
  10330. continue;
  10331. waitobj.solModifiers.push(t);
  10332. ss = allocSolStateObject();
  10333. ss.sa = s.select_all;
  10334. cr.shallowAssignArray(ss.insts, s.instances);
  10335. waitobj.sols[i.toString()] = ss;
  10336. }
  10337. this.waits.push(waitobj);
  10338. return true;
  10339. };
  10340. SysActs.prototype.SetLayerScale = function (layer, scale)
  10341. {
  10342. if (!layer)
  10343. return;
  10344. if (layer.scale === scale)
  10345. return;
  10346. layer.scale = scale;
  10347. this.runtime.redraw = true;
  10348. };
  10349. SysActs.prototype.ResetGlobals = function ()
  10350. {
  10351. var i, len, g;
  10352. for (i = 0, len = this.runtime.all_global_vars.length; i < len; i++)
  10353. {
  10354. g = this.runtime.all_global_vars[i];
  10355. g.data = g.initial;
  10356. }
  10357. };
  10358. SysActs.prototype.SetLayoutAngle = function (a)
  10359. {
  10360. a = cr.to_radians(a);
  10361. a = cr.clamp_angle(a);
  10362. if (this.runtime.running_layout)
  10363. {
  10364. if (this.runtime.running_layout.angle !== a)
  10365. {
  10366. this.runtime.running_layout.angle = a;
  10367. this.runtime.redraw = true;
  10368. }
  10369. }
  10370. };
  10371. SysActs.prototype.SetLayerAngle = function (layer, a)
  10372. {
  10373. if (!layer)
  10374. return;
  10375. a = cr.to_radians(a);
  10376. a = cr.clamp_angle(a);
  10377. if (layer.angle === a)
  10378. return;
  10379. layer.angle = a;
  10380. this.runtime.redraw = true;
  10381. };
  10382. SysActs.prototype.SetLayerParallax = function (layer, px, py)
  10383. {
  10384. if (!layer)
  10385. return;
  10386. if (layer.parallaxX === px / 100 && layer.parallaxY === py / 100)
  10387. return;
  10388. layer.parallaxX = px / 100;
  10389. layer.parallaxY = py / 100;
  10390. if (layer.parallaxX !== 1 || layer.parallaxY !== 1)
  10391. {
  10392. var i, len, instances = layer.instances;
  10393. for (i = 0, len = instances.length; i < len; ++i)
  10394. {
  10395. instances[i].type.any_instance_parallaxed = true;
  10396. }
  10397. }
  10398. this.runtime.redraw = true;
  10399. };
  10400. SysActs.prototype.SetLayerBackground = function (layer, c)
  10401. {
  10402. if (!layer)
  10403. return;
  10404. var r = cr.GetRValue(c);
  10405. var g = cr.GetGValue(c);
  10406. var b = cr.GetBValue(c);
  10407. if (layer.background_color[0] === r && layer.background_color[1] === g && layer.background_color[2] === b)
  10408. return;
  10409. layer.background_color[0] = r;
  10410. layer.background_color[1] = g;
  10411. layer.background_color[2] = b;
  10412. this.runtime.redraw = true;
  10413. };
  10414. SysActs.prototype.SetLayerTransparent = function (layer, t)
  10415. {
  10416. if (!layer)
  10417. return;
  10418. if (!!t === !!layer.transparent)
  10419. return;
  10420. layer.transparent = !!t;
  10421. this.runtime.redraw = true;
  10422. };
  10423. SysActs.prototype.StopLoop = function ()
  10424. {
  10425. if (this.runtime.loop_stack_index < 0)
  10426. return; // no loop currently running
  10427. this.runtime.getCurrentLoop().stopped = true;
  10428. };
  10429. SysActs.prototype.GoToLayoutByName = function (layoutname)
  10430. {
  10431. if (this.runtime.isloading)
  10432. return; // cannot change layout while loading on loader layout
  10433. if (this.runtime.changelayout)
  10434. return; // already changing to different layout
  10435. ;
  10436. var l;
  10437. for (l in this.runtime.layouts)
  10438. {
  10439. if (this.runtime.layouts.hasOwnProperty(l) && cr.equals_nocase(l, layoutname))
  10440. {
  10441. this.runtime.changelayout = this.runtime.layouts[l];
  10442. return;
  10443. }
  10444. }
  10445. };
  10446. SysActs.prototype.RestartLayout = function (layoutname)
  10447. {
  10448. if (this.runtime.isloading)
  10449. return; // cannot restart loader layouts
  10450. if (this.runtime.changelayout)
  10451. return; // already changing to a different layout
  10452. ;
  10453. if (!this.runtime.running_layout)
  10454. return;
  10455. this.runtime.changelayout = this.runtime.running_layout;
  10456. var i, len, g;
  10457. for (i = 0, len = this.runtime.allGroups.length; i < len; i++)
  10458. {
  10459. g = this.runtime.allGroups[i];
  10460. this.runtime.activeGroups[g.group_name.toLowerCase()] = g.initially_activated;
  10461. }
  10462. };
  10463. SysActs.prototype.SnapshotCanvas = function (format_, quality_)
  10464. {
  10465. this.runtime.snapshotCanvas = [format_ === 0 ? "image/png" : "image/jpeg", quality_ / 100];
  10466. this.runtime.redraw = true; // force redraw so snapshot is always taken
  10467. };
  10468. SysActs.prototype.SetCanvasSize = function (w, h)
  10469. {
  10470. if (w <= 0 || h <= 0)
  10471. return;
  10472. var mode = this.runtime.fullscreen_mode;
  10473. var isfullscreen = (document["mozFullScreen"] || document["webkitIsFullScreen"] || !!document["msFullscreenElement"] || document["fullScreen"] || this.runtime.isNodeFullscreen);
  10474. if (isfullscreen && this.runtime.fullscreen_scaling > 0)
  10475. mode = this.runtime.fullscreen_scaling;
  10476. if (mode === 0)
  10477. {
  10478. this.runtime["setSize"](w, h, true);
  10479. }
  10480. else
  10481. {
  10482. this.runtime.original_width = w;
  10483. this.runtime.original_height = h;
  10484. this.runtime["setSize"](this.runtime.lastWindowWidth, this.runtime.lastWindowHeight, true);
  10485. }
  10486. };
  10487. SysActs.prototype.SetLayoutEffectEnabled = function (enable_, effectname_)
  10488. {
  10489. if (!this.runtime.running_layout || !this.runtime.glwrap)
  10490. return;
  10491. var et = this.runtime.running_layout.getEffectByName(effectname_);
  10492. if (!et)
  10493. return; // effect name not found
  10494. var enable = (enable_ === 1);
  10495. if (et.active == enable)
  10496. return; // no change
  10497. et.active = enable;
  10498. this.runtime.running_layout.updateActiveEffects();
  10499. this.runtime.redraw = true;
  10500. };
  10501. SysActs.prototype.SetLayerEffectEnabled = function (layer, enable_, effectname_)
  10502. {
  10503. if (!layer || !this.runtime.glwrap)
  10504. return;
  10505. var et = layer.getEffectByName(effectname_);
  10506. if (!et)
  10507. return; // effect name not found
  10508. var enable = (enable_ === 1);
  10509. if (et.active == enable)
  10510. return; // no change
  10511. et.active = enable;
  10512. layer.updateActiveEffects();
  10513. this.runtime.redraw = true;
  10514. };
  10515. SysActs.prototype.SetLayoutEffectParam = function (effectname_, index_, value_)
  10516. {
  10517. if (!this.runtime.running_layout || !this.runtime.glwrap)
  10518. return;
  10519. var et = this.runtime.running_layout.getEffectByName(effectname_);
  10520. if (!et)
  10521. return; // effect name not found
  10522. var params = this.runtime.running_layout.effect_params[et.index];
  10523. index_ = Math.floor(index_);
  10524. if (index_ < 0 || index_ >= params.length)
  10525. return; // effect index out of bounds
  10526. if (this.runtime.glwrap.getProgramParameterType(et.shaderindex, index_) === 1)
  10527. value_ /= 100.0;
  10528. if (params[index_] === value_)
  10529. return; // no change
  10530. params[index_] = value_;
  10531. if (et.active)
  10532. this.runtime.redraw = true;
  10533. };
  10534. SysActs.prototype.SetLayerEffectParam = function (layer, effectname_, index_, value_)
  10535. {
  10536. if (!layer || !this.runtime.glwrap)
  10537. return;
  10538. var et = layer.getEffectByName(effectname_);
  10539. if (!et)
  10540. return; // effect name not found
  10541. var params = layer.effect_params[et.index];
  10542. index_ = Math.floor(index_);
  10543. if (index_ < 0 || index_ >= params.length)
  10544. return; // effect index out of bounds
  10545. if (this.runtime.glwrap.getProgramParameterType(et.shaderindex, index_) === 1)
  10546. value_ /= 100.0;
  10547. if (params[index_] === value_)
  10548. return; // no change
  10549. params[index_] = value_;
  10550. if (et.active)
  10551. this.runtime.redraw = true;
  10552. };
  10553. SysActs.prototype.SaveState = function (slot_)
  10554. {
  10555. this.runtime.saveToSlot = slot_;
  10556. };
  10557. SysActs.prototype.LoadState = function (slot_)
  10558. {
  10559. this.runtime.loadFromSlot = slot_;
  10560. };
  10561. SysActs.prototype.LoadStateJSON = function (jsonstr_)
  10562. {
  10563. this.runtime.loadFromJson = jsonstr_;
  10564. };
  10565. SysActs.prototype.SetHalfFramerateMode = function (set_)
  10566. {
  10567. this.runtime.halfFramerateMode = (set_ !== 0);
  10568. };
  10569. SysActs.prototype.SetFullscreenQuality = function (q)
  10570. {
  10571. var isfullscreen = (document["mozFullScreen"] || document["webkitIsFullScreen"] || !!document["msFullscreenElement"] || document["fullScreen"] || this.isNodeFullscreen);
  10572. if (!isfullscreen && this.runtime.fullscreen_mode === 0)
  10573. return;
  10574. this.runtime.wantFullscreenScalingQuality = (q !== 0);
  10575. this.runtime["setSize"](this.runtime.lastWindowWidth, this.runtime.lastWindowHeight, true);
  10576. };
  10577. sysProto.acts = new SysActs();
  10578. function SysExps() {};
  10579. SysExps.prototype["int"] = function(ret, x)
  10580. {
  10581. if (cr.is_string(x))
  10582. {
  10583. ret.set_int(parseInt(x, 10));
  10584. if (isNaN(ret.data))
  10585. ret.data = 0;
  10586. }
  10587. else
  10588. ret.set_int(x);
  10589. };
  10590. SysExps.prototype["float"] = function(ret, x)
  10591. {
  10592. if (cr.is_string(x))
  10593. {
  10594. ret.set_float(parseFloat(x));
  10595. if (isNaN(ret.data))
  10596. ret.data = 0;
  10597. }
  10598. else
  10599. ret.set_float(x);
  10600. };
  10601. SysExps.prototype.str = function(ret, x)
  10602. {
  10603. if (cr.is_string(x))
  10604. ret.set_string(x);
  10605. else
  10606. ret.set_string(x.toString());
  10607. };
  10608. SysExps.prototype.len = function(ret, x)
  10609. {
  10610. ret.set_int(x.length || 0);
  10611. };
  10612. SysExps.prototype.random = function (ret, a, b)
  10613. {
  10614. if (b === undefined)
  10615. {
  10616. ret.set_float(Math.random() * a);
  10617. }
  10618. else
  10619. {
  10620. ret.set_float(Math.random() * (b - a) + a);
  10621. }
  10622. };
  10623. SysExps.prototype.sqrt = function(ret, x)
  10624. {
  10625. ret.set_float(Math.sqrt(x));
  10626. };
  10627. SysExps.prototype.abs = function(ret, x)
  10628. {
  10629. ret.set_float(Math.abs(x));
  10630. };
  10631. SysExps.prototype.round = function(ret, x)
  10632. {
  10633. ret.set_int(Math.round(x));
  10634. };
  10635. SysExps.prototype.floor = function(ret, x)
  10636. {
  10637. ret.set_int(Math.floor(x));
  10638. };
  10639. SysExps.prototype.ceil = function(ret, x)
  10640. {
  10641. ret.set_int(Math.ceil(x));
  10642. };
  10643. SysExps.prototype.sin = function(ret, x)
  10644. {
  10645. ret.set_float(Math.sin(cr.to_radians(x)));
  10646. };
  10647. SysExps.prototype.cos = function(ret, x)
  10648. {
  10649. ret.set_float(Math.cos(cr.to_radians(x)));
  10650. };
  10651. SysExps.prototype.tan = function(ret, x)
  10652. {
  10653. ret.set_float(Math.tan(cr.to_radians(x)));
  10654. };
  10655. SysExps.prototype.asin = function(ret, x)
  10656. {
  10657. ret.set_float(cr.to_degrees(Math.asin(x)));
  10658. };
  10659. SysExps.prototype.acos = function(ret, x)
  10660. {
  10661. ret.set_float(cr.to_degrees(Math.acos(x)));
  10662. };
  10663. SysExps.prototype.atan = function(ret, x)
  10664. {
  10665. ret.set_float(cr.to_degrees(Math.atan(x)));
  10666. };
  10667. SysExps.prototype.exp = function(ret, x)
  10668. {
  10669. ret.set_float(Math.exp(x));
  10670. };
  10671. SysExps.prototype.ln = function(ret, x)
  10672. {
  10673. ret.set_float(Math.log(x));
  10674. };
  10675. SysExps.prototype.log10 = function(ret, x)
  10676. {
  10677. ret.set_float(Math.log(x) / Math.LN10);
  10678. };
  10679. SysExps.prototype.max = function(ret)
  10680. {
  10681. var max_ = arguments[1];
  10682. var i, len;
  10683. for (i = 2, len = arguments.length; i < len; i++)
  10684. {
  10685. if (max_ < arguments[i])
  10686. max_ = arguments[i];
  10687. }
  10688. ret.set_float(max_);
  10689. };
  10690. SysExps.prototype.min = function(ret)
  10691. {
  10692. var min_ = arguments[1];
  10693. var i, len;
  10694. for (i = 2, len = arguments.length; i < len; i++)
  10695. {
  10696. if (min_ > arguments[i])
  10697. min_ = arguments[i];
  10698. }
  10699. ret.set_float(min_);
  10700. };
  10701. SysExps.prototype.dt = function(ret)
  10702. {
  10703. ret.set_float(this.runtime.dt);
  10704. };
  10705. SysExps.prototype.timescale = function(ret)
  10706. {
  10707. ret.set_float(this.runtime.timescale);
  10708. };
  10709. SysExps.prototype.wallclocktime = function(ret)
  10710. {
  10711. ret.set_float((Date.now() - this.runtime.start_time) / 1000.0);
  10712. };
  10713. SysExps.prototype.time = function(ret)
  10714. {
  10715. ret.set_float(this.runtime.kahanTime.sum);
  10716. };
  10717. SysExps.prototype.tickcount = function(ret)
  10718. {
  10719. ret.set_int(this.runtime.tickcount);
  10720. };
  10721. SysExps.prototype.objectcount = function(ret)
  10722. {
  10723. ret.set_int(this.runtime.objectcount);
  10724. };
  10725. SysExps.prototype.fps = function(ret)
  10726. {
  10727. ret.set_int(this.runtime.fps);
  10728. };
  10729. SysExps.prototype.loopindex = function(ret, name_)
  10730. {
  10731. var loop, i, len;
  10732. if (!this.runtime.loop_stack.length)
  10733. {
  10734. ret.set_int(0);
  10735. return;
  10736. }
  10737. if (name_)
  10738. {
  10739. for (i = 0, len = this.runtime.loop_stack.length; i < len; i++)
  10740. {
  10741. loop = this.runtime.loop_stack[i];
  10742. if (loop.name === name_)
  10743. {
  10744. ret.set_int(loop.index);
  10745. return;
  10746. }
  10747. }
  10748. ret.set_int(0);
  10749. }
  10750. else
  10751. {
  10752. loop = this.runtime.getCurrentLoop();
  10753. ret.set_int(loop ? loop.index : -1);
  10754. }
  10755. };
  10756. SysExps.prototype.distance = function(ret, x1, y1, x2, y2)
  10757. {
  10758. ret.set_float(cr.distanceTo(x1, y1, x2, y2));
  10759. };
  10760. SysExps.prototype.angle = function(ret, x1, y1, x2, y2)
  10761. {
  10762. ret.set_float(cr.to_degrees(cr.angleTo(x1, y1, x2, y2)));
  10763. };
  10764. SysExps.prototype.scrollx = function(ret)
  10765. {
  10766. ret.set_float(this.runtime.running_layout.scrollX);
  10767. };
  10768. SysExps.prototype.scrolly = function(ret)
  10769. {
  10770. ret.set_float(this.runtime.running_layout.scrollY);
  10771. };
  10772. SysExps.prototype.newline = function(ret)
  10773. {
  10774. ret.set_string("\n");
  10775. };
  10776. SysExps.prototype.lerp = function(ret, a, b, x)
  10777. {
  10778. ret.set_float(cr.lerp(a, b, x));
  10779. };
  10780. SysExps.prototype.windowwidth = function(ret)
  10781. {
  10782. ret.set_int(this.runtime.width);
  10783. };
  10784. SysExps.prototype.windowheight = function(ret)
  10785. {
  10786. ret.set_int(this.runtime.height);
  10787. };
  10788. SysExps.prototype.uppercase = function(ret, str)
  10789. {
  10790. ret.set_string(cr.is_string(str) ? str.toUpperCase() : "");
  10791. };
  10792. SysExps.prototype.lowercase = function(ret, str)
  10793. {
  10794. ret.set_string(cr.is_string(str) ? str.toLowerCase() : "");
  10795. };
  10796. SysExps.prototype.clamp = function(ret, x, l, u)
  10797. {
  10798. if (x < l)
  10799. ret.set_float(l);
  10800. else if (x > u)
  10801. ret.set_float(u);
  10802. else
  10803. ret.set_float(x);
  10804. };
  10805. SysExps.prototype.layerscale = function (ret, layerparam)
  10806. {
  10807. var layer = this.runtime.getLayer(layerparam);
  10808. if (!layer)
  10809. ret.set_float(0);
  10810. else
  10811. ret.set_float(layer.scale);
  10812. };
  10813. SysExps.prototype.layeropacity = function (ret, layerparam)
  10814. {
  10815. var layer = this.runtime.getLayer(layerparam);
  10816. if (!layer)
  10817. ret.set_float(0);
  10818. else
  10819. ret.set_float(layer.opacity * 100);
  10820. };
  10821. SysExps.prototype.layerscalerate = function (ret, layerparam)
  10822. {
  10823. var layer = this.runtime.getLayer(layerparam);
  10824. if (!layer)
  10825. ret.set_float(0);
  10826. else
  10827. ret.set_float(layer.zoomRate);
  10828. };
  10829. SysExps.prototype.layerparallaxx = function (ret, layerparam)
  10830. {
  10831. var layer = this.runtime.getLayer(layerparam);
  10832. if (!layer)
  10833. ret.set_float(0);
  10834. else
  10835. ret.set_float(layer.parallaxX * 100);
  10836. };
  10837. SysExps.prototype.layerparallaxy = function (ret, layerparam)
  10838. {
  10839. var layer = this.runtime.getLayer(layerparam);
  10840. if (!layer)
  10841. ret.set_float(0);
  10842. else
  10843. ret.set_float(layer.parallaxY * 100);
  10844. };
  10845. SysExps.prototype.layoutscale = function (ret)
  10846. {
  10847. if (this.runtime.running_layout)
  10848. ret.set_float(this.runtime.running_layout.scale);
  10849. else
  10850. ret.set_float(0);
  10851. };
  10852. SysExps.prototype.layoutangle = function (ret)
  10853. {
  10854. ret.set_float(cr.to_degrees(this.runtime.running_layout.angle));
  10855. };
  10856. SysExps.prototype.layerangle = function (ret, layerparam)
  10857. {
  10858. var layer = this.runtime.getLayer(layerparam);
  10859. if (!layer)
  10860. ret.set_float(0);
  10861. else
  10862. ret.set_float(cr.to_degrees(layer.angle));
  10863. };
  10864. SysExps.prototype.layoutwidth = function (ret)
  10865. {
  10866. ret.set_int(this.runtime.running_layout.width);
  10867. };
  10868. SysExps.prototype.layoutheight = function (ret)
  10869. {
  10870. ret.set_int(this.runtime.running_layout.height);
  10871. };
  10872. SysExps.prototype.find = function (ret, text, searchstr)
  10873. {
  10874. if (cr.is_string(text) && cr.is_string(searchstr))
  10875. ret.set_int(text.search(new RegExp(cr.regexp_escape(searchstr), "i")));
  10876. else
  10877. ret.set_int(-1);
  10878. };
  10879. SysExps.prototype.left = function (ret, text, n)
  10880. {
  10881. ret.set_string(cr.is_string(text) ? text.substr(0, n) : "");
  10882. };
  10883. SysExps.prototype.right = function (ret, text, n)
  10884. {
  10885. ret.set_string(cr.is_string(text) ? text.substr(text.length - n) : "");
  10886. };
  10887. SysExps.prototype.mid = function (ret, text, index_, length_)
  10888. {
  10889. ret.set_string(cr.is_string(text) ? text.substr(index_, length_) : "");
  10890. };
  10891. SysExps.prototype.tokenat = function (ret, text, index_, sep)
  10892. {
  10893. if (cr.is_string(text) && cr.is_string(sep))
  10894. {
  10895. var arr = text.split(sep);
  10896. var i = cr.floor(index_);
  10897. if (i < 0 || i >= arr.length)
  10898. ret.set_string("");
  10899. else
  10900. ret.set_string(arr[i]);
  10901. }
  10902. else
  10903. ret.set_string("");
  10904. };
  10905. SysExps.prototype.tokencount = function (ret, text, sep)
  10906. {
  10907. if (cr.is_string(text) && text.length)
  10908. ret.set_int(text.split(sep).length);
  10909. else
  10910. ret.set_int(0);
  10911. };
  10912. SysExps.prototype.replace = function (ret, text, find_, replace_)
  10913. {
  10914. if (cr.is_string(text) && cr.is_string(find_) && cr.is_string(replace_))
  10915. ret.set_string(text.replace(new RegExp(cr.regexp_escape(find_), "gi"), replace_));
  10916. else
  10917. ret.set_string(cr.is_string(text) ? text : "");
  10918. };
  10919. SysExps.prototype.trim = function (ret, text)
  10920. {
  10921. ret.set_string(cr.is_string(text) ? text.trim() : "");
  10922. };
  10923. SysExps.prototype.pi = function (ret)
  10924. {
  10925. ret.set_float(cr.PI);
  10926. };
  10927. SysExps.prototype.layoutname = function (ret)
  10928. {
  10929. if (this.runtime.running_layout)
  10930. ret.set_string(this.runtime.running_layout.name);
  10931. else
  10932. ret.set_string("");
  10933. };
  10934. SysExps.prototype.renderer = function (ret)
  10935. {
  10936. ret.set_string(this.runtime.gl ? "webgl" : "canvas2d");
  10937. };
  10938. SysExps.prototype.anglediff = function (ret, a, b)
  10939. {
  10940. ret.set_float(cr.to_degrees(cr.angleDiff(cr.to_radians(a), cr.to_radians(b))));
  10941. };
  10942. SysExps.prototype.choose = function (ret)
  10943. {
  10944. var index = cr.floor(Math.random() * (arguments.length - 1));
  10945. ret.set_any(arguments[index + 1]);
  10946. };
  10947. SysExps.prototype.rgb = function (ret, r, g, b)
  10948. {
  10949. ret.set_int(cr.RGB(r, g, b));
  10950. };
  10951. SysExps.prototype.projectversion = function (ret)
  10952. {
  10953. ret.set_string(this.runtime.versionstr);
  10954. };
  10955. SysExps.prototype.anglelerp = function (ret, a, b, x)
  10956. {
  10957. a = cr.to_radians(a);
  10958. b = cr.to_radians(b);
  10959. var diff = cr.angleDiff(a, b);
  10960. if (cr.angleClockwise(b, a))
  10961. {
  10962. ret.set_float(cr.to_clamped_degrees(a + diff * x));
  10963. }
  10964. else
  10965. {
  10966. ret.set_float(cr.to_clamped_degrees(a - diff * x));
  10967. }
  10968. };
  10969. SysExps.prototype.anglerotate = function (ret, a, b, c)
  10970. {
  10971. a = cr.to_radians(a);
  10972. b = cr.to_radians(b);
  10973. c = cr.to_radians(c);
  10974. ret.set_float(cr.to_clamped_degrees(cr.angleRotate(a, b, c)));
  10975. };
  10976. SysExps.prototype.zeropad = function (ret, n, d)
  10977. {
  10978. var s = (n < 0 ? "-" : "");
  10979. if (n < 0) n = -n;
  10980. var zeroes = d - n.toString().length;
  10981. for (var i = 0; i < zeroes; i++)
  10982. s += "0";
  10983. ret.set_string(s + n.toString());
  10984. };
  10985. SysExps.prototype.cpuutilisation = function (ret)
  10986. {
  10987. ret.set_float(this.runtime.cpuutilisation / 1000);
  10988. };
  10989. SysExps.prototype.viewportleft = function (ret, layerparam)
  10990. {
  10991. var layer = this.runtime.getLayer(layerparam);
  10992. ret.set_float(layer ? layer.viewLeft : 0);
  10993. };
  10994. SysExps.prototype.viewporttop = function (ret, layerparam)
  10995. {
  10996. var layer = this.runtime.getLayer(layerparam);
  10997. ret.set_float(layer ? layer.viewTop : 0);
  10998. };
  10999. SysExps.prototype.viewportright = function (ret, layerparam)
  11000. {
  11001. var layer = this.runtime.getLayer(layerparam);
  11002. ret.set_float(layer ? layer.viewRight : 0);
  11003. };
  11004. SysExps.prototype.viewportbottom = function (ret, layerparam)
  11005. {
  11006. var layer = this.runtime.getLayer(layerparam);
  11007. ret.set_float(layer ? layer.viewBottom : 0);
  11008. };
  11009. SysExps.prototype.loadingprogress = function (ret)
  11010. {
  11011. ret.set_float(this.runtime.loadingprogress);
  11012. };
  11013. SysExps.prototype.unlerp = function(ret, a, b, y)
  11014. {
  11015. ret.set_float((y - a) / (b - a));
  11016. };
  11017. SysExps.prototype.canvassnapshot = function (ret)
  11018. {
  11019. ret.set_string(this.runtime.snapshotData);
  11020. };
  11021. SysExps.prototype.urlencode = function (ret, s)
  11022. {
  11023. ret.set_string(encodeURIComponent(s));
  11024. };
  11025. SysExps.prototype.urldecode = function (ret, s)
  11026. {
  11027. ret.set_string(decodeURIComponent(s));
  11028. };
  11029. SysExps.prototype.canvastolayerx = function (ret, layerparam, x, y)
  11030. {
  11031. var layer = this.runtime.getLayer(layerparam);
  11032. ret.set_float(layer ? layer.canvasToLayer(x, y, true) : 0);
  11033. };
  11034. SysExps.prototype.canvastolayery = function (ret, layerparam, x, y)
  11035. {
  11036. var layer = this.runtime.getLayer(layerparam);
  11037. ret.set_float(layer ? layer.canvasToLayer(x, y, false) : 0);
  11038. };
  11039. SysExps.prototype.layertocanvasx = function (ret, layerparam, x, y)
  11040. {
  11041. var layer = this.runtime.getLayer(layerparam);
  11042. ret.set_float(layer ? layer.layerToCanvas(x, y, true) : 0);
  11043. };
  11044. SysExps.prototype.layertocanvasy = function (ret, layerparam, x, y)
  11045. {
  11046. var layer = this.runtime.getLayer(layerparam);
  11047. ret.set_float(layer ? layer.layerToCanvas(x, y, false) : 0);
  11048. };
  11049. SysExps.prototype.savestatejson = function (ret)
  11050. {
  11051. ret.set_string(this.runtime.lastSaveJson);
  11052. };
  11053. SysExps.prototype.imagememoryusage = function (ret)
  11054. {
  11055. if (this.runtime.glwrap)
  11056. ret.set_float(Math.round(100 * this.runtime.glwrap.estimateVRAM() / (1024 * 1024)) / 100);
  11057. else
  11058. ret.set_float(0);
  11059. };
  11060. SysExps.prototype.regexsearch = function (ret, str_, regex_, flags_)
  11061. {
  11062. var regex = getRegex(regex_, flags_);
  11063. ret.set_int(str_ ? str_.search(regex) : -1);
  11064. };
  11065. SysExps.prototype.regexreplace = function (ret, str_, regex_, flags_, replace_)
  11066. {
  11067. var regex = getRegex(regex_, flags_);
  11068. ret.set_string(str_ ? str_.replace(regex, replace_) : "");
  11069. };
  11070. var regexMatches = [];
  11071. var lastMatchesStr = "";
  11072. var lastMatchesRegex = "";
  11073. var lastMatchesFlags = "";
  11074. function updateRegexMatches(str_, regex_, flags_)
  11075. {
  11076. if (str_ === lastMatchesStr && regex_ === lastMatchesRegex && flags_ === lastMatchesFlags)
  11077. return;
  11078. var regex = getRegex(regex_, flags_);
  11079. regexMatches = str_.match(regex);
  11080. lastMatchesStr = str_;
  11081. lastMatchesRegex = regex_;
  11082. lastMatchesFlags = flags_;
  11083. };
  11084. SysExps.prototype.regexmatchcount = function (ret, str_, regex_, flags_)
  11085. {
  11086. var regex = getRegex(regex_, flags_);
  11087. updateRegexMatches(str_, regex_, flags_);
  11088. ret.set_int(regexMatches ? regexMatches.length : 0);
  11089. };
  11090. SysExps.prototype.regexmatchat = function (ret, str_, regex_, flags_, index_)
  11091. {
  11092. index_ = Math.floor(index_);
  11093. var regex = getRegex(regex_, flags_);
  11094. updateRegexMatches(str_, regex_, flags_);
  11095. if (!regexMatches || index_ < 0 || index_ >= regexMatches.length)
  11096. ret.set_string("");
  11097. else
  11098. ret.set_string(regexMatches[index_]);
  11099. };
  11100. SysExps.prototype.infinity = function (ret)
  11101. {
  11102. ret.set_float(Infinity);
  11103. };
  11104. sysProto.exps = new SysExps();
  11105. sysProto.runWaits = function ()
  11106. {
  11107. var i, j, len, w, k, s, ss;
  11108. var evinfo = this.runtime.getCurrentEventStack();
  11109. for (i = 0, len = this.waits.length; i < len; i++)
  11110. {
  11111. w = this.waits[i];
  11112. if (w.time > this.runtime.kahanTime.sum)
  11113. continue;
  11114. evinfo.current_event = w.ev;
  11115. evinfo.actindex = w.actindex;
  11116. evinfo.cndindex = 0;
  11117. for (k in w.sols)
  11118. {
  11119. if (w.sols.hasOwnProperty(k))
  11120. {
  11121. s = this.runtime.types_by_index[parseInt(k, 10)].getCurrentSol();
  11122. ss = w.sols[k];
  11123. s.select_all = ss.sa;
  11124. cr.shallowAssignArray(s.instances, ss.insts);
  11125. freeSolStateObject(ss);
  11126. }
  11127. }
  11128. w.ev.resume_actions_and_subevents();
  11129. this.runtime.clearSol(w.solModifiers);
  11130. w.deleteme = true;
  11131. }
  11132. for (i = 0, j = 0, len = this.waits.length; i < len; i++)
  11133. {
  11134. w = this.waits[i];
  11135. this.waits[j] = w;
  11136. if (w.deleteme)
  11137. freeWaitObject(w);
  11138. else
  11139. j++;
  11140. }
  11141. this.waits.length = j;
  11142. };
  11143. }());
  11144. ;
  11145. (function () {
  11146. cr.add_common_aces = function (m)
  11147. {
  11148. var pluginProto = m[0].prototype;
  11149. var singleglobal_ = m[1];
  11150. var position_aces = m[3];
  11151. var size_aces = m[4];
  11152. var angle_aces = m[5];
  11153. var appearance_aces = m[6];
  11154. var zorder_aces = m[7];
  11155. var effects_aces = m[8];
  11156. if (!pluginProto.cnds)
  11157. pluginProto.cnds = {};
  11158. if (!pluginProto.acts)
  11159. pluginProto.acts = {};
  11160. if (!pluginProto.exps)
  11161. pluginProto.exps = {};
  11162. var cnds = pluginProto.cnds;
  11163. var acts = pluginProto.acts;
  11164. var exps = pluginProto.exps;
  11165. if (position_aces)
  11166. {
  11167. cnds.CompareX = function (cmp, x)
  11168. {
  11169. return cr.do_cmp(this.x, cmp, x);
  11170. };
  11171. cnds.CompareY = function (cmp, y)
  11172. {
  11173. return cr.do_cmp(this.y, cmp, y);
  11174. };
  11175. cnds.IsOnScreen = function ()
  11176. {
  11177. var layer = this.layer;
  11178. this.update_bbox();
  11179. var bbox = this.bbox;
  11180. return !(bbox.right < layer.viewLeft || bbox.bottom < layer.viewTop || bbox.left > layer.viewRight || bbox.top > layer.viewBottom);
  11181. };
  11182. cnds.IsOutsideLayout = function ()
  11183. {
  11184. this.update_bbox();
  11185. var bbox = this.bbox;
  11186. var layout = this.runtime.running_layout;
  11187. return (bbox.right < 0 || bbox.bottom < 0 || bbox.left > layout.width || bbox.top > layout.height);
  11188. };
  11189. cnds.PickDistance = function (which, x, y)
  11190. {
  11191. var sol = this.getCurrentSol();
  11192. var instances = sol.getObjects();
  11193. if (!instances.length)
  11194. return false;
  11195. var inst = instances[0];
  11196. var pickme = inst;
  11197. var dist = cr.distanceTo(inst.x, inst.y, x, y);
  11198. var i, len, d;
  11199. for (i = 1, len = instances.length; i < len; i++)
  11200. {
  11201. inst = instances[i];
  11202. d = cr.distanceTo(inst.x, inst.y, x, y);
  11203. if ((which === 0 && d < dist) || (which === 1 && d > dist))
  11204. {
  11205. dist = d;
  11206. pickme = inst;
  11207. }
  11208. }
  11209. sol.pick_one(pickme);
  11210. return true;
  11211. };
  11212. acts.SetX = function (x)
  11213. {
  11214. if (this.x !== x)
  11215. {
  11216. this.x = x;
  11217. this.set_bbox_changed();
  11218. }
  11219. };
  11220. acts.SetY = function (y)
  11221. {
  11222. if (this.y !== y)
  11223. {
  11224. this.y = y;
  11225. this.set_bbox_changed();
  11226. }
  11227. };
  11228. acts.SetPos = function (x, y)
  11229. {
  11230. if (this.x !== x || this.y !== y)
  11231. {
  11232. this.x = x;
  11233. this.y = y;
  11234. this.set_bbox_changed();
  11235. }
  11236. };
  11237. acts.SetPosToObject = function (obj, imgpt)
  11238. {
  11239. var inst = obj.getPairedInstance(this);
  11240. if (!inst)
  11241. return;
  11242. var newx, newy;
  11243. if (inst.getImagePoint)
  11244. {
  11245. newx = inst.getImagePoint(imgpt, true);
  11246. newy = inst.getImagePoint(imgpt, false);
  11247. }
  11248. else
  11249. {
  11250. newx = inst.x;
  11251. newy = inst.y;
  11252. }
  11253. if (this.x !== newx || this.y !== newy)
  11254. {
  11255. this.x = newx;
  11256. this.y = newy;
  11257. this.set_bbox_changed();
  11258. }
  11259. };
  11260. acts.MoveForward = function (dist)
  11261. {
  11262. if (dist !== 0)
  11263. {
  11264. this.x += Math.cos(this.angle) * dist;
  11265. this.y += Math.sin(this.angle) * dist;
  11266. this.set_bbox_changed();
  11267. }
  11268. };
  11269. acts.MoveAtAngle = function (a, dist)
  11270. {
  11271. if (dist !== 0)
  11272. {
  11273. this.x += Math.cos(cr.to_radians(a)) * dist;
  11274. this.y += Math.sin(cr.to_radians(a)) * dist;
  11275. this.set_bbox_changed();
  11276. }
  11277. };
  11278. exps.X = function (ret)
  11279. {
  11280. ret.set_float(this.x);
  11281. };
  11282. exps.Y = function (ret)
  11283. {
  11284. ret.set_float(this.y);
  11285. };
  11286. exps.dt = function (ret)
  11287. {
  11288. ret.set_float(this.runtime.getDt(this));
  11289. };
  11290. }
  11291. if (size_aces)
  11292. {
  11293. cnds.CompareWidth = function (cmp, w)
  11294. {
  11295. return cr.do_cmp(this.width, cmp, w);
  11296. };
  11297. cnds.CompareHeight = function (cmp, h)
  11298. {
  11299. return cr.do_cmp(this.height, cmp, h);
  11300. };
  11301. acts.SetWidth = function (w)
  11302. {
  11303. if (this.width !== w)
  11304. {
  11305. this.width = w;
  11306. this.set_bbox_changed();
  11307. }
  11308. };
  11309. acts.SetHeight = function (h)
  11310. {
  11311. if (this.height !== h)
  11312. {
  11313. this.height = h;
  11314. this.set_bbox_changed();
  11315. }
  11316. };
  11317. acts.SetSize = function (w, h)
  11318. {
  11319. if (this.width !== w || this.height !== h)
  11320. {
  11321. this.width = w;
  11322. this.height = h;
  11323. this.set_bbox_changed();
  11324. }
  11325. };
  11326. exps.Width = function (ret)
  11327. {
  11328. ret.set_float(this.width);
  11329. };
  11330. exps.Height = function (ret)
  11331. {
  11332. ret.set_float(this.height);
  11333. };
  11334. exps.BBoxLeft = function (ret)
  11335. {
  11336. this.update_bbox();
  11337. ret.set_float(this.bbox.left);
  11338. };
  11339. exps.BBoxTop = function (ret)
  11340. {
  11341. this.update_bbox();
  11342. ret.set_float(this.bbox.top);
  11343. };
  11344. exps.BBoxRight = function (ret)
  11345. {
  11346. this.update_bbox();
  11347. ret.set_float(this.bbox.right);
  11348. };
  11349. exps.BBoxBottom = function (ret)
  11350. {
  11351. this.update_bbox();
  11352. ret.set_float(this.bbox.bottom);
  11353. };
  11354. }
  11355. if (angle_aces)
  11356. {
  11357. cnds.AngleWithin = function (within, a)
  11358. {
  11359. return cr.angleDiff(this.angle, cr.to_radians(a)) <= cr.to_radians(within);
  11360. };
  11361. cnds.IsClockwiseFrom = function (a)
  11362. {
  11363. return cr.angleClockwise(this.angle, cr.to_radians(a));
  11364. };
  11365. cnds.IsBetweenAngles = function (a, b)
  11366. {
  11367. var lower = cr.to_clamped_radians(a);
  11368. var upper = cr.to_clamped_radians(b);
  11369. var angle = cr.clamp_angle(this.angle);
  11370. var obtuse = (!cr.angleClockwise(upper, lower));
  11371. if (obtuse)
  11372. return !(!cr.angleClockwise(angle, lower) && cr.angleClockwise(angle, upper));
  11373. else
  11374. return cr.angleClockwise(angle, lower) && !cr.angleClockwise(angle, upper);
  11375. };
  11376. acts.SetAngle = function (a)
  11377. {
  11378. var newangle = cr.to_radians(cr.clamp_angle_degrees(a));
  11379. if (isNaN(newangle))
  11380. return;
  11381. if (this.angle !== newangle)
  11382. {
  11383. this.angle = newangle;
  11384. this.set_bbox_changed();
  11385. }
  11386. };
  11387. acts.RotateClockwise = function (a)
  11388. {
  11389. if (a !== 0 && !isNaN(a))
  11390. {
  11391. this.angle += cr.to_radians(a);
  11392. this.angle = cr.clamp_angle(this.angle);
  11393. this.set_bbox_changed();
  11394. }
  11395. };
  11396. acts.RotateCounterclockwise = function (a)
  11397. {
  11398. if (a !== 0 && !isNaN(a))
  11399. {
  11400. this.angle -= cr.to_radians(a);
  11401. this.angle = cr.clamp_angle(this.angle);
  11402. this.set_bbox_changed();
  11403. }
  11404. };
  11405. acts.RotateTowardAngle = function (amt, target)
  11406. {
  11407. var newangle = cr.angleRotate(this.angle, cr.to_radians(target), cr.to_radians(amt));
  11408. if (isNaN(newangle))
  11409. return;
  11410. if (this.angle !== newangle)
  11411. {
  11412. this.angle = newangle;
  11413. this.set_bbox_changed();
  11414. }
  11415. };
  11416. acts.RotateTowardPosition = function (amt, x, y)
  11417. {
  11418. var dx = x - this.x;
  11419. var dy = y - this.y;
  11420. var target = Math.atan2(dy, dx);
  11421. var newangle = cr.angleRotate(this.angle, target, cr.to_radians(amt));
  11422. if (isNaN(newangle))
  11423. return;
  11424. if (this.angle !== newangle)
  11425. {
  11426. this.angle = newangle;
  11427. this.set_bbox_changed();
  11428. }
  11429. };
  11430. acts.SetTowardPosition = function (x, y)
  11431. {
  11432. var dx = x - this.x;
  11433. var dy = y - this.y;
  11434. var newangle = Math.atan2(dy, dx);
  11435. if (isNaN(newangle))
  11436. return;
  11437. if (this.angle !== newangle)
  11438. {
  11439. this.angle = newangle;
  11440. this.set_bbox_changed();
  11441. }
  11442. };
  11443. exps.Angle = function (ret)
  11444. {
  11445. ret.set_float(cr.to_clamped_degrees(this.angle));
  11446. };
  11447. }
  11448. if (!singleglobal_)
  11449. {
  11450. cnds.CompareInstanceVar = function (iv, cmp, val)
  11451. {
  11452. return cr.do_cmp(this.instance_vars[iv], cmp, val);
  11453. };
  11454. cnds.IsBoolInstanceVarSet = function (iv)
  11455. {
  11456. return this.instance_vars[iv];
  11457. };
  11458. cnds.PickInstVarHiLow = function (which, iv)
  11459. {
  11460. var sol = this.getCurrentSol();
  11461. var instances = sol.getObjects();
  11462. if (!instances.length)
  11463. return false;
  11464. var inst = instances[0];
  11465. var pickme = inst;
  11466. var val = inst.instance_vars[iv];
  11467. var i, len, v;
  11468. for (i = 1, len = instances.length; i < len; i++)
  11469. {
  11470. inst = instances[i];
  11471. v = inst.instance_vars[iv];
  11472. if ((which === 0 && v < val) || (which === 1 && v > val))
  11473. {
  11474. val = v;
  11475. pickme = inst;
  11476. }
  11477. }
  11478. sol.pick_one(pickme);
  11479. return true;
  11480. };
  11481. cnds.PickByUID = function (u)
  11482. {
  11483. var i, len, j, inst, families, instances, sol;
  11484. var cnd = this.runtime.getCurrentCondition();
  11485. if (cnd.inverted)
  11486. {
  11487. sol = this.getCurrentSol();
  11488. if (sol.select_all)
  11489. {
  11490. sol.select_all = false;
  11491. sol.instances.length = 0;
  11492. sol.else_instances.length = 0;
  11493. instances = this.instances;
  11494. for (i = 0, len = instances.length; i < len; i++)
  11495. {
  11496. inst = instances[i];
  11497. if (inst.uid === u)
  11498. sol.else_instances.push(inst);
  11499. else
  11500. sol.instances.push(inst);
  11501. }
  11502. this.applySolToContainer();
  11503. return !!sol.instances.length;
  11504. }
  11505. else
  11506. {
  11507. for (i = 0, j = 0, len = sol.instances.length; i < len; i++)
  11508. {
  11509. inst = sol.instances[i];
  11510. sol.instances[j] = inst;
  11511. if (inst.uid === u)
  11512. {
  11513. sol.else_instances.push(inst);
  11514. }
  11515. else
  11516. j++;
  11517. }
  11518. sol.instances.length = j;
  11519. this.applySolToContainer();
  11520. return !!sol.instances.length;
  11521. }
  11522. }
  11523. else
  11524. {
  11525. inst = this.runtime.getObjectByUID(u);
  11526. if (!inst)
  11527. return false;
  11528. sol = this.getCurrentSol();
  11529. if (!sol.select_all && sol.instances.indexOf(inst) === -1)
  11530. return false; // not picked
  11531. if (this.is_family)
  11532. {
  11533. families = inst.type.families;
  11534. for (i = 0, len = families.length; i < len; i++)
  11535. {
  11536. if (families[i] === this)
  11537. {
  11538. sol.pick_one(inst);
  11539. this.applySolToContainer();
  11540. return true;
  11541. }
  11542. }
  11543. }
  11544. else if (inst.type === this)
  11545. {
  11546. sol.pick_one(inst);
  11547. this.applySolToContainer();
  11548. return true;
  11549. }
  11550. return false;
  11551. }
  11552. };
  11553. cnds.OnCreated = function ()
  11554. {
  11555. return true;
  11556. };
  11557. cnds.OnDestroyed = function ()
  11558. {
  11559. return true;
  11560. };
  11561. acts.SetInstanceVar = function (iv, val)
  11562. {
  11563. var myinstvars = this.instance_vars;
  11564. if (cr.is_number(myinstvars[iv]))
  11565. {
  11566. if (cr.is_number(val))
  11567. myinstvars[iv] = val;
  11568. else
  11569. myinstvars[iv] = parseFloat(val);
  11570. }
  11571. else if (cr.is_string(myinstvars[iv]))
  11572. {
  11573. if (cr.is_string(val))
  11574. myinstvars[iv] = val;
  11575. else
  11576. myinstvars[iv] = val.toString();
  11577. }
  11578. else
  11579. ;
  11580. };
  11581. acts.AddInstanceVar = function (iv, val)
  11582. {
  11583. var myinstvars = this.instance_vars;
  11584. if (cr.is_number(myinstvars[iv]))
  11585. {
  11586. if (cr.is_number(val))
  11587. myinstvars[iv] += val;
  11588. else
  11589. myinstvars[iv] += parseFloat(val);
  11590. }
  11591. else if (cr.is_string(myinstvars[iv]))
  11592. {
  11593. if (cr.is_string(val))
  11594. myinstvars[iv] += val;
  11595. else
  11596. myinstvars[iv] += val.toString();
  11597. }
  11598. else
  11599. ;
  11600. };
  11601. acts.SubInstanceVar = function (iv, val)
  11602. {
  11603. var myinstvars = this.instance_vars;
  11604. if (cr.is_number(myinstvars[iv]))
  11605. {
  11606. if (cr.is_number(val))
  11607. myinstvars[iv] -= val;
  11608. else
  11609. myinstvars[iv] -= parseFloat(val);
  11610. }
  11611. else
  11612. ;
  11613. };
  11614. acts.SetBoolInstanceVar = function (iv, val)
  11615. {
  11616. this.instance_vars[iv] = val ? 1 : 0;
  11617. };
  11618. acts.ToggleBoolInstanceVar = function (iv)
  11619. {
  11620. this.instance_vars[iv] = 1 - this.instance_vars[iv];
  11621. };
  11622. acts.Destroy = function ()
  11623. {
  11624. this.runtime.DestroyInstance(this);
  11625. };
  11626. if (!acts.LoadFromJsonString)
  11627. {
  11628. acts.LoadFromJsonString = function (str_)
  11629. {
  11630. var o, i, len, binst;
  11631. try {
  11632. o = JSON.parse(str_);
  11633. }
  11634. catch (e) {
  11635. return;
  11636. }
  11637. this.runtime.loadInstanceFromJSON(this, o, true);
  11638. if (this.afterLoad)
  11639. this.afterLoad();
  11640. if (this.behavior_insts)
  11641. {
  11642. for (i = 0, len = this.behavior_insts.length; i < len; ++i)
  11643. {
  11644. binst = this.behavior_insts[i];
  11645. if (binst.afterLoad)
  11646. binst.afterLoad();
  11647. }
  11648. }
  11649. };
  11650. }
  11651. exps.Count = function (ret)
  11652. {
  11653. var count = ret.object_class.instances.length;
  11654. var i, len, inst;
  11655. for (i = 0, len = this.runtime.createRow.length; i < len; i++)
  11656. {
  11657. inst = this.runtime.createRow[i];
  11658. if (ret.object_class.is_family)
  11659. {
  11660. if (inst.type.families.indexOf(ret.object_class) >= 0)
  11661. count++;
  11662. }
  11663. else
  11664. {
  11665. if (inst.type === ret.object_class)
  11666. count++;
  11667. }
  11668. }
  11669. ret.set_int(count);
  11670. };
  11671. exps.PickedCount = function (ret)
  11672. {
  11673. ret.set_int(ret.object_class.getCurrentSol().getObjects().length);
  11674. };
  11675. exps.UID = function (ret)
  11676. {
  11677. ret.set_int(this.uid);
  11678. };
  11679. exps.IID = function (ret)
  11680. {
  11681. ret.set_int(this.get_iid());
  11682. };
  11683. if (!exps.AsJSON)
  11684. {
  11685. exps.AsJSON = function (ret)
  11686. {
  11687. ret.set_string(JSON.stringify(this.runtime.saveInstanceToJSON(this, true)));
  11688. };
  11689. }
  11690. }
  11691. if (appearance_aces)
  11692. {
  11693. cnds.IsVisible = function ()
  11694. {
  11695. return this.visible;
  11696. };
  11697. acts.SetVisible = function (v)
  11698. {
  11699. if (!v !== !this.visible)
  11700. {
  11701. this.visible = v;
  11702. this.runtime.redraw = true;
  11703. }
  11704. };
  11705. cnds.CompareOpacity = function (cmp, x)
  11706. {
  11707. return cr.do_cmp(cr.round6dp(this.opacity * 100), cmp, x);
  11708. };
  11709. acts.SetOpacity = function (x)
  11710. {
  11711. var new_opacity = x / 100.0;
  11712. if (new_opacity < 0)
  11713. new_opacity = 0;
  11714. else if (new_opacity > 1)
  11715. new_opacity = 1;
  11716. if (new_opacity !== this.opacity)
  11717. {
  11718. this.opacity = new_opacity;
  11719. this.runtime.redraw = true;
  11720. }
  11721. };
  11722. exps.Opacity = function (ret)
  11723. {
  11724. ret.set_float(cr.round6dp(this.opacity * 100.0));
  11725. };
  11726. }
  11727. if (zorder_aces)
  11728. {
  11729. cnds.IsOnLayer = function (layer_)
  11730. {
  11731. if (!layer_)
  11732. return false;
  11733. return this.layer === layer_;
  11734. };
  11735. cnds.PickTopBottom = function (which_)
  11736. {
  11737. var sol = this.getCurrentSol();
  11738. var instances = sol.getObjects();
  11739. if (!instances.length)
  11740. return false;
  11741. var inst = instances[0];
  11742. var pickme = inst;
  11743. var i, len;
  11744. for (i = 1, len = instances.length; i < len; i++)
  11745. {
  11746. inst = instances[i];
  11747. if (which_ === 0)
  11748. {
  11749. if (inst.layer.index > pickme.layer.index || (inst.layer.index === pickme.layer.index && inst.get_zindex() > pickme.get_zindex()))
  11750. {
  11751. pickme = inst;
  11752. }
  11753. }
  11754. else
  11755. {
  11756. if (inst.layer.index < pickme.layer.index || (inst.layer.index === pickme.layer.index && inst.get_zindex() < pickme.get_zindex()))
  11757. {
  11758. pickme = inst;
  11759. }
  11760. }
  11761. }
  11762. sol.pick_one(pickme);
  11763. return true;
  11764. };
  11765. acts.MoveToTop = function ()
  11766. {
  11767. var zindex = this.get_zindex();
  11768. if (zindex === this.layer.instances.length - 1)
  11769. return;
  11770. cr.arrayRemove(this.layer.instances, zindex);
  11771. this.layer.instances.push(this);
  11772. this.runtime.redraw = true;
  11773. this.layer.zindices_stale = true;
  11774. };
  11775. acts.MoveToBottom = function ()
  11776. {
  11777. var zindex = this.get_zindex();
  11778. if (zindex === 0)
  11779. return;
  11780. cr.arrayRemove(this.layer.instances, zindex);
  11781. this.layer.instances.unshift(this);
  11782. this.runtime.redraw = true;
  11783. this.layer.zindices_stale = true;
  11784. };
  11785. acts.MoveToLayer = function (layerMove)
  11786. {
  11787. if (!layerMove || layerMove == this.layer)
  11788. return;
  11789. cr.arrayRemove(this.layer.instances, this.get_zindex());
  11790. this.layer.zindices_stale = true;
  11791. this.layer = layerMove;
  11792. this.zindex = layerMove.instances.length;
  11793. layerMove.instances.push(this);
  11794. this.runtime.redraw = true;
  11795. };
  11796. acts.ZMoveToObject = function (where_, obj_)
  11797. {
  11798. var isafter = (where_ === 0);
  11799. if (!obj_)
  11800. return;
  11801. var other = obj_.getFirstPicked(this);
  11802. if (!other || other.uid === this.uid)
  11803. return;
  11804. if (this.layer.index !== other.layer.index)
  11805. {
  11806. cr.arrayRemove(this.layer.instances, this.get_zindex());
  11807. this.layer.zindices_stale = true;
  11808. this.layer = other.layer;
  11809. this.zindex = other.layer.instances.length;
  11810. other.layer.instances.push(this);
  11811. }
  11812. var myZ = this.get_zindex();
  11813. var insertZ = other.get_zindex();
  11814. cr.arrayRemove(this.layer.instances, myZ);
  11815. if (myZ < insertZ)
  11816. insertZ--;
  11817. if (isafter)
  11818. insertZ++;
  11819. if (insertZ === this.layer.instances.length)
  11820. this.layer.instances.push(this);
  11821. else
  11822. this.layer.instances.splice(insertZ, 0, this);
  11823. this.layer.zindices_stale = true;
  11824. this.runtime.redraw = true;
  11825. };
  11826. exps.LayerNumber = function (ret)
  11827. {
  11828. ret.set_int(this.layer.number);
  11829. };
  11830. exps.LayerName = function (ret)
  11831. {
  11832. ret.set_string(this.layer.name);
  11833. };
  11834. exps.ZIndex = function (ret)
  11835. {
  11836. ret.set_int(this.get_zindex());
  11837. };
  11838. }
  11839. if (effects_aces)
  11840. {
  11841. acts.SetEffectEnabled = function (enable_, effectname_)
  11842. {
  11843. if (!this.runtime.glwrap)
  11844. return;
  11845. var i = this.type.getEffectIndexByName(effectname_);
  11846. if (i < 0)
  11847. return; // effect name not found
  11848. var enable = (enable_ === 1);
  11849. if (this.active_effect_flags[i] === enable)
  11850. return; // no change
  11851. this.active_effect_flags[i] = enable;
  11852. this.updateActiveEffects();
  11853. this.runtime.redraw = true;
  11854. };
  11855. acts.SetEffectParam = function (effectname_, index_, value_)
  11856. {
  11857. if (!this.runtime.glwrap)
  11858. return;
  11859. var i = this.type.getEffectIndexByName(effectname_);
  11860. if (i < 0)
  11861. return; // effect name not found
  11862. var et = this.type.effect_types[i];
  11863. var params = this.effect_params[i];
  11864. index_ = Math.floor(index_);
  11865. if (index_ < 0 || index_ >= params.length)
  11866. return; // effect index out of bounds
  11867. if (this.runtime.glwrap.getProgramParameterType(et.shaderindex, index_) === 1)
  11868. value_ /= 100.0;
  11869. if (params[index_] === value_)
  11870. return; // no change
  11871. params[index_] = value_;
  11872. if (et.active)
  11873. this.runtime.redraw = true;
  11874. };
  11875. }
  11876. };
  11877. cr.set_bbox_changed = function ()
  11878. {
  11879. this.bbox_changed = true; // will recreate next time box requested
  11880. this.type.any_bbox_changed = true; // avoid unnecessary updateAllBBox() calls
  11881. this.runtime.redraw = true; // assume runtime needs to redraw
  11882. var i, len, callbacks = this.bbox_changed_callbacks;
  11883. for (i = 0, len = callbacks.length; i < len; ++i)
  11884. {
  11885. callbacks[i](this);
  11886. }
  11887. };
  11888. cr.add_bbox_changed_callback = function (f)
  11889. {
  11890. if (f)
  11891. {
  11892. this.bbox_changed_callbacks.push(f);
  11893. }
  11894. };
  11895. var tmprc = new cr.rect(0, 0, 0, 0);
  11896. cr.update_bbox = function ()
  11897. {
  11898. if (!this.bbox_changed)
  11899. return; // bounding box not changed
  11900. var bbox = this.bbox;
  11901. var bquad = this.bquad;
  11902. bbox.set(this.x, this.y, this.x + this.width, this.y + this.height);
  11903. bbox.offset(-this.hotspotX * this.width, -this.hotspotY * this.height);
  11904. if (!this.angle)
  11905. {
  11906. bquad.set_from_rect(bbox); // make bounding quad from box
  11907. }
  11908. else
  11909. {
  11910. bbox.offset(-this.x, -this.y); // translate to origin
  11911. bquad.set_from_rotated_rect(bbox, this.angle); // rotate around origin
  11912. bquad.offset(this.x, this.y); // translate back to original position
  11913. bquad.bounding_box(bbox);
  11914. }
  11915. bbox.normalize();
  11916. this.bbox_changed = false; // bounding box up to date
  11917. if (this.collisionsEnabled)
  11918. {
  11919. var mygrid = this.type.collision_grid;
  11920. var collcells = this.collcells;
  11921. tmprc.set(mygrid.XToCell(bbox.left), mygrid.YToCell(bbox.top), mygrid.XToCell(bbox.right), mygrid.YToCell(bbox.bottom));
  11922. if (!collcells.equals(tmprc))
  11923. {
  11924. if (collcells.right < collcells.left)
  11925. mygrid.update(this, null, tmprc); // first insertion with invalid rect: don't provide old range
  11926. else
  11927. mygrid.update(this, collcells, tmprc);
  11928. collcells.copy(tmprc);
  11929. }
  11930. }
  11931. };
  11932. cr.inst_contains_pt = function (x, y)
  11933. {
  11934. if (!this.bbox.contains_pt(x, y))
  11935. return false;
  11936. if (!this.bquad.contains_pt(x, y))
  11937. return false;
  11938. if (this.collision_poly && !this.collision_poly.is_empty())
  11939. {
  11940. this.collision_poly.cache_poly(this.width, this.height, this.angle);
  11941. return this.collision_poly.contains_pt(x - this.x, y - this.y);
  11942. }
  11943. else
  11944. return true;
  11945. };
  11946. cr.inst_get_iid = function ()
  11947. {
  11948. this.type.updateIIDs();
  11949. return this.iid;
  11950. };
  11951. cr.inst_get_zindex = function ()
  11952. {
  11953. this.layer.updateZIndices();
  11954. return this.zindex;
  11955. };
  11956. cr.inst_updateActiveEffects = function ()
  11957. {
  11958. this.active_effect_types.length = 0;
  11959. var i, len, et, inst;
  11960. for (i = 0, len = this.active_effect_flags.length; i < len; i++)
  11961. {
  11962. if (this.active_effect_flags[i])
  11963. this.active_effect_types.push(this.type.effect_types[i]);
  11964. }
  11965. this.uses_shaders = !!this.active_effect_types.length;
  11966. };
  11967. cr.inst_toString = function ()
  11968. {
  11969. return "Inst" + this.puid;
  11970. };
  11971. cr.type_getFirstPicked = function (frominst)
  11972. {
  11973. if (frominst && frominst.is_contained && frominst.type != this)
  11974. {
  11975. var i, len, s;
  11976. for (i = 0, len = frominst.siblings.length; i < len; i++)
  11977. {
  11978. s = frominst.siblings[i];
  11979. if (s.type == this)
  11980. return s;
  11981. }
  11982. }
  11983. var instances = this.getCurrentSol().getObjects();
  11984. if (instances.length)
  11985. return instances[0];
  11986. else
  11987. return null;
  11988. };
  11989. cr.type_getPairedInstance = function (inst)
  11990. {
  11991. var instances = this.getCurrentSol().getObjects();
  11992. if (instances.length)
  11993. return instances[inst.get_iid() % instances.length];
  11994. else
  11995. return null;
  11996. };
  11997. cr.type_updateIIDs = function ()
  11998. {
  11999. if (!this.stale_iids || this.is_family)
  12000. return; // up to date or is family - don't want family to overwrite IIDs
  12001. var i, len;
  12002. for (i = 0, len = this.instances.length; i < len; i++)
  12003. this.instances[i].iid = i;
  12004. var next_iid = i;
  12005. var createRow = this.runtime.createRow;
  12006. for (i = 0, len = createRow.length; i < len; ++i)
  12007. {
  12008. if (createRow[i].type === this)
  12009. createRow[i].iid = next_iid++;
  12010. }
  12011. this.stale_iids = false;
  12012. };
  12013. cr.type_getInstanceByIID = function (i)
  12014. {
  12015. if (i < this.instances.length)
  12016. return this.instances[i];
  12017. i -= this.instances.length;
  12018. var createRow = this.runtime.createRow;
  12019. var j, lenj;
  12020. for (j = 0, lenj = createRow.length; j < lenj; ++j)
  12021. {
  12022. if (createRow[j].type === this)
  12023. {
  12024. if (i === 0)
  12025. return createRow[j];
  12026. --i;
  12027. }
  12028. }
  12029. ;
  12030. return null;
  12031. };
  12032. cr.type_getCurrentSol = function ()
  12033. {
  12034. return this.solstack[this.cur_sol];
  12035. };
  12036. cr.type_pushCleanSol = function ()
  12037. {
  12038. this.cur_sol++;
  12039. if (this.cur_sol === this.solstack.length)
  12040. this.solstack.push(new cr.selection(this));
  12041. else
  12042. this.solstack[this.cur_sol].select_all = true; // else clear next SOL
  12043. };
  12044. cr.type_pushCopySol = function ()
  12045. {
  12046. this.cur_sol++;
  12047. if (this.cur_sol === this.solstack.length)
  12048. this.solstack.push(new cr.selection(this));
  12049. var clonesol = this.solstack[this.cur_sol];
  12050. var prevsol = this.solstack[this.cur_sol - 1];
  12051. if (prevsol.select_all)
  12052. clonesol.select_all = true;
  12053. else
  12054. {
  12055. clonesol.select_all = false;
  12056. cr.shallowAssignArray(clonesol.instances, prevsol.instances);
  12057. cr.shallowAssignArray(clonesol.else_instances, prevsol.else_instances);
  12058. }
  12059. };
  12060. cr.type_popSol = function ()
  12061. {
  12062. ;
  12063. this.cur_sol--;
  12064. };
  12065. cr.type_getBehaviorByName = function (behname)
  12066. {
  12067. var i, len, j, lenj, f, index = 0;
  12068. if (!this.is_family)
  12069. {
  12070. for (i = 0, len = this.families.length; i < len; i++)
  12071. {
  12072. f = this.families[i];
  12073. for (j = 0, lenj = f.behaviors.length; j < lenj; j++)
  12074. {
  12075. if (behname === f.behaviors[j].name)
  12076. {
  12077. this.extra.lastBehIndex = index;
  12078. return f.behaviors[j];
  12079. }
  12080. index++;
  12081. }
  12082. }
  12083. }
  12084. for (i = 0, len = this.behaviors.length; i < len; i++) {
  12085. if (behname === this.behaviors[i].name)
  12086. {
  12087. this.extra.lastBehIndex = index;
  12088. return this.behaviors[i];
  12089. }
  12090. index++;
  12091. }
  12092. return null;
  12093. };
  12094. cr.type_getBehaviorIndexByName = function (behname)
  12095. {
  12096. var b = this.getBehaviorByName(behname);
  12097. if (b)
  12098. return this.extra.lastBehIndex;
  12099. else
  12100. return -1;
  12101. };
  12102. cr.type_getEffectIndexByName = function (name_)
  12103. {
  12104. var i, len;
  12105. for (i = 0, len = this.effect_types.length; i < len; i++)
  12106. {
  12107. if (this.effect_types[i].name === name_)
  12108. return i;
  12109. }
  12110. return -1;
  12111. };
  12112. cr.type_applySolToContainer = function ()
  12113. {
  12114. if (!this.is_contained || this.is_family)
  12115. return;
  12116. var i, len, j, lenj, t, sol, sol2;
  12117. this.updateIIDs();
  12118. sol = this.getCurrentSol();
  12119. var select_all = sol.select_all;
  12120. var es = this.runtime.getCurrentEventStack();
  12121. var orblock = es && es.current_event && es.current_event.orblock;
  12122. for (i = 0, len = this.container.length; i < len; i++)
  12123. {
  12124. t = this.container[i];
  12125. if (t === this)
  12126. continue;
  12127. t.updateIIDs();
  12128. sol2 = t.getCurrentSol();
  12129. sol2.select_all = select_all;
  12130. if (!select_all)
  12131. {
  12132. sol2.instances.length = sol.instances.length;
  12133. for (j = 0, lenj = sol.instances.length; j < lenj; j++)
  12134. sol2.instances[j] = t.getInstanceByIID(sol.instances[j].iid);
  12135. if (orblock)
  12136. {
  12137. sol2.else_instances.length = sol.else_instances.length;
  12138. for (j = 0, lenj = sol.else_instances.length; j < lenj; j++)
  12139. sol2.else_instances[j] = t.getInstanceByIID(sol.else_instances[j].iid);
  12140. }
  12141. }
  12142. }
  12143. };
  12144. cr.type_toString = function ()
  12145. {
  12146. return "Type" + this.sid;
  12147. };
  12148. cr.do_cmp = function (x, cmp, y)
  12149. {
  12150. if (typeof x === "undefined" || typeof y === "undefined")
  12151. return false;
  12152. switch (cmp)
  12153. {
  12154. case 0: // equal
  12155. return x === y;
  12156. case 1: // not equal
  12157. return x !== y;
  12158. case 2: // less
  12159. return x < y;
  12160. case 3: // less/equal
  12161. return x <= y;
  12162. case 4: // greater
  12163. return x > y;
  12164. case 5: // greater/equal
  12165. return x >= y;
  12166. default:
  12167. ;
  12168. return false;
  12169. }
  12170. };
  12171. })();
  12172. cr.shaders = {};
  12173. ;
  12174. ;
  12175. cr.plugins_.Arr = function(runtime)
  12176. {
  12177. this.runtime = runtime;
  12178. };
  12179. (function ()
  12180. {
  12181. var pluginProto = cr.plugins_.Arr.prototype;
  12182. pluginProto.Type = function(plugin)
  12183. {
  12184. this.plugin = plugin;
  12185. this.runtime = plugin.runtime;
  12186. };
  12187. var typeProto = pluginProto.Type.prototype;
  12188. typeProto.onCreate = function()
  12189. {
  12190. };
  12191. pluginProto.Instance = function(type)
  12192. {
  12193. this.type = type;
  12194. this.runtime = type.runtime;
  12195. };
  12196. var instanceProto = pluginProto.Instance.prototype;
  12197. var arrCache = [];
  12198. function allocArray()
  12199. {
  12200. if (arrCache.length)
  12201. return arrCache.pop();
  12202. else
  12203. return [];
  12204. };
  12205. if (!Array.isArray)
  12206. {
  12207. Array.isArray = function (vArg) {
  12208. return Object.prototype.toString.call(vArg) === "[object Array]";
  12209. };
  12210. }
  12211. function freeArray(a)
  12212. {
  12213. var i, len;
  12214. for (i = 0, len = a.length; i < len; i++)
  12215. {
  12216. if (Array.isArray(a[i]))
  12217. freeArray(a[i]);
  12218. }
  12219. a.length = 0;
  12220. arrCache.push(a);
  12221. };
  12222. instanceProto.onCreate = function()
  12223. {
  12224. this.cx = this.properties[0];
  12225. this.cy = this.properties[1];
  12226. this.cz = this.properties[2];
  12227. if (!this.recycled)
  12228. this.arr = allocArray();
  12229. var a = this.arr;
  12230. a.length = this.cx;
  12231. var x, y, z;
  12232. for (x = 0; x < this.cx; x++)
  12233. {
  12234. if (!a[x])
  12235. a[x] = allocArray();
  12236. a[x].length = this.cy;
  12237. for (y = 0; y < this.cy; y++)
  12238. {
  12239. if (!a[x][y])
  12240. a[x][y] = allocArray();
  12241. a[x][y].length = this.cz;
  12242. for (z = 0; z < this.cz; z++)
  12243. a[x][y][z] = 0;
  12244. }
  12245. }
  12246. this.forX = 0;
  12247. this.forY = 0;
  12248. this.forZ = 0;
  12249. };
  12250. instanceProto.onDestroy = function ()
  12251. {
  12252. var x;
  12253. for (x = 0; x < this.cx; x++)
  12254. freeArray(this.arr[x]); // will recurse down and recycle other arrays
  12255. this.arr.length = 0;
  12256. };
  12257. instanceProto.at = function (x, y, z)
  12258. {
  12259. x = Math.floor(x);
  12260. y = Math.floor(y);
  12261. z = Math.floor(z);
  12262. if (isNaN(x) || x < 0 || x > this.cx - 1)
  12263. return 0;
  12264. if (isNaN(y) || y < 0 || y > this.cy - 1)
  12265. return 0;
  12266. if (isNaN(z) || z < 0 || z > this.cz - 1)
  12267. return 0;
  12268. return this.arr[x][y][z];
  12269. };
  12270. instanceProto.set = function (x, y, z, val)
  12271. {
  12272. x = Math.floor(x);
  12273. y = Math.floor(y);
  12274. z = Math.floor(z);
  12275. if (isNaN(x) || x < 0 || x > this.cx - 1)
  12276. return;
  12277. if (isNaN(y) || y < 0 || y > this.cy - 1)
  12278. return;
  12279. if (isNaN(z) || z < 0 || z > this.cz - 1)
  12280. return;
  12281. this.arr[x][y][z] = val;
  12282. };
  12283. instanceProto.getAsJSON = function ()
  12284. {
  12285. return JSON.stringify({
  12286. "c2array": true,
  12287. "size": [this.cx, this.cy, this.cz],
  12288. "data": this.arr
  12289. });
  12290. };
  12291. instanceProto.saveToJSON = function ()
  12292. {
  12293. return {
  12294. "size": [this.cx, this.cy, this.cz],
  12295. "data": this.arr
  12296. };
  12297. };
  12298. instanceProto.loadFromJSON = function (o)
  12299. {
  12300. var sz = o["size"];
  12301. this.cx = sz[0];
  12302. this.cy = sz[1];
  12303. this.cz = sz[2];
  12304. this.arr = o["data"];
  12305. };
  12306. instanceProto.setSize = function (w, h, d)
  12307. {
  12308. if (w < 0) w = 0;
  12309. if (h < 0) h = 0;
  12310. if (d < 0) d = 0;
  12311. if (this.cx === w && this.cy === h && this.cz === d)
  12312. return; // no change
  12313. this.cx = w;
  12314. this.cy = h;
  12315. this.cz = d;
  12316. var x, y, z;
  12317. var a = this.arr;
  12318. a.length = w;
  12319. for (x = 0; x < this.cx; x++)
  12320. {
  12321. if (cr.is_undefined(a[x]))
  12322. a[x] = allocArray();
  12323. a[x].length = h;
  12324. for (y = 0; y < this.cy; y++)
  12325. {
  12326. if (cr.is_undefined(a[x][y]))
  12327. a[x][y] = allocArray();
  12328. a[x][y].length = d;
  12329. for (z = 0; z < this.cz; z++)
  12330. {
  12331. if (cr.is_undefined(a[x][y][z]))
  12332. a[x][y][z] = 0;
  12333. }
  12334. }
  12335. }
  12336. };
  12337. function Cnds() {};
  12338. Cnds.prototype.CompareX = function (x, cmp, val)
  12339. {
  12340. return cr.do_cmp(this.at(x, 0, 0), cmp, val);
  12341. };
  12342. Cnds.prototype.CompareXY = function (x, y, cmp, val)
  12343. {
  12344. return cr.do_cmp(this.at(x, y, 0), cmp, val);
  12345. };
  12346. Cnds.prototype.CompareXYZ = function (x, y, z, cmp, val)
  12347. {
  12348. return cr.do_cmp(this.at(x, y, z), cmp, val);
  12349. };
  12350. instanceProto.doForEachTrigger = function (current_event)
  12351. {
  12352. this.runtime.pushCopySol(current_event.solModifiers);
  12353. current_event.retrigger();
  12354. this.runtime.popSol(current_event.solModifiers);
  12355. };
  12356. Cnds.prototype.ArrForEach = function (dims)
  12357. {
  12358. var current_event = this.runtime.getCurrentEventStack().current_event;
  12359. this.forX = 0;
  12360. this.forY = 0;
  12361. this.forZ = 0;
  12362. switch (dims) {
  12363. case 0:
  12364. for (this.forX = 0; this.forX < this.cx; this.forX++)
  12365. {
  12366. for (this.forY = 0; this.forY < this.cy; this.forY++)
  12367. {
  12368. for (this.forZ = 0; this.forZ < this.cz; this.forZ++)
  12369. {
  12370. this.doForEachTrigger(current_event);
  12371. }
  12372. }
  12373. }
  12374. break;
  12375. case 1:
  12376. for (this.forX = 0; this.forX < this.cx; this.forX++)
  12377. {
  12378. for (this.forY = 0; this.forY < this.cy; this.forY++)
  12379. {
  12380. this.doForEachTrigger(current_event);
  12381. }
  12382. }
  12383. break;
  12384. case 2:
  12385. for (this.forX = 0; this.forX < this.cx; this.forX++)
  12386. {
  12387. this.doForEachTrigger(current_event);
  12388. }
  12389. break;
  12390. }
  12391. this.forX = 0;
  12392. this.forY = 0;
  12393. this.forZ = 0;
  12394. return false;
  12395. };
  12396. Cnds.prototype.CompareCurrent = function (cmp, val)
  12397. {
  12398. return cr.do_cmp(this.at(this.forX, this.forY, this.forZ), cmp, val);
  12399. };
  12400. Cnds.prototype.Contains = function(val)
  12401. {
  12402. var x, y, z;
  12403. for (x = 0; x < this.cx; x++)
  12404. {
  12405. for (y = 0; y < this.cy; y++)
  12406. {
  12407. for (z = 0; z < this.cz; z++)
  12408. {
  12409. if (this.arr[x][y][z] === val)
  12410. return true;
  12411. }
  12412. }
  12413. }
  12414. return false;
  12415. };
  12416. Cnds.prototype.IsEmpty = function ()
  12417. {
  12418. return this.cx === 0 || this.cy === 0 || this.cz === 0;
  12419. };
  12420. pluginProto.cnds = new Cnds();
  12421. function Acts() {};
  12422. Acts.prototype.Clear = function ()
  12423. {
  12424. var x, y, z;
  12425. for (x = 0; x < this.cx; x++)
  12426. for (y = 0; y < this.cy; y++)
  12427. for (z = 0; z < this.cz; z++)
  12428. this.arr[x][y][z] = 0;
  12429. };
  12430. Acts.prototype.SetSize = function (w, h, d)
  12431. {
  12432. this.setSize(w, h, d);
  12433. };
  12434. Acts.prototype.SetX = function (x, val)
  12435. {
  12436. this.set(x, 0, 0, val);
  12437. };
  12438. Acts.prototype.SetXY = function (x, y, val)
  12439. {
  12440. this.set(x, y, 0, val);
  12441. };
  12442. Acts.prototype.SetXYZ = function (x, y, z, val)
  12443. {
  12444. this.set(x, y, z, val);
  12445. };
  12446. Acts.prototype.Push = function (where, value, axis)
  12447. {
  12448. var x = 0, y = 0, z = 0;
  12449. var a = this.arr;
  12450. switch (axis) {
  12451. case 0: // X axis
  12452. if (where === 0) // back
  12453. {
  12454. x = a.length;
  12455. a.push(allocArray());
  12456. }
  12457. else // front
  12458. {
  12459. x = 0;
  12460. a.unshift(allocArray());
  12461. }
  12462. a[x].length = this.cy;
  12463. for ( ; y < this.cy; y++)
  12464. {
  12465. a[x][y] = allocArray();
  12466. a[x][y].length = this.cz;
  12467. for (z = 0; z < this.cz; z++)
  12468. a[x][y][z] = value;
  12469. }
  12470. this.cx++;
  12471. break;
  12472. case 1: // Y axis
  12473. for ( ; x < this.cx; x++)
  12474. {
  12475. if (where === 0) // back
  12476. {
  12477. y = a[x].length;
  12478. a[x].push(allocArray());
  12479. }
  12480. else // front
  12481. {
  12482. y = 0;
  12483. a[x].unshift(allocArray());
  12484. }
  12485. a[x][y].length = this.cz;
  12486. for (z = 0; z < this.cz; z++)
  12487. a[x][y][z] = value;
  12488. }
  12489. this.cy++;
  12490. break;
  12491. case 2: // Z axis
  12492. for ( ; x < this.cx; x++)
  12493. {
  12494. for (y = 0; y < this.cy; y++)
  12495. {
  12496. if (where === 0) // back
  12497. {
  12498. a[x][y].push(value);
  12499. }
  12500. else // front
  12501. {
  12502. a[x][y].unshift(value);
  12503. }
  12504. }
  12505. }
  12506. this.cz++;
  12507. break;
  12508. }
  12509. };
  12510. Acts.prototype.Pop = function (where, axis)
  12511. {
  12512. var x = 0, y = 0, z = 0;
  12513. var a = this.arr;
  12514. switch (axis) {
  12515. case 0: // X axis
  12516. if (this.cx === 0)
  12517. break;
  12518. if (where === 0) // back
  12519. {
  12520. freeArray(a.pop());
  12521. }
  12522. else // front
  12523. {
  12524. freeArray(a.shift());
  12525. }
  12526. this.cx--;
  12527. break;
  12528. case 1: // Y axis
  12529. if (this.cy === 0)
  12530. break;
  12531. for ( ; x < this.cx; x++)
  12532. {
  12533. if (where === 0) // back
  12534. {
  12535. freeArray(a[x].pop());
  12536. }
  12537. else // front
  12538. {
  12539. freeArray(a[x].shift());
  12540. }
  12541. }
  12542. this.cy--;
  12543. break;
  12544. case 2: // Z axis
  12545. if (this.cz === 0)
  12546. break;
  12547. for ( ; x < this.cx; x++)
  12548. {
  12549. for (y = 0; y < this.cy; y++)
  12550. {
  12551. if (where === 0) // back
  12552. {
  12553. a[x][y].pop();
  12554. }
  12555. else // front
  12556. {
  12557. a[x][y].shift();
  12558. }
  12559. }
  12560. }
  12561. this.cz--;
  12562. break;
  12563. }
  12564. };
  12565. Acts.prototype.Reverse = function (axis)
  12566. {
  12567. var x = 0, y = 0, z = 0;
  12568. var a = this.arr;
  12569. if (this.cx === 0 || this.cy === 0 || this.cz === 0)
  12570. return; // no point reversing empty array
  12571. switch (axis) {
  12572. case 0: // X axis
  12573. a.reverse();
  12574. break;
  12575. case 1: // Y axis
  12576. for ( ; x < this.cx; x++)
  12577. a[x].reverse();
  12578. break;
  12579. case 2: // Z axis
  12580. for ( ; x < this.cx; x++)
  12581. for (y = 0; y < this.cy; y++)
  12582. a[x][y].reverse();
  12583. this.cz--;
  12584. break;
  12585. }
  12586. };
  12587. function compareValues(va, vb)
  12588. {
  12589. if (cr.is_number(va) && cr.is_number(vb))
  12590. return va - vb;
  12591. else
  12592. {
  12593. var sa = "" + va;
  12594. var sb = "" + vb;
  12595. if (sa < sb)
  12596. return -1;
  12597. else if (sa > sb)
  12598. return 1;
  12599. else
  12600. return 0;
  12601. }
  12602. }
  12603. Acts.prototype.Sort = function (axis)
  12604. {
  12605. var x = 0, y = 0, z = 0;
  12606. var a = this.arr;
  12607. if (this.cx === 0 || this.cy === 0 || this.cz === 0)
  12608. return; // no point sorting empty array
  12609. switch (axis) {
  12610. case 0: // X axis
  12611. a.sort(function (a, b) {
  12612. return compareValues(a[0][0], b[0][0]);
  12613. });
  12614. break;
  12615. case 1: // Y axis
  12616. for ( ; x < this.cx; x++)
  12617. {
  12618. a[x].sort(function (a, b) {
  12619. return compareValues(a[0], b[0]);
  12620. });
  12621. }
  12622. break;
  12623. case 2: // Z axis
  12624. for ( ; x < this.cx; x++)
  12625. {
  12626. for (y = 0; y < this.cy; y++)
  12627. {
  12628. a[x][y].sort(compareValues);
  12629. }
  12630. }
  12631. break;
  12632. }
  12633. };
  12634. Acts.prototype.Delete = function (index, axis)
  12635. {
  12636. var x = 0, y = 0, z = 0;
  12637. index = Math.floor(index);
  12638. var a = this.arr;
  12639. if (index < 0)
  12640. return;
  12641. switch (axis) {
  12642. case 0: // X axis
  12643. if (index >= this.cx)
  12644. break;
  12645. freeArray(a[index]);
  12646. a.splice(index, 1);
  12647. this.cx--;
  12648. break;
  12649. case 1: // Y axis
  12650. if (index >= this.cy)
  12651. break;
  12652. for ( ; x < this.cx; x++)
  12653. {
  12654. freeArray(a[x][index]);
  12655. a[x].splice(index, 1);
  12656. }
  12657. this.cy--;
  12658. break;
  12659. case 2: // Z axis
  12660. if (index >= this.cz)
  12661. break;
  12662. for ( ; x < this.cx; x++)
  12663. {
  12664. for (y = 0; y < this.cy; y++)
  12665. {
  12666. a[x][y].splice(index, 1);
  12667. }
  12668. }
  12669. this.cz--;
  12670. break;
  12671. }
  12672. };
  12673. Acts.prototype.Insert = function (value, index, axis)
  12674. {
  12675. var x = 0, y = 0, z = 0;
  12676. index = Math.floor(index);
  12677. var a = this.arr;
  12678. if (index < 0)
  12679. return;
  12680. switch (axis) {
  12681. case 0: // X axis
  12682. if (index > this.cx)
  12683. return;
  12684. x = index;
  12685. a.splice(x, 0, allocArray());
  12686. a[x].length = this.cy;
  12687. for ( ; y < this.cy; y++)
  12688. {
  12689. a[x][y] = allocArray();
  12690. a[x][y].length = this.cz;
  12691. for (z = 0; z < this.cz; z++)
  12692. a[x][y][z] = value;
  12693. }
  12694. this.cx++;
  12695. break;
  12696. case 1: // Y axis
  12697. if (index > this.cy)
  12698. return;
  12699. for ( ; x < this.cx; x++)
  12700. {
  12701. y = index;
  12702. a[x].splice(y, 0, allocArray());
  12703. a[x][y].length = this.cz;
  12704. for (z = 0; z < this.cz; z++)
  12705. a[x][y][z] = value;
  12706. }
  12707. this.cy++;
  12708. break;
  12709. case 2: // Z axis
  12710. if (index > this.cz)
  12711. return;
  12712. for ( ; x < this.cx; x++)
  12713. {
  12714. for (y = 0; y < this.cy; y++)
  12715. {
  12716. a[x][y].splice(index, 0, value);
  12717. }
  12718. }
  12719. this.cz++;
  12720. break;
  12721. }
  12722. };
  12723. Acts.prototype.JSONLoad = function (json_)
  12724. {
  12725. var o;
  12726. try {
  12727. o = JSON.parse(json_);
  12728. }
  12729. catch(e) { return; }
  12730. if (!o["c2array"]) // presumably not a c2array object
  12731. return;
  12732. var sz = o["size"];
  12733. this.cx = sz[0];
  12734. this.cy = sz[1];
  12735. this.cz = sz[2];
  12736. this.arr = o["data"];
  12737. };
  12738. Acts.prototype.JSONDownload = function (filename)
  12739. {
  12740. var a = document.createElement("a");
  12741. if (typeof a.download === "undefined")
  12742. {
  12743. var str = 'data:text/html,' + encodeURIComponent("<p><a download='" + filename + "' href=\"data:application/json,"
  12744. + encodeURIComponent(this.getAsJSON())
  12745. + "\">Download link</a></p>");
  12746. window.open(str);
  12747. }
  12748. else
  12749. {
  12750. var body = document.getElementsByTagName("body")[0];
  12751. a.textContent = filename;
  12752. a.href = "data:application/json," + encodeURIComponent(this.getAsJSON());
  12753. a.download = filename;
  12754. body.appendChild(a);
  12755. var clickEvent = document.createEvent("MouseEvent");
  12756. clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  12757. a.dispatchEvent(clickEvent);
  12758. body.removeChild(a);
  12759. }
  12760. };
  12761. pluginProto.acts = new Acts();
  12762. function Exps() {};
  12763. Exps.prototype.At = function (ret, x, y_, z_)
  12764. {
  12765. var y = y_ || 0;
  12766. var z = z_ || 0;
  12767. ret.set_any(this.at(x, y, z));
  12768. };
  12769. Exps.prototype.Width = function (ret)
  12770. {
  12771. ret.set_int(this.cx);
  12772. };
  12773. Exps.prototype.Height = function (ret)
  12774. {
  12775. ret.set_int(this.cy);
  12776. };
  12777. Exps.prototype.Depth = function (ret)
  12778. {
  12779. ret.set_int(this.cz);
  12780. };
  12781. Exps.prototype.CurX = function (ret)
  12782. {
  12783. ret.set_int(this.forX);
  12784. };
  12785. Exps.prototype.CurY = function (ret)
  12786. {
  12787. ret.set_int(this.forY);
  12788. };
  12789. Exps.prototype.CurZ = function (ret)
  12790. {
  12791. ret.set_int(this.forZ);
  12792. };
  12793. Exps.prototype.CurValue = function (ret)
  12794. {
  12795. ret.set_any(this.at(this.forX, this.forY, this.forZ));
  12796. };
  12797. Exps.prototype.Front = function (ret)
  12798. {
  12799. ret.set_any(this.at(0, 0, 0));
  12800. };
  12801. Exps.prototype.Back = function (ret)
  12802. {
  12803. ret.set_any(this.at(this.cx - 1, 0, 0));
  12804. };
  12805. Exps.prototype.IndexOf = function (ret, v)
  12806. {
  12807. for (var i = 0; i < this.cx; i++)
  12808. {
  12809. if (this.arr[i][0][0] === v)
  12810. {
  12811. ret.set_int(i);
  12812. return;
  12813. }
  12814. }
  12815. ret.set_int(-1);
  12816. };
  12817. Exps.prototype.LastIndexOf = function (ret, v)
  12818. {
  12819. for (var i = this.cx - 1; i >= 0; i--)
  12820. {
  12821. if (this.arr[i][0][0] === v)
  12822. {
  12823. ret.set_int(i);
  12824. return;
  12825. }
  12826. }
  12827. ret.set_int(-1);
  12828. };
  12829. Exps.prototype.AsJSON = function (ret)
  12830. {
  12831. ret.set_string(this.getAsJSON());
  12832. };
  12833. pluginProto.exps = new Exps();
  12834. }());
  12835. ;
  12836. ;
  12837. cr.plugins_.Browser = function(runtime)
  12838. {
  12839. this.runtime = runtime;
  12840. };
  12841. (function ()
  12842. {
  12843. var pluginProto = cr.plugins_.Browser.prototype;
  12844. pluginProto.Type = function(plugin)
  12845. {
  12846. this.plugin = plugin;
  12847. this.runtime = plugin.runtime;
  12848. };
  12849. var typeProto = pluginProto.Type.prototype;
  12850. typeProto.onCreate = function()
  12851. {
  12852. };
  12853. pluginProto.Instance = function(type)
  12854. {
  12855. this.type = type;
  12856. this.runtime = type.runtime;
  12857. };
  12858. var instanceProto = pluginProto.Instance.prototype;
  12859. instanceProto.onCreate = function()
  12860. {
  12861. var self = this;
  12862. window.addEventListener("resize", function () {
  12863. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnResize, self);
  12864. });
  12865. if (typeof navigator.onLine !== "undefined")
  12866. {
  12867. window.addEventListener("online", function() {
  12868. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnOnline, self);
  12869. });
  12870. window.addEventListener("offline", function() {
  12871. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnOffline, self);
  12872. });
  12873. }
  12874. if (typeof window.applicationCache !== "undefined")
  12875. {
  12876. window.applicationCache.addEventListener('updateready', function() {
  12877. self.runtime.loadingprogress = 1;
  12878. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnUpdateReady, self);
  12879. });
  12880. window.applicationCache.addEventListener('progress', function(e) {
  12881. self.runtime.loadingprogress = e["loaded"] / e["total"];
  12882. });
  12883. }
  12884. if (!this.runtime.isDirectCanvas)
  12885. {
  12886. document.addEventListener("appMobi.device.update.available", function() {
  12887. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnUpdateReady, self);
  12888. });
  12889. document.addEventListener("backbutton", function() {
  12890. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnBackButton, self);
  12891. });
  12892. document.addEventListener("menubutton", function() {
  12893. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnMenuButton, self);
  12894. });
  12895. document.addEventListener("searchbutton", function() {
  12896. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnSearchButton, self);
  12897. });
  12898. document.addEventListener("tizenhwkey", function (e) {
  12899. var ret;
  12900. switch (e["keyName"]) {
  12901. case "back":
  12902. ret = self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnBackButton, self);
  12903. if (!ret)
  12904. {
  12905. if (window["tizen"])
  12906. window["tizen"]["application"]["getCurrentApplication"]()["exit"]();
  12907. }
  12908. break;
  12909. case "menu":
  12910. ret = self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnMenuButton, self);
  12911. if (!ret)
  12912. e.preventDefault();
  12913. break;
  12914. }
  12915. });
  12916. }
  12917. this.runtime.addSuspendCallback(function(s) {
  12918. if (s)
  12919. {
  12920. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnPageHidden, self);
  12921. }
  12922. else
  12923. {
  12924. self.runtime.trigger(cr.plugins_.Browser.prototype.cnds.OnPageVisible, self);
  12925. }
  12926. });
  12927. this.is_arcade = (typeof window["is_scirra_arcade"] !== "undefined");
  12928. };
  12929. function Cnds() {};
  12930. Cnds.prototype.CookiesEnabled = function()
  12931. {
  12932. return navigator ? navigator.cookieEnabled : false;
  12933. };
  12934. Cnds.prototype.IsOnline = function()
  12935. {
  12936. return navigator ? navigator.onLine : false;
  12937. };
  12938. Cnds.prototype.HasJava = function()
  12939. {
  12940. return navigator ? navigator.javaEnabled() : false;
  12941. };
  12942. Cnds.prototype.OnOnline = function()
  12943. {
  12944. return true;
  12945. };
  12946. Cnds.prototype.OnOffline = function()
  12947. {
  12948. return true;
  12949. };
  12950. Cnds.prototype.IsDownloadingUpdate = function ()
  12951. {
  12952. if (typeof window["applicationCache"] === "undefined")
  12953. return false;
  12954. else
  12955. return window["applicationCache"]["status"] === window["applicationCache"]["DOWNLOADING"];
  12956. };
  12957. Cnds.prototype.OnUpdateReady = function ()
  12958. {
  12959. return true;
  12960. };
  12961. Cnds.prototype.PageVisible = function ()
  12962. {
  12963. return !this.runtime.isSuspended;
  12964. };
  12965. Cnds.prototype.OnPageVisible = function ()
  12966. {
  12967. return true;
  12968. };
  12969. Cnds.prototype.OnPageHidden = function ()
  12970. {
  12971. return true;
  12972. };
  12973. Cnds.prototype.OnResize = function ()
  12974. {
  12975. return true;
  12976. };
  12977. Cnds.prototype.IsFullscreen = function ()
  12978. {
  12979. return !!(document["mozFullScreen"] || document["webkitIsFullScreen"] || document["fullScreen"] || this.runtime.isNodeFullscreen);
  12980. };
  12981. Cnds.prototype.OnBackButton = function ()
  12982. {
  12983. return true;
  12984. };
  12985. Cnds.prototype.OnMenuButton = function ()
  12986. {
  12987. return true;
  12988. };
  12989. Cnds.prototype.OnSearchButton = function ()
  12990. {
  12991. return true;
  12992. };
  12993. Cnds.prototype.IsMetered = function ()
  12994. {
  12995. var connection = navigator["connection"] || navigator["mozConnection"] || navigator["webkitConnection"];
  12996. if (!connection)
  12997. return false;
  12998. return connection["metered"];
  12999. };
  13000. Cnds.prototype.IsCharging = function ()
  13001. {
  13002. var battery = navigator["battery"] || navigator["mozBattery"] || navigator["webkitBattery"];
  13003. if (!battery)
  13004. return true;
  13005. return battery["charging"];
  13006. };
  13007. Cnds.prototype.IsPortraitLandscape = function (p)
  13008. {
  13009. var current = (window.innerWidth <= window.innerHeight ? 0 : 1);
  13010. return current === p;
  13011. };
  13012. pluginProto.cnds = new Cnds();
  13013. function Acts() {};
  13014. Acts.prototype.Alert = function (msg)
  13015. {
  13016. if (!this.runtime.isDomFree)
  13017. alert(msg.toString());
  13018. };
  13019. Acts.prototype.Close = function ()
  13020. {
  13021. if (this.runtime.isCocoonJs)
  13022. CocoonJS["App"]["forceToFinish"]();
  13023. else if (window["tizen"])
  13024. window["tizen"]["application"]["getCurrentApplication"]()["exit"]();
  13025. else if (navigator["app"] && navigator["app"]["exitApp"])
  13026. navigator["app"]["exitApp"]();
  13027. else if (navigator["device"] && navigator["device"]["exitApp"])
  13028. navigator["device"]["exitApp"]();
  13029. else if (!this.is_arcade && !this.runtime.isDomFree)
  13030. window.close();
  13031. };
  13032. Acts.prototype.Focus = function ()
  13033. {
  13034. if (this.runtime.isNodeWebkit)
  13035. {
  13036. var win = window["nwgui"]["Window"]["get"]();
  13037. win["focus"]();
  13038. }
  13039. else if (!this.is_arcade && !this.runtime.isDomFree)
  13040. window.focus();
  13041. };
  13042. Acts.prototype.Blur = function ()
  13043. {
  13044. if (this.runtime.isNodeWebkit)
  13045. {
  13046. var win = window["nwgui"]["Window"]["get"]();
  13047. win["blur"]();
  13048. }
  13049. else if (!this.is_arcade && !this.runtime.isDomFree)
  13050. window.blur();
  13051. };
  13052. Acts.prototype.GoBack = function ()
  13053. {
  13054. if (navigator["app"] && navigator["app"]["backHistory"])
  13055. navigator["app"]["backHistory"]();
  13056. else if (!this.is_arcade && !this.runtime.isDomFree && window.back)
  13057. window.back();
  13058. };
  13059. Acts.prototype.GoForward = function ()
  13060. {
  13061. if (!this.is_arcade && !this.runtime.isDomFree && window.forward)
  13062. window.forward();
  13063. };
  13064. Acts.prototype.GoHome = function ()
  13065. {
  13066. if (!this.is_arcade && !this.runtime.isDomFree && window.home)
  13067. window.home();
  13068. };
  13069. Acts.prototype.GoToURL = function (url)
  13070. {
  13071. if (this.runtime.isCocoonJs)
  13072. CocoonJS["App"]["openURL"](url);
  13073. else if (!this.is_arcade && !this.runtime.isDomFree)
  13074. window.location = url;
  13075. };
  13076. Acts.prototype.GoToURLWindow = function (url, tag)
  13077. {
  13078. if (this.runtime.isCocoonJs)
  13079. CocoonJS["App"]["openURL"](url);
  13080. else if (!this.is_arcade && !this.runtime.isDomFree)
  13081. window.location.href=url;
  13082. };
  13083. Acts.prototype.Reload = function ()
  13084. {
  13085. if (!this.is_arcade && !this.runtime.isDomFree)
  13086. window.location.reload();
  13087. };
  13088. var firstRequestFullscreen = true;
  13089. var crruntime = null;
  13090. function onFullscreenError()
  13091. {
  13092. if (typeof jQuery !== "undefined")
  13093. {
  13094. crruntime["setSize"](jQuery(window).width(), jQuery(window).height());
  13095. }
  13096. };
  13097. Acts.prototype.RequestFullScreen = function (stretchmode)
  13098. {
  13099. if (this.runtime.isDomFree)
  13100. {
  13101. cr.logexport("[Construct 2] Requesting fullscreen is not supported on this platform - the request has been ignored");
  13102. return;
  13103. }
  13104. if (stretchmode >= 2)
  13105. stretchmode += 1;
  13106. if (stretchmode === 6)
  13107. stretchmode = 2;
  13108. if (this.runtime.isNodeWebkit)
  13109. {
  13110. if (!this.runtime.isNodeFullscreen)
  13111. {
  13112. window["nwgui"]["Window"]["get"]()["enterFullscreen"]();
  13113. this.runtime.isNodeFullscreen = true;
  13114. }
  13115. }
  13116. else
  13117. {
  13118. if (document["mozFullScreen"] || document["webkitIsFullScreen"] || !!document["msFullscreenElement"] || document["fullScreen"])
  13119. {
  13120. return;
  13121. }
  13122. this.runtime.fullscreen_scaling = (stretchmode >= 2 ? stretchmode : 0);
  13123. var elem = this.runtime.canvasdiv || this.runtime.canvas;
  13124. if (firstRequestFullscreen)
  13125. {
  13126. firstRequestFullscreen = false;
  13127. crruntime = this.runtime;
  13128. elem.addEventListener("mozfullscreenerror", onFullscreenError);
  13129. elem.addEventListener("webkitfullscreenerror", onFullscreenError);
  13130. elem.addEventListener("msfullscreenerror", onFullscreenError);
  13131. elem.addEventListener("fullscreenerror", onFullscreenError);
  13132. }
  13133. if (!cr.is_undefined(elem["requestFullscreen"]))
  13134. elem["requestFullscreen"]();
  13135. else if (!cr.is_undefined(elem["webkitRequestFullScreen"]))
  13136. {
  13137. if (typeof Element !== "undefined" && typeof Element["ALLOW_KEYBOARD_INPUT"] !== "undefined")
  13138. elem["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]);
  13139. else
  13140. elem["webkitRequestFullScreen"]();
  13141. }
  13142. else if (!cr.is_undefined(elem["mozRequestFullScreen"]))
  13143. elem["mozRequestFullScreen"]();
  13144. else if (!cr.is_undefined(elem["msRequestFullscreen"]))
  13145. elem["msRequestFullscreen"]();
  13146. }
  13147. };
  13148. Acts.prototype.CancelFullScreen = function ()
  13149. {
  13150. if (this.runtime.isDomFree)
  13151. {
  13152. cr.logexport("[Construct 2] Exiting fullscreen is not supported on this platform - the request has been ignored");
  13153. return;
  13154. }
  13155. if (this.runtime.isNodeWebkit)
  13156. {
  13157. if (this.runtime.isNodeFullscreen)
  13158. {
  13159. window["nwgui"]["Window"]["get"]()["leaveFullscreen"]();
  13160. this.runtime.isNodeFullscreen = false;
  13161. }
  13162. }
  13163. else
  13164. {
  13165. if (!cr.is_undefined(document["exitFullscreen"]))
  13166. document["exitFullscreen"]();
  13167. else if (!cr.is_undefined(document["webkitCancelFullScreen"]))
  13168. document["webkitCancelFullScreen"]();
  13169. else if (!cr.is_undefined(document["mozCancelFullScreen"]))
  13170. document["mozCancelFullScreen"]();
  13171. else if (!cr.is_undefined(document["msExitFullscreen"]))
  13172. document["msExitFullscreen"]();
  13173. }
  13174. };
  13175. Acts.prototype.Vibrate = function (pattern_)
  13176. {
  13177. try {
  13178. var arr = pattern_.split(",");
  13179. var i, len;
  13180. for (i = 0, len = arr.length; i < len; i++)
  13181. {
  13182. arr[i] = parseInt(arr[i], 10);
  13183. }
  13184. if (navigator["vibrate"])
  13185. navigator["vibrate"](arr);
  13186. else if (navigator["mozVibrate"])
  13187. navigator["mozVibrate"](arr);
  13188. else if (navigator["webkitVibrate"])
  13189. navigator["webkitVibrate"](arr);
  13190. else if (navigator["msVibrate"])
  13191. navigator["msVibrate"](arr);
  13192. }
  13193. catch (e) {}
  13194. };
  13195. Acts.prototype.InvokeDownload = function (url_, filename_)
  13196. {
  13197. var a = document.createElement("a");
  13198. if (typeof a.download === "undefined")
  13199. {
  13200. window.open(url_);
  13201. }
  13202. else
  13203. {
  13204. var body = document.getElementsByTagName("body")[0];
  13205. a.textContent = filename_;
  13206. a.href = url_;
  13207. a.download = filename_;
  13208. body.appendChild(a);
  13209. var clickEvent = document.createEvent("MouseEvent");
  13210. clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  13211. a.dispatchEvent(clickEvent);
  13212. body.removeChild(a);
  13213. }
  13214. };
  13215. Acts.prototype.InvokeDownloadString = function (str_, mimetype_, filename_)
  13216. {
  13217. var datauri = "data:" + mimetype_ + "," + encodeURIComponent(str_);
  13218. var a = document.createElement("a");
  13219. if (typeof a.download === "undefined")
  13220. {
  13221. window.open(datauri);
  13222. }
  13223. else
  13224. {
  13225. var body = document.getElementsByTagName("body")[0];
  13226. a.textContent = filename_;
  13227. a.href = datauri;
  13228. a.download = filename_;
  13229. body.appendChild(a);
  13230. var clickEvent = document.createEvent("MouseEvent");
  13231. clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  13232. a.dispatchEvent(clickEvent);
  13233. body.removeChild(a);
  13234. }
  13235. };
  13236. Acts.prototype.ConsoleLog = function (type_, msg_)
  13237. {
  13238. if (typeof console === "undefined")
  13239. return;
  13240. if (type_ === 0 && console.log)
  13241. console.log(msg_.toString());
  13242. if (type_ === 1 && console.warn)
  13243. console.warn(msg_.toString());
  13244. if (type_ === 2 && console.error)
  13245. console.error(msg_.toString());
  13246. };
  13247. Acts.prototype.ConsoleGroup = function (name_)
  13248. {
  13249. if (console && console.group)
  13250. console.group(name_);
  13251. };
  13252. Acts.prototype.ConsoleGroupEnd = function ()
  13253. {
  13254. if (console && console.groupEnd)
  13255. console.groupEnd();
  13256. };
  13257. Acts.prototype.ExecJs = function (js_)
  13258. {
  13259. if (eval)
  13260. eval(js_);
  13261. };
  13262. var orientations = [
  13263. "portrait",
  13264. "landscape",
  13265. "portrait-primary",
  13266. "portrait-secondary",
  13267. "landscape-primary",
  13268. "landscape-secondary"
  13269. ];
  13270. Acts.prototype.LockOrientation = function (o)
  13271. {
  13272. o = Math.floor(o);
  13273. if (o < 0 || o >= orientations.length)
  13274. return;
  13275. this.runtime.autoLockOrientation = false;
  13276. var orientation = orientations[o];
  13277. if (screen["lockOrientation"])
  13278. screen["lockOrientation"](orientation);
  13279. else if (screen["webkitLockOrientation"])
  13280. screen["webkitLockOrientation"](orientation);
  13281. else if (screen["mozLockOrientation"])
  13282. screen["mozLockOrientation"](orientation);
  13283. else if (screen["msLockOrientation"])
  13284. screen["msLockOrientation"](orientation);
  13285. };
  13286. Acts.prototype.UnlockOrientation = function ()
  13287. {
  13288. this.runtime.autoLockOrientation = false;
  13289. if (screen["unlockOrientation"])
  13290. screen["unlockOrientation"]();
  13291. else if (screen["webkitUnlockOrientation"])
  13292. screen["webkitUnlockOrientation"]();
  13293. else if (screen["mozUnlockOrientation"])
  13294. screen["mozUnlockOrientation"]();
  13295. else if (screen["msUnlockOrientation"])
  13296. screen["msUnlockOrientation"]();
  13297. };
  13298. pluginProto.acts = new Acts();
  13299. function Exps() {};
  13300. Exps.prototype.URL = function (ret)
  13301. {
  13302. ret.set_string(this.runtime.isDomFree ? "" : window.location.toString());
  13303. };
  13304. Exps.prototype.Protocol = function (ret)
  13305. {
  13306. ret.set_string(this.runtime.isDomFree ? "" : window.location.protocol);
  13307. };
  13308. Exps.prototype.Domain = function (ret)
  13309. {
  13310. ret.set_string(this.runtime.isDomFree ? "" : window.location.hostname);
  13311. };
  13312. Exps.prototype.PathName = function (ret)
  13313. {
  13314. ret.set_string(this.runtime.isDomFree ? "" : window.location.pathname);
  13315. };
  13316. Exps.prototype.Hash = function (ret)
  13317. {
  13318. ret.set_string(this.runtime.isDomFree ? "" : window.location.hash);
  13319. };
  13320. Exps.prototype.Referrer = function (ret)
  13321. {
  13322. ret.set_string(this.runtime.isDomFree ? "" : document.referrer);
  13323. };
  13324. Exps.prototype.Title = function (ret)
  13325. {
  13326. ret.set_string(this.runtime.isDomFree ? "" : document.title);
  13327. };
  13328. Exps.prototype.Name = function (ret)
  13329. {
  13330. ret.set_string(this.runtime.isDomFree ? "" : navigator.appName);
  13331. };
  13332. Exps.prototype.Version = function (ret)
  13333. {
  13334. ret.set_string(this.runtime.isDomFree ? "" : navigator.appVersion);
  13335. };
  13336. Exps.prototype.Language = function (ret)
  13337. {
  13338. if (navigator && navigator.language)
  13339. ret.set_string(navigator.language);
  13340. else
  13341. ret.set_string("");
  13342. };
  13343. Exps.prototype.Platform = function (ret)
  13344. {
  13345. ret.set_string(this.runtime.isDomFree ? "" : navigator.platform);
  13346. };
  13347. Exps.prototype.Product = function (ret)
  13348. {
  13349. if (navigator && navigator.product)
  13350. ret.set_string(navigator.product);
  13351. else
  13352. ret.set_string("");
  13353. };
  13354. Exps.prototype.Vendor = function (ret)
  13355. {
  13356. if (navigator && navigator.vendor)
  13357. ret.set_string(navigator.vendor);
  13358. else
  13359. ret.set_string("");
  13360. };
  13361. Exps.prototype.UserAgent = function (ret)
  13362. {
  13363. ret.set_string(this.runtime.isDomFree ? "" : navigator.userAgent);
  13364. };
  13365. Exps.prototype.QueryString = function (ret)
  13366. {
  13367. ret.set_string(this.runtime.isDomFree ? "" : window.location.search);
  13368. };
  13369. Exps.prototype.QueryParam = function (ret, paramname)
  13370. {
  13371. if (this.runtime.isDomFree)
  13372. {
  13373. ret.set_string("");
  13374. return;
  13375. }
  13376. var match = RegExp('[?&]' + paramname + '=([^&]*)').exec(window.location.search);
  13377. if (match)
  13378. ret.set_string(decodeURIComponent(match[1].replace(/\+/g, ' ')));
  13379. else
  13380. ret.set_string("");
  13381. };
  13382. Exps.prototype.Bandwidth = function (ret)
  13383. {
  13384. var connection = navigator["connection"] || navigator["mozConnection"] || navigator["webkitConnection"];
  13385. if (!connection)
  13386. ret.set_float(Number.POSITIVE_INFINITY);
  13387. else
  13388. ret.set_float(connection["bandwidth"]);
  13389. };
  13390. Exps.prototype.BatteryLevel = function (ret)
  13391. {
  13392. var battery = navigator["battery"] || navigator["mozBattery"] || navigator["webkitBattery"];
  13393. if (!battery)
  13394. ret.set_float(1);
  13395. else
  13396. ret.set_float(battery["level"]);
  13397. };
  13398. Exps.prototype.BatteryTimeLeft = function (ret)
  13399. {
  13400. var battery = navigator["battery"] || navigator["mozBattery"] || navigator["webkitBattery"];
  13401. if (!battery)
  13402. ret.set_float(Number.POSITIVE_INFINITY);
  13403. else
  13404. ret.set_float(battery["dischargingTime"]);
  13405. };
  13406. Exps.prototype.ExecJS = function (ret, js_)
  13407. {
  13408. if (!eval)
  13409. {
  13410. ret.set_any(0);
  13411. return;
  13412. }
  13413. var result = eval(js_);
  13414. if (typeof result === "number")
  13415. ret.set_any(result);
  13416. else if (typeof result === "string")
  13417. ret.set_any(result);
  13418. else if (typeof result === "boolean")
  13419. ret.set_any(result ? 1 : 0);
  13420. else
  13421. ret.set_any(0);
  13422. };
  13423. Exps.prototype.ScreenWidth = function (ret)
  13424. {
  13425. ret.set_int(screen.width);
  13426. };
  13427. Exps.prototype.ScreenHeight = function (ret)
  13428. {
  13429. ret.set_int(screen.height);
  13430. };
  13431. Exps.prototype.DevicePixelRatio = function (ret)
  13432. {
  13433. ret.set_float(this.runtime.devicePixelRatio);
  13434. };
  13435. pluginProto.exps = new Exps();
  13436. }());
  13437. ;
  13438. ;
  13439. cr.plugins_.Softgames = function(runtime)
  13440. {
  13441. this.runtime = runtime;
  13442. };
  13443. (function ()
  13444. {
  13445. var pluginProto = cr.plugins_.Softgames.prototype;
  13446. pluginProto.Type = function(plugin)
  13447. {
  13448. this.plugin = plugin;
  13449. this.runtime = plugin.runtime;
  13450. };
  13451. var typeProto = pluginProto.Type.prototype;
  13452. typeProto.onCreate = function()
  13453. {
  13454. };
  13455. pluginProto.Instance = function(type)
  13456. {
  13457. this.type = type;
  13458. this.runtime = type.runtime;
  13459. };
  13460. var instanceProto = pluginProto.Instance.prototype;
  13461. instanceProto.onCreate = function()
  13462. {
  13463. };
  13464. instanceProto.onDestroy = function ()
  13465. {
  13466. };
  13467. instanceProto.saveToJSON = function ()
  13468. {
  13469. return {
  13470. };
  13471. };
  13472. instanceProto.loadFromJSON = function (o)
  13473. {
  13474. };
  13475. instanceProto.draw = function(ctx)
  13476. {
  13477. };
  13478. instanceProto.drawGL = function (glw)
  13479. {
  13480. };
  13481. function Cnds() {};
  13482. Cnds.prototype.IsSuspended = function ()
  13483. {
  13484. return this.runtime.isSuspended;
  13485. };
  13486. pluginProto.cnds = new Cnds();
  13487. function Acts() {};
  13488. Acts.prototype.ConnectAPI = function ()
  13489. {
  13490. };
  13491. Acts.prototype.startGame = function ()
  13492. {
  13493. SG_Hooks.start();
  13494. };
  13495. Acts.prototype.levelUp = function ()
  13496. {
  13497. SG_Hooks.levelUp(window.c2_level, window.c2_score);
  13498. };
  13499. Acts.prototype.gameOver = function ()
  13500. {
  13501. SG_Hooks.gameOver(window.c2_level, window.c2_score);
  13502. };
  13503. /*Acts.prototype.ShowBanner = function ()
  13504. {
  13505. };
  13506. Acts.prototype.HideBanner = function ()
  13507. {
  13508. softgames.hideAllBanners(function() {});
  13509. };*/
  13510. pluginProto.acts = new Acts();
  13511. function Exps() {};
  13512. Exps.prototype.getLanguage = function (ret) // 'ret' must always be the first parameter - always return the expression's result through it!
  13513. {
  13514. ret.set_string(SG.lang);
  13515. };
  13516. pluginProto.exps = new Exps();
  13517. }());
  13518. ;
  13519. ;
  13520. cr.plugins_.Sprite = function(runtime)
  13521. {
  13522. this.runtime = runtime;
  13523. };
  13524. (function ()
  13525. {
  13526. var pluginProto = cr.plugins_.Sprite.prototype;
  13527. pluginProto.Type = function(plugin)
  13528. {
  13529. this.plugin = plugin;
  13530. this.runtime = plugin.runtime;
  13531. };
  13532. var typeProto = pluginProto.Type.prototype;
  13533. function frame_getDataUri()
  13534. {
  13535. if (this.datauri.length === 0)
  13536. {
  13537. var tmpcanvas = document.createElement("canvas");
  13538. tmpcanvas.width = this.width;
  13539. tmpcanvas.height = this.height;
  13540. var tmpctx = tmpcanvas.getContext("2d");
  13541. if (this.spritesheeted)
  13542. {
  13543. tmpctx.drawImage(this.texture_img, this.offx, this.offy, this.width, this.height,
  13544. 0, 0, this.width, this.height);
  13545. }
  13546. else
  13547. {
  13548. tmpctx.drawImage(this.texture_img, 0, 0, this.width, this.height);
  13549. }
  13550. this.datauri = tmpcanvas.toDataURL("image/png");
  13551. }
  13552. return this.datauri;
  13553. };
  13554. typeProto.onCreate = function()
  13555. {
  13556. if (this.is_family)
  13557. return;
  13558. var i, leni, j, lenj;
  13559. var anim, frame, animobj, frameobj, wt, uv;
  13560. this.all_frames = [];
  13561. this.has_loaded_textures = false;
  13562. for (i = 0, leni = this.animations.length; i < leni; i++)
  13563. {
  13564. anim = this.animations[i];
  13565. animobj = {};
  13566. animobj.name = anim[0];
  13567. animobj.speed = anim[1];
  13568. animobj.loop = anim[2];
  13569. animobj.repeatcount = anim[3];
  13570. animobj.repeatto = anim[4];
  13571. animobj.pingpong = anim[5];
  13572. animobj.sid = anim[6];
  13573. animobj.frames = [];
  13574. for (j = 0, lenj = anim[7].length; j < lenj; j++)
  13575. {
  13576. frame = anim[7][j];
  13577. frameobj = {};
  13578. frameobj.texture_file = frame[0];
  13579. frameobj.texture_filesize = frame[1];
  13580. frameobj.offx = frame[2];
  13581. frameobj.offy = frame[3];
  13582. frameobj.width = frame[4];
  13583. frameobj.height = frame[5];
  13584. frameobj.duration = frame[6];
  13585. frameobj.hotspotX = frame[7];
  13586. frameobj.hotspotY = frame[8];
  13587. frameobj.image_points = frame[9];
  13588. frameobj.poly_pts = frame[10];
  13589. frameobj.pixelformat = frame[11];
  13590. frameobj.spritesheeted = (frameobj.width !== 0);
  13591. frameobj.datauri = ""; // generated on demand and cached
  13592. frameobj.getDataUri = frame_getDataUri;
  13593. uv = {};
  13594. uv.left = 0;
  13595. uv.top = 0;
  13596. uv.right = 1;
  13597. uv.bottom = 1;
  13598. frameobj.sheetTex = uv;
  13599. frameobj.webGL_texture = null;
  13600. wt = this.runtime.findWaitingTexture(frame[0]);
  13601. if (wt)
  13602. {
  13603. frameobj.texture_img = wt;
  13604. }
  13605. else
  13606. {
  13607. frameobj.texture_img = new Image();
  13608. frameobj.texture_img["idtkLoadDisposed"] = true;
  13609. frameobj.texture_img.src = frame[0];
  13610. frameobj.texture_img.cr_src = frame[0];
  13611. frameobj.texture_img.cr_filesize = frame[1];
  13612. frameobj.texture_img.c2webGL_texture = null;
  13613. this.runtime.wait_for_textures.push(frameobj.texture_img);
  13614. }
  13615. cr.seal(frameobj);
  13616. animobj.frames.push(frameobj);
  13617. this.all_frames.push(frameobj);
  13618. }
  13619. cr.seal(animobj);
  13620. this.animations[i] = animobj; // swap array data for object
  13621. }
  13622. };
  13623. typeProto.updateAllCurrentTexture = function ()
  13624. {
  13625. var i, len, inst;
  13626. for (i = 0, len = this.instances.length; i < len; i++)
  13627. {
  13628. inst = this.instances[i];
  13629. inst.curWebGLTexture = inst.curFrame.webGL_texture;
  13630. }
  13631. };
  13632. typeProto.onLostWebGLContext = function ()
  13633. {
  13634. if (this.is_family)
  13635. return;
  13636. var i, len, frame;
  13637. for (i = 0, len = this.all_frames.length; i < len; ++i)
  13638. {
  13639. frame = this.all_frames[i];
  13640. frame.texture_img.c2webGL_texture = null;
  13641. frame.webGL_texture = null;
  13642. }
  13643. };
  13644. typeProto.onRestoreWebGLContext = function ()
  13645. {
  13646. if (this.is_family || !this.instances.length)
  13647. return;
  13648. var i, len, frame;
  13649. for (i = 0, len = this.all_frames.length; i < len; ++i)
  13650. {
  13651. frame = this.all_frames[i];
  13652. frame.webGL_texture = this.runtime.glwrap.loadTexture(frame.texture_img, false, this.runtime.linearSampling, frame.pixelformat);
  13653. }
  13654. this.updateAllCurrentTexture();
  13655. };
  13656. typeProto.loadTextures = function ()
  13657. {
  13658. if (this.is_family || this.has_loaded_textures || !this.runtime.glwrap)
  13659. return;
  13660. var i, len, frame;
  13661. for (i = 0, len = this.all_frames.length; i < len; ++i)
  13662. {
  13663. frame = this.all_frames[i];
  13664. frame.webGL_texture = this.runtime.glwrap.loadTexture(frame.texture_img, false, this.runtime.linearSampling, frame.pixelformat);
  13665. }
  13666. this.has_loaded_textures = true;
  13667. };
  13668. typeProto.unloadTextures = function ()
  13669. {
  13670. if (this.is_family || this.instances.length || !this.has_loaded_textures)
  13671. return;
  13672. var i, len, frame;
  13673. for (i = 0, len = this.all_frames.length; i < len; ++i)
  13674. {
  13675. frame = this.all_frames[i];
  13676. this.runtime.glwrap.deleteTexture(frame.webGL_texture);
  13677. }
  13678. this.has_loaded_textures = false;
  13679. };
  13680. var already_drawn_images = [];
  13681. typeProto.preloadCanvas2D = function (ctx)
  13682. {
  13683. var i, len, frameimg;
  13684. already_drawn_images.length = 0;
  13685. for (i = 0, len = this.all_frames.length; i < len; ++i)
  13686. {
  13687. frameimg = this.all_frames[i].texture_img;
  13688. if (already_drawn_images.indexOf(frameimg) !== -1)
  13689. continue;
  13690. ctx.drawImage(frameimg, 0, 0);
  13691. already_drawn_images.push(frameimg);
  13692. }
  13693. };
  13694. pluginProto.Instance = function(type)
  13695. {
  13696. this.type = type;
  13697. this.runtime = type.runtime;
  13698. var poly_pts = this.type.animations[0].frames[0].poly_pts;
  13699. if (this.recycled)
  13700. this.collision_poly.set_pts(poly_pts);
  13701. else
  13702. this.collision_poly = new cr.CollisionPoly(poly_pts);
  13703. };
  13704. var instanceProto = pluginProto.Instance.prototype;
  13705. instanceProto.onCreate = function()
  13706. {
  13707. this.visible = (this.properties[0] === 0); // 0=visible, 1=invisible
  13708. this.isTicking = false;
  13709. this.inAnimTrigger = false;
  13710. this.collisionsEnabled = (this.properties[3] !== 0);
  13711. if (!(this.type.animations.length === 1 && this.type.animations[0].frames.length === 1) && this.type.animations[0].speed !== 0)
  13712. {
  13713. this.runtime.tickMe(this);
  13714. this.isTicking = true;
  13715. }
  13716. this.cur_animation = this.getAnimationByName(this.properties[1]) || this.type.animations[0];
  13717. this.cur_frame = this.properties[2];
  13718. if (this.cur_frame < 0)
  13719. this.cur_frame = 0;
  13720. if (this.cur_frame >= this.cur_animation.frames.length)
  13721. this.cur_frame = this.cur_animation.frames.length - 1;
  13722. var curanimframe = this.cur_animation.frames[this.cur_frame];
  13723. this.collision_poly.set_pts(curanimframe.poly_pts);
  13724. this.hotspotX = curanimframe.hotspotX;
  13725. this.hotspotY = curanimframe.hotspotY;
  13726. this.cur_anim_speed = this.cur_animation.speed;
  13727. if (this.recycled)
  13728. this.animTimer.reset();
  13729. else
  13730. this.animTimer = new cr.KahanAdder();
  13731. this.frameStart = this.getNowTime();
  13732. this.animPlaying = true;
  13733. this.animRepeats = 0;
  13734. this.animForwards = true;
  13735. this.animTriggerName = "";
  13736. this.changeAnimName = "";
  13737. this.changeAnimFrom = 0;
  13738. this.changeAnimFrame = -1;
  13739. this.type.loadTextures();
  13740. var i, leni, j, lenj;
  13741. var anim, frame, uv, maintex;
  13742. for (i = 0, leni = this.type.animations.length; i < leni; i++)
  13743. {
  13744. anim = this.type.animations[i];
  13745. for (j = 0, lenj = anim.frames.length; j < lenj; j++)
  13746. {
  13747. frame = anim.frames[j];
  13748. if (frame.width === 0)
  13749. {
  13750. frame.width = frame.texture_img.width;
  13751. frame.height = frame.texture_img.height;
  13752. }
  13753. if (frame.spritesheeted)
  13754. {
  13755. maintex = frame.texture_img;
  13756. uv = frame.sheetTex;
  13757. uv.left = frame.offx / maintex.width;
  13758. uv.top = frame.offy / maintex.height;
  13759. uv.right = (frame.offx + frame.width) / maintex.width;
  13760. uv.bottom = (frame.offy + frame.height) / maintex.height;
  13761. if (frame.offx === 0 && frame.offy === 0 && frame.width === maintex.width && frame.height === maintex.height)
  13762. {
  13763. frame.spritesheeted = false;
  13764. }
  13765. }
  13766. }
  13767. }
  13768. this.curFrame = this.cur_animation.frames[this.cur_frame];
  13769. this.curWebGLTexture = this.curFrame.webGL_texture;
  13770. };
  13771. instanceProto.saveToJSON = function ()
  13772. {
  13773. var o = {
  13774. "a": this.cur_animation.sid,
  13775. "f": this.cur_frame,
  13776. "cas": this.cur_anim_speed,
  13777. "fs": this.frameStart,
  13778. "ar": this.animRepeats,
  13779. "at": this.animTimer.sum
  13780. };
  13781. if (!this.animPlaying)
  13782. o["ap"] = this.animPlaying;
  13783. if (!this.animForwards)
  13784. o["af"] = this.animForwards;
  13785. return o;
  13786. };
  13787. instanceProto.loadFromJSON = function (o)
  13788. {
  13789. var anim = this.getAnimationBySid(o["a"]);
  13790. if (anim)
  13791. this.cur_animation = anim;
  13792. this.cur_frame = o["f"];
  13793. if (this.cur_frame < 0)
  13794. this.cur_frame = 0;
  13795. if (this.cur_frame >= this.cur_animation.frames.length)
  13796. this.cur_frame = this.cur_animation.frames.length - 1;
  13797. this.cur_anim_speed = o["cas"];
  13798. this.frameStart = o["fs"];
  13799. this.animRepeats = o["ar"];
  13800. this.animTimer.reset();
  13801. this.animTimer.sum = o["at"];
  13802. this.animPlaying = o.hasOwnProperty("ap") ? o["ap"] : true;
  13803. this.animForwards = o.hasOwnProperty("af") ? o["af"] : true;
  13804. this.curFrame = this.cur_animation.frames[this.cur_frame];
  13805. this.curWebGLTexture = this.curFrame.webGL_texture;
  13806. this.collision_poly.set_pts(this.curFrame.poly_pts);
  13807. this.hotspotX = this.curFrame.hotspotX;
  13808. this.hotspotY = this.curFrame.hotspotY;
  13809. };
  13810. instanceProto.animationFinish = function (reverse)
  13811. {
  13812. this.cur_frame = reverse ? 0 : this.cur_animation.frames.length - 1;
  13813. this.animPlaying = false;
  13814. this.animTriggerName = this.cur_animation.name;
  13815. this.inAnimTrigger = true;
  13816. this.runtime.trigger(cr.plugins_.Sprite.prototype.cnds.OnAnyAnimFinished, this);
  13817. this.runtime.trigger(cr.plugins_.Sprite.prototype.cnds.OnAnimFinished, this);
  13818. this.inAnimTrigger = false;
  13819. this.animRepeats = 0;
  13820. };
  13821. instanceProto.getNowTime = function()
  13822. {
  13823. return this.animTimer.sum;
  13824. };
  13825. instanceProto.tick = function()
  13826. {
  13827. this.animTimer.add(this.runtime.getDt(this));
  13828. if (this.changeAnimName.length)
  13829. this.doChangeAnim();
  13830. if (this.changeAnimFrame >= 0)
  13831. this.doChangeAnimFrame();
  13832. var now = this.getNowTime();
  13833. var cur_animation = this.cur_animation;
  13834. var prev_frame = cur_animation.frames[this.cur_frame];
  13835. var next_frame;
  13836. var cur_frame_time = prev_frame.duration / this.cur_anim_speed;
  13837. if (this.animPlaying && now >= this.frameStart + cur_frame_time)
  13838. {
  13839. if (this.animForwards)
  13840. {
  13841. this.cur_frame++;
  13842. }
  13843. else
  13844. {
  13845. this.cur_frame--;
  13846. }
  13847. this.frameStart += cur_frame_time;
  13848. if (this.cur_frame >= cur_animation.frames.length)
  13849. {
  13850. if (cur_animation.pingpong)
  13851. {
  13852. this.animForwards = false;
  13853. this.cur_frame = cur_animation.frames.length - 2;
  13854. }
  13855. else if (cur_animation.loop)
  13856. {
  13857. this.cur_frame = cur_animation.repeatto;
  13858. }
  13859. else
  13860. {
  13861. this.animRepeats++;
  13862. if (this.animRepeats >= cur_animation.repeatcount)
  13863. {
  13864. this.animationFinish(false);
  13865. }
  13866. else
  13867. {
  13868. this.cur_frame = cur_animation.repeatto;
  13869. }
  13870. }
  13871. }
  13872. if (this.cur_frame < 0)
  13873. {
  13874. if (cur_animation.pingpong)
  13875. {
  13876. this.cur_frame = 1;
  13877. this.animForwards = true;
  13878. if (!cur_animation.loop)
  13879. {
  13880. this.animRepeats++;
  13881. if (this.animRepeats >= cur_animation.repeatcount)
  13882. {
  13883. this.animationFinish(true);
  13884. }
  13885. }
  13886. }
  13887. else
  13888. {
  13889. if (cur_animation.loop)
  13890. {
  13891. this.cur_frame = cur_animation.repeatto;
  13892. }
  13893. else
  13894. {
  13895. this.animRepeats++;
  13896. if (this.animRepeats >= cur_animation.repeatcount)
  13897. {
  13898. this.animationFinish(true);
  13899. }
  13900. else
  13901. {
  13902. this.cur_frame = cur_animation.repeatto;
  13903. }
  13904. }
  13905. }
  13906. }
  13907. if (this.cur_frame < 0)
  13908. this.cur_frame = 0;
  13909. else if (this.cur_frame >= cur_animation.frames.length)
  13910. this.cur_frame = cur_animation.frames.length - 1;
  13911. if (now > this.frameStart + (cur_animation.frames[this.cur_frame].duration / this.cur_anim_speed))
  13912. {
  13913. this.frameStart = now;
  13914. }
  13915. next_frame = cur_animation.frames[this.cur_frame];
  13916. this.OnFrameChanged(prev_frame, next_frame);
  13917. this.runtime.redraw = true;
  13918. }
  13919. };
  13920. instanceProto.getAnimationByName = function (name_)
  13921. {
  13922. var i, len, a;
  13923. for (i = 0, len = this.type.animations.length; i < len; i++)
  13924. {
  13925. a = this.type.animations[i];
  13926. if (cr.equals_nocase(a.name, name_))
  13927. return a;
  13928. }
  13929. return null;
  13930. };
  13931. instanceProto.getAnimationBySid = function (sid_)
  13932. {
  13933. var i, len, a;
  13934. for (i = 0, len = this.type.animations.length; i < len; i++)
  13935. {
  13936. a = this.type.animations[i];
  13937. if (a.sid === sid_)
  13938. return a;
  13939. }
  13940. return null;
  13941. };
  13942. instanceProto.doChangeAnim = function ()
  13943. {
  13944. var prev_frame = this.cur_animation.frames[this.cur_frame];
  13945. var anim = this.getAnimationByName(this.changeAnimName);
  13946. this.changeAnimName = "";
  13947. if (!anim)
  13948. return;
  13949. if (cr.equals_nocase(anim.name, this.cur_animation.name) && this.animPlaying)
  13950. return;
  13951. this.cur_animation = anim;
  13952. this.cur_anim_speed = anim.speed;
  13953. if (this.cur_frame < 0)
  13954. this.cur_frame = 0;
  13955. if (this.cur_frame >= this.cur_animation.frames.length)
  13956. this.cur_frame = this.cur_animation.frames.length - 1;
  13957. if (this.changeAnimFrom === 1)
  13958. this.cur_frame = 0;
  13959. this.animPlaying = true;
  13960. this.frameStart = this.getNowTime();
  13961. this.animForwards = true;
  13962. this.OnFrameChanged(prev_frame, this.cur_animation.frames[this.cur_frame]);
  13963. this.runtime.redraw = true;
  13964. };
  13965. instanceProto.doChangeAnimFrame = function ()
  13966. {
  13967. var prev_frame = this.cur_animation.frames[this.cur_frame];
  13968. var prev_frame_number = this.cur_frame;
  13969. this.cur_frame = cr.floor(this.changeAnimFrame);
  13970. if (this.cur_frame < 0)
  13971. this.cur_frame = 0;
  13972. if (this.cur_frame >= this.cur_animation.frames.length)
  13973. this.cur_frame = this.cur_animation.frames.length - 1;
  13974. if (prev_frame_number !== this.cur_frame)
  13975. {
  13976. this.OnFrameChanged(prev_frame, this.cur_animation.frames[this.cur_frame]);
  13977. this.frameStart = this.getNowTime();
  13978. this.runtime.redraw = true;
  13979. }
  13980. this.changeAnimFrame = -1;
  13981. };
  13982. instanceProto.OnFrameChanged = function (prev_frame, next_frame)
  13983. {
  13984. var oldw = prev_frame.width;
  13985. var oldh = prev_frame.height;
  13986. var neww = next_frame.width;
  13987. var newh = next_frame.height;
  13988. if (oldw != neww)
  13989. this.width *= (neww / oldw);
  13990. if (oldh != newh)
  13991. this.height *= (newh / oldh);
  13992. this.hotspotX = next_frame.hotspotX;
  13993. this.hotspotY = next_frame.hotspotY;
  13994. this.collision_poly.set_pts(next_frame.poly_pts);
  13995. this.set_bbox_changed();
  13996. this.curFrame = next_frame;
  13997. this.curWebGLTexture = next_frame.webGL_texture;
  13998. var i, len, b;
  13999. for (i = 0, len = this.behavior_insts.length; i < len; i++)
  14000. {
  14001. b = this.behavior_insts[i];
  14002. if (b.onSpriteFrameChanged)
  14003. b.onSpriteFrameChanged(prev_frame, next_frame);
  14004. }
  14005. this.runtime.trigger(cr.plugins_.Sprite.prototype.cnds.OnFrameChanged, this);
  14006. };
  14007. instanceProto.draw = function(ctx)
  14008. {
  14009. ctx.globalAlpha = this.opacity;
  14010. var cur_frame = this.curFrame;
  14011. var spritesheeted = cur_frame.spritesheeted;
  14012. var cur_image = cur_frame.texture_img;
  14013. var myx = this.x;
  14014. var myy = this.y;
  14015. var w = this.width;
  14016. var h = this.height;
  14017. if (this.angle === 0 && w >= 0 && h >= 0)
  14018. {
  14019. myx -= this.hotspotX * w;
  14020. myy -= this.hotspotY * h;
  14021. if (this.runtime.pixel_rounding)
  14022. {
  14023. myx = (myx + 0.5) | 0;
  14024. myy = (myy + 0.5) | 0;
  14025. }
  14026. if (spritesheeted)
  14027. {
  14028. ctx.drawImage(cur_image, cur_frame.offx, cur_frame.offy, cur_frame.width, cur_frame.height,
  14029. myx, myy, w, h);
  14030. }
  14031. else
  14032. {
  14033. ctx.drawImage(cur_image, myx, myy, w, h);
  14034. }
  14035. }
  14036. else
  14037. {
  14038. if (this.runtime.pixel_rounding)
  14039. {
  14040. myx = (myx + 0.5) | 0;
  14041. myy = (myy + 0.5) | 0;
  14042. }
  14043. ctx.save();
  14044. var widthfactor = w > 0 ? 1 : -1;
  14045. var heightfactor = h > 0 ? 1 : -1;
  14046. ctx.translate(myx, myy);
  14047. if (widthfactor !== 1 || heightfactor !== 1)
  14048. ctx.scale(widthfactor, heightfactor);
  14049. ctx.rotate(this.angle * widthfactor * heightfactor);
  14050. var drawx = 0 - (this.hotspotX * cr.abs(w))
  14051. var drawy = 0 - (this.hotspotY * cr.abs(h));
  14052. if (spritesheeted)
  14053. {
  14054. ctx.drawImage(cur_image, cur_frame.offx, cur_frame.offy, cur_frame.width, cur_frame.height,
  14055. drawx, drawy, cr.abs(w), cr.abs(h));
  14056. }
  14057. else
  14058. {
  14059. ctx.drawImage(cur_image, drawx, drawy, cr.abs(w), cr.abs(h));
  14060. }
  14061. ctx.restore();
  14062. }
  14063. /*
  14064. ctx.strokeStyle = "#f00";
  14065. ctx.lineWidth = 3;
  14066. ctx.beginPath();
  14067. this.collision_poly.cache_poly(this.width, this.height, this.angle);
  14068. var i, len, ax, ay, bx, by;
  14069. for (i = 0, len = this.collision_poly.pts_count; i < len; i++)
  14070. {
  14071. ax = this.collision_poly.pts_cache[i*2] + this.x;
  14072. ay = this.collision_poly.pts_cache[i*2+1] + this.y;
  14073. bx = this.collision_poly.pts_cache[((i+1)%len)*2] + this.x;
  14074. by = this.collision_poly.pts_cache[((i+1)%len)*2+1] + this.y;
  14075. ctx.moveTo(ax, ay);
  14076. ctx.lineTo(bx, by);
  14077. }
  14078. ctx.stroke();
  14079. ctx.closePath();
  14080. */
  14081. /*
  14082. if (this.behavior_insts.length >= 1 && this.behavior_insts[0].draw)
  14083. {
  14084. this.behavior_insts[0].draw(ctx);
  14085. }
  14086. */
  14087. };
  14088. instanceProto.drawGL = function(glw)
  14089. {
  14090. glw.setTexture(this.curWebGLTexture);
  14091. glw.setOpacity(this.opacity);
  14092. var cur_frame = this.curFrame;
  14093. var q = this.bquad;
  14094. if (this.runtime.pixel_rounding)
  14095. {
  14096. var ox = ((this.x + 0.5) | 0) - this.x;
  14097. var oy = ((this.y + 0.5) | 0) - this.y;
  14098. if (cur_frame.spritesheeted)
  14099. glw.quadTex(q.tlx + ox, q.tly + oy, q.trx + ox, q.try_ + oy, q.brx + ox, q.bry + oy, q.blx + ox, q.bly + oy, cur_frame.sheetTex);
  14100. else
  14101. glw.quad(q.tlx + ox, q.tly + oy, q.trx + ox, q.try_ + oy, q.brx + ox, q.bry + oy, q.blx + ox, q.bly + oy);
  14102. }
  14103. else
  14104. {
  14105. if (cur_frame.spritesheeted)
  14106. glw.quadTex(q.tlx, q.tly, q.trx, q.try_, q.brx, q.bry, q.blx, q.bly, cur_frame.sheetTex);
  14107. else
  14108. glw.quad(q.tlx, q.tly, q.trx, q.try_, q.brx, q.bry, q.blx, q.bly);
  14109. }
  14110. };
  14111. instanceProto.getImagePointIndexByName = function(name_)
  14112. {
  14113. var cur_frame = this.curFrame;
  14114. var i, len;
  14115. for (i = 0, len = cur_frame.image_points.length; i < len; i++)
  14116. {
  14117. if (cr.equals_nocase(name_, cur_frame.image_points[i][0]))
  14118. return i;
  14119. }
  14120. return -1;
  14121. };
  14122. instanceProto.getImagePoint = function(imgpt, getX)
  14123. {
  14124. var cur_frame = this.curFrame;
  14125. var image_points = cur_frame.image_points;
  14126. var index;
  14127. if (cr.is_string(imgpt))
  14128. index = this.getImagePointIndexByName(imgpt);
  14129. else
  14130. index = imgpt - 1; // 0 is origin
  14131. index = cr.floor(index);
  14132. if (index < 0 || index >= image_points.length)
  14133. return getX ? this.x : this.y; // return origin
  14134. var x = (image_points[index][1] - cur_frame.hotspotX) * this.width;
  14135. var y = image_points[index][2];
  14136. y = (y - cur_frame.hotspotY) * this.height;
  14137. var cosa = Math.cos(this.angle);
  14138. var sina = Math.sin(this.angle);
  14139. var x_temp = (x * cosa) - (y * sina);
  14140. y = (y * cosa) + (x * sina);
  14141. x = x_temp;
  14142. x += this.x;
  14143. y += this.y;
  14144. return getX ? x : y;
  14145. };
  14146. function Cnds() {};
  14147. var arrCache = [];
  14148. function allocArr()
  14149. {
  14150. if (arrCache.length)
  14151. return arrCache.pop();
  14152. else
  14153. return [0, 0, 0];
  14154. };
  14155. function freeArr(a)
  14156. {
  14157. a[0] = 0;
  14158. a[1] = 0;
  14159. a[2] = 0;
  14160. arrCache.push(a);
  14161. };
  14162. function makeCollKey(a, b)
  14163. {
  14164. if (a < b)
  14165. return "" + a + "," + b;
  14166. else
  14167. return "" + b + "," + a;
  14168. };
  14169. function collmemory_add(collmemory, a, b, tickcount)
  14170. {
  14171. var a_uid = a.uid;
  14172. var b_uid = b.uid;
  14173. var key = makeCollKey(a_uid, b_uid);
  14174. if (collmemory.hasOwnProperty(key))
  14175. {
  14176. collmemory[key][2] = tickcount;
  14177. return;
  14178. }
  14179. var arr = allocArr();
  14180. arr[0] = a_uid;
  14181. arr[1] = b_uid;
  14182. arr[2] = tickcount;
  14183. collmemory[key] = arr;
  14184. };
  14185. function collmemory_remove(collmemory, a, b)
  14186. {
  14187. var key = makeCollKey(a.uid, b.uid);
  14188. if (collmemory.hasOwnProperty(key))
  14189. {
  14190. freeArr(collmemory[key]);
  14191. delete collmemory[key];
  14192. }
  14193. };
  14194. function collmemory_removeInstance(collmemory, inst)
  14195. {
  14196. var uid = inst.uid;
  14197. var p, entry;
  14198. for (p in collmemory)
  14199. {
  14200. if (collmemory.hasOwnProperty(p))
  14201. {
  14202. entry = collmemory[p];
  14203. if (entry[0] === uid || entry[1] === uid)
  14204. {
  14205. freeArr(collmemory[p]);
  14206. delete collmemory[p];
  14207. }
  14208. }
  14209. }
  14210. };
  14211. var last_coll_tickcount = -2;
  14212. function collmemory_has(collmemory, a, b)
  14213. {
  14214. var key = makeCollKey(a.uid, b.uid);
  14215. if (collmemory.hasOwnProperty(key))
  14216. {
  14217. last_coll_tickcount = collmemory[key][2];
  14218. return true;
  14219. }
  14220. else
  14221. {
  14222. last_coll_tickcount = -2;
  14223. return false;
  14224. }
  14225. };
  14226. var candidates = [];
  14227. Cnds.prototype.OnCollision = function (rtype)
  14228. {
  14229. if (!rtype)
  14230. return false;
  14231. var runtime = this.runtime;
  14232. var cnd = runtime.getCurrentCondition();
  14233. var ltype = cnd.type;
  14234. if (!cnd.extra.collmemory)
  14235. {
  14236. cnd.extra.collmemory = {};
  14237. runtime.addDestroyCallback((function (collmemory) {
  14238. return function(inst) {
  14239. collmemory_removeInstance(collmemory, inst);
  14240. };
  14241. })(cnd.extra.collmemory));
  14242. }
  14243. var collmemory = cnd.extra.collmemory;
  14244. var lsol = ltype.getCurrentSol();
  14245. var rsol = rtype.getCurrentSol();
  14246. var linstances = lsol.getObjects();
  14247. var rinstances;
  14248. var l, linst, r, rinst;
  14249. var curlsol, currsol;
  14250. var tickcount = this.runtime.tickcount;
  14251. var lasttickcount = tickcount - 1;
  14252. var exists, run;
  14253. var current_event = runtime.getCurrentEventStack().current_event;
  14254. var orblock = current_event.orblock;
  14255. for (l = 0; l < linstances.length; l++)
  14256. {
  14257. linst = linstances[l];
  14258. if (rsol.select_all)
  14259. {
  14260. linst.update_bbox();
  14261. this.runtime.getCollisionCandidates(linst.layer, rtype, linst.bbox, candidates);
  14262. rinstances = candidates;
  14263. }
  14264. else
  14265. rinstances = rsol.getObjects();
  14266. for (r = 0; r < rinstances.length; r++)
  14267. {
  14268. rinst = rinstances[r];
  14269. if (runtime.testOverlap(linst, rinst) || runtime.checkRegisteredCollision(linst, rinst))
  14270. {
  14271. exists = collmemory_has(collmemory, linst, rinst);
  14272. run = (!exists || (last_coll_tickcount < lasttickcount));
  14273. collmemory_add(collmemory, linst, rinst, tickcount);
  14274. if (run)
  14275. {
  14276. runtime.pushCopySol(current_event.solModifiers);
  14277. curlsol = ltype.getCurrentSol();
  14278. currsol = rtype.getCurrentSol();
  14279. curlsol.select_all = false;
  14280. currsol.select_all = false;
  14281. if (ltype === rtype)
  14282. {
  14283. curlsol.instances.length = 2; // just use lsol, is same reference as rsol
  14284. curlsol.instances[0] = linst;
  14285. curlsol.instances[1] = rinst;
  14286. ltype.applySolToContainer();
  14287. }
  14288. else
  14289. {
  14290. curlsol.instances.length = 1;
  14291. currsol.instances.length = 1;
  14292. curlsol.instances[0] = linst;
  14293. currsol.instances[0] = rinst;
  14294. ltype.applySolToContainer();
  14295. rtype.applySolToContainer();
  14296. }
  14297. current_event.retrigger();
  14298. runtime.popSol(current_event.solModifiers);
  14299. }
  14300. }
  14301. else
  14302. {
  14303. collmemory_remove(collmemory, linst, rinst);
  14304. }
  14305. }
  14306. candidates.length = 0;
  14307. }
  14308. return false;
  14309. };
  14310. var rpicktype = null;
  14311. var rtopick = new cr.ObjectSet();
  14312. var needscollisionfinish = false;
  14313. function DoOverlapCondition(rtype, offx, offy)
  14314. {
  14315. if (!rtype)
  14316. return false;
  14317. var do_offset = (offx !== 0 || offy !== 0);
  14318. var oldx, oldy, ret = false, r, lenr, rinst;
  14319. var cnd = this.runtime.getCurrentCondition();
  14320. var ltype = cnd.type;
  14321. var inverted = cnd.inverted;
  14322. var rsol = rtype.getCurrentSol();
  14323. var orblock = this.runtime.getCurrentEventStack().current_event.orblock;
  14324. var rinstances;
  14325. if (rsol.select_all)
  14326. {
  14327. this.update_bbox();
  14328. this.runtime.getCollisionCandidates(this.layer, rtype, this.bbox, candidates);
  14329. rinstances = candidates;
  14330. }
  14331. else if (orblock)
  14332. rinstances = rsol.else_instances;
  14333. else
  14334. rinstances = rsol.instances;
  14335. rpicktype = rtype;
  14336. needscollisionfinish = (ltype !== rtype && !inverted);
  14337. if (do_offset)
  14338. {
  14339. oldx = this.x;
  14340. oldy = this.y;
  14341. this.x += offx;
  14342. this.y += offy;
  14343. this.set_bbox_changed();
  14344. }
  14345. for (r = 0, lenr = rinstances.length; r < lenr; r++)
  14346. {
  14347. rinst = rinstances[r];
  14348. if (this.runtime.testOverlap(this, rinst))
  14349. {
  14350. ret = true;
  14351. if (inverted)
  14352. break;
  14353. if (ltype !== rtype)
  14354. rtopick.add(rinst);
  14355. }
  14356. }
  14357. if (do_offset)
  14358. {
  14359. this.x = oldx;
  14360. this.y = oldy;
  14361. this.set_bbox_changed();
  14362. }
  14363. candidates.length = 0;
  14364. return ret;
  14365. };
  14366. typeProto.finish = function (do_pick)
  14367. {
  14368. if (!needscollisionfinish)
  14369. return;
  14370. if (do_pick)
  14371. {
  14372. var orblock = this.runtime.getCurrentEventStack().current_event.orblock;
  14373. var sol = rpicktype.getCurrentSol();
  14374. var topick = rtopick.valuesRef();
  14375. var i, len, inst;
  14376. if (sol.select_all)
  14377. {
  14378. sol.select_all = false;
  14379. sol.instances.length = topick.length;
  14380. for (i = 0, len = topick.length; i < len; i++)
  14381. {
  14382. sol.instances[i] = topick[i];
  14383. }
  14384. if (orblock)
  14385. {
  14386. sol.else_instances.length = 0;
  14387. for (i = 0, len = rpicktype.instances.length; i < len; i++)
  14388. {
  14389. inst = rpicktype.instances[i];
  14390. if (!rtopick.contains(inst))
  14391. sol.else_instances.push(inst);
  14392. }
  14393. }
  14394. }
  14395. else
  14396. {
  14397. if (orblock)
  14398. {
  14399. var initsize = sol.instances.length;
  14400. sol.instances.length = initsize + topick.length;
  14401. for (i = 0, len = topick.length; i < len; i++)
  14402. {
  14403. sol.instances[initsize + i] = topick[i];
  14404. cr.arrayFindRemove(sol.else_instances, topick[i]);
  14405. }
  14406. }
  14407. else
  14408. {
  14409. cr.shallowAssignArray(sol.instances, topick);
  14410. }
  14411. }
  14412. rpicktype.applySolToContainer();
  14413. }
  14414. rtopick.clear();
  14415. needscollisionfinish = false;
  14416. };
  14417. Cnds.prototype.IsOverlapping = function (rtype)
  14418. {
  14419. return DoOverlapCondition.call(this, rtype, 0, 0);
  14420. };
  14421. Cnds.prototype.IsOverlappingOffset = function (rtype, offx, offy)
  14422. {
  14423. return DoOverlapCondition.call(this, rtype, offx, offy);
  14424. };
  14425. Cnds.prototype.IsAnimPlaying = function (animname)
  14426. {
  14427. if (this.changeAnimName.length)
  14428. return cr.equals_nocase(this.changeAnimName, animname);
  14429. else
  14430. return cr.equals_nocase(this.cur_animation.name, animname);
  14431. };
  14432. Cnds.prototype.CompareFrame = function (cmp, framenum)
  14433. {
  14434. return cr.do_cmp(this.cur_frame, cmp, framenum);
  14435. };
  14436. Cnds.prototype.CompareAnimSpeed = function (cmp, x)
  14437. {
  14438. var s = (this.animForwards ? this.cur_anim_speed : -this.cur_anim_speed);
  14439. return cr.do_cmp(s, cmp, x);
  14440. };
  14441. Cnds.prototype.OnAnimFinished = function (animname)
  14442. {
  14443. return cr.equals_nocase(this.animTriggerName, animname);
  14444. };
  14445. Cnds.prototype.OnAnyAnimFinished = function ()
  14446. {
  14447. return true;
  14448. };
  14449. Cnds.prototype.OnFrameChanged = function ()
  14450. {
  14451. return true;
  14452. };
  14453. Cnds.prototype.IsMirrored = function ()
  14454. {
  14455. return this.width < 0;
  14456. };
  14457. Cnds.prototype.IsFlipped = function ()
  14458. {
  14459. return this.height < 0;
  14460. };
  14461. Cnds.prototype.OnURLLoaded = function ()
  14462. {
  14463. return true;
  14464. };
  14465. Cnds.prototype.IsCollisionEnabled = function ()
  14466. {
  14467. return this.collisionsEnabled;
  14468. };
  14469. pluginProto.cnds = new Cnds();
  14470. function Acts() {};
  14471. Acts.prototype.Spawn = function (obj, layer, imgpt)
  14472. {
  14473. if (!obj || !layer)
  14474. return;
  14475. var inst = this.runtime.createInstance(obj, layer, this.getImagePoint(imgpt, true), this.getImagePoint(imgpt, false));
  14476. if (!inst)
  14477. return;
  14478. if (typeof inst.angle !== "undefined")
  14479. {
  14480. inst.angle = this.angle;
  14481. inst.set_bbox_changed();
  14482. }
  14483. this.runtime.isInOnDestroy++;
  14484. var i, len, s;
  14485. this.runtime.trigger(Object.getPrototypeOf(obj.plugin).cnds.OnCreated, inst);
  14486. if (inst.is_contained)
  14487. {
  14488. for (i = 0, len = inst.siblings.length; i < len; i++)
  14489. {
  14490. s = inst.siblings[i];
  14491. this.runtime.trigger(Object.getPrototypeOf(s.type.plugin).cnds.OnCreated, s);
  14492. }
  14493. }
  14494. this.runtime.isInOnDestroy--;
  14495. var cur_act = this.runtime.getCurrentAction();
  14496. var reset_sol = false;
  14497. if (cr.is_undefined(cur_act.extra.Spawn_LastExec) || cur_act.extra.Spawn_LastExec < this.runtime.execcount)
  14498. {
  14499. reset_sol = true;
  14500. cur_act.extra.Spawn_LastExec = this.runtime.execcount;
  14501. }
  14502. var sol;
  14503. if (obj != this.type)
  14504. {
  14505. sol = obj.getCurrentSol();
  14506. sol.select_all = false;
  14507. if (reset_sol)
  14508. {
  14509. sol.instances.length = 1;
  14510. sol.instances[0] = inst;
  14511. }
  14512. else
  14513. sol.instances.push(inst);
  14514. if (inst.is_contained)
  14515. {
  14516. for (i = 0, len = inst.siblings.length; i < len; i++)
  14517. {
  14518. s = inst.siblings[i];
  14519. sol = s.type.getCurrentSol();
  14520. sol.select_all = false;
  14521. if (reset_sol)
  14522. {
  14523. sol.instances.length = 1;
  14524. sol.instances[0] = s;
  14525. }
  14526. else
  14527. sol.instances.push(s);
  14528. }
  14529. }
  14530. }
  14531. };
  14532. Acts.prototype.SetEffect = function (effect)
  14533. {
  14534. this.compositeOp = cr.effectToCompositeOp(effect);
  14535. cr.setGLBlend(this, effect, this.runtime.gl);
  14536. this.runtime.redraw = true;
  14537. };
  14538. Acts.prototype.StopAnim = function ()
  14539. {
  14540. this.animPlaying = false;
  14541. };
  14542. Acts.prototype.StartAnim = function (from)
  14543. {
  14544. this.animPlaying = true;
  14545. this.frameStart = this.getNowTime();
  14546. if (from === 1 && this.cur_frame !== 0)
  14547. {
  14548. this.changeAnimFrame = 0;
  14549. if (!this.inAnimTrigger)
  14550. this.doChangeAnimFrame();
  14551. }
  14552. if (!this.isTicking)
  14553. {
  14554. this.runtime.tickMe(this);
  14555. this.isTicking = true;
  14556. }
  14557. };
  14558. Acts.prototype.SetAnim = function (animname, from)
  14559. {
  14560. this.changeAnimName = animname;
  14561. this.changeAnimFrom = from;
  14562. if (!this.isTicking)
  14563. {
  14564. this.runtime.tickMe(this);
  14565. this.isTicking = true;
  14566. }
  14567. if (!this.inAnimTrigger)
  14568. this.doChangeAnim();
  14569. };
  14570. Acts.prototype.SetAnimFrame = function (framenumber)
  14571. {
  14572. this.changeAnimFrame = framenumber;
  14573. if (!this.isTicking)
  14574. {
  14575. this.runtime.tickMe(this);
  14576. this.isTicking = true;
  14577. }
  14578. if (!this.inAnimTrigger)
  14579. this.doChangeAnimFrame();
  14580. };
  14581. Acts.prototype.SetAnimSpeed = function (s)
  14582. {
  14583. this.cur_anim_speed = cr.abs(s);
  14584. this.animForwards = (s >= 0);
  14585. if (!this.isTicking)
  14586. {
  14587. this.runtime.tickMe(this);
  14588. this.isTicking = true;
  14589. }
  14590. };
  14591. Acts.prototype.SetMirrored = function (m)
  14592. {
  14593. var neww = cr.abs(this.width) * (m === 0 ? -1 : 1);
  14594. if (this.width === neww)
  14595. return;
  14596. this.width = neww;
  14597. this.set_bbox_changed();
  14598. };
  14599. Acts.prototype.SetFlipped = function (f)
  14600. {
  14601. var newh = cr.abs(this.height) * (f === 0 ? -1 : 1);
  14602. if (this.height === newh)
  14603. return;
  14604. this.height = newh;
  14605. this.set_bbox_changed();
  14606. };
  14607. Acts.prototype.SetScale = function (s)
  14608. {
  14609. var cur_frame = this.curFrame;
  14610. var mirror_factor = (this.width < 0 ? -1 : 1);
  14611. var flip_factor = (this.height < 0 ? -1 : 1);
  14612. var new_width = cur_frame.width * s * mirror_factor;
  14613. var new_height = cur_frame.height * s * flip_factor;
  14614. if (this.width !== new_width || this.height !== new_height)
  14615. {
  14616. this.width = new_width;
  14617. this.height = new_height;
  14618. this.set_bbox_changed();
  14619. }
  14620. };
  14621. Acts.prototype.LoadURL = function (url_, resize_)
  14622. {
  14623. var img = new Image();
  14624. var self = this;
  14625. var curFrame_ = this.curFrame;
  14626. img.onload = function ()
  14627. {
  14628. if (curFrame_.texture_img.src === img.src)
  14629. {
  14630. if (self.runtime.glwrap && self.curFrame === curFrame_)
  14631. self.curWebGLTexture = curFrame_.webGL_texture;
  14632. self.runtime.redraw = true;
  14633. self.runtime.trigger(cr.plugins_.Sprite.prototype.cnds.OnURLLoaded, self);
  14634. return;
  14635. }
  14636. curFrame_.texture_img = img;
  14637. curFrame_.offx = 0;
  14638. curFrame_.offy = 0;
  14639. curFrame_.width = img.width;
  14640. curFrame_.height = img.height;
  14641. curFrame_.spritesheeted = false;
  14642. curFrame_.datauri = "";
  14643. if (self.runtime.glwrap)
  14644. {
  14645. if (curFrame_.webGL_texture)
  14646. self.runtime.glwrap.deleteTexture(curFrame_.webGL_texture);
  14647. curFrame_.webGL_texture = self.runtime.glwrap.loadTexture(img, false, self.runtime.linearSampling);
  14648. if (self.curFrame === curFrame_)
  14649. self.curWebGLTexture = curFrame_.webGL_texture;
  14650. self.type.updateAllCurrentTexture();
  14651. }
  14652. if (resize_ === 0) // resize to image size
  14653. {
  14654. self.width = img.width;
  14655. self.height = img.height;
  14656. self.set_bbox_changed();
  14657. }
  14658. self.runtime.redraw = true;
  14659. self.runtime.trigger(cr.plugins_.Sprite.prototype.cnds.OnURLLoaded, self);
  14660. };
  14661. if (url_.substr(0, 5) !== "data:")
  14662. img.crossOrigin = 'anonymous';
  14663. img.src = url_;
  14664. };
  14665. Acts.prototype.SetCollisions = function (set_)
  14666. {
  14667. if (this.collisionsEnabled === (set_ !== 0))
  14668. return; // no change
  14669. this.collisionsEnabled = (set_ !== 0);
  14670. if (this.collisionsEnabled)
  14671. this.set_bbox_changed(); // needs to be added back to cells
  14672. else
  14673. {
  14674. if (this.collcells.right >= this.collcells.left)
  14675. this.type.collision_grid.update(this, this.collcells, null);
  14676. this.collcells.set(0, 0, -1, -1);
  14677. }
  14678. };
  14679. pluginProto.acts = new Acts();
  14680. function Exps() {};
  14681. Exps.prototype.AnimationFrame = function (ret)
  14682. {
  14683. ret.set_int(this.cur_frame);
  14684. };
  14685. Exps.prototype.AnimationFrameCount = function (ret)
  14686. {
  14687. ret.set_int(this.cur_animation.frames.length);
  14688. };
  14689. Exps.prototype.AnimationName = function (ret)
  14690. {
  14691. ret.set_string(this.cur_animation.name);
  14692. };
  14693. Exps.prototype.AnimationSpeed = function (ret)
  14694. {
  14695. ret.set_float(this.animForwards ? this.cur_anim_speed : -this.cur_anim_speed);
  14696. };
  14697. Exps.prototype.ImagePointX = function (ret, imgpt)
  14698. {
  14699. ret.set_float(this.getImagePoint(imgpt, true));
  14700. };
  14701. Exps.prototype.ImagePointY = function (ret, imgpt)
  14702. {
  14703. ret.set_float(this.getImagePoint(imgpt, false));
  14704. };
  14705. Exps.prototype.ImagePointCount = function (ret)
  14706. {
  14707. ret.set_int(this.curFrame.image_points.length);
  14708. };
  14709. Exps.prototype.ImageWidth = function (ret)
  14710. {
  14711. ret.set_float(this.curFrame.width);
  14712. };
  14713. Exps.prototype.ImageHeight = function (ret)
  14714. {
  14715. ret.set_float(this.curFrame.height);
  14716. };
  14717. pluginProto.exps = new Exps();
  14718. }());
  14719. /* global cr,log,assert2 */
  14720. /* jshint globalstrict: true */
  14721. /* jshint strict: true */
  14722. ;
  14723. ;
  14724. cr.plugins_.Spritefont2 = function(runtime)
  14725. {
  14726. this.runtime = runtime;
  14727. };
  14728. (function ()
  14729. {
  14730. var pluginProto = cr.plugins_.Spritefont2.prototype;
  14731. pluginProto.onCreate = function ()
  14732. {
  14733. };
  14734. pluginProto.Type = function(plugin)
  14735. {
  14736. this.plugin = plugin;
  14737. this.runtime = plugin.runtime;
  14738. };
  14739. var typeProto = pluginProto.Type.prototype;
  14740. typeProto.onCreate = function()
  14741. {
  14742. if (this.is_family)
  14743. return;
  14744. this.texture_img = new Image();
  14745. this.texture_img["idtkLoadDisposed"] = true;
  14746. this.texture_img.src = this.texture_file;
  14747. this.runtime.wait_for_textures.push(this.texture_img);
  14748. this.webGL_texture = null;
  14749. };
  14750. typeProto.onLostWebGLContext = function ()
  14751. {
  14752. if (this.is_family)
  14753. return;
  14754. this.webGL_texture = null;
  14755. };
  14756. typeProto.onRestoreWebGLContext = function ()
  14757. {
  14758. if (this.is_family || !this.instances.length)
  14759. return;
  14760. if (!this.webGL_texture)
  14761. {
  14762. this.webGL_texture = this.runtime.glwrap.loadTexture(this.texture_img, false, this.runtime.linearSampling, this.texture_pixelformat);
  14763. }
  14764. var i, len;
  14765. for (i = 0, len = this.instances.length; i < len; i++)
  14766. this.instances[i].webGL_texture = this.webGL_texture;
  14767. };
  14768. typeProto.unloadTextures = function ()
  14769. {
  14770. if (this.is_family || this.instances.length || !this.webGL_texture)
  14771. return;
  14772. this.runtime.glwrap.deleteTexture(this.webGL_texture);
  14773. this.webGL_texture = null;
  14774. };
  14775. typeProto.preloadCanvas2D = function (ctx)
  14776. {
  14777. ctx.drawImage(this.texture_img, 0, 0);
  14778. };
  14779. pluginProto.Instance = function(type)
  14780. {
  14781. this.type = type;
  14782. this.runtime = type.runtime;
  14783. };
  14784. var instanceProto = pluginProto.Instance.prototype;
  14785. instanceProto.onDestroy = function()
  14786. {
  14787. freeAllLines (this.lines);
  14788. freeAllClip (this.clipList);
  14789. freeAllClipUV(this.clipUV);
  14790. cr.wipe(this.characterWidthList);
  14791. };
  14792. instanceProto.onCreate = function()
  14793. {
  14794. this.texture_img = this.type.texture_img;
  14795. this.characterWidth = this.properties[0];
  14796. this.characterHeight = this.properties[1];
  14797. this.characterSet = this.properties[2];
  14798. this.text = this.properties[3];
  14799. this.characterScale = this.properties[4];
  14800. this.visible = (this.properties[5] === 0); // 0=visible, 1=invisible
  14801. this.halign = this.properties[6]/2.0; // 0=left, 1=center, 2=right
  14802. this.valign = this.properties[7]/2.0; // 0=top, 1=center, 2=bottom
  14803. this.wrapbyword = (this.properties[9] === 0); // 0=word, 1=character
  14804. this.characterSpacing = this.properties[10];
  14805. this.lineHeight = this.properties[11];
  14806. this.textWidth = 0;
  14807. this.textHeight = 0;
  14808. if (this.recycled)
  14809. {
  14810. this.lines.length = 0;
  14811. cr.wipe(this.clipList);
  14812. cr.wipe(this.clipUV);
  14813. cr.wipe(this.characterWidthList);
  14814. }
  14815. else
  14816. {
  14817. this.lines = [];
  14818. this.clipList = {};
  14819. this.clipUV = {};
  14820. this.characterWidthList = {};
  14821. }
  14822. this.text_changed = true;
  14823. this.lastwrapwidth = this.width;
  14824. if (this.runtime.glwrap)
  14825. {
  14826. if (!this.type.webGL_texture)
  14827. {
  14828. this.type.webGL_texture = this.runtime.glwrap.loadTexture(this.type.texture_img, false, this.runtime.linearSampling, this.type.texture_pixelformat);
  14829. }
  14830. this.webGL_texture = this.type.webGL_texture;
  14831. }
  14832. this.SplitSheet();
  14833. };
  14834. instanceProto.saveToJSON = function ()
  14835. {
  14836. var save = {
  14837. "t": this.text,
  14838. "csc": this.characterScale,
  14839. "csp": this.characterSpacing,
  14840. "lh": this.lineHeight,
  14841. "tw": this.textWidth,
  14842. "th": this.textHeight,
  14843. "lrt": this.last_render_tick,
  14844. "cw": {}
  14845. };
  14846. for (var ch in this.characterWidthList)
  14847. save["cw"][ch] = this.characterWidthList[ch];
  14848. return save;
  14849. };
  14850. instanceProto.loadFromJSON = function (o)
  14851. {
  14852. this.text = o["t"];
  14853. this.characterScale = o["csc"];
  14854. this.characterSpacing = o["csp"];
  14855. this.lineHeight = o["lh"];
  14856. this.textWidth = o["tw"];
  14857. this.textHeight = o["th"];
  14858. this.last_render_tick = o["lrt"];
  14859. for(var ch in o["cw"])
  14860. this.characterWidthList[ch] = o["cw"][ch];
  14861. this.text_changed = true;
  14862. this.lastwrapwidth = this.width;
  14863. };
  14864. function trimRight(text)
  14865. {
  14866. return text.replace(/\s\s*$/, '');
  14867. }
  14868. var MAX_CACHE_SIZE = 1000;
  14869. function alloc(cache,Constructor)
  14870. {
  14871. if (cache.length)
  14872. return cache.pop();
  14873. else
  14874. return new Constructor();
  14875. }
  14876. function free(cache,data)
  14877. {
  14878. if (cache.length < MAX_CACHE_SIZE)
  14879. {
  14880. cache.push(data);
  14881. }
  14882. }
  14883. function freeAll(cache,dataList,isArray)
  14884. {
  14885. if (isArray) {
  14886. var i, len;
  14887. for (i = 0, len = dataList.length; i < len; i++)
  14888. {
  14889. free(cache,dataList[i]);
  14890. }
  14891. dataList.length = 0;
  14892. } else {
  14893. var prop;
  14894. for(prop in dataList) {
  14895. if(Object.prototype.hasOwnProperty.call(dataList,prop)) {
  14896. free(cache,dataList[prop]);
  14897. delete dataList[prop];
  14898. }
  14899. }
  14900. }
  14901. }
  14902. function addLine(inst,lineIndex,cur_line) {
  14903. var lines = inst.lines;
  14904. var line;
  14905. cur_line = trimRight(cur_line);
  14906. if (lineIndex >= lines.length)
  14907. lines.push(allocLine());
  14908. line = lines[lineIndex];
  14909. line.text = cur_line;
  14910. line.width = inst.measureWidth(cur_line);
  14911. inst.textWidth = cr.max(inst.textWidth,line.width);
  14912. }
  14913. var linesCache = [];
  14914. function allocLine() { return alloc(linesCache,Object); }
  14915. function freeLine(l) { free(linesCache,l); }
  14916. function freeAllLines(arr) { freeAll(linesCache,arr,true); }
  14917. function addClip(obj,property,x,y,w,h) {
  14918. if (obj[property] === undefined) {
  14919. obj[property] = alloc(clipCache,Object);
  14920. }
  14921. obj[property].x = x;
  14922. obj[property].y = y;
  14923. obj[property].w = w;
  14924. obj[property].h = h;
  14925. }
  14926. var clipCache = [];
  14927. function allocClip() { return alloc(clipCache,Object); }
  14928. function freeAllClip(obj) { freeAll(clipCache,obj,false);}
  14929. function addClipUV(obj,property,left,top,right,bottom) {
  14930. if (obj[property] === undefined) {
  14931. obj[property] = alloc(clipUVCache,cr.rect);
  14932. }
  14933. obj[property].left = left;
  14934. obj[property].top = top;
  14935. obj[property].right = right;
  14936. obj[property].bottom = bottom;
  14937. }
  14938. var clipUVCache = [];
  14939. function allocClipUV() { return alloc(clipUVCache,cr.rect);}
  14940. function freeAllClipUV(obj) { freeAll(clipUVCache,obj,false);}
  14941. instanceProto.SplitSheet = function() {
  14942. var texture = this.texture_img;
  14943. var texWidth = texture.width;
  14944. var texHeight = texture.height;
  14945. var charWidth = this.characterWidth;
  14946. var charHeight = this.characterHeight;
  14947. var charU = charWidth /texWidth;
  14948. var charV = charHeight/texHeight;
  14949. var charSet = this.characterSet ;
  14950. var cols = Math.floor(texWidth/charWidth);
  14951. var rows = Math.floor(texHeight/charHeight);
  14952. for ( var c = 0; c < charSet.length; c++) {
  14953. if (c >= cols * rows) break;
  14954. var x = c%cols;
  14955. var y = Math.floor(c/cols);
  14956. var letter = charSet.charAt(c);
  14957. if (this.runtime.glwrap) {
  14958. addClipUV(
  14959. this.clipUV, letter,
  14960. x * charU ,
  14961. y * charV ,
  14962. (x+1) * charU ,
  14963. (y+1) * charV
  14964. );
  14965. } else {
  14966. addClip(
  14967. this.clipList, letter,
  14968. x * charWidth,
  14969. y * charHeight,
  14970. charWidth,
  14971. charHeight
  14972. );
  14973. }
  14974. }
  14975. };
  14976. /*
  14977. * Word-Wrapping
  14978. */
  14979. var wordsCache = [];
  14980. pluginProto.TokeniseWords = function (text)
  14981. {
  14982. wordsCache.length = 0;
  14983. var cur_word = "";
  14984. var ch;
  14985. var i = 0;
  14986. while (i < text.length)
  14987. {
  14988. ch = text.charAt(i);
  14989. if (ch === "\n")
  14990. {
  14991. if (cur_word.length)
  14992. {
  14993. wordsCache.push(cur_word);
  14994. cur_word = "";
  14995. }
  14996. wordsCache.push("\n");
  14997. ++i;
  14998. }
  14999. else if (ch === " " || ch === "\t" || ch === "-")
  15000. {
  15001. do {
  15002. cur_word += text.charAt(i);
  15003. i++;
  15004. }
  15005. while (i < text.length && (text.charAt(i) === " " || text.charAt(i) === "\t"));
  15006. wordsCache.push(cur_word);
  15007. cur_word = "";
  15008. }
  15009. else if (i < text.length)
  15010. {
  15011. cur_word += ch;
  15012. i++;
  15013. }
  15014. }
  15015. if (cur_word.length)
  15016. wordsCache.push(cur_word);
  15017. };
  15018. pluginProto.WordWrap = function (inst)
  15019. {
  15020. var text = inst.text;
  15021. var lines = inst.lines;
  15022. if (!text || !text.length)
  15023. {
  15024. freeAllLines(lines);
  15025. return;
  15026. }
  15027. var width = inst.width;
  15028. if (width <= 2.0)
  15029. {
  15030. freeAllLines(lines);
  15031. return;
  15032. }
  15033. var charWidth = inst.characterWidth;
  15034. var charScale = inst.characterScale;
  15035. var charSpacing = inst.characterSpacing;
  15036. if ( (text.length * (charWidth * charScale + charSpacing) - charSpacing) <= width && text.indexOf("\n") === -1)
  15037. {
  15038. var all_width = inst.measureWidth(text);
  15039. if (all_width <= width)
  15040. {
  15041. freeAllLines(lines);
  15042. lines.push(allocLine());
  15043. lines[0].text = text;
  15044. lines[0].width = all_width;
  15045. inst.textWidth = all_width;
  15046. inst.textHeight = inst.characterHeight * charScale + inst.lineHeight;
  15047. return;
  15048. }
  15049. }
  15050. var wrapbyword = inst.wrapbyword;
  15051. this.WrapText(inst);
  15052. inst.textHeight = lines.length * (inst.characterHeight * charScale + inst.lineHeight);
  15053. };
  15054. pluginProto.WrapText = function (inst)
  15055. {
  15056. var wrapbyword = inst.wrapbyword;
  15057. var text = inst.text;
  15058. var lines = inst.lines;
  15059. var width = inst.width;
  15060. var wordArray;
  15061. if (wrapbyword) {
  15062. this.TokeniseWords(text); // writes to wordsCache
  15063. wordArray = wordsCache;
  15064. } else {
  15065. wordArray = text;
  15066. }
  15067. var cur_line = "";
  15068. var prev_line;
  15069. var line_width;
  15070. var i;
  15071. var lineIndex = 0;
  15072. var line;
  15073. var ignore_newline = false;
  15074. for (i = 0; i < wordArray.length; i++)
  15075. {
  15076. if (wordArray[i] === "\n")
  15077. {
  15078. if (ignore_newline === true) {
  15079. ignore_newline = false;
  15080. } else {
  15081. addLine(inst,lineIndex,cur_line);
  15082. lineIndex++;
  15083. }
  15084. cur_line = "";
  15085. continue;
  15086. }
  15087. ignore_newline = false;
  15088. prev_line = cur_line;
  15089. cur_line += wordArray[i];
  15090. line_width = inst.measureWidth(trimRight(cur_line));
  15091. if (line_width > width)
  15092. {
  15093. if (prev_line === "") {
  15094. addLine(inst,lineIndex,cur_line);
  15095. cur_line = "";
  15096. ignore_newline = true;
  15097. } else {
  15098. addLine(inst,lineIndex,prev_line);
  15099. cur_line = wordArray[i];
  15100. }
  15101. lineIndex++;
  15102. if (!wrapbyword && cur_line === " ")
  15103. cur_line = "";
  15104. }
  15105. }
  15106. if (trimRight(cur_line).length)
  15107. {
  15108. addLine(inst,lineIndex,cur_line);
  15109. lineIndex++;
  15110. }
  15111. for (i = lineIndex; i < lines.length; i++)
  15112. freeLine(lines[i]);
  15113. lines.length = lineIndex;
  15114. };
  15115. instanceProto.measureWidth = function(text) {
  15116. var spacing = this.characterSpacing;
  15117. var len = text.length;
  15118. var width = 0;
  15119. for (var i = 0; i < len; i++) {
  15120. width += this.getCharacterWidth(text.charAt(i)) * this.characterScale + spacing;
  15121. }
  15122. width -= (width > 0) ? spacing : 0;
  15123. return width;
  15124. };
  15125. /***/
  15126. instanceProto.getCharacterWidth = function(character) {
  15127. var widthList = this.characterWidthList;
  15128. if (widthList[character] !== undefined) {
  15129. return widthList[character];
  15130. } else {
  15131. return this.characterWidth;
  15132. }
  15133. };
  15134. instanceProto.rebuildText = function() {
  15135. if (this.text_changed || this.width !== this.lastwrapwidth) {
  15136. this.textWidth = 0;
  15137. this.textHeight = 0;
  15138. this.type.plugin.WordWrap(this);
  15139. this.text_changed = false;
  15140. this.lastwrapwidth = this.width;
  15141. }
  15142. };
  15143. var EPSILON = 0.00001;
  15144. instanceProto.draw = function(ctx, glmode)
  15145. {
  15146. var texture = this.texture_img;
  15147. if (this.text !== "" && texture != null) {
  15148. this.rebuildText();
  15149. if (this.height < this.characterHeight*this.characterScale + this.lineHeight) {
  15150. return;
  15151. }
  15152. ctx.globalAlpha = this.opacity;
  15153. var myx = this.x;
  15154. var myy = this.y;
  15155. if (this.runtime.pixel_rounding)
  15156. {
  15157. myx = (myx + 0.5) | 0;
  15158. myy = (myy + 0.5) | 0;
  15159. }
  15160. ctx.save();
  15161. ctx.translate(myx, myy);
  15162. ctx.rotate(this.angle);
  15163. var ha = this.halign;
  15164. var va = this.valign;
  15165. var scale = this.characterScale;
  15166. var charHeight = this.characterHeight * scale;
  15167. var lineHeight = this.lineHeight;
  15168. var charSpace = this.characterSpacing;
  15169. var lines = this.lines;
  15170. var textHeight = this.textHeight;
  15171. var halign;
  15172. var valign = va * cr.max(0,(this.height - textHeight));
  15173. var offx = -(this.hotspotX * this.width);
  15174. var offy = -(this.hotspotY * this.height);
  15175. offy += valign;
  15176. var drawX ;
  15177. var drawY = offy;
  15178. for(var i = 0; i < lines.length; i++) {
  15179. var line = lines[i].text;
  15180. var len = lines[i].width;
  15181. halign = ha * cr.max(0,this.width - len);
  15182. drawX = offx + halign;
  15183. drawY += lineHeight;
  15184. for(var j = 0; j < line.length; j++) {
  15185. var letter = line.charAt(j);
  15186. var clip = this.clipList[letter];
  15187. if ( drawX + this.getCharacterWidth(letter) * scale > this.width + EPSILON ) {
  15188. break;
  15189. }
  15190. if (clip !== undefined) {
  15191. ctx.drawImage( this.texture_img,
  15192. clip.x, clip.y, clip.w, clip.h,
  15193. Math.round(drawX),Math.round(drawY),clip.w*scale,clip.h*scale);
  15194. }
  15195. drawX += this.getCharacterWidth(letter) * scale + charSpace;
  15196. }
  15197. drawY += charHeight;
  15198. if ( drawY + charHeight + lineHeight > this.height) {
  15199. break;
  15200. }
  15201. }
  15202. ctx.restore();
  15203. }
  15204. };
  15205. var dQuad = new cr.quad();
  15206. function rotateQuad(quad,cosa,sina) {
  15207. var x_temp;
  15208. x_temp = (quad.tlx * cosa) - (quad.tly * sina);
  15209. quad.tly = (quad.tly * cosa) + (quad.tlx * sina);
  15210. quad.tlx = x_temp;
  15211. x_temp = (quad.trx * cosa) - (quad.try_ * sina);
  15212. quad.try_ = (quad.try_ * cosa) + (quad.trx * sina);
  15213. quad.trx = x_temp;
  15214. x_temp = (quad.blx * cosa) - (quad.bly * sina);
  15215. quad.bly = (quad.bly * cosa) + (quad.blx * sina);
  15216. quad.blx = x_temp;
  15217. x_temp = (quad.brx * cosa) - (quad.bry * sina);
  15218. quad.bry = (quad.bry * cosa) + (quad.brx * sina);
  15219. quad.brx = x_temp;
  15220. }
  15221. instanceProto.drawGL = function(glw)
  15222. {
  15223. glw.setTexture(this.webGL_texture);
  15224. glw.setOpacity(this.opacity);
  15225. if (this.text !== "") {
  15226. this.rebuildText();
  15227. if (this.height < this.characterHeight*this.characterScale + this.lineHeight) {
  15228. return;
  15229. }
  15230. this.update_bbox();
  15231. var q = this.bquad;
  15232. var ox = 0;
  15233. var oy = 0;
  15234. if (this.runtime.pixel_rounding)
  15235. {
  15236. ox = ((this.x + 0.5) | 0) - this.x;
  15237. oy = ((this.y + 0.5) | 0) - this.y;
  15238. }
  15239. var angle = this.angle;
  15240. var ha = this.halign;
  15241. var va = this.valign;
  15242. var scale = this.characterScale;
  15243. var charHeight = this.characterHeight * scale; // to precalculate in onCreate or on change
  15244. var lineHeight = this.lineHeight;
  15245. var charSpace = this.characterSpacing;
  15246. var lines = this.lines;
  15247. var textHeight = this.textHeight;
  15248. var cosa,sina;
  15249. if (angle !== 0)
  15250. {
  15251. cosa = Math.cos(angle);
  15252. sina = Math.sin(angle);
  15253. }
  15254. var halign;
  15255. var valign = va * cr.max(0,(this.height - textHeight));
  15256. var offx = q.tlx + ox;
  15257. var offy = q.tly + oy;
  15258. var drawX ;
  15259. var drawY = valign;
  15260. for(var i = 0; i < lines.length; i++) {
  15261. var line = lines[i].text;
  15262. var lineWidth = lines[i].width;
  15263. halign = ha * cr.max(0,this.width - lineWidth);
  15264. drawX = halign;
  15265. drawY += lineHeight;
  15266. for(var j = 0; j < line.length; j++) {
  15267. var letter = line.charAt(j);
  15268. var clipUV = this.clipUV[letter];
  15269. if ( drawX + this.getCharacterWidth(letter) * scale > this.width + EPSILON) {
  15270. break;
  15271. }
  15272. if (clipUV !== undefined) {
  15273. var clipWidth = this.characterWidth*scale;
  15274. var clipHeight = this.characterHeight*scale;
  15275. dQuad.tlx = drawX;
  15276. dQuad.tly = drawY;
  15277. dQuad.trx = drawX + clipWidth;
  15278. dQuad.try_ = drawY ;
  15279. dQuad.blx = drawX;
  15280. dQuad.bly = drawY + clipHeight;
  15281. dQuad.brx = drawX + clipWidth;
  15282. dQuad.bry = drawY + clipHeight;
  15283. if(angle !== 0)
  15284. {
  15285. rotateQuad(dQuad,cosa,sina);
  15286. }
  15287. dQuad.offset(offx,offy);
  15288. glw.quadTex(
  15289. dQuad.tlx, dQuad.tly,
  15290. dQuad.trx, dQuad.try_,
  15291. dQuad.brx, dQuad.bry,
  15292. dQuad.blx, dQuad.bly,
  15293. clipUV
  15294. );
  15295. }
  15296. drawX += this.getCharacterWidth(letter) * scale + charSpace;
  15297. }
  15298. drawY += charHeight;
  15299. if ( drawY + charHeight + lineHeight > this.height) {
  15300. break;
  15301. }
  15302. }
  15303. }
  15304. };
  15305. function Cnds() {}
  15306. Cnds.prototype.CompareText = function(text_to_compare, case_sensitive)
  15307. {
  15308. if (case_sensitive)
  15309. return this.text == text_to_compare;
  15310. else
  15311. return cr.equals_nocase(this.text, text_to_compare);
  15312. };
  15313. pluginProto.cnds = new Cnds();
  15314. function Acts() {}
  15315. Acts.prototype.SetText = function(param)
  15316. {
  15317. if (cr.is_number(param) && param < 1e9)
  15318. param = Math.round(param * 1e10) / 1e10; // round to nearest ten billionth - hides floating point errors
  15319. var text_to_set = param.toString();
  15320. if (this.text !== text_to_set)
  15321. {
  15322. this.text = text_to_set;
  15323. this.text_changed = true;
  15324. this.runtime.redraw = true;
  15325. }
  15326. };
  15327. Acts.prototype.AppendText = function(param)
  15328. {
  15329. if (cr.is_number(param))
  15330. param = Math.round(param * 1e10) / 1e10; // round to nearest ten billionth - hides floating point errors
  15331. var text_to_append = param.toString();
  15332. if (text_to_append) // not empty
  15333. {
  15334. this.text += text_to_append;
  15335. this.text_changed = true;
  15336. this.runtime.redraw = true;
  15337. }
  15338. };
  15339. Acts.prototype.SetScale = function(param)
  15340. {
  15341. if (param !== this.characterScale) {
  15342. this.characterScale = param;
  15343. this.text_changed = true;
  15344. this.runtime.redraw = true;
  15345. }
  15346. };
  15347. Acts.prototype.SetCharacterSpacing = function(param)
  15348. {
  15349. if (param !== this.CharacterSpacing) {
  15350. this.characterSpacing = param;
  15351. this.text_changed = true;
  15352. this.runtime.redraw = true;
  15353. }
  15354. };
  15355. Acts.prototype.SetLineHeight = function(param)
  15356. {
  15357. if (param !== this.lineHeight) {
  15358. this.lineHeight = param;
  15359. this.text_changed = true;
  15360. this.runtime.redraw = true;
  15361. }
  15362. };
  15363. instanceProto.SetCharWidth = function(character,width) {
  15364. var w = parseInt(width,10);
  15365. if (this.characterWidthList[character] !== w) {
  15366. this.characterWidthList[character] = w;
  15367. this.text_changed = true;
  15368. this.runtime.redraw = true;
  15369. }
  15370. };
  15371. Acts.prototype.SetCharacterWidth = function(characterSet,width)
  15372. {
  15373. if (characterSet !== "") {
  15374. for(var c = 0; c < characterSet.length; c++) {
  15375. this.SetCharWidth(characterSet.charAt(c),width);
  15376. }
  15377. }
  15378. };
  15379. Acts.prototype.SetEffect = function (effect)
  15380. {
  15381. this.compositeOp = cr.effectToCompositeOp(effect);
  15382. cr.setGLBlend(this, effect, this.runtime.gl);
  15383. this.runtime.redraw = true;
  15384. };
  15385. Acts.prototype.SetHAlign = function (a)
  15386. {
  15387. this.halign = a / 2.0;
  15388. this.text_changed = true;
  15389. this.runtime.redraw = true;
  15390. };
  15391. Acts.prototype.SetVAlign = function (a)
  15392. {
  15393. this.valign = a / 2.0;
  15394. this.text_changed = true;
  15395. this.runtime.redraw = true;
  15396. };
  15397. pluginProto.acts = new Acts();
  15398. function Exps() {}
  15399. Exps.prototype.CharacterWidth = function(ret,character)
  15400. {
  15401. ret.set_int(this.getCharacterWidth(character));
  15402. };
  15403. Exps.prototype.CharacterHeight = function(ret)
  15404. {
  15405. ret.set_int(this.characterHeight);
  15406. };
  15407. Exps.prototype.CharacterScale = function(ret)
  15408. {
  15409. ret.set_float(this.characterScale);
  15410. };
  15411. Exps.prototype.CharacterSpacing = function(ret)
  15412. {
  15413. ret.set_int(this.characterSpacing);
  15414. };
  15415. Exps.prototype.LineHeight = function(ret)
  15416. {
  15417. ret.set_int(this.lineHeight);
  15418. };
  15419. Exps.prototype.Text = function(ret)
  15420. {
  15421. ret.set_string(this.text);
  15422. };
  15423. Exps.prototype.TextWidth = function (ret)
  15424. {
  15425. this.rebuildText();
  15426. ret.set_float(this.textWidth);
  15427. };
  15428. Exps.prototype.TextHeight = function (ret)
  15429. {
  15430. this.rebuildText();
  15431. ret.set_float(this.textHeight);
  15432. };
  15433. pluginProto.exps = new Exps();
  15434. }());
  15435. ;
  15436. ;
  15437. cr.plugins_.TiledBg = function(runtime)
  15438. {
  15439. this.runtime = runtime;
  15440. };
  15441. (function ()
  15442. {
  15443. var pluginProto = cr.plugins_.TiledBg.prototype;
  15444. pluginProto.Type = function(plugin)
  15445. {
  15446. this.plugin = plugin;
  15447. this.runtime = plugin.runtime;
  15448. };
  15449. var typeProto = pluginProto.Type.prototype;
  15450. typeProto.onCreate = function()
  15451. {
  15452. if (this.is_family)
  15453. return;
  15454. this.texture_img = new Image();
  15455. this.texture_img["idtkLoadDisposed"] = true;
  15456. this.texture_img.src = this.texture_file;
  15457. this.texture_img.cr_filesize = this.texture_filesize;
  15458. this.runtime.wait_for_textures.push(this.texture_img);
  15459. this.pattern = null;
  15460. this.webGL_texture = null;
  15461. };
  15462. typeProto.onLostWebGLContext = function ()
  15463. {
  15464. if (this.is_family)
  15465. return;
  15466. this.webGL_texture = null;
  15467. };
  15468. typeProto.onRestoreWebGLContext = function ()
  15469. {
  15470. if (this.is_family || !this.instances.length)
  15471. return;
  15472. if (!this.webGL_texture)
  15473. {
  15474. this.webGL_texture = this.runtime.glwrap.loadTexture(this.texture_img, true, this.runtime.linearSampling, this.texture_pixelformat);
  15475. }
  15476. var i, len;
  15477. for (i = 0, len = this.instances.length; i < len; i++)
  15478. this.instances[i].webGL_texture = this.webGL_texture;
  15479. };
  15480. typeProto.loadTextures = function ()
  15481. {
  15482. if (this.is_family || this.webGL_texture || !this.runtime.glwrap)
  15483. return;
  15484. this.webGL_texture = this.runtime.glwrap.loadTexture(this.texture_img, true, this.runtime.linearSampling, this.texture_pixelformat);
  15485. };
  15486. typeProto.unloadTextures = function ()
  15487. {
  15488. if (this.is_family || this.instances.length || !this.webGL_texture)
  15489. return;
  15490. this.runtime.glwrap.deleteTexture(this.webGL_texture);
  15491. this.webGL_texture = null;
  15492. };
  15493. typeProto.preloadCanvas2D = function (ctx)
  15494. {
  15495. ctx.drawImage(this.texture_img, 0, 0);
  15496. };
  15497. pluginProto.Instance = function(type)
  15498. {
  15499. this.type = type;
  15500. this.runtime = type.runtime;
  15501. };
  15502. var instanceProto = pluginProto.Instance.prototype;
  15503. instanceProto.onCreate = function()
  15504. {
  15505. this.visible = (this.properties[0] === 0); // 0=visible, 1=invisible
  15506. this.rcTex = new cr.rect(0, 0, 0, 0);
  15507. this.has_own_texture = false; // true if a texture loaded in from URL
  15508. this.texture_img = this.type.texture_img;
  15509. if (this.runtime.glwrap)
  15510. {
  15511. this.type.loadTextures();
  15512. this.webGL_texture = this.type.webGL_texture;
  15513. }
  15514. else
  15515. {
  15516. if (!this.type.pattern)
  15517. this.type.pattern = this.runtime.ctx.createPattern(this.type.texture_img, "repeat");
  15518. this.pattern = this.type.pattern;
  15519. }
  15520. };
  15521. instanceProto.afterLoad = function ()
  15522. {
  15523. this.has_own_texture = false;
  15524. this.texture_img = this.type.texture_img;
  15525. };
  15526. instanceProto.onDestroy = function ()
  15527. {
  15528. if (this.runtime.glwrap && this.has_own_texture && this.webGL_texture)
  15529. {
  15530. this.runtime.glwrap.deleteTexture(this.webGL_texture);
  15531. this.webGL_texture = null;
  15532. }
  15533. };
  15534. instanceProto.draw = function(ctx)
  15535. {
  15536. ctx.globalAlpha = this.opacity;
  15537. ctx.save();
  15538. ctx.fillStyle = this.pattern;
  15539. var myx = this.x;
  15540. var myy = this.y;
  15541. if (this.runtime.pixel_rounding)
  15542. {
  15543. myx = (myx + 0.5) | 0;
  15544. myy = (myy + 0.5) | 0;
  15545. }
  15546. var drawX = -(this.hotspotX * this.width);
  15547. var drawY = -(this.hotspotY * this.height);
  15548. var offX = drawX % this.texture_img.width;
  15549. var offY = drawY % this.texture_img.height;
  15550. if (offX < 0)
  15551. offX += this.texture_img.width;
  15552. if (offY < 0)
  15553. offY += this.texture_img.height;
  15554. ctx.translate(myx, myy);
  15555. ctx.rotate(this.angle);
  15556. ctx.translate(offX, offY);
  15557. ctx.fillRect(drawX - offX,
  15558. drawY - offY,
  15559. this.width,
  15560. this.height);
  15561. ctx.restore();
  15562. };
  15563. instanceProto.drawGL = function(glw)
  15564. {
  15565. glw.setTexture(this.webGL_texture);
  15566. glw.setOpacity(this.opacity);
  15567. var rcTex = this.rcTex;
  15568. rcTex.right = this.width / this.texture_img.width;
  15569. rcTex.bottom = this.height / this.texture_img.height;
  15570. var q = this.bquad;
  15571. if (this.runtime.pixel_rounding)
  15572. {
  15573. var ox = ((this.x + 0.5) | 0) - this.x;
  15574. var oy = ((this.y + 0.5) | 0) - this.y;
  15575. glw.quadTex(q.tlx + ox, q.tly + oy, q.trx + ox, q.try_ + oy, q.brx + ox, q.bry + oy, q.blx + ox, q.bly + oy, rcTex);
  15576. }
  15577. else
  15578. glw.quadTex(q.tlx, q.tly, q.trx, q.try_, q.brx, q.bry, q.blx, q.bly, rcTex);
  15579. };
  15580. function Cnds() {};
  15581. Cnds.prototype.OnURLLoaded = function ()
  15582. {
  15583. return true;
  15584. };
  15585. pluginProto.cnds = new Cnds();
  15586. function Acts() {};
  15587. Acts.prototype.SetEffect = function (effect)
  15588. {
  15589. this.compositeOp = cr.effectToCompositeOp(effect);
  15590. cr.setGLBlend(this, effect, this.runtime.gl);
  15591. this.runtime.redraw = true;
  15592. };
  15593. Acts.prototype.LoadURL = function (url_)
  15594. {
  15595. var img = new Image();
  15596. var self = this;
  15597. img.onload = function ()
  15598. {
  15599. self.texture_img = img;
  15600. if (self.runtime.glwrap)
  15601. {
  15602. if (self.has_own_texture && self.webGL_texture)
  15603. self.runtime.glwrap.deleteTexture(self.webGL_texture);
  15604. self.webGL_texture = self.runtime.glwrap.loadTexture(img, true, self.runtime.linearSampling);
  15605. }
  15606. else
  15607. {
  15608. self.pattern = self.runtime.ctx.createPattern(img, "repeat");
  15609. }
  15610. self.has_own_texture = true;
  15611. self.runtime.redraw = true;
  15612. self.runtime.trigger(cr.plugins_.TiledBg.prototype.cnds.OnURLLoaded, self);
  15613. };
  15614. if (url_.substr(0, 5) !== "data:")
  15615. img.crossOrigin = 'anonymous';
  15616. img.src = url_;
  15617. };
  15618. pluginProto.acts = new Acts();
  15619. function Exps() {};
  15620. Exps.prototype.ImageWidth = function (ret)
  15621. {
  15622. ret.set_float(this.texture_img.width);
  15623. };
  15624. Exps.prototype.ImageHeight = function (ret)
  15625. {
  15626. ret.set_float(this.texture_img.height);
  15627. };
  15628. pluginProto.exps = new Exps();
  15629. }());
  15630. ;
  15631. ;
  15632. cr.plugins_.Touch = function(runtime)
  15633. {
  15634. this.runtime = runtime;
  15635. };
  15636. (function ()
  15637. {
  15638. var pluginProto = cr.plugins_.Touch.prototype;
  15639. pluginProto.Type = function(plugin)
  15640. {
  15641. this.plugin = plugin;
  15642. this.runtime = plugin.runtime;
  15643. };
  15644. var typeProto = pluginProto.Type.prototype;
  15645. typeProto.onCreate = function()
  15646. {
  15647. };
  15648. pluginProto.Instance = function(type)
  15649. {
  15650. this.type = type;
  15651. this.runtime = type.runtime;
  15652. this.touches = [];
  15653. this.mouseDown = false;
  15654. };
  15655. var instanceProto = pluginProto.Instance.prototype;
  15656. var dummyoffset = {left: 0, top: 0};
  15657. instanceProto.findTouch = function (id)
  15658. {
  15659. var i, len;
  15660. for (i = 0, len = this.touches.length; i < len; i++)
  15661. {
  15662. if (this.touches[i]["id"] === id)
  15663. return i;
  15664. }
  15665. return -1;
  15666. };
  15667. var appmobi_accx = 0;
  15668. var appmobi_accy = 0;
  15669. var appmobi_accz = 0;
  15670. function AppMobiGetAcceleration(evt)
  15671. {
  15672. appmobi_accx = evt.x;
  15673. appmobi_accy = evt.y;
  15674. appmobi_accz = evt.z;
  15675. };
  15676. var pg_accx = 0;
  15677. var pg_accy = 0;
  15678. var pg_accz = 0;
  15679. function PhoneGapGetAcceleration(evt)
  15680. {
  15681. pg_accx = evt.x;
  15682. pg_accy = evt.y;
  15683. pg_accz = evt.z;
  15684. };
  15685. var theInstance = null;
  15686. instanceProto.onCreate = function()
  15687. {
  15688. theInstance = this;
  15689. this.isWindows8 = !!(typeof window["c2isWindows8"] !== "undefined" && window["c2isWindows8"]);
  15690. this.orient_alpha = 0;
  15691. this.orient_beta = 0;
  15692. this.orient_gamma = 0;
  15693. this.acc_g_x = 0;
  15694. this.acc_g_y = 0;
  15695. this.acc_g_z = 0;
  15696. this.acc_x = 0;
  15697. this.acc_y = 0;
  15698. this.acc_z = 0;
  15699. this.curTouchX = 0;
  15700. this.curTouchY = 0;
  15701. this.trigger_index = 0;
  15702. this.trigger_id = 0;
  15703. this.useMouseInput = (this.properties[0] !== 0);
  15704. var elem = (this.runtime.fullscreen_mode > 0) ? document : this.runtime.canvas;
  15705. var elem2 = document;
  15706. if (this.runtime.isDirectCanvas)
  15707. elem2 = elem = window["Canvas"];
  15708. else if (this.runtime.isCocoonJs)
  15709. elem2 = elem = window;
  15710. var self = this;
  15711. if (window.navigator["pointerEnabled"])
  15712. {
  15713. elem.addEventListener("pointerdown",
  15714. function(info) {
  15715. self.onPointerStart(info);
  15716. },
  15717. false
  15718. );
  15719. elem.addEventListener("pointermove",
  15720. function(info) {
  15721. self.onPointerMove(info);
  15722. },
  15723. false
  15724. );
  15725. elem2.addEventListener("pointerup",
  15726. function(info) {
  15727. self.onPointerEnd(info);
  15728. },
  15729. false
  15730. );
  15731. elem2.addEventListener("pointercancel",
  15732. function(info) {
  15733. self.onPointerEnd(info);
  15734. },
  15735. false
  15736. );
  15737. if (this.runtime.canvas)
  15738. {
  15739. this.runtime.canvas.addEventListener("MSGestureHold", function(e) {
  15740. e.preventDefault();
  15741. }, false);
  15742. document.addEventListener("MSGestureHold", function(e) {
  15743. e.preventDefault();
  15744. }, false);
  15745. this.runtime.canvas.addEventListener("gesturehold", function(e) {
  15746. e.preventDefault();
  15747. }, false);
  15748. document.addEventListener("gesturehold", function(e) {
  15749. e.preventDefault();
  15750. }, false);
  15751. }
  15752. }
  15753. else if (window.navigator["msPointerEnabled"])
  15754. {
  15755. elem.addEventListener("MSPointerDown",
  15756. function(info) {
  15757. self.onPointerStart(info);
  15758. },
  15759. false
  15760. );
  15761. elem.addEventListener("MSPointerMove",
  15762. function(info) {
  15763. self.onPointerMove(info);
  15764. },
  15765. false
  15766. );
  15767. elem2.addEventListener("MSPointerUp",
  15768. function(info) {
  15769. self.onPointerEnd(info);
  15770. },
  15771. false
  15772. );
  15773. elem2.addEventListener("MSPointerCancel",
  15774. function(info) {
  15775. self.onPointerEnd(info);
  15776. },
  15777. false
  15778. );
  15779. if (this.runtime.canvas)
  15780. {
  15781. this.runtime.canvas.addEventListener("MSGestureHold", function(e) {
  15782. e.preventDefault();
  15783. }, false);
  15784. document.addEventListener("MSGestureHold", function(e) {
  15785. e.preventDefault();
  15786. }, false);
  15787. }
  15788. }
  15789. else
  15790. {
  15791. elem.addEventListener("touchstart",
  15792. function(info) {
  15793. self.onTouchStart(info);
  15794. },
  15795. false
  15796. );
  15797. elem.addEventListener("touchmove",
  15798. function(info) {
  15799. self.onTouchMove(info);
  15800. },
  15801. false
  15802. );
  15803. elem2.addEventListener("touchend",
  15804. function(info) {
  15805. self.onTouchEnd(info);
  15806. },
  15807. false
  15808. );
  15809. elem2.addEventListener("touchcancel",
  15810. function(info) {
  15811. self.onTouchEnd(info);
  15812. },
  15813. false
  15814. );
  15815. }
  15816. if (this.isWindows8)
  15817. {
  15818. var win8accelerometerFn = function(e) {
  15819. var reading = e["reading"];
  15820. self.acc_x = reading["accelerationX"];
  15821. self.acc_y = reading["accelerationY"];
  15822. self.acc_z = reading["accelerationZ"];
  15823. };
  15824. var win8inclinometerFn = function(e) {
  15825. var reading = e["reading"];
  15826. self.orient_alpha = reading["yawDegrees"];
  15827. self.orient_beta = reading["pitchDegrees"];
  15828. self.orient_gamma = reading["rollDegrees"];
  15829. };
  15830. var accelerometer = Windows["Devices"]["Sensors"]["Accelerometer"]["getDefault"]();
  15831. if (accelerometer)
  15832. {
  15833. accelerometer["reportInterval"] = Math.max(accelerometer["minimumReportInterval"], 16);
  15834. accelerometer.addEventListener("readingchanged", win8accelerometerFn);
  15835. }
  15836. var inclinometer = Windows["Devices"]["Sensors"]["Inclinometer"]["getDefault"]();
  15837. if (inclinometer)
  15838. {
  15839. inclinometer["reportInterval"] = Math.max(inclinometer["minimumReportInterval"], 16);
  15840. inclinometer.addEventListener("readingchanged", win8inclinometerFn);
  15841. }
  15842. document.addEventListener("visibilitychange", function(e) {
  15843. if (document["hidden"] || document["msHidden"])
  15844. {
  15845. if (accelerometer)
  15846. accelerometer.removeEventListener("readingchanged", win8accelerometerFn);
  15847. if (inclinometer)
  15848. inclinometer.removeEventListener("readingchanged", win8inclinometerFn);
  15849. }
  15850. else
  15851. {
  15852. if (accelerometer)
  15853. accelerometer.addEventListener("readingchanged", win8accelerometerFn);
  15854. if (inclinometer)
  15855. inclinometer.addEventListener("readingchanged", win8inclinometerFn);
  15856. }
  15857. }, false);
  15858. }
  15859. else
  15860. {
  15861. window.addEventListener("deviceorientation", function (eventData) {
  15862. self.orient_alpha = eventData["alpha"] || 0;
  15863. self.orient_beta = eventData["beta"] || 0;
  15864. self.orient_gamma = eventData["gamma"] || 0;
  15865. }, false);
  15866. window.addEventListener("devicemotion", function (eventData) {
  15867. if (eventData["accelerationIncludingGravity"])
  15868. {
  15869. self.acc_g_x = eventData["accelerationIncludingGravity"]["x"];
  15870. self.acc_g_y = eventData["accelerationIncludingGravity"]["y"];
  15871. self.acc_g_z = eventData["accelerationIncludingGravity"]["z"];
  15872. }
  15873. if (eventData["acceleration"])
  15874. {
  15875. self.acc_x = eventData["acceleration"]["x"];
  15876. self.acc_y = eventData["acceleration"]["y"];
  15877. self.acc_z = eventData["acceleration"]["z"];
  15878. }
  15879. }, false);
  15880. }
  15881. if (this.useMouseInput && !this.runtime.isDomFree)
  15882. {
  15883. jQuery(document).mousemove(
  15884. function(info) {
  15885. self.onMouseMove(info);
  15886. }
  15887. );
  15888. jQuery(document).mousedown(
  15889. function(info) {
  15890. self.onMouseDown(info);
  15891. }
  15892. );
  15893. jQuery(document).mouseup(
  15894. function(info) {
  15895. self.onMouseUp(info);
  15896. }
  15897. );
  15898. }
  15899. if (this.runtime.isAppMobi && !this.runtime.isDirectCanvas)
  15900. {
  15901. AppMobi["accelerometer"]["watchAcceleration"](AppMobiGetAcceleration, { "frequency": 40, "adjustForRotation": true });
  15902. }
  15903. if (this.runtime.isPhoneGap)
  15904. {
  15905. navigator["accelerometer"]["watchAcceleration"](PhoneGapGetAcceleration, null, { "frequency": 40 });
  15906. }
  15907. this.runtime.tick2Me(this);
  15908. };
  15909. instanceProto.onPointerMove = function (info)
  15910. {
  15911. if (info["pointerType"] === info["MSPOINTER_TYPE_MOUSE"] || info["pointerType"] === "mouse")
  15912. return;
  15913. if (info.preventDefault)
  15914. info.preventDefault();
  15915. var i = this.findTouch(info["pointerId"]);
  15916. var nowtime = cr.performance_now();
  15917. if (i >= 0)
  15918. {
  15919. var offset = this.runtime.isDomFree ? dummyoffset : jQuery(this.runtime.canvas).offset();
  15920. var t = this.touches[i];
  15921. if (nowtime - t.time < 2)
  15922. return;
  15923. t.lasttime = t.time;
  15924. t.lastx = t.x;
  15925. t.lasty = t.y;
  15926. t.time = nowtime;
  15927. t.x = info.pageX - offset.left;
  15928. t.y = info.pageY - offset.top;
  15929. }
  15930. };
  15931. instanceProto.onPointerStart = function (info)
  15932. {
  15933. if (info["pointerType"] === info["MSPOINTER_TYPE_MOUSE"] || info["pointerType"] === "mouse")
  15934. return;
  15935. if (info.preventDefault)
  15936. info.preventDefault();
  15937. var offset = this.runtime.isDomFree ? dummyoffset : jQuery(this.runtime.canvas).offset();
  15938. var touchx = info.pageX - offset.left;
  15939. var touchy = info.pageY - offset.top;
  15940. var nowtime = cr.performance_now();
  15941. this.trigger_index = this.touches.length;
  15942. this.trigger_id = info["pointerId"];
  15943. this.touches.push({ time: nowtime,
  15944. x: touchx,
  15945. y: touchy,
  15946. lasttime: nowtime,
  15947. lastx: touchx,
  15948. lasty: touchy,
  15949. "id": info["pointerId"],
  15950. startindex: this.trigger_index
  15951. });
  15952. this.runtime.isInUserInputEvent = true;
  15953. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnNthTouchStart, this);
  15954. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnTouchStart, this);
  15955. this.curTouchX = touchx;
  15956. this.curTouchY = touchy;
  15957. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnTouchObject, this);
  15958. this.runtime.isInUserInputEvent = false;
  15959. };
  15960. instanceProto.onPointerEnd = function (info)
  15961. {
  15962. if (info["pointerType"] === info["MSPOINTER_TYPE_MOUSE"] || info["pointerType"] === "mouse")
  15963. return;
  15964. if (info.preventDefault)
  15965. info.preventDefault();
  15966. var i = this.findTouch(info["pointerId"]);
  15967. this.trigger_index = (i >= 0 ? this.touches[i].startindex : -1);
  15968. this.trigger_id = (i >= 0 ? this.touches[i]["id"] : -1);
  15969. this.runtime.isInUserInputEvent = true;
  15970. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnNthTouchEnd, this);
  15971. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnTouchEnd, this);
  15972. this.runtime.isInUserInputEvent = false;
  15973. if (i >= 0)
  15974. {
  15975. this.touches.splice(i, 1);
  15976. }
  15977. };
  15978. instanceProto.onTouchMove = function (info)
  15979. {
  15980. if (info.preventDefault)
  15981. info.preventDefault();
  15982. var nowtime = cr.performance_now();
  15983. var i, len, t, u;
  15984. for (i = 0, len = info.changedTouches.length; i < len; i++)
  15985. {
  15986. t = info.changedTouches[i];
  15987. var j = this.findTouch(t["identifier"]);
  15988. if (j >= 0)
  15989. {
  15990. var offset = this.runtime.isDomFree ? dummyoffset : jQuery(this.runtime.canvas).offset();
  15991. u = this.touches[j];
  15992. if (nowtime - u.time < 2)
  15993. continue;
  15994. u.lasttime = u.time;
  15995. u.lastx = u.x;
  15996. u.lasty = u.y;
  15997. u.time = nowtime;
  15998. u.x = t.pageX - offset.left;
  15999. u.y = t.pageY - offset.top;
  16000. }
  16001. }
  16002. };
  16003. instanceProto.onTouchStart = function (info)
  16004. {
  16005. if (info.preventDefault)
  16006. info.preventDefault();
  16007. var offset = this.runtime.isDomFree ? dummyoffset : jQuery(this.runtime.canvas).offset();
  16008. var nowtime = cr.performance_now();
  16009. this.runtime.isInUserInputEvent = true;
  16010. var i, len, t, j;
  16011. for (i = 0, len = info.changedTouches.length; i < len; i++)
  16012. {
  16013. t = info.changedTouches[i];
  16014. j = this.findTouch(t["identifier"]);
  16015. if (j !== -1)
  16016. continue;
  16017. var touchx = t.pageX - offset.left;
  16018. var touchy = t.pageY - offset.top;
  16019. this.trigger_index = this.touches.length;
  16020. this.trigger_id = t["identifier"];
  16021. this.touches.push({ time: nowtime,
  16022. x: touchx,
  16023. y: touchy,
  16024. lasttime: nowtime,
  16025. lastx: touchx,
  16026. lasty: touchy,
  16027. "id": t["identifier"],
  16028. startindex: this.trigger_index
  16029. });
  16030. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnNthTouchStart, this);
  16031. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnTouchStart, this);
  16032. this.curTouchX = touchx;
  16033. this.curTouchY = touchy;
  16034. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnTouchObject, this);
  16035. }
  16036. this.runtime.isInUserInputEvent = false;
  16037. };
  16038. instanceProto.onTouchEnd = function (info)
  16039. {
  16040. if (info.preventDefault)
  16041. info.preventDefault();
  16042. this.runtime.isInUserInputEvent = true;
  16043. var i, len, t, j;
  16044. for (i = 0, len = info.changedTouches.length; i < len; i++)
  16045. {
  16046. t = info.changedTouches[i];
  16047. j = this.findTouch(t["identifier"]);
  16048. if (j >= 0)
  16049. {
  16050. this.trigger_index = this.touches[j].startindex;
  16051. this.trigger_id = this.touches[j]["id"];
  16052. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnNthTouchEnd, this);
  16053. this.runtime.trigger(cr.plugins_.Touch.prototype.cnds.OnTouchEnd, this);
  16054. this.touches.splice(j, 1);
  16055. }
  16056. }
  16057. this.runtime.isInUserInputEvent = false;
  16058. };
  16059. instanceProto.getAlpha = function ()
  16060. {
  16061. if (this.runtime.isAppMobi && this.orient_alpha === 0 && appmobi_accz !== 0)
  16062. return appmobi_accz * 90;
  16063. else if (this.runtime.isPhoneGap && this.orient_alpha === 0 && pg_accz !== 0)
  16064. return pg_accz * 90;
  16065. else
  16066. return this.orient_alpha;
  16067. };
  16068. instanceProto.getBeta = function ()
  16069. {
  16070. if (this.runtime.isAppMobi && this.orient_beta === 0 && appmobi_accy !== 0)
  16071. return appmobi_accy * -90;
  16072. else if (this.runtime.isPhoneGap && this.orient_beta === 0 && pg_accy !== 0)
  16073. return pg_accy * -90;
  16074. else
  16075. return this.orient_beta;
  16076. };
  16077. instanceProto.getGamma = function ()
  16078. {
  16079. if (this.runtime.isAppMobi && this.orient_gamma === 0 && appmobi_accx !== 0)
  16080. return appmobi_accx * 90;
  16081. else if (this.runtime.isPhoneGap && this.orient_gamma === 0 && pg_accx !== 0)
  16082. return pg_accx * 90;
  16083. else
  16084. return this.orient_gamma;
  16085. };
  16086. var noop_func = function(){};
  16087. instanceProto.onMouseDown = function(info)
  16088. {
  16089. if (info.preventDefault && this.runtime.had_a_click)
  16090. info.preventDefault();
  16091. var t = { pageX: info.pageX, pageY: info.pageY, "identifier": 0 };
  16092. var fakeinfo = { changedTouches: [t] };
  16093. this.onTouchStart(fakeinfo);
  16094. this.mouseDown = true;
  16095. };
  16096. instanceProto.onMouseMove = function(info)
  16097. {
  16098. if (info.preventDefault && this.runtime.had_a_click)
  16099. info.preventDefault();
  16100. if (!this.mouseDown)
  16101. return;
  16102. var t = { pageX: info.pageX, pageY: info.pageY, "identifier": 0 };
  16103. var fakeinfo = { changedTouches: [t] };
  16104. this.onTouchMove(fakeinfo);
  16105. };
  16106. instanceProto.onMouseUp = function(info)
  16107. {
  16108. if (info.preventDefault && this.runtime.had_a_click)
  16109. info.preventDefault();
  16110. this.runtime.had_a_click = true;
  16111. var t = { pageX: info.pageX, pageY: info.pageY, "identifier": 0 };
  16112. var fakeinfo = { changedTouches: [t] };
  16113. this.onTouchEnd(fakeinfo);
  16114. this.mouseDown = false;
  16115. };
  16116. instanceProto.tick2 = function()
  16117. {
  16118. var i, len, t;
  16119. var nowtime = cr.performance_now();
  16120. for (i = 0, len = this.touches.length; i < len; i++)
  16121. {
  16122. t = this.touches[i];
  16123. if (t.time <= nowtime - 50)
  16124. t.lasttime = nowtime;
  16125. }
  16126. };
  16127. function Cnds() {};
  16128. Cnds.prototype.OnTouchStart = function ()
  16129. {
  16130. return true;
  16131. };
  16132. Cnds.prototype.OnTouchEnd = function ()
  16133. {
  16134. return true;
  16135. };
  16136. Cnds.prototype.IsInTouch = function ()
  16137. {
  16138. return this.touches.length;
  16139. };
  16140. Cnds.prototype.OnTouchObject = function (type)
  16141. {
  16142. if (!type)
  16143. return false;
  16144. return this.runtime.testAndSelectCanvasPointOverlap(type, this.curTouchX, this.curTouchY, false);
  16145. };
  16146. Cnds.prototype.IsTouchingObject = function (type)
  16147. {
  16148. if (!type)
  16149. return false;
  16150. var sol = type.getCurrentSol();
  16151. var instances = sol.getObjects();
  16152. var px, py;
  16153. var touching = [];
  16154. var i, leni, j, lenj;
  16155. for (i = 0, leni = instances.length; i < leni; i++)
  16156. {
  16157. var inst = instances[i];
  16158. inst.update_bbox();
  16159. for (j = 0, lenj = this.touches.length; j < lenj; j++)
  16160. {
  16161. var touch = this.touches[j];
  16162. px = inst.layer.canvasToLayer(touch.x, touch.y, true);
  16163. py = inst.layer.canvasToLayer(touch.x, touch.y, false);
  16164. if (inst.contains_pt(px, py))
  16165. {
  16166. touching.push(inst);
  16167. break;
  16168. }
  16169. }
  16170. }
  16171. if (touching.length)
  16172. {
  16173. sol.select_all = false;
  16174. sol.instances = touching;
  16175. type.applySolToContainer();
  16176. return true;
  16177. }
  16178. else
  16179. return false;
  16180. };
  16181. Cnds.prototype.CompareTouchSpeed = function (index, cmp, s)
  16182. {
  16183. index = Math.floor(index);
  16184. if (index < 0 || index >= this.touches.length)
  16185. return false;
  16186. var t = this.touches[index];
  16187. var dist = cr.distanceTo(t.x, t.y, t.lastx, t.lasty);
  16188. var timediff = (t.time - t.lasttime) / 1000;
  16189. var speed = 0;
  16190. if (timediff > 0)
  16191. speed = dist / timediff;
  16192. return cr.do_cmp(speed, cmp, s);
  16193. };
  16194. Cnds.prototype.OrientationSupported = function ()
  16195. {
  16196. return typeof window["DeviceOrientationEvent"] !== "undefined";
  16197. };
  16198. Cnds.prototype.MotionSupported = function ()
  16199. {
  16200. return typeof window["DeviceMotionEvent"] !== "undefined";
  16201. };
  16202. Cnds.prototype.CompareOrientation = function (orientation_, cmp_, angle_)
  16203. {
  16204. var v = 0;
  16205. if (orientation_ === 0)
  16206. v = this.getAlpha();
  16207. else if (orientation_ === 1)
  16208. v = this.getBeta();
  16209. else
  16210. v = this.getGamma();
  16211. return cr.do_cmp(v, cmp_, angle_);
  16212. };
  16213. Cnds.prototype.CompareAcceleration = function (acceleration_, cmp_, angle_)
  16214. {
  16215. var v = 0;
  16216. if (acceleration_ === 0)
  16217. v = this.acc_g_x;
  16218. else if (acceleration_ === 1)
  16219. v = this.acc_g_y;
  16220. else if (acceleration_ === 2)
  16221. v = this.acc_g_z;
  16222. else if (acceleration_ === 3)
  16223. v = this.acc_x;
  16224. else if (acceleration_ === 4)
  16225. v = this.acc_y;
  16226. else if (acceleration_ === 5)
  16227. v = this.acc_z;
  16228. return cr.do_cmp(v, cmp_, angle_);
  16229. };
  16230. Cnds.prototype.OnNthTouchStart = function (touch_)
  16231. {
  16232. touch_ = Math.floor(touch_);
  16233. return touch_ === this.trigger_index;
  16234. };
  16235. Cnds.prototype.OnNthTouchEnd = function (touch_)
  16236. {
  16237. touch_ = Math.floor(touch_);
  16238. return touch_ === this.trigger_index;
  16239. };
  16240. Cnds.prototype.HasNthTouch = function (touch_)
  16241. {
  16242. touch_ = Math.floor(touch_);
  16243. return this.touches.length >= touch_ + 1;
  16244. };
  16245. pluginProto.cnds = new Cnds();
  16246. function Exps() {};
  16247. Exps.prototype.TouchCount = function (ret)
  16248. {
  16249. ret.set_int(this.touches.length);
  16250. };
  16251. Exps.prototype.X = function (ret, layerparam)
  16252. {
  16253. if (this.touches.length)
  16254. {
  16255. var layer, oldScale, oldZoomRate, oldParallaxX, oldAngle;
  16256. if (cr.is_undefined(layerparam))
  16257. {
  16258. layer = this.runtime.getLayerByNumber(0);
  16259. oldScale = layer.scale;
  16260. oldZoomRate = layer.zoomRate;
  16261. oldParallaxX = layer.parallaxX;
  16262. oldAngle = layer.angle;
  16263. layer.scale = this.runtime.running_layout.scale;
  16264. layer.zoomRate = 1.0;
  16265. layer.parallaxX = 1.0;
  16266. layer.angle = this.runtime.running_layout.angle;
  16267. ret.set_float(layer.canvasToLayer(this.touches[0].x, this.touches[0].y, true));
  16268. layer.scale = oldScale;
  16269. layer.zoomRate = oldZoomRate;
  16270. layer.parallaxX = oldParallaxX;
  16271. layer.angle = oldAngle;
  16272. }
  16273. else
  16274. {
  16275. if (cr.is_number(layerparam))
  16276. layer = this.runtime.getLayerByNumber(layerparam);
  16277. else
  16278. layer = this.runtime.getLayerByName(layerparam);
  16279. if (layer)
  16280. ret.set_float(layer.canvasToLayer(this.touches[0].x, this.touches[0].y, true));
  16281. else
  16282. ret.set_float(0);
  16283. }
  16284. }
  16285. else
  16286. ret.set_float(0);
  16287. };
  16288. Exps.prototype.XAt = function (ret, index, layerparam)
  16289. {
  16290. index = Math.floor(index);
  16291. if (index < 0 || index >= this.touches.length)
  16292. {
  16293. ret.set_float(0);
  16294. return;
  16295. }
  16296. var layer, oldScale, oldZoomRate, oldParallaxX, oldAngle;
  16297. if (cr.is_undefined(layerparam))
  16298. {
  16299. layer = this.runtime.getLayerByNumber(0);
  16300. oldScale = layer.scale;
  16301. oldZoomRate = layer.zoomRate;
  16302. oldParallaxX = layer.parallaxX;
  16303. oldAngle = layer.angle;
  16304. layer.scale = this.runtime.running_layout.scale;
  16305. layer.zoomRate = 1.0;
  16306. layer.parallaxX = 1.0;
  16307. layer.angle = this.runtime.running_layout.angle;
  16308. ret.set_float(layer.canvasToLayer(this.touches[index].x, this.touches[index].y, true));
  16309. layer.scale = oldScale;
  16310. layer.zoomRate = oldZoomRate;
  16311. layer.parallaxX = oldParallaxX;
  16312. layer.angle = oldAngle;
  16313. }
  16314. else
  16315. {
  16316. if (cr.is_number(layerparam))
  16317. layer = this.runtime.getLayerByNumber(layerparam);
  16318. else
  16319. layer = this.runtime.getLayerByName(layerparam);
  16320. if (layer)
  16321. ret.set_float(layer.canvasToLayer(this.touches[index].x, this.touches[index].y, true));
  16322. else
  16323. ret.set_float(0);
  16324. }
  16325. };
  16326. Exps.prototype.XForID = function (ret, id, layerparam)
  16327. {
  16328. var index = this.findTouch(id);
  16329. if (index < 0)
  16330. {
  16331. ret.set_float(0);
  16332. return;
  16333. }
  16334. var touch = this.touches[index];
  16335. var layer, oldScale, oldZoomRate, oldParallaxX, oldAngle;
  16336. if (cr.is_undefined(layerparam))
  16337. {
  16338. layer = this.runtime.getLayerByNumber(0);
  16339. oldScale = layer.scale;
  16340. oldZoomRate = layer.zoomRate;
  16341. oldParallaxX = layer.parallaxX;
  16342. oldAngle = layer.angle;
  16343. layer.scale = this.runtime.running_layout.scale;
  16344. layer.zoomRate = 1.0;
  16345. layer.parallaxX = 1.0;
  16346. layer.angle = this.runtime.running_layout.angle;
  16347. ret.set_float(layer.canvasToLayer(touch.x, touch.y, true));
  16348. layer.scale = oldScale;
  16349. layer.zoomRate = oldZoomRate;
  16350. layer.parallaxX = oldParallaxX;
  16351. layer.angle = oldAngle;
  16352. }
  16353. else
  16354. {
  16355. if (cr.is_number(layerparam))
  16356. layer = this.runtime.getLayerByNumber(layerparam);
  16357. else
  16358. layer = this.runtime.getLayerByName(layerparam);
  16359. if (layer)
  16360. ret.set_float(layer.canvasToLayer(touch.x, touch.y, true));
  16361. else
  16362. ret.set_float(0);
  16363. }
  16364. };
  16365. Exps.prototype.Y = function (ret, layerparam)
  16366. {
  16367. if (this.touches.length)
  16368. {
  16369. var layer, oldScale, oldZoomRate, oldParallaxY, oldAngle;
  16370. if (cr.is_undefined(layerparam))
  16371. {
  16372. layer = this.runtime.getLayerByNumber(0);
  16373. oldScale = layer.scale;
  16374. oldZoomRate = layer.zoomRate;
  16375. oldParallaxY = layer.parallaxY;
  16376. oldAngle = layer.angle;
  16377. layer.scale = this.runtime.running_layout.scale;
  16378. layer.zoomRate = 1.0;
  16379. layer.parallaxY = 1.0;
  16380. layer.angle = this.runtime.running_layout.angle;
  16381. ret.set_float(layer.canvasToLayer(this.touches[0].x, this.touches[0].y, false));
  16382. layer.scale = oldScale;
  16383. layer.zoomRate = oldZoomRate;
  16384. layer.parallaxY = oldParallaxY;
  16385. layer.angle = oldAngle;
  16386. }
  16387. else
  16388. {
  16389. if (cr.is_number(layerparam))
  16390. layer = this.runtime.getLayerByNumber(layerparam);
  16391. else
  16392. layer = this.runtime.getLayerByName(layerparam);
  16393. if (layer)
  16394. ret.set_float(layer.canvasToLayer(this.touches[0].x, this.touches[0].y, false));
  16395. else
  16396. ret.set_float(0);
  16397. }
  16398. }
  16399. else
  16400. ret.set_float(0);
  16401. };
  16402. Exps.prototype.YAt = function (ret, index, layerparam)
  16403. {
  16404. index = Math.floor(index);
  16405. if (index < 0 || index >= this.touches.length)
  16406. {
  16407. ret.set_float(0);
  16408. return;
  16409. }
  16410. var layer, oldScale, oldZoomRate, oldParallaxY, oldAngle;
  16411. if (cr.is_undefined(layerparam))
  16412. {
  16413. layer = this.runtime.getLayerByNumber(0);
  16414. oldScale = layer.scale;
  16415. oldZoomRate = layer.zoomRate;
  16416. oldParallaxY = layer.parallaxY;
  16417. oldAngle = layer.angle;
  16418. layer.scale = this.runtime.running_layout.scale;
  16419. layer.zoomRate = 1.0;
  16420. layer.parallaxY = 1.0;
  16421. layer.angle = this.runtime.running_layout.angle;
  16422. ret.set_float(layer.canvasToLayer(this.touches[index].x, this.touches[index].y, false));
  16423. layer.scale = oldScale;
  16424. layer.zoomRate = oldZoomRate;
  16425. layer.parallaxY = oldParallaxY;
  16426. layer.angle = oldAngle;
  16427. }
  16428. else
  16429. {
  16430. if (cr.is_number(layerparam))
  16431. layer = this.runtime.getLayerByNumber(layerparam);
  16432. else
  16433. layer = this.runtime.getLayerByName(layerparam);
  16434. if (layer)
  16435. ret.set_float(layer.canvasToLayer(this.touches[index].x, this.touches[index].y, false));
  16436. else
  16437. ret.set_float(0);
  16438. }
  16439. };
  16440. Exps.prototype.YForID = function (ret, id, layerparam)
  16441. {
  16442. var index = this.findTouch(id);
  16443. if (index < 0)
  16444. {
  16445. ret.set_float(0);
  16446. return;
  16447. }
  16448. var touch = this.touches[index];
  16449. var layer, oldScale, oldZoomRate, oldParallaxY, oldAngle;
  16450. if (cr.is_undefined(layerparam))
  16451. {
  16452. layer = this.runtime.getLayerByNumber(0);
  16453. oldScale = layer.scale;
  16454. oldZoomRate = layer.zoomRate;
  16455. oldParallaxY = layer.parallaxY;
  16456. oldAngle = layer.angle;
  16457. layer.scale = this.runtime.running_layout.scale;
  16458. layer.zoomRate = 1.0;
  16459. layer.parallaxY = 1.0;
  16460. layer.angle = this.runtime.running_layout.angle;
  16461. ret.set_float(layer.canvasToLayer(touch.x, touch.y, false));
  16462. layer.scale = oldScale;
  16463. layer.zoomRate = oldZoomRate;
  16464. layer.parallaxY = oldParallaxY;
  16465. layer.angle = oldAngle;
  16466. }
  16467. else
  16468. {
  16469. if (cr.is_number(layerparam))
  16470. layer = this.runtime.getLayerByNumber(layerparam);
  16471. else
  16472. layer = this.runtime.getLayerByName(layerparam);
  16473. if (layer)
  16474. ret.set_float(layer.canvasToLayer(touch.x, touch.y, false));
  16475. else
  16476. ret.set_float(0);
  16477. }
  16478. };
  16479. Exps.prototype.AbsoluteX = function (ret)
  16480. {
  16481. if (this.touches.length)
  16482. ret.set_float(this.touches[0].x);
  16483. else
  16484. ret.set_float(0);
  16485. };
  16486. Exps.prototype.AbsoluteXAt = function (ret, index)
  16487. {
  16488. index = Math.floor(index);
  16489. if (index < 0 || index >= this.touches.length)
  16490. {
  16491. ret.set_float(0);
  16492. return;
  16493. }
  16494. ret.set_float(this.touches[index].x);
  16495. };
  16496. Exps.prototype.AbsoluteXForID = function (ret, id)
  16497. {
  16498. var index = this.findTouch(id);
  16499. if (index < 0)
  16500. {
  16501. ret.set_float(0);
  16502. return;
  16503. }
  16504. var touch = this.touches[index];
  16505. ret.set_float(touch.x);
  16506. };
  16507. Exps.prototype.AbsoluteY = function (ret)
  16508. {
  16509. if (this.touches.length)
  16510. ret.set_float(this.touches[0].y);
  16511. else
  16512. ret.set_float(0);
  16513. };
  16514. Exps.prototype.AbsoluteYAt = function (ret, index)
  16515. {
  16516. index = Math.floor(index);
  16517. if (index < 0 || index >= this.touches.length)
  16518. {
  16519. ret.set_float(0);
  16520. return;
  16521. }
  16522. ret.set_float(this.touches[index].y);
  16523. };
  16524. Exps.prototype.AbsoluteYForID = function (ret, id)
  16525. {
  16526. var index = this.findTouch(id);
  16527. if (index < 0)
  16528. {
  16529. ret.set_float(0);
  16530. return;
  16531. }
  16532. var touch = this.touches[index];
  16533. ret.set_float(touch.y);
  16534. };
  16535. Exps.prototype.SpeedAt = function (ret, index)
  16536. {
  16537. index = Math.floor(index);
  16538. if (index < 0 || index >= this.touches.length)
  16539. {
  16540. ret.set_float(0);
  16541. return;
  16542. }
  16543. var t = this.touches[index];
  16544. var dist = cr.distanceTo(t.x, t.y, t.lastx, t.lasty);
  16545. var timediff = (t.time - t.lasttime) / 1000;
  16546. if (timediff === 0)
  16547. ret.set_float(0);
  16548. else
  16549. ret.set_float(dist / timediff);
  16550. };
  16551. Exps.prototype.SpeedForID = function (ret, id)
  16552. {
  16553. var index = this.findTouch(id);
  16554. if (index < 0)
  16555. {
  16556. ret.set_float(0);
  16557. return;
  16558. }
  16559. var touch = this.touches[index];
  16560. var dist = cr.distanceTo(touch.x, touch.y, touch.lastx, touch.lasty);
  16561. var timediff = (touch.time - touch.lasttime) / 1000;
  16562. if (timediff === 0)
  16563. ret.set_float(0);
  16564. else
  16565. ret.set_float(dist / timediff);
  16566. };
  16567. Exps.prototype.AngleAt = function (ret, index)
  16568. {
  16569. index = Math.floor(index);
  16570. if (index < 0 || index >= this.touches.length)
  16571. {
  16572. ret.set_float(0);
  16573. return;
  16574. }
  16575. var t = this.touches[index];
  16576. ret.set_float(cr.to_degrees(cr.angleTo(t.lastx, t.lasty, t.x, t.y)));
  16577. };
  16578. Exps.prototype.AngleForID = function (ret, id)
  16579. {
  16580. var index = this.findTouch(id);
  16581. if (index < 0)
  16582. {
  16583. ret.set_float(0);
  16584. return;
  16585. }
  16586. var touch = this.touches[index];
  16587. ret.set_float(cr.to_degrees(cr.angleTo(touch.lastx, touch.lasty, touch.x, touch.y)));
  16588. };
  16589. Exps.prototype.Alpha = function (ret)
  16590. {
  16591. ret.set_float(this.getAlpha());
  16592. };
  16593. Exps.prototype.Beta = function (ret)
  16594. {
  16595. ret.set_float(this.getBeta());
  16596. };
  16597. Exps.prototype.Gamma = function (ret)
  16598. {
  16599. ret.set_float(this.getGamma());
  16600. };
  16601. Exps.prototype.AccelerationXWithG = function (ret)
  16602. {
  16603. ret.set_float(this.acc_g_x);
  16604. };
  16605. Exps.prototype.AccelerationYWithG = function (ret)
  16606. {
  16607. ret.set_float(this.acc_g_y);
  16608. };
  16609. Exps.prototype.AccelerationZWithG = function (ret)
  16610. {
  16611. ret.set_float(this.acc_g_z);
  16612. };
  16613. Exps.prototype.AccelerationX = function (ret)
  16614. {
  16615. ret.set_float(this.acc_x);
  16616. };
  16617. Exps.prototype.AccelerationY = function (ret)
  16618. {
  16619. ret.set_float(this.acc_y);
  16620. };
  16621. Exps.prototype.AccelerationZ = function (ret)
  16622. {
  16623. ret.set_float(this.acc_z);
  16624. };
  16625. Exps.prototype.TouchIndex = function (ret)
  16626. {
  16627. ret.set_int(this.trigger_index);
  16628. };
  16629. Exps.prototype.TouchID = function (ret)
  16630. {
  16631. ret.set_float(this.trigger_id);
  16632. };
  16633. pluginProto.exps = new Exps();
  16634. }());
  16635. ;
  16636. ;
  16637. cr.plugins_.WebStorage = function(runtime)
  16638. {
  16639. this.runtime = runtime;
  16640. };
  16641. (function()
  16642. {
  16643. var pluginProto = cr.plugins_.WebStorage.prototype;
  16644. pluginProto.Type = function(plugin)
  16645. {
  16646. this.plugin = plugin;
  16647. this.runtime = plugin.runtime;
  16648. };
  16649. var typeProto = pluginProto.Type.prototype;
  16650. typeProto.onCreate = function()
  16651. {
  16652. };
  16653. pluginProto.Instance = function(type)
  16654. {
  16655. this.type = type;
  16656. this.runtime = type.runtime;
  16657. };
  16658. var instanceProto = pluginProto.Instance.prototype;
  16659. var prefix = "";
  16660. var is_arcade = (typeof window["is_scirra_arcade"] !== "undefined");
  16661. if (is_arcade)
  16662. prefix = "arcade" + window["scirra_arcade_id"];
  16663. var logged_sessionnotsupported = false;
  16664. function LogSessionNotSupported()
  16665. {
  16666. if (logged_sessionnotsupported)
  16667. return;
  16668. cr.logexport("[Construct 2] Webstorage plugin: session storage is not supported on this platform. Try using local storage or global variables instead.");
  16669. logged_sessionnotsupported = true;
  16670. };
  16671. instanceProto.onCreate = function()
  16672. {
  16673. };
  16674. function Cnds() {};
  16675. Cnds.prototype.LocalStorageEnabled = function()
  16676. {
  16677. return true;
  16678. };
  16679. Cnds.prototype.SessionStorageEnabled = function()
  16680. {
  16681. return true;
  16682. };
  16683. Cnds.prototype.LocalStorageExists = function(key)
  16684. {
  16685. return localStorage.getItem(prefix + key) != null;
  16686. };
  16687. Cnds.prototype.SessionStorageExists = function(key)
  16688. {
  16689. if (this.runtime.isCocoonJs || !sessionStorage)
  16690. {
  16691. LogSessionNotSupported();
  16692. return false;
  16693. }
  16694. return sessionStorage.getItem(prefix + key) != null;
  16695. };
  16696. Cnds.prototype.OnQuotaExceeded = function ()
  16697. {
  16698. return true;
  16699. };
  16700. Cnds.prototype.CompareKeyText = function (key, text_to_compare, case_sensitive)
  16701. {
  16702. var value = localStorage.getItem(prefix + key) || "";
  16703. if (case_sensitive)
  16704. return value == text_to_compare;
  16705. else
  16706. return cr.equals_nocase(value, text_to_compare);
  16707. };
  16708. Cnds.prototype.CompareKeyNumber = function (key, cmp, x)
  16709. {
  16710. var value = localStorage.getItem(prefix + key) || "";
  16711. return cr.do_cmp(parseFloat(value), cmp, x);
  16712. };
  16713. pluginProto.cnds = new Cnds();
  16714. function Acts() {};
  16715. Acts.prototype.StoreLocal = function(key, data)
  16716. {
  16717. try {
  16718. localStorage.setItem(prefix + key, data);
  16719. }
  16720. catch (e)
  16721. {
  16722. this.runtime.trigger(cr.plugins_.WebStorage.prototype.cnds.OnQuotaExceeded, this);
  16723. }
  16724. };
  16725. Acts.prototype.StoreSession = function(key,data)
  16726. {
  16727. if (this.runtime.isCocoonJs || !sessionStorage)
  16728. {
  16729. LogSessionNotSupported();
  16730. return;
  16731. }
  16732. try {
  16733. sessionStorage.setItem(prefix + key, data);
  16734. }
  16735. catch (e)
  16736. {
  16737. this.runtime.trigger(cr.plugins_.WebStorage.prototype.cnds.OnQuotaExceeded, this);
  16738. }
  16739. };
  16740. Acts.prototype.RemoveLocal = function(key)
  16741. {
  16742. localStorage.removeItem(prefix + key);
  16743. };
  16744. Acts.prototype.RemoveSession = function(key)
  16745. {
  16746. if (this.runtime.isCocoonJs || !sessionStorage)
  16747. {
  16748. LogSessionNotSupported();
  16749. return;
  16750. }
  16751. sessionStorage.removeItem(prefix + key);
  16752. };
  16753. Acts.prototype.ClearLocal = function()
  16754. {
  16755. if (!is_arcade)
  16756. localStorage.clear();
  16757. };
  16758. Acts.prototype.ClearSession = function()
  16759. {
  16760. if (this.runtime.isCocoonJs || !sessionStorage)
  16761. {
  16762. LogSessionNotSupported();
  16763. return;
  16764. }
  16765. if (!is_arcade)
  16766. sessionStorage.clear();
  16767. };
  16768. Acts.prototype.JSONLoad = function (json_, mode_)
  16769. {
  16770. var d;
  16771. try {
  16772. d = JSON.parse(json_);
  16773. }
  16774. catch(e) { return; }
  16775. if (!d["c2dictionary"]) // presumably not a c2dictionary object
  16776. return;
  16777. var o = d["data"];
  16778. if (mode_ === 0 && !is_arcade) // 'set' mode: must clear webstorage first
  16779. localStorage.clear();
  16780. var p;
  16781. for (p in o)
  16782. {
  16783. if (o.hasOwnProperty(p))
  16784. {
  16785. try {
  16786. localStorage.setItem(prefix + p, o[p]);
  16787. }
  16788. catch (e)
  16789. {
  16790. this.runtime.trigger(cr.plugins_.WebStorage.prototype.cnds.OnQuotaExceeded, this);
  16791. return;
  16792. }
  16793. }
  16794. }
  16795. };
  16796. pluginProto.acts = new Acts();
  16797. function Exps() {};
  16798. Exps.prototype.LocalValue = function(ret,key)
  16799. {
  16800. ret.set_string(localStorage.getItem(prefix + key) || "");
  16801. };
  16802. Exps.prototype.SessionValue = function(ret,key)
  16803. {
  16804. if (this.runtime.isCocoonJs || !sessionStorage)
  16805. {
  16806. LogSessionNotSupported();
  16807. ret.set_string("");
  16808. return;
  16809. }
  16810. ret.set_string(sessionStorage.getItem(prefix + key) || "");
  16811. };
  16812. Exps.prototype.LocalCount = function(ret)
  16813. {
  16814. ret.set_int(is_arcade ? 0 : localStorage.length);
  16815. };
  16816. Exps.prototype.SessionCount = function(ret)
  16817. {
  16818. if (this.runtime.isCocoonJs || !sessionStorage)
  16819. {
  16820. LogSessionNotSupported();
  16821. ret.set_int(0);
  16822. return;
  16823. }
  16824. ret.set_int(is_arcade ? 0 : sessionStorage.length);
  16825. };
  16826. Exps.prototype.LocalAt = function(ret,n)
  16827. {
  16828. if (is_arcade)
  16829. ret.set_string("");
  16830. else
  16831. ret.set_string(localStorage.getItem(localStorage.key(n)) || "");
  16832. };
  16833. Exps.prototype.SessionAt = function(ret,n)
  16834. {
  16835. if (this.runtime.isCocoonJs || !sessionStorage)
  16836. {
  16837. LogSessionNotSupported();
  16838. ret.set_string("");
  16839. return;
  16840. }
  16841. if (is_arcade)
  16842. ret.set_string("");
  16843. else
  16844. ret.set_string(sessionStorage.getItem(sessionStorage.key(n)) || "");
  16845. };
  16846. Exps.prototype.LocalKeyAt = function(ret,n)
  16847. {
  16848. if (is_arcade)
  16849. ret.set_string("");
  16850. else
  16851. ret.set_string(localStorage.key(n) || "");
  16852. };
  16853. Exps.prototype.SessionKeyAt = function(ret,n)
  16854. {
  16855. if (this.runtime.isCocoonJs || !sessionStorage)
  16856. {
  16857. LogSessionNotSupported();
  16858. ret.set_string("");
  16859. return;
  16860. }
  16861. if (is_arcade)
  16862. ret.set_string("");
  16863. else
  16864. ret.set_string(sessionStorage.key(n) || "");
  16865. };
  16866. Exps.prototype.AsJSON = function (ret)
  16867. {
  16868. var o = {}, i, len, k;
  16869. for (i = 0, len = localStorage.length; i < len; i++)
  16870. {
  16871. k = localStorage.key(i);
  16872. if (is_arcade)
  16873. {
  16874. if (k.substr(0, prefix.length) === prefix)
  16875. {
  16876. o[k.substr(prefix.length)] = localStorage.getItem(k);
  16877. }
  16878. }
  16879. else
  16880. o[k] = localStorage.getItem(k);
  16881. }
  16882. ret.set_string(JSON.stringify({
  16883. "c2dictionary": true,
  16884. "data": o
  16885. }));
  16886. };
  16887. pluginProto.exps = new Exps();
  16888. }());
  16889. ;
  16890. ;
  16891. cr.behaviors.DragnDrop = function(runtime)
  16892. {
  16893. this.runtime = runtime;
  16894. var self = this;
  16895. if (!this.runtime.isDomFree)
  16896. {
  16897. jQuery(document).mousemove(
  16898. function(info) {
  16899. self.onMouseMove(info);
  16900. }
  16901. );
  16902. jQuery(document).mousedown(
  16903. function(info) {
  16904. self.onMouseDown(info);
  16905. }
  16906. );
  16907. jQuery(document).mouseup(
  16908. function(info) {
  16909. self.onMouseUp(info);
  16910. }
  16911. );
  16912. }
  16913. var elem = (this.runtime.fullscreen_mode > 0) ? document : this.runtime.canvas;
  16914. if (this.runtime.isDirectCanvas)
  16915. elem = window["Canvas"];
  16916. else if (this.runtime.isCocoonJs)
  16917. elem = window;
  16918. if (window.navigator["pointerEnabled"])
  16919. {
  16920. elem.addEventListener("pointerdown",
  16921. function(info) {
  16922. self.onPointerStart(info);
  16923. },
  16924. false
  16925. );
  16926. elem.addEventListener("pointermove",
  16927. function(info) {
  16928. self.onPointerMove(info);
  16929. },
  16930. false
  16931. );
  16932. elem.addEventListener("pointerup",
  16933. function(info) {
  16934. self.onPointerEnd(info);
  16935. },
  16936. false
  16937. );
  16938. elem.addEventListener("pointercancel",
  16939. function(info) {
  16940. self.onPointerEnd(info);
  16941. },
  16942. false
  16943. );
  16944. }
  16945. else if (window.navigator["msPointerEnabled"])
  16946. {
  16947. elem.addEventListener("MSPointerDown",
  16948. function(info) {
  16949. self.onPointerStart(info);
  16950. },
  16951. false
  16952. );
  16953. elem.addEventListener("MSPointerMove",
  16954. function(info) {
  16955. self.onPointerMove(info);
  16956. },
  16957. false
  16958. );
  16959. elem.addEventListener("MSPointerUp",
  16960. function(info) {
  16961. self.onPointerEnd(info);
  16962. },
  16963. false
  16964. );
  16965. elem.addEventListener("MSPointerCancel",
  16966. function(info) {
  16967. self.onPointerEnd(info);
  16968. },
  16969. false
  16970. );
  16971. }
  16972. else
  16973. {
  16974. elem.addEventListener("touchstart",
  16975. function(info) {
  16976. self.onTouchStart(info);
  16977. },
  16978. false
  16979. );
  16980. elem.addEventListener("touchmove",
  16981. function(info) {
  16982. self.onTouchMove(info);
  16983. },
  16984. false
  16985. );
  16986. elem.addEventListener("touchend",
  16987. function(info) {
  16988. self.onTouchEnd(info);
  16989. },
  16990. false
  16991. );
  16992. elem.addEventListener("touchcancel",
  16993. function(info) {
  16994. self.onTouchEnd(info);
  16995. },
  16996. false
  16997. );
  16998. }
  16999. };
  17000. (function ()
  17001. {
  17002. var behaviorProto = cr.behaviors.DragnDrop.prototype;
  17003. var dummyoffset = {left: 0, top: 0};
  17004. function GetDragDropBehavior(inst)
  17005. {
  17006. var i, len;
  17007. for (i = 0, len = inst.behavior_insts.length; i < len; i++)
  17008. {
  17009. if (inst.behavior_insts[i] instanceof behaviorProto.Instance)
  17010. return inst.behavior_insts[i];
  17011. }
  17012. return null;
  17013. };
  17014. behaviorProto.onMouseDown = function (info)
  17015. {
  17016. if (info.which !== 1)
  17017. return; // not left mouse button
  17018. this.onInputDown("leftmouse", info.pageX, info.pageY);
  17019. };
  17020. behaviorProto.onMouseMove = function (info)
  17021. {
  17022. if (info.which !== 1)
  17023. return; // not left mouse button
  17024. this.onInputMove("leftmouse", info.pageX, info.pageY);
  17025. };
  17026. behaviorProto.onMouseUp = function (info)
  17027. {
  17028. if (info.which !== 1)
  17029. return; // not left mouse button
  17030. this.onInputUp("leftmouse");
  17031. };
  17032. behaviorProto.onTouchStart = function (info)
  17033. {
  17034. if (info.preventDefault)
  17035. info.preventDefault();
  17036. var i, len, t, id;
  17037. for (i = 0, len = info.changedTouches.length; i < len; i++)
  17038. {
  17039. t = info.changedTouches[i];
  17040. id = t.identifier;
  17041. this.onInputDown(id ? id.toString() : "<none>", t.pageX, t.pageY);
  17042. }
  17043. };
  17044. behaviorProto.onTouchMove = function (info)
  17045. {
  17046. if (info.preventDefault)
  17047. info.preventDefault();
  17048. var i, len, t, id;
  17049. for (i = 0, len = info.changedTouches.length; i < len; i++)
  17050. {
  17051. t = info.changedTouches[i];
  17052. id = t.identifier;
  17053. this.onInputMove(id ? id.toString() : "<none>", t.pageX, t.pageY);
  17054. }
  17055. };
  17056. behaviorProto.onTouchEnd = function (info)
  17057. {
  17058. if (info.preventDefault)
  17059. info.preventDefault();
  17060. var i, len, t, id;
  17061. for (i = 0, len = info.changedTouches.length; i < len; i++)
  17062. {
  17063. t = info.changedTouches[i];
  17064. id = t.identifier;
  17065. this.onInputUp(id ? id.toString() : "<none>");
  17066. }
  17067. };
  17068. behaviorProto.onPointerStart = function (info)
  17069. {
  17070. if (info["pointerType"] === info["MSPOINTER_TYPE_MOUSE"] || info["pointerType"] === "mouse")
  17071. return;
  17072. if (info.preventDefault)
  17073. info.preventDefault();
  17074. this.onInputDown(info["pointerId"].toString(), info.pageX, info.pageY);
  17075. };
  17076. behaviorProto.onPointerMove = function (info)
  17077. {
  17078. if (info["pointerType"] === info["MSPOINTER_TYPE_MOUSE"] || info["pointerType"] === "mouse")
  17079. return;
  17080. if (info.preventDefault)
  17081. info.preventDefault();
  17082. this.onInputMove(info["pointerId"].toString(), info.pageX, info.pageY);
  17083. };
  17084. behaviorProto.onPointerEnd = function (info)
  17085. {
  17086. if (info["pointerType"] === info["MSPOINTER_TYPE_MOUSE"] || info["pointerType"] === "mouse")
  17087. return;
  17088. if (info.preventDefault)
  17089. info.preventDefault();
  17090. this.onInputUp(info["pointerId"].toString());
  17091. };
  17092. behaviorProto.onInputDown = function (src, pageX, pageY)
  17093. {
  17094. var offset = this.runtime.isDomFree ? dummyoffset : jQuery(this.runtime.canvas).offset();
  17095. var x = pageX - offset.left;
  17096. var y = pageY - offset.top;
  17097. var lx, ly, topx, topy;
  17098. var arr = this.my_instances.valuesRef();
  17099. var i, len, b, inst, topmost = null;
  17100. for (i = 0, len = arr.length; i < len; i++)
  17101. {
  17102. inst = arr[i];
  17103. b = GetDragDropBehavior(inst);
  17104. if (!b.enabled || b.dragging)
  17105. continue; // don't consider disabled or already-dragging instances
  17106. lx = inst.layer.canvasToLayer(x, y, true);
  17107. ly = inst.layer.canvasToLayer(x, y, false);
  17108. inst.update_bbox();
  17109. if (!inst.contains_pt(lx, ly))
  17110. continue; // don't consider instances not over this point
  17111. if (!topmost)
  17112. {
  17113. topmost = inst;
  17114. topx = lx;
  17115. topy = ly;
  17116. continue;
  17117. }
  17118. if (inst.layer.index > topmost.layer.index)
  17119. {
  17120. topmost = inst;
  17121. topx = lx;
  17122. topy = ly;
  17123. continue;
  17124. }
  17125. if (inst.layer.index === topmost.layer.index && inst.get_zindex() > topmost.get_zindex())
  17126. {
  17127. topmost = inst;
  17128. topx = lx;
  17129. topy = ly;
  17130. continue;
  17131. }
  17132. }
  17133. if (topmost)
  17134. GetDragDropBehavior(topmost).onDown(src, topx, topy);
  17135. };
  17136. behaviorProto.onInputMove = function (src, pageX, pageY)
  17137. {
  17138. var offset = this.runtime.isDomFree ? dummyoffset : jQuery(this.runtime.canvas).offset();
  17139. var x = pageX - offset.left;
  17140. var y = pageY - offset.top;
  17141. var lx, ly;
  17142. var arr = this.my_instances.valuesRef();
  17143. var i, len, b, inst;
  17144. for (i = 0, len = arr.length; i < len; i++)
  17145. {
  17146. inst = arr[i];
  17147. b = GetDragDropBehavior(inst);
  17148. if (!b.enabled || !b.dragging || (b.dragging && b.dragsource !== src))
  17149. continue; // don't consider disabled, not-dragging, or dragging by other sources
  17150. lx = inst.layer.canvasToLayer(x, y, true);
  17151. ly = inst.layer.canvasToLayer(x, y, false);
  17152. b.onMove(lx, ly);
  17153. }
  17154. };
  17155. behaviorProto.onInputUp = function (src)
  17156. {
  17157. var arr = this.my_instances.valuesRef();
  17158. var i, len, b, inst;
  17159. for (i = 0, len = arr.length; i < len; i++)
  17160. {
  17161. inst = arr[i];
  17162. b = GetDragDropBehavior(inst);
  17163. if (b.dragging && b.dragsource === src)
  17164. b.onUp();
  17165. }
  17166. };
  17167. behaviorProto.Type = function(behavior, objtype)
  17168. {
  17169. this.behavior = behavior;
  17170. this.objtype = objtype;
  17171. this.runtime = behavior.runtime;
  17172. };
  17173. var behtypeProto = behaviorProto.Type.prototype;
  17174. behtypeProto.onCreate = function()
  17175. {
  17176. };
  17177. behaviorProto.Instance = function(type, inst)
  17178. {
  17179. this.type = type;
  17180. this.behavior = type.behavior;
  17181. this.inst = inst; // associated object instance to modify
  17182. this.runtime = type.runtime;
  17183. };
  17184. var behinstProto = behaviorProto.Instance.prototype;
  17185. behinstProto.onCreate = function()
  17186. {
  17187. this.dragging = false;
  17188. this.dx = 0;
  17189. this.dy = 0;
  17190. this.dragsource = "<none>";
  17191. this.axes = this.properties[0];
  17192. this.enabled = (this.properties[1] !== 0);
  17193. };
  17194. behinstProto.saveToJSON = function ()
  17195. {
  17196. return { "enabled": this.enabled };
  17197. };
  17198. behinstProto.loadFromJSON = function (o)
  17199. {
  17200. this.enabled = o["enabled"];
  17201. this.dragging = false;
  17202. };
  17203. behinstProto.onDown = function(src, x, y)
  17204. {
  17205. this.dx = x - this.inst.x;
  17206. this.dy = y - this.inst.y;
  17207. this.dragging = true;
  17208. this.dragsource = src;
  17209. this.runtime.isInUserInputEvent = true;
  17210. this.runtime.trigger(cr.behaviors.DragnDrop.prototype.cnds.OnDragStart, this.inst);
  17211. this.runtime.isInUserInputEvent = false;
  17212. };
  17213. behinstProto.onMove = function(x, y)
  17214. {
  17215. var newx = x - this.dx;
  17216. var newy = y - this.dy;
  17217. if (this.axes === 0) // both
  17218. {
  17219. if (this.inst.x !== newx || this.inst.y !== newy)
  17220. {
  17221. this.inst.x = newx;
  17222. this.inst.y = newy;
  17223. this.inst.set_bbox_changed();
  17224. }
  17225. }
  17226. else if (this.axes === 1) // horizontal
  17227. {
  17228. if (this.inst.x !== newx)
  17229. {
  17230. this.inst.x = newx;
  17231. this.inst.set_bbox_changed();
  17232. }
  17233. }
  17234. else if (this.axes === 2) // vertical
  17235. {
  17236. if (this.inst.y !== newy)
  17237. {
  17238. this.inst.y = newy;
  17239. this.inst.set_bbox_changed();
  17240. }
  17241. }
  17242. };
  17243. behinstProto.onUp = function()
  17244. {
  17245. this.dragging = false;
  17246. this.runtime.isInUserInputEvent = true;
  17247. this.runtime.trigger(cr.behaviors.DragnDrop.prototype.cnds.OnDrop, this.inst);
  17248. this.runtime.isInUserInputEvent = false;
  17249. };
  17250. behinstProto.tick = function ()
  17251. {
  17252. };
  17253. function Cnds() {};
  17254. Cnds.prototype.IsDragging = function ()
  17255. {
  17256. return this.dragging;
  17257. };
  17258. Cnds.prototype.OnDragStart = function ()
  17259. {
  17260. return true;
  17261. };
  17262. Cnds.prototype.OnDrop = function ()
  17263. {
  17264. return true;
  17265. };
  17266. Cnds.prototype.IsEnabled = function ()
  17267. {
  17268. return !!this.enabled;
  17269. };
  17270. behaviorProto.cnds = new Cnds();
  17271. function Acts() {};
  17272. Acts.prototype.SetEnabled = function (s)
  17273. {
  17274. this.enabled = (s !== 0);
  17275. if (!this.enabled)
  17276. this.dragging = false;
  17277. };
  17278. Acts.prototype.Drop = function ()
  17279. {
  17280. if (this.dragging)
  17281. this.onUp();
  17282. };
  17283. behaviorProto.acts = new Acts();
  17284. function Exps() {};
  17285. behaviorProto.exps = new Exps();
  17286. }());
  17287. ;
  17288. ;
  17289. cr.behaviors.EightDir = function(runtime)
  17290. {
  17291. this.runtime = runtime;
  17292. };
  17293. (function ()
  17294. {
  17295. var behaviorProto = cr.behaviors.EightDir.prototype;
  17296. behaviorProto.Type = function(behavior, objtype)
  17297. {
  17298. this.behavior = behavior;
  17299. this.objtype = objtype;
  17300. this.runtime = behavior.runtime;
  17301. };
  17302. var behtypeProto = behaviorProto.Type.prototype;
  17303. behtypeProto.onCreate = function()
  17304. {
  17305. };
  17306. behaviorProto.Instance = function(type, inst)
  17307. {
  17308. this.type = type;
  17309. this.behavior = type.behavior;
  17310. this.inst = inst; // associated object instance to modify
  17311. this.runtime = type.runtime;
  17312. this.upkey = false;
  17313. this.downkey = false;
  17314. this.leftkey = false;
  17315. this.rightkey = false;
  17316. this.ignoreInput = false;
  17317. this.simup = false;
  17318. this.simdown = false;
  17319. this.simleft = false;
  17320. this.simright = false;
  17321. this.lastuptick = -1;
  17322. this.lastdowntick = -1;
  17323. this.lastlefttick = -1;
  17324. this.lastrighttick = -1;
  17325. this.dx = 0;
  17326. this.dy = 0;
  17327. };
  17328. var behinstProto = behaviorProto.Instance.prototype;
  17329. behinstProto.onCreate = function()
  17330. {
  17331. this.maxspeed = this.properties[0];
  17332. this.acc = this.properties[1];
  17333. this.dec = this.properties[2];
  17334. this.directions = this.properties[3]; // 0=Up & down, 1=Left & right, 2=4 directions, 3=8 directions"
  17335. this.angleMode = this.properties[4]; // 0=No,1=90-degree intervals, 2=45-degree intervals, 3=360 degree (smooth)
  17336. this.defaultControls = (this.properties[5] === 1); // 0=no, 1=yes
  17337. this.enabled = (this.properties[6] !== 0);
  17338. if (this.defaultControls && !this.runtime.isDomFree)
  17339. {
  17340. jQuery(document).keydown(
  17341. (function (self) {
  17342. return function(info) {
  17343. self.onKeyDown(info);
  17344. };
  17345. })(this)
  17346. );
  17347. jQuery(document).keyup(
  17348. (function (self) {
  17349. return function(info) {
  17350. self.onKeyUp(info);
  17351. };
  17352. })(this)
  17353. );
  17354. }
  17355. };
  17356. behinstProto.saveToJSON = function ()
  17357. {
  17358. return {
  17359. "dx": this.dx,
  17360. "dy": this.dy,
  17361. "enabled": this.enabled,
  17362. "maxspeed": this.maxspeed,
  17363. "acc": this.acc,
  17364. "dec": this.dec,
  17365. "ignoreInput": this.ignoreInput
  17366. };
  17367. };
  17368. behinstProto.loadFromJSON = function (o)
  17369. {
  17370. this.dx = o["dx"];
  17371. this.dy = o["dy"];
  17372. this.enabled = o["enabled"];
  17373. this.maxspeed = o["maxspeed"];
  17374. this.acc = o["acc"];
  17375. this.dec = o["dec"];
  17376. this.ignoreInput = o["ignoreInput"];
  17377. this.upkey = false;
  17378. this.downkey = false;
  17379. this.leftkey = false;
  17380. this.rightkey = false;
  17381. this.simup = false;
  17382. this.simdown = false;
  17383. this.simleft = false;
  17384. this.simright = false;
  17385. this.lastuptick = -1;
  17386. this.lastdowntick = -1;
  17387. this.lastlefttick = -1;
  17388. this.lastrighttick = -1;
  17389. };
  17390. behinstProto.onKeyDown = function (info)
  17391. {
  17392. var tickcount = this.runtime.tickcount;
  17393. switch (info.which) {
  17394. case 37: // left
  17395. info.preventDefault();
  17396. if (this.lastlefttick < tickcount)
  17397. this.leftkey = true;
  17398. break;
  17399. case 38: // up
  17400. info.preventDefault();
  17401. if (this.lastuptick < tickcount)
  17402. this.upkey = true;
  17403. break;
  17404. case 39: // right
  17405. info.preventDefault();
  17406. if (this.lastrighttick < tickcount)
  17407. this.rightkey = true;
  17408. break;
  17409. case 40: // down
  17410. info.preventDefault();
  17411. if (this.lastdowntick < tickcount)
  17412. this.downkey = true;
  17413. break;
  17414. }
  17415. };
  17416. behinstProto.onKeyUp = function (info)
  17417. {
  17418. var tickcount = this.runtime.tickcount;
  17419. switch (info.which) {
  17420. case 37: // left
  17421. info.preventDefault();
  17422. this.leftkey = false;
  17423. this.lastlefttick = tickcount;
  17424. break;
  17425. case 38: // up
  17426. info.preventDefault();
  17427. this.upkey = false;
  17428. this.lastuptick = tickcount;
  17429. break;
  17430. case 39: // right
  17431. info.preventDefault();
  17432. this.rightkey = false;
  17433. this.lastrighttick = tickcount;
  17434. break;
  17435. case 40: // down
  17436. info.preventDefault();
  17437. this.downkey = false;
  17438. this.lastdowntick = tickcount;
  17439. break;
  17440. }
  17441. };
  17442. behinstProto.tick = function ()
  17443. {
  17444. var dt = this.runtime.getDt(this.inst);
  17445. var left = this.leftkey || this.simleft;
  17446. var right = this.rightkey || this.simright;
  17447. var up = this.upkey || this.simup;
  17448. var down = this.downkey || this.simdown;
  17449. this.simleft = false;
  17450. this.simright = false;
  17451. this.simup = false;
  17452. this.simdown = false;
  17453. if (!this.enabled)
  17454. return;
  17455. var collobj = this.runtime.testOverlapSolid(this.inst);
  17456. if (collobj)
  17457. {
  17458. this.runtime.registerCollision(this.inst, collobj);
  17459. if (!this.runtime.pushOutSolidNearest(this.inst))
  17460. return; // must be stuck in solid
  17461. }
  17462. if (this.ignoreInput)
  17463. {
  17464. left = false;
  17465. right = false;
  17466. up = false;
  17467. down = false;
  17468. }
  17469. if (this.directions === 0)
  17470. {
  17471. left = false;
  17472. right = false;
  17473. }
  17474. else if (this.directions === 1)
  17475. {
  17476. up = false;
  17477. down = false;
  17478. }
  17479. if (this.directions === 2 && (up || down))
  17480. {
  17481. left = false;
  17482. right = false;
  17483. }
  17484. if (left == right) // both up or both down
  17485. {
  17486. if (this.dx < 0)
  17487. {
  17488. this.dx += this.dec * dt;
  17489. if (this.dx > 0)
  17490. this.dx = 0;
  17491. }
  17492. else if (this.dx > 0)
  17493. {
  17494. this.dx -= this.dec * dt;
  17495. if (this.dx < 0)
  17496. this.dx = 0;
  17497. }
  17498. }
  17499. if (up == down)
  17500. {
  17501. if (this.dy < 0)
  17502. {
  17503. this.dy += this.dec * dt;
  17504. if (this.dy > 0)
  17505. this.dy = 0;
  17506. }
  17507. else if (this.dy > 0)
  17508. {
  17509. this.dy -= this.dec * dt;
  17510. if (this.dy < 0)
  17511. this.dy = 0;
  17512. }
  17513. }
  17514. if (left && !right)
  17515. {
  17516. if (this.dx > 0)
  17517. this.dx -= (this.acc + this.dec) * dt;
  17518. else
  17519. this.dx -= this.acc * dt;
  17520. }
  17521. if (right && !left)
  17522. {
  17523. if (this.dx < 0)
  17524. this.dx += (this.acc + this.dec) * dt;
  17525. else
  17526. this.dx += this.acc * dt;
  17527. }
  17528. if (up && !down)
  17529. {
  17530. if (this.dy > 0)
  17531. this.dy -= (this.acc + this.dec) * dt;
  17532. else
  17533. this.dy -= this.acc * dt;
  17534. }
  17535. if (down && !up)
  17536. {
  17537. if (this.dy < 0)
  17538. this.dy += (this.acc + this.dec) * dt;
  17539. else
  17540. this.dy += this.acc * dt;
  17541. }
  17542. var ax, ay;
  17543. if (this.dx !== 0 || this.dy !== 0)
  17544. {
  17545. var speed = Math.sqrt(this.dx * this.dx + this.dy * this.dy);
  17546. if (speed > this.maxspeed)
  17547. {
  17548. var a = Math.atan2(this.dy, this.dx);
  17549. this.dx = this.maxspeed * Math.cos(a);
  17550. this.dy = this.maxspeed * Math.sin(a);
  17551. }
  17552. var oldx = this.inst.x;
  17553. var oldy = this.inst.y;
  17554. var oldangle = this.inst.angle;
  17555. this.inst.x += this.dx * dt;
  17556. this.inst.set_bbox_changed();
  17557. collobj = this.runtime.testOverlapSolid(this.inst);
  17558. if (collobj)
  17559. {
  17560. this.inst.x = oldx;
  17561. this.dx = 0;
  17562. this.inst.set_bbox_changed();
  17563. this.runtime.registerCollision(this.inst, collobj);
  17564. }
  17565. this.inst.y += this.dy * dt;
  17566. this.inst.set_bbox_changed();
  17567. collobj = this.runtime.testOverlapSolid(this.inst);
  17568. if (collobj)
  17569. {
  17570. this.inst.y = oldy;
  17571. this.dy = 0;
  17572. this.inst.set_bbox_changed();
  17573. this.runtime.registerCollision(this.inst, collobj);
  17574. }
  17575. ax = cr.round6dp(this.dx);
  17576. ay = cr.round6dp(this.dy);
  17577. if (ax !== 0 || ay !== 0)
  17578. {
  17579. if (this.angleMode === 1) // 90 degree intervals
  17580. this.inst.angle = cr.to_clamped_radians(Math.round(cr.to_degrees(Math.atan2(ay, ax)) / 90.0) * 90.0);
  17581. else if (this.angleMode === 2) // 45 degree intervals
  17582. this.inst.angle = cr.to_clamped_radians(Math.round(cr.to_degrees(Math.atan2(ay, ax)) / 45.0) * 45.0);
  17583. else if (this.angleMode === 3) // 360 degree
  17584. this.inst.angle = Math.atan2(ay, ax);
  17585. }
  17586. this.inst.set_bbox_changed();
  17587. if (this.inst.angle != oldangle)
  17588. {
  17589. collobj = this.runtime.testOverlapSolid(this.inst);
  17590. if (collobj)
  17591. {
  17592. this.inst.angle = oldangle;
  17593. this.inst.set_bbox_changed();
  17594. this.runtime.registerCollision(this.inst, collobj);
  17595. }
  17596. }
  17597. }
  17598. };
  17599. function Cnds() {};
  17600. Cnds.prototype.IsMoving = function ()
  17601. {
  17602. return this.dx !== 0 || this.dy !== 0;
  17603. };
  17604. Cnds.prototype.CompareSpeed = function (cmp, s)
  17605. {
  17606. var speed = Math.sqrt(this.dx * this.dx + this.dy * this.dy);
  17607. return cr.do_cmp(speed, cmp, s);
  17608. };
  17609. behaviorProto.cnds = new Cnds();
  17610. function Acts() {};
  17611. Acts.prototype.Stop = function ()
  17612. {
  17613. this.dx = 0;
  17614. this.dy = 0;
  17615. };
  17616. Acts.prototype.Reverse = function ()
  17617. {
  17618. this.dx *= -1;
  17619. this.dy *= -1;
  17620. };
  17621. Acts.prototype.SetIgnoreInput = function (ignoring)
  17622. {
  17623. this.ignoreInput = ignoring;
  17624. };
  17625. Acts.prototype.SetSpeed = function (speed)
  17626. {
  17627. if (speed < 0)
  17628. speed = 0;
  17629. if (speed > this.maxspeed)
  17630. speed = this.maxspeed;
  17631. var a = Math.atan2(this.dy, this.dx);
  17632. this.dx = speed * Math.cos(a);
  17633. this.dy = speed * Math.sin(a);
  17634. };
  17635. Acts.prototype.SetMaxSpeed = function (maxspeed)
  17636. {
  17637. this.maxspeed = maxspeed;
  17638. if (this.maxspeed < 0)
  17639. this.maxspeed = 0;
  17640. };
  17641. Acts.prototype.SetAcceleration = function (acc)
  17642. {
  17643. this.acc = acc;
  17644. if (this.acc < 0)
  17645. this.acc = 0;
  17646. };
  17647. Acts.prototype.SetDeceleration = function (dec)
  17648. {
  17649. this.dec = dec;
  17650. if (this.dec < 0)
  17651. this.dec = 0;
  17652. };
  17653. Acts.prototype.SimulateControl = function (ctrl)
  17654. {
  17655. switch (ctrl) {
  17656. case 0: this.simleft = true; break;
  17657. case 1: this.simright = true; break;
  17658. case 2: this.simup = true; break;
  17659. case 3: this.simdown = true; break;
  17660. }
  17661. };
  17662. Acts.prototype.SetEnabled = function (en)
  17663. {
  17664. this.enabled = (en === 1);
  17665. };
  17666. Acts.prototype.SetVectorX = function (x_)
  17667. {
  17668. this.dx = x_;
  17669. };
  17670. Acts.prototype.SetVectorY = function (y_)
  17671. {
  17672. this.dy = y_;
  17673. };
  17674. behaviorProto.acts = new Acts();
  17675. function Exps() {};
  17676. Exps.prototype.Speed = function (ret)
  17677. {
  17678. ret.set_float(Math.sqrt(this.dx * this.dx + this.dy * this.dy));
  17679. };
  17680. Exps.prototype.MaxSpeed = function (ret)
  17681. {
  17682. ret.set_float(this.maxspeed);
  17683. };
  17684. Exps.prototype.Acceleration = function (ret)
  17685. {
  17686. ret.set_float(this.acc);
  17687. };
  17688. Exps.prototype.Deceleration = function (ret)
  17689. {
  17690. ret.set_float(this.dec);
  17691. };
  17692. Exps.prototype.MovingAngle = function (ret)
  17693. {
  17694. ret.set_float(cr.to_degrees(Math.atan2(this.dy, this.dx)));
  17695. };
  17696. Exps.prototype.VectorX = function (ret)
  17697. {
  17698. ret.set_float(this.dx);
  17699. };
  17700. Exps.prototype.VectorY = function (ret)
  17701. {
  17702. ret.set_float(this.dy);
  17703. };
  17704. behaviorProto.exps = new Exps();
  17705. }());
  17706. ;
  17707. ;
  17708. cr.behaviors.Fade = function(runtime)
  17709. {
  17710. this.runtime = runtime;
  17711. };
  17712. (function ()
  17713. {
  17714. var behaviorProto = cr.behaviors.Fade.prototype;
  17715. behaviorProto.Type = function(behavior, objtype)
  17716. {
  17717. this.behavior = behavior;
  17718. this.objtype = objtype;
  17719. this.runtime = behavior.runtime;
  17720. };
  17721. var behtypeProto = behaviorProto.Type.prototype;
  17722. behtypeProto.onCreate = function()
  17723. {
  17724. };
  17725. behaviorProto.Instance = function(type, inst)
  17726. {
  17727. this.type = type;
  17728. this.behavior = type.behavior;
  17729. this.inst = inst; // associated object instance to modify
  17730. this.runtime = type.runtime;
  17731. };
  17732. var behinstProto = behaviorProto.Instance.prototype;
  17733. behinstProto.onCreate = function()
  17734. {
  17735. var active_at_start = this.properties[0] === 1;
  17736. this.fadeInTime = this.properties[1];
  17737. this.waitTime = this.properties[2];
  17738. this.fadeOutTime = this.properties[3];
  17739. this.destroy = this.properties[4]; // 0 = no, 1 = after fade out
  17740. this.stage = active_at_start ? 0 : 3; // 0 = fade in, 1 = wait, 2 = fade out, 3 = done
  17741. if (this.recycled)
  17742. this.stageTime.reset();
  17743. else
  17744. this.stageTime = new cr.KahanAdder();
  17745. this.maxOpacity = (this.inst.opacity ? this.inst.opacity : 1.0);
  17746. if (active_at_start)
  17747. {
  17748. if (this.fadeInTime === 0)
  17749. {
  17750. this.stage = 1;
  17751. if (this.waitTime === 0)
  17752. this.stage = 2;
  17753. }
  17754. else
  17755. {
  17756. this.inst.opacity = 0;
  17757. this.runtime.redraw = true;
  17758. }
  17759. }
  17760. };
  17761. behinstProto.saveToJSON = function ()
  17762. {
  17763. return {
  17764. "fit": this.fadeInTime,
  17765. "wt": this.waitTime,
  17766. "fot": this.fadeOutTime,
  17767. "s": this.stage,
  17768. "st": this.stageTime.sum,
  17769. "mo": this.maxOpacity,
  17770. };
  17771. };
  17772. behinstProto.loadFromJSON = function (o)
  17773. {
  17774. this.fadeInTime = o["fit"];
  17775. this.waitTime = o["wt"];
  17776. this.fadeOutTime = o["fot"];
  17777. this.stage = o["s"];
  17778. this.stageTime.reset();
  17779. this.stageTime.sum = o["st"];
  17780. this.maxOpacity = o["mo"];
  17781. };
  17782. behinstProto.tick = function ()
  17783. {
  17784. this.stageTime.add(this.runtime.getDt(this.inst));
  17785. if (this.stage === 0)
  17786. {
  17787. this.inst.opacity = (this.stageTime.sum / this.fadeInTime) * this.maxOpacity;
  17788. this.runtime.redraw = true;
  17789. if (this.inst.opacity >= this.maxOpacity)
  17790. {
  17791. this.inst.opacity = this.maxOpacity;
  17792. this.stage = 1; // wait stage
  17793. this.stageTime.reset();
  17794. }
  17795. }
  17796. if (this.stage === 1)
  17797. {
  17798. if (this.stageTime.sum >= this.waitTime)
  17799. {
  17800. this.stage = 2; // fade out stage
  17801. this.stageTime.reset();
  17802. }
  17803. }
  17804. if (this.stage === 2)
  17805. {
  17806. if (this.fadeOutTime !== 0)
  17807. {
  17808. this.inst.opacity = this.maxOpacity - ((this.stageTime.sum / this.fadeOutTime) * this.maxOpacity);
  17809. this.runtime.redraw = true;
  17810. if (this.inst.opacity < 0)
  17811. {
  17812. this.inst.opacity = 0;
  17813. this.stage = 3; // done
  17814. this.stageTime.reset();
  17815. this.runtime.trigger(cr.behaviors.Fade.prototype.cnds.OnFadeOutEnd, this.inst);
  17816. if (this.destroy === 1)
  17817. this.runtime.DestroyInstance(this.inst);
  17818. }
  17819. }
  17820. }
  17821. };
  17822. behinstProto.doStart = function ()
  17823. {
  17824. this.stage = 0;
  17825. this.stageTime.reset();
  17826. if (this.fadeInTime === 0)
  17827. {
  17828. this.stage = 1;
  17829. if (this.waitTime === 0)
  17830. this.stage = 2;
  17831. }
  17832. else
  17833. {
  17834. this.inst.opacity = 0;
  17835. this.runtime.redraw = true;
  17836. }
  17837. };
  17838. function Cnds() {};
  17839. Cnds.prototype.OnFadeOutEnd = function ()
  17840. {
  17841. return true;
  17842. };
  17843. behaviorProto.cnds = new Cnds();
  17844. function Acts() {};
  17845. Acts.prototype.StartFade = function ()
  17846. {
  17847. if (this.stage === 3)
  17848. this.doStart();
  17849. };
  17850. Acts.prototype.RestartFade = function ()
  17851. {
  17852. this.doStart();
  17853. };
  17854. behaviorProto.acts = new Acts();
  17855. }());
  17856. ;
  17857. ;
  17858. cr.behaviors.Sin = function(runtime)
  17859. {
  17860. this.runtime = runtime;
  17861. };
  17862. (function ()
  17863. {
  17864. var behaviorProto = cr.behaviors.Sin.prototype;
  17865. behaviorProto.Type = function(behavior, objtype)
  17866. {
  17867. this.behavior = behavior;
  17868. this.objtype = objtype;
  17869. this.runtime = behavior.runtime;
  17870. };
  17871. var behtypeProto = behaviorProto.Type.prototype;
  17872. behtypeProto.onCreate = function()
  17873. {
  17874. };
  17875. behaviorProto.Instance = function(type, inst)
  17876. {
  17877. this.type = type;
  17878. this.behavior = type.behavior;
  17879. this.inst = inst; // associated object instance to modify
  17880. this.runtime = type.runtime;
  17881. this.i = 0; // period offset (radians)
  17882. };
  17883. var behinstProto = behaviorProto.Instance.prototype;
  17884. var _2pi = 2 * Math.PI;
  17885. var _pi_2 = Math.PI / 2;
  17886. var _3pi_2 = (3 * Math.PI) / 2;
  17887. behinstProto.onCreate = function()
  17888. {
  17889. this.active = (this.properties[0] === 1);
  17890. this.movement = this.properties[1]; // 0=Horizontal|1=Vertical|2=Size|3=Width|4=Height|5=Angle|6=Opacity|7=Value only
  17891. this.wave = this.properties[2]; // 0=Sine|1=Triangle|2=Sawtooth|3=Reverse sawtooth|4=Square
  17892. this.period = this.properties[3];
  17893. this.period += Math.random() * this.properties[4]; // period random
  17894. if (this.period === 0)
  17895. this.i = 0;
  17896. else
  17897. {
  17898. this.i = (this.properties[5] / this.period) * _2pi; // period offset
  17899. this.i += ((Math.random() * this.properties[6]) / this.period) * _2pi; // period offset random
  17900. }
  17901. this.mag = this.properties[7]; // magnitude
  17902. this.mag += Math.random() * this.properties[8]; // magnitude random
  17903. this.initialValue = 0;
  17904. this.initialValue2 = 0;
  17905. this.ratio = 0;
  17906. this.init();
  17907. };
  17908. behinstProto.saveToJSON = function ()
  17909. {
  17910. return {
  17911. "i": this.i,
  17912. "a": this.active,
  17913. "mv": this.movement,
  17914. "w": this.wave,
  17915. "p": this.period,
  17916. "mag": this.mag,
  17917. "iv": this.initialValue,
  17918. "iv2": this.initialValue2,
  17919. "r": this.ratio,
  17920. "lkv": this.lastKnownValue,
  17921. "lkv2": this.lastKnownValue2
  17922. };
  17923. };
  17924. behinstProto.loadFromJSON = function (o)
  17925. {
  17926. this.i = o["i"];
  17927. this.active = o["a"];
  17928. this.movement = o["mv"];
  17929. this.wave = o["w"];
  17930. this.period = o["p"];
  17931. this.mag = o["mag"];
  17932. this.initialValue = o["iv"];
  17933. this.initialValue2 = o["iv2"] || 0;
  17934. this.ratio = o["r"];
  17935. this.lastKnownValue = o["lkv"];
  17936. this.lastKnownValue2 = o["lkv2"] || 0;
  17937. };
  17938. behinstProto.init = function ()
  17939. {
  17940. switch (this.movement) {
  17941. case 0: // horizontal
  17942. this.initialValue = this.inst.x;
  17943. break;
  17944. case 1: // vertical
  17945. this.initialValue = this.inst.y;
  17946. break;
  17947. case 2: // size
  17948. this.initialValue = this.inst.width;
  17949. this.ratio = this.inst.height / this.inst.width;
  17950. break;
  17951. case 3: // width
  17952. this.initialValue = this.inst.width;
  17953. break;
  17954. case 4: // height
  17955. this.initialValue = this.inst.height;
  17956. break;
  17957. case 5: // angle
  17958. this.initialValue = this.inst.angle;
  17959. this.mag = cr.to_radians(this.mag); // convert magnitude from degrees to radians
  17960. break;
  17961. case 6: // opacity
  17962. this.initialValue = this.inst.opacity;
  17963. break;
  17964. case 7:
  17965. this.initialValue = 0;
  17966. break;
  17967. case 8: // forwards/backwards
  17968. this.initialValue = this.inst.x;
  17969. this.initialValue2 = this.inst.y;
  17970. break;
  17971. default:
  17972. ;
  17973. }
  17974. this.lastKnownValue = this.initialValue;
  17975. this.lastKnownValue2 = this.initialValue2;
  17976. };
  17977. behinstProto.waveFunc = function (x)
  17978. {
  17979. x = x % _2pi;
  17980. switch (this.wave) {
  17981. case 0: // sine
  17982. return Math.sin(x);
  17983. case 1: // triangle
  17984. if (x <= _pi_2)
  17985. return x / _pi_2;
  17986. else if (x <= _3pi_2)
  17987. return 1 - (2 * (x - _pi_2) / Math.PI);
  17988. else
  17989. return (x - _3pi_2) / _pi_2 - 1;
  17990. case 2: // sawtooth
  17991. return 2 * x / _2pi - 1;
  17992. case 3: // reverse sawtooth
  17993. return -2 * x / _2pi + 1;
  17994. case 4: // square
  17995. return x < Math.PI ? -1 : 1;
  17996. };
  17997. return 0;
  17998. };
  17999. behinstProto.tick = function ()
  18000. {
  18001. var dt = this.runtime.getDt(this.inst);
  18002. if (!this.active || dt === 0)
  18003. return;
  18004. if (this.period === 0)
  18005. this.i = 0;
  18006. else
  18007. {
  18008. this.i += (dt / this.period) * _2pi;
  18009. this.i = this.i % _2pi;
  18010. }
  18011. switch (this.movement) {
  18012. case 0: // horizontal
  18013. if (this.inst.x !== this.lastKnownValue)
  18014. this.initialValue += this.inst.x - this.lastKnownValue;
  18015. this.inst.x = this.initialValue + this.waveFunc(this.i) * this.mag;
  18016. this.lastKnownValue = this.inst.x;
  18017. break;
  18018. case 1: // vertical
  18019. if (this.inst.y !== this.lastKnownValue)
  18020. this.initialValue += this.inst.y - this.lastKnownValue;
  18021. this.inst.y = this.initialValue + this.waveFunc(this.i) * this.mag;
  18022. this.lastKnownValue = this.inst.y;
  18023. break;
  18024. case 2: // size
  18025. this.inst.width = this.initialValue + this.waveFunc(this.i) * this.mag;
  18026. this.inst.height = this.inst.width * this.ratio;
  18027. break;
  18028. case 3: // width
  18029. this.inst.width = this.initialValue + this.waveFunc(this.i) * this.mag;
  18030. break;
  18031. case 4: // height
  18032. this.inst.height = this.initialValue + this.waveFunc(this.i) * this.mag;
  18033. break;
  18034. case 5: // angle
  18035. if (this.inst.angle !== this.lastKnownValue)
  18036. this.initialValue = cr.clamp_angle(this.initialValue + (this.inst.angle - this.lastKnownValue));
  18037. this.inst.angle = cr.clamp_angle(this.initialValue + this.waveFunc(this.i) * this.mag);
  18038. this.lastKnownValue = this.inst.angle;
  18039. break;
  18040. case 6: // opacity
  18041. this.inst.opacity = this.initialValue + (this.waveFunc(this.i) * this.mag) / 100;
  18042. if (this.inst.opacity < 0)
  18043. this.inst.opacity = 0;
  18044. else if (this.inst.opacity > 1)
  18045. this.inst.opacity = 1;
  18046. break;
  18047. case 8: // forwards/backwards
  18048. if (this.inst.x !== this.lastKnownValue)
  18049. this.initialValue += this.inst.x - this.lastKnownValue;
  18050. if (this.inst.y !== this.lastKnownValue2)
  18051. this.initialValue2 += this.inst.y - this.lastKnownValue2;
  18052. this.inst.x = this.initialValue + Math.cos(this.inst.angle) * this.waveFunc(this.i) * this.mag;
  18053. this.inst.y = this.initialValue2 + Math.sin(this.inst.angle) * this.waveFunc(this.i) * this.mag;
  18054. this.lastKnownValue = this.inst.x;
  18055. this.lastKnownValue2 = this.inst.y;
  18056. break;
  18057. }
  18058. this.inst.set_bbox_changed();
  18059. };
  18060. behinstProto.onSpriteFrameChanged = function (prev_frame, next_frame)
  18061. {
  18062. switch (this.movement) {
  18063. case 2: // size
  18064. this.initialValue *= (next_frame.width / prev_frame.width);
  18065. this.ratio = next_frame.height / next_frame.width;
  18066. break;
  18067. case 3: // width
  18068. this.initialValue *= (next_frame.width / prev_frame.width);
  18069. break;
  18070. case 4: // height
  18071. this.initialValue *= (next_frame.height / prev_frame.height);
  18072. break;
  18073. }
  18074. };
  18075. function Cnds() {};
  18076. Cnds.prototype.IsActive = function ()
  18077. {
  18078. return this.active;
  18079. };
  18080. Cnds.prototype.CompareMovement = function (m)
  18081. {
  18082. return this.movement === m;
  18083. };
  18084. Cnds.prototype.ComparePeriod = function (cmp, v)
  18085. {
  18086. return cr.do_cmp(this.period, cmp, v);
  18087. };
  18088. Cnds.prototype.CompareMagnitude = function (cmp, v)
  18089. {
  18090. if (this.movement === 5)
  18091. return cr.do_cmp(this.mag, cmp, cr.to_radians(v));
  18092. else
  18093. return cr.do_cmp(this.mag, cmp, v);
  18094. };
  18095. Cnds.prototype.CompareWave = function (w)
  18096. {
  18097. return this.wave === w;
  18098. };
  18099. behaviorProto.cnds = new Cnds();
  18100. function Acts() {};
  18101. Acts.prototype.SetActive = function (a)
  18102. {
  18103. this.active = (a === 1);
  18104. };
  18105. Acts.prototype.SetPeriod = function (x)
  18106. {
  18107. this.period = x;
  18108. };
  18109. Acts.prototype.SetMagnitude = function (x)
  18110. {
  18111. this.mag = x;
  18112. if (this.movement === 5) // angle
  18113. this.mag = cr.to_radians(this.mag);
  18114. };
  18115. Acts.prototype.SetMovement = function (m)
  18116. {
  18117. if (this.movement === 5)
  18118. this.mag = cr.to_degrees(this.mag);
  18119. this.movement = m;
  18120. this.init();
  18121. };
  18122. Acts.prototype.SetWave = function (w)
  18123. {
  18124. this.wave = w;
  18125. };
  18126. behaviorProto.acts = new Acts();
  18127. function Exps() {};
  18128. Exps.prototype.CyclePosition = function (ret)
  18129. {
  18130. ret.set_float(this.i / _2pi);
  18131. };
  18132. Exps.prototype.Period = function (ret)
  18133. {
  18134. ret.set_float(this.period);
  18135. };
  18136. Exps.prototype.Magnitude = function (ret)
  18137. {
  18138. if (this.movement === 5) // angle
  18139. ret.set_float(cr.to_degrees(this.mag));
  18140. else
  18141. ret.set_float(this.mag);
  18142. };
  18143. Exps.prototype.Value = function (ret)
  18144. {
  18145. ret.set_float(this.waveFunc(this.i) * this.mag);
  18146. };
  18147. behaviorProto.exps = new Exps();
  18148. }());
  18149. ;
  18150. ;
  18151. cr.behaviors.bound = function(runtime)
  18152. {
  18153. this.runtime = runtime;
  18154. };
  18155. (function ()
  18156. {
  18157. var behaviorProto = cr.behaviors.bound.prototype;
  18158. behaviorProto.Type = function(behavior, objtype)
  18159. {
  18160. this.behavior = behavior;
  18161. this.objtype = objtype;
  18162. this.runtime = behavior.runtime;
  18163. };
  18164. var behtypeProto = behaviorProto.Type.prototype;
  18165. behtypeProto.onCreate = function()
  18166. {
  18167. };
  18168. behaviorProto.Instance = function(type, inst)
  18169. {
  18170. this.type = type;
  18171. this.behavior = type.behavior;
  18172. this.inst = inst; // associated object instance to modify
  18173. this.runtime = type.runtime;
  18174. this.mode = 0;
  18175. };
  18176. var behinstProto = behaviorProto.Instance.prototype;
  18177. behinstProto.onCreate = function()
  18178. {
  18179. this.mode = this.properties[0]; // 0 = origin, 1 = edge
  18180. };
  18181. behinstProto.tick = function ()
  18182. {
  18183. };
  18184. behinstProto.tick2 = function ()
  18185. {
  18186. this.inst.update_bbox();
  18187. var bbox = this.inst.bbox;
  18188. var layout = this.inst.layer.layout;
  18189. var changed = false;
  18190. if (this.mode === 0) // origin
  18191. {
  18192. if (this.inst.x < 0)
  18193. {
  18194. this.inst.x = 0;
  18195. changed = true;
  18196. }
  18197. if (this.inst.y < 0)
  18198. {
  18199. this.inst.y = 0;
  18200. changed = true;
  18201. }
  18202. if (this.inst.x > layout.width)
  18203. {
  18204. this.inst.x = layout.width;
  18205. changed = true;
  18206. }
  18207. if (this.inst.y > layout.height)
  18208. {
  18209. this.inst.y = layout.height;
  18210. changed = true;
  18211. }
  18212. }
  18213. else
  18214. {
  18215. if (bbox.left < 0)
  18216. {
  18217. this.inst.x -= bbox.left;
  18218. changed = true;
  18219. }
  18220. if (bbox.top < 0)
  18221. {
  18222. this.inst.y -= bbox.top;
  18223. changed = true;
  18224. }
  18225. if (bbox.right > layout.width)
  18226. {
  18227. this.inst.x -= (bbox.right - layout.width);
  18228. changed = true;
  18229. }
  18230. if (bbox.bottom > layout.height)
  18231. {
  18232. this.inst.y -= (bbox.bottom - layout.height);
  18233. changed = true;
  18234. }
  18235. }
  18236. if (changed)
  18237. this.inst.set_bbox_changed();
  18238. };
  18239. }());
  18240. cr.getProjectModel = function() { return [
  18241. null,
  18242. "Loading",
  18243. [
  18244. [
  18245. cr.plugins_.Arr,
  18246. false,
  18247. false,
  18248. false,
  18249. false,
  18250. false,
  18251. false,
  18252. false,
  18253. false,
  18254. false
  18255. ]
  18256. , [
  18257. cr.plugins_.Spritefont2,
  18258. false,
  18259. true,
  18260. true,
  18261. true,
  18262. true,
  18263. true,
  18264. true,
  18265. true,
  18266. true
  18267. ]
  18268. , [
  18269. cr.plugins_.Sprite,
  18270. false,
  18271. true,
  18272. true,
  18273. true,
  18274. true,
  18275. true,
  18276. true,
  18277. true,
  18278. false
  18279. ]
  18280. , [
  18281. cr.plugins_.TiledBg,
  18282. false,
  18283. true,
  18284. true,
  18285. true,
  18286. true,
  18287. true,
  18288. true,
  18289. true,
  18290. true
  18291. ]
  18292. , [
  18293. cr.plugins_.Softgames,
  18294. true,
  18295. false,
  18296. false,
  18297. false,
  18298. false,
  18299. false,
  18300. false,
  18301. false,
  18302. false
  18303. ]
  18304. , [
  18305. cr.plugins_.Browser,
  18306. true,
  18307. false,
  18308. false,
  18309. false,
  18310. false,
  18311. false,
  18312. false,
  18313. false,
  18314. false
  18315. ]
  18316. , [
  18317. cr.plugins_.WebStorage,
  18318. true,
  18319. false,
  18320. false,
  18321. false,
  18322. false,
  18323. false,
  18324. false,
  18325. false,
  18326. false
  18327. ]
  18328. , [
  18329. cr.plugins_.Touch,
  18330. true,
  18331. false,
  18332. false,
  18333. false,
  18334. false,
  18335. false,
  18336. false,
  18337. false,
  18338. false
  18339. ]
  18340. ],
  18341. [
  18342. [
  18343. "t0",
  18344. cr.plugins_.Sprite,
  18345. false,
  18346. [4483591933638255,6407951637075983,8787923271674571],
  18347. 3,
  18348. 0,
  18349. null,
  18350. [
  18351. [
  18352. "Default",
  18353. 0,
  18354. false,
  18355. 1,
  18356. 0,
  18357. false,
  18358. 6822747669950613,
  18359. [
  18360. ["images/blocks-sheet1.png", 6151, 0, 0, 67, 198, 1, 0, 0,[],[0.08208949863910675,0.02272729948163033,0.9216409921646118,0.02651520073413849,0.9328359961509705,0.9608579874038696,0.08582089841365814,0.9595959782600403],0],
  18361. ["images/blocks-sheet0.png", 18038, 1, 1, 194, 71, 1, 0, 0,[],[0.03092779964208603,0.03521129861474037,0.9793819785118103,0.04225350171327591,0.9768040180206299,0.9436619877815247,0.03608249872922897,0.9366199970245361],0],
  18362. ["images/blocks-sheet0.png", 18038, 132, 73, 66, 135, 1, 0, 0,[],[0.05303030088543892,0.0259259007871151,0.9469699859619141,0.02222220040857792,0.9393939971923828,0.9666669964790344,0.04545449838042259,0.9703699946403503],0],
  18363. ["images/blocks-sheet0.png", 18038, 1, 73, 130, 71, 1, 0, 0,[],[0.02307689934968948,0.04929580166935921,0.9807689785957336,0.05633800104260445,0.9692310094833374,0.9577469825744629,0.0346154011785984,0.9647889733314514],0],
  18364. ["images/blocks-sheet0.png", 18038, 1, 145, 128, 69, 1, 0, 0,[],[0.0234375,0.04347829893231392,0.5,0,0.9765629768371582,0.04347829893231392,1,0.4927540123462677,0.9765629768371582,0.9565219879150391,0.5,1,0.0234375,0.9565219879150391,0,0.4927540123462677],0]
  18365. ]
  18366. ]
  18367. ],
  18368. [
  18369. [
  18370. "DragDrop",
  18371. cr.behaviors.DragnDrop,
  18372. 6775323160988793
  18373. ]
  18374. , [
  18375. "BoundToLayout",
  18376. cr.behaviors.bound,
  18377. 7014087037944691
  18378. ]
  18379. , [
  18380. "8Direction",
  18381. cr.behaviors.EightDir,
  18382. 9520516806186919
  18383. ]
  18384. ],
  18385. false,
  18386. false,
  18387. 6827826627051326,
  18388. [],
  18389. null
  18390. ]
  18391. , [
  18392. "t1",
  18393. cr.plugins_.Sprite,
  18394. false,
  18395. [],
  18396. 0,
  18397. 0,
  18398. null,
  18399. [
  18400. [
  18401. "Default",
  18402. 5,
  18403. false,
  18404. 1,
  18405. 0,
  18406. false,
  18407. 4829151891205768,
  18408. [
  18409. ["images/edge-sheet0.png", 93, 0, 0, 32, 32, 1, 0, 0,[],[0.01953130029141903,0.015625,0.96875,0.01953130029141903,0.9765629768371582,0.9804689884185791,0.01953130029141903,0.9804689884185791],1]
  18410. ]
  18411. ]
  18412. ],
  18413. [
  18414. ],
  18415. false,
  18416. false,
  18417. 8169727880209173,
  18418. [],
  18419. null
  18420. ]
  18421. , [
  18422. "t2",
  18423. cr.plugins_.Sprite,
  18424. false,
  18425. [],
  18426. 0,
  18427. 0,
  18428. null,
  18429. [
  18430. [
  18431. "Default",
  18432. 5,
  18433. false,
  18434. 1,
  18435. 0,
  18436. false,
  18437. 2065160091561255,
  18438. [
  18439. ["images/exit-sheet0.png", 758, 0, 0, 64, 64, 1, 0, 1,[],[0.5,-1,1,-1,1,0,0.5,0],0]
  18440. ]
  18441. ]
  18442. ],
  18443. [
  18444. ],
  18445. false,
  18446. false,
  18447. 102899461509274,
  18448. [],
  18449. null
  18450. ]
  18451. , [
  18452. "t3",
  18453. cr.plugins_.Sprite,
  18454. false,
  18455. [],
  18456. 0,
  18457. 0,
  18458. null,
  18459. [
  18460. [
  18461. "Default",
  18462. 0,
  18463. false,
  18464. 1,
  18465. 0,
  18466. false,
  18467. 6819037674282186,
  18468. [
  18469. ["images/sprite-sheet0.png", 14913, 0, 0, 389, 384, 1, 0, 1,[],[0.007712080143392086,-0.007812023162841797,0.007712080143392086,-0.9921879768371582,0.9922879934310913,-0.9921879768371582,0.9922879934310913,-0.007812023162841797],0],
  18470. ["images/sprite-sheet1.png", 29242, 1, 1, 386, 161, 1, 0.002590673509985209, -1.422360301017761,[],[0.007772026117891073,1.422360301017761,0.9870473146438599,1.422360301017761,0.9870473146438599,2.397515296936035,0.007772026117891073,2.397515296936035],0],
  18471. ["images/sprite-sheet1.png", 29242, 1, 163, 386, 143, 1, 0.002590673509985209, 0.00699300691485405,[],[0.007772026117891073,0.02097899280488491,0.9870473146438599,0.02097899280488491,0.9870473146438599,0.9930070042610169,0.007772026117891073,0.9930070042610169],0]
  18472. ]
  18473. ]
  18474. ],
  18475. [
  18476. ],
  18477. false,
  18478. false,
  18479. 8866041732723937,
  18480. [],
  18481. null
  18482. ]
  18483. , [
  18484. "t4",
  18485. cr.plugins_.Sprite,
  18486. false,
  18487. [9502783634066121],
  18488. 1,
  18489. 0,
  18490. null,
  18491. [
  18492. [
  18493. "Default",
  18494. 0,
  18495. false,
  18496. 1,
  18497. 0,
  18498. false,
  18499. 1996664396285362,
  18500. [
  18501. ["images/but-sheet0.png", 4753, 1, 139, 67, 76, 1, 0.5074626803398132, 0.5,[],[-0.5074626803398132,-0.5,0.4925373196601868,-0.5,0.4925373196601868,-0.5,0.4925373196601868,-0.5,0.4925373196601868,0.5,-0.5074626803398132,0.5,-0.5074626803398132,-0.5],0],
  18502. ["images/but-sheet0.png", 4753, 140, 74, 69, 74, 1, 0.5072463750839233, 0.5,[],[-0.5072463750839233,-0.5,0.4927536249160767,-0.5,0.4927536249160767,-0.5,0.4927536249160767,-0.5,0.4927536249160767,0.5,-0.5072463750839233,0.5,-0.5072463750839233,-0.5],0],
  18503. ["images/but-sheet0.png", 4753, 140, 1, 75, 72, 1, 0.5066666603088379, 0.5,[],[-0.5066666603088379,-0.5,0.4933333396911621,-0.5,0.4933333396911621,-0.5,0.4933333396911621,-0.5,0.4933333396911621,0.5,-0.5066666603088379,0.5,-0.5066666603088379,-0.5],0],
  18504. ["images/but-sheet0.png", 4753, 1, 1, 138, 137, 1, 0.5, 0.5036496520042419,[],[],0]
  18505. ]
  18506. ]
  18507. ],
  18508. [
  18509. [
  18510. "Sine",
  18511. cr.behaviors.Sin,
  18512. 7802112411750133
  18513. ]
  18514. ],
  18515. false,
  18516. false,
  18517. 4901461668198739,
  18518. [],
  18519. null
  18520. ]
  18521. , [
  18522. "t5",
  18523. cr.plugins_.Sprite,
  18524. false,
  18525. [5287327558191615,6387113113700343],
  18526. 0,
  18527. 0,
  18528. null,
  18529. [
  18530. [
  18531. "Default",
  18532. 0,
  18533. false,
  18534. 1,
  18535. 0,
  18536. false,
  18537. 8826038371212555,
  18538. [
  18539. ["images/kamikaze-sheet0.png", 919, 1, 1, 99, 36, 1, 0.5050504803657532, 0.5,[],[-0.5050504803657532,-0.5,0.4949495196342468,-0.5,0.4949495196342468,0.5,0.4949495196342468,0.5,0.1616165041923523,0.5,-0.5050504803657532,0.5,-0.5050504803657532,0.5],0],
  18540. ["images/kamikaze-sheet0.png", 919, 1, 38, 99, 36, 1, 0.5050504803657532, 0.5,[],[-0.5050504803657532,-0.5,0.4949495196342468,-0.5,0.4949495196342468,0.5,0.4949495196342468,0.5,0.1616165041923523,0.5,-0.5050504803657532,0.5,-0.5050504803657532,0.5],0],
  18541. ["images/kamikaze-sheet0.png", 919, 1, 75, 99, 36, 1, 0.5050504803657532, 0.5,[],[-0.5050504803657532,-0.5,0.4949495196342468,-0.5,0.4949495196342468,0.5,0.4949495196342468,0.5,0.1616165041923523,0.5,-0.5050504803657532,0.5,-0.5050504803657532,0.5],0],
  18542. ["images/kamikaze-sheet1.png", 555, 0, 0, 99, 36, 1, 0.5050504803657532, 0.5,[],[-0.5050504803657532,-0.5,0.4949495196342468,-0.5,0.4949495196342468,0.5,0.4949495196342468,0.5,0.1616165041923523,0.5,-0.5050504803657532,0.5,-0.5050504803657532,0.5],0]
  18543. ]
  18544. ]
  18545. ],
  18546. [
  18547. ],
  18548. false,
  18549. false,
  18550. 8461014092164239,
  18551. [],
  18552. null
  18553. ]
  18554. , [
  18555. "t6",
  18556. cr.plugins_.Spritefont2,
  18557. false,
  18558. [7339669109233996],
  18559. 0,
  18560. 0,
  18561. ["images/day.png", 8217, 0],
  18562. null,
  18563. [
  18564. ],
  18565. false,
  18566. false,
  18567. 4744554460043654,
  18568. [],
  18569. null
  18570. ]
  18571. , [
  18572. "t7",
  18573. cr.plugins_.Arr,
  18574. false,
  18575. [],
  18576. 0,
  18577. 0,
  18578. null,
  18579. null,
  18580. [
  18581. ],
  18582. true,
  18583. false,
  18584. 8590963122574673,
  18585. [],
  18586. null
  18587. ]
  18588. , [
  18589. "t8",
  18590. cr.plugins_.Touch,
  18591. false,
  18592. [],
  18593. 0,
  18594. 0,
  18595. null,
  18596. null,
  18597. [
  18598. ],
  18599. false,
  18600. false,
  18601. 4853833846066302,
  18602. [],
  18603. null
  18604. ,[1]
  18605. ]
  18606. , [
  18607. "t9",
  18608. cr.plugins_.Browser,
  18609. false,
  18610. [],
  18611. 0,
  18612. 0,
  18613. null,
  18614. null,
  18615. [
  18616. ],
  18617. false,
  18618. false,
  18619. 5735188685463939,
  18620. [],
  18621. null
  18622. ,[]
  18623. ]
  18624. , [
  18625. "t10",
  18626. cr.plugins_.Sprite,
  18627. false,
  18628. [],
  18629. 0,
  18630. 0,
  18631. null,
  18632. [
  18633. [
  18634. "Default",
  18635. 5,
  18636. false,
  18637. 1,
  18638. 0,
  18639. false,
  18640. 2325989896573274,
  18641. [
  18642. ["images/logo64-sheet0.png", 225, 0, 0, 64, 64, 1, 0, 0,[],[],0]
  18643. ]
  18644. ]
  18645. ],
  18646. [
  18647. ],
  18648. false,
  18649. false,
  18650. 6045838252825364,
  18651. [],
  18652. null
  18653. ]
  18654. , [
  18655. "t11",
  18656. cr.plugins_.Sprite,
  18657. false,
  18658. [],
  18659. 1,
  18660. 0,
  18661. null,
  18662. [
  18663. [
  18664. "Default",
  18665. 5,
  18666. false,
  18667. 1,
  18668. 0,
  18669. false,
  18670. 3245993415738393,
  18671. [
  18672. ["images/sprite2-sheet0.png", 435, 0, 0, 500, 700, 1, 0.5, 0.5,[],[],4]
  18673. ]
  18674. ]
  18675. ],
  18676. [
  18677. [
  18678. "Fade",
  18679. cr.behaviors.Fade,
  18680. 9311525355399249
  18681. ]
  18682. ],
  18683. false,
  18684. false,
  18685. 9720497968798076,
  18686. [],
  18687. null
  18688. ]
  18689. , [
  18690. "t12",
  18691. cr.plugins_.Sprite,
  18692. false,
  18693. [4019558494193485],
  18694. 0,
  18695. 0,
  18696. null,
  18697. [
  18698. [
  18699. "Default",
  18700. 0,
  18701. false,
  18702. 1,
  18703. 0,
  18704. false,
  18705. 7912972602956413,
  18706. [
  18707. ["images/levelsbutton-sheet1.png", 7235, 1, 1, 94, 100, 1, 0.5, 0.5,[],[],0],
  18708. ["images/levelsbutton-sheet1.png", 7235, 96, 1, 94, 99, 1, 0.5, 0.5050504803657532,[],[-0.5,-0.5050504803657532,-0.5,0.4949495196342468,0.5,0.4949495196342468,0.5,-0.5050504803657532],0],
  18709. ["images/levelsbutton-sheet0.png", 16401, 1, 1, 95, 100, 1, 0.5052631497383118, 0.5,[],[-0.4842105507850647,-0.3799999952316284,0.4947368502616882,-0.4600000083446503,0.4947368502616882,-0.09000000357627869,0.4947368502616882,0.5,0.4947368502616882,0.5,-0.2631581425666809,0.5],0]
  18710. ]
  18711. ]
  18712. , [
  18713. "1star",
  18714. 0,
  18715. false,
  18716. 1,
  18717. 0,
  18718. false,
  18719. 5007394540073674,
  18720. [
  18721. ["images/levelsbutton-sheet0.png", 16401, 97, 1, 95, 100, 1, 0.5052631497383118, 0.5,[],[],0]
  18722. ]
  18723. ]
  18724. , [
  18725. "2star",
  18726. 0,
  18727. false,
  18728. 1,
  18729. 0,
  18730. false,
  18731. 1636366990257711,
  18732. [
  18733. ["images/levelsbutton-sheet0.png", 16401, 1, 102, 95, 100, 1, 0.5052631497383118, 0.5,[],[],0]
  18734. ]
  18735. ]
  18736. , [
  18737. "3star",
  18738. 0,
  18739. false,
  18740. 1,
  18741. 0,
  18742. false,
  18743. 8218346633048399,
  18744. [
  18745. ["images/levelsbutton-sheet0.png", 16401, 97, 102, 95, 100, 1, 0.5052631497383118, 0.5,[],[-0.5052631497383118,-0.5,0.09473687410354614,-0.5,0.4947368502616882,-0.5,0.4947368502616882,0.5,0.09473687410354614,0.5,-0.5052631497383118,0.5],0]
  18746. ]
  18747. ]
  18748. ],
  18749. [
  18750. ],
  18751. false,
  18752. false,
  18753. 2626595128588886,
  18754. [],
  18755. null
  18756. ]
  18757. , [
  18758. "t13",
  18759. cr.plugins_.Sprite,
  18760. false,
  18761. [4290969893313189],
  18762. 0,
  18763. 0,
  18764. null,
  18765. [
  18766. [
  18767. "Default",
  18768. 0,
  18769. false,
  18770. 1,
  18771. 0,
  18772. false,
  18773. 5332395157865379,
  18774. [
  18775. ["images/but-sheet0.png", 4753, 140, 74, 69, 74, 1, 0.5072463750839233, 0.5,[],[-0.5072463750839233,-0.5,0.4927536249160767,-0.5,0.4927536249160767,-0.5,0.4927536249160767,-0.5,0.4927536249160767,0.5,-0.5072463750839233,0.5,-0.5072463750839233,-0.5],0],
  18776. ["images/but2-sheet0.png", 965, 0, 0, 69, 74, 1, 0.4927536249160767, 0.5,[],[0.5072463750839233,-0.5,0.5072463750839233,0.5,-0.4927536249160767,0.5,-0.4927536249160767,-0.5,-0.4927536249160767,-0.5,-0.4927536249160767,-0.5,0.5072463750839233,-0.5],0]
  18777. ]
  18778. ]
  18779. ],
  18780. [
  18781. ],
  18782. false,
  18783. false,
  18784. 266459267238684,
  18785. [],
  18786. null
  18787. ]
  18788. , [
  18789. "t14",
  18790. cr.plugins_.Arr,
  18791. false,
  18792. [],
  18793. 0,
  18794. 0,
  18795. null,
  18796. null,
  18797. [
  18798. ],
  18799. true,
  18800. false,
  18801. 9385172411850335,
  18802. [],
  18803. null
  18804. ]
  18805. , [
  18806. "t15",
  18807. cr.plugins_.TiledBg,
  18808. false,
  18809. [],
  18810. 0,
  18811. 0,
  18812. ["images/tiledbackground2.png", 92, 1],
  18813. null,
  18814. [
  18815. ],
  18816. false,
  18817. true,
  18818. 741687038862552,
  18819. [],
  18820. null
  18821. ]
  18822. , [
  18823. "t16",
  18824. cr.plugins_.Sprite,
  18825. false,
  18826. [],
  18827. 0,
  18828. 0,
  18829. null,
  18830. [
  18831. [
  18832. "Default",
  18833. 5,
  18834. false,
  18835. 1,
  18836. 0,
  18837. false,
  18838. 7008078868047513,
  18839. [
  18840. ["images/logo256-sheet0.png", 592, 0, 0, 256, 256, 1, 0.5, 0.5,[],[],0]
  18841. ]
  18842. ]
  18843. ],
  18844. [
  18845. ],
  18846. false,
  18847. true,
  18848. 2728912722909023,
  18849. [],
  18850. null
  18851. ]
  18852. , [
  18853. "t17",
  18854. cr.plugins_.Sprite,
  18855. false,
  18856. [],
  18857. 0,
  18858. 0,
  18859. null,
  18860. [
  18861. [
  18862. "Default",
  18863. 5,
  18864. false,
  18865. 1,
  18866. 0,
  18867. false,
  18868. 3017387505309843,
  18869. [
  18870. ["images/untitled-sheet0.png", 5308, 0, 0, 340, 50, 1, 0.5, 0.550000011920929,[],[-0.449275404214859,-0.5074999928474426,0.04347801208496094,-0.5074999928474426,0.4565219879150391,-0.2737500071525574,-0.1376810073852539,0.300000011920929,0.04347801208496094,0.300000011920929,0.1956520080566406,0.300000011920929],0]
  18871. ]
  18872. ]
  18873. ],
  18874. [
  18875. ],
  18876. false,
  18877. false,
  18878. 7488880938098429,
  18879. [],
  18880. null
  18881. ]
  18882. , [
  18883. "t18",
  18884. cr.plugins_.WebStorage,
  18885. false,
  18886. [],
  18887. 0,
  18888. 0,
  18889. null,
  18890. null,
  18891. [
  18892. ],
  18893. false,
  18894. false,
  18895. 9563473435939971,
  18896. [],
  18897. null
  18898. ,[]
  18899. ]
  18900. , [
  18901. "t19",
  18902. cr.plugins_.Spritefont2,
  18903. false,
  18904. [8655571220559716],
  18905. 0,
  18906. 0,
  18907. ["images/day2.png", 8217, 0],
  18908. null,
  18909. [
  18910. ],
  18911. false,
  18912. false,
  18913. 6290392448251677,
  18914. [],
  18915. null
  18916. ]
  18917. , [
  18918. "t20",
  18919. cr.plugins_.Softgames,
  18920. false,
  18921. [],
  18922. 0,
  18923. 0,
  18924. null,
  18925. null,
  18926. [
  18927. ],
  18928. false,
  18929. false,
  18930. 3143169403329861,
  18931. [],
  18932. null
  18933. ,[77]
  18934. ]
  18935. ],
  18936. [
  18937. ],
  18938. [
  18939. [
  18940. "levels1",
  18941. 384,
  18942. 600,
  18943. false,
  18944. "levelselect",
  18945. 2271443290227675,
  18946. [
  18947. [
  18948. "Layer 0",
  18949. 0,
  18950. 6339876361539137,
  18951. true,
  18952. [44, 44, 44],
  18953. false,
  18954. 1,
  18955. 1,
  18956. 1,
  18957. false,
  18958. 1,
  18959. 0,
  18960. 0,
  18961. [
  18962. [
  18963. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  18964. 3,
  18965. 26,
  18966. [
  18967. ],
  18968. [
  18969. ],
  18970. [
  18971. 0,
  18972. "Default",
  18973. 0,
  18974. 1
  18975. ]
  18976. ]
  18977. , [
  18978. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  18979. 1,
  18980. 35,
  18981. [
  18982. ],
  18983. [
  18984. ],
  18985. [
  18986. 1,
  18987. "Default",
  18988. 0,
  18989. 1
  18990. ]
  18991. ]
  18992. , [
  18993. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  18994. 1,
  18995. 36,
  18996. [
  18997. ],
  18998. [
  18999. ],
  19000. [
  19001. 1,
  19002. "Default",
  19003. 0,
  19004. 1
  19005. ]
  19006. ]
  19007. , [
  19008. [0, 521, 0, 386, 143, 0, 0, 0.800000011920929, 0.002590673509985209, 0.00699300691485405, 0, 0, []],
  19009. 3,
  19010. 37,
  19011. [
  19012. ],
  19013. [
  19014. ],
  19015. [
  19016. 0,
  19017. "Default",
  19018. 2,
  19019. 1
  19020. ]
  19021. ]
  19022. , [
  19023. [-1, -270, 0, 386, 161, 0, 0, 0.800000011920929, 0.002590673509985209, -1.422360301017761, 0, 0, []],
  19024. 3,
  19025. 38,
  19026. [
  19027. ],
  19028. [
  19029. ],
  19030. [
  19031. 0,
  19032. "Default",
  19033. 1,
  19034. 1
  19035. ]
  19036. ]
  19037. , [
  19038. [262.0788269042969, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  19039. 4,
  19040. 39,
  19041. [
  19042. [3]
  19043. ],
  19044. [
  19045. [
  19046. 1,
  19047. 0,
  19048. 0,
  19049. 4,
  19050. 0,
  19051. 0,
  19052. 0,
  19053. 50,
  19054. 0
  19055. ]
  19056. ],
  19057. [
  19058. 0,
  19059. "Default",
  19060. 3,
  19061. 1
  19062. ]
  19063. ]
  19064. , [
  19065. [66.316650390625, 33.14364624023438, 0, 316.1051330566406, 64, 0, 0, 1, 0, 0, 0, 0, []],
  19066. 6,
  19067. 44,
  19068. [
  19069. [1]
  19070. ],
  19071. [
  19072. ],
  19073. [
  19074. 29,
  19075. 43,
  19076. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19077. sg_texts[SG.lang]["MORE GAMES"],
  19078. 1,
  19079. 0,
  19080. 0,
  19081. 0,
  19082. 0,
  19083. 0,
  19084. 0,
  19085. 0
  19086. ]
  19087. ]
  19088. , [
  19089. [66.09172058105469, 201.9490814208984, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19090. 12,
  19091. 33,
  19092. [
  19093. [1]
  19094. ],
  19095. [
  19096. ],
  19097. [
  19098. 0,
  19099. "Default",
  19100. 0,
  19101. 1
  19102. ]
  19103. ]
  19104. , [
  19105. [65.97599029541016, 181.2852935791016, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19106. 6,
  19107. 34,
  19108. [
  19109. [0]
  19110. ],
  19111. [
  19112. ],
  19113. [
  19114. 29,
  19115. 43,
  19116. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19117. "1",
  19118. 1.2,
  19119. 0,
  19120. 1,
  19121. 1,
  19122. 1,
  19123. 0,
  19124. 0,
  19125. 0
  19126. ]
  19127. ]
  19128. , [
  19129. [188.1265869140625, 202.7693786621094, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19130. 12,
  19131. 43,
  19132. [
  19133. [2]
  19134. ],
  19135. [
  19136. ],
  19137. [
  19138. 0,
  19139. "Default",
  19140. 0,
  19141. 1
  19142. ]
  19143. ]
  19144. , [
  19145. [188.0108642578125, 182.1055908203125, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19146. 6,
  19147. 45,
  19148. [
  19149. [0]
  19150. ],
  19151. [
  19152. ],
  19153. [
  19154. 29,
  19155. 43,
  19156. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19157. "2",
  19158. 1.2,
  19159. 0,
  19160. 1,
  19161. 1,
  19162. 1,
  19163. 0,
  19164. 0,
  19165. 0
  19166. ]
  19167. ]
  19168. , [
  19169. [311.4395446777344, 202.9425201416016, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19170. 12,
  19171. 48,
  19172. [
  19173. [3]
  19174. ],
  19175. [
  19176. ],
  19177. [
  19178. 0,
  19179. "Default",
  19180. 0,
  19181. 1
  19182. ]
  19183. ]
  19184. , [
  19185. [311.3237915039063, 182.2787322998047, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19186. 6,
  19187. 49,
  19188. [
  19189. [0]
  19190. ],
  19191. [
  19192. ],
  19193. [
  19194. 29,
  19195. 43,
  19196. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19197. "3",
  19198. 1.2,
  19199. 0,
  19200. 1,
  19201. 1,
  19202. 1,
  19203. 0,
  19204. 0,
  19205. 0
  19206. ]
  19207. ]
  19208. , [
  19209. [68.41082763671875, 319.6491394042969, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19210. 12,
  19211. 51,
  19212. [
  19213. [4]
  19214. ],
  19215. [
  19216. ],
  19217. [
  19218. 0,
  19219. "Default",
  19220. 0,
  19221. 1
  19222. ]
  19223. ]
  19224. , [
  19225. [68.29509735107422, 298.9853515625, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19226. 6,
  19227. 52,
  19228. [
  19229. [0]
  19230. ],
  19231. [
  19232. ],
  19233. [
  19234. 29,
  19235. 43,
  19236. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19237. "4",
  19238. 1.2,
  19239. 0,
  19240. 1,
  19241. 1,
  19242. 1,
  19243. 0,
  19244. 0,
  19245. 0
  19246. ]
  19247. ]
  19248. , [
  19249. [190.4456939697266, 320.4694213867188, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19250. 12,
  19251. 54,
  19252. [
  19253. [5]
  19254. ],
  19255. [
  19256. ],
  19257. [
  19258. 0,
  19259. "Default",
  19260. 0,
  19261. 1
  19262. ]
  19263. ]
  19264. , [
  19265. [190.3299713134766, 299.8056640625, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19266. 6,
  19267. 55,
  19268. [
  19269. [0]
  19270. ],
  19271. [
  19272. ],
  19273. [
  19274. 29,
  19275. 43,
  19276. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19277. "5",
  19278. 1.2,
  19279. 0,
  19280. 1,
  19281. 1,
  19282. 1,
  19283. 0,
  19284. 0,
  19285. 0
  19286. ]
  19287. ]
  19288. , [
  19289. [313.7586669921875, 320.642578125, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19290. 12,
  19291. 57,
  19292. [
  19293. [6]
  19294. ],
  19295. [
  19296. ],
  19297. [
  19298. 0,
  19299. "Default",
  19300. 0,
  19301. 1
  19302. ]
  19303. ]
  19304. , [
  19305. [313.6428833007813, 299.9787902832031, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19306. 6,
  19307. 58,
  19308. [
  19309. [0]
  19310. ],
  19311. [
  19312. ],
  19313. [
  19314. 29,
  19315. 43,
  19316. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19317. "6",
  19318. 1.2,
  19319. 0,
  19320. 1,
  19321. 1,
  19322. 1,
  19323. 0,
  19324. 0,
  19325. 0
  19326. ]
  19327. ]
  19328. , [
  19329. [68.99578857421875, 439.5648193359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19330. 12,
  19331. 60,
  19332. [
  19333. [7]
  19334. ],
  19335. [
  19336. ],
  19337. [
  19338. 0,
  19339. "Default",
  19340. 0,
  19341. 1
  19342. ]
  19343. ]
  19344. , [
  19345. [68.88005828857422, 418.9010314941406, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19346. 6,
  19347. 61,
  19348. [
  19349. [0]
  19350. ],
  19351. [
  19352. ],
  19353. [
  19354. 29,
  19355. 43,
  19356. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19357. "7",
  19358. 1.2,
  19359. 0,
  19360. 1,
  19361. 1,
  19362. 1,
  19363. 0,
  19364. 0,
  19365. 0
  19366. ]
  19367. ]
  19368. , [
  19369. [191.0306549072266, 440.3851318359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19370. 12,
  19371. 63,
  19372. [
  19373. [8]
  19374. ],
  19375. [
  19376. ],
  19377. [
  19378. 0,
  19379. "Default",
  19380. 0,
  19381. 1
  19382. ]
  19383. ]
  19384. , [
  19385. [190.9149322509766, 419.7213134765625, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19386. 6,
  19387. 64,
  19388. [
  19389. [0]
  19390. ],
  19391. [
  19392. ],
  19393. [
  19394. 29,
  19395. 43,
  19396. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19397. "8",
  19398. 1.2,
  19399. 0,
  19400. 1,
  19401. 1,
  19402. 1,
  19403. 0,
  19404. 0,
  19405. 0
  19406. ]
  19407. ]
  19408. , [
  19409. [314.3436279296875, 440.5582580566406, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19410. 12,
  19411. 66,
  19412. [
  19413. [9]
  19414. ],
  19415. [
  19416. ],
  19417. [
  19418. 0,
  19419. "Default",
  19420. 0,
  19421. 1
  19422. ]
  19423. ]
  19424. , [
  19425. [314.2278442382813, 419.8944702148438, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19426. 6,
  19427. 67,
  19428. [
  19429. [0]
  19430. ],
  19431. [
  19432. ],
  19433. [
  19434. 29,
  19435. 43,
  19436. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19437. "9",
  19438. 1.2,
  19439. 0,
  19440. 1,
  19441. 1,
  19442. 1,
  19443. 0,
  19444. 0,
  19445. 0
  19446. ]
  19447. ]
  19448. , [
  19449. [186, 558, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19450. 6,
  19451. 409,
  19452. [
  19453. [99]
  19454. ],
  19455. [
  19456. ],
  19457. [
  19458. 29,
  19459. 43,
  19460. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19461. "1",
  19462. 1.2,
  19463. 0,
  19464. 1,
  19465. 1,
  19466. 1,
  19467. 0,
  19468. 0,
  19469. 0
  19470. ]
  19471. ]
  19472. , [
  19473. [337, 561, 0, 69, 74, 0, 0, 1, 0.5072463750839233, 0.5, 0, 0, []],
  19474. 13,
  19475. 410,
  19476. [
  19477. [1]
  19478. ],
  19479. [
  19480. ],
  19481. [
  19482. 0,
  19483. "Default",
  19484. 0,
  19485. 1
  19486. ]
  19487. ]
  19488. , [
  19489. [47, 561, 0, 69, 74, 0, 0, 1, 0.4927536249160767, 0.5, 0, 0, []],
  19490. 13,
  19491. 411,
  19492. [
  19493. [0]
  19494. ],
  19495. [
  19496. ],
  19497. [
  19498. 0,
  19499. "Default",
  19500. 1,
  19501. 1
  19502. ]
  19503. ]
  19504. ],
  19505. [ ]
  19506. ]
  19507. ],
  19508. [
  19509. [
  19510. null,
  19511. 14,
  19512. 42,
  19513. [
  19514. ],
  19515. [
  19516. ],
  19517. [
  19518. 46,
  19519. 1,
  19520. 1
  19521. ]
  19522. ]
  19523. ],
  19524. []
  19525. ]
  19526. , [
  19527. "levels2",
  19528. 384,
  19529. 600,
  19530. false,
  19531. "levelselect",
  19532. 2459397666815465,
  19533. [
  19534. [
  19535. "Layer 0",
  19536. 0,
  19537. 5046862504068535,
  19538. true,
  19539. [44, 44, 44],
  19540. false,
  19541. 1,
  19542. 1,
  19543. 1,
  19544. false,
  19545. 1,
  19546. 0,
  19547. 0,
  19548. [
  19549. [
  19550. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  19551. 3,
  19552. 41,
  19553. [
  19554. ],
  19555. [
  19556. ],
  19557. [
  19558. 0,
  19559. "Default",
  19560. 0,
  19561. 1
  19562. ]
  19563. ]
  19564. , [
  19565. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  19566. 1,
  19567. 69,
  19568. [
  19569. ],
  19570. [
  19571. ],
  19572. [
  19573. 1,
  19574. "Default",
  19575. 0,
  19576. 1
  19577. ]
  19578. ]
  19579. , [
  19580. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  19581. 1,
  19582. 70,
  19583. [
  19584. ],
  19585. [
  19586. ],
  19587. [
  19588. 1,
  19589. "Default",
  19590. 0,
  19591. 1
  19592. ]
  19593. ]
  19594. , [
  19595. [0, 521, 0, 386, 143, 0, 0, 0.800000011920929, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  19596. 3,
  19597. 71,
  19598. [
  19599. ],
  19600. [
  19601. ],
  19602. [
  19603. 0,
  19604. "Default",
  19605. 2,
  19606. 1
  19607. ]
  19608. ]
  19609. , [
  19610. [-1, -270, 0, 386, 161, 0, 0, 0.800000011920929, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  19611. 3,
  19612. 72,
  19613. [
  19614. ],
  19615. [
  19616. ],
  19617. [
  19618. 0,
  19619. "Default",
  19620. 1,
  19621. 1
  19622. ]
  19623. ]
  19624. , [
  19625. [262.0788269042969, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  19626. 4,
  19627. 73,
  19628. [
  19629. [3]
  19630. ],
  19631. [
  19632. [
  19633. 1,
  19634. 0,
  19635. 0,
  19636. 4,
  19637. 0,
  19638. 0,
  19639. 0,
  19640. 50,
  19641. 0
  19642. ]
  19643. ],
  19644. [
  19645. 0,
  19646. "Default",
  19647. 3,
  19648. 1
  19649. ]
  19650. ]
  19651. , [
  19652. [66.316650390625, 33.14364624023438, 0, 316.1051330566406, 64, 0, 0, 1, 0, 0, 0, 0, []],
  19653. 6,
  19654. 74,
  19655. [
  19656. [1]
  19657. ],
  19658. [
  19659. ],
  19660. [
  19661. 29,
  19662. 43,
  19663. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19664. sg_texts[SG.lang]["MORE GAMES"],
  19665. 1,
  19666. 0,
  19667. 0,
  19668. 0,
  19669. 0,
  19670. 0,
  19671. 0,
  19672. 0
  19673. ]
  19674. ]
  19675. , [
  19676. [66.09172058105469, 201.9490814208984, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19677. 12,
  19678. 75,
  19679. [
  19680. [10]
  19681. ],
  19682. [
  19683. ],
  19684. [
  19685. 0,
  19686. "Default",
  19687. 0,
  19688. 1
  19689. ]
  19690. ]
  19691. , [
  19692. [67.10943603515625, 181.2852935791016, 0, 77, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19693. 6,
  19694. 76,
  19695. [
  19696. [0]
  19697. ],
  19698. [
  19699. ],
  19700. [
  19701. 29,
  19702. 43,
  19703. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19704. "10",
  19705. 1.2,
  19706. 0,
  19707. 1,
  19708. 1,
  19709. 1,
  19710. 0,
  19711. 0,
  19712. 0
  19713. ]
  19714. ]
  19715. , [
  19716. [188.1265869140625, 202.7693786621094, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19717. 12,
  19718. 78,
  19719. [
  19720. [11]
  19721. ],
  19722. [
  19723. ],
  19724. [
  19725. 0,
  19726. "Default",
  19727. 0,
  19728. 1
  19729. ]
  19730. ]
  19731. , [
  19732. [187.6443176269531, 182.1055908203125, 0, 74, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19733. 6,
  19734. 79,
  19735. [
  19736. [0]
  19737. ],
  19738. [
  19739. ],
  19740. [
  19741. 29,
  19742. 43,
  19743. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19744. "11",
  19745. 1.2,
  19746. 0,
  19747. 1,
  19748. 1,
  19749. 1,
  19750. 0,
  19751. 0,
  19752. 0
  19753. ]
  19754. ]
  19755. , [
  19756. [311.4395446777344, 202.9425201416016, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19757. 12,
  19758. 81,
  19759. [
  19760. [12]
  19761. ],
  19762. [
  19763. ],
  19764. [
  19765. 0,
  19766. "Default",
  19767. 0,
  19768. 1
  19769. ]
  19770. ]
  19771. , [
  19772. [310.4572143554688, 182.2787322998047, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19773. 6,
  19774. 82,
  19775. [
  19776. [0]
  19777. ],
  19778. [
  19779. ],
  19780. [
  19781. 29,
  19782. 43,
  19783. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19784. "12",
  19785. 1.2,
  19786. 0,
  19787. 1,
  19788. 1,
  19789. 1,
  19790. 0,
  19791. 0,
  19792. 0
  19793. ]
  19794. ]
  19795. , [
  19796. [68.41082763671875, 319.6491394042969, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19797. 12,
  19798. 84,
  19799. [
  19800. [13]
  19801. ],
  19802. [
  19803. ],
  19804. [
  19805. 0,
  19806. "Default",
  19807. 0,
  19808. 1
  19809. ]
  19810. ]
  19811. , [
  19812. [66.42854309082031, 298.9853515625, 0, 71, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19813. 6,
  19814. 85,
  19815. [
  19816. [0]
  19817. ],
  19818. [
  19819. ],
  19820. [
  19821. 29,
  19822. 43,
  19823. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19824. "13",
  19825. 1.2,
  19826. 0,
  19827. 1,
  19828. 1,
  19829. 1,
  19830. 0,
  19831. 0,
  19832. 0
  19833. ]
  19834. ]
  19835. , [
  19836. [190.4456939697266, 320.4694213867188, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19837. 12,
  19838. 87,
  19839. [
  19840. [14]
  19841. ],
  19842. [
  19843. ],
  19844. [
  19845. 0,
  19846. "Default",
  19847. 0,
  19848. 1
  19849. ]
  19850. ]
  19851. , [
  19852. [188.4634246826172, 299.8056640625, 0, 71, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19853. 6,
  19854. 88,
  19855. [
  19856. [0]
  19857. ],
  19858. [
  19859. ],
  19860. [
  19861. 29,
  19862. 43,
  19863. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19864. "14",
  19865. 1.2,
  19866. 0,
  19867. 1,
  19868. 1,
  19869. 1,
  19870. 0,
  19871. 0,
  19872. 0
  19873. ]
  19874. ]
  19875. , [
  19876. [313.7586669921875, 320.642578125, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19877. 12,
  19878. 90,
  19879. [
  19880. [15]
  19881. ],
  19882. [
  19883. ],
  19884. [
  19885. 0,
  19886. "Default",
  19887. 0,
  19888. 1
  19889. ]
  19890. ]
  19891. , [
  19892. [313.2763061523438, 299.9787902832031, 0, 74, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19893. 6,
  19894. 91,
  19895. [
  19896. [0]
  19897. ],
  19898. [
  19899. ],
  19900. [
  19901. 29,
  19902. 43,
  19903. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19904. "15",
  19905. 1.2,
  19906. 0,
  19907. 1,
  19908. 1,
  19909. 1,
  19910. 0,
  19911. 0,
  19912. 0
  19913. ]
  19914. ]
  19915. , [
  19916. [68.99578857421875, 439.5648193359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19917. 12,
  19918. 93,
  19919. [
  19920. [16]
  19921. ],
  19922. [
  19923. ],
  19924. [
  19925. 0,
  19926. "Default",
  19927. 0,
  19928. 1
  19929. ]
  19930. ]
  19931. , [
  19932. [68.01350402832031, 418.9010314941406, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19933. 6,
  19934. 94,
  19935. [
  19936. [0]
  19937. ],
  19938. [
  19939. ],
  19940. [
  19941. 29,
  19942. 43,
  19943. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19944. "16",
  19945. 1.2,
  19946. 0,
  19947. 1,
  19948. 1,
  19949. 1,
  19950. 0,
  19951. 0,
  19952. 0
  19953. ]
  19954. ]
  19955. , [
  19956. [191.0306549072266, 440.3851318359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19957. 12,
  19958. 96,
  19959. [
  19960. [17]
  19961. ],
  19962. [
  19963. ],
  19964. [
  19965. 0,
  19966. "Default",
  19967. 0,
  19968. 1
  19969. ]
  19970. ]
  19971. , [
  19972. [190.0483856201172, 419.7213134765625, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19973. 6,
  19974. 97,
  19975. [
  19976. [0]
  19977. ],
  19978. [
  19979. ],
  19980. [
  19981. 29,
  19982. 43,
  19983. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  19984. "17",
  19985. 1.2,
  19986. 0,
  19987. 1,
  19988. 1,
  19989. 1,
  19990. 0,
  19991. 0,
  19992. 0
  19993. ]
  19994. ]
  19995. , [
  19996. [314.3436279296875, 440.5582580566406, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  19997. 12,
  19998. 99,
  19999. [
  20000. [18]
  20001. ],
  20002. [
  20003. ],
  20004. [
  20005. 0,
  20006. "Default",
  20007. 0,
  20008. 1
  20009. ]
  20010. ]
  20011. , [
  20012. [312.8612670898438, 419.8944702148438, 0, 72, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20013. 6,
  20014. 100,
  20015. [
  20016. [0]
  20017. ],
  20018. [
  20019. ],
  20020. [
  20021. 29,
  20022. 43,
  20023. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20024. "18",
  20025. 1.2,
  20026. 0,
  20027. 1,
  20028. 1,
  20029. 1,
  20030. 0,
  20031. 0,
  20032. 0
  20033. ]
  20034. ]
  20035. , [
  20036. [186, 558, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20037. 6,
  20038. 102,
  20039. [
  20040. [99]
  20041. ],
  20042. [
  20043. ],
  20044. [
  20045. 29,
  20046. 43,
  20047. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20048. "2",
  20049. 1.2,
  20050. 0,
  20051. 1,
  20052. 1,
  20053. 1,
  20054. 0,
  20055. 0,
  20056. 0
  20057. ]
  20058. ]
  20059. , [
  20060. [337, 561, 0, 69, 74, 0, 0, 1, 0.5072463750839233, 0.5, 0, 0, []],
  20061. 13,
  20062. 103,
  20063. [
  20064. [1]
  20065. ],
  20066. [
  20067. ],
  20068. [
  20069. 0,
  20070. "Default",
  20071. 0,
  20072. 1
  20073. ]
  20074. ]
  20075. , [
  20076. [47, 561, 0, 69, 74, 0, 0, 1, 0.4927536249160767, 0.5, 0, 0, []],
  20077. 13,
  20078. 104,
  20079. [
  20080. [0]
  20081. ],
  20082. [
  20083. ],
  20084. [
  20085. 0,
  20086. "Default",
  20087. 1,
  20088. 1
  20089. ]
  20090. ]
  20091. ],
  20092. [ ]
  20093. ]
  20094. ],
  20095. [
  20096. ],
  20097. []
  20098. ]
  20099. , [
  20100. "levels3",
  20101. 384,
  20102. 600,
  20103. false,
  20104. "levelselect",
  20105. 7026327256946664,
  20106. [
  20107. [
  20108. "Layer 0",
  20109. 0,
  20110. 9865693681911757,
  20111. true,
  20112. [44, 44, 44],
  20113. false,
  20114. 1,
  20115. 1,
  20116. 1,
  20117. false,
  20118. 1,
  20119. 0,
  20120. 0,
  20121. [
  20122. [
  20123. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  20124. 3,
  20125. 105,
  20126. [
  20127. ],
  20128. [
  20129. ],
  20130. [
  20131. 0,
  20132. "Default",
  20133. 0,
  20134. 1
  20135. ]
  20136. ]
  20137. , [
  20138. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  20139. 1,
  20140. 106,
  20141. [
  20142. ],
  20143. [
  20144. ],
  20145. [
  20146. 1,
  20147. "Default",
  20148. 0,
  20149. 1
  20150. ]
  20151. ]
  20152. , [
  20153. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  20154. 1,
  20155. 107,
  20156. [
  20157. ],
  20158. [
  20159. ],
  20160. [
  20161. 1,
  20162. "Default",
  20163. 0,
  20164. 1
  20165. ]
  20166. ]
  20167. , [
  20168. [0, 521, 0, 386, 143, 0, 0, 0.800000011920929, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  20169. 3,
  20170. 108,
  20171. [
  20172. ],
  20173. [
  20174. ],
  20175. [
  20176. 0,
  20177. "Default",
  20178. 2,
  20179. 1
  20180. ]
  20181. ]
  20182. , [
  20183. [-1, -270, 0, 386, 161, 0, 0, 0.800000011920929, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  20184. 3,
  20185. 109,
  20186. [
  20187. ],
  20188. [
  20189. ],
  20190. [
  20191. 0,
  20192. "Default",
  20193. 1,
  20194. 1
  20195. ]
  20196. ]
  20197. , [
  20198. [262.0788269042969, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  20199. 4,
  20200. 110,
  20201. [
  20202. [3]
  20203. ],
  20204. [
  20205. [
  20206. 1,
  20207. 0,
  20208. 0,
  20209. 4,
  20210. 0,
  20211. 0,
  20212. 0,
  20213. 50,
  20214. 0
  20215. ]
  20216. ],
  20217. [
  20218. 0,
  20219. "Default",
  20220. 3,
  20221. 1
  20222. ]
  20223. ]
  20224. , [
  20225. [66.316650390625, 33.14364624023438, 0, 316.1051330566406, 64, 0, 0, 1, 0, 0, 0, 0, []],
  20226. 6,
  20227. 111,
  20228. [
  20229. [1]
  20230. ],
  20231. [
  20232. ],
  20233. [
  20234. 29,
  20235. 43,
  20236. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20237. sg_texts[SG.lang]["MORE GAMES"],
  20238. 1,
  20239. 0,
  20240. 0,
  20241. 0,
  20242. 0,
  20243. 0,
  20244. 0,
  20245. 0
  20246. ]
  20247. ]
  20248. , [
  20249. [66.09172058105469, 201.9490814208984, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20250. 12,
  20251. 112,
  20252. [
  20253. [19]
  20254. ],
  20255. [
  20256. ],
  20257. [
  20258. 0,
  20259. "Default",
  20260. 0,
  20261. 1
  20262. ]
  20263. ]
  20264. , [
  20265. [67.10943603515625, 181.2852935791016, 0, 77, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20266. 6,
  20267. 113,
  20268. [
  20269. [0]
  20270. ],
  20271. [
  20272. ],
  20273. [
  20274. 29,
  20275. 43,
  20276. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20277. "19",
  20278. 1.2,
  20279. 0,
  20280. 1,
  20281. 1,
  20282. 1,
  20283. 0,
  20284. 0,
  20285. 0
  20286. ]
  20287. ]
  20288. , [
  20289. [188.1265869140625, 202.7693786621094, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20290. 12,
  20291. 115,
  20292. [
  20293. [20]
  20294. ],
  20295. [
  20296. ],
  20297. [
  20298. 0,
  20299. "Default",
  20300. 0,
  20301. 1
  20302. ]
  20303. ]
  20304. , [
  20305. [187.6443176269531, 182.1055908203125, 0, 74, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20306. 6,
  20307. 116,
  20308. [
  20309. [0]
  20310. ],
  20311. [
  20312. ],
  20313. [
  20314. 29,
  20315. 43,
  20316. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20317. "20",
  20318. 1.2,
  20319. 0,
  20320. 1,
  20321. 1,
  20322. 1,
  20323. 0,
  20324. 0,
  20325. 0
  20326. ]
  20327. ]
  20328. , [
  20329. [311.4395446777344, 202.9425201416016, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20330. 12,
  20331. 118,
  20332. [
  20333. [21]
  20334. ],
  20335. [
  20336. ],
  20337. [
  20338. 0,
  20339. "Default",
  20340. 0,
  20341. 1
  20342. ]
  20343. ]
  20344. , [
  20345. [310.4572143554688, 182.2787322998047, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20346. 6,
  20347. 119,
  20348. [
  20349. [0]
  20350. ],
  20351. [
  20352. ],
  20353. [
  20354. 29,
  20355. 43,
  20356. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20357. "21",
  20358. 1.2,
  20359. 0,
  20360. 1,
  20361. 1,
  20362. 1,
  20363. 0,
  20364. 0,
  20365. 0
  20366. ]
  20367. ]
  20368. , [
  20369. [68.41082763671875, 319.6491394042969, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20370. 12,
  20371. 121,
  20372. [
  20373. [22]
  20374. ],
  20375. [
  20376. ],
  20377. [
  20378. 0,
  20379. "Default",
  20380. 0,
  20381. 1
  20382. ]
  20383. ]
  20384. , [
  20385. [66.42854309082031, 298.9853515625, 0, 71, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20386. 6,
  20387. 122,
  20388. [
  20389. [0]
  20390. ],
  20391. [
  20392. ],
  20393. [
  20394. 29,
  20395. 43,
  20396. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20397. "22",
  20398. 1.2,
  20399. 0,
  20400. 1,
  20401. 1,
  20402. 1,
  20403. 0,
  20404. 0,
  20405. 0
  20406. ]
  20407. ]
  20408. , [
  20409. [190.4456939697266, 320.4694213867188, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20410. 12,
  20411. 124,
  20412. [
  20413. [23]
  20414. ],
  20415. [
  20416. ],
  20417. [
  20418. 0,
  20419. "Default",
  20420. 0,
  20421. 1
  20422. ]
  20423. ]
  20424. , [
  20425. [188.4634246826172, 299.8056640625, 0, 71, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20426. 6,
  20427. 125,
  20428. [
  20429. [0]
  20430. ],
  20431. [
  20432. ],
  20433. [
  20434. 29,
  20435. 43,
  20436. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20437. "23",
  20438. 1.2,
  20439. 0,
  20440. 1,
  20441. 1,
  20442. 1,
  20443. 0,
  20444. 0,
  20445. 0
  20446. ]
  20447. ]
  20448. , [
  20449. [313.7586669921875, 320.642578125, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20450. 12,
  20451. 127,
  20452. [
  20453. [24]
  20454. ],
  20455. [
  20456. ],
  20457. [
  20458. 0,
  20459. "Default",
  20460. 0,
  20461. 1
  20462. ]
  20463. ]
  20464. , [
  20465. [313.2763061523438, 299.9787902832031, 0, 74, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20466. 6,
  20467. 128,
  20468. [
  20469. [0]
  20470. ],
  20471. [
  20472. ],
  20473. [
  20474. 29,
  20475. 43,
  20476. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20477. "24",
  20478. 1.2,
  20479. 0,
  20480. 1,
  20481. 1,
  20482. 1,
  20483. 0,
  20484. 0,
  20485. 0
  20486. ]
  20487. ]
  20488. , [
  20489. [68.99578857421875, 439.5648193359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20490. 12,
  20491. 130,
  20492. [
  20493. [25]
  20494. ],
  20495. [
  20496. ],
  20497. [
  20498. 0,
  20499. "Default",
  20500. 0,
  20501. 1
  20502. ]
  20503. ]
  20504. , [
  20505. [68.01350402832031, 418.9010314941406, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20506. 6,
  20507. 131,
  20508. [
  20509. [0]
  20510. ],
  20511. [
  20512. ],
  20513. [
  20514. 29,
  20515. 43,
  20516. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20517. "25",
  20518. 1.2,
  20519. 0,
  20520. 1,
  20521. 1,
  20522. 1,
  20523. 0,
  20524. 0,
  20525. 0
  20526. ]
  20527. ]
  20528. , [
  20529. [191.0306549072266, 440.3851318359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20530. 12,
  20531. 133,
  20532. [
  20533. [26]
  20534. ],
  20535. [
  20536. ],
  20537. [
  20538. 0,
  20539. "Default",
  20540. 0,
  20541. 1
  20542. ]
  20543. ]
  20544. , [
  20545. [190.0483856201172, 419.7213134765625, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20546. 6,
  20547. 134,
  20548. [
  20549. [0]
  20550. ],
  20551. [
  20552. ],
  20553. [
  20554. 29,
  20555. 43,
  20556. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20557. "26",
  20558. 1.2,
  20559. 0,
  20560. 1,
  20561. 1,
  20562. 1,
  20563. 0,
  20564. 0,
  20565. 0
  20566. ]
  20567. ]
  20568. , [
  20569. [314.3436279296875, 440.5582580566406, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20570. 12,
  20571. 136,
  20572. [
  20573. [27]
  20574. ],
  20575. [
  20576. ],
  20577. [
  20578. 0,
  20579. "Default",
  20580. 0,
  20581. 1
  20582. ]
  20583. ]
  20584. , [
  20585. [312.8612670898438, 419.8944702148438, 0, 72, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20586. 6,
  20587. 137,
  20588. [
  20589. [0]
  20590. ],
  20591. [
  20592. ],
  20593. [
  20594. 29,
  20595. 43,
  20596. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20597. "27",
  20598. 1.2,
  20599. 0,
  20600. 1,
  20601. 1,
  20602. 1,
  20603. 0,
  20604. 0,
  20605. 0
  20606. ]
  20607. ]
  20608. , [
  20609. [186, 558, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20610. 6,
  20611. 139,
  20612. [
  20613. [99]
  20614. ],
  20615. [
  20616. ],
  20617. [
  20618. 29,
  20619. 43,
  20620. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20621. "3",
  20622. 1.2,
  20623. 0,
  20624. 1,
  20625. 1,
  20626. 1,
  20627. 0,
  20628. 0,
  20629. 0
  20630. ]
  20631. ]
  20632. , [
  20633. [337, 561, 0, 69, 74, 0, 0, 1, 0.5072463750839233, 0.5, 0, 0, []],
  20634. 13,
  20635. 140,
  20636. [
  20637. [1]
  20638. ],
  20639. [
  20640. ],
  20641. [
  20642. 0,
  20643. "Default",
  20644. 0,
  20645. 1
  20646. ]
  20647. ]
  20648. , [
  20649. [47, 561, 0, 69, 74, 0, 0, 1, 0.4927536249160767, 0.5, 0, 0, []],
  20650. 13,
  20651. 141,
  20652. [
  20653. [0]
  20654. ],
  20655. [
  20656. ],
  20657. [
  20658. 0,
  20659. "Default",
  20660. 1,
  20661. 1
  20662. ]
  20663. ]
  20664. ],
  20665. [ ]
  20666. ]
  20667. ],
  20668. [
  20669. ],
  20670. []
  20671. ]
  20672. , [
  20673. "levels4",
  20674. 384,
  20675. 600,
  20676. false,
  20677. "levelselect",
  20678. 2798515885811848,
  20679. [
  20680. [
  20681. "Layer 0",
  20682. 0,
  20683. 2425829972258829,
  20684. true,
  20685. [44, 44, 44],
  20686. false,
  20687. 1,
  20688. 1,
  20689. 1,
  20690. false,
  20691. 1,
  20692. 0,
  20693. 0,
  20694. [
  20695. [
  20696. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  20697. 3,
  20698. 142,
  20699. [
  20700. ],
  20701. [
  20702. ],
  20703. [
  20704. 0,
  20705. "Default",
  20706. 0,
  20707. 1
  20708. ]
  20709. ]
  20710. , [
  20711. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  20712. 1,
  20713. 143,
  20714. [
  20715. ],
  20716. [
  20717. ],
  20718. [
  20719. 1,
  20720. "Default",
  20721. 0,
  20722. 1
  20723. ]
  20724. ]
  20725. , [
  20726. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  20727. 1,
  20728. 144,
  20729. [
  20730. ],
  20731. [
  20732. ],
  20733. [
  20734. 1,
  20735. "Default",
  20736. 0,
  20737. 1
  20738. ]
  20739. ]
  20740. , [
  20741. [0, 521, 0, 386, 143, 0, 0, 0.800000011920929, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  20742. 3,
  20743. 145,
  20744. [
  20745. ],
  20746. [
  20747. ],
  20748. [
  20749. 0,
  20750. "Default",
  20751. 2,
  20752. 1
  20753. ]
  20754. ]
  20755. , [
  20756. [-1, -270, 0, 386, 161, 0, 0, 0.800000011920929, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  20757. 3,
  20758. 146,
  20759. [
  20760. ],
  20761. [
  20762. ],
  20763. [
  20764. 0,
  20765. "Default",
  20766. 1,
  20767. 1
  20768. ]
  20769. ]
  20770. , [
  20771. [262.0788269042969, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  20772. 4,
  20773. 147,
  20774. [
  20775. [3]
  20776. ],
  20777. [
  20778. [
  20779. 1,
  20780. 0,
  20781. 0,
  20782. 4,
  20783. 0,
  20784. 0,
  20785. 0,
  20786. 50,
  20787. 0
  20788. ]
  20789. ],
  20790. [
  20791. 0,
  20792. "Default",
  20793. 3,
  20794. 1
  20795. ]
  20796. ]
  20797. , [
  20798. [66.316650390625, 33.14364624023438, 0, 316.1051330566406, 64, 0, 0, 1, 0, 0, 0, 0, []],
  20799. 6,
  20800. 148,
  20801. [
  20802. [1]
  20803. ],
  20804. [
  20805. ],
  20806. [
  20807. 29,
  20808. 43,
  20809. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20810. sg_texts[SG.lang]["MORE GAMES"],
  20811. 1,
  20812. 0,
  20813. 0,
  20814. 0,
  20815. 0,
  20816. 0,
  20817. 0,
  20818. 0
  20819. ]
  20820. ]
  20821. , [
  20822. [66.09172058105469, 201.9490814208984, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20823. 12,
  20824. 149,
  20825. [
  20826. [28]
  20827. ],
  20828. [
  20829. ],
  20830. [
  20831. 0,
  20832. "Default",
  20833. 0,
  20834. 1
  20835. ]
  20836. ]
  20837. , [
  20838. [67.10943603515625, 181.2852935791016, 0, 77, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20839. 6,
  20840. 150,
  20841. [
  20842. [0]
  20843. ],
  20844. [
  20845. ],
  20846. [
  20847. 29,
  20848. 43,
  20849. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20850. "28",
  20851. 1.2,
  20852. 0,
  20853. 1,
  20854. 1,
  20855. 1,
  20856. 0,
  20857. 0,
  20858. 0
  20859. ]
  20860. ]
  20861. , [
  20862. [188.1265869140625, 202.7693786621094, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20863. 12,
  20864. 152,
  20865. [
  20866. [29]
  20867. ],
  20868. [
  20869. ],
  20870. [
  20871. 0,
  20872. "Default",
  20873. 0,
  20874. 1
  20875. ]
  20876. ]
  20877. , [
  20878. [187.6443176269531, 182.1055908203125, 0, 74, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20879. 6,
  20880. 153,
  20881. [
  20882. [0]
  20883. ],
  20884. [
  20885. ],
  20886. [
  20887. 29,
  20888. 43,
  20889. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20890. "29",
  20891. 1.2,
  20892. 0,
  20893. 1,
  20894. 1,
  20895. 1,
  20896. 0,
  20897. 0,
  20898. 0
  20899. ]
  20900. ]
  20901. , [
  20902. [311.4395446777344, 202.9425201416016, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20903. 12,
  20904. 155,
  20905. [
  20906. [30]
  20907. ],
  20908. [
  20909. ],
  20910. [
  20911. 0,
  20912. "Default",
  20913. 0,
  20914. 1
  20915. ]
  20916. ]
  20917. , [
  20918. [310.4572143554688, 182.2787322998047, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20919. 6,
  20920. 156,
  20921. [
  20922. [0]
  20923. ],
  20924. [
  20925. ],
  20926. [
  20927. 29,
  20928. 43,
  20929. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20930. "30",
  20931. 1.2,
  20932. 0,
  20933. 1,
  20934. 1,
  20935. 1,
  20936. 0,
  20937. 0,
  20938. 0
  20939. ]
  20940. ]
  20941. , [
  20942. [68.41082763671875, 319.6491394042969, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20943. 12,
  20944. 158,
  20945. [
  20946. [31]
  20947. ],
  20948. [
  20949. ],
  20950. [
  20951. 0,
  20952. "Default",
  20953. 0,
  20954. 1
  20955. ]
  20956. ]
  20957. , [
  20958. [66.42854309082031, 298.9853515625, 0, 71, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20959. 6,
  20960. 159,
  20961. [
  20962. [0]
  20963. ],
  20964. [
  20965. ],
  20966. [
  20967. 29,
  20968. 43,
  20969. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  20970. "31",
  20971. 1.2,
  20972. 0,
  20973. 1,
  20974. 1,
  20975. 1,
  20976. 0,
  20977. 0,
  20978. 0
  20979. ]
  20980. ]
  20981. , [
  20982. [190.4456939697266, 320.4694213867188, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20983. 12,
  20984. 161,
  20985. [
  20986. [32]
  20987. ],
  20988. [
  20989. ],
  20990. [
  20991. 0,
  20992. "Default",
  20993. 0,
  20994. 1
  20995. ]
  20996. ]
  20997. , [
  20998. [188.4634246826172, 299.8056640625, 0, 71, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  20999. 6,
  21000. 162,
  21001. [
  21002. [0]
  21003. ],
  21004. [
  21005. ],
  21006. [
  21007. 29,
  21008. 43,
  21009. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21010. "32",
  21011. 1.2,
  21012. 0,
  21013. 1,
  21014. 1,
  21015. 1,
  21016. 0,
  21017. 0,
  21018. 0
  21019. ]
  21020. ]
  21021. , [
  21022. [313.7586669921875, 320.642578125, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21023. 12,
  21024. 164,
  21025. [
  21026. [33]
  21027. ],
  21028. [
  21029. ],
  21030. [
  21031. 0,
  21032. "Default",
  21033. 0,
  21034. 1
  21035. ]
  21036. ]
  21037. , [
  21038. [313.2763061523438, 299.9787902832031, 0, 74, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21039. 6,
  21040. 165,
  21041. [
  21042. [0]
  21043. ],
  21044. [
  21045. ],
  21046. [
  21047. 29,
  21048. 43,
  21049. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21050. "33",
  21051. 1.2,
  21052. 0,
  21053. 1,
  21054. 1,
  21055. 1,
  21056. 0,
  21057. 0,
  21058. 0
  21059. ]
  21060. ]
  21061. , [
  21062. [68.99578857421875, 439.5648193359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21063. 12,
  21064. 167,
  21065. [
  21066. [34]
  21067. ],
  21068. [
  21069. ],
  21070. [
  21071. 0,
  21072. "Default",
  21073. 0,
  21074. 1
  21075. ]
  21076. ]
  21077. , [
  21078. [68.01350402832031, 418.9010314941406, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21079. 6,
  21080. 168,
  21081. [
  21082. [0]
  21083. ],
  21084. [
  21085. ],
  21086. [
  21087. 29,
  21088. 43,
  21089. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21090. "34",
  21091. 1.2,
  21092. 0,
  21093. 1,
  21094. 1,
  21095. 1,
  21096. 0,
  21097. 0,
  21098. 0
  21099. ]
  21100. ]
  21101. , [
  21102. [191.0306549072266, 440.3851318359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21103. 12,
  21104. 170,
  21105. [
  21106. [35]
  21107. ],
  21108. [
  21109. ],
  21110. [
  21111. 0,
  21112. "Default",
  21113. 0,
  21114. 1
  21115. ]
  21116. ]
  21117. , [
  21118. [190.0483856201172, 419.7213134765625, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21119. 6,
  21120. 171,
  21121. [
  21122. [0]
  21123. ],
  21124. [
  21125. ],
  21126. [
  21127. 29,
  21128. 43,
  21129. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21130. "35",
  21131. 1.2,
  21132. 0,
  21133. 1,
  21134. 1,
  21135. 1,
  21136. 0,
  21137. 0,
  21138. 0
  21139. ]
  21140. ]
  21141. , [
  21142. [314.3436279296875, 440.5582580566406, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21143. 12,
  21144. 173,
  21145. [
  21146. [36]
  21147. ],
  21148. [
  21149. ],
  21150. [
  21151. 0,
  21152. "Default",
  21153. 0,
  21154. 1
  21155. ]
  21156. ]
  21157. , [
  21158. [312.8612670898438, 419.8944702148438, 0, 72, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21159. 6,
  21160. 174,
  21161. [
  21162. [0]
  21163. ],
  21164. [
  21165. ],
  21166. [
  21167. 29,
  21168. 43,
  21169. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21170. "36",
  21171. 1.2,
  21172. 0,
  21173. 1,
  21174. 1,
  21175. 1,
  21176. 0,
  21177. 0,
  21178. 0
  21179. ]
  21180. ]
  21181. , [
  21182. [186, 558, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21183. 6,
  21184. 176,
  21185. [
  21186. [99]
  21187. ],
  21188. [
  21189. ],
  21190. [
  21191. 29,
  21192. 43,
  21193. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21194. "4",
  21195. 1.2,
  21196. 0,
  21197. 1,
  21198. 1,
  21199. 1,
  21200. 0,
  21201. 0,
  21202. 0
  21203. ]
  21204. ]
  21205. , [
  21206. [337, 561, 0, 69, 74, 0, 0, 1, 0.5072463750839233, 0.5, 0, 0, []],
  21207. 13,
  21208. 177,
  21209. [
  21210. [1]
  21211. ],
  21212. [
  21213. ],
  21214. [
  21215. 0,
  21216. "Default",
  21217. 0,
  21218. 1
  21219. ]
  21220. ]
  21221. , [
  21222. [47, 561, 0, 69, 74, 0, 0, 1, 0.4927536249160767, 0.5, 0, 0, []],
  21223. 13,
  21224. 178,
  21225. [
  21226. [0]
  21227. ],
  21228. [
  21229. ],
  21230. [
  21231. 0,
  21232. "Default",
  21233. 1,
  21234. 1
  21235. ]
  21236. ]
  21237. ],
  21238. [ ]
  21239. ]
  21240. ],
  21241. [
  21242. ],
  21243. []
  21244. ]
  21245. , [
  21246. "levels5",
  21247. 384,
  21248. 600,
  21249. false,
  21250. "levelselect",
  21251. 7870730390201216,
  21252. [
  21253. [
  21254. "Layer 0",
  21255. 0,
  21256. 9719950675536724,
  21257. true,
  21258. [44, 44, 44],
  21259. false,
  21260. 1,
  21261. 1,
  21262. 1,
  21263. false,
  21264. 1,
  21265. 0,
  21266. 0,
  21267. [
  21268. [
  21269. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  21270. 3,
  21271. 179,
  21272. [
  21273. ],
  21274. [
  21275. ],
  21276. [
  21277. 0,
  21278. "Default",
  21279. 0,
  21280. 1
  21281. ]
  21282. ]
  21283. , [
  21284. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  21285. 1,
  21286. 180,
  21287. [
  21288. ],
  21289. [
  21290. ],
  21291. [
  21292. 1,
  21293. "Default",
  21294. 0,
  21295. 1
  21296. ]
  21297. ]
  21298. , [
  21299. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  21300. 1,
  21301. 181,
  21302. [
  21303. ],
  21304. [
  21305. ],
  21306. [
  21307. 1,
  21308. "Default",
  21309. 0,
  21310. 1
  21311. ]
  21312. ]
  21313. , [
  21314. [0, 521, 0, 386, 143, 0, 0, 0.800000011920929, 0.002590673509985209, 0.00699300691485405, 0, 0, []],
  21315. 3,
  21316. 182,
  21317. [
  21318. ],
  21319. [
  21320. ],
  21321. [
  21322. 0,
  21323. "Default",
  21324. 2,
  21325. 1
  21326. ]
  21327. ]
  21328. , [
  21329. [-1, -270, 0, 386, 161, 0, 0, 0.800000011920929, 0.002590673509985209, -1.422360301017761, 0, 0, []],
  21330. 3,
  21331. 183,
  21332. [
  21333. ],
  21334. [
  21335. ],
  21336. [
  21337. 0,
  21338. "Default",
  21339. 1,
  21340. 1
  21341. ]
  21342. ]
  21343. , [
  21344. [262.0788269042969, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  21345. 4,
  21346. 184,
  21347. [
  21348. [3]
  21349. ],
  21350. [
  21351. [
  21352. 1,
  21353. 0,
  21354. 0,
  21355. 4,
  21356. 0,
  21357. 0,
  21358. 0,
  21359. 50,
  21360. 0
  21361. ]
  21362. ],
  21363. [
  21364. 0,
  21365. "Default",
  21366. 3,
  21367. 1
  21368. ]
  21369. ]
  21370. , [
  21371. [66.316650390625, 33.14364624023438, 0, 316.1051330566406, 64, 0, 0, 1, 0, 0, 0, 0, []],
  21372. 6,
  21373. 185,
  21374. [
  21375. [1]
  21376. ],
  21377. [
  21378. ],
  21379. [
  21380. 29,
  21381. 43,
  21382. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21383. sg_texts[SG.lang]["MORE GAMES"],
  21384. 1,
  21385. 0,
  21386. 0,
  21387. 0,
  21388. 0,
  21389. 0,
  21390. 0,
  21391. 0
  21392. ]
  21393. ]
  21394. , [
  21395. [66.09172058105469, 201.9490814208984, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21396. 12,
  21397. 186,
  21398. [
  21399. [37]
  21400. ],
  21401. [
  21402. ],
  21403. [
  21404. 0,
  21405. "Default",
  21406. 0,
  21407. 1
  21408. ]
  21409. ]
  21410. , [
  21411. [67.10943603515625, 181.2852935791016, 0, 77, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21412. 6,
  21413. 187,
  21414. [
  21415. [0]
  21416. ],
  21417. [
  21418. ],
  21419. [
  21420. 29,
  21421. 43,
  21422. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21423. "37",
  21424. 1.2,
  21425. 0,
  21426. 1,
  21427. 1,
  21428. 1,
  21429. 0,
  21430. 0,
  21431. 0
  21432. ]
  21433. ]
  21434. , [
  21435. [188.1265869140625, 202.7693786621094, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21436. 12,
  21437. 189,
  21438. [
  21439. [38]
  21440. ],
  21441. [
  21442. ],
  21443. [
  21444. 0,
  21445. "Default",
  21446. 0,
  21447. 1
  21448. ]
  21449. ]
  21450. , [
  21451. [187.6443176269531, 182.1055908203125, 0, 74, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21452. 6,
  21453. 190,
  21454. [
  21455. [0]
  21456. ],
  21457. [
  21458. ],
  21459. [
  21460. 29,
  21461. 43,
  21462. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21463. "38",
  21464. 1.2,
  21465. 0,
  21466. 1,
  21467. 1,
  21468. 1,
  21469. 0,
  21470. 0,
  21471. 0
  21472. ]
  21473. ]
  21474. , [
  21475. [311.4395446777344, 202.9425201416016, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21476. 12,
  21477. 192,
  21478. [
  21479. [39]
  21480. ],
  21481. [
  21482. ],
  21483. [
  21484. 0,
  21485. "Default",
  21486. 0,
  21487. 1
  21488. ]
  21489. ]
  21490. , [
  21491. [310.4572143554688, 182.2787322998047, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21492. 6,
  21493. 193,
  21494. [
  21495. [0]
  21496. ],
  21497. [
  21498. ],
  21499. [
  21500. 29,
  21501. 43,
  21502. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21503. "39",
  21504. 1.2,
  21505. 0,
  21506. 1,
  21507. 1,
  21508. 1,
  21509. 0,
  21510. 0,
  21511. 0
  21512. ]
  21513. ]
  21514. , [
  21515. [68.41082763671875, 319.6491394042969, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21516. 12,
  21517. 195,
  21518. [
  21519. [40]
  21520. ],
  21521. [
  21522. ],
  21523. [
  21524. 0,
  21525. "Default",
  21526. 0,
  21527. 1
  21528. ]
  21529. ]
  21530. , [
  21531. [66.42854309082031, 298.9853515625, 0, 71, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21532. 6,
  21533. 196,
  21534. [
  21535. [0]
  21536. ],
  21537. [
  21538. ],
  21539. [
  21540. 29,
  21541. 43,
  21542. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21543. "40",
  21544. 1.2,
  21545. 0,
  21546. 1,
  21547. 1,
  21548. 1,
  21549. 0,
  21550. 0,
  21551. 0
  21552. ]
  21553. ]
  21554. , [
  21555. [190.4456939697266, 320.4694213867188, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21556. 12,
  21557. 198,
  21558. [
  21559. [41]
  21560. ],
  21561. [
  21562. ],
  21563. [
  21564. 0,
  21565. "Default",
  21566. 0,
  21567. 1
  21568. ]
  21569. ]
  21570. , [
  21571. [188.4634246826172, 299.8056640625, 0, 71, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21572. 6,
  21573. 199,
  21574. [
  21575. [0]
  21576. ],
  21577. [
  21578. ],
  21579. [
  21580. 29,
  21581. 43,
  21582. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21583. "41",
  21584. 1.2,
  21585. 0,
  21586. 1,
  21587. 1,
  21588. 1,
  21589. 0,
  21590. 0,
  21591. 0
  21592. ]
  21593. ]
  21594. , [
  21595. [313.7586669921875, 320.642578125, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21596. 12,
  21597. 201,
  21598. [
  21599. [42]
  21600. ],
  21601. [
  21602. ],
  21603. [
  21604. 0,
  21605. "Default",
  21606. 0,
  21607. 1
  21608. ]
  21609. ]
  21610. , [
  21611. [313.2763061523438, 299.9787902832031, 0, 74, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21612. 6,
  21613. 202,
  21614. [
  21615. [0]
  21616. ],
  21617. [
  21618. ],
  21619. [
  21620. 29,
  21621. 43,
  21622. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21623. "42",
  21624. 1.2,
  21625. 0,
  21626. 1,
  21627. 1,
  21628. 1,
  21629. 0,
  21630. 0,
  21631. 0
  21632. ]
  21633. ]
  21634. , [
  21635. [68.99578857421875, 439.5648193359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21636. 12,
  21637. 204,
  21638. [
  21639. [43]
  21640. ],
  21641. [
  21642. ],
  21643. [
  21644. 0,
  21645. "Default",
  21646. 0,
  21647. 1
  21648. ]
  21649. ]
  21650. , [
  21651. [68.01350402832031, 418.9010314941406, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21652. 6,
  21653. 205,
  21654. [
  21655. [0]
  21656. ],
  21657. [
  21658. ],
  21659. [
  21660. 29,
  21661. 43,
  21662. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21663. "43",
  21664. 1.2,
  21665. 0,
  21666. 1,
  21667. 1,
  21668. 1,
  21669. 0,
  21670. 0,
  21671. 0
  21672. ]
  21673. ]
  21674. , [
  21675. [191.0306549072266, 440.3851318359375, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21676. 12,
  21677. 207,
  21678. [
  21679. [44]
  21680. ],
  21681. [
  21682. ],
  21683. [
  21684. 0,
  21685. "Default",
  21686. 0,
  21687. 1
  21688. ]
  21689. ]
  21690. , [
  21691. [190.0483856201172, 419.7213134765625, 0, 73, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21692. 6,
  21693. 208,
  21694. [
  21695. [0]
  21696. ],
  21697. [
  21698. ],
  21699. [
  21700. 29,
  21701. 43,
  21702. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21703. "44",
  21704. 1.2,
  21705. 0,
  21706. 1,
  21707. 1,
  21708. 1,
  21709. 0,
  21710. 0,
  21711. 0
  21712. ]
  21713. ]
  21714. , [
  21715. [314.3436279296875, 440.5582580566406, 0, 94, 100, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21716. 12,
  21717. 210,
  21718. [
  21719. [45]
  21720. ],
  21721. [
  21722. ],
  21723. [
  21724. 0,
  21725. "Default",
  21726. 0,
  21727. 1
  21728. ]
  21729. ]
  21730. , [
  21731. [312.8612670898438, 419.8944702148438, 0, 72, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21732. 6,
  21733. 211,
  21734. [
  21735. [0]
  21736. ],
  21737. [
  21738. ],
  21739. [
  21740. 29,
  21741. 43,
  21742. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21743. "45",
  21744. 1.2,
  21745. 0,
  21746. 1,
  21747. 1,
  21748. 1,
  21749. 0,
  21750. 0,
  21751. 0
  21752. ]
  21753. ]
  21754. , [
  21755. [186, 558, 0, 60.73310852050781, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  21756. 6,
  21757. 213,
  21758. [
  21759. [99]
  21760. ],
  21761. [
  21762. ],
  21763. [
  21764. 29,
  21765. 43,
  21766. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  21767. "5",
  21768. 1.2,
  21769. 0,
  21770. 1,
  21771. 1,
  21772. 1,
  21773. 0,
  21774. 0,
  21775. 0
  21776. ]
  21777. ]
  21778. , [
  21779. [47, 561, 0, 69, 74, 0, 0, 1, 0.4927536249160767, 0.5, 0, 0, []],
  21780. 13,
  21781. 215,
  21782. [
  21783. [0]
  21784. ],
  21785. [
  21786. ],
  21787. [
  21788. 0,
  21789. "Default",
  21790. 1,
  21791. 1
  21792. ]
  21793. ]
  21794. ],
  21795. [ ]
  21796. ]
  21797. ],
  21798. [
  21799. ],
  21800. []
  21801. ]
  21802. , [
  21803. "level1",
  21804. 384,
  21805. 600,
  21806. false,
  21807. "level",
  21808. 6623983983586913,
  21809. [
  21810. [
  21811. "Layer 0",
  21812. 0,
  21813. 7970073798500857,
  21814. true,
  21815. [44, 44, 44],
  21816. false,
  21817. 1,
  21818. 1,
  21819. 1,
  21820. false,
  21821. 1,
  21822. 0,
  21823. 0,
  21824. [
  21825. [
  21826. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  21827. 3,
  21828. 5,
  21829. [
  21830. ],
  21831. [
  21832. ],
  21833. [
  21834. 0,
  21835. "Default",
  21836. 0,
  21837. 1
  21838. ]
  21839. ]
  21840. , [
  21841. [192, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  21842. 0,
  21843. 0,
  21844. [
  21845. [0],
  21846. [0],
  21847. [0]
  21848. ],
  21849. [
  21850. [
  21851. 2,
  21852. 1
  21853. ],
  21854. [
  21855. 1
  21856. ],
  21857. [
  21858. 200,
  21859. 600,
  21860. 500,
  21861. 3,
  21862. 3,
  21863. 1,
  21864. 1
  21865. ]
  21866. ],
  21867. [
  21868. 0,
  21869. "Default",
  21870. 0,
  21871. 1
  21872. ]
  21873. ]
  21874. , [
  21875. [0, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  21876. 0,
  21877. 6,
  21878. [
  21879. [0],
  21880. [0],
  21881. [0]
  21882. ],
  21883. [
  21884. [
  21885. 1,
  21886. 1
  21887. ],
  21888. [
  21889. 1
  21890. ],
  21891. [
  21892. 200,
  21893. 600,
  21894. 500,
  21895. 3,
  21896. 3,
  21897. 1,
  21898. 1
  21899. ]
  21900. ],
  21901. [
  21902. 0,
  21903. "Default",
  21904. 3,
  21905. 1
  21906. ]
  21907. ]
  21908. , [
  21909. [64, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  21910. 0,
  21911. 11,
  21912. [
  21913. [0],
  21914. [0],
  21915. [0]
  21916. ],
  21917. [
  21918. [
  21919. 1,
  21920. 1
  21921. ],
  21922. [
  21923. 1
  21924. ],
  21925. [
  21926. 200,
  21927. 600,
  21928. 500,
  21929. 3,
  21930. 3,
  21931. 1,
  21932. 1
  21933. ]
  21934. ],
  21935. [
  21936. 0,
  21937. "Default",
  21938. 1,
  21939. 1
  21940. ]
  21941. ]
  21942. , [
  21943. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  21944. 0,
  21945. 16,
  21946. [
  21947. [0],
  21948. [0],
  21949. [1]
  21950. ],
  21951. [
  21952. [
  21953. 1,
  21954. 1
  21955. ],
  21956. [
  21957. 1
  21958. ],
  21959. [
  21960. 0,
  21961. 0,
  21962. 0,
  21963. 3,
  21964. 0,
  21965. 0,
  21966. 1
  21967. ]
  21968. ],
  21969. [
  21970. 0,
  21971. "Red",
  21972. 4,
  21973. 1
  21974. ]
  21975. ]
  21976. , [
  21977. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  21978. 2,
  21979. 1,
  21980. [
  21981. ],
  21982. [
  21983. ],
  21984. [
  21985. 0,
  21986. "Default",
  21987. 0,
  21988. 1
  21989. ]
  21990. ]
  21991. , [
  21992. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  21993. 1,
  21994. 2,
  21995. [
  21996. ],
  21997. [
  21998. ],
  21999. [
  22000. 1,
  22001. "Default",
  22002. 0,
  22003. 1
  22004. ]
  22005. ]
  22006. , [
  22007. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22008. 1,
  22009. 3,
  22010. [
  22011. ],
  22012. [
  22013. ],
  22014. [
  22015. 1,
  22016. "Default",
  22017. 0,
  22018. 1
  22019. ]
  22020. ]
  22021. , [
  22022. [0, 521, 0, 386, 143, 0, 0, 0.800000011920929, 0.002590673509985209, 0.00699300691485405, 0, 0, []],
  22023. 3,
  22024. 7,
  22025. [
  22026. ],
  22027. [
  22028. ],
  22029. [
  22030. 0,
  22031. "Default",
  22032. 2,
  22033. 1
  22034. ]
  22035. ]
  22036. , [
  22037. [-1, -270, 0, 386, 161, 0, 0, 0.800000011920929, 0.002590673509985209, -1.422360301017761, 0, 0, []],
  22038. 3,
  22039. 9,
  22040. [
  22041. ],
  22042. [
  22043. ],
  22044. [
  22045. 0,
  22046. "Default",
  22047. 1,
  22048. 1
  22049. ]
  22050. ]
  22051. , [
  22052. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  22053. 4,
  22054. 10,
  22055. [
  22056. [0]
  22057. ],
  22058. [
  22059. [
  22060. 1,
  22061. 0,
  22062. 0,
  22063. 4,
  22064. 0,
  22065. 0,
  22066. 0,
  22067. 50,
  22068. 0
  22069. ]
  22070. ],
  22071. [
  22072. 0,
  22073. "Default",
  22074. 0,
  22075. 1
  22076. ]
  22077. ]
  22078. , [
  22079. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  22080. 4,
  22081. 12,
  22082. [
  22083. [1]
  22084. ],
  22085. [
  22086. [
  22087. 1,
  22088. 0,
  22089. 0,
  22090. 4,
  22091. 0,
  22092. 0,
  22093. 0,
  22094. 50,
  22095. 0
  22096. ]
  22097. ],
  22098. [
  22099. 0,
  22100. "Default",
  22101. 2,
  22102. 1
  22103. ]
  22104. ]
  22105. , [
  22106. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  22107. 4,
  22108. 13,
  22109. [
  22110. [2]
  22111. ],
  22112. [
  22113. [
  22114. 1,
  22115. 0,
  22116. 0,
  22117. 4,
  22118. 0,
  22119. 0,
  22120. 0,
  22121. 50,
  22122. 0
  22123. ]
  22124. ],
  22125. [
  22126. 0,
  22127. "Default",
  22128. 1,
  22129. 1
  22130. ]
  22131. ]
  22132. , [
  22133. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  22134. 5,
  22135. 14,
  22136. [
  22137. [0],
  22138. [0]
  22139. ],
  22140. [
  22141. ],
  22142. [
  22143. 0,
  22144. "Default",
  22145. 0,
  22146. 1
  22147. ]
  22148. ]
  22149. , [
  22150. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22151. 6,
  22152. 17,
  22153. [
  22154. [0]
  22155. ],
  22156. [
  22157. ],
  22158. [
  22159. 29,
  22160. 43,
  22161. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  22162. sg_texts[SG.lang]["MOVE:"],
  22163. 1,
  22164. 0,
  22165. 0,
  22166. 0,
  22167. 0,
  22168. 0,
  22169. 0,
  22170. 0
  22171. ]
  22172. ]
  22173. , [
  22174. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22175. 6,
  22176. 18,
  22177. [
  22178. [2]
  22179. ],
  22180. [
  22181. ],
  22182. [
  22183. 29,
  22184. 43,
  22185. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  22186. sg_texts[SG.lang]["LEVEL:"]+" 01",
  22187. 1,
  22188. 0,
  22189. 0,
  22190. 0,
  22191. 0,
  22192. 0,
  22193. 0,
  22194. 0
  22195. ]
  22196. ]
  22197. , [
  22198. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  22199. 4,
  22200. 21,
  22201. [
  22202. [3]
  22203. ],
  22204. [
  22205. [
  22206. 1,
  22207. 0,
  22208. 0,
  22209. 4,
  22210. 0,
  22211. 0,
  22212. 0,
  22213. 50,
  22214. 0
  22215. ]
  22216. ],
  22217. [
  22218. 0,
  22219. "Default",
  22220. 3,
  22221. 1
  22222. ]
  22223. ]
  22224. , [
  22225. [0, 320, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  22226. 0,
  22227. 8,
  22228. [
  22229. [0],
  22230. [0],
  22231. [0]
  22232. ],
  22233. [
  22234. [
  22235. 2,
  22236. 1
  22237. ],
  22238. [
  22239. 1
  22240. ],
  22241. [
  22242. 200,
  22243. 600,
  22244. 500,
  22245. 3,
  22246. 3,
  22247. 1,
  22248. 1
  22249. ]
  22250. ],
  22251. [
  22252. 0,
  22253. "Default",
  22254. 0,
  22255. 1
  22256. ]
  22257. ]
  22258. ],
  22259. [ ]
  22260. ]
  22261. ],
  22262. [
  22263. [
  22264. null,
  22265. 7,
  22266. 4,
  22267. [
  22268. ],
  22269. [
  22270. ],
  22271. [
  22272. 10,
  22273. 1,
  22274. 1
  22275. ]
  22276. ]
  22277. ],
  22278. []
  22279. ]
  22280. , [
  22281. "level2",
  22282. 384,
  22283. 600,
  22284. false,
  22285. "level",
  22286. 3169851775194241,
  22287. [
  22288. [
  22289. "Layer 0",
  22290. 0,
  22291. 9919873687287216,
  22292. true,
  22293. [44, 44, 44],
  22294. false,
  22295. 1,
  22296. 1,
  22297. 1,
  22298. false,
  22299. 1,
  22300. 0,
  22301. 0,
  22302. [
  22303. [
  22304. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  22305. 3,
  22306. 214,
  22307. [
  22308. ],
  22309. [
  22310. ],
  22311. [
  22312. 0,
  22313. "Default",
  22314. 0,
  22315. 1
  22316. ]
  22317. ]
  22318. , [
  22319. [0, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  22320. 0,
  22321. 216,
  22322. [
  22323. [0],
  22324. [0],
  22325. [0]
  22326. ],
  22327. [
  22328. [
  22329. 2,
  22330. 1
  22331. ],
  22332. [
  22333. 1
  22334. ],
  22335. [
  22336. 200,
  22337. 600,
  22338. 500,
  22339. 3,
  22340. 3,
  22341. 1,
  22342. 1
  22343. ]
  22344. ],
  22345. [
  22346. 0,
  22347. "Default",
  22348. 0,
  22349. 1
  22350. ]
  22351. ]
  22352. , [
  22353. [0, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22354. 0,
  22355. 217,
  22356. [
  22357. [0],
  22358. [0],
  22359. [0]
  22360. ],
  22361. [
  22362. [
  22363. 1,
  22364. 1
  22365. ],
  22366. [
  22367. 1
  22368. ],
  22369. [
  22370. 200,
  22371. 600,
  22372. 500,
  22373. 3,
  22374. 3,
  22375. 1,
  22376. 1
  22377. ]
  22378. ],
  22379. [
  22380. 0,
  22381. "Default",
  22382. 3,
  22383. 1
  22384. ]
  22385. ]
  22386. , [
  22387. [192, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22388. 0,
  22389. 219,
  22390. [
  22391. [0],
  22392. [0],
  22393. [0]
  22394. ],
  22395. [
  22396. [
  22397. 1,
  22398. 1
  22399. ],
  22400. [
  22401. 1
  22402. ],
  22403. [
  22404. 200,
  22405. 600,
  22406. 500,
  22407. 3,
  22408. 3,
  22409. 1,
  22410. 1
  22411. ]
  22412. ],
  22413. [
  22414. 0,
  22415. "Default",
  22416. 1,
  22417. 1
  22418. ]
  22419. ]
  22420. , [
  22421. [64, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22422. 0,
  22423. 220,
  22424. [
  22425. [0],
  22426. [0],
  22427. [1]
  22428. ],
  22429. [
  22430. [
  22431. 1,
  22432. 1
  22433. ],
  22434. [
  22435. 1
  22436. ],
  22437. [
  22438. 200,
  22439. 600,
  22440. 500,
  22441. 3,
  22442. 3,
  22443. 1,
  22444. 1
  22445. ]
  22446. ],
  22447. [
  22448. 0,
  22449. "Red",
  22450. 4,
  22451. 1
  22452. ]
  22453. ]
  22454. , [
  22455. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  22456. 2,
  22457. 221,
  22458. [
  22459. ],
  22460. [
  22461. ],
  22462. [
  22463. 0,
  22464. "Default",
  22465. 0,
  22466. 1
  22467. ]
  22468. ]
  22469. , [
  22470. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22471. 1,
  22472. 222,
  22473. [
  22474. ],
  22475. [
  22476. ],
  22477. [
  22478. 1,
  22479. "Default",
  22480. 0,
  22481. 1
  22482. ]
  22483. ]
  22484. , [
  22485. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22486. 1,
  22487. 223,
  22488. [
  22489. ],
  22490. [
  22491. ],
  22492. [
  22493. 1,
  22494. "Default",
  22495. 0,
  22496. 1
  22497. ]
  22498. ]
  22499. , [
  22500. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  22501. 3,
  22502. 224,
  22503. [
  22504. ],
  22505. [
  22506. ],
  22507. [
  22508. 0,
  22509. "Default",
  22510. 2,
  22511. 1
  22512. ]
  22513. ]
  22514. , [
  22515. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  22516. 3,
  22517. 225,
  22518. [
  22519. ],
  22520. [
  22521. ],
  22522. [
  22523. 0,
  22524. "Default",
  22525. 1,
  22526. 1
  22527. ]
  22528. ]
  22529. , [
  22530. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  22531. 4,
  22532. 226,
  22533. [
  22534. [0]
  22535. ],
  22536. [
  22537. [
  22538. 1,
  22539. 0,
  22540. 0,
  22541. 4,
  22542. 0,
  22543. 0,
  22544. 0,
  22545. 50,
  22546. 0
  22547. ]
  22548. ],
  22549. [
  22550. 0,
  22551. "Default",
  22552. 0,
  22553. 1
  22554. ]
  22555. ]
  22556. , [
  22557. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  22558. 4,
  22559. 227,
  22560. [
  22561. [1]
  22562. ],
  22563. [
  22564. [
  22565. 1,
  22566. 0,
  22567. 0,
  22568. 4,
  22569. 0,
  22570. 0,
  22571. 0,
  22572. 50,
  22573. 0
  22574. ]
  22575. ],
  22576. [
  22577. 0,
  22578. "Default",
  22579. 2,
  22580. 1
  22581. ]
  22582. ]
  22583. , [
  22584. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  22585. 4,
  22586. 228,
  22587. [
  22588. [2]
  22589. ],
  22590. [
  22591. [
  22592. 1,
  22593. 0,
  22594. 0,
  22595. 4,
  22596. 0,
  22597. 0,
  22598. 0,
  22599. 50,
  22600. 0
  22601. ]
  22602. ],
  22603. [
  22604. 0,
  22605. "Default",
  22606. 1,
  22607. 1
  22608. ]
  22609. ]
  22610. , [
  22611. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  22612. 5,
  22613. 229,
  22614. [
  22615. [0],
  22616. [0]
  22617. ],
  22618. [
  22619. ],
  22620. [
  22621. 0,
  22622. "Default",
  22623. 0,
  22624. 1
  22625. ]
  22626. ]
  22627. , [
  22628. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22629. 6,
  22630. 230,
  22631. [
  22632. [1]
  22633. ],
  22634. [
  22635. ],
  22636. [
  22637. 29,
  22638. 43,
  22639. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  22640. sg_texts[SG.lang]["BEST:"],
  22641. 1,
  22642. 0,
  22643. 0,
  22644. 0,
  22645. 0,
  22646. 0,
  22647. 0,
  22648. 0
  22649. ]
  22650. ]
  22651. , [
  22652. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22653. 6,
  22654. 231,
  22655. [
  22656. [0]
  22657. ],
  22658. [
  22659. ],
  22660. [
  22661. 29,
  22662. 43,
  22663. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  22664. "MOVE:",
  22665. 1,
  22666. 0,
  22667. 0,
  22668. 0,
  22669. 0,
  22670. 0,
  22671. 0,
  22672. 0
  22673. ]
  22674. ]
  22675. , [
  22676. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22677. 6,
  22678. 232,
  22679. [
  22680. [2]
  22681. ],
  22682. [
  22683. ],
  22684. [
  22685. 29,
  22686. 43,
  22687. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  22688. sg_texts[SG.lang]["LEVEL:"]+" 01",
  22689. 1,
  22690. 0,
  22691. 0,
  22692. 0,
  22693. 0,
  22694. 0,
  22695. 0,
  22696. 0
  22697. ]
  22698. ]
  22699. , [
  22700. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  22701. 4,
  22702. 233,
  22703. [
  22704. [3]
  22705. ],
  22706. [
  22707. [
  22708. 1,
  22709. 0,
  22710. 0,
  22711. 4,
  22712. 0,
  22713. 0,
  22714. 0,
  22715. 50,
  22716. 0
  22717. ]
  22718. ],
  22719. [
  22720. 0,
  22721. "Default",
  22722. 3,
  22723. 1
  22724. ]
  22725. ]
  22726. , [
  22727. [192, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  22728. 0,
  22729. 235,
  22730. [
  22731. [0],
  22732. [0],
  22733. [0]
  22734. ],
  22735. [
  22736. [
  22737. 2,
  22738. 1
  22739. ],
  22740. [
  22741. 1
  22742. ],
  22743. [
  22744. 200,
  22745. 600,
  22746. 500,
  22747. 3,
  22748. 3,
  22749. 1,
  22750. 1
  22751. ]
  22752. ],
  22753. [
  22754. 0,
  22755. "Default",
  22756. 0,
  22757. 1
  22758. ]
  22759. ]
  22760. , [
  22761. [320, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  22762. 0,
  22763. 236,
  22764. [
  22765. [0],
  22766. [0],
  22767. [0]
  22768. ],
  22769. [
  22770. [
  22771. 2,
  22772. 1
  22773. ],
  22774. [
  22775. 1
  22776. ],
  22777. [
  22778. 200,
  22779. 600,
  22780. 500,
  22781. 3,
  22782. 3,
  22783. 1,
  22784. 1
  22785. ]
  22786. ],
  22787. [
  22788. 0,
  22789. "Default",
  22790. 0,
  22791. 1
  22792. ]
  22793. ]
  22794. , [
  22795. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22796. 0,
  22797. 237,
  22798. [
  22799. [0],
  22800. [0],
  22801. [0]
  22802. ],
  22803. [
  22804. [
  22805. 1,
  22806. 1
  22807. ],
  22808. [
  22809. 1
  22810. ],
  22811. [
  22812. 200,
  22813. 600,
  22814. 500,
  22815. 3,
  22816. 3,
  22817. 1,
  22818. 1
  22819. ]
  22820. ],
  22821. [
  22822. 0,
  22823. "Default",
  22824. 3,
  22825. 1
  22826. ]
  22827. ]
  22828. , [
  22829. [256, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  22830. 0,
  22831. 218,
  22832. [
  22833. [0],
  22834. [0],
  22835. [0]
  22836. ],
  22837. [
  22838. [
  22839. 2,
  22840. 1
  22841. ],
  22842. [
  22843. 1
  22844. ],
  22845. [
  22846. 200,
  22847. 600,
  22848. 500,
  22849. 3,
  22850. 3,
  22851. 1,
  22852. 1
  22853. ]
  22854. ],
  22855. [
  22856. 0,
  22857. "Default",
  22858. 2,
  22859. 1
  22860. ]
  22861. ]
  22862. ],
  22863. [ ]
  22864. ]
  22865. ],
  22866. [
  22867. ],
  22868. []
  22869. ]
  22870. , [
  22871. "level3",
  22872. 384,
  22873. 600,
  22874. false,
  22875. "level",
  22876. 1190102269929686,
  22877. [
  22878. [
  22879. "Layer 0",
  22880. 0,
  22881. 8410317708420457,
  22882. true,
  22883. [44, 44, 44],
  22884. false,
  22885. 1,
  22886. 1,
  22887. 1,
  22888. false,
  22889. 1,
  22890. 0,
  22891. 0,
  22892. [
  22893. [
  22894. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  22895. 3,
  22896. 238,
  22897. [
  22898. ],
  22899. [
  22900. ],
  22901. [
  22902. 0,
  22903. "Default",
  22904. 0,
  22905. 1
  22906. ]
  22907. ]
  22908. , [
  22909. [192, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22910. 0,
  22911. 241,
  22912. [
  22913. [0],
  22914. [0],
  22915. [0]
  22916. ],
  22917. [
  22918. [
  22919. 1,
  22920. 1
  22921. ],
  22922. [
  22923. 1
  22924. ],
  22925. [
  22926. 200,
  22927. 600,
  22928. 500,
  22929. 3,
  22930. 3,
  22931. 1,
  22932. 1
  22933. ]
  22934. ],
  22935. [
  22936. 0,
  22937. "Default",
  22938. 1,
  22939. 1
  22940. ]
  22941. ]
  22942. , [
  22943. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22944. 0,
  22945. 242,
  22946. [
  22947. [0],
  22948. [0],
  22949. [1]
  22950. ],
  22951. [
  22952. [
  22953. 1,
  22954. 1
  22955. ],
  22956. [
  22957. 1
  22958. ],
  22959. [
  22960. 200,
  22961. 600,
  22962. 500,
  22963. 3,
  22964. 3,
  22965. 1,
  22966. 1
  22967. ]
  22968. ],
  22969. [
  22970. 0,
  22971. "Red",
  22972. 4,
  22973. 1
  22974. ]
  22975. ]
  22976. , [
  22977. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  22978. 2,
  22979. 243,
  22980. [
  22981. ],
  22982. [
  22983. ],
  22984. [
  22985. 0,
  22986. "Default",
  22987. 0,
  22988. 1
  22989. ]
  22990. ]
  22991. , [
  22992. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  22993. 1,
  22994. 244,
  22995. [
  22996. ],
  22997. [
  22998. ],
  22999. [
  23000. 1,
  23001. "Default",
  23002. 0,
  23003. 1
  23004. ]
  23005. ]
  23006. , [
  23007. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23008. 1,
  23009. 245,
  23010. [
  23011. ],
  23012. [
  23013. ],
  23014. [
  23015. 1,
  23016. "Default",
  23017. 0,
  23018. 1
  23019. ]
  23020. ]
  23021. , [
  23022. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  23023. 3,
  23024. 246,
  23025. [
  23026. ],
  23027. [
  23028. ],
  23029. [
  23030. 0,
  23031. "Default",
  23032. 2,
  23033. 1
  23034. ]
  23035. ]
  23036. , [
  23037. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  23038. 3,
  23039. 247,
  23040. [
  23041. ],
  23042. [
  23043. ],
  23044. [
  23045. 0,
  23046. "Default",
  23047. 1,
  23048. 1
  23049. ]
  23050. ]
  23051. , [
  23052. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  23053. 4,
  23054. 248,
  23055. [
  23056. [0]
  23057. ],
  23058. [
  23059. [
  23060. 1,
  23061. 0,
  23062. 0,
  23063. 4,
  23064. 0,
  23065. 0,
  23066. 0,
  23067. 50,
  23068. 0
  23069. ]
  23070. ],
  23071. [
  23072. 0,
  23073. "Default",
  23074. 0,
  23075. 1
  23076. ]
  23077. ]
  23078. , [
  23079. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  23080. 4,
  23081. 249,
  23082. [
  23083. [1]
  23084. ],
  23085. [
  23086. [
  23087. 1,
  23088. 0,
  23089. 0,
  23090. 4,
  23091. 0,
  23092. 0,
  23093. 0,
  23094. 50,
  23095. 0
  23096. ]
  23097. ],
  23098. [
  23099. 0,
  23100. "Default",
  23101. 2,
  23102. 1
  23103. ]
  23104. ]
  23105. , [
  23106. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  23107. 4,
  23108. 250,
  23109. [
  23110. [2]
  23111. ],
  23112. [
  23113. [
  23114. 1,
  23115. 0,
  23116. 0,
  23117. 4,
  23118. 0,
  23119. 0,
  23120. 0,
  23121. 50,
  23122. 0
  23123. ]
  23124. ],
  23125. [
  23126. 0,
  23127. "Default",
  23128. 1,
  23129. 1
  23130. ]
  23131. ]
  23132. , [
  23133. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  23134. 5,
  23135. 251,
  23136. [
  23137. [0],
  23138. [0]
  23139. ],
  23140. [
  23141. ],
  23142. [
  23143. 0,
  23144. "Default",
  23145. 0,
  23146. 1
  23147. ]
  23148. ]
  23149. , [
  23150. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23151. 6,
  23152. 252,
  23153. [
  23154. [1]
  23155. ],
  23156. [
  23157. ],
  23158. [
  23159. 29,
  23160. 43,
  23161. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  23162. sg_texts[SG.lang]["BEST:"],
  23163. 1,
  23164. 0,
  23165. 0,
  23166. 0,
  23167. 0,
  23168. 0,
  23169. 0,
  23170. 0
  23171. ]
  23172. ]
  23173. , [
  23174. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23175. 6,
  23176. 253,
  23177. [
  23178. [0]
  23179. ],
  23180. [
  23181. ],
  23182. [
  23183. 29,
  23184. 43,
  23185. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  23186. "MOVE:",
  23187. 1,
  23188. 0,
  23189. 0,
  23190. 0,
  23191. 0,
  23192. 0,
  23193. 0,
  23194. 0
  23195. ]
  23196. ]
  23197. , [
  23198. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23199. 6,
  23200. 254,
  23201. [
  23202. [2]
  23203. ],
  23204. [
  23205. ],
  23206. [
  23207. 29,
  23208. 43,
  23209. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  23210. sg_texts[SG.lang]["LEVEL:"]+" 01",
  23211. 1,
  23212. 0,
  23213. 0,
  23214. 0,
  23215. 0,
  23216. 0,
  23217. 0,
  23218. 0
  23219. ]
  23220. ]
  23221. , [
  23222. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  23223. 4,
  23224. 255,
  23225. [
  23226. [3]
  23227. ],
  23228. [
  23229. [
  23230. 1,
  23231. 0,
  23232. 0,
  23233. 4,
  23234. 0,
  23235. 0,
  23236. 0,
  23237. 50,
  23238. 0
  23239. ]
  23240. ],
  23241. [
  23242. 0,
  23243. "Default",
  23244. 3,
  23245. 1
  23246. ]
  23247. ]
  23248. , [
  23249. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23250. 0,
  23251. 258,
  23252. [
  23253. [0],
  23254. [0],
  23255. [0]
  23256. ],
  23257. [
  23258. [
  23259. 1,
  23260. 1
  23261. ],
  23262. [
  23263. 1
  23264. ],
  23265. [
  23266. 200,
  23267. 600,
  23268. 500,
  23269. 3,
  23270. 3,
  23271. 1,
  23272. 1
  23273. ]
  23274. ],
  23275. [
  23276. 0,
  23277. "Default",
  23278. 3,
  23279. 1
  23280. ]
  23281. ]
  23282. , [
  23283. [64, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  23284. 0,
  23285. 240,
  23286. [
  23287. [0],
  23288. [0],
  23289. [0]
  23290. ],
  23291. [
  23292. [
  23293. 2,
  23294. 1
  23295. ],
  23296. [
  23297. 1
  23298. ],
  23299. [
  23300. 200,
  23301. 600,
  23302. 500,
  23303. 3,
  23304. 3,
  23305. 1,
  23306. 1
  23307. ]
  23308. ],
  23309. [
  23310. 0,
  23311. "Default",
  23312. 2,
  23313. 1
  23314. ]
  23315. ]
  23316. , [
  23317. [128, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  23318. 0,
  23319. 260,
  23320. [
  23321. [0],
  23322. [0],
  23323. [0]
  23324. ],
  23325. [
  23326. [
  23327. 2,
  23328. 1
  23329. ],
  23330. [
  23331. 1
  23332. ],
  23333. [
  23334. 200,
  23335. 600,
  23336. 500,
  23337. 3,
  23338. 3,
  23339. 1,
  23340. 1
  23341. ]
  23342. ],
  23343. [
  23344. 0,
  23345. "Default",
  23346. 2,
  23347. 1
  23348. ]
  23349. ]
  23350. , [
  23351. [192, 192, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23352. 0,
  23353. 256,
  23354. [
  23355. [0],
  23356. [0],
  23357. [0]
  23358. ],
  23359. [
  23360. [
  23361. 1,
  23362. 1
  23363. ],
  23364. [
  23365. 1
  23366. ],
  23367. [
  23368. 200,
  23369. 600,
  23370. 500,
  23371. 3,
  23372. 3,
  23373. 1,
  23374. 1
  23375. ]
  23376. ],
  23377. [
  23378. 0,
  23379. "Default",
  23380. 1,
  23381. 1
  23382. ]
  23383. ]
  23384. , [
  23385. [0, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  23386. 0,
  23387. 239,
  23388. [
  23389. [0],
  23390. [0],
  23391. [0]
  23392. ],
  23393. [
  23394. [
  23395. 2,
  23396. 1
  23397. ],
  23398. [
  23399. 1
  23400. ],
  23401. [
  23402. 200,
  23403. 600,
  23404. 500,
  23405. 3,
  23406. 3,
  23407. 1,
  23408. 1
  23409. ]
  23410. ],
  23411. [
  23412. 0,
  23413. "Default",
  23414. 2,
  23415. 1
  23416. ]
  23417. ]
  23418. , [
  23419. [192, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  23420. 0,
  23421. 257,
  23422. [
  23423. [0],
  23424. [0],
  23425. [0]
  23426. ],
  23427. [
  23428. [
  23429. 2,
  23430. 1
  23431. ],
  23432. [
  23433. 1
  23434. ],
  23435. [
  23436. 200,
  23437. 600,
  23438. 500,
  23439. 3,
  23440. 3,
  23441. 1,
  23442. 1
  23443. ]
  23444. ],
  23445. [
  23446. 0,
  23447. "Default",
  23448. 0,
  23449. 1
  23450. ]
  23451. ]
  23452. , [
  23453. [128, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  23454. 0,
  23455. 261,
  23456. [
  23457. [0],
  23458. [0],
  23459. [0]
  23460. ],
  23461. [
  23462. [
  23463. 2,
  23464. 1
  23465. ],
  23466. [
  23467. 1
  23468. ],
  23469. [
  23470. 200,
  23471. 600,
  23472. 500,
  23473. 3,
  23474. 3,
  23475. 1,
  23476. 1
  23477. ]
  23478. ],
  23479. [
  23480. 0,
  23481. "Default",
  23482. 2,
  23483. 1
  23484. ]
  23485. ]
  23486. , [
  23487. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  23488. 0,
  23489. 262,
  23490. [
  23491. [0],
  23492. [0],
  23493. [0]
  23494. ],
  23495. [
  23496. [
  23497. 2,
  23498. 1
  23499. ],
  23500. [
  23501. 1
  23502. ],
  23503. [
  23504. 200,
  23505. 600,
  23506. 500,
  23507. 3,
  23508. 3,
  23509. 1,
  23510. 1
  23511. ]
  23512. ],
  23513. [
  23514. 0,
  23515. "Default",
  23516. 2,
  23517. 1
  23518. ]
  23519. ]
  23520. , [
  23521. [320, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  23522. 0,
  23523. 263,
  23524. [
  23525. [0],
  23526. [0],
  23527. [0]
  23528. ],
  23529. [
  23530. [
  23531. 2,
  23532. 1
  23533. ],
  23534. [
  23535. 1
  23536. ],
  23537. [
  23538. 200,
  23539. 600,
  23540. 500,
  23541. 3,
  23542. 3,
  23543. 1,
  23544. 1
  23545. ]
  23546. ],
  23547. [
  23548. 0,
  23549. "Default",
  23550. 2,
  23551. 1
  23552. ]
  23553. ]
  23554. ],
  23555. [ ]
  23556. ]
  23557. ],
  23558. [
  23559. ],
  23560. []
  23561. ]
  23562. , [
  23563. "level4",
  23564. 384,
  23565. 600,
  23566. false,
  23567. "level",
  23568. 5279822629421395,
  23569. [
  23570. [
  23571. "Layer 0",
  23572. 0,
  23573. 670775923203508,
  23574. true,
  23575. [44, 44, 44],
  23576. false,
  23577. 1,
  23578. 1,
  23579. 1,
  23580. false,
  23581. 1,
  23582. 0,
  23583. 0,
  23584. [
  23585. [
  23586. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  23587. 3,
  23588. 264,
  23589. [
  23590. ],
  23591. [
  23592. ],
  23593. [
  23594. 0,
  23595. "Default",
  23596. 0,
  23597. 1
  23598. ]
  23599. ]
  23600. , [
  23601. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23602. 0,
  23603. 266,
  23604. [
  23605. [0],
  23606. [0],
  23607. [1]
  23608. ],
  23609. [
  23610. [
  23611. 1,
  23612. 1
  23613. ],
  23614. [
  23615. 1
  23616. ],
  23617. [
  23618. 200,
  23619. 600,
  23620. 500,
  23621. 3,
  23622. 3,
  23623. 1,
  23624. 1
  23625. ]
  23626. ],
  23627. [
  23628. 0,
  23629. "Red",
  23630. 4,
  23631. 1
  23632. ]
  23633. ]
  23634. , [
  23635. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  23636. 2,
  23637. 267,
  23638. [
  23639. ],
  23640. [
  23641. ],
  23642. [
  23643. 0,
  23644. "Default",
  23645. 0,
  23646. 1
  23647. ]
  23648. ]
  23649. , [
  23650. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23651. 1,
  23652. 268,
  23653. [
  23654. ],
  23655. [
  23656. ],
  23657. [
  23658. 1,
  23659. "Default",
  23660. 0,
  23661. 1
  23662. ]
  23663. ]
  23664. , [
  23665. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23666. 1,
  23667. 269,
  23668. [
  23669. ],
  23670. [
  23671. ],
  23672. [
  23673. 1,
  23674. "Default",
  23675. 0,
  23676. 1
  23677. ]
  23678. ]
  23679. , [
  23680. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  23681. 3,
  23682. 270,
  23683. [
  23684. ],
  23685. [
  23686. ],
  23687. [
  23688. 0,
  23689. "Default",
  23690. 2,
  23691. 1
  23692. ]
  23693. ]
  23694. , [
  23695. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  23696. 3,
  23697. 271,
  23698. [
  23699. ],
  23700. [
  23701. ],
  23702. [
  23703. 0,
  23704. "Default",
  23705. 1,
  23706. 1
  23707. ]
  23708. ]
  23709. , [
  23710. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  23711. 4,
  23712. 272,
  23713. [
  23714. [0]
  23715. ],
  23716. [
  23717. [
  23718. 1,
  23719. 0,
  23720. 0,
  23721. 4,
  23722. 0,
  23723. 0,
  23724. 0,
  23725. 50,
  23726. 0
  23727. ]
  23728. ],
  23729. [
  23730. 0,
  23731. "Default",
  23732. 0,
  23733. 1
  23734. ]
  23735. ]
  23736. , [
  23737. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  23738. 4,
  23739. 273,
  23740. [
  23741. [1]
  23742. ],
  23743. [
  23744. [
  23745. 1,
  23746. 0,
  23747. 0,
  23748. 4,
  23749. 0,
  23750. 0,
  23751. 0,
  23752. 50,
  23753. 0
  23754. ]
  23755. ],
  23756. [
  23757. 0,
  23758. "Default",
  23759. 2,
  23760. 1
  23761. ]
  23762. ]
  23763. , [
  23764. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  23765. 4,
  23766. 274,
  23767. [
  23768. [2]
  23769. ],
  23770. [
  23771. [
  23772. 1,
  23773. 0,
  23774. 0,
  23775. 4,
  23776. 0,
  23777. 0,
  23778. 0,
  23779. 50,
  23780. 0
  23781. ]
  23782. ],
  23783. [
  23784. 0,
  23785. "Default",
  23786. 1,
  23787. 1
  23788. ]
  23789. ]
  23790. , [
  23791. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  23792. 5,
  23793. 275,
  23794. [
  23795. [0],
  23796. [0]
  23797. ],
  23798. [
  23799. ],
  23800. [
  23801. 0,
  23802. "Default",
  23803. 0,
  23804. 1
  23805. ]
  23806. ]
  23807. , [
  23808. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23809. 6,
  23810. 276,
  23811. [
  23812. [1]
  23813. ],
  23814. [
  23815. ],
  23816. [
  23817. 29,
  23818. 43,
  23819. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  23820. sg_texts[SG.lang]["BEST:"],
  23821. 1,
  23822. 0,
  23823. 0,
  23824. 0,
  23825. 0,
  23826. 0,
  23827. 0,
  23828. 0
  23829. ]
  23830. ]
  23831. , [
  23832. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23833. 6,
  23834. 277,
  23835. [
  23836. [0]
  23837. ],
  23838. [
  23839. ],
  23840. [
  23841. 29,
  23842. 43,
  23843. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  23844. "MOVE:",
  23845. 1,
  23846. 0,
  23847. 0,
  23848. 0,
  23849. 0,
  23850. 0,
  23851. 0,
  23852. 0
  23853. ]
  23854. ]
  23855. , [
  23856. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23857. 6,
  23858. 278,
  23859. [
  23860. [2]
  23861. ],
  23862. [
  23863. ],
  23864. [
  23865. 29,
  23866. 43,
  23867. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  23868. sg_texts[SG.lang]["LEVEL:"]+" 01",
  23869. 1,
  23870. 0,
  23871. 0,
  23872. 0,
  23873. 0,
  23874. 0,
  23875. 0,
  23876. 0
  23877. ]
  23878. ]
  23879. , [
  23880. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  23881. 4,
  23882. 279,
  23883. [
  23884. [3]
  23885. ],
  23886. [
  23887. [
  23888. 1,
  23889. 0,
  23890. 0,
  23891. 4,
  23892. 0,
  23893. 0,
  23894. 0,
  23895. 50,
  23896. 0
  23897. ]
  23898. ],
  23899. [
  23900. 0,
  23901. "Default",
  23902. 3,
  23903. 1
  23904. ]
  23905. ]
  23906. , [
  23907. [256, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  23908. 0,
  23909. 280,
  23910. [
  23911. [0],
  23912. [0],
  23913. [0]
  23914. ],
  23915. [
  23916. [
  23917. 1,
  23918. 1
  23919. ],
  23920. [
  23921. 1
  23922. ],
  23923. [
  23924. 200,
  23925. 600,
  23926. 500,
  23927. 3,
  23928. 3,
  23929. 1,
  23930. 1
  23931. ]
  23932. ],
  23933. [
  23934. 0,
  23935. "Default",
  23936. 3,
  23937. 1
  23938. ]
  23939. ]
  23940. , [
  23941. [320, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  23942. 0,
  23943. 281,
  23944. [
  23945. [0],
  23946. [0],
  23947. [0]
  23948. ],
  23949. [
  23950. [
  23951. 2,
  23952. 1
  23953. ],
  23954. [
  23955. 1
  23956. ],
  23957. [
  23958. 200,
  23959. 600,
  23960. 500,
  23961. 3,
  23962. 3,
  23963. 1,
  23964. 1
  23965. ]
  23966. ],
  23967. [
  23968. 0,
  23969. "Default",
  23970. 2,
  23971. 1
  23972. ]
  23973. ]
  23974. , [
  23975. [64, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  23976. 0,
  23977. 282,
  23978. [
  23979. [0],
  23980. [0],
  23981. [0]
  23982. ],
  23983. [
  23984. [
  23985. 2,
  23986. 1
  23987. ],
  23988. [
  23989. 1
  23990. ],
  23991. [
  23992. 200,
  23993. 600,
  23994. 500,
  23995. 3,
  23996. 3,
  23997. 1,
  23998. 1
  23999. ]
  24000. ],
  24001. [
  24002. 0,
  24003. "Default",
  24004. 2,
  24005. 1
  24006. ]
  24007. ]
  24008. , [
  24009. [192, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  24010. 0,
  24011. 286,
  24012. [
  24013. [0],
  24014. [0],
  24015. [0]
  24016. ],
  24017. [
  24018. [
  24019. 2,
  24020. 1
  24021. ],
  24022. [
  24023. 1
  24024. ],
  24025. [
  24026. 200,
  24027. 600,
  24028. 500,
  24029. 3,
  24030. 3,
  24031. 1,
  24032. 1
  24033. ]
  24034. ],
  24035. [
  24036. 0,
  24037. "Default",
  24038. 0,
  24039. 1
  24040. ]
  24041. ]
  24042. , [
  24043. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  24044. 0,
  24045. 287,
  24046. [
  24047. [0],
  24048. [0],
  24049. [0]
  24050. ],
  24051. [
  24052. [
  24053. 2,
  24054. 1
  24055. ],
  24056. [
  24057. 1
  24058. ],
  24059. [
  24060. 200,
  24061. 600,
  24062. 500,
  24063. 3,
  24064. 3,
  24065. 1,
  24066. 1
  24067. ]
  24068. ],
  24069. [
  24070. 0,
  24071. "Default",
  24072. 2,
  24073. 1
  24074. ]
  24075. ]
  24076. , [
  24077. [256, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  24078. 0,
  24079. 288,
  24080. [
  24081. [0],
  24082. [0],
  24083. [0]
  24084. ],
  24085. [
  24086. [
  24087. 2,
  24088. 1
  24089. ],
  24090. [
  24091. 1
  24092. ],
  24093. [
  24094. 200,
  24095. 600,
  24096. 500,
  24097. 3,
  24098. 3,
  24099. 1,
  24100. 1
  24101. ]
  24102. ],
  24103. [
  24104. 0,
  24105. "Default",
  24106. 2,
  24107. 1
  24108. ]
  24109. ]
  24110. , [
  24111. [320, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  24112. 0,
  24113. 289,
  24114. [
  24115. [0],
  24116. [0],
  24117. [0]
  24118. ],
  24119. [
  24120. [
  24121. 2,
  24122. 1
  24123. ],
  24124. [
  24125. 1
  24126. ],
  24127. [
  24128. 200,
  24129. 600,
  24130. 500,
  24131. 3,
  24132. 3,
  24133. 1,
  24134. 1
  24135. ]
  24136. ],
  24137. [
  24138. 0,
  24139. "Default",
  24140. 2,
  24141. 1
  24142. ]
  24143. ]
  24144. , [
  24145. [128, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24146. 0,
  24147. 265,
  24148. [
  24149. [0],
  24150. [0],
  24151. [0]
  24152. ],
  24153. [
  24154. [
  24155. 1,
  24156. 1
  24157. ],
  24158. [
  24159. 1
  24160. ],
  24161. [
  24162. 200,
  24163. 600,
  24164. 500,
  24165. 3,
  24166. 3,
  24167. 1,
  24168. 1
  24169. ]
  24170. ],
  24171. [
  24172. 0,
  24173. "Default",
  24174. 3,
  24175. 1
  24176. ]
  24177. ]
  24178. , [
  24179. [64, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24180. 0,
  24181. 283,
  24182. [
  24183. [0],
  24184. [0],
  24185. [0]
  24186. ],
  24187. [
  24188. [
  24189. 1,
  24190. 1
  24191. ],
  24192. [
  24193. 1
  24194. ],
  24195. [
  24196. 200,
  24197. 600,
  24198. 500,
  24199. 3,
  24200. 3,
  24201. 1,
  24202. 1
  24203. ]
  24204. ],
  24205. [
  24206. 0,
  24207. "Default",
  24208. 3,
  24209. 1
  24210. ]
  24211. ]
  24212. , [
  24213. [192, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24214. 0,
  24215. 284,
  24216. [
  24217. [0],
  24218. [0],
  24219. [0]
  24220. ],
  24221. [
  24222. [
  24223. 1,
  24224. 1
  24225. ],
  24226. [
  24227. 1
  24228. ],
  24229. [
  24230. 200,
  24231. 600,
  24232. 500,
  24233. 3,
  24234. 3,
  24235. 1,
  24236. 1
  24237. ]
  24238. ],
  24239. [
  24240. 0,
  24241. "Default",
  24242. 3,
  24243. 1
  24244. ]
  24245. ]
  24246. , [
  24247. [128, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24248. 0,
  24249. 290,
  24250. [
  24251. [0],
  24252. [0],
  24253. [0]
  24254. ],
  24255. [
  24256. [
  24257. 1,
  24258. 1
  24259. ],
  24260. [
  24261. 1
  24262. ],
  24263. [
  24264. 200,
  24265. 600,
  24266. 500,
  24267. 3,
  24268. 3,
  24269. 1,
  24270. 1
  24271. ]
  24272. ],
  24273. [
  24274. 0,
  24275. "Default",
  24276. 3,
  24277. 1
  24278. ]
  24279. ]
  24280. ],
  24281. [ ]
  24282. ]
  24283. ],
  24284. [
  24285. ],
  24286. []
  24287. ]
  24288. , [
  24289. "level5",
  24290. 384,
  24291. 600,
  24292. false,
  24293. "level",
  24294. 8924519312952848,
  24295. [
  24296. [
  24297. "Layer 0",
  24298. 0,
  24299. 7930517637937452,
  24300. true,
  24301. [44, 44, 44],
  24302. false,
  24303. 1,
  24304. 1,
  24305. 1,
  24306. false,
  24307. 1,
  24308. 0,
  24309. 0,
  24310. [
  24311. [
  24312. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  24313. 3,
  24314. 259,
  24315. [
  24316. ],
  24317. [
  24318. ],
  24319. [
  24320. 0,
  24321. "Default",
  24322. 0,
  24323. 1
  24324. ]
  24325. ]
  24326. , [
  24327. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24328. 0,
  24329. 285,
  24330. [
  24331. [0],
  24332. [0],
  24333. [1]
  24334. ],
  24335. [
  24336. [
  24337. 1,
  24338. 1
  24339. ],
  24340. [
  24341. 1
  24342. ],
  24343. [
  24344. 200,
  24345. 600,
  24346. 500,
  24347. 3,
  24348. 3,
  24349. 1,
  24350. 1
  24351. ]
  24352. ],
  24353. [
  24354. 0,
  24355. "Red",
  24356. 4,
  24357. 1
  24358. ]
  24359. ]
  24360. , [
  24361. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  24362. 2,
  24363. 291,
  24364. [
  24365. ],
  24366. [
  24367. ],
  24368. [
  24369. 0,
  24370. "Default",
  24371. 0,
  24372. 1
  24373. ]
  24374. ]
  24375. , [
  24376. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24377. 1,
  24378. 292,
  24379. [
  24380. ],
  24381. [
  24382. ],
  24383. [
  24384. 1,
  24385. "Default",
  24386. 0,
  24387. 1
  24388. ]
  24389. ]
  24390. , [
  24391. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24392. 1,
  24393. 293,
  24394. [
  24395. ],
  24396. [
  24397. ],
  24398. [
  24399. 1,
  24400. "Default",
  24401. 0,
  24402. 1
  24403. ]
  24404. ]
  24405. , [
  24406. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  24407. 3,
  24408. 294,
  24409. [
  24410. ],
  24411. [
  24412. ],
  24413. [
  24414. 0,
  24415. "Default",
  24416. 2,
  24417. 1
  24418. ]
  24419. ]
  24420. , [
  24421. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  24422. 3,
  24423. 295,
  24424. [
  24425. ],
  24426. [
  24427. ],
  24428. [
  24429. 0,
  24430. "Default",
  24431. 1,
  24432. 1
  24433. ]
  24434. ]
  24435. , [
  24436. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  24437. 4,
  24438. 296,
  24439. [
  24440. [0]
  24441. ],
  24442. [
  24443. [
  24444. 1,
  24445. 0,
  24446. 0,
  24447. 4,
  24448. 0,
  24449. 0,
  24450. 0,
  24451. 50,
  24452. 0
  24453. ]
  24454. ],
  24455. [
  24456. 0,
  24457. "Default",
  24458. 0,
  24459. 1
  24460. ]
  24461. ]
  24462. , [
  24463. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  24464. 4,
  24465. 297,
  24466. [
  24467. [1]
  24468. ],
  24469. [
  24470. [
  24471. 1,
  24472. 0,
  24473. 0,
  24474. 4,
  24475. 0,
  24476. 0,
  24477. 0,
  24478. 50,
  24479. 0
  24480. ]
  24481. ],
  24482. [
  24483. 0,
  24484. "Default",
  24485. 2,
  24486. 1
  24487. ]
  24488. ]
  24489. , [
  24490. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  24491. 4,
  24492. 298,
  24493. [
  24494. [2]
  24495. ],
  24496. [
  24497. [
  24498. 1,
  24499. 0,
  24500. 0,
  24501. 4,
  24502. 0,
  24503. 0,
  24504. 0,
  24505. 50,
  24506. 0
  24507. ]
  24508. ],
  24509. [
  24510. 0,
  24511. "Default",
  24512. 1,
  24513. 1
  24514. ]
  24515. ]
  24516. , [
  24517. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  24518. 5,
  24519. 299,
  24520. [
  24521. [0],
  24522. [0]
  24523. ],
  24524. [
  24525. ],
  24526. [
  24527. 0,
  24528. "Default",
  24529. 0,
  24530. 1
  24531. ]
  24532. ]
  24533. , [
  24534. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24535. 6,
  24536. 300,
  24537. [
  24538. [1]
  24539. ],
  24540. [
  24541. ],
  24542. [
  24543. 29,
  24544. 43,
  24545. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  24546. sg_texts[SG.lang]["BEST:"],
  24547. 1,
  24548. 0,
  24549. 0,
  24550. 0,
  24551. 0,
  24552. 0,
  24553. 0,
  24554. 0
  24555. ]
  24556. ]
  24557. , [
  24558. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24559. 6,
  24560. 301,
  24561. [
  24562. [0]
  24563. ],
  24564. [
  24565. ],
  24566. [
  24567. 29,
  24568. 43,
  24569. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  24570. "MOVE:",
  24571. 1,
  24572. 0,
  24573. 0,
  24574. 0,
  24575. 0,
  24576. 0,
  24577. 0,
  24578. 0
  24579. ]
  24580. ]
  24581. , [
  24582. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24583. 6,
  24584. 302,
  24585. [
  24586. [2]
  24587. ],
  24588. [
  24589. ],
  24590. [
  24591. 29,
  24592. 43,
  24593. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  24594. sg_texts[SG.lang]["LEVEL:"]+" 01",
  24595. 1,
  24596. 0,
  24597. 0,
  24598. 0,
  24599. 0,
  24600. 0,
  24601. 0,
  24602. 0
  24603. ]
  24604. ]
  24605. , [
  24606. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  24607. 4,
  24608. 303,
  24609. [
  24610. [3]
  24611. ],
  24612. [
  24613. [
  24614. 1,
  24615. 0,
  24616. 0,
  24617. 4,
  24618. 0,
  24619. 0,
  24620. 0,
  24621. 50,
  24622. 0
  24623. ]
  24624. ],
  24625. [
  24626. 0,
  24627. "Default",
  24628. 3,
  24629. 1
  24630. ]
  24631. ]
  24632. , [
  24633. [192, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24634. 0,
  24635. 304,
  24636. [
  24637. [0],
  24638. [0],
  24639. [0]
  24640. ],
  24641. [
  24642. [
  24643. 1,
  24644. 1
  24645. ],
  24646. [
  24647. 1
  24648. ],
  24649. [
  24650. 200,
  24651. 600,
  24652. 500,
  24653. 3,
  24654. 3,
  24655. 1,
  24656. 1
  24657. ]
  24658. ],
  24659. [
  24660. 0,
  24661. "Default",
  24662. 3,
  24663. 1
  24664. ]
  24665. ]
  24666. , [
  24667. [256, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  24668. 0,
  24669. 305,
  24670. [
  24671. [0],
  24672. [0],
  24673. [0]
  24674. ],
  24675. [
  24676. [
  24677. 2,
  24678. 1
  24679. ],
  24680. [
  24681. 1
  24682. ],
  24683. [
  24684. 200,
  24685. 600,
  24686. 500,
  24687. 3,
  24688. 3,
  24689. 1,
  24690. 1
  24691. ]
  24692. ],
  24693. [
  24694. 0,
  24695. "Default",
  24696. 2,
  24697. 1
  24698. ]
  24699. ]
  24700. , [
  24701. [320, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  24702. 0,
  24703. 307,
  24704. [
  24705. [0],
  24706. [0],
  24707. [0]
  24708. ],
  24709. [
  24710. [
  24711. 2,
  24712. 1
  24713. ],
  24714. [
  24715. 1
  24716. ],
  24717. [
  24718. 200,
  24719. 600,
  24720. 500,
  24721. 3,
  24722. 3,
  24723. 1,
  24724. 1
  24725. ]
  24726. ],
  24727. [
  24728. 0,
  24729. "Default",
  24730. 0,
  24731. 1
  24732. ]
  24733. ]
  24734. , [
  24735. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  24736. 0,
  24737. 308,
  24738. [
  24739. [0],
  24740. [0],
  24741. [0]
  24742. ],
  24743. [
  24744. [
  24745. 2,
  24746. 1
  24747. ],
  24748. [
  24749. 1
  24750. ],
  24751. [
  24752. 200,
  24753. 600,
  24754. 500,
  24755. 3,
  24756. 3,
  24757. 1,
  24758. 1
  24759. ]
  24760. ],
  24761. [
  24762. 0,
  24763. "Default",
  24764. 2,
  24765. 1
  24766. ]
  24767. ]
  24768. , [
  24769. [0, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  24770. 0,
  24771. 310,
  24772. [
  24773. [0],
  24774. [0],
  24775. [0]
  24776. ],
  24777. [
  24778. [
  24779. 2,
  24780. 1
  24781. ],
  24782. [
  24783. 1
  24784. ],
  24785. [
  24786. 200,
  24787. 600,
  24788. 500,
  24789. 3,
  24790. 3,
  24791. 1,
  24792. 1
  24793. ]
  24794. ],
  24795. [
  24796. 0,
  24797. "Default",
  24798. 2,
  24799. 1
  24800. ]
  24801. ]
  24802. , [
  24803. [256, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24804. 0,
  24805. 311,
  24806. [
  24807. [0],
  24808. [0],
  24809. [0]
  24810. ],
  24811. [
  24812. [
  24813. 1,
  24814. 1
  24815. ],
  24816. [
  24817. 1
  24818. ],
  24819. [
  24820. 200,
  24821. 600,
  24822. 500,
  24823. 3,
  24824. 3,
  24825. 1,
  24826. 1
  24827. ]
  24828. ],
  24829. [
  24830. 0,
  24831. "Default",
  24832. 3,
  24833. 1
  24834. ]
  24835. ]
  24836. , [
  24837. [64, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24838. 0,
  24839. 312,
  24840. [
  24841. [0],
  24842. [0],
  24843. [0]
  24844. ],
  24845. [
  24846. [
  24847. 1,
  24848. 1
  24849. ],
  24850. [
  24851. 1
  24852. ],
  24853. [
  24854. 200,
  24855. 600,
  24856. 500,
  24857. 3,
  24858. 3,
  24859. 1,
  24860. 1
  24861. ]
  24862. ],
  24863. [
  24864. 0,
  24865. "Default",
  24866. 3,
  24867. 1
  24868. ]
  24869. ]
  24870. , [
  24871. [0, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24872. 0,
  24873. 313,
  24874. [
  24875. [0],
  24876. [0],
  24877. [0]
  24878. ],
  24879. [
  24880. [
  24881. 1,
  24882. 1
  24883. ],
  24884. [
  24885. 1
  24886. ],
  24887. [
  24888. 200,
  24889. 600,
  24890. 500,
  24891. 3,
  24892. 3,
  24893. 1,
  24894. 1
  24895. ]
  24896. ],
  24897. [
  24898. 0,
  24899. "Default",
  24900. 3,
  24901. 1
  24902. ]
  24903. ]
  24904. , [
  24905. [256, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24906. 0,
  24907. 314,
  24908. [
  24909. [0],
  24910. [0],
  24911. [0]
  24912. ],
  24913. [
  24914. [
  24915. 1,
  24916. 1
  24917. ],
  24918. [
  24919. 1
  24920. ],
  24921. [
  24922. 200,
  24923. 600,
  24924. 500,
  24925. 3,
  24926. 3,
  24927. 1,
  24928. 1
  24929. ]
  24930. ],
  24931. [
  24932. 0,
  24933. "Default",
  24934. 3,
  24935. 1
  24936. ]
  24937. ]
  24938. , [
  24939. [0, 192, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  24940. 0,
  24941. 315,
  24942. [
  24943. [0],
  24944. [0],
  24945. [0]
  24946. ],
  24947. [
  24948. [
  24949. 1,
  24950. 1
  24951. ],
  24952. [
  24953. 1
  24954. ],
  24955. [
  24956. 200,
  24957. 600,
  24958. 500,
  24959. 3,
  24960. 3,
  24961. 1,
  24962. 1
  24963. ]
  24964. ],
  24965. [
  24966. 0,
  24967. "Default",
  24968. 1,
  24969. 1
  24970. ]
  24971. ]
  24972. ],
  24973. [ ]
  24974. ]
  24975. ],
  24976. [
  24977. ],
  24978. []
  24979. ]
  24980. , [
  24981. "level6",
  24982. 384,
  24983. 600,
  24984. false,
  24985. "level",
  24986. 9666701855247536,
  24987. [
  24988. [
  24989. "Layer 0",
  24990. 0,
  24991. 8438083283730976,
  24992. true,
  24993. [44, 44, 44],
  24994. false,
  24995. 1,
  24996. 1,
  24997. 1,
  24998. false,
  24999. 1,
  25000. 0,
  25001. 0,
  25002. [
  25003. [
  25004. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  25005. 3,
  25006. 306,
  25007. [
  25008. ],
  25009. [
  25010. ],
  25011. [
  25012. 0,
  25013. "Default",
  25014. 0,
  25015. 1
  25016. ]
  25017. ]
  25018. , [
  25019. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25020. 0,
  25021. 309,
  25022. [
  25023. [0],
  25024. [0],
  25025. [1]
  25026. ],
  25027. [
  25028. [
  25029. 1,
  25030. 1
  25031. ],
  25032. [
  25033. 1
  25034. ],
  25035. [
  25036. 200,
  25037. 600,
  25038. 500,
  25039. 3,
  25040. 3,
  25041. 1,
  25042. 1
  25043. ]
  25044. ],
  25045. [
  25046. 0,
  25047. "Red",
  25048. 4,
  25049. 1
  25050. ]
  25051. ]
  25052. , [
  25053. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  25054. 2,
  25055. 316,
  25056. [
  25057. ],
  25058. [
  25059. ],
  25060. [
  25061. 0,
  25062. "Default",
  25063. 0,
  25064. 1
  25065. ]
  25066. ]
  25067. , [
  25068. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25069. 1,
  25070. 317,
  25071. [
  25072. ],
  25073. [
  25074. ],
  25075. [
  25076. 1,
  25077. "Default",
  25078. 0,
  25079. 1
  25080. ]
  25081. ]
  25082. , [
  25083. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25084. 1,
  25085. 318,
  25086. [
  25087. ],
  25088. [
  25089. ],
  25090. [
  25091. 1,
  25092. "Default",
  25093. 0,
  25094. 1
  25095. ]
  25096. ]
  25097. , [
  25098. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  25099. 3,
  25100. 319,
  25101. [
  25102. ],
  25103. [
  25104. ],
  25105. [
  25106. 0,
  25107. "Default",
  25108. 2,
  25109. 1
  25110. ]
  25111. ]
  25112. , [
  25113. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  25114. 3,
  25115. 320,
  25116. [
  25117. ],
  25118. [
  25119. ],
  25120. [
  25121. 0,
  25122. "Default",
  25123. 1,
  25124. 1
  25125. ]
  25126. ]
  25127. , [
  25128. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  25129. 4,
  25130. 321,
  25131. [
  25132. [0]
  25133. ],
  25134. [
  25135. [
  25136. 1,
  25137. 0,
  25138. 0,
  25139. 4,
  25140. 0,
  25141. 0,
  25142. 0,
  25143. 50,
  25144. 0
  25145. ]
  25146. ],
  25147. [
  25148. 0,
  25149. "Default",
  25150. 0,
  25151. 1
  25152. ]
  25153. ]
  25154. , [
  25155. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  25156. 4,
  25157. 322,
  25158. [
  25159. [1]
  25160. ],
  25161. [
  25162. [
  25163. 1,
  25164. 0,
  25165. 0,
  25166. 4,
  25167. 0,
  25168. 0,
  25169. 0,
  25170. 50,
  25171. 0
  25172. ]
  25173. ],
  25174. [
  25175. 0,
  25176. "Default",
  25177. 2,
  25178. 1
  25179. ]
  25180. ]
  25181. , [
  25182. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  25183. 4,
  25184. 323,
  25185. [
  25186. [2]
  25187. ],
  25188. [
  25189. [
  25190. 1,
  25191. 0,
  25192. 0,
  25193. 4,
  25194. 0,
  25195. 0,
  25196. 0,
  25197. 50,
  25198. 0
  25199. ]
  25200. ],
  25201. [
  25202. 0,
  25203. "Default",
  25204. 1,
  25205. 1
  25206. ]
  25207. ]
  25208. , [
  25209. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  25210. 5,
  25211. 324,
  25212. [
  25213. [0],
  25214. [0]
  25215. ],
  25216. [
  25217. ],
  25218. [
  25219. 0,
  25220. "Default",
  25221. 0,
  25222. 1
  25223. ]
  25224. ]
  25225. , [
  25226. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25227. 6,
  25228. 325,
  25229. [
  25230. [1]
  25231. ],
  25232. [
  25233. ],
  25234. [
  25235. 29,
  25236. 43,
  25237. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  25238. sg_texts[SG.lang]["BEST:"],
  25239. 1,
  25240. 0,
  25241. 0,
  25242. 0,
  25243. 0,
  25244. 0,
  25245. 0,
  25246. 0
  25247. ]
  25248. ]
  25249. , [
  25250. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25251. 6,
  25252. 326,
  25253. [
  25254. [0]
  25255. ],
  25256. [
  25257. ],
  25258. [
  25259. 29,
  25260. 43,
  25261. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  25262. "MOVE:",
  25263. 1,
  25264. 0,
  25265. 0,
  25266. 0,
  25267. 0,
  25268. 0,
  25269. 0,
  25270. 0
  25271. ]
  25272. ]
  25273. , [
  25274. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25275. 6,
  25276. 327,
  25277. [
  25278. [2]
  25279. ],
  25280. [
  25281. ],
  25282. [
  25283. 29,
  25284. 43,
  25285. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  25286. sg_texts[SG.lang]["LEVEL:"]+" 01",
  25287. 1,
  25288. 0,
  25289. 0,
  25290. 0,
  25291. 0,
  25292. 0,
  25293. 0,
  25294. 0
  25295. ]
  25296. ]
  25297. , [
  25298. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  25299. 4,
  25300. 328,
  25301. [
  25302. [3]
  25303. ],
  25304. [
  25305. [
  25306. 1,
  25307. 0,
  25308. 0,
  25309. 4,
  25310. 0,
  25311. 0,
  25312. 0,
  25313. 50,
  25314. 0
  25315. ]
  25316. ],
  25317. [
  25318. 0,
  25319. "Default",
  25320. 3,
  25321. 1
  25322. ]
  25323. ]
  25324. , [
  25325. [128, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25326. 0,
  25327. 329,
  25328. [
  25329. [0],
  25330. [0],
  25331. [0]
  25332. ],
  25333. [
  25334. [
  25335. 1,
  25336. 1
  25337. ],
  25338. [
  25339. 1
  25340. ],
  25341. [
  25342. 200,
  25343. 600,
  25344. 500,
  25345. 3,
  25346. 3,
  25347. 1,
  25348. 1
  25349. ]
  25350. ],
  25351. [
  25352. 0,
  25353. "Default",
  25354. 3,
  25355. 1
  25356. ]
  25357. ]
  25358. , [
  25359. [64, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  25360. 0,
  25361. 330,
  25362. [
  25363. [0],
  25364. [0],
  25365. [0]
  25366. ],
  25367. [
  25368. [
  25369. 2,
  25370. 1
  25371. ],
  25372. [
  25373. 1
  25374. ],
  25375. [
  25376. 200,
  25377. 600,
  25378. 500,
  25379. 3,
  25380. 3,
  25381. 1,
  25382. 1
  25383. ]
  25384. ],
  25385. [
  25386. 0,
  25387. "Default",
  25388. 2,
  25389. 1
  25390. ]
  25391. ]
  25392. , [
  25393. [320, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  25394. 0,
  25395. 332,
  25396. [
  25397. [0],
  25398. [0],
  25399. [0]
  25400. ],
  25401. [
  25402. [
  25403. 2,
  25404. 1
  25405. ],
  25406. [
  25407. 1
  25408. ],
  25409. [
  25410. 200,
  25411. 600,
  25412. 500,
  25413. 3,
  25414. 3,
  25415. 1,
  25416. 1
  25417. ]
  25418. ],
  25419. [
  25420. 0,
  25421. "Default",
  25422. 2,
  25423. 1
  25424. ]
  25425. ]
  25426. , [
  25427. [256, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25428. 0,
  25429. 334,
  25430. [
  25431. [0],
  25432. [0],
  25433. [0]
  25434. ],
  25435. [
  25436. [
  25437. 1,
  25438. 1
  25439. ],
  25440. [
  25441. 1
  25442. ],
  25443. [
  25444. 200,
  25445. 600,
  25446. 500,
  25447. 3,
  25448. 3,
  25449. 1,
  25450. 1
  25451. ]
  25452. ],
  25453. [
  25454. 0,
  25455. "Default",
  25456. 3,
  25457. 1
  25458. ]
  25459. ]
  25460. , [
  25461. [256, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25462. 0,
  25463. 335,
  25464. [
  25465. [0],
  25466. [0],
  25467. [0]
  25468. ],
  25469. [
  25470. [
  25471. 1,
  25472. 1
  25473. ],
  25474. [
  25475. 1
  25476. ],
  25477. [
  25478. 200,
  25479. 600,
  25480. 500,
  25481. 3,
  25482. 3,
  25483. 1,
  25484. 1
  25485. ]
  25486. ],
  25487. [
  25488. 0,
  25489. "Default",
  25490. 3,
  25491. 1
  25492. ]
  25493. ]
  25494. , [
  25495. [192, 192, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25496. 0,
  25497. 338,
  25498. [
  25499. [0],
  25500. [0],
  25501. [0]
  25502. ],
  25503. [
  25504. [
  25505. 1,
  25506. 1
  25507. ],
  25508. [
  25509. 1
  25510. ],
  25511. [
  25512. 200,
  25513. 600,
  25514. 500,
  25515. 3,
  25516. 3,
  25517. 1,
  25518. 1
  25519. ]
  25520. ],
  25521. [
  25522. 0,
  25523. "Default",
  25524. 1,
  25525. 1
  25526. ]
  25527. ]
  25528. , [
  25529. [192, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  25530. 0,
  25531. 339,
  25532. [
  25533. [0],
  25534. [0],
  25535. [0]
  25536. ],
  25537. [
  25538. [
  25539. 2,
  25540. 1
  25541. ],
  25542. [
  25543. 1
  25544. ],
  25545. [
  25546. 200,
  25547. 600,
  25548. 500,
  25549. 3,
  25550. 3,
  25551. 1,
  25552. 1
  25553. ]
  25554. ],
  25555. [
  25556. 0,
  25557. "Default",
  25558. 2,
  25559. 1
  25560. ]
  25561. ]
  25562. , [
  25563. [128, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  25564. 0,
  25565. 333,
  25566. [
  25567. [0],
  25568. [0],
  25569. [0]
  25570. ],
  25571. [
  25572. [
  25573. 2,
  25574. 1
  25575. ],
  25576. [
  25577. 1
  25578. ],
  25579. [
  25580. 200,
  25581. 600,
  25582. 500,
  25583. 3,
  25584. 3,
  25585. 1,
  25586. 1
  25587. ]
  25588. ],
  25589. [
  25590. 0,
  25591. "Default",
  25592. 0,
  25593. 1
  25594. ]
  25595. ]
  25596. , [
  25597. [128, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25598. 0,
  25599. 337,
  25600. [
  25601. [0],
  25602. [0],
  25603. [0]
  25604. ],
  25605. [
  25606. [
  25607. 1,
  25608. 1
  25609. ],
  25610. [
  25611. 1
  25612. ],
  25613. [
  25614. 200,
  25615. 600,
  25616. 500,
  25617. 3,
  25618. 3,
  25619. 1,
  25620. 1
  25621. ]
  25622. ],
  25623. [
  25624. 0,
  25625. "Default",
  25626. 1,
  25627. 1
  25628. ]
  25629. ]
  25630. , [
  25631. [0, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  25632. 0,
  25633. 331,
  25634. [
  25635. [0],
  25636. [0],
  25637. [0]
  25638. ],
  25639. [
  25640. [
  25641. 2,
  25642. 1
  25643. ],
  25644. [
  25645. 1
  25646. ],
  25647. [
  25648. 200,
  25649. 600,
  25650. 500,
  25651. 3,
  25652. 3,
  25653. 1,
  25654. 1
  25655. ]
  25656. ],
  25657. [
  25658. 0,
  25659. "Default",
  25660. 2,
  25661. 1
  25662. ]
  25663. ]
  25664. ],
  25665. [ ]
  25666. ]
  25667. ],
  25668. [
  25669. ],
  25670. []
  25671. ]
  25672. , [
  25673. "level7",
  25674. 384,
  25675. 600,
  25676. false,
  25677. "level",
  25678. 9026072239529671,
  25679. [
  25680. [
  25681. "Layer 0",
  25682. 0,
  25683. 2089740974850829,
  25684. true,
  25685. [44, 44, 44],
  25686. false,
  25687. 1,
  25688. 1,
  25689. 1,
  25690. false,
  25691. 1,
  25692. 0,
  25693. 0,
  25694. [
  25695. [
  25696. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  25697. 3,
  25698. 336,
  25699. [
  25700. ],
  25701. [
  25702. ],
  25703. [
  25704. 0,
  25705. "Default",
  25706. 0,
  25707. 1
  25708. ]
  25709. ]
  25710. , [
  25711. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25712. 0,
  25713. 340,
  25714. [
  25715. [0],
  25716. [0],
  25717. [1]
  25718. ],
  25719. [
  25720. [
  25721. 1,
  25722. 1
  25723. ],
  25724. [
  25725. 1
  25726. ],
  25727. [
  25728. 200,
  25729. 600,
  25730. 500,
  25731. 3,
  25732. 3,
  25733. 1,
  25734. 1
  25735. ]
  25736. ],
  25737. [
  25738. 0,
  25739. "Red",
  25740. 4,
  25741. 1
  25742. ]
  25743. ]
  25744. , [
  25745. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  25746. 2,
  25747. 341,
  25748. [
  25749. ],
  25750. [
  25751. ],
  25752. [
  25753. 0,
  25754. "Default",
  25755. 0,
  25756. 1
  25757. ]
  25758. ]
  25759. , [
  25760. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25761. 1,
  25762. 342,
  25763. [
  25764. ],
  25765. [
  25766. ],
  25767. [
  25768. 1,
  25769. "Default",
  25770. 0,
  25771. 1
  25772. ]
  25773. ]
  25774. , [
  25775. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25776. 1,
  25777. 343,
  25778. [
  25779. ],
  25780. [
  25781. ],
  25782. [
  25783. 1,
  25784. "Default",
  25785. 0,
  25786. 1
  25787. ]
  25788. ]
  25789. , [
  25790. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  25791. 3,
  25792. 344,
  25793. [
  25794. ],
  25795. [
  25796. ],
  25797. [
  25798. 0,
  25799. "Default",
  25800. 2,
  25801. 1
  25802. ]
  25803. ]
  25804. , [
  25805. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  25806. 3,
  25807. 345,
  25808. [
  25809. ],
  25810. [
  25811. ],
  25812. [
  25813. 0,
  25814. "Default",
  25815. 1,
  25816. 1
  25817. ]
  25818. ]
  25819. , [
  25820. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  25821. 4,
  25822. 346,
  25823. [
  25824. [0]
  25825. ],
  25826. [
  25827. [
  25828. 1,
  25829. 0,
  25830. 0,
  25831. 4,
  25832. 0,
  25833. 0,
  25834. 0,
  25835. 50,
  25836. 0
  25837. ]
  25838. ],
  25839. [
  25840. 0,
  25841. "Default",
  25842. 0,
  25843. 1
  25844. ]
  25845. ]
  25846. , [
  25847. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  25848. 4,
  25849. 347,
  25850. [
  25851. [1]
  25852. ],
  25853. [
  25854. [
  25855. 1,
  25856. 0,
  25857. 0,
  25858. 4,
  25859. 0,
  25860. 0,
  25861. 0,
  25862. 50,
  25863. 0
  25864. ]
  25865. ],
  25866. [
  25867. 0,
  25868. "Default",
  25869. 2,
  25870. 1
  25871. ]
  25872. ]
  25873. , [
  25874. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  25875. 4,
  25876. 348,
  25877. [
  25878. [2]
  25879. ],
  25880. [
  25881. [
  25882. 1,
  25883. 0,
  25884. 0,
  25885. 4,
  25886. 0,
  25887. 0,
  25888. 0,
  25889. 50,
  25890. 0
  25891. ]
  25892. ],
  25893. [
  25894. 0,
  25895. "Default",
  25896. 1,
  25897. 1
  25898. ]
  25899. ]
  25900. , [
  25901. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  25902. 5,
  25903. 349,
  25904. [
  25905. [0],
  25906. [0]
  25907. ],
  25908. [
  25909. ],
  25910. [
  25911. 0,
  25912. "Default",
  25913. 0,
  25914. 1
  25915. ]
  25916. ]
  25917. , [
  25918. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25919. 6,
  25920. 350,
  25921. [
  25922. [1]
  25923. ],
  25924. [
  25925. ],
  25926. [
  25927. 29,
  25928. 43,
  25929. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  25930. sg_texts[SG.lang]["BEST:"],
  25931. 1,
  25932. 0,
  25933. 0,
  25934. 0,
  25935. 0,
  25936. 0,
  25937. 0,
  25938. 0
  25939. ]
  25940. ]
  25941. , [
  25942. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25943. 6,
  25944. 351,
  25945. [
  25946. [0]
  25947. ],
  25948. [
  25949. ],
  25950. [
  25951. 29,
  25952. 43,
  25953. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  25954. "MOVE:",
  25955. 1,
  25956. 0,
  25957. 0,
  25958. 0,
  25959. 0,
  25960. 0,
  25961. 0,
  25962. 0
  25963. ]
  25964. ]
  25965. , [
  25966. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  25967. 6,
  25968. 352,
  25969. [
  25970. [2]
  25971. ],
  25972. [
  25973. ],
  25974. [
  25975. 29,
  25976. 43,
  25977. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  25978. sg_texts[SG.lang]["LEVEL:"]+" 01",
  25979. 1,
  25980. 0,
  25981. 0,
  25982. 0,
  25983. 0,
  25984. 0,
  25985. 0,
  25986. 0
  25987. ]
  25988. ]
  25989. , [
  25990. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  25991. 4,
  25992. 353,
  25993. [
  25994. [3]
  25995. ],
  25996. [
  25997. [
  25998. 1,
  25999. 0,
  26000. 0,
  26001. 4,
  26002. 0,
  26003. 0,
  26004. 0,
  26005. 50,
  26006. 0
  26007. ]
  26008. ],
  26009. [
  26010. 0,
  26011. "Default",
  26012. 3,
  26013. 1
  26014. ]
  26015. ]
  26016. , [
  26017. [192, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26018. 0,
  26019. 354,
  26020. [
  26021. [0],
  26022. [0],
  26023. [0]
  26024. ],
  26025. [
  26026. [
  26027. 1,
  26028. 1
  26029. ],
  26030. [
  26031. 1
  26032. ],
  26033. [
  26034. 200,
  26035. 600,
  26036. 500,
  26037. 3,
  26038. 3,
  26039. 1,
  26040. 1
  26041. ]
  26042. ],
  26043. [
  26044. 0,
  26045. "Default",
  26046. 3,
  26047. 1
  26048. ]
  26049. ]
  26050. , [
  26051. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  26052. 0,
  26053. 355,
  26054. [
  26055. [0],
  26056. [0],
  26057. [0]
  26058. ],
  26059. [
  26060. [
  26061. 2,
  26062. 1
  26063. ],
  26064. [
  26065. 1
  26066. ],
  26067. [
  26068. 200,
  26069. 600,
  26070. 500,
  26071. 3,
  26072. 3,
  26073. 1,
  26074. 1
  26075. ]
  26076. ],
  26077. [
  26078. 0,
  26079. "Default",
  26080. 2,
  26081. 1
  26082. ]
  26083. ]
  26084. , [
  26085. [192, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26086. 0,
  26087. 357,
  26088. [
  26089. [0],
  26090. [0],
  26091. [0]
  26092. ],
  26093. [
  26094. [
  26095. 1,
  26096. 1
  26097. ],
  26098. [
  26099. 1
  26100. ],
  26101. [
  26102. 200,
  26103. 600,
  26104. 500,
  26105. 3,
  26106. 3,
  26107. 1,
  26108. 1
  26109. ]
  26110. ],
  26111. [
  26112. 0,
  26113. "Default",
  26114. 3,
  26115. 1
  26116. ]
  26117. ]
  26118. , [
  26119. [0, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26120. 0,
  26121. 358,
  26122. [
  26123. [0],
  26124. [0],
  26125. [0]
  26126. ],
  26127. [
  26128. [
  26129. 1,
  26130. 1
  26131. ],
  26132. [
  26133. 1
  26134. ],
  26135. [
  26136. 200,
  26137. 600,
  26138. 500,
  26139. 3,
  26140. 3,
  26141. 1,
  26142. 1
  26143. ]
  26144. ],
  26145. [
  26146. 0,
  26147. "Default",
  26148. 3,
  26149. 1
  26150. ]
  26151. ]
  26152. , [
  26153. [256, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  26154. 0,
  26155. 361,
  26156. [
  26157. [0],
  26158. [0],
  26159. [0]
  26160. ],
  26161. [
  26162. [
  26163. 2,
  26164. 1
  26165. ],
  26166. [
  26167. 1
  26168. ],
  26169. [
  26170. 200,
  26171. 600,
  26172. 500,
  26173. 3,
  26174. 3,
  26175. 1,
  26176. 1
  26177. ]
  26178. ],
  26179. [
  26180. 0,
  26181. "Default",
  26182. 0,
  26183. 1
  26184. ]
  26185. ]
  26186. , [
  26187. [0, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26188. 0,
  26189. 362,
  26190. [
  26191. [0],
  26192. [0],
  26193. [0]
  26194. ],
  26195. [
  26196. [
  26197. 1,
  26198. 1
  26199. ],
  26200. [
  26201. 1
  26202. ],
  26203. [
  26204. 200,
  26205. 600,
  26206. 500,
  26207. 3,
  26208. 3,
  26209. 1,
  26210. 1
  26211. ]
  26212. ],
  26213. [
  26214. 0,
  26215. "Default",
  26216. 1,
  26217. 1
  26218. ]
  26219. ]
  26220. , [
  26221. [128, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  26222. 0,
  26223. 363,
  26224. [
  26225. [0],
  26226. [0],
  26227. [0]
  26228. ],
  26229. [
  26230. [
  26231. 2,
  26232. 1
  26233. ],
  26234. [
  26235. 1
  26236. ],
  26237. [
  26238. 200,
  26239. 600,
  26240. 500,
  26241. 3,
  26242. 3,
  26243. 1,
  26244. 1
  26245. ]
  26246. ],
  26247. [
  26248. 0,
  26249. "Default",
  26250. 2,
  26251. 1
  26252. ]
  26253. ]
  26254. , [
  26255. [64, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  26256. 0,
  26257. 364,
  26258. [
  26259. [0],
  26260. [0],
  26261. [0]
  26262. ],
  26263. [
  26264. [
  26265. 2,
  26266. 1
  26267. ],
  26268. [
  26269. 1
  26270. ],
  26271. [
  26272. 200,
  26273. 600,
  26274. 500,
  26275. 3,
  26276. 3,
  26277. 1,
  26278. 1
  26279. ]
  26280. ],
  26281. [
  26282. 0,
  26283. "Default",
  26284. 0,
  26285. 1
  26286. ]
  26287. ]
  26288. ],
  26289. [ ]
  26290. ]
  26291. ],
  26292. [
  26293. ],
  26294. []
  26295. ]
  26296. , [
  26297. "level8",
  26298. 384,
  26299. 600,
  26300. false,
  26301. "level",
  26302. 4573619832630971,
  26303. [
  26304. [
  26305. "Layer 0",
  26306. 0,
  26307. 138318962529661,
  26308. true,
  26309. [44, 44, 44],
  26310. false,
  26311. 1,
  26312. 1,
  26313. 1,
  26314. false,
  26315. 1,
  26316. 0,
  26317. 0,
  26318. [
  26319. [
  26320. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  26321. 3,
  26322. 356,
  26323. [
  26324. ],
  26325. [
  26326. ],
  26327. [
  26328. 0,
  26329. "Default",
  26330. 0,
  26331. 1
  26332. ]
  26333. ]
  26334. , [
  26335. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26336. 0,
  26337. 359,
  26338. [
  26339. [0],
  26340. [0],
  26341. [1]
  26342. ],
  26343. [
  26344. [
  26345. 1,
  26346. 1
  26347. ],
  26348. [
  26349. 1
  26350. ],
  26351. [
  26352. 200,
  26353. 600,
  26354. 500,
  26355. 3,
  26356. 3,
  26357. 1,
  26358. 1
  26359. ]
  26360. ],
  26361. [
  26362. 0,
  26363. "Red",
  26364. 4,
  26365. 1
  26366. ]
  26367. ]
  26368. , [
  26369. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  26370. 2,
  26371. 360,
  26372. [
  26373. ],
  26374. [
  26375. ],
  26376. [
  26377. 0,
  26378. "Default",
  26379. 0,
  26380. 1
  26381. ]
  26382. ]
  26383. , [
  26384. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26385. 1,
  26386. 365,
  26387. [
  26388. ],
  26389. [
  26390. ],
  26391. [
  26392. 1,
  26393. "Default",
  26394. 0,
  26395. 1
  26396. ]
  26397. ]
  26398. , [
  26399. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26400. 1,
  26401. 366,
  26402. [
  26403. ],
  26404. [
  26405. ],
  26406. [
  26407. 1,
  26408. "Default",
  26409. 0,
  26410. 1
  26411. ]
  26412. ]
  26413. , [
  26414. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  26415. 3,
  26416. 367,
  26417. [
  26418. ],
  26419. [
  26420. ],
  26421. [
  26422. 0,
  26423. "Default",
  26424. 2,
  26425. 1
  26426. ]
  26427. ]
  26428. , [
  26429. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  26430. 3,
  26431. 368,
  26432. [
  26433. ],
  26434. [
  26435. ],
  26436. [
  26437. 0,
  26438. "Default",
  26439. 1,
  26440. 1
  26441. ]
  26442. ]
  26443. , [
  26444. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  26445. 4,
  26446. 369,
  26447. [
  26448. [0]
  26449. ],
  26450. [
  26451. [
  26452. 1,
  26453. 0,
  26454. 0,
  26455. 4,
  26456. 0,
  26457. 0,
  26458. 0,
  26459. 50,
  26460. 0
  26461. ]
  26462. ],
  26463. [
  26464. 0,
  26465. "Default",
  26466. 0,
  26467. 1
  26468. ]
  26469. ]
  26470. , [
  26471. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  26472. 4,
  26473. 370,
  26474. [
  26475. [1]
  26476. ],
  26477. [
  26478. [
  26479. 1,
  26480. 0,
  26481. 0,
  26482. 4,
  26483. 0,
  26484. 0,
  26485. 0,
  26486. 50,
  26487. 0
  26488. ]
  26489. ],
  26490. [
  26491. 0,
  26492. "Default",
  26493. 2,
  26494. 1
  26495. ]
  26496. ]
  26497. , [
  26498. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  26499. 4,
  26500. 371,
  26501. [
  26502. [2]
  26503. ],
  26504. [
  26505. [
  26506. 1,
  26507. 0,
  26508. 0,
  26509. 4,
  26510. 0,
  26511. 0,
  26512. 0,
  26513. 50,
  26514. 0
  26515. ]
  26516. ],
  26517. [
  26518. 0,
  26519. "Default",
  26520. 1,
  26521. 1
  26522. ]
  26523. ]
  26524. , [
  26525. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  26526. 5,
  26527. 372,
  26528. [
  26529. [0],
  26530. [0]
  26531. ],
  26532. [
  26533. ],
  26534. [
  26535. 0,
  26536. "Default",
  26537. 0,
  26538. 1
  26539. ]
  26540. ]
  26541. , [
  26542. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26543. 6,
  26544. 373,
  26545. [
  26546. [1]
  26547. ],
  26548. [
  26549. ],
  26550. [
  26551. 29,
  26552. 43,
  26553. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  26554. sg_texts[SG.lang]["BEST:"],
  26555. 1,
  26556. 0,
  26557. 0,
  26558. 0,
  26559. 0,
  26560. 0,
  26561. 0,
  26562. 0
  26563. ]
  26564. ]
  26565. , [
  26566. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26567. 6,
  26568. 374,
  26569. [
  26570. [0]
  26571. ],
  26572. [
  26573. ],
  26574. [
  26575. 29,
  26576. 43,
  26577. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  26578. "MOVE:",
  26579. 1,
  26580. 0,
  26581. 0,
  26582. 0,
  26583. 0,
  26584. 0,
  26585. 0,
  26586. 0
  26587. ]
  26588. ]
  26589. , [
  26590. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26591. 6,
  26592. 375,
  26593. [
  26594. [2]
  26595. ],
  26596. [
  26597. ],
  26598. [
  26599. 29,
  26600. 43,
  26601. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  26602. sg_texts[SG.lang]["LEVEL:"]+" 01",
  26603. 1,
  26604. 0,
  26605. 0,
  26606. 0,
  26607. 0,
  26608. 0,
  26609. 0,
  26610. 0
  26611. ]
  26612. ]
  26613. , [
  26614. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  26615. 4,
  26616. 376,
  26617. [
  26618. [3]
  26619. ],
  26620. [
  26621. [
  26622. 1,
  26623. 0,
  26624. 0,
  26625. 4,
  26626. 0,
  26627. 0,
  26628. 0,
  26629. 50,
  26630. 0
  26631. ]
  26632. ],
  26633. [
  26634. 0,
  26635. "Default",
  26636. 3,
  26637. 1
  26638. ]
  26639. ]
  26640. , [
  26641. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26642. 0,
  26643. 377,
  26644. [
  26645. [0],
  26646. [0],
  26647. [0]
  26648. ],
  26649. [
  26650. [
  26651. 1,
  26652. 1
  26653. ],
  26654. [
  26655. 1
  26656. ],
  26657. [
  26658. 200,
  26659. 600,
  26660. 500,
  26661. 3,
  26662. 3,
  26663. 1,
  26664. 1
  26665. ]
  26666. ],
  26667. [
  26668. 0,
  26669. "Default",
  26670. 3,
  26671. 1
  26672. ]
  26673. ]
  26674. , [
  26675. [256, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  26676. 0,
  26677. 378,
  26678. [
  26679. [0],
  26680. [0],
  26681. [0]
  26682. ],
  26683. [
  26684. [
  26685. 2,
  26686. 1
  26687. ],
  26688. [
  26689. 1
  26690. ],
  26691. [
  26692. 200,
  26693. 600,
  26694. 500,
  26695. 3,
  26696. 3,
  26697. 1,
  26698. 1
  26699. ]
  26700. ],
  26701. [
  26702. 0,
  26703. "Default",
  26704. 2,
  26705. 1
  26706. ]
  26707. ]
  26708. , [
  26709. [256, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26710. 0,
  26711. 379,
  26712. [
  26713. [0],
  26714. [0],
  26715. [0]
  26716. ],
  26717. [
  26718. [
  26719. 1,
  26720. 1
  26721. ],
  26722. [
  26723. 1
  26724. ],
  26725. [
  26726. 200,
  26727. 600,
  26728. 500,
  26729. 3,
  26730. 3,
  26731. 1,
  26732. 1
  26733. ]
  26734. ],
  26735. [
  26736. 0,
  26737. "Default",
  26738. 3,
  26739. 1
  26740. ]
  26741. ]
  26742. , [
  26743. [64, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26744. 0,
  26745. 380,
  26746. [
  26747. [0],
  26748. [0],
  26749. [0]
  26750. ],
  26751. [
  26752. [
  26753. 1,
  26754. 1
  26755. ],
  26756. [
  26757. 1
  26758. ],
  26759. [
  26760. 200,
  26761. 600,
  26762. 500,
  26763. 3,
  26764. 3,
  26765. 1,
  26766. 1
  26767. ]
  26768. ],
  26769. [
  26770. 0,
  26771. "Default",
  26772. 3,
  26773. 1
  26774. ]
  26775. ]
  26776. , [
  26777. [192, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26778. 0,
  26779. 382,
  26780. [
  26781. [0],
  26782. [0],
  26783. [0]
  26784. ],
  26785. [
  26786. [
  26787. 1,
  26788. 1
  26789. ],
  26790. [
  26791. 1
  26792. ],
  26793. [
  26794. 200,
  26795. 600,
  26796. 500,
  26797. 3,
  26798. 3,
  26799. 1,
  26800. 1
  26801. ]
  26802. ],
  26803. [
  26804. 0,
  26805. "Default",
  26806. 1,
  26807. 1
  26808. ]
  26809. ]
  26810. , [
  26811. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  26812. 0,
  26813. 383,
  26814. [
  26815. [0],
  26816. [0],
  26817. [0]
  26818. ],
  26819. [
  26820. [
  26821. 2,
  26822. 1
  26823. ],
  26824. [
  26825. 1
  26826. ],
  26827. [
  26828. 200,
  26829. 600,
  26830. 500,
  26831. 3,
  26832. 3,
  26833. 1,
  26834. 1
  26835. ]
  26836. ],
  26837. [
  26838. 0,
  26839. "Default",
  26840. 2,
  26841. 1
  26842. ]
  26843. ]
  26844. , [
  26845. [64, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26846. 0,
  26847. 385,
  26848. [
  26849. [0],
  26850. [0],
  26851. [0]
  26852. ],
  26853. [
  26854. [
  26855. 1,
  26856. 1
  26857. ],
  26858. [
  26859. 1
  26860. ],
  26861. [
  26862. 200,
  26863. 600,
  26864. 500,
  26865. 3,
  26866. 3,
  26867. 1,
  26868. 1
  26869. ]
  26870. ],
  26871. [
  26872. 0,
  26873. "Default",
  26874. 3,
  26875. 1
  26876. ]
  26877. ]
  26878. , [
  26879. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  26880. 0,
  26881. 386,
  26882. [
  26883. [0],
  26884. [0],
  26885. [0]
  26886. ],
  26887. [
  26888. [
  26889. 2,
  26890. 1
  26891. ],
  26892. [
  26893. 1
  26894. ],
  26895. [
  26896. 200,
  26897. 600,
  26898. 500,
  26899. 3,
  26900. 3,
  26901. 1,
  26902. 1
  26903. ]
  26904. ],
  26905. [
  26906. 0,
  26907. "Default",
  26908. 2,
  26909. 1
  26910. ]
  26911. ]
  26912. , [
  26913. [64, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  26914. 0,
  26915. 381,
  26916. [
  26917. [0],
  26918. [0],
  26919. [0]
  26920. ],
  26921. [
  26922. [
  26923. 2,
  26924. 1
  26925. ],
  26926. [
  26927. 1
  26928. ],
  26929. [
  26930. 200,
  26931. 600,
  26932. 500,
  26933. 3,
  26934. 3,
  26935. 1,
  26936. 1
  26937. ]
  26938. ],
  26939. [
  26940. 0,
  26941. "Default",
  26942. 2,
  26943. 1
  26944. ]
  26945. ]
  26946. ],
  26947. [ ]
  26948. ]
  26949. ],
  26950. [
  26951. ],
  26952. []
  26953. ]
  26954. , [
  26955. "level9",
  26956. 384,
  26957. 600,
  26958. false,
  26959. "level",
  26960. 9947002541384644,
  26961. [
  26962. [
  26963. "Layer 0",
  26964. 0,
  26965. 2546453387739175,
  26966. true,
  26967. [44, 44, 44],
  26968. false,
  26969. 1,
  26970. 1,
  26971. 1,
  26972. false,
  26973. 1,
  26974. 0,
  26975. 0,
  26976. [
  26977. [
  26978. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  26979. 3,
  26980. 384,
  26981. [
  26982. ],
  26983. [
  26984. ],
  26985. [
  26986. 0,
  26987. "Default",
  26988. 0,
  26989. 1
  26990. ]
  26991. ]
  26992. , [
  26993. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  26994. 0,
  26995. 387,
  26996. [
  26997. [0],
  26998. [0],
  26999. [1]
  27000. ],
  27001. [
  27002. [
  27003. 1,
  27004. 1
  27005. ],
  27006. [
  27007. 1
  27008. ],
  27009. [
  27010. 200,
  27011. 600,
  27012. 500,
  27013. 3,
  27014. 3,
  27015. 1,
  27016. 1
  27017. ]
  27018. ],
  27019. [
  27020. 0,
  27021. "Red",
  27022. 4,
  27023. 1
  27024. ]
  27025. ]
  27026. , [
  27027. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  27028. 2,
  27029. 388,
  27030. [
  27031. ],
  27032. [
  27033. ],
  27034. [
  27035. 0,
  27036. "Default",
  27037. 0,
  27038. 1
  27039. ]
  27040. ]
  27041. , [
  27042. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27043. 1,
  27044. 389,
  27045. [
  27046. ],
  27047. [
  27048. ],
  27049. [
  27050. 1,
  27051. "Default",
  27052. 0,
  27053. 1
  27054. ]
  27055. ]
  27056. , [
  27057. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27058. 1,
  27059. 390,
  27060. [
  27061. ],
  27062. [
  27063. ],
  27064. [
  27065. 1,
  27066. "Default",
  27067. 0,
  27068. 1
  27069. ]
  27070. ]
  27071. , [
  27072. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  27073. 3,
  27074. 391,
  27075. [
  27076. ],
  27077. [
  27078. ],
  27079. [
  27080. 0,
  27081. "Default",
  27082. 2,
  27083. 1
  27084. ]
  27085. ]
  27086. , [
  27087. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  27088. 3,
  27089. 392,
  27090. [
  27091. ],
  27092. [
  27093. ],
  27094. [
  27095. 0,
  27096. "Default",
  27097. 1,
  27098. 1
  27099. ]
  27100. ]
  27101. , [
  27102. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  27103. 4,
  27104. 393,
  27105. [
  27106. [0]
  27107. ],
  27108. [
  27109. [
  27110. 1,
  27111. 0,
  27112. 0,
  27113. 4,
  27114. 0,
  27115. 0,
  27116. 0,
  27117. 50,
  27118. 0
  27119. ]
  27120. ],
  27121. [
  27122. 0,
  27123. "Default",
  27124. 0,
  27125. 1
  27126. ]
  27127. ]
  27128. , [
  27129. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  27130. 4,
  27131. 394,
  27132. [
  27133. [1]
  27134. ],
  27135. [
  27136. [
  27137. 1,
  27138. 0,
  27139. 0,
  27140. 4,
  27141. 0,
  27142. 0,
  27143. 0,
  27144. 50,
  27145. 0
  27146. ]
  27147. ],
  27148. [
  27149. 0,
  27150. "Default",
  27151. 2,
  27152. 1
  27153. ]
  27154. ]
  27155. , [
  27156. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  27157. 4,
  27158. 395,
  27159. [
  27160. [2]
  27161. ],
  27162. [
  27163. [
  27164. 1,
  27165. 0,
  27166. 0,
  27167. 4,
  27168. 0,
  27169. 0,
  27170. 0,
  27171. 50,
  27172. 0
  27173. ]
  27174. ],
  27175. [
  27176. 0,
  27177. "Default",
  27178. 1,
  27179. 1
  27180. ]
  27181. ]
  27182. , [
  27183. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  27184. 5,
  27185. 396,
  27186. [
  27187. [0],
  27188. [0]
  27189. ],
  27190. [
  27191. ],
  27192. [
  27193. 0,
  27194. "Default",
  27195. 0,
  27196. 1
  27197. ]
  27198. ]
  27199. , [
  27200. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27201. 6,
  27202. 397,
  27203. [
  27204. [1]
  27205. ],
  27206. [
  27207. ],
  27208. [
  27209. 29,
  27210. 43,
  27211. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  27212. sg_texts[SG.lang]["BEST:"],
  27213. 1,
  27214. 0,
  27215. 0,
  27216. 0,
  27217. 0,
  27218. 0,
  27219. 0,
  27220. 0
  27221. ]
  27222. ]
  27223. , [
  27224. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27225. 6,
  27226. 398,
  27227. [
  27228. [0]
  27229. ],
  27230. [
  27231. ],
  27232. [
  27233. 29,
  27234. 43,
  27235. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  27236. "MOVE:",
  27237. 1,
  27238. 0,
  27239. 0,
  27240. 0,
  27241. 0,
  27242. 0,
  27243. 0,
  27244. 0
  27245. ]
  27246. ]
  27247. , [
  27248. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27249. 6,
  27250. 399,
  27251. [
  27252. [2]
  27253. ],
  27254. [
  27255. ],
  27256. [
  27257. 29,
  27258. 43,
  27259. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  27260. sg_texts[SG.lang]["LEVEL:"]+" 01",
  27261. 1,
  27262. 0,
  27263. 0,
  27264. 0,
  27265. 0,
  27266. 0,
  27267. 0,
  27268. 0
  27269. ]
  27270. ]
  27271. , [
  27272. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  27273. 4,
  27274. 400,
  27275. [
  27276. [3]
  27277. ],
  27278. [
  27279. [
  27280. 1,
  27281. 0,
  27282. 0,
  27283. 4,
  27284. 0,
  27285. 0,
  27286. 0,
  27287. 50,
  27288. 0
  27289. ]
  27290. ],
  27291. [
  27292. 0,
  27293. "Default",
  27294. 3,
  27295. 1
  27296. ]
  27297. ]
  27298. , [
  27299. [256, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  27300. 0,
  27301. 402,
  27302. [
  27303. [0],
  27304. [0],
  27305. [0]
  27306. ],
  27307. [
  27308. [
  27309. 2,
  27310. 1
  27311. ],
  27312. [
  27313. 1
  27314. ],
  27315. [
  27316. 200,
  27317. 600,
  27318. 500,
  27319. 3,
  27320. 3,
  27321. 1,
  27322. 1
  27323. ]
  27324. ],
  27325. [
  27326. 0,
  27327. "Default",
  27328. 2,
  27329. 1
  27330. ]
  27331. ]
  27332. , [
  27333. [0, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27334. 0,
  27335. 405,
  27336. [
  27337. [0],
  27338. [0],
  27339. [0]
  27340. ],
  27341. [
  27342. [
  27343. 1,
  27344. 1
  27345. ],
  27346. [
  27347. 1
  27348. ],
  27349. [
  27350. 200,
  27351. 600,
  27352. 500,
  27353. 3,
  27354. 3,
  27355. 1,
  27356. 1
  27357. ]
  27358. ],
  27359. [
  27360. 0,
  27361. "Default",
  27362. 1,
  27363. 1
  27364. ]
  27365. ]
  27366. , [
  27367. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  27368. 0,
  27369. 406,
  27370. [
  27371. [0],
  27372. [0],
  27373. [0]
  27374. ],
  27375. [
  27376. [
  27377. 2,
  27378. 1
  27379. ],
  27380. [
  27381. 1
  27382. ],
  27383. [
  27384. 200,
  27385. 600,
  27386. 500,
  27387. 3,
  27388. 3,
  27389. 1,
  27390. 1
  27391. ]
  27392. ],
  27393. [
  27394. 0,
  27395. "Default",
  27396. 2,
  27397. 1
  27398. ]
  27399. ]
  27400. , [
  27401. [320, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  27402. 0,
  27403. 412,
  27404. [
  27405. [0],
  27406. [0],
  27407. [0]
  27408. ],
  27409. [
  27410. [
  27411. 2,
  27412. 1
  27413. ],
  27414. [
  27415. 1
  27416. ],
  27417. [
  27418. 200,
  27419. 600,
  27420. 500,
  27421. 3,
  27422. 3,
  27423. 1,
  27424. 1
  27425. ]
  27426. ],
  27427. [
  27428. 0,
  27429. "Default",
  27430. 2,
  27431. 1
  27432. ]
  27433. ]
  27434. , [
  27435. [128, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  27436. 0,
  27437. 414,
  27438. [
  27439. [0],
  27440. [0],
  27441. [0]
  27442. ],
  27443. [
  27444. [
  27445. 2,
  27446. 1
  27447. ],
  27448. [
  27449. 1
  27450. ],
  27451. [
  27452. 200,
  27453. 600,
  27454. 500,
  27455. 3,
  27456. 3,
  27457. 1,
  27458. 1
  27459. ]
  27460. ],
  27461. [
  27462. 0,
  27463. "Default",
  27464. 0,
  27465. 1
  27466. ]
  27467. ]
  27468. , [
  27469. [192, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27470. 0,
  27471. 415,
  27472. [
  27473. [0],
  27474. [0],
  27475. [0]
  27476. ],
  27477. [
  27478. [
  27479. 1,
  27480. 1
  27481. ],
  27482. [
  27483. 1
  27484. ],
  27485. [
  27486. 200,
  27487. 600,
  27488. 500,
  27489. 3,
  27490. 3,
  27491. 1,
  27492. 1
  27493. ]
  27494. ],
  27495. [
  27496. 0,
  27497. "Default",
  27498. 1,
  27499. 1
  27500. ]
  27501. ]
  27502. , [
  27503. [128, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27504. 0,
  27505. 416,
  27506. [
  27507. [0],
  27508. [0],
  27509. [0]
  27510. ],
  27511. [
  27512. [
  27513. 1,
  27514. 1
  27515. ],
  27516. [
  27517. 1
  27518. ],
  27519. [
  27520. 200,
  27521. 600,
  27522. 500,
  27523. 3,
  27524. 3,
  27525. 1,
  27526. 1
  27527. ]
  27528. ],
  27529. [
  27530. 0,
  27531. "Default",
  27532. 1,
  27533. 1
  27534. ]
  27535. ]
  27536. , [
  27537. [128, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27538. 0,
  27539. 417,
  27540. [
  27541. [0],
  27542. [0],
  27543. [0]
  27544. ],
  27545. [
  27546. [
  27547. 1,
  27548. 1
  27549. ],
  27550. [
  27551. 1
  27552. ],
  27553. [
  27554. 200,
  27555. 600,
  27556. 500,
  27557. 3,
  27558. 3,
  27559. 1,
  27560. 1
  27561. ]
  27562. ],
  27563. [
  27564. 0,
  27565. "Default",
  27566. 1,
  27567. 1
  27568. ]
  27569. ]
  27570. , [
  27571. [64, 320, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  27572. 0,
  27573. 418,
  27574. [
  27575. [0],
  27576. [0],
  27577. [0]
  27578. ],
  27579. [
  27580. [
  27581. 2,
  27582. 1
  27583. ],
  27584. [
  27585. 1
  27586. ],
  27587. [
  27588. 200,
  27589. 600,
  27590. 500,
  27591. 3,
  27592. 3,
  27593. 1,
  27594. 1
  27595. ]
  27596. ],
  27597. [
  27598. 0,
  27599. "Default",
  27600. 0,
  27601. 1
  27602. ]
  27603. ]
  27604. ],
  27605. [ ]
  27606. ]
  27607. ],
  27608. [
  27609. ],
  27610. []
  27611. ]
  27612. , [
  27613. "level10",
  27614. 384,
  27615. 600,
  27616. false,
  27617. "level",
  27618. 4930483703681893,
  27619. [
  27620. [
  27621. "Layer 0",
  27622. 0,
  27623. 3476779539389082,
  27624. true,
  27625. [44, 44, 44],
  27626. false,
  27627. 1,
  27628. 1,
  27629. 1,
  27630. false,
  27631. 1,
  27632. 0,
  27633. 0,
  27634. [
  27635. [
  27636. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  27637. 3,
  27638. 401,
  27639. [
  27640. ],
  27641. [
  27642. ],
  27643. [
  27644. 0,
  27645. "Default",
  27646. 0,
  27647. 1
  27648. ]
  27649. ]
  27650. , [
  27651. [192, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27652. 0,
  27653. 403,
  27654. [
  27655. [0],
  27656. [0],
  27657. [1]
  27658. ],
  27659. [
  27660. [
  27661. 1,
  27662. 1
  27663. ],
  27664. [
  27665. 1
  27666. ],
  27667. [
  27668. 200,
  27669. 600,
  27670. 500,
  27671. 3,
  27672. 3,
  27673. 1,
  27674. 1
  27675. ]
  27676. ],
  27677. [
  27678. 0,
  27679. "Red",
  27680. 4,
  27681. 1
  27682. ]
  27683. ]
  27684. , [
  27685. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  27686. 2,
  27687. 404,
  27688. [
  27689. ],
  27690. [
  27691. ],
  27692. [
  27693. 0,
  27694. "Default",
  27695. 0,
  27696. 1
  27697. ]
  27698. ]
  27699. , [
  27700. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27701. 1,
  27702. 407,
  27703. [
  27704. ],
  27705. [
  27706. ],
  27707. [
  27708. 1,
  27709. "Default",
  27710. 0,
  27711. 1
  27712. ]
  27713. ]
  27714. , [
  27715. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27716. 1,
  27717. 413,
  27718. [
  27719. ],
  27720. [
  27721. ],
  27722. [
  27723. 1,
  27724. "Default",
  27725. 0,
  27726. 1
  27727. ]
  27728. ]
  27729. , [
  27730. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  27731. 3,
  27732. 419,
  27733. [
  27734. ],
  27735. [
  27736. ],
  27737. [
  27738. 0,
  27739. "Default",
  27740. 2,
  27741. 1
  27742. ]
  27743. ]
  27744. , [
  27745. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  27746. 3,
  27747. 420,
  27748. [
  27749. ],
  27750. [
  27751. ],
  27752. [
  27753. 0,
  27754. "Default",
  27755. 1,
  27756. 1
  27757. ]
  27758. ]
  27759. , [
  27760. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  27761. 4,
  27762. 421,
  27763. [
  27764. [0]
  27765. ],
  27766. [
  27767. [
  27768. 1,
  27769. 0,
  27770. 0,
  27771. 4,
  27772. 0,
  27773. 0,
  27774. 0,
  27775. 50,
  27776. 0
  27777. ]
  27778. ],
  27779. [
  27780. 0,
  27781. "Default",
  27782. 0,
  27783. 1
  27784. ]
  27785. ]
  27786. , [
  27787. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  27788. 4,
  27789. 422,
  27790. [
  27791. [1]
  27792. ],
  27793. [
  27794. [
  27795. 1,
  27796. 0,
  27797. 0,
  27798. 4,
  27799. 0,
  27800. 0,
  27801. 0,
  27802. 50,
  27803. 0
  27804. ]
  27805. ],
  27806. [
  27807. 0,
  27808. "Default",
  27809. 2,
  27810. 1
  27811. ]
  27812. ]
  27813. , [
  27814. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  27815. 4,
  27816. 423,
  27817. [
  27818. [2]
  27819. ],
  27820. [
  27821. [
  27822. 1,
  27823. 0,
  27824. 0,
  27825. 4,
  27826. 0,
  27827. 0,
  27828. 0,
  27829. 50,
  27830. 0
  27831. ]
  27832. ],
  27833. [
  27834. 0,
  27835. "Default",
  27836. 1,
  27837. 1
  27838. ]
  27839. ]
  27840. , [
  27841. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  27842. 5,
  27843. 424,
  27844. [
  27845. [0],
  27846. [0]
  27847. ],
  27848. [
  27849. ],
  27850. [
  27851. 0,
  27852. "Default",
  27853. 0,
  27854. 1
  27855. ]
  27856. ]
  27857. , [
  27858. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27859. 6,
  27860. 425,
  27861. [
  27862. [1]
  27863. ],
  27864. [
  27865. ],
  27866. [
  27867. 29,
  27868. 43,
  27869. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  27870. sg_texts[SG.lang]["BEST:"],
  27871. 1,
  27872. 0,
  27873. 0,
  27874. 0,
  27875. 0,
  27876. 0,
  27877. 0,
  27878. 0
  27879. ]
  27880. ]
  27881. , [
  27882. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27883. 6,
  27884. 426,
  27885. [
  27886. [0]
  27887. ],
  27888. [
  27889. ],
  27890. [
  27891. 29,
  27892. 43,
  27893. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  27894. "MOVE:",
  27895. 1,
  27896. 0,
  27897. 0,
  27898. 0,
  27899. 0,
  27900. 0,
  27901. 0,
  27902. 0
  27903. ]
  27904. ]
  27905. , [
  27906. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  27907. 6,
  27908. 427,
  27909. [
  27910. [2]
  27911. ],
  27912. [
  27913. ],
  27914. [
  27915. 29,
  27916. 43,
  27917. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  27918. sg_texts[SG.lang]["LEVEL:"]+" 01",
  27919. 1,
  27920. 0,
  27921. 0,
  27922. 0,
  27923. 0,
  27924. 0,
  27925. 0,
  27926. 0
  27927. ]
  27928. ]
  27929. , [
  27930. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  27931. 4,
  27932. 428,
  27933. [
  27934. [3]
  27935. ],
  27936. [
  27937. [
  27938. 1,
  27939. 0,
  27940. 0,
  27941. 4,
  27942. 0,
  27943. 0,
  27944. 0,
  27945. 50,
  27946. 0
  27947. ]
  27948. ],
  27949. [
  27950. 0,
  27951. "Default",
  27952. 3,
  27953. 1
  27954. ]
  27955. ]
  27956. , [
  27957. [320, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  27958. 0,
  27959. 429,
  27960. [
  27961. [0],
  27962. [0],
  27963. [0]
  27964. ],
  27965. [
  27966. [
  27967. 2,
  27968. 1
  27969. ],
  27970. [
  27971. 1
  27972. ],
  27973. [
  27974. 200,
  27975. 600,
  27976. 500,
  27977. 3,
  27978. 3,
  27979. 1,
  27980. 1
  27981. ]
  27982. ],
  27983. [
  27984. 0,
  27985. "Default",
  27986. 2,
  27987. 1
  27988. ]
  27989. ]
  27990. , [
  27991. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  27992. 0,
  27993. 431,
  27994. [
  27995. [0],
  27996. [0],
  27997. [0]
  27998. ],
  27999. [
  28000. [
  28001. 2,
  28002. 1
  28003. ],
  28004. [
  28005. 1
  28006. ],
  28007. [
  28008. 200,
  28009. 600,
  28010. 500,
  28011. 3,
  28012. 3,
  28013. 1,
  28014. 1
  28015. ]
  28016. ],
  28017. [
  28018. 0,
  28019. "Default",
  28020. 2,
  28021. 1
  28022. ]
  28023. ]
  28024. , [
  28025. [0, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  28026. 0,
  28027. 432,
  28028. [
  28029. [0],
  28030. [0],
  28031. [0]
  28032. ],
  28033. [
  28034. [
  28035. 2,
  28036. 1
  28037. ],
  28038. [
  28039. 1
  28040. ],
  28041. [
  28042. 200,
  28043. 600,
  28044. 500,
  28045. 3,
  28046. 3,
  28047. 1,
  28048. 1
  28049. ]
  28050. ],
  28051. [
  28052. 0,
  28053. "Default",
  28054. 2,
  28055. 1
  28056. ]
  28057. ]
  28058. , [
  28059. [128, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  28060. 0,
  28061. 438,
  28062. [
  28063. [0],
  28064. [0],
  28065. [0]
  28066. ],
  28067. [
  28068. [
  28069. 2,
  28070. 1
  28071. ],
  28072. [
  28073. 1
  28074. ],
  28075. [
  28076. 200,
  28077. 600,
  28078. 500,
  28079. 3,
  28080. 3,
  28081. 1,
  28082. 1
  28083. ]
  28084. ],
  28085. [
  28086. 0,
  28087. "Default",
  28088. 2,
  28089. 1
  28090. ]
  28091. ]
  28092. , [
  28093. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  28094. 0,
  28095. 439,
  28096. [
  28097. [0],
  28098. [0],
  28099. [0]
  28100. ],
  28101. [
  28102. [
  28103. 2,
  28104. 1
  28105. ],
  28106. [
  28107. 1
  28108. ],
  28109. [
  28110. 200,
  28111. 600,
  28112. 500,
  28113. 3,
  28114. 3,
  28115. 1,
  28116. 1
  28117. ]
  28118. ],
  28119. [
  28120. 0,
  28121. "Default",
  28122. 2,
  28123. 1
  28124. ]
  28125. ]
  28126. , [
  28127. [192, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  28128. 0,
  28129. 440,
  28130. [
  28131. [0],
  28132. [0],
  28133. [0]
  28134. ],
  28135. [
  28136. [
  28137. 2,
  28138. 1
  28139. ],
  28140. [
  28141. 1
  28142. ],
  28143. [
  28144. 200,
  28145. 600,
  28146. 500,
  28147. 3,
  28148. 3,
  28149. 1,
  28150. 1
  28151. ]
  28152. ],
  28153. [
  28154. 0,
  28155. "Default",
  28156. 2,
  28157. 1
  28158. ]
  28159. ]
  28160. , [
  28161. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28162. 0,
  28163. 441,
  28164. [
  28165. [0],
  28166. [0],
  28167. [0]
  28168. ],
  28169. [
  28170. [
  28171. 1,
  28172. 1
  28173. ],
  28174. [
  28175. 1
  28176. ],
  28177. [
  28178. 200,
  28179. 600,
  28180. 500,
  28181. 3,
  28182. 3,
  28183. 1,
  28184. 1
  28185. ]
  28186. ],
  28187. [
  28188. 0,
  28189. "Default",
  28190. 3,
  28191. 1
  28192. ]
  28193. ]
  28194. , [
  28195. [256, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28196. 0,
  28197. 442,
  28198. [
  28199. [0],
  28200. [0],
  28201. [0]
  28202. ],
  28203. [
  28204. [
  28205. 1,
  28206. 1
  28207. ],
  28208. [
  28209. 1
  28210. ],
  28211. [
  28212. 200,
  28213. 600,
  28214. 500,
  28215. 3,
  28216. 3,
  28217. 1,
  28218. 1
  28219. ]
  28220. ],
  28221. [
  28222. 0,
  28223. "Default",
  28224. 3,
  28225. 1
  28226. ]
  28227. ]
  28228. , [
  28229. [0, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28230. 0,
  28231. 443,
  28232. [
  28233. [0],
  28234. [0],
  28235. [0]
  28236. ],
  28237. [
  28238. [
  28239. 1,
  28240. 1
  28241. ],
  28242. [
  28243. 1
  28244. ],
  28245. [
  28246. 200,
  28247. 600,
  28248. 500,
  28249. 3,
  28250. 3,
  28251. 1,
  28252. 1
  28253. ]
  28254. ],
  28255. [
  28256. 0,
  28257. "Default",
  28258. 3,
  28259. 1
  28260. ]
  28261. ]
  28262. , [
  28263. [128, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28264. 0,
  28265. 444,
  28266. [
  28267. [0],
  28268. [0],
  28269. [0]
  28270. ],
  28271. [
  28272. [
  28273. 1,
  28274. 1
  28275. ],
  28276. [
  28277. 1
  28278. ],
  28279. [
  28280. 200,
  28281. 600,
  28282. 500,
  28283. 3,
  28284. 3,
  28285. 1,
  28286. 1
  28287. ]
  28288. ],
  28289. [
  28290. 0,
  28291. "Default",
  28292. 3,
  28293. 1
  28294. ]
  28295. ]
  28296. ],
  28297. [ ]
  28298. ]
  28299. ],
  28300. [
  28301. ],
  28302. []
  28303. ]
  28304. , [
  28305. "level11",
  28306. 384,
  28307. 600,
  28308. false,
  28309. "level",
  28310. 2299713904015654,
  28311. [
  28312. [
  28313. "Layer 0",
  28314. 0,
  28315. 8256208144337426,
  28316. true,
  28317. [44, 44, 44],
  28318. false,
  28319. 1,
  28320. 1,
  28321. 1,
  28322. false,
  28323. 1,
  28324. 0,
  28325. 0,
  28326. [
  28327. [
  28328. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  28329. 3,
  28330. 430,
  28331. [
  28332. ],
  28333. [
  28334. ],
  28335. [
  28336. 0,
  28337. "Default",
  28338. 0,
  28339. 1
  28340. ]
  28341. ]
  28342. , [
  28343. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28344. 0,
  28345. 433,
  28346. [
  28347. [0],
  28348. [0],
  28349. [1]
  28350. ],
  28351. [
  28352. [
  28353. 1,
  28354. 1
  28355. ],
  28356. [
  28357. 1
  28358. ],
  28359. [
  28360. 200,
  28361. 600,
  28362. 500,
  28363. 3,
  28364. 3,
  28365. 1,
  28366. 1
  28367. ]
  28368. ],
  28369. [
  28370. 0,
  28371. "Red",
  28372. 4,
  28373. 1
  28374. ]
  28375. ]
  28376. , [
  28377. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  28378. 2,
  28379. 434,
  28380. [
  28381. ],
  28382. [
  28383. ],
  28384. [
  28385. 0,
  28386. "Default",
  28387. 0,
  28388. 1
  28389. ]
  28390. ]
  28391. , [
  28392. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28393. 1,
  28394. 435,
  28395. [
  28396. ],
  28397. [
  28398. ],
  28399. [
  28400. 1,
  28401. "Default",
  28402. 0,
  28403. 1
  28404. ]
  28405. ]
  28406. , [
  28407. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28408. 1,
  28409. 436,
  28410. [
  28411. ],
  28412. [
  28413. ],
  28414. [
  28415. 1,
  28416. "Default",
  28417. 0,
  28418. 1
  28419. ]
  28420. ]
  28421. , [
  28422. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  28423. 3,
  28424. 437,
  28425. [
  28426. ],
  28427. [
  28428. ],
  28429. [
  28430. 0,
  28431. "Default",
  28432. 2,
  28433. 1
  28434. ]
  28435. ]
  28436. , [
  28437. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  28438. 3,
  28439. 445,
  28440. [
  28441. ],
  28442. [
  28443. ],
  28444. [
  28445. 0,
  28446. "Default",
  28447. 1,
  28448. 1
  28449. ]
  28450. ]
  28451. , [
  28452. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  28453. 4,
  28454. 446,
  28455. [
  28456. [0]
  28457. ],
  28458. [
  28459. [
  28460. 1,
  28461. 0,
  28462. 0,
  28463. 4,
  28464. 0,
  28465. 0,
  28466. 0,
  28467. 50,
  28468. 0
  28469. ]
  28470. ],
  28471. [
  28472. 0,
  28473. "Default",
  28474. 0,
  28475. 1
  28476. ]
  28477. ]
  28478. , [
  28479. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  28480. 4,
  28481. 447,
  28482. [
  28483. [1]
  28484. ],
  28485. [
  28486. [
  28487. 1,
  28488. 0,
  28489. 0,
  28490. 4,
  28491. 0,
  28492. 0,
  28493. 0,
  28494. 50,
  28495. 0
  28496. ]
  28497. ],
  28498. [
  28499. 0,
  28500. "Default",
  28501. 2,
  28502. 1
  28503. ]
  28504. ]
  28505. , [
  28506. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  28507. 4,
  28508. 448,
  28509. [
  28510. [2]
  28511. ],
  28512. [
  28513. [
  28514. 1,
  28515. 0,
  28516. 0,
  28517. 4,
  28518. 0,
  28519. 0,
  28520. 0,
  28521. 50,
  28522. 0
  28523. ]
  28524. ],
  28525. [
  28526. 0,
  28527. "Default",
  28528. 1,
  28529. 1
  28530. ]
  28531. ]
  28532. , [
  28533. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  28534. 5,
  28535. 449,
  28536. [
  28537. [0],
  28538. [0]
  28539. ],
  28540. [
  28541. ],
  28542. [
  28543. 0,
  28544. "Default",
  28545. 0,
  28546. 1
  28547. ]
  28548. ]
  28549. , [
  28550. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28551. 6,
  28552. 450,
  28553. [
  28554. [1]
  28555. ],
  28556. [
  28557. ],
  28558. [
  28559. 29,
  28560. 43,
  28561. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  28562. sg_texts[SG.lang]["BEST:"],
  28563. 1,
  28564. 0,
  28565. 0,
  28566. 0,
  28567. 0,
  28568. 0,
  28569. 0,
  28570. 0
  28571. ]
  28572. ]
  28573. , [
  28574. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28575. 6,
  28576. 451,
  28577. [
  28578. [0]
  28579. ],
  28580. [
  28581. ],
  28582. [
  28583. 29,
  28584. 43,
  28585. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  28586. "MOVE:",
  28587. 1,
  28588. 0,
  28589. 0,
  28590. 0,
  28591. 0,
  28592. 0,
  28593. 0,
  28594. 0
  28595. ]
  28596. ]
  28597. , [
  28598. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28599. 6,
  28600. 452,
  28601. [
  28602. [2]
  28603. ],
  28604. [
  28605. ],
  28606. [
  28607. 29,
  28608. 43,
  28609. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  28610. sg_texts[SG.lang]["LEVEL:"]+" 01",
  28611. 1,
  28612. 0,
  28613. 0,
  28614. 0,
  28615. 0,
  28616. 0,
  28617. 0,
  28618. 0
  28619. ]
  28620. ]
  28621. , [
  28622. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  28623. 4,
  28624. 453,
  28625. [
  28626. [3]
  28627. ],
  28628. [
  28629. [
  28630. 1,
  28631. 0,
  28632. 0,
  28633. 4,
  28634. 0,
  28635. 0,
  28636. 0,
  28637. 50,
  28638. 0
  28639. ]
  28640. ],
  28641. [
  28642. 0,
  28643. "Default",
  28644. 3,
  28645. 1
  28646. ]
  28647. ]
  28648. , [
  28649. [320, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  28650. 0,
  28651. 456,
  28652. [
  28653. [0],
  28654. [0],
  28655. [0]
  28656. ],
  28657. [
  28658. [
  28659. 2,
  28660. 1
  28661. ],
  28662. [
  28663. 1
  28664. ],
  28665. [
  28666. 200,
  28667. 600,
  28668. 500,
  28669. 3,
  28670. 3,
  28671. 1,
  28672. 1
  28673. ]
  28674. ],
  28675. [
  28676. 0,
  28677. "Default",
  28678. 2,
  28679. 1
  28680. ]
  28681. ]
  28682. , [
  28683. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  28684. 0,
  28685. 458,
  28686. [
  28687. [0],
  28688. [0],
  28689. [0]
  28690. ],
  28691. [
  28692. [
  28693. 2,
  28694. 1
  28695. ],
  28696. [
  28697. 1
  28698. ],
  28699. [
  28700. 200,
  28701. 600,
  28702. 500,
  28703. 3,
  28704. 3,
  28705. 1,
  28706. 1
  28707. ]
  28708. ],
  28709. [
  28710. 0,
  28711. "Default",
  28712. 2,
  28713. 1
  28714. ]
  28715. ]
  28716. , [
  28717. [64, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28718. 0,
  28719. 462,
  28720. [
  28721. [0],
  28722. [0],
  28723. [0]
  28724. ],
  28725. [
  28726. [
  28727. 1,
  28728. 1
  28729. ],
  28730. [
  28731. 1
  28732. ],
  28733. [
  28734. 200,
  28735. 600,
  28736. 500,
  28737. 3,
  28738. 3,
  28739. 1,
  28740. 1
  28741. ]
  28742. ],
  28743. [
  28744. 0,
  28745. "Default",
  28746. 3,
  28747. 1
  28748. ]
  28749. ]
  28750. , [
  28751. [64, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28752. 0,
  28753. 454,
  28754. [
  28755. [0],
  28756. [0],
  28757. [0]
  28758. ],
  28759. [
  28760. [
  28761. 1,
  28762. 1
  28763. ],
  28764. [
  28765. 1
  28766. ],
  28767. [
  28768. 200,
  28769. 600,
  28770. 500,
  28771. 3,
  28772. 3,
  28773. 1,
  28774. 1
  28775. ]
  28776. ],
  28777. [
  28778. 0,
  28779. "Default",
  28780. 1,
  28781. 1
  28782. ]
  28783. ]
  28784. , [
  28785. [256, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  28786. 0,
  28787. 455,
  28788. [
  28789. [0],
  28790. [0],
  28791. [0]
  28792. ],
  28793. [
  28794. [
  28795. 2,
  28796. 1
  28797. ],
  28798. [
  28799. 1
  28800. ],
  28801. [
  28802. 200,
  28803. 600,
  28804. 500,
  28805. 3,
  28806. 3,
  28807. 1,
  28808. 1
  28809. ]
  28810. ],
  28811. [
  28812. 0,
  28813. "Default",
  28814. 0,
  28815. 1
  28816. ]
  28817. ]
  28818. , [
  28819. [320, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  28820. 0,
  28821. 457,
  28822. [
  28823. [0],
  28824. [0],
  28825. [0]
  28826. ],
  28827. [
  28828. [
  28829. 2,
  28830. 1
  28831. ],
  28832. [
  28833. 1
  28834. ],
  28835. [
  28836. 200,
  28837. 600,
  28838. 500,
  28839. 3,
  28840. 3,
  28841. 1,
  28842. 1
  28843. ]
  28844. ],
  28845. [
  28846. 0,
  28847. "Default",
  28848. 2,
  28849. 1
  28850. ]
  28851. ]
  28852. , [
  28853. [128, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  28854. 0,
  28855. 459,
  28856. [
  28857. [0],
  28858. [0],
  28859. [0]
  28860. ],
  28861. [
  28862. [
  28863. 1,
  28864. 1
  28865. ],
  28866. [
  28867. 1
  28868. ],
  28869. [
  28870. 200,
  28871. 600,
  28872. 500,
  28873. 3,
  28874. 3,
  28875. 1,
  28876. 1
  28877. ]
  28878. ],
  28879. [
  28880. 0,
  28881. "Default",
  28882. 1,
  28883. 1
  28884. ]
  28885. ]
  28886. , [
  28887. [128, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  28888. 0,
  28889. 460,
  28890. [
  28891. [0],
  28892. [0],
  28893. [0]
  28894. ],
  28895. [
  28896. [
  28897. 2,
  28898. 1
  28899. ],
  28900. [
  28901. 1
  28902. ],
  28903. [
  28904. 200,
  28905. 600,
  28906. 500,
  28907. 3,
  28908. 3,
  28909. 1,
  28910. 1
  28911. ]
  28912. ],
  28913. [
  28914. 0,
  28915. "Default",
  28916. 2,
  28917. 1
  28918. ]
  28919. ]
  28920. , [
  28921. [64, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  28922. 0,
  28923. 463,
  28924. [
  28925. [0],
  28926. [0],
  28927. [0]
  28928. ],
  28929. [
  28930. [
  28931. 2,
  28932. 1
  28933. ],
  28934. [
  28935. 1
  28936. ],
  28937. [
  28938. 200,
  28939. 600,
  28940. 500,
  28941. 3,
  28942. 3,
  28943. 1,
  28944. 1
  28945. ]
  28946. ],
  28947. [
  28948. 0,
  28949. "Default",
  28950. 2,
  28951. 1
  28952. ]
  28953. ]
  28954. ],
  28955. [ ]
  28956. ]
  28957. ],
  28958. [
  28959. ],
  28960. []
  28961. ]
  28962. , [
  28963. "level12",
  28964. 384,
  28965. 600,
  28966. false,
  28967. "level",
  28968. 9467835001155093,
  28969. [
  28970. [
  28971. "Layer 0",
  28972. 0,
  28973. 1960643085711368,
  28974. true,
  28975. [44, 44, 44],
  28976. false,
  28977. 1,
  28978. 1,
  28979. 1,
  28980. false,
  28981. 1,
  28982. 0,
  28983. 0,
  28984. [
  28985. [
  28986. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  28987. 3,
  28988. 461,
  28989. [
  28990. ],
  28991. [
  28992. ],
  28993. [
  28994. 0,
  28995. "Default",
  28996. 0,
  28997. 1
  28998. ]
  28999. ]
  29000. , [
  29001. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29002. 0,
  29003. 464,
  29004. [
  29005. [0],
  29006. [0],
  29007. [1]
  29008. ],
  29009. [
  29010. [
  29011. 1,
  29012. 1
  29013. ],
  29014. [
  29015. 1
  29016. ],
  29017. [
  29018. 200,
  29019. 600,
  29020. 500,
  29021. 3,
  29022. 3,
  29023. 1,
  29024. 1
  29025. ]
  29026. ],
  29027. [
  29028. 0,
  29029. "Red",
  29030. 4,
  29031. 1
  29032. ]
  29033. ]
  29034. , [
  29035. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  29036. 2,
  29037. 465,
  29038. [
  29039. ],
  29040. [
  29041. ],
  29042. [
  29043. 0,
  29044. "Default",
  29045. 0,
  29046. 1
  29047. ]
  29048. ]
  29049. , [
  29050. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29051. 1,
  29052. 466,
  29053. [
  29054. ],
  29055. [
  29056. ],
  29057. [
  29058. 1,
  29059. "Default",
  29060. 0,
  29061. 1
  29062. ]
  29063. ]
  29064. , [
  29065. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29066. 1,
  29067. 467,
  29068. [
  29069. ],
  29070. [
  29071. ],
  29072. [
  29073. 1,
  29074. "Default",
  29075. 0,
  29076. 1
  29077. ]
  29078. ]
  29079. , [
  29080. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  29081. 3,
  29082. 468,
  29083. [
  29084. ],
  29085. [
  29086. ],
  29087. [
  29088. 0,
  29089. "Default",
  29090. 2,
  29091. 1
  29092. ]
  29093. ]
  29094. , [
  29095. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  29096. 3,
  29097. 469,
  29098. [
  29099. ],
  29100. [
  29101. ],
  29102. [
  29103. 0,
  29104. "Default",
  29105. 1,
  29106. 1
  29107. ]
  29108. ]
  29109. , [
  29110. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  29111. 4,
  29112. 470,
  29113. [
  29114. [0]
  29115. ],
  29116. [
  29117. [
  29118. 1,
  29119. 0,
  29120. 0,
  29121. 4,
  29122. 0,
  29123. 0,
  29124. 0,
  29125. 50,
  29126. 0
  29127. ]
  29128. ],
  29129. [
  29130. 0,
  29131. "Default",
  29132. 0,
  29133. 1
  29134. ]
  29135. ]
  29136. , [
  29137. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  29138. 4,
  29139. 471,
  29140. [
  29141. [1]
  29142. ],
  29143. [
  29144. [
  29145. 1,
  29146. 0,
  29147. 0,
  29148. 4,
  29149. 0,
  29150. 0,
  29151. 0,
  29152. 50,
  29153. 0
  29154. ]
  29155. ],
  29156. [
  29157. 0,
  29158. "Default",
  29159. 2,
  29160. 1
  29161. ]
  29162. ]
  29163. , [
  29164. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  29165. 4,
  29166. 472,
  29167. [
  29168. [2]
  29169. ],
  29170. [
  29171. [
  29172. 1,
  29173. 0,
  29174. 0,
  29175. 4,
  29176. 0,
  29177. 0,
  29178. 0,
  29179. 50,
  29180. 0
  29181. ]
  29182. ],
  29183. [
  29184. 0,
  29185. "Default",
  29186. 1,
  29187. 1
  29188. ]
  29189. ]
  29190. , [
  29191. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  29192. 5,
  29193. 473,
  29194. [
  29195. [0],
  29196. [0]
  29197. ],
  29198. [
  29199. ],
  29200. [
  29201. 0,
  29202. "Default",
  29203. 0,
  29204. 1
  29205. ]
  29206. ]
  29207. , [
  29208. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29209. 6,
  29210. 474,
  29211. [
  29212. [1]
  29213. ],
  29214. [
  29215. ],
  29216. [
  29217. 29,
  29218. 43,
  29219. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  29220. sg_texts[SG.lang]["BEST:"],
  29221. 1,
  29222. 0,
  29223. 0,
  29224. 0,
  29225. 0,
  29226. 0,
  29227. 0,
  29228. 0
  29229. ]
  29230. ]
  29231. , [
  29232. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29233. 6,
  29234. 475,
  29235. [
  29236. [0]
  29237. ],
  29238. [
  29239. ],
  29240. [
  29241. 29,
  29242. 43,
  29243. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  29244. "MOVE:",
  29245. 1,
  29246. 0,
  29247. 0,
  29248. 0,
  29249. 0,
  29250. 0,
  29251. 0,
  29252. 0
  29253. ]
  29254. ]
  29255. , [
  29256. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29257. 6,
  29258. 476,
  29259. [
  29260. [2]
  29261. ],
  29262. [
  29263. ],
  29264. [
  29265. 29,
  29266. 43,
  29267. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  29268. sg_texts[SG.lang]["LEVEL:"]+" 01",
  29269. 1,
  29270. 0,
  29271. 0,
  29272. 0,
  29273. 0,
  29274. 0,
  29275. 0,
  29276. 0
  29277. ]
  29278. ]
  29279. , [
  29280. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  29281. 4,
  29282. 477,
  29283. [
  29284. [3]
  29285. ],
  29286. [
  29287. [
  29288. 1,
  29289. 0,
  29290. 0,
  29291. 4,
  29292. 0,
  29293. 0,
  29294. 0,
  29295. 50,
  29296. 0
  29297. ]
  29298. ],
  29299. [
  29300. 0,
  29301. "Default",
  29302. 3,
  29303. 1
  29304. ]
  29305. ]
  29306. , [
  29307. [320, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  29308. 0,
  29309. 478,
  29310. [
  29311. [0],
  29312. [0],
  29313. [0]
  29314. ],
  29315. [
  29316. [
  29317. 2,
  29318. 1
  29319. ],
  29320. [
  29321. 1
  29322. ],
  29323. [
  29324. 200,
  29325. 600,
  29326. 500,
  29327. 3,
  29328. 3,
  29329. 1,
  29330. 1
  29331. ]
  29332. ],
  29333. [
  29334. 0,
  29335. "Default",
  29336. 2,
  29337. 1
  29338. ]
  29339. ]
  29340. , [
  29341. [128, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  29342. 0,
  29343. 479,
  29344. [
  29345. [0],
  29346. [0],
  29347. [0]
  29348. ],
  29349. [
  29350. [
  29351. 2,
  29352. 1
  29353. ],
  29354. [
  29355. 1
  29356. ],
  29357. [
  29358. 200,
  29359. 600,
  29360. 500,
  29361. 3,
  29362. 3,
  29363. 1,
  29364. 1
  29365. ]
  29366. ],
  29367. [
  29368. 0,
  29369. "Default",
  29370. 2,
  29371. 1
  29372. ]
  29373. ]
  29374. , [
  29375. [192, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29376. 0,
  29377. 480,
  29378. [
  29379. [0],
  29380. [0],
  29381. [0]
  29382. ],
  29383. [
  29384. [
  29385. 1,
  29386. 1
  29387. ],
  29388. [
  29389. 1
  29390. ],
  29391. [
  29392. 200,
  29393. 600,
  29394. 500,
  29395. 3,
  29396. 3,
  29397. 1,
  29398. 1
  29399. ]
  29400. ],
  29401. [
  29402. 0,
  29403. "Default",
  29404. 3,
  29405. 1
  29406. ]
  29407. ]
  29408. , [
  29409. [0, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29410. 0,
  29411. 481,
  29412. [
  29413. [0],
  29414. [0],
  29415. [0]
  29416. ],
  29417. [
  29418. [
  29419. 1,
  29420. 1
  29421. ],
  29422. [
  29423. 1
  29424. ],
  29425. [
  29426. 200,
  29427. 600,
  29428. 500,
  29429. 3,
  29430. 3,
  29431. 1,
  29432. 1
  29433. ]
  29434. ],
  29435. [
  29436. 0,
  29437. "Default",
  29438. 1,
  29439. 1
  29440. ]
  29441. ]
  29442. , [
  29443. [256, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  29444. 0,
  29445. 483,
  29446. [
  29447. [0],
  29448. [0],
  29449. [0]
  29450. ],
  29451. [
  29452. [
  29453. 2,
  29454. 1
  29455. ],
  29456. [
  29457. 1
  29458. ],
  29459. [
  29460. 200,
  29461. 600,
  29462. 500,
  29463. 3,
  29464. 3,
  29465. 1,
  29466. 1
  29467. ]
  29468. ],
  29469. [
  29470. 0,
  29471. "Default",
  29472. 2,
  29473. 1
  29474. ]
  29475. ]
  29476. , [
  29477. [0, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29478. 0,
  29479. 484,
  29480. [
  29481. [0],
  29482. [0],
  29483. [0]
  29484. ],
  29485. [
  29486. [
  29487. 1,
  29488. 1
  29489. ],
  29490. [
  29491. 1
  29492. ],
  29493. [
  29494. 200,
  29495. 600,
  29496. 500,
  29497. 3,
  29498. 3,
  29499. 1,
  29500. 1
  29501. ]
  29502. ],
  29503. [
  29504. 0,
  29505. "Default",
  29506. 1,
  29507. 1
  29508. ]
  29509. ]
  29510. , [
  29511. [256, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  29512. 0,
  29513. 485,
  29514. [
  29515. [0],
  29516. [0],
  29517. [0]
  29518. ],
  29519. [
  29520. [
  29521. 2,
  29522. 1
  29523. ],
  29524. [
  29525. 1
  29526. ],
  29527. [
  29528. 200,
  29529. 600,
  29530. 500,
  29531. 3,
  29532. 3,
  29533. 1,
  29534. 1
  29535. ]
  29536. ],
  29537. [
  29538. 0,
  29539. "Default",
  29540. 2,
  29541. 1
  29542. ]
  29543. ]
  29544. , [
  29545. [64, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  29546. 0,
  29547. 486,
  29548. [
  29549. [0],
  29550. [0],
  29551. [0]
  29552. ],
  29553. [
  29554. [
  29555. 2,
  29556. 1
  29557. ],
  29558. [
  29559. 1
  29560. ],
  29561. [
  29562. 200,
  29563. 600,
  29564. 500,
  29565. 3,
  29566. 3,
  29567. 1,
  29568. 1
  29569. ]
  29570. ],
  29571. [
  29572. 0,
  29573. "Default",
  29574. 2,
  29575. 1
  29576. ]
  29577. ]
  29578. , [
  29579. [64, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29580. 0,
  29581. 487,
  29582. [
  29583. [0],
  29584. [0],
  29585. [0]
  29586. ],
  29587. [
  29588. [
  29589. 1,
  29590. 1
  29591. ],
  29592. [
  29593. 1
  29594. ],
  29595. [
  29596. 200,
  29597. 600,
  29598. 500,
  29599. 3,
  29600. 3,
  29601. 1,
  29602. 1
  29603. ]
  29604. ],
  29605. [
  29606. 0,
  29607. "Default",
  29608. 3,
  29609. 1
  29610. ]
  29611. ]
  29612. ],
  29613. [ ]
  29614. ]
  29615. ],
  29616. [
  29617. ],
  29618. []
  29619. ]
  29620. , [
  29621. "level13",
  29622. 384,
  29623. 600,
  29624. false,
  29625. "level",
  29626. 94799150923163,
  29627. [
  29628. [
  29629. "Layer 0",
  29630. 0,
  29631. 8741844802706798,
  29632. true,
  29633. [44, 44, 44],
  29634. false,
  29635. 1,
  29636. 1,
  29637. 1,
  29638. false,
  29639. 1,
  29640. 0,
  29641. 0,
  29642. [
  29643. [
  29644. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  29645. 3,
  29646. 482,
  29647. [
  29648. ],
  29649. [
  29650. ],
  29651. [
  29652. 0,
  29653. "Default",
  29654. 0,
  29655. 1
  29656. ]
  29657. ]
  29658. , [
  29659. [192, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29660. 0,
  29661. 488,
  29662. [
  29663. [0],
  29664. [0],
  29665. [1]
  29666. ],
  29667. [
  29668. [
  29669. 1,
  29670. 1
  29671. ],
  29672. [
  29673. 1
  29674. ],
  29675. [
  29676. 200,
  29677. 600,
  29678. 500,
  29679. 3,
  29680. 3,
  29681. 1,
  29682. 1
  29683. ]
  29684. ],
  29685. [
  29686. 0,
  29687. "Red",
  29688. 4,
  29689. 1
  29690. ]
  29691. ]
  29692. , [
  29693. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  29694. 2,
  29695. 489,
  29696. [
  29697. ],
  29698. [
  29699. ],
  29700. [
  29701. 0,
  29702. "Default",
  29703. 0,
  29704. 1
  29705. ]
  29706. ]
  29707. , [
  29708. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29709. 1,
  29710. 490,
  29711. [
  29712. ],
  29713. [
  29714. ],
  29715. [
  29716. 1,
  29717. "Default",
  29718. 0,
  29719. 1
  29720. ]
  29721. ]
  29722. , [
  29723. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29724. 1,
  29725. 491,
  29726. [
  29727. ],
  29728. [
  29729. ],
  29730. [
  29731. 1,
  29732. "Default",
  29733. 0,
  29734. 1
  29735. ]
  29736. ]
  29737. , [
  29738. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673509985209, 0.00699300691485405, 0, 0, []],
  29739. 3,
  29740. 492,
  29741. [
  29742. ],
  29743. [
  29744. ],
  29745. [
  29746. 0,
  29747. "Default",
  29748. 2,
  29749. 1
  29750. ]
  29751. ]
  29752. , [
  29753. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673509985209, -1.422360301017761, 0, 0, []],
  29754. 3,
  29755. 493,
  29756. [
  29757. ],
  29758. [
  29759. ],
  29760. [
  29761. 0,
  29762. "Default",
  29763. 1,
  29764. 1
  29765. ]
  29766. ]
  29767. , [
  29768. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  29769. 4,
  29770. 494,
  29771. [
  29772. [0]
  29773. ],
  29774. [
  29775. [
  29776. 1,
  29777. 0,
  29778. 0,
  29779. 4,
  29780. 0,
  29781. 0,
  29782. 0,
  29783. 50,
  29784. 0
  29785. ]
  29786. ],
  29787. [
  29788. 0,
  29789. "Default",
  29790. 0,
  29791. 1
  29792. ]
  29793. ]
  29794. , [
  29795. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  29796. 4,
  29797. 495,
  29798. [
  29799. [1]
  29800. ],
  29801. [
  29802. [
  29803. 1,
  29804. 0,
  29805. 0,
  29806. 4,
  29807. 0,
  29808. 0,
  29809. 0,
  29810. 50,
  29811. 0
  29812. ]
  29813. ],
  29814. [
  29815. 0,
  29816. "Default",
  29817. 2,
  29818. 1
  29819. ]
  29820. ]
  29821. , [
  29822. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  29823. 4,
  29824. 496,
  29825. [
  29826. [2]
  29827. ],
  29828. [
  29829. [
  29830. 1,
  29831. 0,
  29832. 0,
  29833. 4,
  29834. 0,
  29835. 0,
  29836. 0,
  29837. 50,
  29838. 0
  29839. ]
  29840. ],
  29841. [
  29842. 0,
  29843. "Default",
  29844. 1,
  29845. 1
  29846. ]
  29847. ]
  29848. , [
  29849. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  29850. 5,
  29851. 497,
  29852. [
  29853. [0],
  29854. [0]
  29855. ],
  29856. [
  29857. ],
  29858. [
  29859. 0,
  29860. "Default",
  29861. 0,
  29862. 1
  29863. ]
  29864. ]
  29865. , [
  29866. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29867. 6,
  29868. 498,
  29869. [
  29870. [1]
  29871. ],
  29872. [
  29873. ],
  29874. [
  29875. 29,
  29876. 43,
  29877. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  29878. sg_texts[SG.lang]["BEST:"],
  29879. 1,
  29880. 0,
  29881. 0,
  29882. 0,
  29883. 0,
  29884. 0,
  29885. 0,
  29886. 0
  29887. ]
  29888. ]
  29889. , [
  29890. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29891. 6,
  29892. 499,
  29893. [
  29894. [0]
  29895. ],
  29896. [
  29897. ],
  29898. [
  29899. 29,
  29900. 43,
  29901. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  29902. "MOVE:",
  29903. 1,
  29904. 0,
  29905. 0,
  29906. 0,
  29907. 0,
  29908. 0,
  29909. 0,
  29910. 0
  29911. ]
  29912. ]
  29913. , [
  29914. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  29915. 6,
  29916. 500,
  29917. [
  29918. [2]
  29919. ],
  29920. [
  29921. ],
  29922. [
  29923. 29,
  29924. 43,
  29925. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  29926. sg_texts[SG.lang]["LEVEL:"]+" 01",
  29927. 1,
  29928. 0,
  29929. 0,
  29930. 0,
  29931. 0,
  29932. 0,
  29933. 0,
  29934. 0
  29935. ]
  29936. ]
  29937. , [
  29938. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  29939. 4,
  29940. 501,
  29941. [
  29942. [3]
  29943. ],
  29944. [
  29945. [
  29946. 1,
  29947. 0,
  29948. 0,
  29949. 4,
  29950. 0,
  29951. 0,
  29952. 0,
  29953. 50,
  29954. 0
  29955. ]
  29956. ],
  29957. [
  29958. 0,
  29959. "Default",
  29960. 3,
  29961. 1
  29962. ]
  29963. ]
  29964. , [
  29965. [0, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  29966. 0,
  29967. 503,
  29968. [
  29969. [0],
  29970. [0],
  29971. [0]
  29972. ],
  29973. [
  29974. [
  29975. 2,
  29976. 1
  29977. ],
  29978. [
  29979. 1
  29980. ],
  29981. [
  29982. 200,
  29983. 600,
  29984. 500,
  29985. 3,
  29986. 3,
  29987. 1,
  29988. 1
  29989. ]
  29990. ],
  29991. [
  29992. 0,
  29993. "Default",
  29994. 2,
  29995. 1
  29996. ]
  29997. ]
  29998. , [
  29999. [256, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30000. 0,
  30001. 504,
  30002. [
  30003. [0],
  30004. [0],
  30005. [0]
  30006. ],
  30007. [
  30008. [
  30009. 1,
  30010. 1
  30011. ],
  30012. [
  30013. 1
  30014. ],
  30015. [
  30016. 200,
  30017. 600,
  30018. 500,
  30019. 3,
  30020. 3,
  30021. 1,
  30022. 1
  30023. ]
  30024. ],
  30025. [
  30026. 0,
  30027. "Default",
  30028. 3,
  30029. 1
  30030. ]
  30031. ]
  30032. , [
  30033. [128, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  30034. 0,
  30035. 506,
  30036. [
  30037. [0],
  30038. [0],
  30039. [0]
  30040. ],
  30041. [
  30042. [
  30043. 2,
  30044. 1
  30045. ],
  30046. [
  30047. 1
  30048. ],
  30049. [
  30050. 200,
  30051. 600,
  30052. 500,
  30053. 3,
  30054. 3,
  30055. 1,
  30056. 1
  30057. ]
  30058. ],
  30059. [
  30060. 0,
  30061. "Default",
  30062. 0,
  30063. 1
  30064. ]
  30065. ]
  30066. , [
  30067. [192, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  30068. 0,
  30069. 234,
  30070. [
  30071. [0],
  30072. [0],
  30073. [0]
  30074. ],
  30075. [
  30076. [
  30077. 2,
  30078. 1
  30079. ],
  30080. [
  30081. 1
  30082. ],
  30083. [
  30084. 200,
  30085. 600,
  30086. 500,
  30087. 3,
  30088. 3,
  30089. 1,
  30090. 1
  30091. ]
  30092. ],
  30093. [
  30094. 0,
  30095. "Default",
  30096. 2,
  30097. 1
  30098. ]
  30099. ]
  30100. , [
  30101. [64, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30102. 0,
  30103. 507,
  30104. [
  30105. [0],
  30106. [0],
  30107. [0]
  30108. ],
  30109. [
  30110. [
  30111. 1,
  30112. 1
  30113. ],
  30114. [
  30115. 1
  30116. ],
  30117. [
  30118. 200,
  30119. 600,
  30120. 500,
  30121. 3,
  30122. 3,
  30123. 1,
  30124. 1
  30125. ]
  30126. ],
  30127. [
  30128. 0,
  30129. "Default",
  30130. 3,
  30131. 1
  30132. ]
  30133. ]
  30134. , [
  30135. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30136. 0,
  30137. 508,
  30138. [
  30139. [0],
  30140. [0],
  30141. [0]
  30142. ],
  30143. [
  30144. [
  30145. 1,
  30146. 1
  30147. ],
  30148. [
  30149. 1
  30150. ],
  30151. [
  30152. 200,
  30153. 600,
  30154. 500,
  30155. 3,
  30156. 3,
  30157. 1,
  30158. 1
  30159. ]
  30160. ],
  30161. [
  30162. 0,
  30163. "Default",
  30164. 3,
  30165. 1
  30166. ]
  30167. ]
  30168. , [
  30169. [0, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30170. 0,
  30171. 510,
  30172. [
  30173. [0],
  30174. [0],
  30175. [0]
  30176. ],
  30177. [
  30178. [
  30179. 1,
  30180. 1
  30181. ],
  30182. [
  30183. 1
  30184. ],
  30185. [
  30186. 200,
  30187. 600,
  30188. 500,
  30189. 3,
  30190. 3,
  30191. 1,
  30192. 1
  30193. ]
  30194. ],
  30195. [
  30196. 0,
  30197. "Default",
  30198. 3,
  30199. 1
  30200. ]
  30201. ]
  30202. , [
  30203. [0, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30204. 0,
  30205. 62,
  30206. [
  30207. [0],
  30208. [0],
  30209. [0]
  30210. ],
  30211. [
  30212. [
  30213. 1,
  30214. 1
  30215. ],
  30216. [
  30217. 1
  30218. ],
  30219. [
  30220. 200,
  30221. 600,
  30222. 500,
  30223. 3,
  30224. 3,
  30225. 1,
  30226. 1
  30227. ]
  30228. ],
  30229. [
  30230. 0,
  30231. "Default",
  30232. 3,
  30233. 1
  30234. ]
  30235. ]
  30236. , [
  30237. [192, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30238. 0,
  30239. 65,
  30240. [
  30241. [0],
  30242. [0],
  30243. [0]
  30244. ],
  30245. [
  30246. [
  30247. 1,
  30248. 1
  30249. ],
  30250. [
  30251. 1
  30252. ],
  30253. [
  30254. 200,
  30255. 600,
  30256. 500,
  30257. 3,
  30258. 3,
  30259. 1,
  30260. 1
  30261. ]
  30262. ],
  30263. [
  30264. 0,
  30265. "Default",
  30266. 3,
  30267. 1
  30268. ]
  30269. ]
  30270. , [
  30271. [320, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  30272. 0,
  30273. 68,
  30274. [
  30275. [0],
  30276. [0],
  30277. [0]
  30278. ],
  30279. [
  30280. [
  30281. 2,
  30282. 1
  30283. ],
  30284. [
  30285. 1
  30286. ],
  30287. [
  30288. 200,
  30289. 600,
  30290. 500,
  30291. 3,
  30292. 3,
  30293. 1,
  30294. 1
  30295. ]
  30296. ],
  30297. [
  30298. 0,
  30299. "Default",
  30300. 0,
  30301. 1
  30302. ]
  30303. ]
  30304. , [
  30305. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30306. 0,
  30307. 77,
  30308. [
  30309. [0],
  30310. [0],
  30311. [0]
  30312. ],
  30313. [
  30314. [
  30315. 1,
  30316. 1
  30317. ],
  30318. [
  30319. 1
  30320. ],
  30321. [
  30322. 200,
  30323. 600,
  30324. 500,
  30325. 3,
  30326. 3,
  30327. 1,
  30328. 1
  30329. ]
  30330. ],
  30331. [
  30332. 0,
  30333. "Default",
  30334. 3,
  30335. 1
  30336. ]
  30337. ]
  30338. , [
  30339. [256, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30340. 0,
  30341. 80,
  30342. [
  30343. [0],
  30344. [0],
  30345. [0]
  30346. ],
  30347. [
  30348. [
  30349. 1,
  30350. 1
  30351. ],
  30352. [
  30353. 1
  30354. ],
  30355. [
  30356. 200,
  30357. 600,
  30358. 500,
  30359. 3,
  30360. 3,
  30361. 1,
  30362. 1
  30363. ]
  30364. ],
  30365. [
  30366. 0,
  30367. "Default",
  30368. 3,
  30369. 1
  30370. ]
  30371. ]
  30372. ],
  30373. [ ]
  30374. ]
  30375. ],
  30376. [
  30377. ],
  30378. []
  30379. ]
  30380. , [
  30381. "level14",
  30382. 384,
  30383. 600,
  30384. false,
  30385. "level",
  30386. 3322475643450141,
  30387. [
  30388. [
  30389. "Layer 0",
  30390. 0,
  30391. 6708914419688653,
  30392. true,
  30393. [44, 44, 44],
  30394. false,
  30395. 1,
  30396. 1,
  30397. 1,
  30398. false,
  30399. 1,
  30400. 0,
  30401. 0,
  30402. [
  30403. [
  30404. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  30405. 3,
  30406. 505,
  30407. [
  30408. ],
  30409. [
  30410. ],
  30411. [
  30412. 0,
  30413. "Default",
  30414. 0,
  30415. 1
  30416. ]
  30417. ]
  30418. , [
  30419. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30420. 0,
  30421. 511,
  30422. [
  30423. [0],
  30424. [0],
  30425. [1]
  30426. ],
  30427. [
  30428. [
  30429. 1,
  30430. 1
  30431. ],
  30432. [
  30433. 1
  30434. ],
  30435. [
  30436. 200,
  30437. 600,
  30438. 500,
  30439. 3,
  30440. 3,
  30441. 1,
  30442. 1
  30443. ]
  30444. ],
  30445. [
  30446. 0,
  30447. "Red",
  30448. 4,
  30449. 1
  30450. ]
  30451. ]
  30452. , [
  30453. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  30454. 2,
  30455. 512,
  30456. [
  30457. ],
  30458. [
  30459. ],
  30460. [
  30461. 0,
  30462. "Default",
  30463. 0,
  30464. 1
  30465. ]
  30466. ]
  30467. , [
  30468. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30469. 1,
  30470. 513,
  30471. [
  30472. ],
  30473. [
  30474. ],
  30475. [
  30476. 1,
  30477. "Default",
  30478. 0,
  30479. 1
  30480. ]
  30481. ]
  30482. , [
  30483. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30484. 1,
  30485. 514,
  30486. [
  30487. ],
  30488. [
  30489. ],
  30490. [
  30491. 1,
  30492. "Default",
  30493. 0,
  30494. 1
  30495. ]
  30496. ]
  30497. , [
  30498. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  30499. 3,
  30500. 515,
  30501. [
  30502. ],
  30503. [
  30504. ],
  30505. [
  30506. 0,
  30507. "Default",
  30508. 2,
  30509. 1
  30510. ]
  30511. ]
  30512. , [
  30513. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  30514. 3,
  30515. 516,
  30516. [
  30517. ],
  30518. [
  30519. ],
  30520. [
  30521. 0,
  30522. "Default",
  30523. 1,
  30524. 1
  30525. ]
  30526. ]
  30527. , [
  30528. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  30529. 4,
  30530. 517,
  30531. [
  30532. [0]
  30533. ],
  30534. [
  30535. [
  30536. 1,
  30537. 0,
  30538. 0,
  30539. 4,
  30540. 0,
  30541. 0,
  30542. 0,
  30543. 50,
  30544. 0
  30545. ]
  30546. ],
  30547. [
  30548. 0,
  30549. "Default",
  30550. 0,
  30551. 1
  30552. ]
  30553. ]
  30554. , [
  30555. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  30556. 4,
  30557. 518,
  30558. [
  30559. [1]
  30560. ],
  30561. [
  30562. [
  30563. 1,
  30564. 0,
  30565. 0,
  30566. 4,
  30567. 0,
  30568. 0,
  30569. 0,
  30570. 50,
  30571. 0
  30572. ]
  30573. ],
  30574. [
  30575. 0,
  30576. "Default",
  30577. 2,
  30578. 1
  30579. ]
  30580. ]
  30581. , [
  30582. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  30583. 4,
  30584. 519,
  30585. [
  30586. [2]
  30587. ],
  30588. [
  30589. [
  30590. 1,
  30591. 0,
  30592. 0,
  30593. 4,
  30594. 0,
  30595. 0,
  30596. 0,
  30597. 50,
  30598. 0
  30599. ]
  30600. ],
  30601. [
  30602. 0,
  30603. "Default",
  30604. 1,
  30605. 1
  30606. ]
  30607. ]
  30608. , [
  30609. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  30610. 5,
  30611. 520,
  30612. [
  30613. [0],
  30614. [0]
  30615. ],
  30616. [
  30617. ],
  30618. [
  30619. 0,
  30620. "Default",
  30621. 0,
  30622. 1
  30623. ]
  30624. ]
  30625. , [
  30626. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30627. 6,
  30628. 521,
  30629. [
  30630. [1]
  30631. ],
  30632. [
  30633. ],
  30634. [
  30635. 29,
  30636. 43,
  30637. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  30638. sg_texts[SG.lang]["BEST:"],
  30639. 1,
  30640. 0,
  30641. 0,
  30642. 0,
  30643. 0,
  30644. 0,
  30645. 0,
  30646. 0
  30647. ]
  30648. ]
  30649. , [
  30650. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30651. 6,
  30652. 522,
  30653. [
  30654. [0]
  30655. ],
  30656. [
  30657. ],
  30658. [
  30659. 29,
  30660. 43,
  30661. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  30662. "MOVE:",
  30663. 1,
  30664. 0,
  30665. 0,
  30666. 0,
  30667. 0,
  30668. 0,
  30669. 0,
  30670. 0
  30671. ]
  30672. ]
  30673. , [
  30674. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30675. 6,
  30676. 523,
  30677. [
  30678. [2]
  30679. ],
  30680. [
  30681. ],
  30682. [
  30683. 29,
  30684. 43,
  30685. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  30686. sg_texts[SG.lang]["LEVEL:"]+" 01",
  30687. 1,
  30688. 0,
  30689. 0,
  30690. 0,
  30691. 0,
  30692. 0,
  30693. 0,
  30694. 0
  30695. ]
  30696. ]
  30697. , [
  30698. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  30699. 4,
  30700. 524,
  30701. [
  30702. [3]
  30703. ],
  30704. [
  30705. [
  30706. 1,
  30707. 0,
  30708. 0,
  30709. 4,
  30710. 0,
  30711. 0,
  30712. 0,
  30713. 50,
  30714. 0
  30715. ]
  30716. ],
  30717. [
  30718. 0,
  30719. "Default",
  30720. 3,
  30721. 1
  30722. ]
  30723. ]
  30724. , [
  30725. [320, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  30726. 0,
  30727. 528,
  30728. [
  30729. [0],
  30730. [0],
  30731. [0]
  30732. ],
  30733. [
  30734. [
  30735. 2,
  30736. 1
  30737. ],
  30738. [
  30739. 1
  30740. ],
  30741. [
  30742. 200,
  30743. 600,
  30744. 500,
  30745. 3,
  30746. 3,
  30747. 1,
  30748. 1
  30749. ]
  30750. ],
  30751. [
  30752. 0,
  30753. "Default",
  30754. 0,
  30755. 1
  30756. ]
  30757. ]
  30758. , [
  30759. [128, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  30760. 0,
  30761. 532,
  30762. [
  30763. [0],
  30764. [0],
  30765. [0]
  30766. ],
  30767. [
  30768. [
  30769. 2,
  30770. 1
  30771. ],
  30772. [
  30773. 1
  30774. ],
  30775. [
  30776. 200,
  30777. 600,
  30778. 500,
  30779. 3,
  30780. 3,
  30781. 1,
  30782. 1
  30783. ]
  30784. ],
  30785. [
  30786. 0,
  30787. "Default",
  30788. 2,
  30789. 1
  30790. ]
  30791. ]
  30792. , [
  30793. [192, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30794. 0,
  30795. 533,
  30796. [
  30797. [0],
  30798. [0],
  30799. [0]
  30800. ],
  30801. [
  30802. [
  30803. 1,
  30804. 1
  30805. ],
  30806. [
  30807. 1
  30808. ],
  30809. [
  30810. 200,
  30811. 600,
  30812. 500,
  30813. 3,
  30814. 3,
  30815. 1,
  30816. 1
  30817. ]
  30818. ],
  30819. [
  30820. 0,
  30821. "Default",
  30822. 3,
  30823. 1
  30824. ]
  30825. ]
  30826. , [
  30827. [192, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  30828. 0,
  30829. 535,
  30830. [
  30831. [0],
  30832. [0],
  30833. [0]
  30834. ],
  30835. [
  30836. [
  30837. 2,
  30838. 1
  30839. ],
  30840. [
  30841. 1
  30842. ],
  30843. [
  30844. 200,
  30845. 600,
  30846. 500,
  30847. 3,
  30848. 3,
  30849. 1,
  30850. 1
  30851. ]
  30852. ],
  30853. [
  30854. 0,
  30855. "Default",
  30856. 2,
  30857. 1
  30858. ]
  30859. ]
  30860. , [
  30861. [0, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  30862. 0,
  30863. 537,
  30864. [
  30865. [0],
  30866. [0],
  30867. [0]
  30868. ],
  30869. [
  30870. [
  30871. 2,
  30872. 1
  30873. ],
  30874. [
  30875. 1
  30876. ],
  30877. [
  30878. 200,
  30879. 600,
  30880. 500,
  30881. 3,
  30882. 3,
  30883. 1,
  30884. 1
  30885. ]
  30886. ],
  30887. [
  30888. 0,
  30889. "Default",
  30890. 2,
  30891. 1
  30892. ]
  30893. ]
  30894. , [
  30895. [256, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  30896. 0,
  30897. 558,
  30898. [
  30899. [0],
  30900. [0],
  30901. [0]
  30902. ],
  30903. [
  30904. [
  30905. 2,
  30906. 1
  30907. ],
  30908. [
  30909. 1
  30910. ],
  30911. [
  30912. 200,
  30913. 600,
  30914. 500,
  30915. 3,
  30916. 3,
  30917. 1,
  30918. 1
  30919. ]
  30920. ],
  30921. [
  30922. 0,
  30923. "Default",
  30924. 0,
  30925. 1
  30926. ]
  30927. ]
  30928. , [
  30929. [64, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  30930. 0,
  30931. 559,
  30932. [
  30933. [0],
  30934. [0],
  30935. [0]
  30936. ],
  30937. [
  30938. [
  30939. 1,
  30940. 1
  30941. ],
  30942. [
  30943. 1
  30944. ],
  30945. [
  30946. 200,
  30947. 600,
  30948. 500,
  30949. 3,
  30950. 3,
  30951. 1,
  30952. 1
  30953. ]
  30954. ],
  30955. [
  30956. 0,
  30957. "Default",
  30958. 3,
  30959. 1
  30960. ]
  30961. ]
  30962. , [
  30963. [0, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  30964. 0,
  30965. 560,
  30966. [
  30967. [0],
  30968. [0],
  30969. [0]
  30970. ],
  30971. [
  30972. [
  30973. 2,
  30974. 1
  30975. ],
  30976. [
  30977. 1
  30978. ],
  30979. [
  30980. 200,
  30981. 600,
  30982. 500,
  30983. 3,
  30984. 3,
  30985. 1,
  30986. 1
  30987. ]
  30988. ],
  30989. [
  30990. 0,
  30991. "Default",
  30992. 2,
  30993. 1
  30994. ]
  30995. ]
  30996. , [
  30997. [64, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  30998. 0,
  30999. 561,
  31000. [
  31001. [0],
  31002. [0],
  31003. [0]
  31004. ],
  31005. [
  31006. [
  31007. 2,
  31008. 1
  31009. ],
  31010. [
  31011. 1
  31012. ],
  31013. [
  31014. 200,
  31015. 600,
  31016. 500,
  31017. 3,
  31018. 3,
  31019. 1,
  31020. 1
  31021. ]
  31022. ],
  31023. [
  31024. 0,
  31025. "Default",
  31026. 0,
  31027. 1
  31028. ]
  31029. ]
  31030. , [
  31031. [0, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31032. 0,
  31033. 562,
  31034. [
  31035. [0],
  31036. [0],
  31037. [0]
  31038. ],
  31039. [
  31040. [
  31041. 1,
  31042. 1
  31043. ],
  31044. [
  31045. 1
  31046. ],
  31047. [
  31048. 200,
  31049. 600,
  31050. 500,
  31051. 3,
  31052. 3,
  31053. 1,
  31054. 1
  31055. ]
  31056. ],
  31057. [
  31058. 0,
  31059. "Default",
  31060. 3,
  31061. 1
  31062. ]
  31063. ]
  31064. , [
  31065. [0, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31066. 0,
  31067. 563,
  31068. [
  31069. [0],
  31070. [0],
  31071. [0]
  31072. ],
  31073. [
  31074. [
  31075. 1,
  31076. 1
  31077. ],
  31078. [
  31079. 1
  31080. ],
  31081. [
  31082. 200,
  31083. 600,
  31084. 500,
  31085. 3,
  31086. 3,
  31087. 1,
  31088. 1
  31089. ]
  31090. ],
  31091. [
  31092. 0,
  31093. "Default",
  31094. 3,
  31095. 1
  31096. ]
  31097. ]
  31098. , [
  31099. [128, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31100. 0,
  31101. 564,
  31102. [
  31103. [0],
  31104. [0],
  31105. [0]
  31106. ],
  31107. [
  31108. [
  31109. 1,
  31110. 1
  31111. ],
  31112. [
  31113. 1
  31114. ],
  31115. [
  31116. 200,
  31117. 600,
  31118. 500,
  31119. 3,
  31120. 3,
  31121. 1,
  31122. 1
  31123. ]
  31124. ],
  31125. [
  31126. 0,
  31127. "Default",
  31128. 3,
  31129. 1
  31130. ]
  31131. ]
  31132. ],
  31133. [ ]
  31134. ]
  31135. ],
  31136. [
  31137. ],
  31138. []
  31139. ]
  31140. , [
  31141. "level15",
  31142. 384,
  31143. 600,
  31144. false,
  31145. "level",
  31146. 2156527214536673,
  31147. [
  31148. [
  31149. "Layer 0",
  31150. 0,
  31151. 4762970266213339,
  31152. true,
  31153. [44, 44, 44],
  31154. false,
  31155. 1,
  31156. 1,
  31157. 1,
  31158. false,
  31159. 1,
  31160. 0,
  31161. 0,
  31162. [
  31163. [
  31164. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  31165. 3,
  31166. 525,
  31167. [
  31168. ],
  31169. [
  31170. ],
  31171. [
  31172. 0,
  31173. "Default",
  31174. 0,
  31175. 1
  31176. ]
  31177. ]
  31178. , [
  31179. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31180. 0,
  31181. 527,
  31182. [
  31183. [0],
  31184. [0],
  31185. [1]
  31186. ],
  31187. [
  31188. [
  31189. 1,
  31190. 1
  31191. ],
  31192. [
  31193. 1
  31194. ],
  31195. [
  31196. 200,
  31197. 600,
  31198. 500,
  31199. 3,
  31200. 3,
  31201. 1,
  31202. 1
  31203. ]
  31204. ],
  31205. [
  31206. 0,
  31207. "Red",
  31208. 4,
  31209. 1
  31210. ]
  31211. ]
  31212. , [
  31213. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  31214. 2,
  31215. 530,
  31216. [
  31217. ],
  31218. [
  31219. ],
  31220. [
  31221. 0,
  31222. "Default",
  31223. 0,
  31224. 1
  31225. ]
  31226. ]
  31227. , [
  31228. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31229. 1,
  31230. 531,
  31231. [
  31232. ],
  31233. [
  31234. ],
  31235. [
  31236. 1,
  31237. "Default",
  31238. 0,
  31239. 1
  31240. ]
  31241. ]
  31242. , [
  31243. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31244. 1,
  31245. 538,
  31246. [
  31247. ],
  31248. [
  31249. ],
  31250. [
  31251. 1,
  31252. "Default",
  31253. 0,
  31254. 1
  31255. ]
  31256. ]
  31257. , [
  31258. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  31259. 3,
  31260. 539,
  31261. [
  31262. ],
  31263. [
  31264. ],
  31265. [
  31266. 0,
  31267. "Default",
  31268. 2,
  31269. 1
  31270. ]
  31271. ]
  31272. , [
  31273. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  31274. 3,
  31275. 540,
  31276. [
  31277. ],
  31278. [
  31279. ],
  31280. [
  31281. 0,
  31282. "Default",
  31283. 1,
  31284. 1
  31285. ]
  31286. ]
  31287. , [
  31288. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  31289. 4,
  31290. 541,
  31291. [
  31292. [0]
  31293. ],
  31294. [
  31295. [
  31296. 1,
  31297. 0,
  31298. 0,
  31299. 4,
  31300. 0,
  31301. 0,
  31302. 0,
  31303. 50,
  31304. 0
  31305. ]
  31306. ],
  31307. [
  31308. 0,
  31309. "Default",
  31310. 0,
  31311. 1
  31312. ]
  31313. ]
  31314. , [
  31315. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  31316. 4,
  31317. 542,
  31318. [
  31319. [1]
  31320. ],
  31321. [
  31322. [
  31323. 1,
  31324. 0,
  31325. 0,
  31326. 4,
  31327. 0,
  31328. 0,
  31329. 0,
  31330. 50,
  31331. 0
  31332. ]
  31333. ],
  31334. [
  31335. 0,
  31336. "Default",
  31337. 2,
  31338. 1
  31339. ]
  31340. ]
  31341. , [
  31342. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  31343. 4,
  31344. 543,
  31345. [
  31346. [2]
  31347. ],
  31348. [
  31349. [
  31350. 1,
  31351. 0,
  31352. 0,
  31353. 4,
  31354. 0,
  31355. 0,
  31356. 0,
  31357. 50,
  31358. 0
  31359. ]
  31360. ],
  31361. [
  31362. 0,
  31363. "Default",
  31364. 1,
  31365. 1
  31366. ]
  31367. ]
  31368. , [
  31369. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  31370. 5,
  31371. 544,
  31372. [
  31373. [0],
  31374. [0]
  31375. ],
  31376. [
  31377. ],
  31378. [
  31379. 0,
  31380. "Default",
  31381. 0,
  31382. 1
  31383. ]
  31384. ]
  31385. , [
  31386. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31387. 6,
  31388. 545,
  31389. [
  31390. [1]
  31391. ],
  31392. [
  31393. ],
  31394. [
  31395. 29,
  31396. 43,
  31397. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  31398. sg_texts[SG.lang]["BEST:"],
  31399. 1,
  31400. 0,
  31401. 0,
  31402. 0,
  31403. 0,
  31404. 0,
  31405. 0,
  31406. 0
  31407. ]
  31408. ]
  31409. , [
  31410. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31411. 6,
  31412. 546,
  31413. [
  31414. [0]
  31415. ],
  31416. [
  31417. ],
  31418. [
  31419. 29,
  31420. 43,
  31421. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  31422. "MOVE:",
  31423. 1,
  31424. 0,
  31425. 0,
  31426. 0,
  31427. 0,
  31428. 0,
  31429. 0,
  31430. 0
  31431. ]
  31432. ]
  31433. , [
  31434. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31435. 6,
  31436. 547,
  31437. [
  31438. [2]
  31439. ],
  31440. [
  31441. ],
  31442. [
  31443. 29,
  31444. 43,
  31445. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  31446. sg_texts[SG.lang]["LEVEL:"]+" 01",
  31447. 1,
  31448. 0,
  31449. 0,
  31450. 0,
  31451. 0,
  31452. 0,
  31453. 0,
  31454. 0
  31455. ]
  31456. ]
  31457. , [
  31458. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  31459. 4,
  31460. 548,
  31461. [
  31462. [3]
  31463. ],
  31464. [
  31465. [
  31466. 1,
  31467. 0,
  31468. 0,
  31469. 4,
  31470. 0,
  31471. 0,
  31472. 0,
  31473. 50,
  31474. 0
  31475. ]
  31476. ],
  31477. [
  31478. 0,
  31479. "Default",
  31480. 3,
  31481. 1
  31482. ]
  31483. ]
  31484. , [
  31485. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  31486. 0,
  31487. 549,
  31488. [
  31489. [0],
  31490. [0],
  31491. [0]
  31492. ],
  31493. [
  31494. [
  31495. 2,
  31496. 1
  31497. ],
  31498. [
  31499. 1
  31500. ],
  31501. [
  31502. 200,
  31503. 600,
  31504. 500,
  31505. 3,
  31506. 3,
  31507. 1,
  31508. 1
  31509. ]
  31510. ],
  31511. [
  31512. 0,
  31513. "Default",
  31514. 2,
  31515. 1
  31516. ]
  31517. ]
  31518. , [
  31519. [256, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  31520. 0,
  31521. 550,
  31522. [
  31523. [0],
  31524. [0],
  31525. [0]
  31526. ],
  31527. [
  31528. [
  31529. 2,
  31530. 1
  31531. ],
  31532. [
  31533. 1
  31534. ],
  31535. [
  31536. 200,
  31537. 600,
  31538. 500,
  31539. 3,
  31540. 3,
  31541. 1,
  31542. 1
  31543. ]
  31544. ],
  31545. [
  31546. 0,
  31547. "Default",
  31548. 0,
  31549. 1
  31550. ]
  31551. ]
  31552. , [
  31553. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  31554. 0,
  31555. 551,
  31556. [
  31557. [0],
  31558. [0],
  31559. [0]
  31560. ],
  31561. [
  31562. [
  31563. 2,
  31564. 1
  31565. ],
  31566. [
  31567. 1
  31568. ],
  31569. [
  31570. 200,
  31571. 600,
  31572. 500,
  31573. 3,
  31574. 3,
  31575. 1,
  31576. 1
  31577. ]
  31578. ],
  31579. [
  31580. 0,
  31581. "Default",
  31582. 2,
  31583. 1
  31584. ]
  31585. ]
  31586. , [
  31587. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  31588. 0,
  31589. 552,
  31590. [
  31591. [0],
  31592. [0],
  31593. [0]
  31594. ],
  31595. [
  31596. [
  31597. 2,
  31598. 1
  31599. ],
  31600. [
  31601. 1
  31602. ],
  31603. [
  31604. 200,
  31605. 600,
  31606. 500,
  31607. 3,
  31608. 3,
  31609. 1,
  31610. 1
  31611. ]
  31612. ],
  31613. [
  31614. 0,
  31615. "Default",
  31616. 2,
  31617. 1
  31618. ]
  31619. ]
  31620. , [
  31621. [256, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31622. 0,
  31623. 553,
  31624. [
  31625. [0],
  31626. [0],
  31627. [0]
  31628. ],
  31629. [
  31630. [
  31631. 1,
  31632. 1
  31633. ],
  31634. [
  31635. 1
  31636. ],
  31637. [
  31638. 200,
  31639. 600,
  31640. 500,
  31641. 3,
  31642. 3,
  31643. 1,
  31644. 1
  31645. ]
  31646. ],
  31647. [
  31648. 0,
  31649. "Default",
  31650. 3,
  31651. 1
  31652. ]
  31653. ]
  31654. , [
  31655. [128, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31656. 0,
  31657. 554,
  31658. [
  31659. [0],
  31660. [0],
  31661. [0]
  31662. ],
  31663. [
  31664. [
  31665. 1,
  31666. 1
  31667. ],
  31668. [
  31669. 1
  31670. ],
  31671. [
  31672. 200,
  31673. 600,
  31674. 500,
  31675. 3,
  31676. 3,
  31677. 1,
  31678. 1
  31679. ]
  31680. ],
  31681. [
  31682. 0,
  31683. "Default",
  31684. 1,
  31685. 1
  31686. ]
  31687. ]
  31688. , [
  31689. [192, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  31690. 0,
  31691. 555,
  31692. [
  31693. [0],
  31694. [0],
  31695. [0]
  31696. ],
  31697. [
  31698. [
  31699. 2,
  31700. 1
  31701. ],
  31702. [
  31703. 1
  31704. ],
  31705. [
  31706. 200,
  31707. 600,
  31708. 500,
  31709. 3,
  31710. 3,
  31711. 1,
  31712. 1
  31713. ]
  31714. ],
  31715. [
  31716. 0,
  31717. "Default",
  31718. 2,
  31719. 1
  31720. ]
  31721. ]
  31722. , [
  31723. [64, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31724. 0,
  31725. 556,
  31726. [
  31727. [0],
  31728. [0],
  31729. [0]
  31730. ],
  31731. [
  31732. [
  31733. 1,
  31734. 1
  31735. ],
  31736. [
  31737. 1
  31738. ],
  31739. [
  31740. 200,
  31741. 600,
  31742. 500,
  31743. 3,
  31744. 3,
  31745. 1,
  31746. 1
  31747. ]
  31748. ],
  31749. [
  31750. 0,
  31751. "Default",
  31752. 1,
  31753. 1
  31754. ]
  31755. ]
  31756. , [
  31757. [0, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  31758. 0,
  31759. 557,
  31760. [
  31761. [0],
  31762. [0],
  31763. [0]
  31764. ],
  31765. [
  31766. [
  31767. 2,
  31768. 1
  31769. ],
  31770. [
  31771. 1
  31772. ],
  31773. [
  31774. 200,
  31775. 600,
  31776. 500,
  31777. 3,
  31778. 3,
  31779. 1,
  31780. 1
  31781. ]
  31782. ],
  31783. [
  31784. 0,
  31785. "Default",
  31786. 2,
  31787. 1
  31788. ]
  31789. ]
  31790. ],
  31791. [ ]
  31792. ]
  31793. ],
  31794. [
  31795. ],
  31796. []
  31797. ]
  31798. , [
  31799. "level16",
  31800. 384,
  31801. 600,
  31802. false,
  31803. "level",
  31804. 8283100192806072,
  31805. [
  31806. [
  31807. "Layer 0",
  31808. 0,
  31809. 2619244248760458,
  31810. true,
  31811. [44, 44, 44],
  31812. false,
  31813. 1,
  31814. 1,
  31815. 1,
  31816. false,
  31817. 1,
  31818. 0,
  31819. 0,
  31820. [
  31821. [
  31822. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  31823. 3,
  31824. 526,
  31825. [
  31826. ],
  31827. [
  31828. ],
  31829. [
  31830. 0,
  31831. "Default",
  31832. 0,
  31833. 1
  31834. ]
  31835. ]
  31836. , [
  31837. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31838. 0,
  31839. 529,
  31840. [
  31841. [0],
  31842. [0],
  31843. [1]
  31844. ],
  31845. [
  31846. [
  31847. 1,
  31848. 1
  31849. ],
  31850. [
  31851. 1
  31852. ],
  31853. [
  31854. 200,
  31855. 600,
  31856. 500,
  31857. 3,
  31858. 3,
  31859. 1,
  31860. 1
  31861. ]
  31862. ],
  31863. [
  31864. 0,
  31865. "Red",
  31866. 4,
  31867. 1
  31868. ]
  31869. ]
  31870. , [
  31871. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  31872. 2,
  31873. 534,
  31874. [
  31875. ],
  31876. [
  31877. ],
  31878. [
  31879. 0,
  31880. "Default",
  31881. 0,
  31882. 1
  31883. ]
  31884. ]
  31885. , [
  31886. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31887. 1,
  31888. 536,
  31889. [
  31890. ],
  31891. [
  31892. ],
  31893. [
  31894. 1,
  31895. "Default",
  31896. 0,
  31897. 1
  31898. ]
  31899. ]
  31900. , [
  31901. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  31902. 1,
  31903. 565,
  31904. [
  31905. ],
  31906. [
  31907. ],
  31908. [
  31909. 1,
  31910. "Default",
  31911. 0,
  31912. 1
  31913. ]
  31914. ]
  31915. , [
  31916. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  31917. 3,
  31918. 566,
  31919. [
  31920. ],
  31921. [
  31922. ],
  31923. [
  31924. 0,
  31925. "Default",
  31926. 2,
  31927. 1
  31928. ]
  31929. ]
  31930. , [
  31931. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  31932. 3,
  31933. 567,
  31934. [
  31935. ],
  31936. [
  31937. ],
  31938. [
  31939. 0,
  31940. "Default",
  31941. 1,
  31942. 1
  31943. ]
  31944. ]
  31945. , [
  31946. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  31947. 4,
  31948. 568,
  31949. [
  31950. [0]
  31951. ],
  31952. [
  31953. [
  31954. 1,
  31955. 0,
  31956. 0,
  31957. 4,
  31958. 0,
  31959. 0,
  31960. 0,
  31961. 50,
  31962. 0
  31963. ]
  31964. ],
  31965. [
  31966. 0,
  31967. "Default",
  31968. 0,
  31969. 1
  31970. ]
  31971. ]
  31972. , [
  31973. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  31974. 4,
  31975. 569,
  31976. [
  31977. [1]
  31978. ],
  31979. [
  31980. [
  31981. 1,
  31982. 0,
  31983. 0,
  31984. 4,
  31985. 0,
  31986. 0,
  31987. 0,
  31988. 50,
  31989. 0
  31990. ]
  31991. ],
  31992. [
  31993. 0,
  31994. "Default",
  31995. 2,
  31996. 1
  31997. ]
  31998. ]
  31999. , [
  32000. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  32001. 4,
  32002. 570,
  32003. [
  32004. [2]
  32005. ],
  32006. [
  32007. [
  32008. 1,
  32009. 0,
  32010. 0,
  32011. 4,
  32012. 0,
  32013. 0,
  32014. 0,
  32015. 50,
  32016. 0
  32017. ]
  32018. ],
  32019. [
  32020. 0,
  32021. "Default",
  32022. 1,
  32023. 1
  32024. ]
  32025. ]
  32026. , [
  32027. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  32028. 5,
  32029. 571,
  32030. [
  32031. [0],
  32032. [0]
  32033. ],
  32034. [
  32035. ],
  32036. [
  32037. 0,
  32038. "Default",
  32039. 0,
  32040. 1
  32041. ]
  32042. ]
  32043. , [
  32044. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32045. 6,
  32046. 572,
  32047. [
  32048. [1]
  32049. ],
  32050. [
  32051. ],
  32052. [
  32053. 29,
  32054. 43,
  32055. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  32056. sg_texts[SG.lang]["BEST:"],
  32057. 1,
  32058. 0,
  32059. 0,
  32060. 0,
  32061. 0,
  32062. 0,
  32063. 0,
  32064. 0
  32065. ]
  32066. ]
  32067. , [
  32068. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32069. 6,
  32070. 573,
  32071. [
  32072. [0]
  32073. ],
  32074. [
  32075. ],
  32076. [
  32077. 29,
  32078. 43,
  32079. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  32080. "MOVE:",
  32081. 1,
  32082. 0,
  32083. 0,
  32084. 0,
  32085. 0,
  32086. 0,
  32087. 0,
  32088. 0
  32089. ]
  32090. ]
  32091. , [
  32092. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32093. 6,
  32094. 574,
  32095. [
  32096. [2]
  32097. ],
  32098. [
  32099. ],
  32100. [
  32101. 29,
  32102. 43,
  32103. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  32104. sg_texts[SG.lang]["LEVEL:"]+" 01",
  32105. 1,
  32106. 0,
  32107. 0,
  32108. 0,
  32109. 0,
  32110. 0,
  32111. 0,
  32112. 0
  32113. ]
  32114. ]
  32115. , [
  32116. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  32117. 4,
  32118. 575,
  32119. [
  32120. [3]
  32121. ],
  32122. [
  32123. [
  32124. 1,
  32125. 0,
  32126. 0,
  32127. 4,
  32128. 0,
  32129. 0,
  32130. 0,
  32131. 50,
  32132. 0
  32133. ]
  32134. ],
  32135. [
  32136. 0,
  32137. "Default",
  32138. 3,
  32139. 1
  32140. ]
  32141. ]
  32142. , [
  32143. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  32144. 0,
  32145. 576,
  32146. [
  32147. [0],
  32148. [0],
  32149. [0]
  32150. ],
  32151. [
  32152. [
  32153. 2,
  32154. 1
  32155. ],
  32156. [
  32157. 1
  32158. ],
  32159. [
  32160. 200,
  32161. 600,
  32162. 500,
  32163. 3,
  32164. 3,
  32165. 1,
  32166. 1
  32167. ]
  32168. ],
  32169. [
  32170. 0,
  32171. "Default",
  32172. 2,
  32173. 1
  32174. ]
  32175. ]
  32176. , [
  32177. [192, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  32178. 0,
  32179. 577,
  32180. [
  32181. [0],
  32182. [0],
  32183. [0]
  32184. ],
  32185. [
  32186. [
  32187. 2,
  32188. 1
  32189. ],
  32190. [
  32191. 1
  32192. ],
  32193. [
  32194. 200,
  32195. 600,
  32196. 500,
  32197. 3,
  32198. 3,
  32199. 1,
  32200. 1
  32201. ]
  32202. ],
  32203. [
  32204. 0,
  32205. "Default",
  32206. 0,
  32207. 1
  32208. ]
  32209. ]
  32210. , [
  32211. [64, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32212. 0,
  32213. 580,
  32214. [
  32215. [0],
  32216. [0],
  32217. [0]
  32218. ],
  32219. [
  32220. [
  32221. 1,
  32222. 1
  32223. ],
  32224. [
  32225. 1
  32226. ],
  32227. [
  32228. 200,
  32229. 600,
  32230. 500,
  32231. 3,
  32232. 3,
  32233. 1,
  32234. 1
  32235. ]
  32236. ],
  32237. [
  32238. 0,
  32239. "Default",
  32240. 3,
  32241. 1
  32242. ]
  32243. ]
  32244. , [
  32245. [64, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32246. 0,
  32247. 581,
  32248. [
  32249. [0],
  32250. [0],
  32251. [0]
  32252. ],
  32253. [
  32254. [
  32255. 1,
  32256. 1
  32257. ],
  32258. [
  32259. 1
  32260. ],
  32261. [
  32262. 200,
  32263. 600,
  32264. 500,
  32265. 3,
  32266. 3,
  32267. 1,
  32268. 1
  32269. ]
  32270. ],
  32271. [
  32272. 0,
  32273. "Default",
  32274. 1,
  32275. 1
  32276. ]
  32277. ]
  32278. , [
  32279. [192, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32280. 0,
  32281. 585,
  32282. [
  32283. [0],
  32284. [0],
  32285. [0]
  32286. ],
  32287. [
  32288. [
  32289. 1,
  32290. 1
  32291. ],
  32292. [
  32293. 1
  32294. ],
  32295. [
  32296. 200,
  32297. 600,
  32298. 500,
  32299. 3,
  32300. 3,
  32301. 1,
  32302. 1
  32303. ]
  32304. ],
  32305. [
  32306. 0,
  32307. "Default",
  32308. 3,
  32309. 1
  32310. ]
  32311. ]
  32312. , [
  32313. [256, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32314. 0,
  32315. 586,
  32316. [
  32317. [0],
  32318. [0],
  32319. [0]
  32320. ],
  32321. [
  32322. [
  32323. 1,
  32324. 1
  32325. ],
  32326. [
  32327. 1
  32328. ],
  32329. [
  32330. 200,
  32331. 600,
  32332. 500,
  32333. 3,
  32334. 3,
  32335. 1,
  32336. 1
  32337. ]
  32338. ],
  32339. [
  32340. 0,
  32341. "Default",
  32342. 3,
  32343. 1
  32344. ]
  32345. ]
  32346. , [
  32347. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  32348. 0,
  32349. 587,
  32350. [
  32351. [0],
  32352. [0],
  32353. [0]
  32354. ],
  32355. [
  32356. [
  32357. 2,
  32358. 1
  32359. ],
  32360. [
  32361. 1
  32362. ],
  32363. [
  32364. 200,
  32365. 600,
  32366. 500,
  32367. 3,
  32368. 3,
  32369. 1,
  32370. 1
  32371. ]
  32372. ],
  32373. [
  32374. 0,
  32375. "Default",
  32376. 2,
  32377. 1
  32378. ]
  32379. ]
  32380. , [
  32381. [256, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  32382. 0,
  32383. 588,
  32384. [
  32385. [0],
  32386. [0],
  32387. [0]
  32388. ],
  32389. [
  32390. [
  32391. 2,
  32392. 1
  32393. ],
  32394. [
  32395. 1
  32396. ],
  32397. [
  32398. 200,
  32399. 600,
  32400. 500,
  32401. 3,
  32402. 3,
  32403. 1,
  32404. 1
  32405. ]
  32406. ],
  32407. [
  32408. 0,
  32409. "Default",
  32410. 0,
  32411. 1
  32412. ]
  32413. ]
  32414. , [
  32415. [128, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32416. 0,
  32417. 589,
  32418. [
  32419. [0],
  32420. [0],
  32421. [0]
  32422. ],
  32423. [
  32424. [
  32425. 1,
  32426. 1
  32427. ],
  32428. [
  32429. 1
  32430. ],
  32431. [
  32432. 200,
  32433. 600,
  32434. 500,
  32435. 3,
  32436. 3,
  32437. 1,
  32438. 1
  32439. ]
  32440. ],
  32441. [
  32442. 0,
  32443. "Default",
  32444. 3,
  32445. 1
  32446. ]
  32447. ]
  32448. ],
  32449. [ ]
  32450. ]
  32451. ],
  32452. [
  32453. ],
  32454. []
  32455. ]
  32456. , [
  32457. "level17",
  32458. 384,
  32459. 600,
  32460. false,
  32461. "level",
  32462. 9403491072259197,
  32463. [
  32464. [
  32465. "Layer 0",
  32466. 0,
  32467. 2390209795771159,
  32468. true,
  32469. [44, 44, 44],
  32470. false,
  32471. 1,
  32472. 1,
  32473. 1,
  32474. false,
  32475. 1,
  32476. 0,
  32477. 0,
  32478. [
  32479. [
  32480. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  32481. 3,
  32482. 578,
  32483. [
  32484. ],
  32485. [
  32486. ],
  32487. [
  32488. 0,
  32489. "Default",
  32490. 0,
  32491. 1
  32492. ]
  32493. ]
  32494. , [
  32495. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32496. 0,
  32497. 579,
  32498. [
  32499. [0],
  32500. [0],
  32501. [1]
  32502. ],
  32503. [
  32504. [
  32505. 1,
  32506. 1
  32507. ],
  32508. [
  32509. 1
  32510. ],
  32511. [
  32512. 200,
  32513. 600,
  32514. 500,
  32515. 3,
  32516. 3,
  32517. 1,
  32518. 1
  32519. ]
  32520. ],
  32521. [
  32522. 0,
  32523. "Red",
  32524. 4,
  32525. 1
  32526. ]
  32527. ]
  32528. , [
  32529. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  32530. 2,
  32531. 582,
  32532. [
  32533. ],
  32534. [
  32535. ],
  32536. [
  32537. 0,
  32538. "Default",
  32539. 0,
  32540. 1
  32541. ]
  32542. ]
  32543. , [
  32544. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32545. 1,
  32546. 583,
  32547. [
  32548. ],
  32549. [
  32550. ],
  32551. [
  32552. 1,
  32553. "Default",
  32554. 0,
  32555. 1
  32556. ]
  32557. ]
  32558. , [
  32559. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32560. 1,
  32561. 584,
  32562. [
  32563. ],
  32564. [
  32565. ],
  32566. [
  32567. 1,
  32568. "Default",
  32569. 0,
  32570. 1
  32571. ]
  32572. ]
  32573. , [
  32574. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  32575. 3,
  32576. 590,
  32577. [
  32578. ],
  32579. [
  32580. ],
  32581. [
  32582. 0,
  32583. "Default",
  32584. 2,
  32585. 1
  32586. ]
  32587. ]
  32588. , [
  32589. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  32590. 3,
  32591. 591,
  32592. [
  32593. ],
  32594. [
  32595. ],
  32596. [
  32597. 0,
  32598. "Default",
  32599. 1,
  32600. 1
  32601. ]
  32602. ]
  32603. , [
  32604. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  32605. 4,
  32606. 592,
  32607. [
  32608. [0]
  32609. ],
  32610. [
  32611. [
  32612. 1,
  32613. 0,
  32614. 0,
  32615. 4,
  32616. 0,
  32617. 0,
  32618. 0,
  32619. 50,
  32620. 0
  32621. ]
  32622. ],
  32623. [
  32624. 0,
  32625. "Default",
  32626. 0,
  32627. 1
  32628. ]
  32629. ]
  32630. , [
  32631. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  32632. 4,
  32633. 593,
  32634. [
  32635. [1]
  32636. ],
  32637. [
  32638. [
  32639. 1,
  32640. 0,
  32641. 0,
  32642. 4,
  32643. 0,
  32644. 0,
  32645. 0,
  32646. 50,
  32647. 0
  32648. ]
  32649. ],
  32650. [
  32651. 0,
  32652. "Default",
  32653. 2,
  32654. 1
  32655. ]
  32656. ]
  32657. , [
  32658. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  32659. 4,
  32660. 594,
  32661. [
  32662. [2]
  32663. ],
  32664. [
  32665. [
  32666. 1,
  32667. 0,
  32668. 0,
  32669. 4,
  32670. 0,
  32671. 0,
  32672. 0,
  32673. 50,
  32674. 0
  32675. ]
  32676. ],
  32677. [
  32678. 0,
  32679. "Default",
  32680. 1,
  32681. 1
  32682. ]
  32683. ]
  32684. , [
  32685. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  32686. 5,
  32687. 595,
  32688. [
  32689. [0],
  32690. [0]
  32691. ],
  32692. [
  32693. ],
  32694. [
  32695. 0,
  32696. "Default",
  32697. 0,
  32698. 1
  32699. ]
  32700. ]
  32701. , [
  32702. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32703. 6,
  32704. 596,
  32705. [
  32706. [1]
  32707. ],
  32708. [
  32709. ],
  32710. [
  32711. 29,
  32712. 43,
  32713. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  32714. sg_texts[SG.lang]["BEST:"],
  32715. 1,
  32716. 0,
  32717. 0,
  32718. 0,
  32719. 0,
  32720. 0,
  32721. 0,
  32722. 0
  32723. ]
  32724. ]
  32725. , [
  32726. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32727. 6,
  32728. 597,
  32729. [
  32730. [0]
  32731. ],
  32732. [
  32733. ],
  32734. [
  32735. 29,
  32736. 43,
  32737. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  32738. "MOVE:",
  32739. 1,
  32740. 0,
  32741. 0,
  32742. 0,
  32743. 0,
  32744. 0,
  32745. 0,
  32746. 0
  32747. ]
  32748. ]
  32749. , [
  32750. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32751. 6,
  32752. 598,
  32753. [
  32754. [2]
  32755. ],
  32756. [
  32757. ],
  32758. [
  32759. 29,
  32760. 43,
  32761. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  32762. sg_texts[SG.lang]["LEVEL:"]+" 01",
  32763. 1,
  32764. 0,
  32765. 0,
  32766. 0,
  32767. 0,
  32768. 0,
  32769. 0,
  32770. 0
  32771. ]
  32772. ]
  32773. , [
  32774. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  32775. 4,
  32776. 599,
  32777. [
  32778. [3]
  32779. ],
  32780. [
  32781. [
  32782. 1,
  32783. 0,
  32784. 0,
  32785. 4,
  32786. 0,
  32787. 0,
  32788. 0,
  32789. 50,
  32790. 0
  32791. ]
  32792. ],
  32793. [
  32794. 0,
  32795. "Default",
  32796. 3,
  32797. 1
  32798. ]
  32799. ]
  32800. , [
  32801. [0, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  32802. 0,
  32803. 600,
  32804. [
  32805. [0],
  32806. [0],
  32807. [0]
  32808. ],
  32809. [
  32810. [
  32811. 2,
  32812. 1
  32813. ],
  32814. [
  32815. 1
  32816. ],
  32817. [
  32818. 200,
  32819. 600,
  32820. 500,
  32821. 3,
  32822. 3,
  32823. 1,
  32824. 1
  32825. ]
  32826. ],
  32827. [
  32828. 0,
  32829. "Default",
  32830. 2,
  32831. 1
  32832. ]
  32833. ]
  32834. , [
  32835. [0, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32836. 0,
  32837. 603,
  32838. [
  32839. [0],
  32840. [0],
  32841. [0]
  32842. ],
  32843. [
  32844. [
  32845. 1,
  32846. 1
  32847. ],
  32848. [
  32849. 1
  32850. ],
  32851. [
  32852. 200,
  32853. 600,
  32854. 500,
  32855. 3,
  32856. 3,
  32857. 1,
  32858. 1
  32859. ]
  32860. ],
  32861. [
  32862. 0,
  32863. "Default",
  32864. 1,
  32865. 1
  32866. ]
  32867. ]
  32868. , [
  32869. [192, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32870. 0,
  32871. 605,
  32872. [
  32873. [0],
  32874. [0],
  32875. [0]
  32876. ],
  32877. [
  32878. [
  32879. 1,
  32880. 1
  32881. ],
  32882. [
  32883. 1
  32884. ],
  32885. [
  32886. 200,
  32887. 600,
  32888. 500,
  32889. 3,
  32890. 3,
  32891. 1,
  32892. 1
  32893. ]
  32894. ],
  32895. [
  32896. 0,
  32897. "Default",
  32898. 3,
  32899. 1
  32900. ]
  32901. ]
  32902. , [
  32903. [64, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  32904. 0,
  32905. 606,
  32906. [
  32907. [0],
  32908. [0],
  32909. [0]
  32910. ],
  32911. [
  32912. [
  32913. 2,
  32914. 1
  32915. ],
  32916. [
  32917. 1
  32918. ],
  32919. [
  32920. 200,
  32921. 600,
  32922. 500,
  32923. 3,
  32924. 3,
  32925. 1,
  32926. 1
  32927. ]
  32928. ],
  32929. [
  32930. 0,
  32931. "Default",
  32932. 2,
  32933. 1
  32934. ]
  32935. ]
  32936. , [
  32937. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  32938. 0,
  32939. 608,
  32940. [
  32941. [0],
  32942. [0],
  32943. [0]
  32944. ],
  32945. [
  32946. [
  32947. 1,
  32948. 1
  32949. ],
  32950. [
  32951. 1
  32952. ],
  32953. [
  32954. 200,
  32955. 600,
  32956. 500,
  32957. 3,
  32958. 3,
  32959. 1,
  32960. 1
  32961. ]
  32962. ],
  32963. [
  32964. 0,
  32965. "Default",
  32966. 3,
  32967. 1
  32968. ]
  32969. ]
  32970. , [
  32971. [128, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  32972. 0,
  32973. 609,
  32974. [
  32975. [0],
  32976. [0],
  32977. [0]
  32978. ],
  32979. [
  32980. [
  32981. 2,
  32982. 1
  32983. ],
  32984. [
  32985. 1
  32986. ],
  32987. [
  32988. 200,
  32989. 600,
  32990. 500,
  32991. 3,
  32992. 3,
  32993. 1,
  32994. 1
  32995. ]
  32996. ],
  32997. [
  32998. 0,
  32999. "Default",
  33000. 2,
  33001. 1
  33002. ]
  33003. ]
  33004. , [
  33005. [256, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33006. 0,
  33007. 610,
  33008. [
  33009. [0],
  33010. [0],
  33011. [0]
  33012. ],
  33013. [
  33014. [
  33015. 2,
  33016. 1
  33017. ],
  33018. [
  33019. 1
  33020. ],
  33021. [
  33022. 200,
  33023. 600,
  33024. 500,
  33025. 3,
  33026. 3,
  33027. 1,
  33028. 1
  33029. ]
  33030. ],
  33031. [
  33032. 0,
  33033. "Default",
  33034. 2,
  33035. 1
  33036. ]
  33037. ]
  33038. , [
  33039. [320, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33040. 0,
  33041. 611,
  33042. [
  33043. [0],
  33044. [0],
  33045. [0]
  33046. ],
  33047. [
  33048. [
  33049. 2,
  33050. 1
  33051. ],
  33052. [
  33053. 1
  33054. ],
  33055. [
  33056. 200,
  33057. 600,
  33058. 500,
  33059. 3,
  33060. 3,
  33061. 1,
  33062. 1
  33063. ]
  33064. ],
  33065. [
  33066. 0,
  33067. "Default",
  33068. 2,
  33069. 1
  33070. ]
  33071. ]
  33072. , [
  33073. [256, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33074. 0,
  33075. 612,
  33076. [
  33077. [0],
  33078. [0],
  33079. [0]
  33080. ],
  33081. [
  33082. [
  33083. 2,
  33084. 1
  33085. ],
  33086. [
  33087. 1
  33088. ],
  33089. [
  33090. 200,
  33091. 600,
  33092. 500,
  33093. 3,
  33094. 3,
  33095. 1,
  33096. 1
  33097. ]
  33098. ],
  33099. [
  33100. 0,
  33101. "Default",
  33102. 2,
  33103. 1
  33104. ]
  33105. ]
  33106. , [
  33107. [128, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33108. 0,
  33109. 613,
  33110. [
  33111. [0],
  33112. [0],
  33113. [0]
  33114. ],
  33115. [
  33116. [
  33117. 1,
  33118. 1
  33119. ],
  33120. [
  33121. 1
  33122. ],
  33123. [
  33124. 200,
  33125. 600,
  33126. 500,
  33127. 3,
  33128. 3,
  33129. 1,
  33130. 1
  33131. ]
  33132. ],
  33133. [
  33134. 0,
  33135. "Default",
  33136. 3,
  33137. 1
  33138. ]
  33139. ]
  33140. ],
  33141. [ ]
  33142. ]
  33143. ],
  33144. [
  33145. ],
  33146. []
  33147. ]
  33148. , [
  33149. "level18",
  33150. 384,
  33151. 600,
  33152. false,
  33153. "level",
  33154. 2595189307601753,
  33155. [
  33156. [
  33157. "Layer 0",
  33158. 0,
  33159. 2966362878956094,
  33160. true,
  33161. [44, 44, 44],
  33162. false,
  33163. 1,
  33164. 1,
  33165. 1,
  33166. false,
  33167. 1,
  33168. 0,
  33169. 0,
  33170. [
  33171. [
  33172. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  33173. 3,
  33174. 614,
  33175. [
  33176. ],
  33177. [
  33178. ],
  33179. [
  33180. 0,
  33181. "Default",
  33182. 0,
  33183. 1
  33184. ]
  33185. ]
  33186. , [
  33187. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33188. 0,
  33189. 615,
  33190. [
  33191. [0],
  33192. [0],
  33193. [1]
  33194. ],
  33195. [
  33196. [
  33197. 1,
  33198. 1
  33199. ],
  33200. [
  33201. 1
  33202. ],
  33203. [
  33204. 200,
  33205. 600,
  33206. 500,
  33207. 3,
  33208. 3,
  33209. 1,
  33210. 1
  33211. ]
  33212. ],
  33213. [
  33214. 0,
  33215. "Red",
  33216. 4,
  33217. 1
  33218. ]
  33219. ]
  33220. , [
  33221. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  33222. 2,
  33223. 616,
  33224. [
  33225. ],
  33226. [
  33227. ],
  33228. [
  33229. 0,
  33230. "Default",
  33231. 0,
  33232. 1
  33233. ]
  33234. ]
  33235. , [
  33236. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33237. 1,
  33238. 617,
  33239. [
  33240. ],
  33241. [
  33242. ],
  33243. [
  33244. 1,
  33245. "Default",
  33246. 0,
  33247. 1
  33248. ]
  33249. ]
  33250. , [
  33251. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33252. 1,
  33253. 618,
  33254. [
  33255. ],
  33256. [
  33257. ],
  33258. [
  33259. 1,
  33260. "Default",
  33261. 0,
  33262. 1
  33263. ]
  33264. ]
  33265. , [
  33266. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673509985209, 0.00699300691485405, 0, 0, []],
  33267. 3,
  33268. 619,
  33269. [
  33270. ],
  33271. [
  33272. ],
  33273. [
  33274. 0,
  33275. "Default",
  33276. 2,
  33277. 1
  33278. ]
  33279. ]
  33280. , [
  33281. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673509985209, -1.422360301017761, 0, 0, []],
  33282. 3,
  33283. 620,
  33284. [
  33285. ],
  33286. [
  33287. ],
  33288. [
  33289. 0,
  33290. "Default",
  33291. 1,
  33292. 1
  33293. ]
  33294. ]
  33295. , [
  33296. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  33297. 4,
  33298. 621,
  33299. [
  33300. [0]
  33301. ],
  33302. [
  33303. [
  33304. 1,
  33305. 0,
  33306. 0,
  33307. 4,
  33308. 0,
  33309. 0,
  33310. 0,
  33311. 50,
  33312. 0
  33313. ]
  33314. ],
  33315. [
  33316. 0,
  33317. "Default",
  33318. 0,
  33319. 1
  33320. ]
  33321. ]
  33322. , [
  33323. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  33324. 4,
  33325. 622,
  33326. [
  33327. [1]
  33328. ],
  33329. [
  33330. [
  33331. 1,
  33332. 0,
  33333. 0,
  33334. 4,
  33335. 0,
  33336. 0,
  33337. 0,
  33338. 50,
  33339. 0
  33340. ]
  33341. ],
  33342. [
  33343. 0,
  33344. "Default",
  33345. 2,
  33346. 1
  33347. ]
  33348. ]
  33349. , [
  33350. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  33351. 4,
  33352. 623,
  33353. [
  33354. [2]
  33355. ],
  33356. [
  33357. [
  33358. 1,
  33359. 0,
  33360. 0,
  33361. 4,
  33362. 0,
  33363. 0,
  33364. 0,
  33365. 50,
  33366. 0
  33367. ]
  33368. ],
  33369. [
  33370. 0,
  33371. "Default",
  33372. 1,
  33373. 1
  33374. ]
  33375. ]
  33376. , [
  33377. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  33378. 5,
  33379. 624,
  33380. [
  33381. [0],
  33382. [0]
  33383. ],
  33384. [
  33385. ],
  33386. [
  33387. 0,
  33388. "Default",
  33389. 0,
  33390. 1
  33391. ]
  33392. ]
  33393. , [
  33394. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33395. 6,
  33396. 625,
  33397. [
  33398. [1]
  33399. ],
  33400. [
  33401. ],
  33402. [
  33403. 29,
  33404. 43,
  33405. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  33406. sg_texts[SG.lang]["BEST:"],
  33407. 1,
  33408. 0,
  33409. 0,
  33410. 0,
  33411. 0,
  33412. 0,
  33413. 0,
  33414. 0
  33415. ]
  33416. ]
  33417. , [
  33418. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33419. 6,
  33420. 626,
  33421. [
  33422. [0]
  33423. ],
  33424. [
  33425. ],
  33426. [
  33427. 29,
  33428. 43,
  33429. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  33430. "MOVE:",
  33431. 1,
  33432. 0,
  33433. 0,
  33434. 0,
  33435. 0,
  33436. 0,
  33437. 0,
  33438. 0
  33439. ]
  33440. ]
  33441. , [
  33442. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33443. 6,
  33444. 627,
  33445. [
  33446. [2]
  33447. ],
  33448. [
  33449. ],
  33450. [
  33451. 29,
  33452. 43,
  33453. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  33454. sg_texts[SG.lang]["LEVEL:"]+" 01",
  33455. 1,
  33456. 0,
  33457. 0,
  33458. 0,
  33459. 0,
  33460. 0,
  33461. 0,
  33462. 0
  33463. ]
  33464. ]
  33465. , [
  33466. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  33467. 4,
  33468. 628,
  33469. [
  33470. [3]
  33471. ],
  33472. [
  33473. [
  33474. 1,
  33475. 0,
  33476. 0,
  33477. 4,
  33478. 0,
  33479. 0,
  33480. 0,
  33481. 50,
  33482. 0
  33483. ]
  33484. ],
  33485. [
  33486. 0,
  33487. "Default",
  33488. 3,
  33489. 1
  33490. ]
  33491. ]
  33492. , [
  33493. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33494. 0,
  33495. 629,
  33496. [
  33497. [0],
  33498. [0],
  33499. [0]
  33500. ],
  33501. [
  33502. [
  33503. 2,
  33504. 1
  33505. ],
  33506. [
  33507. 1
  33508. ],
  33509. [
  33510. 200,
  33511. 600,
  33512. 500,
  33513. 3,
  33514. 3,
  33515. 1,
  33516. 1
  33517. ]
  33518. ],
  33519. [
  33520. 0,
  33521. "Default",
  33522. 2,
  33523. 1
  33524. ]
  33525. ]
  33526. , [
  33527. [64, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33528. 0,
  33529. 634,
  33530. [
  33531. [0],
  33532. [0],
  33533. [0]
  33534. ],
  33535. [
  33536. [
  33537. 1,
  33538. 1
  33539. ],
  33540. [
  33541. 1
  33542. ],
  33543. [
  33544. 200,
  33545. 600,
  33546. 500,
  33547. 3,
  33548. 3,
  33549. 1,
  33550. 1
  33551. ]
  33552. ],
  33553. [
  33554. 0,
  33555. "Default",
  33556. 3,
  33557. 1
  33558. ]
  33559. ]
  33560. , [
  33561. [0, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33562. 0,
  33563. 635,
  33564. [
  33565. [0],
  33566. [0],
  33567. [0]
  33568. ],
  33569. [
  33570. [
  33571. 2,
  33572. 1
  33573. ],
  33574. [
  33575. 1
  33576. ],
  33577. [
  33578. 200,
  33579. 600,
  33580. 500,
  33581. 3,
  33582. 3,
  33583. 1,
  33584. 1
  33585. ]
  33586. ],
  33587. [
  33588. 0,
  33589. "Default",
  33590. 2,
  33591. 1
  33592. ]
  33593. ]
  33594. , [
  33595. [64, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33596. 0,
  33597. 637,
  33598. [
  33599. [0],
  33600. [0],
  33601. [0]
  33602. ],
  33603. [
  33604. [
  33605. 1,
  33606. 1
  33607. ],
  33608. [
  33609. 1
  33610. ],
  33611. [
  33612. 200,
  33613. 600,
  33614. 500,
  33615. 3,
  33616. 3,
  33617. 1,
  33618. 1
  33619. ]
  33620. ],
  33621. [
  33622. 0,
  33623. "Default",
  33624. 3,
  33625. 1
  33626. ]
  33627. ]
  33628. , [
  33629. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33630. 0,
  33631. 638,
  33632. [
  33633. [0],
  33634. [0],
  33635. [0]
  33636. ],
  33637. [
  33638. [
  33639. 2,
  33640. 1
  33641. ],
  33642. [
  33643. 1
  33644. ],
  33645. [
  33646. 200,
  33647. 600,
  33648. 500,
  33649. 3,
  33650. 3,
  33651. 1,
  33652. 1
  33653. ]
  33654. ],
  33655. [
  33656. 0,
  33657. "Default",
  33658. 2,
  33659. 1
  33660. ]
  33661. ]
  33662. , [
  33663. [256, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33664. 0,
  33665. 639,
  33666. [
  33667. [0],
  33668. [0],
  33669. [0]
  33670. ],
  33671. [
  33672. [
  33673. 2,
  33674. 1
  33675. ],
  33676. [
  33677. 1
  33678. ],
  33679. [
  33680. 200,
  33681. 600,
  33682. 500,
  33683. 3,
  33684. 3,
  33685. 1,
  33686. 1
  33687. ]
  33688. ],
  33689. [
  33690. 0,
  33691. "Default",
  33692. 2,
  33693. 1
  33694. ]
  33695. ]
  33696. , [
  33697. [320, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33698. 0,
  33699. 640,
  33700. [
  33701. [0],
  33702. [0],
  33703. [0]
  33704. ],
  33705. [
  33706. [
  33707. 2,
  33708. 1
  33709. ],
  33710. [
  33711. 1
  33712. ],
  33713. [
  33714. 200,
  33715. 600,
  33716. 500,
  33717. 3,
  33718. 3,
  33719. 1,
  33720. 1
  33721. ]
  33722. ],
  33723. [
  33724. 0,
  33725. "Default",
  33726. 2,
  33727. 1
  33728. ]
  33729. ]
  33730. , [
  33731. [192, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33732. 0,
  33733. 641,
  33734. [
  33735. [0],
  33736. [0],
  33737. [0]
  33738. ],
  33739. [
  33740. [
  33741. 2,
  33742. 1
  33743. ],
  33744. [
  33745. 1
  33746. ],
  33747. [
  33748. 200,
  33749. 600,
  33750. 500,
  33751. 3,
  33752. 3,
  33753. 1,
  33754. 1
  33755. ]
  33756. ],
  33757. [
  33758. 0,
  33759. "Default",
  33760. 2,
  33761. 1
  33762. ]
  33763. ]
  33764. , [
  33765. [64, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33766. 0,
  33767. 642,
  33768. [
  33769. [0],
  33770. [0],
  33771. [0]
  33772. ],
  33773. [
  33774. [
  33775. 1,
  33776. 1
  33777. ],
  33778. [
  33779. 1
  33780. ],
  33781. [
  33782. 200,
  33783. 600,
  33784. 500,
  33785. 3,
  33786. 3,
  33787. 1,
  33788. 1
  33789. ]
  33790. ],
  33791. [
  33792. 0,
  33793. "Default",
  33794. 3,
  33795. 1
  33796. ]
  33797. ]
  33798. , [
  33799. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33800. 0,
  33801. 601,
  33802. [
  33803. [0],
  33804. [0],
  33805. [0]
  33806. ],
  33807. [
  33808. [
  33809. 1,
  33810. 1
  33811. ],
  33812. [
  33813. 1
  33814. ],
  33815. [
  33816. 200,
  33817. 600,
  33818. 500,
  33819. 3,
  33820. 3,
  33821. 1,
  33822. 1
  33823. ]
  33824. ],
  33825. [
  33826. 0,
  33827. "Default",
  33828. 3,
  33829. 1
  33830. ]
  33831. ]
  33832. , [
  33833. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33834. 0,
  33835. 602,
  33836. [
  33837. [0],
  33838. [0],
  33839. [0]
  33840. ],
  33841. [
  33842. [
  33843. 2,
  33844. 1
  33845. ],
  33846. [
  33847. 1
  33848. ],
  33849. [
  33850. 200,
  33851. 600,
  33852. 500,
  33853. 3,
  33854. 3,
  33855. 1,
  33856. 1
  33857. ]
  33858. ],
  33859. [
  33860. 0,
  33861. "Default",
  33862. 2,
  33863. 1
  33864. ]
  33865. ]
  33866. , [
  33867. [192, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33868. 0,
  33869. 604,
  33870. [
  33871. [0],
  33872. [0],
  33873. [0]
  33874. ],
  33875. [
  33876. [
  33877. 1,
  33878. 1
  33879. ],
  33880. [
  33881. 1
  33882. ],
  33883. [
  33884. 200,
  33885. 600,
  33886. 500,
  33887. 3,
  33888. 3,
  33889. 1,
  33890. 1
  33891. ]
  33892. ],
  33893. [
  33894. 0,
  33895. "Default",
  33896. 3,
  33897. 1
  33898. ]
  33899. ]
  33900. , [
  33901. [192, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  33902. 0,
  33903. 607,
  33904. [
  33905. [0],
  33906. [0],
  33907. [0]
  33908. ],
  33909. [
  33910. [
  33911. 1,
  33912. 1
  33913. ],
  33914. [
  33915. 1
  33916. ],
  33917. [
  33918. 200,
  33919. 600,
  33920. 500,
  33921. 3,
  33922. 3,
  33923. 1,
  33924. 1
  33925. ]
  33926. ],
  33927. [
  33928. 0,
  33929. "Default",
  33930. 3,
  33931. 1
  33932. ]
  33933. ]
  33934. , [
  33935. [320, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  33936. 0,
  33937. 643,
  33938. [
  33939. [0],
  33940. [0],
  33941. [0]
  33942. ],
  33943. [
  33944. [
  33945. 2,
  33946. 1
  33947. ],
  33948. [
  33949. 1
  33950. ],
  33951. [
  33952. 200,
  33953. 600,
  33954. 500,
  33955. 3,
  33956. 3,
  33957. 1,
  33958. 1
  33959. ]
  33960. ],
  33961. [
  33962. 0,
  33963. "Default",
  33964. 2,
  33965. 1
  33966. ]
  33967. ]
  33968. ],
  33969. [ ]
  33970. ]
  33971. ],
  33972. [
  33973. ],
  33974. []
  33975. ]
  33976. , [
  33977. "level19",
  33978. 384,
  33979. 600,
  33980. false,
  33981. "level",
  33982. 9085841114297728,
  33983. [
  33984. [
  33985. "Layer 0",
  33986. 0,
  33987. 1391242555587254,
  33988. true,
  33989. [44, 44, 44],
  33990. false,
  33991. 1,
  33992. 1,
  33993. 1,
  33994. false,
  33995. 1,
  33996. 0,
  33997. 0,
  33998. [
  33999. [
  34000. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  34001. 3,
  34002. 644,
  34003. [
  34004. ],
  34005. [
  34006. ],
  34007. [
  34008. 0,
  34009. "Default",
  34010. 0,
  34011. 1
  34012. ]
  34013. ]
  34014. , [
  34015. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34016. 0,
  34017. 645,
  34018. [
  34019. [0],
  34020. [0],
  34021. [1]
  34022. ],
  34023. [
  34024. [
  34025. 1,
  34026. 1
  34027. ],
  34028. [
  34029. 1
  34030. ],
  34031. [
  34032. 200,
  34033. 600,
  34034. 500,
  34035. 3,
  34036. 3,
  34037. 1,
  34038. 1
  34039. ]
  34040. ],
  34041. [
  34042. 0,
  34043. "Red",
  34044. 4,
  34045. 1
  34046. ]
  34047. ]
  34048. , [
  34049. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  34050. 2,
  34051. 646,
  34052. [
  34053. ],
  34054. [
  34055. ],
  34056. [
  34057. 0,
  34058. "Default",
  34059. 0,
  34060. 1
  34061. ]
  34062. ]
  34063. , [
  34064. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34065. 1,
  34066. 647,
  34067. [
  34068. ],
  34069. [
  34070. ],
  34071. [
  34072. 1,
  34073. "Default",
  34074. 0,
  34075. 1
  34076. ]
  34077. ]
  34078. , [
  34079. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34080. 1,
  34081. 648,
  34082. [
  34083. ],
  34084. [
  34085. ],
  34086. [
  34087. 1,
  34088. "Default",
  34089. 0,
  34090. 1
  34091. ]
  34092. ]
  34093. , [
  34094. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  34095. 3,
  34096. 649,
  34097. [
  34098. ],
  34099. [
  34100. ],
  34101. [
  34102. 0,
  34103. "Default",
  34104. 2,
  34105. 1
  34106. ]
  34107. ]
  34108. , [
  34109. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  34110. 3,
  34111. 650,
  34112. [
  34113. ],
  34114. [
  34115. ],
  34116. [
  34117. 0,
  34118. "Default",
  34119. 1,
  34120. 1
  34121. ]
  34122. ]
  34123. , [
  34124. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  34125. 4,
  34126. 651,
  34127. [
  34128. [0]
  34129. ],
  34130. [
  34131. [
  34132. 1,
  34133. 0,
  34134. 0,
  34135. 4,
  34136. 0,
  34137. 0,
  34138. 0,
  34139. 50,
  34140. 0
  34141. ]
  34142. ],
  34143. [
  34144. 0,
  34145. "Default",
  34146. 0,
  34147. 1
  34148. ]
  34149. ]
  34150. , [
  34151. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  34152. 4,
  34153. 652,
  34154. [
  34155. [1]
  34156. ],
  34157. [
  34158. [
  34159. 1,
  34160. 0,
  34161. 0,
  34162. 4,
  34163. 0,
  34164. 0,
  34165. 0,
  34166. 50,
  34167. 0
  34168. ]
  34169. ],
  34170. [
  34171. 0,
  34172. "Default",
  34173. 2,
  34174. 1
  34175. ]
  34176. ]
  34177. , [
  34178. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  34179. 4,
  34180. 653,
  34181. [
  34182. [2]
  34183. ],
  34184. [
  34185. [
  34186. 1,
  34187. 0,
  34188. 0,
  34189. 4,
  34190. 0,
  34191. 0,
  34192. 0,
  34193. 50,
  34194. 0
  34195. ]
  34196. ],
  34197. [
  34198. 0,
  34199. "Default",
  34200. 1,
  34201. 1
  34202. ]
  34203. ]
  34204. , [
  34205. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  34206. 5,
  34207. 654,
  34208. [
  34209. [0],
  34210. [0]
  34211. ],
  34212. [
  34213. ],
  34214. [
  34215. 0,
  34216. "Default",
  34217. 0,
  34218. 1
  34219. ]
  34220. ]
  34221. , [
  34222. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34223. 6,
  34224. 655,
  34225. [
  34226. [1]
  34227. ],
  34228. [
  34229. ],
  34230. [
  34231. 29,
  34232. 43,
  34233. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  34234. sg_texts[SG.lang]["BEST:"],
  34235. 1,
  34236. 0,
  34237. 0,
  34238. 0,
  34239. 0,
  34240. 0,
  34241. 0,
  34242. 0
  34243. ]
  34244. ]
  34245. , [
  34246. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34247. 6,
  34248. 656,
  34249. [
  34250. [0]
  34251. ],
  34252. [
  34253. ],
  34254. [
  34255. 29,
  34256. 43,
  34257. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  34258. "MOVE:",
  34259. 1,
  34260. 0,
  34261. 0,
  34262. 0,
  34263. 0,
  34264. 0,
  34265. 0,
  34266. 0
  34267. ]
  34268. ]
  34269. , [
  34270. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34271. 6,
  34272. 657,
  34273. [
  34274. [2]
  34275. ],
  34276. [
  34277. ],
  34278. [
  34279. 29,
  34280. 43,
  34281. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  34282. sg_texts[SG.lang]["LEVEL:"]+" 01",
  34283. 1,
  34284. 0,
  34285. 0,
  34286. 0,
  34287. 0,
  34288. 0,
  34289. 0,
  34290. 0
  34291. ]
  34292. ]
  34293. , [
  34294. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  34295. 4,
  34296. 658,
  34297. [
  34298. [3]
  34299. ],
  34300. [
  34301. [
  34302. 1,
  34303. 0,
  34304. 0,
  34305. 4,
  34306. 0,
  34307. 0,
  34308. 0,
  34309. 50,
  34310. 0
  34311. ]
  34312. ],
  34313. [
  34314. 0,
  34315. "Default",
  34316. 3,
  34317. 1
  34318. ]
  34319. ]
  34320. , [
  34321. [128, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  34322. 0,
  34323. 659,
  34324. [
  34325. [0],
  34326. [0],
  34327. [0]
  34328. ],
  34329. [
  34330. [
  34331. 2,
  34332. 1
  34333. ],
  34334. [
  34335. 1
  34336. ],
  34337. [
  34338. 200,
  34339. 600,
  34340. 500,
  34341. 3,
  34342. 3,
  34343. 1,
  34344. 1
  34345. ]
  34346. ],
  34347. [
  34348. 0,
  34349. "Default",
  34350. 2,
  34351. 1
  34352. ]
  34353. ]
  34354. , [
  34355. [0, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  34356. 0,
  34357. 660,
  34358. [
  34359. [0],
  34360. [0],
  34361. [0]
  34362. ],
  34363. [
  34364. [
  34365. 2,
  34366. 1
  34367. ],
  34368. [
  34369. 1
  34370. ],
  34371. [
  34372. 200,
  34373. 600,
  34374. 500,
  34375. 3,
  34376. 3,
  34377. 1,
  34378. 1
  34379. ]
  34380. ],
  34381. [
  34382. 0,
  34383. "Default",
  34384. 0,
  34385. 1
  34386. ]
  34387. ]
  34388. , [
  34389. [192, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34390. 0,
  34391. 661,
  34392. [
  34393. [0],
  34394. [0],
  34395. [0]
  34396. ],
  34397. [
  34398. [
  34399. 1,
  34400. 1
  34401. ],
  34402. [
  34403. 1
  34404. ],
  34405. [
  34406. 200,
  34407. 600,
  34408. 500,
  34409. 3,
  34410. 3,
  34411. 1,
  34412. 1
  34413. ]
  34414. ],
  34415. [
  34416. 0,
  34417. "Default",
  34418. 3,
  34419. 1
  34420. ]
  34421. ]
  34422. , [
  34423. [0, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34424. 0,
  34425. 662,
  34426. [
  34427. [0],
  34428. [0],
  34429. [0]
  34430. ],
  34431. [
  34432. [
  34433. 1,
  34434. 1
  34435. ],
  34436. [
  34437. 1
  34438. ],
  34439. [
  34440. 200,
  34441. 600,
  34442. 500,
  34443. 3,
  34444. 3,
  34445. 1,
  34446. 1
  34447. ]
  34448. ],
  34449. [
  34450. 0,
  34451. "Default",
  34452. 1,
  34453. 1
  34454. ]
  34455. ]
  34456. , [
  34457. [320, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  34458. 0,
  34459. 666,
  34460. [
  34461. [0],
  34462. [0],
  34463. [0]
  34464. ],
  34465. [
  34466. [
  34467. 2,
  34468. 1
  34469. ],
  34470. [
  34471. 1
  34472. ],
  34473. [
  34474. 200,
  34475. 600,
  34476. 500,
  34477. 3,
  34478. 3,
  34479. 1,
  34480. 1
  34481. ]
  34482. ],
  34483. [
  34484. 0,
  34485. "Default",
  34486. 0,
  34487. 1
  34488. ]
  34489. ]
  34490. , [
  34491. [256, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  34492. 0,
  34493. 669,
  34494. [
  34495. [0],
  34496. [0],
  34497. [0]
  34498. ],
  34499. [
  34500. [
  34501. 2,
  34502. 1
  34503. ],
  34504. [
  34505. 1
  34506. ],
  34507. [
  34508. 200,
  34509. 600,
  34510. 500,
  34511. 3,
  34512. 3,
  34513. 1,
  34514. 1
  34515. ]
  34516. ],
  34517. [
  34518. 0,
  34519. "Default",
  34520. 2,
  34521. 1
  34522. ]
  34523. ]
  34524. , [
  34525. [256, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  34526. 0,
  34527. 671,
  34528. [
  34529. [0],
  34530. [0],
  34531. [0]
  34532. ],
  34533. [
  34534. [
  34535. 2,
  34536. 1
  34537. ],
  34538. [
  34539. 1
  34540. ],
  34541. [
  34542. 200,
  34543. 600,
  34544. 500,
  34545. 3,
  34546. 3,
  34547. 1,
  34548. 1
  34549. ]
  34550. ],
  34551. [
  34552. 0,
  34553. "Default",
  34554. 2,
  34555. 1
  34556. ]
  34557. ]
  34558. , [
  34559. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34560. 0,
  34561. 672,
  34562. [
  34563. [0],
  34564. [0],
  34565. [0]
  34566. ],
  34567. [
  34568. [
  34569. 1,
  34570. 1
  34571. ],
  34572. [
  34573. 1
  34574. ],
  34575. [
  34576. 200,
  34577. 600,
  34578. 500,
  34579. 3,
  34580. 3,
  34581. 1,
  34582. 1
  34583. ]
  34584. ],
  34585. [
  34586. 0,
  34587. "Default",
  34588. 3,
  34589. 1
  34590. ]
  34591. ]
  34592. , [
  34593. [64, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  34594. 0,
  34595. 630,
  34596. [
  34597. [0],
  34598. [0],
  34599. [0]
  34600. ],
  34601. [
  34602. [
  34603. 2,
  34604. 1
  34605. ],
  34606. [
  34607. 1
  34608. ],
  34609. [
  34610. 200,
  34611. 600,
  34612. 500,
  34613. 3,
  34614. 3,
  34615. 1,
  34616. 1
  34617. ]
  34618. ],
  34619. [
  34620. 0,
  34621. "Default",
  34622. 2,
  34623. 1
  34624. ]
  34625. ]
  34626. ],
  34627. [ ]
  34628. ]
  34629. ],
  34630. [
  34631. ],
  34632. []
  34633. ]
  34634. , [
  34635. "level20",
  34636. 384,
  34637. 600,
  34638. false,
  34639. "level",
  34640. 8357726908712119,
  34641. [
  34642. [
  34643. "Layer 0",
  34644. 0,
  34645. 824667904277578,
  34646. true,
  34647. [44, 44, 44],
  34648. false,
  34649. 1,
  34650. 1,
  34651. 1,
  34652. false,
  34653. 1,
  34654. 0,
  34655. 0,
  34656. [
  34657. [
  34658. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  34659. 3,
  34660. 631,
  34661. [
  34662. ],
  34663. [
  34664. ],
  34665. [
  34666. 0,
  34667. "Default",
  34668. 0,
  34669. 1
  34670. ]
  34671. ]
  34672. , [
  34673. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34674. 0,
  34675. 632,
  34676. [
  34677. [0],
  34678. [0],
  34679. [1]
  34680. ],
  34681. [
  34682. [
  34683. 1,
  34684. 1
  34685. ],
  34686. [
  34687. 1
  34688. ],
  34689. [
  34690. 200,
  34691. 600,
  34692. 500,
  34693. 3,
  34694. 3,
  34695. 1,
  34696. 1
  34697. ]
  34698. ],
  34699. [
  34700. 0,
  34701. "Red",
  34702. 4,
  34703. 1
  34704. ]
  34705. ]
  34706. , [
  34707. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  34708. 2,
  34709. 633,
  34710. [
  34711. ],
  34712. [
  34713. ],
  34714. [
  34715. 0,
  34716. "Default",
  34717. 0,
  34718. 1
  34719. ]
  34720. ]
  34721. , [
  34722. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34723. 1,
  34724. 636,
  34725. [
  34726. ],
  34727. [
  34728. ],
  34729. [
  34730. 1,
  34731. "Default",
  34732. 0,
  34733. 1
  34734. ]
  34735. ]
  34736. , [
  34737. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34738. 1,
  34739. 663,
  34740. [
  34741. ],
  34742. [
  34743. ],
  34744. [
  34745. 1,
  34746. "Default",
  34747. 0,
  34748. 1
  34749. ]
  34750. ]
  34751. , [
  34752. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  34753. 3,
  34754. 664,
  34755. [
  34756. ],
  34757. [
  34758. ],
  34759. [
  34760. 0,
  34761. "Default",
  34762. 2,
  34763. 1
  34764. ]
  34765. ]
  34766. , [
  34767. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  34768. 3,
  34769. 665,
  34770. [
  34771. ],
  34772. [
  34773. ],
  34774. [
  34775. 0,
  34776. "Default",
  34777. 1,
  34778. 1
  34779. ]
  34780. ]
  34781. , [
  34782. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  34783. 4,
  34784. 667,
  34785. [
  34786. [0]
  34787. ],
  34788. [
  34789. [
  34790. 1,
  34791. 0,
  34792. 0,
  34793. 4,
  34794. 0,
  34795. 0,
  34796. 0,
  34797. 50,
  34798. 0
  34799. ]
  34800. ],
  34801. [
  34802. 0,
  34803. "Default",
  34804. 0,
  34805. 1
  34806. ]
  34807. ]
  34808. , [
  34809. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  34810. 4,
  34811. 668,
  34812. [
  34813. [1]
  34814. ],
  34815. [
  34816. [
  34817. 1,
  34818. 0,
  34819. 0,
  34820. 4,
  34821. 0,
  34822. 0,
  34823. 0,
  34824. 50,
  34825. 0
  34826. ]
  34827. ],
  34828. [
  34829. 0,
  34830. "Default",
  34831. 2,
  34832. 1
  34833. ]
  34834. ]
  34835. , [
  34836. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  34837. 4,
  34838. 670,
  34839. [
  34840. [2]
  34841. ],
  34842. [
  34843. [
  34844. 1,
  34845. 0,
  34846. 0,
  34847. 4,
  34848. 0,
  34849. 0,
  34850. 0,
  34851. 50,
  34852. 0
  34853. ]
  34854. ],
  34855. [
  34856. 0,
  34857. "Default",
  34858. 1,
  34859. 1
  34860. ]
  34861. ]
  34862. , [
  34863. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  34864. 5,
  34865. 673,
  34866. [
  34867. [0],
  34868. [0]
  34869. ],
  34870. [
  34871. ],
  34872. [
  34873. 0,
  34874. "Default",
  34875. 0,
  34876. 1
  34877. ]
  34878. ]
  34879. , [
  34880. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34881. 6,
  34882. 674,
  34883. [
  34884. [1]
  34885. ],
  34886. [
  34887. ],
  34888. [
  34889. 29,
  34890. 43,
  34891. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  34892. sg_texts[SG.lang]["BEST:"],
  34893. 1,
  34894. 0,
  34895. 0,
  34896. 0,
  34897. 0,
  34898. 0,
  34899. 0,
  34900. 0
  34901. ]
  34902. ]
  34903. , [
  34904. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34905. 6,
  34906. 675,
  34907. [
  34908. [0]
  34909. ],
  34910. [
  34911. ],
  34912. [
  34913. 29,
  34914. 43,
  34915. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  34916. "MOVE:",
  34917. 1,
  34918. 0,
  34919. 0,
  34920. 0,
  34921. 0,
  34922. 0,
  34923. 0,
  34924. 0
  34925. ]
  34926. ]
  34927. , [
  34928. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  34929. 6,
  34930. 676,
  34931. [
  34932. [2]
  34933. ],
  34934. [
  34935. ],
  34936. [
  34937. 29,
  34938. 43,
  34939. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  34940. sg_texts[SG.lang]["LEVEL:"]+" 01",
  34941. 1,
  34942. 0,
  34943. 0,
  34944. 0,
  34945. 0,
  34946. 0,
  34947. 0,
  34948. 0
  34949. ]
  34950. ]
  34951. , [
  34952. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  34953. 4,
  34954. 677,
  34955. [
  34956. [3]
  34957. ],
  34958. [
  34959. [
  34960. 1,
  34961. 0,
  34962. 0,
  34963. 4,
  34964. 0,
  34965. 0,
  34966. 0,
  34967. 50,
  34968. 0
  34969. ]
  34970. ],
  34971. [
  34972. 0,
  34973. "Default",
  34974. 3,
  34975. 1
  34976. ]
  34977. ]
  34978. , [
  34979. [0, 320, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  34980. 0,
  34981. 679,
  34982. [
  34983. [0],
  34984. [0],
  34985. [0]
  34986. ],
  34987. [
  34988. [
  34989. 2,
  34990. 1
  34991. ],
  34992. [
  34993. 1
  34994. ],
  34995. [
  34996. 200,
  34997. 600,
  34998. 500,
  34999. 3,
  35000. 3,
  35001. 1,
  35002. 1
  35003. ]
  35004. ],
  35005. [
  35006. 0,
  35007. "Default",
  35008. 0,
  35009. 1
  35010. ]
  35011. ]
  35012. , [
  35013. [256, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35014. 0,
  35015. 680,
  35016. [
  35017. [0],
  35018. [0],
  35019. [0]
  35020. ],
  35021. [
  35022. [
  35023. 1,
  35024. 1
  35025. ],
  35026. [
  35027. 1
  35028. ],
  35029. [
  35030. 200,
  35031. 600,
  35032. 500,
  35033. 3,
  35034. 3,
  35035. 1,
  35036. 1
  35037. ]
  35038. ],
  35039. [
  35040. 0,
  35041. "Default",
  35042. 3,
  35043. 1
  35044. ]
  35045. ]
  35046. , [
  35047. [0, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35048. 0,
  35049. 681,
  35050. [
  35051. [0],
  35052. [0],
  35053. [0]
  35054. ],
  35055. [
  35056. [
  35057. 1,
  35058. 1
  35059. ],
  35060. [
  35061. 1
  35062. ],
  35063. [
  35064. 200,
  35065. 600,
  35066. 500,
  35067. 3,
  35068. 3,
  35069. 1,
  35070. 1
  35071. ]
  35072. ],
  35073. [
  35074. 0,
  35075. "Default",
  35076. 1,
  35077. 1
  35078. ]
  35079. ]
  35080. , [
  35081. [320, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  35082. 0,
  35083. 682,
  35084. [
  35085. [0],
  35086. [0],
  35087. [0]
  35088. ],
  35089. [
  35090. [
  35091. 2,
  35092. 1
  35093. ],
  35094. [
  35095. 1
  35096. ],
  35097. [
  35098. 200,
  35099. 600,
  35100. 500,
  35101. 3,
  35102. 3,
  35103. 1,
  35104. 1
  35105. ]
  35106. ],
  35107. [
  35108. 0,
  35109. "Default",
  35110. 0,
  35111. 1
  35112. ]
  35113. ]
  35114. , [
  35115. [64, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  35116. 0,
  35117. 684,
  35118. [
  35119. [0],
  35120. [0],
  35121. [0]
  35122. ],
  35123. [
  35124. [
  35125. 2,
  35126. 1
  35127. ],
  35128. [
  35129. 1
  35130. ],
  35131. [
  35132. 200,
  35133. 600,
  35134. 500,
  35135. 3,
  35136. 3,
  35137. 1,
  35138. 1
  35139. ]
  35140. ],
  35141. [
  35142. 0,
  35143. "Default",
  35144. 2,
  35145. 1
  35146. ]
  35147. ]
  35148. , [
  35149. [128, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35150. 0,
  35151. 685,
  35152. [
  35153. [0],
  35154. [0],
  35155. [0]
  35156. ],
  35157. [
  35158. [
  35159. 1,
  35160. 1
  35161. ],
  35162. [
  35163. 1
  35164. ],
  35165. [
  35166. 200,
  35167. 600,
  35168. 500,
  35169. 3,
  35170. 3,
  35171. 1,
  35172. 1
  35173. ]
  35174. ],
  35175. [
  35176. 0,
  35177. "Default",
  35178. 3,
  35179. 1
  35180. ]
  35181. ]
  35182. , [
  35183. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  35184. 0,
  35185. 686,
  35186. [
  35187. [0],
  35188. [0],
  35189. [0]
  35190. ],
  35191. [
  35192. [
  35193. 2,
  35194. 1
  35195. ],
  35196. [
  35197. 1
  35198. ],
  35199. [
  35200. 200,
  35201. 600,
  35202. 500,
  35203. 3,
  35204. 3,
  35205. 1,
  35206. 1
  35207. ]
  35208. ],
  35209. [
  35210. 0,
  35211. "Default",
  35212. 2,
  35213. 1
  35214. ]
  35215. ]
  35216. , [
  35217. [128, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35218. 0,
  35219. 687,
  35220. [
  35221. [0],
  35222. [0],
  35223. [0]
  35224. ],
  35225. [
  35226. [
  35227. 1,
  35228. 1
  35229. ],
  35230. [
  35231. 1
  35232. ],
  35233. [
  35234. 200,
  35235. 600,
  35236. 500,
  35237. 3,
  35238. 3,
  35239. 1,
  35240. 1
  35241. ]
  35242. ],
  35243. [
  35244. 0,
  35245. "Default",
  35246. 3,
  35247. 1
  35248. ]
  35249. ]
  35250. , [
  35251. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35252. 0,
  35253. 688,
  35254. [
  35255. [0],
  35256. [0],
  35257. [0]
  35258. ],
  35259. [
  35260. [
  35261. 1,
  35262. 1
  35263. ],
  35264. [
  35265. 1
  35266. ],
  35267. [
  35268. 200,
  35269. 600,
  35270. 500,
  35271. 3,
  35272. 3,
  35273. 1,
  35274. 1
  35275. ]
  35276. ],
  35277. [
  35278. 0,
  35279. "Default",
  35280. 3,
  35281. 1
  35282. ]
  35283. ]
  35284. , [
  35285. [64, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35286. 0,
  35287. 689,
  35288. [
  35289. [0],
  35290. [0],
  35291. [0]
  35292. ],
  35293. [
  35294. [
  35295. 1,
  35296. 1
  35297. ],
  35298. [
  35299. 1
  35300. ],
  35301. [
  35302. 200,
  35303. 600,
  35304. 500,
  35305. 3,
  35306. 3,
  35307. 1,
  35308. 1
  35309. ]
  35310. ],
  35311. [
  35312. 0,
  35313. "Default",
  35314. 3,
  35315. 1
  35316. ]
  35317. ]
  35318. , [
  35319. [192, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35320. 0,
  35321. 690,
  35322. [
  35323. [0],
  35324. [0],
  35325. [0]
  35326. ],
  35327. [
  35328. [
  35329. 1,
  35330. 1
  35331. ],
  35332. [
  35333. 1
  35334. ],
  35335. [
  35336. 200,
  35337. 600,
  35338. 500,
  35339. 3,
  35340. 3,
  35341. 1,
  35342. 1
  35343. ]
  35344. ],
  35345. [
  35346. 0,
  35347. "Default",
  35348. 3,
  35349. 1
  35350. ]
  35351. ]
  35352. ],
  35353. [ ]
  35354. ]
  35355. ],
  35356. [
  35357. ],
  35358. []
  35359. ]
  35360. , [
  35361. "level21",
  35362. 384,
  35363. 600,
  35364. false,
  35365. "level",
  35366. 2065103741856112,
  35367. [
  35368. [
  35369. "Layer 0",
  35370. 0,
  35371. 67843794173942,
  35372. true,
  35373. [44, 44, 44],
  35374. false,
  35375. 1,
  35376. 1,
  35377. 1,
  35378. false,
  35379. 1,
  35380. 0,
  35381. 0,
  35382. [
  35383. [
  35384. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  35385. 3,
  35386. 678,
  35387. [
  35388. ],
  35389. [
  35390. ],
  35391. [
  35392. 0,
  35393. "Default",
  35394. 0,
  35395. 1
  35396. ]
  35397. ]
  35398. , [
  35399. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35400. 0,
  35401. 683,
  35402. [
  35403. [0],
  35404. [0],
  35405. [1]
  35406. ],
  35407. [
  35408. [
  35409. 1,
  35410. 1
  35411. ],
  35412. [
  35413. 1
  35414. ],
  35415. [
  35416. 200,
  35417. 600,
  35418. 500,
  35419. 3,
  35420. 3,
  35421. 1,
  35422. 1
  35423. ]
  35424. ],
  35425. [
  35426. 0,
  35427. "Red",
  35428. 4,
  35429. 1
  35430. ]
  35431. ]
  35432. , [
  35433. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  35434. 2,
  35435. 691,
  35436. [
  35437. ],
  35438. [
  35439. ],
  35440. [
  35441. 0,
  35442. "Default",
  35443. 0,
  35444. 1
  35445. ]
  35446. ]
  35447. , [
  35448. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35449. 1,
  35450. 692,
  35451. [
  35452. ],
  35453. [
  35454. ],
  35455. [
  35456. 1,
  35457. "Default",
  35458. 0,
  35459. 1
  35460. ]
  35461. ]
  35462. , [
  35463. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35464. 1,
  35465. 693,
  35466. [
  35467. ],
  35468. [
  35469. ],
  35470. [
  35471. 1,
  35472. "Default",
  35473. 0,
  35474. 1
  35475. ]
  35476. ]
  35477. , [
  35478. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  35479. 3,
  35480. 694,
  35481. [
  35482. ],
  35483. [
  35484. ],
  35485. [
  35486. 0,
  35487. "Default",
  35488. 2,
  35489. 1
  35490. ]
  35491. ]
  35492. , [
  35493. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  35494. 3,
  35495. 695,
  35496. [
  35497. ],
  35498. [
  35499. ],
  35500. [
  35501. 0,
  35502. "Default",
  35503. 1,
  35504. 1
  35505. ]
  35506. ]
  35507. , [
  35508. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  35509. 4,
  35510. 696,
  35511. [
  35512. [0]
  35513. ],
  35514. [
  35515. [
  35516. 1,
  35517. 0,
  35518. 0,
  35519. 4,
  35520. 0,
  35521. 0,
  35522. 0,
  35523. 50,
  35524. 0
  35525. ]
  35526. ],
  35527. [
  35528. 0,
  35529. "Default",
  35530. 0,
  35531. 1
  35532. ]
  35533. ]
  35534. , [
  35535. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  35536. 4,
  35537. 697,
  35538. [
  35539. [1]
  35540. ],
  35541. [
  35542. [
  35543. 1,
  35544. 0,
  35545. 0,
  35546. 4,
  35547. 0,
  35548. 0,
  35549. 0,
  35550. 50,
  35551. 0
  35552. ]
  35553. ],
  35554. [
  35555. 0,
  35556. "Default",
  35557. 2,
  35558. 1
  35559. ]
  35560. ]
  35561. , [
  35562. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  35563. 4,
  35564. 698,
  35565. [
  35566. [2]
  35567. ],
  35568. [
  35569. [
  35570. 1,
  35571. 0,
  35572. 0,
  35573. 4,
  35574. 0,
  35575. 0,
  35576. 0,
  35577. 50,
  35578. 0
  35579. ]
  35580. ],
  35581. [
  35582. 0,
  35583. "Default",
  35584. 1,
  35585. 1
  35586. ]
  35587. ]
  35588. , [
  35589. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  35590. 5,
  35591. 699,
  35592. [
  35593. [0],
  35594. [0]
  35595. ],
  35596. [
  35597. ],
  35598. [
  35599. 0,
  35600. "Default",
  35601. 0,
  35602. 1
  35603. ]
  35604. ]
  35605. , [
  35606. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35607. 6,
  35608. 700,
  35609. [
  35610. [1]
  35611. ],
  35612. [
  35613. ],
  35614. [
  35615. 29,
  35616. 43,
  35617. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  35618. sg_texts[SG.lang]["BEST:"],
  35619. 1,
  35620. 0,
  35621. 0,
  35622. 0,
  35623. 0,
  35624. 0,
  35625. 0,
  35626. 0
  35627. ]
  35628. ]
  35629. , [
  35630. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35631. 6,
  35632. 701,
  35633. [
  35634. [0]
  35635. ],
  35636. [
  35637. ],
  35638. [
  35639. 29,
  35640. 43,
  35641. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  35642. "MOVE:",
  35643. 1,
  35644. 0,
  35645. 0,
  35646. 0,
  35647. 0,
  35648. 0,
  35649. 0,
  35650. 0
  35651. ]
  35652. ]
  35653. , [
  35654. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35655. 6,
  35656. 702,
  35657. [
  35658. [2]
  35659. ],
  35660. [
  35661. ],
  35662. [
  35663. 29,
  35664. 43,
  35665. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  35666. sg_texts[SG.lang]["LEVEL:"]+" 01",
  35667. 1,
  35668. 0,
  35669. 0,
  35670. 0,
  35671. 0,
  35672. 0,
  35673. 0,
  35674. 0
  35675. ]
  35676. ]
  35677. , [
  35678. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  35679. 4,
  35680. 703,
  35681. [
  35682. [3]
  35683. ],
  35684. [
  35685. [
  35686. 1,
  35687. 0,
  35688. 0,
  35689. 4,
  35690. 0,
  35691. 0,
  35692. 0,
  35693. 50,
  35694. 0
  35695. ]
  35696. ],
  35697. [
  35698. 0,
  35699. "Default",
  35700. 3,
  35701. 1
  35702. ]
  35703. ]
  35704. , [
  35705. [256, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35706. 0,
  35707. 705,
  35708. [
  35709. [0],
  35710. [0],
  35711. [0]
  35712. ],
  35713. [
  35714. [
  35715. 1,
  35716. 1
  35717. ],
  35718. [
  35719. 1
  35720. ],
  35721. [
  35722. 200,
  35723. 600,
  35724. 500,
  35725. 3,
  35726. 3,
  35727. 1,
  35728. 1
  35729. ]
  35730. ],
  35731. [
  35732. 0,
  35733. "Default",
  35734. 3,
  35735. 1
  35736. ]
  35737. ]
  35738. , [
  35739. [0, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35740. 0,
  35741. 706,
  35742. [
  35743. [0],
  35744. [0],
  35745. [0]
  35746. ],
  35747. [
  35748. [
  35749. 1,
  35750. 1
  35751. ],
  35752. [
  35753. 1
  35754. ],
  35755. [
  35756. 200,
  35757. 600,
  35758. 500,
  35759. 3,
  35760. 3,
  35761. 1,
  35762. 1
  35763. ]
  35764. ],
  35765. [
  35766. 0,
  35767. "Default",
  35768. 1,
  35769. 1
  35770. ]
  35771. ]
  35772. , [
  35773. [128, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  35774. 0,
  35775. 708,
  35776. [
  35777. [0],
  35778. [0],
  35779. [0]
  35780. ],
  35781. [
  35782. [
  35783. 2,
  35784. 1
  35785. ],
  35786. [
  35787. 1
  35788. ],
  35789. [
  35790. 200,
  35791. 600,
  35792. 500,
  35793. 3,
  35794. 3,
  35795. 1,
  35796. 1
  35797. ]
  35798. ],
  35799. [
  35800. 0,
  35801. "Default",
  35802. 2,
  35803. 1
  35804. ]
  35805. ]
  35806. , [
  35807. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  35808. 0,
  35809. 710,
  35810. [
  35811. [0],
  35812. [0],
  35813. [0]
  35814. ],
  35815. [
  35816. [
  35817. 2,
  35818. 1
  35819. ],
  35820. [
  35821. 1
  35822. ],
  35823. [
  35824. 200,
  35825. 600,
  35826. 500,
  35827. 3,
  35828. 3,
  35829. 1,
  35830. 1
  35831. ]
  35832. ],
  35833. [
  35834. 0,
  35835. "Default",
  35836. 2,
  35837. 1
  35838. ]
  35839. ]
  35840. , [
  35841. [64, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35842. 0,
  35843. 713,
  35844. [
  35845. [0],
  35846. [0],
  35847. [0]
  35848. ],
  35849. [
  35850. [
  35851. 1,
  35852. 1
  35853. ],
  35854. [
  35855. 1
  35856. ],
  35857. [
  35858. 200,
  35859. 600,
  35860. 500,
  35861. 3,
  35862. 3,
  35863. 1,
  35864. 1
  35865. ]
  35866. ],
  35867. [
  35868. 0,
  35869. "Default",
  35870. 3,
  35871. 1
  35872. ]
  35873. ]
  35874. , [
  35875. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  35876. 0,
  35877. 715,
  35878. [
  35879. [0],
  35880. [0],
  35881. [0]
  35882. ],
  35883. [
  35884. [
  35885. 2,
  35886. 1
  35887. ],
  35888. [
  35889. 1
  35890. ],
  35891. [
  35892. 200,
  35893. 600,
  35894. 500,
  35895. 3,
  35896. 3,
  35897. 1,
  35898. 1
  35899. ]
  35900. ],
  35901. [
  35902. 0,
  35903. "Default",
  35904. 2,
  35905. 1
  35906. ]
  35907. ]
  35908. , [
  35909. [256, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  35910. 0,
  35911. 716,
  35912. [
  35913. [0],
  35914. [0],
  35915. [0]
  35916. ],
  35917. [
  35918. [
  35919. 1,
  35920. 1
  35921. ],
  35922. [
  35923. 1
  35924. ],
  35925. [
  35926. 200,
  35927. 600,
  35928. 500,
  35929. 3,
  35930. 3,
  35931. 1,
  35932. 1
  35933. ]
  35934. ],
  35935. [
  35936. 0,
  35937. "Default",
  35938. 3,
  35939. 1
  35940. ]
  35941. ]
  35942. , [
  35943. [128, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  35944. 0,
  35945. 717,
  35946. [
  35947. [0],
  35948. [0],
  35949. [0]
  35950. ],
  35951. [
  35952. [
  35953. 2,
  35954. 1
  35955. ],
  35956. [
  35957. 1
  35958. ],
  35959. [
  35960. 200,
  35961. 600,
  35962. 500,
  35963. 3,
  35964. 3,
  35965. 1,
  35966. 1
  35967. ]
  35968. ],
  35969. [
  35970. 0,
  35971. "Default",
  35972. 2,
  35973. 1
  35974. ]
  35975. ]
  35976. , [
  35977. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  35978. 0,
  35979. 718,
  35980. [
  35981. [0],
  35982. [0],
  35983. [0]
  35984. ],
  35985. [
  35986. [
  35987. 2,
  35988. 1
  35989. ],
  35990. [
  35991. 1
  35992. ],
  35993. [
  35994. 200,
  35995. 600,
  35996. 500,
  35997. 3,
  35998. 3,
  35999. 1,
  36000. 1
  36001. ]
  36002. ],
  36003. [
  36004. 0,
  36005. "Default",
  36006. 2,
  36007. 1
  36008. ]
  36009. ]
  36010. , [
  36011. [320, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  36012. 0,
  36013. 719,
  36014. [
  36015. [0],
  36016. [0],
  36017. [0]
  36018. ],
  36019. [
  36020. [
  36021. 2,
  36022. 1
  36023. ],
  36024. [
  36025. 1
  36026. ],
  36027. [
  36028. 200,
  36029. 600,
  36030. 500,
  36031. 3,
  36032. 3,
  36033. 1,
  36034. 1
  36035. ]
  36036. ],
  36037. [
  36038. 0,
  36039. "Default",
  36040. 2,
  36041. 1
  36042. ]
  36043. ]
  36044. ],
  36045. [ ]
  36046. ]
  36047. ],
  36048. [
  36049. ],
  36050. []
  36051. ]
  36052. , [
  36053. "level22",
  36054. 384,
  36055. 600,
  36056. false,
  36057. "level",
  36058. 2110187236731083,
  36059. [
  36060. [
  36061. "Layer 0",
  36062. 0,
  36063. 6265244914397879,
  36064. true,
  36065. [44, 44, 44],
  36066. false,
  36067. 1,
  36068. 1,
  36069. 1,
  36070. false,
  36071. 1,
  36072. 0,
  36073. 0,
  36074. [
  36075. [
  36076. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  36077. 3,
  36078. 720,
  36079. [
  36080. ],
  36081. [
  36082. ],
  36083. [
  36084. 0,
  36085. "Default",
  36086. 0,
  36087. 1
  36088. ]
  36089. ]
  36090. , [
  36091. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36092. 0,
  36093. 721,
  36094. [
  36095. [0],
  36096. [0],
  36097. [1]
  36098. ],
  36099. [
  36100. [
  36101. 1,
  36102. 1
  36103. ],
  36104. [
  36105. 1
  36106. ],
  36107. [
  36108. 200,
  36109. 600,
  36110. 500,
  36111. 3,
  36112. 3,
  36113. 1,
  36114. 1
  36115. ]
  36116. ],
  36117. [
  36118. 0,
  36119. "Red",
  36120. 4,
  36121. 1
  36122. ]
  36123. ]
  36124. , [
  36125. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  36126. 2,
  36127. 722,
  36128. [
  36129. ],
  36130. [
  36131. ],
  36132. [
  36133. 0,
  36134. "Default",
  36135. 0,
  36136. 1
  36137. ]
  36138. ]
  36139. , [
  36140. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36141. 1,
  36142. 723,
  36143. [
  36144. ],
  36145. [
  36146. ],
  36147. [
  36148. 1,
  36149. "Default",
  36150. 0,
  36151. 1
  36152. ]
  36153. ]
  36154. , [
  36155. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36156. 1,
  36157. 724,
  36158. [
  36159. ],
  36160. [
  36161. ],
  36162. [
  36163. 1,
  36164. "Default",
  36165. 0,
  36166. 1
  36167. ]
  36168. ]
  36169. , [
  36170. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  36171. 3,
  36172. 725,
  36173. [
  36174. ],
  36175. [
  36176. ],
  36177. [
  36178. 0,
  36179. "Default",
  36180. 2,
  36181. 1
  36182. ]
  36183. ]
  36184. , [
  36185. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  36186. 3,
  36187. 726,
  36188. [
  36189. ],
  36190. [
  36191. ],
  36192. [
  36193. 0,
  36194. "Default",
  36195. 1,
  36196. 1
  36197. ]
  36198. ]
  36199. , [
  36200. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  36201. 4,
  36202. 727,
  36203. [
  36204. [0]
  36205. ],
  36206. [
  36207. [
  36208. 1,
  36209. 0,
  36210. 0,
  36211. 4,
  36212. 0,
  36213. 0,
  36214. 0,
  36215. 50,
  36216. 0
  36217. ]
  36218. ],
  36219. [
  36220. 0,
  36221. "Default",
  36222. 0,
  36223. 1
  36224. ]
  36225. ]
  36226. , [
  36227. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  36228. 4,
  36229. 728,
  36230. [
  36231. [1]
  36232. ],
  36233. [
  36234. [
  36235. 1,
  36236. 0,
  36237. 0,
  36238. 4,
  36239. 0,
  36240. 0,
  36241. 0,
  36242. 50,
  36243. 0
  36244. ]
  36245. ],
  36246. [
  36247. 0,
  36248. "Default",
  36249. 2,
  36250. 1
  36251. ]
  36252. ]
  36253. , [
  36254. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  36255. 4,
  36256. 729,
  36257. [
  36258. [2]
  36259. ],
  36260. [
  36261. [
  36262. 1,
  36263. 0,
  36264. 0,
  36265. 4,
  36266. 0,
  36267. 0,
  36268. 0,
  36269. 50,
  36270. 0
  36271. ]
  36272. ],
  36273. [
  36274. 0,
  36275. "Default",
  36276. 1,
  36277. 1
  36278. ]
  36279. ]
  36280. , [
  36281. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  36282. 5,
  36283. 730,
  36284. [
  36285. [0],
  36286. [0]
  36287. ],
  36288. [
  36289. ],
  36290. [
  36291. 0,
  36292. "Default",
  36293. 0,
  36294. 1
  36295. ]
  36296. ]
  36297. , [
  36298. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36299. 6,
  36300. 731,
  36301. [
  36302. [1]
  36303. ],
  36304. [
  36305. ],
  36306. [
  36307. 29,
  36308. 43,
  36309. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  36310. sg_texts[SG.lang]["BEST:"],
  36311. 1,
  36312. 0,
  36313. 0,
  36314. 0,
  36315. 0,
  36316. 0,
  36317. 0,
  36318. 0
  36319. ]
  36320. ]
  36321. , [
  36322. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36323. 6,
  36324. 732,
  36325. [
  36326. [0]
  36327. ],
  36328. [
  36329. ],
  36330. [
  36331. 29,
  36332. 43,
  36333. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  36334. "MOVE:",
  36335. 1,
  36336. 0,
  36337. 0,
  36338. 0,
  36339. 0,
  36340. 0,
  36341. 0,
  36342. 0
  36343. ]
  36344. ]
  36345. , [
  36346. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36347. 6,
  36348. 733,
  36349. [
  36350. [2]
  36351. ],
  36352. [
  36353. ],
  36354. [
  36355. 29,
  36356. 43,
  36357. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  36358. sg_texts[SG.lang]["LEVEL:"]+" 01",
  36359. 1,
  36360. 0,
  36361. 0,
  36362. 0,
  36363. 0,
  36364. 0,
  36365. 0,
  36366. 0
  36367. ]
  36368. ]
  36369. , [
  36370. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  36371. 4,
  36372. 734,
  36373. [
  36374. [3]
  36375. ],
  36376. [
  36377. [
  36378. 1,
  36379. 0,
  36380. 0,
  36381. 4,
  36382. 0,
  36383. 0,
  36384. 0,
  36385. 50,
  36386. 0
  36387. ]
  36388. ],
  36389. [
  36390. 0,
  36391. "Default",
  36392. 3,
  36393. 1
  36394. ]
  36395. ]
  36396. , [
  36397. [256, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  36398. 0,
  36399. 735,
  36400. [
  36401. [0],
  36402. [0],
  36403. [0]
  36404. ],
  36405. [
  36406. [
  36407. 2,
  36408. 1
  36409. ],
  36410. [
  36411. 1
  36412. ],
  36413. [
  36414. 200,
  36415. 600,
  36416. 500,
  36417. 3,
  36418. 3,
  36419. 1,
  36420. 1
  36421. ]
  36422. ],
  36423. [
  36424. 0,
  36425. "Default",
  36426. 0,
  36427. 1
  36428. ]
  36429. ]
  36430. , [
  36431. [64, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36432. 0,
  36433. 736,
  36434. [
  36435. [0],
  36436. [0],
  36437. [0]
  36438. ],
  36439. [
  36440. [
  36441. 1,
  36442. 1
  36443. ],
  36444. [
  36445. 1
  36446. ],
  36447. [
  36448. 200,
  36449. 600,
  36450. 500,
  36451. 3,
  36452. 3,
  36453. 1,
  36454. 1
  36455. ]
  36456. ],
  36457. [
  36458. 0,
  36459. "Default",
  36460. 3,
  36461. 1
  36462. ]
  36463. ]
  36464. , [
  36465. [64, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36466. 0,
  36467. 737,
  36468. [
  36469. [0],
  36470. [0],
  36471. [0]
  36472. ],
  36473. [
  36474. [
  36475. 1,
  36476. 1
  36477. ],
  36478. [
  36479. 1
  36480. ],
  36481. [
  36482. 200,
  36483. 600,
  36484. 500,
  36485. 3,
  36486. 3,
  36487. 1,
  36488. 1
  36489. ]
  36490. ],
  36491. [
  36492. 0,
  36493. "Default",
  36494. 1,
  36495. 1
  36496. ]
  36497. ]
  36498. , [
  36499. [192, 320, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  36500. 0,
  36501. 738,
  36502. [
  36503. [0],
  36504. [0],
  36505. [0]
  36506. ],
  36507. [
  36508. [
  36509. 2,
  36510. 1
  36511. ],
  36512. [
  36513. 1
  36514. ],
  36515. [
  36516. 200,
  36517. 600,
  36518. 500,
  36519. 3,
  36520. 3,
  36521. 1,
  36522. 1
  36523. ]
  36524. ],
  36525. [
  36526. 0,
  36527. "Default",
  36528. 0,
  36529. 1
  36530. ]
  36531. ]
  36532. , [
  36533. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  36534. 0,
  36535. 741,
  36536. [
  36537. [0],
  36538. [0],
  36539. [0]
  36540. ],
  36541. [
  36542. [
  36543. 2,
  36544. 1
  36545. ],
  36546. [
  36547. 1
  36548. ],
  36549. [
  36550. 200,
  36551. 600,
  36552. 500,
  36553. 3,
  36554. 3,
  36555. 1,
  36556. 1
  36557. ]
  36558. ],
  36559. [
  36560. 0,
  36561. "Default",
  36562. 2,
  36563. 1
  36564. ]
  36565. ]
  36566. , [
  36567. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36568. 0,
  36569. 743,
  36570. [
  36571. [0],
  36572. [0],
  36573. [0]
  36574. ],
  36575. [
  36576. [
  36577. 1,
  36578. 1
  36579. ],
  36580. [
  36581. 1
  36582. ],
  36583. [
  36584. 200,
  36585. 600,
  36586. 500,
  36587. 3,
  36588. 3,
  36589. 1,
  36590. 1
  36591. ]
  36592. ],
  36593. [
  36594. 0,
  36595. "Default",
  36596. 3,
  36597. 1
  36598. ]
  36599. ]
  36600. , [
  36601. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36602. 0,
  36603. 747,
  36604. [
  36605. [0],
  36606. [0],
  36607. [0]
  36608. ],
  36609. [
  36610. [
  36611. 1,
  36612. 1
  36613. ],
  36614. [
  36615. 1
  36616. ],
  36617. [
  36618. 200,
  36619. 600,
  36620. 500,
  36621. 3,
  36622. 3,
  36623. 1,
  36624. 1
  36625. ]
  36626. ],
  36627. [
  36628. 0,
  36629. "Default",
  36630. 3,
  36631. 1
  36632. ]
  36633. ]
  36634. , [
  36635. [0, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  36636. 0,
  36637. 748,
  36638. [
  36639. [0],
  36640. [0],
  36641. [0]
  36642. ],
  36643. [
  36644. [
  36645. 2,
  36646. 1
  36647. ],
  36648. [
  36649. 1
  36650. ],
  36651. [
  36652. 200,
  36653. 600,
  36654. 500,
  36655. 3,
  36656. 3,
  36657. 1,
  36658. 1
  36659. ]
  36660. ],
  36661. [
  36662. 0,
  36663. "Default",
  36664. 2,
  36665. 1
  36666. ]
  36667. ]
  36668. , [
  36669. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  36670. 0,
  36671. 750,
  36672. [
  36673. [0],
  36674. [0],
  36675. [0]
  36676. ],
  36677. [
  36678. [
  36679. 2,
  36680. 1
  36681. ],
  36682. [
  36683. 1
  36684. ],
  36685. [
  36686. 200,
  36687. 600,
  36688. 500,
  36689. 3,
  36690. 3,
  36691. 1,
  36692. 1
  36693. ]
  36694. ],
  36695. [
  36696. 0,
  36697. "Default",
  36698. 2,
  36699. 1
  36700. ]
  36701. ]
  36702. , [
  36703. [320, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  36704. 0,
  36705. 704,
  36706. [
  36707. [0],
  36708. [0],
  36709. [0]
  36710. ],
  36711. [
  36712. [
  36713. 2,
  36714. 1
  36715. ],
  36716. [
  36717. 1
  36718. ],
  36719. [
  36720. 200,
  36721. 600,
  36722. 500,
  36723. 3,
  36724. 3,
  36725. 1,
  36726. 1
  36727. ]
  36728. ],
  36729. [
  36730. 0,
  36731. "Default",
  36732. 0,
  36733. 1
  36734. ]
  36735. ]
  36736. ],
  36737. [ ]
  36738. ]
  36739. ],
  36740. [
  36741. ],
  36742. []
  36743. ]
  36744. , [
  36745. "level23",
  36746. 384,
  36747. 600,
  36748. false,
  36749. "level",
  36750. 7134303502515761,
  36751. [
  36752. [
  36753. "Layer 0",
  36754. 0,
  36755. 2440430589992213,
  36756. true,
  36757. [44, 44, 44],
  36758. false,
  36759. 1,
  36760. 1,
  36761. 1,
  36762. false,
  36763. 1,
  36764. 0,
  36765. 0,
  36766. [
  36767. [
  36768. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  36769. 3,
  36770. 707,
  36771. [
  36772. ],
  36773. [
  36774. ],
  36775. [
  36776. 0,
  36777. "Default",
  36778. 0,
  36779. 1
  36780. ]
  36781. ]
  36782. , [
  36783. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36784. 0,
  36785. 709,
  36786. [
  36787. [0],
  36788. [0],
  36789. [1]
  36790. ],
  36791. [
  36792. [
  36793. 1,
  36794. 1
  36795. ],
  36796. [
  36797. 1
  36798. ],
  36799. [
  36800. 200,
  36801. 600,
  36802. 500,
  36803. 3,
  36804. 3,
  36805. 1,
  36806. 1
  36807. ]
  36808. ],
  36809. [
  36810. 0,
  36811. "Red",
  36812. 4,
  36813. 1
  36814. ]
  36815. ]
  36816. , [
  36817. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  36818. 2,
  36819. 711,
  36820. [
  36821. ],
  36822. [
  36823. ],
  36824. [
  36825. 0,
  36826. "Default",
  36827. 0,
  36828. 1
  36829. ]
  36830. ]
  36831. , [
  36832. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36833. 1,
  36834. 712,
  36835. [
  36836. ],
  36837. [
  36838. ],
  36839. [
  36840. 1,
  36841. "Default",
  36842. 0,
  36843. 1
  36844. ]
  36845. ]
  36846. , [
  36847. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36848. 1,
  36849. 714,
  36850. [
  36851. ],
  36852. [
  36853. ],
  36854. [
  36855. 1,
  36856. "Default",
  36857. 0,
  36858. 1
  36859. ]
  36860. ]
  36861. , [
  36862. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  36863. 3,
  36864. 751,
  36865. [
  36866. ],
  36867. [
  36868. ],
  36869. [
  36870. 0,
  36871. "Default",
  36872. 2,
  36873. 1
  36874. ]
  36875. ]
  36876. , [
  36877. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  36878. 3,
  36879. 752,
  36880. [
  36881. ],
  36882. [
  36883. ],
  36884. [
  36885. 0,
  36886. "Default",
  36887. 1,
  36888. 1
  36889. ]
  36890. ]
  36891. , [
  36892. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  36893. 4,
  36894. 753,
  36895. [
  36896. [0]
  36897. ],
  36898. [
  36899. [
  36900. 1,
  36901. 0,
  36902. 0,
  36903. 4,
  36904. 0,
  36905. 0,
  36906. 0,
  36907. 50,
  36908. 0
  36909. ]
  36910. ],
  36911. [
  36912. 0,
  36913. "Default",
  36914. 0,
  36915. 1
  36916. ]
  36917. ]
  36918. , [
  36919. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  36920. 4,
  36921. 754,
  36922. [
  36923. [1]
  36924. ],
  36925. [
  36926. [
  36927. 1,
  36928. 0,
  36929. 0,
  36930. 4,
  36931. 0,
  36932. 0,
  36933. 0,
  36934. 50,
  36935. 0
  36936. ]
  36937. ],
  36938. [
  36939. 0,
  36940. "Default",
  36941. 2,
  36942. 1
  36943. ]
  36944. ]
  36945. , [
  36946. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  36947. 4,
  36948. 755,
  36949. [
  36950. [2]
  36951. ],
  36952. [
  36953. [
  36954. 1,
  36955. 0,
  36956. 0,
  36957. 4,
  36958. 0,
  36959. 0,
  36960. 0,
  36961. 50,
  36962. 0
  36963. ]
  36964. ],
  36965. [
  36966. 0,
  36967. "Default",
  36968. 1,
  36969. 1
  36970. ]
  36971. ]
  36972. , [
  36973. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  36974. 5,
  36975. 756,
  36976. [
  36977. [0],
  36978. [0]
  36979. ],
  36980. [
  36981. ],
  36982. [
  36983. 0,
  36984. "Default",
  36985. 0,
  36986. 1
  36987. ]
  36988. ]
  36989. , [
  36990. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  36991. 6,
  36992. 757,
  36993. [
  36994. [1]
  36995. ],
  36996. [
  36997. ],
  36998. [
  36999. 29,
  37000. 43,
  37001. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  37002. sg_texts[SG.lang]["BEST:"],
  37003. 1,
  37004. 0,
  37005. 0,
  37006. 0,
  37007. 0,
  37008. 0,
  37009. 0,
  37010. 0
  37011. ]
  37012. ]
  37013. , [
  37014. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37015. 6,
  37016. 758,
  37017. [
  37018. [0]
  37019. ],
  37020. [
  37021. ],
  37022. [
  37023. 29,
  37024. 43,
  37025. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  37026. "MOVE:",
  37027. 1,
  37028. 0,
  37029. 0,
  37030. 0,
  37031. 0,
  37032. 0,
  37033. 0,
  37034. 0
  37035. ]
  37036. ]
  37037. , [
  37038. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37039. 6,
  37040. 759,
  37041. [
  37042. [2]
  37043. ],
  37044. [
  37045. ],
  37046. [
  37047. 29,
  37048. 43,
  37049. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  37050. sg_texts[SG.lang]["LEVEL:"]+" 01",
  37051. 1,
  37052. 0,
  37053. 0,
  37054. 0,
  37055. 0,
  37056. 0,
  37057. 0,
  37058. 0
  37059. ]
  37060. ]
  37061. , [
  37062. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  37063. 4,
  37064. 760,
  37065. [
  37066. [3]
  37067. ],
  37068. [
  37069. [
  37070. 1,
  37071. 0,
  37072. 0,
  37073. 4,
  37074. 0,
  37075. 0,
  37076. 0,
  37077. 50,
  37078. 0
  37079. ]
  37080. ],
  37081. [
  37082. 0,
  37083. "Default",
  37084. 3,
  37085. 1
  37086. ]
  37087. ]
  37088. , [
  37089. [0, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37090. 0,
  37091. 763,
  37092. [
  37093. [0],
  37094. [0],
  37095. [0]
  37096. ],
  37097. [
  37098. [
  37099. 1,
  37100. 1
  37101. ],
  37102. [
  37103. 1
  37104. ],
  37105. [
  37106. 200,
  37107. 600,
  37108. 500,
  37109. 3,
  37110. 3,
  37111. 1,
  37112. 1
  37113. ]
  37114. ],
  37115. [
  37116. 0,
  37117. "Default",
  37118. 1,
  37119. 1
  37120. ]
  37121. ]
  37122. , [
  37123. [256, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  37124. 0,
  37125. 764,
  37126. [
  37127. [0],
  37128. [0],
  37129. [0]
  37130. ],
  37131. [
  37132. [
  37133. 2,
  37134. 1
  37135. ],
  37136. [
  37137. 1
  37138. ],
  37139. [
  37140. 200,
  37141. 600,
  37142. 500,
  37143. 3,
  37144. 3,
  37145. 1,
  37146. 1
  37147. ]
  37148. ],
  37149. [
  37150. 0,
  37151. "Default",
  37152. 0,
  37153. 1
  37154. ]
  37155. ]
  37156. , [
  37157. [320, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  37158. 0,
  37159. 765,
  37160. [
  37161. [0],
  37162. [0],
  37163. [0]
  37164. ],
  37165. [
  37166. [
  37167. 2,
  37168. 1
  37169. ],
  37170. [
  37171. 1
  37172. ],
  37173. [
  37174. 200,
  37175. 600,
  37176. 500,
  37177. 3,
  37178. 3,
  37179. 1,
  37180. 1
  37181. ]
  37182. ],
  37183. [
  37184. 0,
  37185. "Default",
  37186. 2,
  37187. 1
  37188. ]
  37189. ]
  37190. , [
  37191. [0, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37192. 0,
  37193. 766,
  37194. [
  37195. [0],
  37196. [0],
  37197. [0]
  37198. ],
  37199. [
  37200. [
  37201. 1,
  37202. 1
  37203. ],
  37204. [
  37205. 1
  37206. ],
  37207. [
  37208. 200,
  37209. 600,
  37210. 500,
  37211. 3,
  37212. 3,
  37213. 1,
  37214. 1
  37215. ]
  37216. ],
  37217. [
  37218. 0,
  37219. "Default",
  37220. 3,
  37221. 1
  37222. ]
  37223. ]
  37224. , [
  37225. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  37226. 0,
  37227. 767,
  37228. [
  37229. [0],
  37230. [0],
  37231. [0]
  37232. ],
  37233. [
  37234. [
  37235. 2,
  37236. 1
  37237. ],
  37238. [
  37239. 1
  37240. ],
  37241. [
  37242. 200,
  37243. 600,
  37244. 500,
  37245. 3,
  37246. 3,
  37247. 1,
  37248. 1
  37249. ]
  37250. ],
  37251. [
  37252. 0,
  37253. "Default",
  37254. 2,
  37255. 1
  37256. ]
  37257. ]
  37258. , [
  37259. [128, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37260. 0,
  37261. 769,
  37262. [
  37263. [0],
  37264. [0],
  37265. [0]
  37266. ],
  37267. [
  37268. [
  37269. 1,
  37270. 1
  37271. ],
  37272. [
  37273. 1
  37274. ],
  37275. [
  37276. 200,
  37277. 600,
  37278. 500,
  37279. 3,
  37280. 3,
  37281. 1,
  37282. 1
  37283. ]
  37284. ],
  37285. [
  37286. 0,
  37287. "Default",
  37288. 3,
  37289. 1
  37290. ]
  37291. ]
  37292. , [
  37293. [320, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  37294. 0,
  37295. 772,
  37296. [
  37297. [0],
  37298. [0],
  37299. [0]
  37300. ],
  37301. [
  37302. [
  37303. 2,
  37304. 1
  37305. ],
  37306. [
  37307. 1
  37308. ],
  37309. [
  37310. 200,
  37311. 600,
  37312. 500,
  37313. 3,
  37314. 3,
  37315. 1,
  37316. 1
  37317. ]
  37318. ],
  37319. [
  37320. 0,
  37321. "Default",
  37322. 2,
  37323. 1
  37324. ]
  37325. ]
  37326. , [
  37327. [192, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  37328. 0,
  37329. 776,
  37330. [
  37331. [0],
  37332. [0],
  37333. [0]
  37334. ],
  37335. [
  37336. [
  37337. 2,
  37338. 1
  37339. ],
  37340. [
  37341. 1
  37342. ],
  37343. [
  37344. 200,
  37345. 600,
  37346. 500,
  37347. 3,
  37348. 3,
  37349. 1,
  37350. 1
  37351. ]
  37352. ],
  37353. [
  37354. 0,
  37355. "Default",
  37356. 2,
  37357. 1
  37358. ]
  37359. ]
  37360. , [
  37361. [128, 192, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37362. 0,
  37363. 739,
  37364. [
  37365. [0],
  37366. [0],
  37367. [0]
  37368. ],
  37369. [
  37370. [
  37371. 1,
  37372. 1
  37373. ],
  37374. [
  37375. 1
  37376. ],
  37377. [
  37378. 200,
  37379. 600,
  37380. 500,
  37381. 3,
  37382. 3,
  37383. 1,
  37384. 1
  37385. ]
  37386. ],
  37387. [
  37388. 0,
  37389. "Default",
  37390. 1,
  37391. 1
  37392. ]
  37393. ]
  37394. , [
  37395. [192, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37396. 0,
  37397. 740,
  37398. [
  37399. [0],
  37400. [0],
  37401. [0]
  37402. ],
  37403. [
  37404. [
  37405. 1,
  37406. 1
  37407. ],
  37408. [
  37409. 1
  37410. ],
  37411. [
  37412. 200,
  37413. 600,
  37414. 500,
  37415. 3,
  37416. 3,
  37417. 1,
  37418. 1
  37419. ]
  37420. ],
  37421. [
  37422. 0,
  37423. "Default",
  37424. 1,
  37425. 1
  37426. ]
  37427. ]
  37428. ],
  37429. [ ]
  37430. ]
  37431. ],
  37432. [
  37433. ],
  37434. []
  37435. ]
  37436. , [
  37437. "level24",
  37438. 384,
  37439. 600,
  37440. false,
  37441. "level",
  37442. 9111904722197818,
  37443. [
  37444. [
  37445. "Layer 0",
  37446. 0,
  37447. 5578458993464773,
  37448. true,
  37449. [44, 44, 44],
  37450. false,
  37451. 1,
  37452. 1,
  37453. 1,
  37454. false,
  37455. 1,
  37456. 0,
  37457. 0,
  37458. [
  37459. [
  37460. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  37461. 3,
  37462. 742,
  37463. [
  37464. ],
  37465. [
  37466. ],
  37467. [
  37468. 0,
  37469. "Default",
  37470. 0,
  37471. 1
  37472. ]
  37473. ]
  37474. , [
  37475. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37476. 0,
  37477. 744,
  37478. [
  37479. [0],
  37480. [0],
  37481. [1]
  37482. ],
  37483. [
  37484. [
  37485. 1,
  37486. 1
  37487. ],
  37488. [
  37489. 1
  37490. ],
  37491. [
  37492. 200,
  37493. 600,
  37494. 500,
  37495. 3,
  37496. 3,
  37497. 1,
  37498. 1
  37499. ]
  37500. ],
  37501. [
  37502. 0,
  37503. "Red",
  37504. 4,
  37505. 1
  37506. ]
  37507. ]
  37508. , [
  37509. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  37510. 2,
  37511. 745,
  37512. [
  37513. ],
  37514. [
  37515. ],
  37516. [
  37517. 0,
  37518. "Default",
  37519. 0,
  37520. 1
  37521. ]
  37522. ]
  37523. , [
  37524. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37525. 1,
  37526. 746,
  37527. [
  37528. ],
  37529. [
  37530. ],
  37531. [
  37532. 1,
  37533. "Default",
  37534. 0,
  37535. 1
  37536. ]
  37537. ]
  37538. , [
  37539. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37540. 1,
  37541. 749,
  37542. [
  37543. ],
  37544. [
  37545. ],
  37546. [
  37547. 1,
  37548. "Default",
  37549. 0,
  37550. 1
  37551. ]
  37552. ]
  37553. , [
  37554. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  37555. 3,
  37556. 761,
  37557. [
  37558. ],
  37559. [
  37560. ],
  37561. [
  37562. 0,
  37563. "Default",
  37564. 2,
  37565. 1
  37566. ]
  37567. ]
  37568. , [
  37569. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  37570. 3,
  37571. 762,
  37572. [
  37573. ],
  37574. [
  37575. ],
  37576. [
  37577. 0,
  37578. "Default",
  37579. 1,
  37580. 1
  37581. ]
  37582. ]
  37583. , [
  37584. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  37585. 4,
  37586. 768,
  37587. [
  37588. [0]
  37589. ],
  37590. [
  37591. [
  37592. 1,
  37593. 0,
  37594. 0,
  37595. 4,
  37596. 0,
  37597. 0,
  37598. 0,
  37599. 50,
  37600. 0
  37601. ]
  37602. ],
  37603. [
  37604. 0,
  37605. "Default",
  37606. 0,
  37607. 1
  37608. ]
  37609. ]
  37610. , [
  37611. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  37612. 4,
  37613. 770,
  37614. [
  37615. [1]
  37616. ],
  37617. [
  37618. [
  37619. 1,
  37620. 0,
  37621. 0,
  37622. 4,
  37623. 0,
  37624. 0,
  37625. 0,
  37626. 50,
  37627. 0
  37628. ]
  37629. ],
  37630. [
  37631. 0,
  37632. "Default",
  37633. 2,
  37634. 1
  37635. ]
  37636. ]
  37637. , [
  37638. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  37639. 4,
  37640. 771,
  37641. [
  37642. [2]
  37643. ],
  37644. [
  37645. [
  37646. 1,
  37647. 0,
  37648. 0,
  37649. 4,
  37650. 0,
  37651. 0,
  37652. 0,
  37653. 50,
  37654. 0
  37655. ]
  37656. ],
  37657. [
  37658. 0,
  37659. "Default",
  37660. 1,
  37661. 1
  37662. ]
  37663. ]
  37664. , [
  37665. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  37666. 5,
  37667. 773,
  37668. [
  37669. [0],
  37670. [0]
  37671. ],
  37672. [
  37673. ],
  37674. [
  37675. 0,
  37676. "Default",
  37677. 0,
  37678. 1
  37679. ]
  37680. ]
  37681. , [
  37682. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37683. 6,
  37684. 774,
  37685. [
  37686. [1]
  37687. ],
  37688. [
  37689. ],
  37690. [
  37691. 29,
  37692. 43,
  37693. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  37694. sg_texts[SG.lang]["BEST:"],
  37695. 1,
  37696. 0,
  37697. 0,
  37698. 0,
  37699. 0,
  37700. 0,
  37701. 0,
  37702. 0
  37703. ]
  37704. ]
  37705. , [
  37706. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37707. 6,
  37708. 775,
  37709. [
  37710. [0]
  37711. ],
  37712. [
  37713. ],
  37714. [
  37715. 29,
  37716. 43,
  37717. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  37718. "MOVE:",
  37719. 1,
  37720. 0,
  37721. 0,
  37722. 0,
  37723. 0,
  37724. 0,
  37725. 0,
  37726. 0
  37727. ]
  37728. ]
  37729. , [
  37730. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37731. 6,
  37732. 777,
  37733. [
  37734. [2]
  37735. ],
  37736. [
  37737. ],
  37738. [
  37739. 29,
  37740. 43,
  37741. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  37742. sg_texts[SG.lang]["LEVEL:"]+" 01",
  37743. 1,
  37744. 0,
  37745. 0,
  37746. 0,
  37747. 0,
  37748. 0,
  37749. 0,
  37750. 0
  37751. ]
  37752. ]
  37753. , [
  37754. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  37755. 4,
  37756. 778,
  37757. [
  37758. [3]
  37759. ],
  37760. [
  37761. [
  37762. 1,
  37763. 0,
  37764. 0,
  37765. 4,
  37766. 0,
  37767. 0,
  37768. 0,
  37769. 50,
  37770. 0
  37771. ]
  37772. ],
  37773. [
  37774. 0,
  37775. "Default",
  37776. 3,
  37777. 1
  37778. ]
  37779. ]
  37780. , [
  37781. [256, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  37782. 0,
  37783. 780,
  37784. [
  37785. [0],
  37786. [0],
  37787. [0]
  37788. ],
  37789. [
  37790. [
  37791. 2,
  37792. 1
  37793. ],
  37794. [
  37795. 1
  37796. ],
  37797. [
  37798. 200,
  37799. 600,
  37800. 500,
  37801. 3,
  37802. 3,
  37803. 1,
  37804. 1
  37805. ]
  37806. ],
  37807. [
  37808. 0,
  37809. "Default",
  37810. 0,
  37811. 1
  37812. ]
  37813. ]
  37814. , [
  37815. [0, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37816. 0,
  37817. 782,
  37818. [
  37819. [0],
  37820. [0],
  37821. [0]
  37822. ],
  37823. [
  37824. [
  37825. 1,
  37826. 1
  37827. ],
  37828. [
  37829. 1
  37830. ],
  37831. [
  37832. 200,
  37833. 600,
  37834. 500,
  37835. 3,
  37836. 3,
  37837. 1,
  37838. 1
  37839. ]
  37840. ],
  37841. [
  37842. 0,
  37843. "Default",
  37844. 3,
  37845. 1
  37846. ]
  37847. ]
  37848. , [
  37849. [128, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  37850. 0,
  37851. 783,
  37852. [
  37853. [0],
  37854. [0],
  37855. [0]
  37856. ],
  37857. [
  37858. [
  37859. 2,
  37860. 1
  37861. ],
  37862. [
  37863. 1
  37864. ],
  37865. [
  37866. 200,
  37867. 600,
  37868. 500,
  37869. 3,
  37870. 3,
  37871. 1,
  37872. 1
  37873. ]
  37874. ],
  37875. [
  37876. 0,
  37877. "Default",
  37878. 2,
  37879. 1
  37880. ]
  37881. ]
  37882. , [
  37883. [192, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37884. 0,
  37885. 784,
  37886. [
  37887. [0],
  37888. [0],
  37889. [0]
  37890. ],
  37891. [
  37892. [
  37893. 1,
  37894. 1
  37895. ],
  37896. [
  37897. 1
  37898. ],
  37899. [
  37900. 200,
  37901. 600,
  37902. 500,
  37903. 3,
  37904. 3,
  37905. 1,
  37906. 1
  37907. ]
  37908. ],
  37909. [
  37910. 0,
  37911. "Default",
  37912. 3,
  37913. 1
  37914. ]
  37915. ]
  37916. , [
  37917. [128, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  37918. 0,
  37919. 785,
  37920. [
  37921. [0],
  37922. [0],
  37923. [0]
  37924. ],
  37925. [
  37926. [
  37927. 2,
  37928. 1
  37929. ],
  37930. [
  37931. 1
  37932. ],
  37933. [
  37934. 200,
  37935. 600,
  37936. 500,
  37937. 3,
  37938. 3,
  37939. 1,
  37940. 1
  37941. ]
  37942. ],
  37943. [
  37944. 0,
  37945. "Default",
  37946. 2,
  37947. 1
  37948. ]
  37949. ]
  37950. , [
  37951. [64, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  37952. 0,
  37953. 786,
  37954. [
  37955. [0],
  37956. [0],
  37957. [0]
  37958. ],
  37959. [
  37960. [
  37961. 2,
  37962. 1
  37963. ],
  37964. [
  37965. 1
  37966. ],
  37967. [
  37968. 200,
  37969. 600,
  37970. 500,
  37971. 3,
  37972. 3,
  37973. 1,
  37974. 1
  37975. ]
  37976. ],
  37977. [
  37978. 0,
  37979. "Default",
  37980. 2,
  37981. 1
  37982. ]
  37983. ]
  37984. , [
  37985. [0, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  37986. 0,
  37987. 787,
  37988. [
  37989. [0],
  37990. [0],
  37991. [0]
  37992. ],
  37993. [
  37994. [
  37995. 1,
  37996. 1
  37997. ],
  37998. [
  37999. 1
  38000. ],
  38001. [
  38002. 200,
  38003. 600,
  38004. 500,
  38005. 3,
  38006. 3,
  38007. 1,
  38008. 1
  38009. ]
  38010. ],
  38011. [
  38012. 0,
  38013. "Default",
  38014. 1,
  38015. 1
  38016. ]
  38017. ]
  38018. , [
  38019. [192, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  38020. 0,
  38021. 789,
  38022. [
  38023. [0],
  38024. [0],
  38025. [0]
  38026. ],
  38027. [
  38028. [
  38029. 2,
  38030. 1
  38031. ],
  38032. [
  38033. 1
  38034. ],
  38035. [
  38036. 200,
  38037. 600,
  38038. 500,
  38039. 3,
  38040. 3,
  38041. 1,
  38042. 1
  38043. ]
  38044. ],
  38045. [
  38046. 0,
  38047. "Default",
  38048. 2,
  38049. 1
  38050. ]
  38051. ]
  38052. , [
  38053. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38054. 0,
  38055. 790,
  38056. [
  38057. [0],
  38058. [0],
  38059. [0]
  38060. ],
  38061. [
  38062. [
  38063. 1,
  38064. 1
  38065. ],
  38066. [
  38067. 1
  38068. ],
  38069. [
  38070. 200,
  38071. 600,
  38072. 500,
  38073. 3,
  38074. 3,
  38075. 1,
  38076. 1
  38077. ]
  38078. ],
  38079. [
  38080. 0,
  38081. "Default",
  38082. 3,
  38083. 1
  38084. ]
  38085. ]
  38086. ],
  38087. [ ]
  38088. ]
  38089. ],
  38090. [
  38091. ],
  38092. []
  38093. ]
  38094. , [
  38095. "level25",
  38096. 384,
  38097. 600,
  38098. false,
  38099. "level",
  38100. 2836795208119585,
  38101. [
  38102. [
  38103. "Layer 0",
  38104. 0,
  38105. 3838443176366755,
  38106. true,
  38107. [44, 44, 44],
  38108. false,
  38109. 1,
  38110. 1,
  38111. 1,
  38112. false,
  38113. 1,
  38114. 0,
  38115. 0,
  38116. [
  38117. [
  38118. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  38119. 3,
  38120. 779,
  38121. [
  38122. ],
  38123. [
  38124. ],
  38125. [
  38126. 0,
  38127. "Default",
  38128. 0,
  38129. 1
  38130. ]
  38131. ]
  38132. , [
  38133. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38134. 0,
  38135. 781,
  38136. [
  38137. [0],
  38138. [0],
  38139. [1]
  38140. ],
  38141. [
  38142. [
  38143. 1,
  38144. 1
  38145. ],
  38146. [
  38147. 1
  38148. ],
  38149. [
  38150. 200,
  38151. 600,
  38152. 500,
  38153. 3,
  38154. 3,
  38155. 1,
  38156. 1
  38157. ]
  38158. ],
  38159. [
  38160. 0,
  38161. "Red",
  38162. 4,
  38163. 1
  38164. ]
  38165. ]
  38166. , [
  38167. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  38168. 2,
  38169. 788,
  38170. [
  38171. ],
  38172. [
  38173. ],
  38174. [
  38175. 0,
  38176. "Default",
  38177. 0,
  38178. 1
  38179. ]
  38180. ]
  38181. , [
  38182. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38183. 1,
  38184. 791,
  38185. [
  38186. ],
  38187. [
  38188. ],
  38189. [
  38190. 1,
  38191. "Default",
  38192. 0,
  38193. 1
  38194. ]
  38195. ]
  38196. , [
  38197. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38198. 1,
  38199. 792,
  38200. [
  38201. ],
  38202. [
  38203. ],
  38204. [
  38205. 1,
  38206. "Default",
  38207. 0,
  38208. 1
  38209. ]
  38210. ]
  38211. , [
  38212. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  38213. 3,
  38214. 793,
  38215. [
  38216. ],
  38217. [
  38218. ],
  38219. [
  38220. 0,
  38221. "Default",
  38222. 2,
  38223. 1
  38224. ]
  38225. ]
  38226. , [
  38227. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  38228. 3,
  38229. 794,
  38230. [
  38231. ],
  38232. [
  38233. ],
  38234. [
  38235. 0,
  38236. "Default",
  38237. 1,
  38238. 1
  38239. ]
  38240. ]
  38241. , [
  38242. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  38243. 4,
  38244. 795,
  38245. [
  38246. [0]
  38247. ],
  38248. [
  38249. [
  38250. 1,
  38251. 0,
  38252. 0,
  38253. 4,
  38254. 0,
  38255. 0,
  38256. 0,
  38257. 50,
  38258. 0
  38259. ]
  38260. ],
  38261. [
  38262. 0,
  38263. "Default",
  38264. 0,
  38265. 1
  38266. ]
  38267. ]
  38268. , [
  38269. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  38270. 4,
  38271. 796,
  38272. [
  38273. [1]
  38274. ],
  38275. [
  38276. [
  38277. 1,
  38278. 0,
  38279. 0,
  38280. 4,
  38281. 0,
  38282. 0,
  38283. 0,
  38284. 50,
  38285. 0
  38286. ]
  38287. ],
  38288. [
  38289. 0,
  38290. "Default",
  38291. 2,
  38292. 1
  38293. ]
  38294. ]
  38295. , [
  38296. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  38297. 4,
  38298. 797,
  38299. [
  38300. [2]
  38301. ],
  38302. [
  38303. [
  38304. 1,
  38305. 0,
  38306. 0,
  38307. 4,
  38308. 0,
  38309. 0,
  38310. 0,
  38311. 50,
  38312. 0
  38313. ]
  38314. ],
  38315. [
  38316. 0,
  38317. "Default",
  38318. 1,
  38319. 1
  38320. ]
  38321. ]
  38322. , [
  38323. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  38324. 5,
  38325. 798,
  38326. [
  38327. [0],
  38328. [0]
  38329. ],
  38330. [
  38331. ],
  38332. [
  38333. 0,
  38334. "Default",
  38335. 0,
  38336. 1
  38337. ]
  38338. ]
  38339. , [
  38340. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38341. 6,
  38342. 799,
  38343. [
  38344. [1]
  38345. ],
  38346. [
  38347. ],
  38348. [
  38349. 29,
  38350. 43,
  38351. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  38352. sg_texts[SG.lang]["BEST:"],
  38353. 1,
  38354. 0,
  38355. 0,
  38356. 0,
  38357. 0,
  38358. 0,
  38359. 0,
  38360. 0
  38361. ]
  38362. ]
  38363. , [
  38364. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38365. 6,
  38366. 800,
  38367. [
  38368. [0]
  38369. ],
  38370. [
  38371. ],
  38372. [
  38373. 29,
  38374. 43,
  38375. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  38376. "MOVE:",
  38377. 1,
  38378. 0,
  38379. 0,
  38380. 0,
  38381. 0,
  38382. 0,
  38383. 0,
  38384. 0
  38385. ]
  38386. ]
  38387. , [
  38388. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38389. 6,
  38390. 801,
  38391. [
  38392. [2]
  38393. ],
  38394. [
  38395. ],
  38396. [
  38397. 29,
  38398. 43,
  38399. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  38400. sg_texts[SG.lang]["LEVEL:"]+" 01",
  38401. 1,
  38402. 0,
  38403. 0,
  38404. 0,
  38405. 0,
  38406. 0,
  38407. 0,
  38408. 0
  38409. ]
  38410. ]
  38411. , [
  38412. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  38413. 4,
  38414. 802,
  38415. [
  38416. [3]
  38417. ],
  38418. [
  38419. [
  38420. 1,
  38421. 0,
  38422. 0,
  38423. 4,
  38424. 0,
  38425. 0,
  38426. 0,
  38427. 50,
  38428. 0
  38429. ]
  38430. ],
  38431. [
  38432. 0,
  38433. "Default",
  38434. 3,
  38435. 1
  38436. ]
  38437. ]
  38438. , [
  38439. [64, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  38440. 0,
  38441. 803,
  38442. [
  38443. [0],
  38444. [0],
  38445. [0]
  38446. ],
  38447. [
  38448. [
  38449. 2,
  38450. 1
  38451. ],
  38452. [
  38453. 1
  38454. ],
  38455. [
  38456. 200,
  38457. 600,
  38458. 500,
  38459. 3,
  38460. 3,
  38461. 1,
  38462. 1
  38463. ]
  38464. ],
  38465. [
  38466. 0,
  38467. "Default",
  38468. 0,
  38469. 1
  38470. ]
  38471. ]
  38472. , [
  38473. [0, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38474. 0,
  38475. 806,
  38476. [
  38477. [0],
  38478. [0],
  38479. [0]
  38480. ],
  38481. [
  38482. [
  38483. 1,
  38484. 1
  38485. ],
  38486. [
  38487. 1
  38488. ],
  38489. [
  38490. 200,
  38491. 600,
  38492. 500,
  38493. 3,
  38494. 3,
  38495. 1,
  38496. 1
  38497. ]
  38498. ],
  38499. [
  38500. 0,
  38501. "Default",
  38502. 3,
  38503. 1
  38504. ]
  38505. ]
  38506. , [
  38507. [0, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  38508. 0,
  38509. 807,
  38510. [
  38511. [0],
  38512. [0],
  38513. [0]
  38514. ],
  38515. [
  38516. [
  38517. 2,
  38518. 1
  38519. ],
  38520. [
  38521. 1
  38522. ],
  38523. [
  38524. 200,
  38525. 600,
  38526. 500,
  38527. 3,
  38528. 3,
  38529. 1,
  38530. 1
  38531. ]
  38532. ],
  38533. [
  38534. 0,
  38535. "Default",
  38536. 2,
  38537. 1
  38538. ]
  38539. ]
  38540. , [
  38541. [192, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38542. 0,
  38543. 809,
  38544. [
  38545. [0],
  38546. [0],
  38547. [0]
  38548. ],
  38549. [
  38550. [
  38551. 1,
  38552. 1
  38553. ],
  38554. [
  38555. 1
  38556. ],
  38557. [
  38558. 200,
  38559. 600,
  38560. 500,
  38561. 3,
  38562. 3,
  38563. 1,
  38564. 1
  38565. ]
  38566. ],
  38567. [
  38568. 0,
  38569. "Default",
  38570. 1,
  38571. 1
  38572. ]
  38573. ]
  38574. , [
  38575. [192, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  38576. 0,
  38577. 810,
  38578. [
  38579. [0],
  38580. [0],
  38581. [0]
  38582. ],
  38583. [
  38584. [
  38585. 2,
  38586. 1
  38587. ],
  38588. [
  38589. 1
  38590. ],
  38591. [
  38592. 200,
  38593. 600,
  38594. 500,
  38595. 3,
  38596. 3,
  38597. 1,
  38598. 1
  38599. ]
  38600. ],
  38601. [
  38602. 0,
  38603. "Default",
  38604. 2,
  38605. 1
  38606. ]
  38607. ]
  38608. , [
  38609. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38610. 0,
  38611. 811,
  38612. [
  38613. [0],
  38614. [0],
  38615. [0]
  38616. ],
  38617. [
  38618. [
  38619. 1,
  38620. 1
  38621. ],
  38622. [
  38623. 1
  38624. ],
  38625. [
  38626. 200,
  38627. 600,
  38628. 500,
  38629. 3,
  38630. 3,
  38631. 1,
  38632. 1
  38633. ]
  38634. ],
  38635. [
  38636. 0,
  38637. "Default",
  38638. 3,
  38639. 1
  38640. ]
  38641. ]
  38642. , [
  38643. [128, 320, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  38644. 0,
  38645. 1325,
  38646. [
  38647. [0],
  38648. [0],
  38649. [0]
  38650. ],
  38651. [
  38652. [
  38653. 2,
  38654. 1
  38655. ],
  38656. [
  38657. 1
  38658. ],
  38659. [
  38660. 200,
  38661. 600,
  38662. 500,
  38663. 3,
  38664. 3,
  38665. 1,
  38666. 1
  38667. ]
  38668. ],
  38669. [
  38670. 0,
  38671. "Default",
  38672. 0,
  38673. 1
  38674. ]
  38675. ]
  38676. , [
  38677. [0, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  38678. 0,
  38679. 1326,
  38680. [
  38681. [0],
  38682. [0],
  38683. [0]
  38684. ],
  38685. [
  38686. [
  38687. 2,
  38688. 1
  38689. ],
  38690. [
  38691. 1
  38692. ],
  38693. [
  38694. 200,
  38695. 600,
  38696. 500,
  38697. 3,
  38698. 3,
  38699. 1,
  38700. 1
  38701. ]
  38702. ],
  38703. [
  38704. 0,
  38705. "Default",
  38706. 2,
  38707. 1
  38708. ]
  38709. ]
  38710. , [
  38711. [320, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  38712. 0,
  38713. 805,
  38714. [
  38715. [0],
  38716. [0],
  38717. [0]
  38718. ],
  38719. [
  38720. [
  38721. 2,
  38722. 1
  38723. ],
  38724. [
  38725. 1
  38726. ],
  38727. [
  38728. 200,
  38729. 600,
  38730. 500,
  38731. 3,
  38732. 3,
  38733. 1,
  38734. 1
  38735. ]
  38736. ],
  38737. [
  38738. 0,
  38739. "Default",
  38740. 0,
  38741. 1
  38742. ]
  38743. ]
  38744. ],
  38745. [ ]
  38746. ]
  38747. ],
  38748. [
  38749. ],
  38750. []
  38751. ]
  38752. , [
  38753. "level26",
  38754. 384,
  38755. 600,
  38756. false,
  38757. "level",
  38758. 2916441160240258,
  38759. [
  38760. [
  38761. "Layer 0",
  38762. 0,
  38763. 8889921899272823,
  38764. true,
  38765. [44, 44, 44],
  38766. false,
  38767. 1,
  38768. 1,
  38769. 1,
  38770. false,
  38771. 1,
  38772. 0,
  38773. 0,
  38774. [
  38775. [
  38776. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  38777. 3,
  38778. 814,
  38779. [
  38780. ],
  38781. [
  38782. ],
  38783. [
  38784. 0,
  38785. "Default",
  38786. 0,
  38787. 1
  38788. ]
  38789. ]
  38790. , [
  38791. [64, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38792. 0,
  38793. 815,
  38794. [
  38795. [0],
  38796. [0],
  38797. [1]
  38798. ],
  38799. [
  38800. [
  38801. 1,
  38802. 1
  38803. ],
  38804. [
  38805. 1
  38806. ],
  38807. [
  38808. 200,
  38809. 600,
  38810. 500,
  38811. 3,
  38812. 3,
  38813. 1,
  38814. 1
  38815. ]
  38816. ],
  38817. [
  38818. 0,
  38819. "Red",
  38820. 4,
  38821. 1
  38822. ]
  38823. ]
  38824. , [
  38825. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  38826. 2,
  38827. 816,
  38828. [
  38829. ],
  38830. [
  38831. ],
  38832. [
  38833. 0,
  38834. "Default",
  38835. 0,
  38836. 1
  38837. ]
  38838. ]
  38839. , [
  38840. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38841. 1,
  38842. 817,
  38843. [
  38844. ],
  38845. [
  38846. ],
  38847. [
  38848. 1,
  38849. "Default",
  38850. 0,
  38851. 1
  38852. ]
  38853. ]
  38854. , [
  38855. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38856. 1,
  38857. 818,
  38858. [
  38859. ],
  38860. [
  38861. ],
  38862. [
  38863. 1,
  38864. "Default",
  38865. 0,
  38866. 1
  38867. ]
  38868. ]
  38869. , [
  38870. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  38871. 3,
  38872. 819,
  38873. [
  38874. ],
  38875. [
  38876. ],
  38877. [
  38878. 0,
  38879. "Default",
  38880. 2,
  38881. 1
  38882. ]
  38883. ]
  38884. , [
  38885. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  38886. 3,
  38887. 820,
  38888. [
  38889. ],
  38890. [
  38891. ],
  38892. [
  38893. 0,
  38894. "Default",
  38895. 1,
  38896. 1
  38897. ]
  38898. ]
  38899. , [
  38900. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  38901. 4,
  38902. 821,
  38903. [
  38904. [0]
  38905. ],
  38906. [
  38907. [
  38908. 1,
  38909. 0,
  38910. 0,
  38911. 4,
  38912. 0,
  38913. 0,
  38914. 0,
  38915. 50,
  38916. 0
  38917. ]
  38918. ],
  38919. [
  38920. 0,
  38921. "Default",
  38922. 0,
  38923. 1
  38924. ]
  38925. ]
  38926. , [
  38927. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  38928. 4,
  38929. 822,
  38930. [
  38931. [1]
  38932. ],
  38933. [
  38934. [
  38935. 1,
  38936. 0,
  38937. 0,
  38938. 4,
  38939. 0,
  38940. 0,
  38941. 0,
  38942. 50,
  38943. 0
  38944. ]
  38945. ],
  38946. [
  38947. 0,
  38948. "Default",
  38949. 2,
  38950. 1
  38951. ]
  38952. ]
  38953. , [
  38954. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  38955. 4,
  38956. 823,
  38957. [
  38958. [2]
  38959. ],
  38960. [
  38961. [
  38962. 1,
  38963. 0,
  38964. 0,
  38965. 4,
  38966. 0,
  38967. 0,
  38968. 0,
  38969. 50,
  38970. 0
  38971. ]
  38972. ],
  38973. [
  38974. 0,
  38975. "Default",
  38976. 1,
  38977. 1
  38978. ]
  38979. ]
  38980. , [
  38981. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  38982. 5,
  38983. 824,
  38984. [
  38985. [0],
  38986. [0]
  38987. ],
  38988. [
  38989. ],
  38990. [
  38991. 0,
  38992. "Default",
  38993. 0,
  38994. 1
  38995. ]
  38996. ]
  38997. , [
  38998. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  38999. 6,
  39000. 825,
  39001. [
  39002. [1]
  39003. ],
  39004. [
  39005. ],
  39006. [
  39007. 29,
  39008. 43,
  39009. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  39010. sg_texts[SG.lang]["BEST:"],
  39011. 1,
  39012. 0,
  39013. 0,
  39014. 0,
  39015. 0,
  39016. 0,
  39017. 0,
  39018. 0
  39019. ]
  39020. ]
  39021. , [
  39022. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39023. 6,
  39024. 826,
  39025. [
  39026. [0]
  39027. ],
  39028. [
  39029. ],
  39030. [
  39031. 29,
  39032. 43,
  39033. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  39034. "MOVE:",
  39035. 1,
  39036. 0,
  39037. 0,
  39038. 0,
  39039. 0,
  39040. 0,
  39041. 0,
  39042. 0
  39043. ]
  39044. ]
  39045. , [
  39046. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39047. 6,
  39048. 827,
  39049. [
  39050. [2]
  39051. ],
  39052. [
  39053. ],
  39054. [
  39055. 29,
  39056. 43,
  39057. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  39058. sg_texts[SG.lang]["LEVEL:"]+" 01",
  39059. 1,
  39060. 0,
  39061. 0,
  39062. 0,
  39063. 0,
  39064. 0,
  39065. 0,
  39066. 0
  39067. ]
  39068. ]
  39069. , [
  39070. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  39071. 4,
  39072. 828,
  39073. [
  39074. [3]
  39075. ],
  39076. [
  39077. [
  39078. 1,
  39079. 0,
  39080. 0,
  39081. 4,
  39082. 0,
  39083. 0,
  39084. 0,
  39085. 50,
  39086. 0
  39087. ]
  39088. ],
  39089. [
  39090. 0,
  39091. "Default",
  39092. 3,
  39093. 1
  39094. ]
  39095. ]
  39096. , [
  39097. [256, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  39098. 0,
  39099. 829,
  39100. [
  39101. [0],
  39102. [0],
  39103. [0]
  39104. ],
  39105. [
  39106. [
  39107. 2,
  39108. 1
  39109. ],
  39110. [
  39111. 1
  39112. ],
  39113. [
  39114. 200,
  39115. 600,
  39116. 500,
  39117. 3,
  39118. 3,
  39119. 1,
  39120. 1
  39121. ]
  39122. ],
  39123. [
  39124. 0,
  39125. "Default",
  39126. 0,
  39127. 1
  39128. ]
  39129. ]
  39130. , [
  39131. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  39132. 0,
  39133. 833,
  39134. [
  39135. [0],
  39136. [0],
  39137. [0]
  39138. ],
  39139. [
  39140. [
  39141. 2,
  39142. 1
  39143. ],
  39144. [
  39145. 1
  39146. ],
  39147. [
  39148. 200,
  39149. 600,
  39150. 500,
  39151. 3,
  39152. 3,
  39153. 1,
  39154. 1
  39155. ]
  39156. ],
  39157. [
  39158. 0,
  39159. "Default",
  39160. 2,
  39161. 1
  39162. ]
  39163. ]
  39164. , [
  39165. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  39166. 0,
  39167. 834,
  39168. [
  39169. [0],
  39170. [0],
  39171. [0]
  39172. ],
  39173. [
  39174. [
  39175. 2,
  39176. 1
  39177. ],
  39178. [
  39179. 1
  39180. ],
  39181. [
  39182. 200,
  39183. 600,
  39184. 500,
  39185. 3,
  39186. 3,
  39187. 1,
  39188. 1
  39189. ]
  39190. ],
  39191. [
  39192. 0,
  39193. "Default",
  39194. 2,
  39195. 1
  39196. ]
  39197. ]
  39198. , [
  39199. [64, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39200. 0,
  39201. 835,
  39202. [
  39203. [0],
  39204. [0],
  39205. [0]
  39206. ],
  39207. [
  39208. [
  39209. 1,
  39210. 1
  39211. ],
  39212. [
  39213. 1
  39214. ],
  39215. [
  39216. 200,
  39217. 600,
  39218. 500,
  39219. 3,
  39220. 3,
  39221. 1,
  39222. 1
  39223. ]
  39224. ],
  39225. [
  39226. 0,
  39227. "Default",
  39228. 1,
  39229. 1
  39230. ]
  39231. ]
  39232. , [
  39233. [0, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  39234. 0,
  39235. 836,
  39236. [
  39237. [0],
  39238. [0],
  39239. [0]
  39240. ],
  39241. [
  39242. [
  39243. 2,
  39244. 1
  39245. ],
  39246. [
  39247. 1
  39248. ],
  39249. [
  39250. 200,
  39251. 600,
  39252. 500,
  39253. 3,
  39254. 3,
  39255. 1,
  39256. 1
  39257. ]
  39258. ],
  39259. [
  39260. 0,
  39261. "Default",
  39262. 2,
  39263. 1
  39264. ]
  39265. ]
  39266. , [
  39267. [256, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39268. 0,
  39269. 838,
  39270. [
  39271. [0],
  39272. [0],
  39273. [0]
  39274. ],
  39275. [
  39276. [
  39277. 1,
  39278. 1
  39279. ],
  39280. [
  39281. 1
  39282. ],
  39283. [
  39284. 200,
  39285. 600,
  39286. 500,
  39287. 3,
  39288. 3,
  39289. 1,
  39290. 1
  39291. ]
  39292. ],
  39293. [
  39294. 0,
  39295. "Default",
  39296. 3,
  39297. 1
  39298. ]
  39299. ]
  39300. , [
  39301. [0, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39302. 0,
  39303. 839,
  39304. [
  39305. [0],
  39306. [0],
  39307. [0]
  39308. ],
  39309. [
  39310. [
  39311. 1,
  39312. 1
  39313. ],
  39314. [
  39315. 1
  39316. ],
  39317. [
  39318. 200,
  39319. 600,
  39320. 500,
  39321. 3,
  39322. 3,
  39323. 1,
  39324. 1
  39325. ]
  39326. ],
  39327. [
  39328. 0,
  39329. "Default",
  39330. 3,
  39331. 1
  39332. ]
  39333. ]
  39334. , [
  39335. [192, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39336. 0,
  39337. 840,
  39338. [
  39339. [0],
  39340. [0],
  39341. [0]
  39342. ],
  39343. [
  39344. [
  39345. 1,
  39346. 1
  39347. ],
  39348. [
  39349. 1
  39350. ],
  39351. [
  39352. 200,
  39353. 600,
  39354. 500,
  39355. 3,
  39356. 3,
  39357. 1,
  39358. 1
  39359. ]
  39360. ],
  39361. [
  39362. 0,
  39363. "Default",
  39364. 1,
  39365. 1
  39366. ]
  39367. ]
  39368. ],
  39369. [ ]
  39370. ]
  39371. ],
  39372. [
  39373. ],
  39374. []
  39375. ]
  39376. , [
  39377. "level27",
  39378. 384,
  39379. 600,
  39380. false,
  39381. "level",
  39382. 5884138401696381,
  39383. [
  39384. [
  39385. "Layer 0",
  39386. 0,
  39387. 943627014304842,
  39388. true,
  39389. [44, 44, 44],
  39390. false,
  39391. 1,
  39392. 1,
  39393. 1,
  39394. false,
  39395. 1,
  39396. 0,
  39397. 0,
  39398. [
  39399. [
  39400. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  39401. 3,
  39402. 830,
  39403. [
  39404. ],
  39405. [
  39406. ],
  39407. [
  39408. 0,
  39409. "Default",
  39410. 0,
  39411. 1
  39412. ]
  39413. ]
  39414. , [
  39415. [192, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39416. 0,
  39417. 831,
  39418. [
  39419. [0],
  39420. [0],
  39421. [1]
  39422. ],
  39423. [
  39424. [
  39425. 1,
  39426. 1
  39427. ],
  39428. [
  39429. 1
  39430. ],
  39431. [
  39432. 200,
  39433. 600,
  39434. 500,
  39435. 3,
  39436. 3,
  39437. 1,
  39438. 1
  39439. ]
  39440. ],
  39441. [
  39442. 0,
  39443. "Red",
  39444. 4,
  39445. 1
  39446. ]
  39447. ]
  39448. , [
  39449. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  39450. 2,
  39451. 832,
  39452. [
  39453. ],
  39454. [
  39455. ],
  39456. [
  39457. 0,
  39458. "Default",
  39459. 0,
  39460. 1
  39461. ]
  39462. ]
  39463. , [
  39464. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39465. 1,
  39466. 837,
  39467. [
  39468. ],
  39469. [
  39470. ],
  39471. [
  39472. 1,
  39473. "Default",
  39474. 0,
  39475. 1
  39476. ]
  39477. ]
  39478. , [
  39479. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39480. 1,
  39481. 841,
  39482. [
  39483. ],
  39484. [
  39485. ],
  39486. [
  39487. 1,
  39488. "Default",
  39489. 0,
  39490. 1
  39491. ]
  39492. ]
  39493. , [
  39494. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  39495. 3,
  39496. 842,
  39497. [
  39498. ],
  39499. [
  39500. ],
  39501. [
  39502. 0,
  39503. "Default",
  39504. 2,
  39505. 1
  39506. ]
  39507. ]
  39508. , [
  39509. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  39510. 3,
  39511. 843,
  39512. [
  39513. ],
  39514. [
  39515. ],
  39516. [
  39517. 0,
  39518. "Default",
  39519. 1,
  39520. 1
  39521. ]
  39522. ]
  39523. , [
  39524. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  39525. 4,
  39526. 844,
  39527. [
  39528. [0]
  39529. ],
  39530. [
  39531. [
  39532. 1,
  39533. 0,
  39534. 0,
  39535. 4,
  39536. 0,
  39537. 0,
  39538. 0,
  39539. 50,
  39540. 0
  39541. ]
  39542. ],
  39543. [
  39544. 0,
  39545. "Default",
  39546. 0,
  39547. 1
  39548. ]
  39549. ]
  39550. , [
  39551. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  39552. 4,
  39553. 845,
  39554. [
  39555. [1]
  39556. ],
  39557. [
  39558. [
  39559. 1,
  39560. 0,
  39561. 0,
  39562. 4,
  39563. 0,
  39564. 0,
  39565. 0,
  39566. 50,
  39567. 0
  39568. ]
  39569. ],
  39570. [
  39571. 0,
  39572. "Default",
  39573. 2,
  39574. 1
  39575. ]
  39576. ]
  39577. , [
  39578. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  39579. 4,
  39580. 846,
  39581. [
  39582. [2]
  39583. ],
  39584. [
  39585. [
  39586. 1,
  39587. 0,
  39588. 0,
  39589. 4,
  39590. 0,
  39591. 0,
  39592. 0,
  39593. 50,
  39594. 0
  39595. ]
  39596. ],
  39597. [
  39598. 0,
  39599. "Default",
  39600. 1,
  39601. 1
  39602. ]
  39603. ]
  39604. , [
  39605. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  39606. 5,
  39607. 847,
  39608. [
  39609. [0],
  39610. [0]
  39611. ],
  39612. [
  39613. ],
  39614. [
  39615. 0,
  39616. "Default",
  39617. 0,
  39618. 1
  39619. ]
  39620. ]
  39621. , [
  39622. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39623. 6,
  39624. 848,
  39625. [
  39626. [1]
  39627. ],
  39628. [
  39629. ],
  39630. [
  39631. 29,
  39632. 43,
  39633. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  39634. sg_texts[SG.lang]["BEST:"],
  39635. 1,
  39636. 0,
  39637. 0,
  39638. 0,
  39639. 0,
  39640. 0,
  39641. 0,
  39642. 0
  39643. ]
  39644. ]
  39645. , [
  39646. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39647. 6,
  39648. 849,
  39649. [
  39650. [0]
  39651. ],
  39652. [
  39653. ],
  39654. [
  39655. 29,
  39656. 43,
  39657. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  39658. "MOVE:",
  39659. 1,
  39660. 0,
  39661. 0,
  39662. 0,
  39663. 0,
  39664. 0,
  39665. 0,
  39666. 0
  39667. ]
  39668. ]
  39669. , [
  39670. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39671. 6,
  39672. 850,
  39673. [
  39674. [2]
  39675. ],
  39676. [
  39677. ],
  39678. [
  39679. 29,
  39680. 43,
  39681. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  39682. sg_texts[SG.lang]["LEVEL:"]+" 01",
  39683. 1,
  39684. 0,
  39685. 0,
  39686. 0,
  39687. 0,
  39688. 0,
  39689. 0,
  39690. 0
  39691. ]
  39692. ]
  39693. , [
  39694. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  39695. 4,
  39696. 851,
  39697. [
  39698. [3]
  39699. ],
  39700. [
  39701. [
  39702. 1,
  39703. 0,
  39704. 0,
  39705. 4,
  39706. 0,
  39707. 0,
  39708. 0,
  39709. 50,
  39710. 0
  39711. ]
  39712. ],
  39713. [
  39714. 0,
  39715. "Default",
  39716. 3,
  39717. 1
  39718. ]
  39719. ]
  39720. , [
  39721. [0, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  39722. 0,
  39723. 852,
  39724. [
  39725. [0],
  39726. [0],
  39727. [0]
  39728. ],
  39729. [
  39730. [
  39731. 2,
  39732. 1
  39733. ],
  39734. [
  39735. 1
  39736. ],
  39737. [
  39738. 200,
  39739. 600,
  39740. 500,
  39741. 3,
  39742. 3,
  39743. 1,
  39744. 1
  39745. ]
  39746. ],
  39747. [
  39748. 0,
  39749. "Default",
  39750. 0,
  39751. 1
  39752. ]
  39753. ]
  39754. , [
  39755. [192, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  39756. 0,
  39757. 853,
  39758. [
  39759. [0],
  39760. [0],
  39761. [0]
  39762. ],
  39763. [
  39764. [
  39765. 2,
  39766. 1
  39767. ],
  39768. [
  39769. 1
  39770. ],
  39771. [
  39772. 200,
  39773. 600,
  39774. 500,
  39775. 3,
  39776. 3,
  39777. 1,
  39778. 1
  39779. ]
  39780. ],
  39781. [
  39782. 0,
  39783. "Default",
  39784. 2,
  39785. 1
  39786. ]
  39787. ]
  39788. , [
  39789. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  39790. 0,
  39791. 854,
  39792. [
  39793. [0],
  39794. [0],
  39795. [0]
  39796. ],
  39797. [
  39798. [
  39799. 2,
  39800. 1
  39801. ],
  39802. [
  39803. 1
  39804. ],
  39805. [
  39806. 200,
  39807. 600,
  39808. 500,
  39809. 3,
  39810. 3,
  39811. 1,
  39812. 1
  39813. ]
  39814. ],
  39815. [
  39816. 0,
  39817. "Default",
  39818. 2,
  39819. 1
  39820. ]
  39821. ]
  39822. , [
  39823. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  39824. 0,
  39825. 856,
  39826. [
  39827. [0],
  39828. [0],
  39829. [0]
  39830. ],
  39831. [
  39832. [
  39833. 2,
  39834. 1
  39835. ],
  39836. [
  39837. 1
  39838. ],
  39839. [
  39840. 200,
  39841. 600,
  39842. 500,
  39843. 3,
  39844. 3,
  39845. 1,
  39846. 1
  39847. ]
  39848. ],
  39849. [
  39850. 0,
  39851. "Default",
  39852. 2,
  39853. 1
  39854. ]
  39855. ]
  39856. , [
  39857. [256, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39858. 0,
  39859. 857,
  39860. [
  39861. [0],
  39862. [0],
  39863. [0]
  39864. ],
  39865. [
  39866. [
  39867. 1,
  39868. 1
  39869. ],
  39870. [
  39871. 1
  39872. ],
  39873. [
  39874. 200,
  39875. 600,
  39876. 500,
  39877. 3,
  39878. 3,
  39879. 1,
  39880. 1
  39881. ]
  39882. ],
  39883. [
  39884. 0,
  39885. "Default",
  39886. 3,
  39887. 1
  39888. ]
  39889. ]
  39890. , [
  39891. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39892. 0,
  39893. 858,
  39894. [
  39895. [0],
  39896. [0],
  39897. [0]
  39898. ],
  39899. [
  39900. [
  39901. 1,
  39902. 1
  39903. ],
  39904. [
  39905. 1
  39906. ],
  39907. [
  39908. 200,
  39909. 600,
  39910. 500,
  39911. 3,
  39912. 3,
  39913. 1,
  39914. 1
  39915. ]
  39916. ],
  39917. [
  39918. 0,
  39919. "Default",
  39920. 3,
  39921. 1
  39922. ]
  39923. ]
  39924. , [
  39925. [0, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39926. 0,
  39927. 859,
  39928. [
  39929. [0],
  39930. [0],
  39931. [0]
  39932. ],
  39933. [
  39934. [
  39935. 1,
  39936. 1
  39937. ],
  39938. [
  39939. 1
  39940. ],
  39941. [
  39942. 200,
  39943. 600,
  39944. 500,
  39945. 3,
  39946. 3,
  39947. 1,
  39948. 1
  39949. ]
  39950. ],
  39951. [
  39952. 0,
  39953. "Default",
  39954. 1,
  39955. 1
  39956. ]
  39957. ]
  39958. , [
  39959. [64, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  39960. 0,
  39961. 860,
  39962. [
  39963. [0],
  39964. [0],
  39965. [0]
  39966. ],
  39967. [
  39968. [
  39969. 1,
  39970. 1
  39971. ],
  39972. [
  39973. 1
  39974. ],
  39975. [
  39976. 200,
  39977. 600,
  39978. 500,
  39979. 3,
  39980. 3,
  39981. 1,
  39982. 1
  39983. ]
  39984. ],
  39985. [
  39986. 0,
  39987. "Default",
  39988. 3,
  39989. 1
  39990. ]
  39991. ]
  39992. , [
  39993. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  39994. 0,
  39995. 861,
  39996. [
  39997. [0],
  39998. [0],
  39999. [0]
  40000. ],
  40001. [
  40002. [
  40003. 2,
  40004. 1
  40005. ],
  40006. [
  40007. 1
  40008. ],
  40009. [
  40010. 200,
  40011. 600,
  40012. 500,
  40013. 3,
  40014. 3,
  40015. 1,
  40016. 1
  40017. ]
  40018. ],
  40019. [
  40020. 0,
  40021. "Default",
  40022. 2,
  40023. 1
  40024. ]
  40025. ]
  40026. , [
  40027. [128, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40028. 0,
  40029. 855,
  40030. [
  40031. [0],
  40032. [0],
  40033. [0]
  40034. ],
  40035. [
  40036. [
  40037. 1,
  40038. 1
  40039. ],
  40040. [
  40041. 1
  40042. ],
  40043. [
  40044. 200,
  40045. 600,
  40046. 500,
  40047. 3,
  40048. 3,
  40049. 1,
  40050. 1
  40051. ]
  40052. ],
  40053. [
  40054. 0,
  40055. "Default",
  40056. 3,
  40057. 1
  40058. ]
  40059. ]
  40060. , [
  40061. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40062. 0,
  40063. 862,
  40064. [
  40065. [0],
  40066. [0],
  40067. [0]
  40068. ],
  40069. [
  40070. [
  40071. 1,
  40072. 1
  40073. ],
  40074. [
  40075. 1
  40076. ],
  40077. [
  40078. 200,
  40079. 600,
  40080. 500,
  40081. 3,
  40082. 3,
  40083. 1,
  40084. 1
  40085. ]
  40086. ],
  40087. [
  40088. 0,
  40089. "Default",
  40090. 3,
  40091. 1
  40092. ]
  40093. ]
  40094. ],
  40095. [ ]
  40096. ]
  40097. ],
  40098. [
  40099. ],
  40100. []
  40101. ]
  40102. , [
  40103. "level28",
  40104. 384,
  40105. 600,
  40106. false,
  40107. "level",
  40108. 4549823951795258,
  40109. [
  40110. [
  40111. "Layer 0",
  40112. 0,
  40113. 3253358018240081,
  40114. true,
  40115. [44, 44, 44],
  40116. false,
  40117. 1,
  40118. 1,
  40119. 1,
  40120. false,
  40121. 1,
  40122. 0,
  40123. 0,
  40124. [
  40125. [
  40126. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  40127. 3,
  40128. 863,
  40129. [
  40130. ],
  40131. [
  40132. ],
  40133. [
  40134. 0,
  40135. "Default",
  40136. 0,
  40137. 1
  40138. ]
  40139. ]
  40140. , [
  40141. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40142. 0,
  40143. 864,
  40144. [
  40145. [0],
  40146. [0],
  40147. [1]
  40148. ],
  40149. [
  40150. [
  40151. 1,
  40152. 1
  40153. ],
  40154. [
  40155. 1
  40156. ],
  40157. [
  40158. 200,
  40159. 600,
  40160. 500,
  40161. 3,
  40162. 3,
  40163. 1,
  40164. 1
  40165. ]
  40166. ],
  40167. [
  40168. 0,
  40169. "Red",
  40170. 4,
  40171. 1
  40172. ]
  40173. ]
  40174. , [
  40175. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  40176. 2,
  40177. 865,
  40178. [
  40179. ],
  40180. [
  40181. ],
  40182. [
  40183. 0,
  40184. "Default",
  40185. 0,
  40186. 1
  40187. ]
  40188. ]
  40189. , [
  40190. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40191. 1,
  40192. 866,
  40193. [
  40194. ],
  40195. [
  40196. ],
  40197. [
  40198. 1,
  40199. "Default",
  40200. 0,
  40201. 1
  40202. ]
  40203. ]
  40204. , [
  40205. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40206. 1,
  40207. 867,
  40208. [
  40209. ],
  40210. [
  40211. ],
  40212. [
  40213. 1,
  40214. "Default",
  40215. 0,
  40216. 1
  40217. ]
  40218. ]
  40219. , [
  40220. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  40221. 3,
  40222. 868,
  40223. [
  40224. ],
  40225. [
  40226. ],
  40227. [
  40228. 0,
  40229. "Default",
  40230. 2,
  40231. 1
  40232. ]
  40233. ]
  40234. , [
  40235. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  40236. 3,
  40237. 869,
  40238. [
  40239. ],
  40240. [
  40241. ],
  40242. [
  40243. 0,
  40244. "Default",
  40245. 1,
  40246. 1
  40247. ]
  40248. ]
  40249. , [
  40250. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  40251. 4,
  40252. 870,
  40253. [
  40254. [0]
  40255. ],
  40256. [
  40257. [
  40258. 1,
  40259. 0,
  40260. 0,
  40261. 4,
  40262. 0,
  40263. 0,
  40264. 0,
  40265. 50,
  40266. 0
  40267. ]
  40268. ],
  40269. [
  40270. 0,
  40271. "Default",
  40272. 0,
  40273. 1
  40274. ]
  40275. ]
  40276. , [
  40277. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  40278. 4,
  40279. 871,
  40280. [
  40281. [1]
  40282. ],
  40283. [
  40284. [
  40285. 1,
  40286. 0,
  40287. 0,
  40288. 4,
  40289. 0,
  40290. 0,
  40291. 0,
  40292. 50,
  40293. 0
  40294. ]
  40295. ],
  40296. [
  40297. 0,
  40298. "Default",
  40299. 2,
  40300. 1
  40301. ]
  40302. ]
  40303. , [
  40304. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  40305. 4,
  40306. 872,
  40307. [
  40308. [2]
  40309. ],
  40310. [
  40311. [
  40312. 1,
  40313. 0,
  40314. 0,
  40315. 4,
  40316. 0,
  40317. 0,
  40318. 0,
  40319. 50,
  40320. 0
  40321. ]
  40322. ],
  40323. [
  40324. 0,
  40325. "Default",
  40326. 1,
  40327. 1
  40328. ]
  40329. ]
  40330. , [
  40331. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  40332. 5,
  40333. 873,
  40334. [
  40335. [0],
  40336. [0]
  40337. ],
  40338. [
  40339. ],
  40340. [
  40341. 0,
  40342. "Default",
  40343. 0,
  40344. 1
  40345. ]
  40346. ]
  40347. , [
  40348. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40349. 6,
  40350. 874,
  40351. [
  40352. [1]
  40353. ],
  40354. [
  40355. ],
  40356. [
  40357. 29,
  40358. 43,
  40359. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  40360. sg_texts[SG.lang]["BEST:"],
  40361. 1,
  40362. 0,
  40363. 0,
  40364. 0,
  40365. 0,
  40366. 0,
  40367. 0,
  40368. 0
  40369. ]
  40370. ]
  40371. , [
  40372. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40373. 6,
  40374. 875,
  40375. [
  40376. [0]
  40377. ],
  40378. [
  40379. ],
  40380. [
  40381. 29,
  40382. 43,
  40383. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  40384. "MOVE:",
  40385. 1,
  40386. 0,
  40387. 0,
  40388. 0,
  40389. 0,
  40390. 0,
  40391. 0,
  40392. 0
  40393. ]
  40394. ]
  40395. , [
  40396. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40397. 6,
  40398. 876,
  40399. [
  40400. [2]
  40401. ],
  40402. [
  40403. ],
  40404. [
  40405. 29,
  40406. 43,
  40407. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  40408. sg_texts[SG.lang]["LEVEL:"]+" 01",
  40409. 1,
  40410. 0,
  40411. 0,
  40412. 0,
  40413. 0,
  40414. 0,
  40415. 0,
  40416. 0
  40417. ]
  40418. ]
  40419. , [
  40420. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  40421. 4,
  40422. 877,
  40423. [
  40424. [3]
  40425. ],
  40426. [
  40427. [
  40428. 1,
  40429. 0,
  40430. 0,
  40431. 4,
  40432. 0,
  40433. 0,
  40434. 0,
  40435. 50,
  40436. 0
  40437. ]
  40438. ],
  40439. [
  40440. 0,
  40441. "Default",
  40442. 3,
  40443. 1
  40444. ]
  40445. ]
  40446. , [
  40447. [256, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  40448. 0,
  40449. 878,
  40450. [
  40451. [0],
  40452. [0],
  40453. [0]
  40454. ],
  40455. [
  40456. [
  40457. 2,
  40458. 1
  40459. ],
  40460. [
  40461. 1
  40462. ],
  40463. [
  40464. 200,
  40465. 600,
  40466. 500,
  40467. 3,
  40468. 3,
  40469. 1,
  40470. 1
  40471. ]
  40472. ],
  40473. [
  40474. 0,
  40475. "Default",
  40476. 0,
  40477. 1
  40478. ]
  40479. ]
  40480. , [
  40481. [192, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  40482. 0,
  40483. 879,
  40484. [
  40485. [0],
  40486. [0],
  40487. [0]
  40488. ],
  40489. [
  40490. [
  40491. 2,
  40492. 1
  40493. ],
  40494. [
  40495. 1
  40496. ],
  40497. [
  40498. 200,
  40499. 600,
  40500. 500,
  40501. 3,
  40502. 3,
  40503. 1,
  40504. 1
  40505. ]
  40506. ],
  40507. [
  40508. 0,
  40509. "Default",
  40510. 2,
  40511. 1
  40512. ]
  40513. ]
  40514. , [
  40515. [192, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  40516. 0,
  40517. 880,
  40518. [
  40519. [0],
  40520. [0],
  40521. [0]
  40522. ],
  40523. [
  40524. [
  40525. 2,
  40526. 1
  40527. ],
  40528. [
  40529. 1
  40530. ],
  40531. [
  40532. 200,
  40533. 600,
  40534. 500,
  40535. 3,
  40536. 3,
  40537. 1,
  40538. 1
  40539. ]
  40540. ],
  40541. [
  40542. 0,
  40543. "Default",
  40544. 2,
  40545. 1
  40546. ]
  40547. ]
  40548. , [
  40549. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  40550. 0,
  40551. 881,
  40552. [
  40553. [0],
  40554. [0],
  40555. [0]
  40556. ],
  40557. [
  40558. [
  40559. 2,
  40560. 1
  40561. ],
  40562. [
  40563. 1
  40564. ],
  40565. [
  40566. 200,
  40567. 600,
  40568. 500,
  40569. 3,
  40570. 3,
  40571. 1,
  40572. 1
  40573. ]
  40574. ],
  40575. [
  40576. 0,
  40577. "Default",
  40578. 2,
  40579. 1
  40580. ]
  40581. ]
  40582. , [
  40583. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40584. 0,
  40585. 883,
  40586. [
  40587. [0],
  40588. [0],
  40589. [0]
  40590. ],
  40591. [
  40592. [
  40593. 1,
  40594. 1
  40595. ],
  40596. [
  40597. 1
  40598. ],
  40599. [
  40600. 200,
  40601. 600,
  40602. 500,
  40603. 3,
  40604. 3,
  40605. 1,
  40606. 1
  40607. ]
  40608. ],
  40609. [
  40610. 0,
  40611. "Default",
  40612. 3,
  40613. 1
  40614. ]
  40615. ]
  40616. , [
  40617. [0, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40618. 0,
  40619. 884,
  40620. [
  40621. [0],
  40622. [0],
  40623. [0]
  40624. ],
  40625. [
  40626. [
  40627. 1,
  40628. 1
  40629. ],
  40630. [
  40631. 1
  40632. ],
  40633. [
  40634. 200,
  40635. 600,
  40636. 500,
  40637. 3,
  40638. 3,
  40639. 1,
  40640. 1
  40641. ]
  40642. ],
  40643. [
  40644. 0,
  40645. "Default",
  40646. 1,
  40647. 1
  40648. ]
  40649. ]
  40650. , [
  40651. [64, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40652. 0,
  40653. 885,
  40654. [
  40655. [0],
  40656. [0],
  40657. [0]
  40658. ],
  40659. [
  40660. [
  40661. 1,
  40662. 1
  40663. ],
  40664. [
  40665. 1
  40666. ],
  40667. [
  40668. 200,
  40669. 600,
  40670. 500,
  40671. 3,
  40672. 3,
  40673. 1,
  40674. 1
  40675. ]
  40676. ],
  40677. [
  40678. 0,
  40679. "Default",
  40680. 3,
  40681. 1
  40682. ]
  40683. ]
  40684. , [
  40685. [320, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  40686. 0,
  40687. 886,
  40688. [
  40689. [0],
  40690. [0],
  40691. [0]
  40692. ],
  40693. [
  40694. [
  40695. 2,
  40696. 1
  40697. ],
  40698. [
  40699. 1
  40700. ],
  40701. [
  40702. 200,
  40703. 600,
  40704. 500,
  40705. 3,
  40706. 3,
  40707. 1,
  40708. 1
  40709. ]
  40710. ],
  40711. [
  40712. 0,
  40713. "Default",
  40714. 2,
  40715. 1
  40716. ]
  40717. ]
  40718. , [
  40719. [192, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40720. 0,
  40721. 889,
  40722. [
  40723. [0],
  40724. [0],
  40725. [0]
  40726. ],
  40727. [
  40728. [
  40729. 1,
  40730. 1
  40731. ],
  40732. [
  40733. 1
  40734. ],
  40735. [
  40736. 200,
  40737. 600,
  40738. 500,
  40739. 3,
  40740. 3,
  40741. 1,
  40742. 1
  40743. ]
  40744. ],
  40745. [
  40746. 0,
  40747. "Default",
  40748. 3,
  40749. 1
  40750. ]
  40751. ]
  40752. , [
  40753. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  40754. 0,
  40755. 890,
  40756. [
  40757. [0],
  40758. [0],
  40759. [0]
  40760. ],
  40761. [
  40762. [
  40763. 2,
  40764. 1
  40765. ],
  40766. [
  40767. 1
  40768. ],
  40769. [
  40770. 200,
  40771. 600,
  40772. 500,
  40773. 3,
  40774. 3,
  40775. 1,
  40776. 1
  40777. ]
  40778. ],
  40779. [
  40780. 0,
  40781. "Default",
  40782. 2,
  40783. 1
  40784. ]
  40785. ]
  40786. , [
  40787. [64, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40788. 0,
  40789. 891,
  40790. [
  40791. [0],
  40792. [0],
  40793. [0]
  40794. ],
  40795. [
  40796. [
  40797. 1,
  40798. 1
  40799. ],
  40800. [
  40801. 1
  40802. ],
  40803. [
  40804. 200,
  40805. 600,
  40806. 500,
  40807. 3,
  40808. 3,
  40809. 1,
  40810. 1
  40811. ]
  40812. ],
  40813. [
  40814. 0,
  40815. "Default",
  40816. 3,
  40817. 1
  40818. ]
  40819. ]
  40820. ],
  40821. [ ]
  40822. ]
  40823. ],
  40824. [
  40825. ],
  40826. []
  40827. ]
  40828. , [
  40829. "level29",
  40830. 384,
  40831. 600,
  40832. false,
  40833. "level",
  40834. 7090009816915044,
  40835. [
  40836. [
  40837. "Layer 0",
  40838. 0,
  40839. 2426970501519903,
  40840. true,
  40841. [44, 44, 44],
  40842. false,
  40843. 1,
  40844. 1,
  40845. 1,
  40846. false,
  40847. 1,
  40848. 0,
  40849. 0,
  40850. [
  40851. [
  40852. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  40853. 3,
  40854. 882,
  40855. [
  40856. ],
  40857. [
  40858. ],
  40859. [
  40860. 0,
  40861. "Default",
  40862. 0,
  40863. 1
  40864. ]
  40865. ]
  40866. , [
  40867. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40868. 0,
  40869. 887,
  40870. [
  40871. [0],
  40872. [0],
  40873. [1]
  40874. ],
  40875. [
  40876. [
  40877. 1,
  40878. 1
  40879. ],
  40880. [
  40881. 1
  40882. ],
  40883. [
  40884. 200,
  40885. 600,
  40886. 500,
  40887. 3,
  40888. 3,
  40889. 1,
  40890. 1
  40891. ]
  40892. ],
  40893. [
  40894. 0,
  40895. "Red",
  40896. 4,
  40897. 1
  40898. ]
  40899. ]
  40900. , [
  40901. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  40902. 2,
  40903. 888,
  40904. [
  40905. ],
  40906. [
  40907. ],
  40908. [
  40909. 0,
  40910. "Default",
  40911. 0,
  40912. 1
  40913. ]
  40914. ]
  40915. , [
  40916. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40917. 1,
  40918. 892,
  40919. [
  40920. ],
  40921. [
  40922. ],
  40923. [
  40924. 1,
  40925. "Default",
  40926. 0,
  40927. 1
  40928. ]
  40929. ]
  40930. , [
  40931. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  40932. 1,
  40933. 893,
  40934. [
  40935. ],
  40936. [
  40937. ],
  40938. [
  40939. 1,
  40940. "Default",
  40941. 0,
  40942. 1
  40943. ]
  40944. ]
  40945. , [
  40946. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  40947. 3,
  40948. 894,
  40949. [
  40950. ],
  40951. [
  40952. ],
  40953. [
  40954. 0,
  40955. "Default",
  40956. 2,
  40957. 1
  40958. ]
  40959. ]
  40960. , [
  40961. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  40962. 3,
  40963. 895,
  40964. [
  40965. ],
  40966. [
  40967. ],
  40968. [
  40969. 0,
  40970. "Default",
  40971. 1,
  40972. 1
  40973. ]
  40974. ]
  40975. , [
  40976. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  40977. 4,
  40978. 896,
  40979. [
  40980. [0]
  40981. ],
  40982. [
  40983. [
  40984. 1,
  40985. 0,
  40986. 0,
  40987. 4,
  40988. 0,
  40989. 0,
  40990. 0,
  40991. 50,
  40992. 0
  40993. ]
  40994. ],
  40995. [
  40996. 0,
  40997. "Default",
  40998. 0,
  40999. 1
  41000. ]
  41001. ]
  41002. , [
  41003. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  41004. 4,
  41005. 897,
  41006. [
  41007. [1]
  41008. ],
  41009. [
  41010. [
  41011. 1,
  41012. 0,
  41013. 0,
  41014. 4,
  41015. 0,
  41016. 0,
  41017. 0,
  41018. 50,
  41019. 0
  41020. ]
  41021. ],
  41022. [
  41023. 0,
  41024. "Default",
  41025. 2,
  41026. 1
  41027. ]
  41028. ]
  41029. , [
  41030. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  41031. 4,
  41032. 898,
  41033. [
  41034. [2]
  41035. ],
  41036. [
  41037. [
  41038. 1,
  41039. 0,
  41040. 0,
  41041. 4,
  41042. 0,
  41043. 0,
  41044. 0,
  41045. 50,
  41046. 0
  41047. ]
  41048. ],
  41049. [
  41050. 0,
  41051. "Default",
  41052. 1,
  41053. 1
  41054. ]
  41055. ]
  41056. , [
  41057. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  41058. 5,
  41059. 899,
  41060. [
  41061. [0],
  41062. [0]
  41063. ],
  41064. [
  41065. ],
  41066. [
  41067. 0,
  41068. "Default",
  41069. 0,
  41070. 1
  41071. ]
  41072. ]
  41073. , [
  41074. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41075. 6,
  41076. 900,
  41077. [
  41078. [1]
  41079. ],
  41080. [
  41081. ],
  41082. [
  41083. 29,
  41084. 43,
  41085. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  41086. sg_texts[SG.lang]["BEST:"],
  41087. 1,
  41088. 0,
  41089. 0,
  41090. 0,
  41091. 0,
  41092. 0,
  41093. 0,
  41094. 0
  41095. ]
  41096. ]
  41097. , [
  41098. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41099. 6,
  41100. 901,
  41101. [
  41102. [0]
  41103. ],
  41104. [
  41105. ],
  41106. [
  41107. 29,
  41108. 43,
  41109. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  41110. "MOVE:",
  41111. 1,
  41112. 0,
  41113. 0,
  41114. 0,
  41115. 0,
  41116. 0,
  41117. 0,
  41118. 0
  41119. ]
  41120. ]
  41121. , [
  41122. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41123. 6,
  41124. 902,
  41125. [
  41126. [2]
  41127. ],
  41128. [
  41129. ],
  41130. [
  41131. 29,
  41132. 43,
  41133. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  41134. sg_texts[SG.lang]["LEVEL:"]+" 01",
  41135. 1,
  41136. 0,
  41137. 0,
  41138. 0,
  41139. 0,
  41140. 0,
  41141. 0,
  41142. 0
  41143. ]
  41144. ]
  41145. , [
  41146. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  41147. 4,
  41148. 903,
  41149. [
  41150. [3]
  41151. ],
  41152. [
  41153. [
  41154. 1,
  41155. 0,
  41156. 0,
  41157. 4,
  41158. 0,
  41159. 0,
  41160. 0,
  41161. 50,
  41162. 0
  41163. ]
  41164. ],
  41165. [
  41166. 0,
  41167. "Default",
  41168. 3,
  41169. 1
  41170. ]
  41171. ]
  41172. , [
  41173. [0, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  41174. 0,
  41175. 904,
  41176. [
  41177. [0],
  41178. [0],
  41179. [0]
  41180. ],
  41181. [
  41182. [
  41183. 2,
  41184. 1
  41185. ],
  41186. [
  41187. 1
  41188. ],
  41189. [
  41190. 200,
  41191. 600,
  41192. 500,
  41193. 3,
  41194. 3,
  41195. 1,
  41196. 1
  41197. ]
  41198. ],
  41199. [
  41200. 0,
  41201. "Default",
  41202. 0,
  41203. 1
  41204. ]
  41205. ]
  41206. , [
  41207. [192, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  41208. 0,
  41209. 906,
  41210. [
  41211. [0],
  41212. [0],
  41213. [0]
  41214. ],
  41215. [
  41216. [
  41217. 2,
  41218. 1
  41219. ],
  41220. [
  41221. 1
  41222. ],
  41223. [
  41224. 200,
  41225. 600,
  41226. 500,
  41227. 3,
  41228. 3,
  41229. 1,
  41230. 1
  41231. ]
  41232. ],
  41233. [
  41234. 0,
  41235. "Default",
  41236. 2,
  41237. 1
  41238. ]
  41239. ]
  41240. , [
  41241. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  41242. 0,
  41243. 907,
  41244. [
  41245. [0],
  41246. [0],
  41247. [0]
  41248. ],
  41249. [
  41250. [
  41251. 2,
  41252. 1
  41253. ],
  41254. [
  41255. 1
  41256. ],
  41257. [
  41258. 200,
  41259. 600,
  41260. 500,
  41261. 3,
  41262. 3,
  41263. 1,
  41264. 1
  41265. ]
  41266. ],
  41267. [
  41268. 0,
  41269. "Default",
  41270. 2,
  41271. 1
  41272. ]
  41273. ]
  41274. , [
  41275. [256, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41276. 0,
  41277. 908,
  41278. [
  41279. [0],
  41280. [0],
  41281. [0]
  41282. ],
  41283. [
  41284. [
  41285. 1,
  41286. 1
  41287. ],
  41288. [
  41289. 1
  41290. ],
  41291. [
  41292. 200,
  41293. 600,
  41294. 500,
  41295. 3,
  41296. 3,
  41297. 1,
  41298. 1
  41299. ]
  41300. ],
  41301. [
  41302. 0,
  41303. "Default",
  41304. 3,
  41305. 1
  41306. ]
  41307. ]
  41308. , [
  41309. [64, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41310. 0,
  41311. 909,
  41312. [
  41313. [0],
  41314. [0],
  41315. [0]
  41316. ],
  41317. [
  41318. [
  41319. 1,
  41320. 1
  41321. ],
  41322. [
  41323. 1
  41324. ],
  41325. [
  41326. 200,
  41327. 600,
  41328. 500,
  41329. 3,
  41330. 3,
  41331. 1,
  41332. 1
  41333. ]
  41334. ],
  41335. [
  41336. 0,
  41337. "Default",
  41338. 1,
  41339. 1
  41340. ]
  41341. ]
  41342. , [
  41343. [0, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41344. 0,
  41345. 910,
  41346. [
  41347. [0],
  41348. [0],
  41349. [0]
  41350. ],
  41351. [
  41352. [
  41353. 1,
  41354. 1
  41355. ],
  41356. [
  41357. 1
  41358. ],
  41359. [
  41360. 200,
  41361. 600,
  41362. 500,
  41363. 3,
  41364. 3,
  41365. 1,
  41366. 1
  41367. ]
  41368. ],
  41369. [
  41370. 0,
  41371. "Default",
  41372. 3,
  41373. 1
  41374. ]
  41375. ]
  41376. , [
  41377. [320, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  41378. 0,
  41379. 911,
  41380. [
  41381. [0],
  41382. [0],
  41383. [0]
  41384. ],
  41385. [
  41386. [
  41387. 2,
  41388. 1
  41389. ],
  41390. [
  41391. 1
  41392. ],
  41393. [
  41394. 200,
  41395. 600,
  41396. 500,
  41397. 3,
  41398. 3,
  41399. 1,
  41400. 1
  41401. ]
  41402. ],
  41403. [
  41404. 0,
  41405. "Default",
  41406. 2,
  41407. 1
  41408. ]
  41409. ]
  41410. , [
  41411. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41412. 0,
  41413. 914,
  41414. [
  41415. [0],
  41416. [0],
  41417. [0]
  41418. ],
  41419. [
  41420. [
  41421. 1,
  41422. 1
  41423. ],
  41424. [
  41425. 1
  41426. ],
  41427. [
  41428. 200,
  41429. 600,
  41430. 500,
  41431. 3,
  41432. 3,
  41433. 1,
  41434. 1
  41435. ]
  41436. ],
  41437. [
  41438. 0,
  41439. "Default",
  41440. 3,
  41441. 1
  41442. ]
  41443. ]
  41444. , [
  41445. [256, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  41446. 0,
  41447. 915,
  41448. [
  41449. [0],
  41450. [0],
  41451. [0]
  41452. ],
  41453. [
  41454. [
  41455. 2,
  41456. 1
  41457. ],
  41458. [
  41459. 1
  41460. ],
  41461. [
  41462. 200,
  41463. 600,
  41464. 500,
  41465. 3,
  41466. 3,
  41467. 1,
  41468. 1
  41469. ]
  41470. ],
  41471. [
  41472. 0,
  41473. "Default",
  41474. 0,
  41475. 1
  41476. ]
  41477. ]
  41478. , [
  41479. [320, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  41480. 0,
  41481. 916,
  41482. [
  41483. [0],
  41484. [0],
  41485. [0]
  41486. ],
  41487. [
  41488. [
  41489. 2,
  41490. 1
  41491. ],
  41492. [
  41493. 1
  41494. ],
  41495. [
  41496. 200,
  41497. 600,
  41498. 500,
  41499. 3,
  41500. 3,
  41501. 1,
  41502. 1
  41503. ]
  41504. ],
  41505. [
  41506. 0,
  41507. "Default",
  41508. 2,
  41509. 1
  41510. ]
  41511. ]
  41512. ],
  41513. [ ]
  41514. ]
  41515. ],
  41516. [
  41517. ],
  41518. []
  41519. ]
  41520. , [
  41521. "level30",
  41522. 384,
  41523. 600,
  41524. false,
  41525. "level",
  41526. 9157350502653619,
  41527. [
  41528. [
  41529. "Layer 0",
  41530. 0,
  41531. 641698893568282,
  41532. true,
  41533. [44, 44, 44],
  41534. false,
  41535. 1,
  41536. 1,
  41537. 1,
  41538. false,
  41539. 1,
  41540. 0,
  41541. 0,
  41542. [
  41543. [
  41544. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  41545. 3,
  41546. 905,
  41547. [
  41548. ],
  41549. [
  41550. ],
  41551. [
  41552. 0,
  41553. "Default",
  41554. 0,
  41555. 1
  41556. ]
  41557. ]
  41558. , [
  41559. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41560. 0,
  41561. 912,
  41562. [
  41563. [0],
  41564. [0],
  41565. [1]
  41566. ],
  41567. [
  41568. [
  41569. 1,
  41570. 1
  41571. ],
  41572. [
  41573. 1
  41574. ],
  41575. [
  41576. 200,
  41577. 600,
  41578. 500,
  41579. 3,
  41580. 3,
  41581. 1,
  41582. 1
  41583. ]
  41584. ],
  41585. [
  41586. 0,
  41587. "Red",
  41588. 4,
  41589. 1
  41590. ]
  41591. ]
  41592. , [
  41593. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  41594. 2,
  41595. 913,
  41596. [
  41597. ],
  41598. [
  41599. ],
  41600. [
  41601. 0,
  41602. "Default",
  41603. 0,
  41604. 1
  41605. ]
  41606. ]
  41607. , [
  41608. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41609. 1,
  41610. 917,
  41611. [
  41612. ],
  41613. [
  41614. ],
  41615. [
  41616. 1,
  41617. "Default",
  41618. 0,
  41619. 1
  41620. ]
  41621. ]
  41622. , [
  41623. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41624. 1,
  41625. 918,
  41626. [
  41627. ],
  41628. [
  41629. ],
  41630. [
  41631. 1,
  41632. "Default",
  41633. 0,
  41634. 1
  41635. ]
  41636. ]
  41637. , [
  41638. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  41639. 3,
  41640. 919,
  41641. [
  41642. ],
  41643. [
  41644. ],
  41645. [
  41646. 0,
  41647. "Default",
  41648. 2,
  41649. 1
  41650. ]
  41651. ]
  41652. , [
  41653. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  41654. 3,
  41655. 920,
  41656. [
  41657. ],
  41658. [
  41659. ],
  41660. [
  41661. 0,
  41662. "Default",
  41663. 1,
  41664. 1
  41665. ]
  41666. ]
  41667. , [
  41668. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  41669. 4,
  41670. 921,
  41671. [
  41672. [0]
  41673. ],
  41674. [
  41675. [
  41676. 1,
  41677. 0,
  41678. 0,
  41679. 4,
  41680. 0,
  41681. 0,
  41682. 0,
  41683. 50,
  41684. 0
  41685. ]
  41686. ],
  41687. [
  41688. 0,
  41689. "Default",
  41690. 0,
  41691. 1
  41692. ]
  41693. ]
  41694. , [
  41695. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  41696. 4,
  41697. 922,
  41698. [
  41699. [1]
  41700. ],
  41701. [
  41702. [
  41703. 1,
  41704. 0,
  41705. 0,
  41706. 4,
  41707. 0,
  41708. 0,
  41709. 0,
  41710. 50,
  41711. 0
  41712. ]
  41713. ],
  41714. [
  41715. 0,
  41716. "Default",
  41717. 2,
  41718. 1
  41719. ]
  41720. ]
  41721. , [
  41722. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  41723. 4,
  41724. 923,
  41725. [
  41726. [2]
  41727. ],
  41728. [
  41729. [
  41730. 1,
  41731. 0,
  41732. 0,
  41733. 4,
  41734. 0,
  41735. 0,
  41736. 0,
  41737. 50,
  41738. 0
  41739. ]
  41740. ],
  41741. [
  41742. 0,
  41743. "Default",
  41744. 1,
  41745. 1
  41746. ]
  41747. ]
  41748. , [
  41749. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  41750. 5,
  41751. 924,
  41752. [
  41753. [0],
  41754. [0]
  41755. ],
  41756. [
  41757. ],
  41758. [
  41759. 0,
  41760. "Default",
  41761. 0,
  41762. 1
  41763. ]
  41764. ]
  41765. , [
  41766. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41767. 6,
  41768. 925,
  41769. [
  41770. [1]
  41771. ],
  41772. [
  41773. ],
  41774. [
  41775. 29,
  41776. 43,
  41777. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  41778. sg_texts[SG.lang]["BEST:"],
  41779. 1,
  41780. 0,
  41781. 0,
  41782. 0,
  41783. 0,
  41784. 0,
  41785. 0,
  41786. 0
  41787. ]
  41788. ]
  41789. , [
  41790. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41791. 6,
  41792. 926,
  41793. [
  41794. [0]
  41795. ],
  41796. [
  41797. ],
  41798. [
  41799. 29,
  41800. 43,
  41801. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  41802. "MOVE:",
  41803. 1,
  41804. 0,
  41805. 0,
  41806. 0,
  41807. 0,
  41808. 0,
  41809. 0,
  41810. 0
  41811. ]
  41812. ]
  41813. , [
  41814. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41815. 6,
  41816. 927,
  41817. [
  41818. [2]
  41819. ],
  41820. [
  41821. ],
  41822. [
  41823. 29,
  41824. 43,
  41825. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  41826. sg_texts[SG.lang]["LEVEL:"]+" 01",
  41827. 1,
  41828. 0,
  41829. 0,
  41830. 0,
  41831. 0,
  41832. 0,
  41833. 0,
  41834. 0
  41835. ]
  41836. ]
  41837. , [
  41838. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  41839. 4,
  41840. 928,
  41841. [
  41842. [3]
  41843. ],
  41844. [
  41845. [
  41846. 1,
  41847. 0,
  41848. 0,
  41849. 4,
  41850. 0,
  41851. 0,
  41852. 0,
  41853. 50,
  41854. 0
  41855. ]
  41856. ],
  41857. [
  41858. 0,
  41859. "Default",
  41860. 3,
  41861. 1
  41862. ]
  41863. ]
  41864. , [
  41865. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  41866. 0,
  41867. 931,
  41868. [
  41869. [0],
  41870. [0],
  41871. [0]
  41872. ],
  41873. [
  41874. [
  41875. 2,
  41876. 1
  41877. ],
  41878. [
  41879. 1
  41880. ],
  41881. [
  41882. 200,
  41883. 600,
  41884. 500,
  41885. 3,
  41886. 3,
  41887. 1,
  41888. 1
  41889. ]
  41890. ],
  41891. [
  41892. 0,
  41893. "Default",
  41894. 2,
  41895. 1
  41896. ]
  41897. ]
  41898. , [
  41899. [192, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41900. 0,
  41901. 933,
  41902. [
  41903. [0],
  41904. [0],
  41905. [0]
  41906. ],
  41907. [
  41908. [
  41909. 1,
  41910. 1
  41911. ],
  41912. [
  41913. 1
  41914. ],
  41915. [
  41916. 200,
  41917. 600,
  41918. 500,
  41919. 3,
  41920. 3,
  41921. 1,
  41922. 1
  41923. ]
  41924. ],
  41925. [
  41926. 0,
  41927. "Default",
  41928. 1,
  41929. 1
  41930. ]
  41931. ]
  41932. , [
  41933. [0, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  41934. 0,
  41935. 934,
  41936. [
  41937. [0],
  41938. [0],
  41939. [0]
  41940. ],
  41941. [
  41942. [
  41943. 1,
  41944. 1
  41945. ],
  41946. [
  41947. 1
  41948. ],
  41949. [
  41950. 200,
  41951. 600,
  41952. 500,
  41953. 3,
  41954. 3,
  41955. 1,
  41956. 1
  41957. ]
  41958. ],
  41959. [
  41960. 0,
  41961. "Default",
  41962. 3,
  41963. 1
  41964. ]
  41965. ]
  41966. , [
  41967. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  41968. 0,
  41969. 935,
  41970. [
  41971. [0],
  41972. [0],
  41973. [0]
  41974. ],
  41975. [
  41976. [
  41977. 2,
  41978. 1
  41979. ],
  41980. [
  41981. 1
  41982. ],
  41983. [
  41984. 200,
  41985. 600,
  41986. 500,
  41987. 3,
  41988. 3,
  41989. 1,
  41990. 1
  41991. ]
  41992. ],
  41993. [
  41994. 0,
  41995. "Default",
  41996. 2,
  41997. 1
  41998. ]
  41999. ]
  42000. , [
  42001. [64, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42002. 0,
  42003. 936,
  42004. [
  42005. [0],
  42006. [0],
  42007. [0]
  42008. ],
  42009. [
  42010. [
  42011. 1,
  42012. 1
  42013. ],
  42014. [
  42015. 1
  42016. ],
  42017. [
  42018. 200,
  42019. 600,
  42020. 500,
  42021. 3,
  42022. 3,
  42023. 1,
  42024. 1
  42025. ]
  42026. ],
  42027. [
  42028. 0,
  42029. "Default",
  42030. 3,
  42031. 1
  42032. ]
  42033. ]
  42034. , [
  42035. [256, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  42036. 0,
  42037. 937,
  42038. [
  42039. [0],
  42040. [0],
  42041. [0]
  42042. ],
  42043. [
  42044. [
  42045. 2,
  42046. 1
  42047. ],
  42048. [
  42049. 1
  42050. ],
  42051. [
  42052. 200,
  42053. 600,
  42054. 500,
  42055. 3,
  42056. 3,
  42057. 1,
  42058. 1
  42059. ]
  42060. ],
  42061. [
  42062. 0,
  42063. "Default",
  42064. 0,
  42065. 1
  42066. ]
  42067. ]
  42068. , [
  42069. [64, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42070. 0,
  42071. 939,
  42072. [
  42073. [0],
  42074. [0],
  42075. [0]
  42076. ],
  42077. [
  42078. [
  42079. 1,
  42080. 1
  42081. ],
  42082. [
  42083. 1
  42084. ],
  42085. [
  42086. 200,
  42087. 600,
  42088. 500,
  42089. 3,
  42090. 3,
  42091. 1,
  42092. 1
  42093. ]
  42094. ],
  42095. [
  42096. 0,
  42097. "Default",
  42098. 3,
  42099. 1
  42100. ]
  42101. ]
  42102. , [
  42103. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  42104. 0,
  42105. 940,
  42106. [
  42107. [0],
  42108. [0],
  42109. [0]
  42110. ],
  42111. [
  42112. [
  42113. 2,
  42114. 1
  42115. ],
  42116. [
  42117. 1
  42118. ],
  42119. [
  42120. 200,
  42121. 600,
  42122. 500,
  42123. 3,
  42124. 3,
  42125. 1,
  42126. 1
  42127. ]
  42128. ],
  42129. [
  42130. 0,
  42131. "Default",
  42132. 2,
  42133. 1
  42134. ]
  42135. ]
  42136. , [
  42137. [256, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42138. 0,
  42139. 941,
  42140. [
  42141. [0],
  42142. [0],
  42143. [0]
  42144. ],
  42145. [
  42146. [
  42147. 1,
  42148. 1
  42149. ],
  42150. [
  42151. 1
  42152. ],
  42153. [
  42154. 200,
  42155. 600,
  42156. 500,
  42157. 3,
  42158. 3,
  42159. 1,
  42160. 1
  42161. ]
  42162. ],
  42163. [
  42164. 0,
  42165. "Default",
  42166. 3,
  42167. 1
  42168. ]
  42169. ]
  42170. , [
  42171. [320, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  42172. 0,
  42173. 942,
  42174. [
  42175. [0],
  42176. [0],
  42177. [0]
  42178. ],
  42179. [
  42180. [
  42181. 2,
  42182. 1
  42183. ],
  42184. [
  42185. 1
  42186. ],
  42187. [
  42188. 200,
  42189. 600,
  42190. 500,
  42191. 3,
  42192. 3,
  42193. 1,
  42194. 1
  42195. ]
  42196. ],
  42197. [
  42198. 0,
  42199. "Default",
  42200. 0,
  42201. 1
  42202. ]
  42203. ]
  42204. , [
  42205. [128, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42206. 0,
  42207. 943,
  42208. [
  42209. [0],
  42210. [0],
  42211. [0]
  42212. ],
  42213. [
  42214. [
  42215. 1,
  42216. 1
  42217. ],
  42218. [
  42219. 1
  42220. ],
  42221. [
  42222. 200,
  42223. 600,
  42224. 500,
  42225. 3,
  42226. 3,
  42227. 1,
  42228. 1
  42229. ]
  42230. ],
  42231. [
  42232. 0,
  42233. "Default",
  42234. 3,
  42235. 1
  42236. ]
  42237. ]
  42238. , [
  42239. [192, 448, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42240. 0,
  42241. 944,
  42242. [
  42243. [0],
  42244. [0],
  42245. [0]
  42246. ],
  42247. [
  42248. [
  42249. 1,
  42250. 1
  42251. ],
  42252. [
  42253. 1
  42254. ],
  42255. [
  42256. 200,
  42257. 600,
  42258. 500,
  42259. 3,
  42260. 3,
  42261. 1,
  42262. 1
  42263. ]
  42264. ],
  42265. [
  42266. 0,
  42267. "Default",
  42268. 1,
  42269. 1
  42270. ]
  42271. ]
  42272. ],
  42273. [ ]
  42274. ]
  42275. ],
  42276. [
  42277. ],
  42278. []
  42279. ]
  42280. , [
  42281. "level31",
  42282. 384,
  42283. 600,
  42284. false,
  42285. "level",
  42286. 3296089338341016,
  42287. [
  42288. [
  42289. "Layer 0",
  42290. 0,
  42291. 9623474130611904,
  42292. true,
  42293. [44, 44, 44],
  42294. false,
  42295. 1,
  42296. 1,
  42297. 1,
  42298. false,
  42299. 1,
  42300. 0,
  42301. 0,
  42302. [
  42303. [
  42304. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  42305. 3,
  42306. 929,
  42307. [
  42308. ],
  42309. [
  42310. ],
  42311. [
  42312. 0,
  42313. "Default",
  42314. 0,
  42315. 1
  42316. ]
  42317. ]
  42318. , [
  42319. [192, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42320. 0,
  42321. 930,
  42322. [
  42323. [0],
  42324. [0],
  42325. [1]
  42326. ],
  42327. [
  42328. [
  42329. 1,
  42330. 1
  42331. ],
  42332. [
  42333. 1
  42334. ],
  42335. [
  42336. 200,
  42337. 600,
  42338. 500,
  42339. 3,
  42340. 3,
  42341. 1,
  42342. 1
  42343. ]
  42344. ],
  42345. [
  42346. 0,
  42347. "Red",
  42348. 4,
  42349. 1
  42350. ]
  42351. ]
  42352. , [
  42353. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  42354. 2,
  42355. 932,
  42356. [
  42357. ],
  42358. [
  42359. ],
  42360. [
  42361. 0,
  42362. "Default",
  42363. 0,
  42364. 1
  42365. ]
  42366. ]
  42367. , [
  42368. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42369. 1,
  42370. 938,
  42371. [
  42372. ],
  42373. [
  42374. ],
  42375. [
  42376. 1,
  42377. "Default",
  42378. 0,
  42379. 1
  42380. ]
  42381. ]
  42382. , [
  42383. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42384. 1,
  42385. 945,
  42386. [
  42387. ],
  42388. [
  42389. ],
  42390. [
  42391. 1,
  42392. "Default",
  42393. 0,
  42394. 1
  42395. ]
  42396. ]
  42397. , [
  42398. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  42399. 3,
  42400. 946,
  42401. [
  42402. ],
  42403. [
  42404. ],
  42405. [
  42406. 0,
  42407. "Default",
  42408. 2,
  42409. 1
  42410. ]
  42411. ]
  42412. , [
  42413. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  42414. 3,
  42415. 947,
  42416. [
  42417. ],
  42418. [
  42419. ],
  42420. [
  42421. 0,
  42422. "Default",
  42423. 1,
  42424. 1
  42425. ]
  42426. ]
  42427. , [
  42428. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  42429. 4,
  42430. 948,
  42431. [
  42432. [0]
  42433. ],
  42434. [
  42435. [
  42436. 1,
  42437. 0,
  42438. 0,
  42439. 4,
  42440. 0,
  42441. 0,
  42442. 0,
  42443. 50,
  42444. 0
  42445. ]
  42446. ],
  42447. [
  42448. 0,
  42449. "Default",
  42450. 0,
  42451. 1
  42452. ]
  42453. ]
  42454. , [
  42455. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  42456. 4,
  42457. 949,
  42458. [
  42459. [1]
  42460. ],
  42461. [
  42462. [
  42463. 1,
  42464. 0,
  42465. 0,
  42466. 4,
  42467. 0,
  42468. 0,
  42469. 0,
  42470. 50,
  42471. 0
  42472. ]
  42473. ],
  42474. [
  42475. 0,
  42476. "Default",
  42477. 2,
  42478. 1
  42479. ]
  42480. ]
  42481. , [
  42482. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  42483. 4,
  42484. 950,
  42485. [
  42486. [2]
  42487. ],
  42488. [
  42489. [
  42490. 1,
  42491. 0,
  42492. 0,
  42493. 4,
  42494. 0,
  42495. 0,
  42496. 0,
  42497. 50,
  42498. 0
  42499. ]
  42500. ],
  42501. [
  42502. 0,
  42503. "Default",
  42504. 1,
  42505. 1
  42506. ]
  42507. ]
  42508. , [
  42509. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  42510. 5,
  42511. 951,
  42512. [
  42513. [0],
  42514. [0]
  42515. ],
  42516. [
  42517. ],
  42518. [
  42519. 0,
  42520. "Default",
  42521. 0,
  42522. 1
  42523. ]
  42524. ]
  42525. , [
  42526. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42527. 6,
  42528. 952,
  42529. [
  42530. [1]
  42531. ],
  42532. [
  42533. ],
  42534. [
  42535. 29,
  42536. 43,
  42537. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  42538. sg_texts[SG.lang]["BEST:"],
  42539. 1,
  42540. 0,
  42541. 0,
  42542. 0,
  42543. 0,
  42544. 0,
  42545. 0,
  42546. 0
  42547. ]
  42548. ]
  42549. , [
  42550. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42551. 6,
  42552. 953,
  42553. [
  42554. [0]
  42555. ],
  42556. [
  42557. ],
  42558. [
  42559. 29,
  42560. 43,
  42561. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  42562. "MOVE:",
  42563. 1,
  42564. 0,
  42565. 0,
  42566. 0,
  42567. 0,
  42568. 0,
  42569. 0,
  42570. 0
  42571. ]
  42572. ]
  42573. , [
  42574. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42575. 6,
  42576. 954,
  42577. [
  42578. [2]
  42579. ],
  42580. [
  42581. ],
  42582. [
  42583. 29,
  42584. 43,
  42585. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  42586. sg_texts[SG.lang]["LEVEL:"]+" 01",
  42587. 1,
  42588. 0,
  42589. 0,
  42590. 0,
  42591. 0,
  42592. 0,
  42593. 0,
  42594. 0
  42595. ]
  42596. ]
  42597. , [
  42598. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  42599. 4,
  42600. 955,
  42601. [
  42602. [3]
  42603. ],
  42604. [
  42605. [
  42606. 1,
  42607. 0,
  42608. 0,
  42609. 4,
  42610. 0,
  42611. 0,
  42612. 0,
  42613. 50,
  42614. 0
  42615. ]
  42616. ],
  42617. [
  42618. 0,
  42619. "Default",
  42620. 3,
  42621. 1
  42622. ]
  42623. ]
  42624. , [
  42625. [64, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  42626. 0,
  42627. 956,
  42628. [
  42629. [0],
  42630. [0],
  42631. [0]
  42632. ],
  42633. [
  42634. [
  42635. 2,
  42636. 1
  42637. ],
  42638. [
  42639. 1
  42640. ],
  42641. [
  42642. 200,
  42643. 600,
  42644. 500,
  42645. 3,
  42646. 3,
  42647. 1,
  42648. 1
  42649. ]
  42650. ],
  42651. [
  42652. 0,
  42653. "Default",
  42654. 2,
  42655. 1
  42656. ]
  42657. ]
  42658. , [
  42659. [0, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42660. 0,
  42661. 957,
  42662. [
  42663. [0],
  42664. [0],
  42665. [0]
  42666. ],
  42667. [
  42668. [
  42669. 1,
  42670. 1
  42671. ],
  42672. [
  42673. 1
  42674. ],
  42675. [
  42676. 200,
  42677. 600,
  42678. 500,
  42679. 3,
  42680. 3,
  42681. 1,
  42682. 1
  42683. ]
  42684. ],
  42685. [
  42686. 0,
  42687. "Default",
  42688. 1,
  42689. 1
  42690. ]
  42691. ]
  42692. , [
  42693. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  42694. 0,
  42695. 959,
  42696. [
  42697. [0],
  42698. [0],
  42699. [0]
  42700. ],
  42701. [
  42702. [
  42703. 2,
  42704. 1
  42705. ],
  42706. [
  42707. 1
  42708. ],
  42709. [
  42710. 200,
  42711. 600,
  42712. 500,
  42713. 3,
  42714. 3,
  42715. 1,
  42716. 1
  42717. ]
  42718. ],
  42719. [
  42720. 0,
  42721. "Default",
  42722. 2,
  42723. 1
  42724. ]
  42725. ]
  42726. , [
  42727. [64, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42728. 0,
  42729. 962,
  42730. [
  42731. [0],
  42732. [0],
  42733. [0]
  42734. ],
  42735. [
  42736. [
  42737. 1,
  42738. 1
  42739. ],
  42740. [
  42741. 1
  42742. ],
  42743. [
  42744. 200,
  42745. 600,
  42746. 500,
  42747. 3,
  42748. 3,
  42749. 1,
  42750. 1
  42751. ]
  42752. ],
  42753. [
  42754. 0,
  42755. "Default",
  42756. 3,
  42757. 1
  42758. ]
  42759. ]
  42760. , [
  42761. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  42762. 0,
  42763. 963,
  42764. [
  42765. [0],
  42766. [0],
  42767. [0]
  42768. ],
  42769. [
  42770. [
  42771. 2,
  42772. 1
  42773. ],
  42774. [
  42775. 1
  42776. ],
  42777. [
  42778. 200,
  42779. 600,
  42780. 500,
  42781. 3,
  42782. 3,
  42783. 1,
  42784. 1
  42785. ]
  42786. ],
  42787. [
  42788. 0,
  42789. "Default",
  42790. 2,
  42791. 1
  42792. ]
  42793. ]
  42794. , [
  42795. [256, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42796. 0,
  42797. 964,
  42798. [
  42799. [0],
  42800. [0],
  42801. [0]
  42802. ],
  42803. [
  42804. [
  42805. 1,
  42806. 1
  42807. ],
  42808. [
  42809. 1
  42810. ],
  42811. [
  42812. 200,
  42813. 600,
  42814. 500,
  42815. 3,
  42816. 3,
  42817. 1,
  42818. 1
  42819. ]
  42820. ],
  42821. [
  42822. 0,
  42823. "Default",
  42824. 3,
  42825. 1
  42826. ]
  42827. ]
  42828. , [
  42829. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  42830. 0,
  42831. 960,
  42832. [
  42833. [0],
  42834. [0],
  42835. [0]
  42836. ],
  42837. [
  42838. [
  42839. 2,
  42840. 1
  42841. ],
  42842. [
  42843. 1
  42844. ],
  42845. [
  42846. 200,
  42847. 600,
  42848. 500,
  42849. 3,
  42850. 3,
  42851. 1,
  42852. 1
  42853. ]
  42854. ],
  42855. [
  42856. 0,
  42857. "Default",
  42858. 2,
  42859. 1
  42860. ]
  42861. ]
  42862. , [
  42863. [0, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  42864. 0,
  42865. 958,
  42866. [
  42867. [0],
  42868. [0],
  42869. [0]
  42870. ],
  42871. [
  42872. [
  42873. 1,
  42874. 1
  42875. ],
  42876. [
  42877. 1
  42878. ],
  42879. [
  42880. 200,
  42881. 600,
  42882. 500,
  42883. 3,
  42884. 3,
  42885. 1,
  42886. 1
  42887. ]
  42888. ],
  42889. [
  42890. 0,
  42891. "Default",
  42892. 3,
  42893. 1
  42894. ]
  42895. ]
  42896. , [
  42897. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  42898. 0,
  42899. 965,
  42900. [
  42901. [0],
  42902. [0],
  42903. [0]
  42904. ],
  42905. [
  42906. [
  42907. 2,
  42908. 1
  42909. ],
  42910. [
  42911. 1
  42912. ],
  42913. [
  42914. 200,
  42915. 600,
  42916. 500,
  42917. 3,
  42918. 3,
  42919. 1,
  42920. 1
  42921. ]
  42922. ],
  42923. [
  42924. 0,
  42925. "Default",
  42926. 2,
  42927. 1
  42928. ]
  42929. ]
  42930. , [
  42931. [320, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  42932. 0,
  42933. 966,
  42934. [
  42935. [0],
  42936. [0],
  42937. [0]
  42938. ],
  42939. [
  42940. [
  42941. 2,
  42942. 1
  42943. ],
  42944. [
  42945. 1
  42946. ],
  42947. [
  42948. 200,
  42949. 600,
  42950. 500,
  42951. 3,
  42952. 3,
  42953. 1,
  42954. 1
  42955. ]
  42956. ],
  42957. [
  42958. 0,
  42959. "Default",
  42960. 2,
  42961. 1
  42962. ]
  42963. ]
  42964. ],
  42965. [ ]
  42966. ]
  42967. ],
  42968. [
  42969. ],
  42970. []
  42971. ]
  42972. , [
  42973. "level32",
  42974. 384,
  42975. 600,
  42976. false,
  42977. "level",
  42978. 6999695560406874,
  42979. [
  42980. [
  42981. "Layer 0",
  42982. 0,
  42983. 3723478542626248,
  42984. true,
  42985. [44, 44, 44],
  42986. false,
  42987. 1,
  42988. 1,
  42989. 1,
  42990. false,
  42991. 1,
  42992. 0,
  42993. 0,
  42994. [
  42995. [
  42996. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  42997. 3,
  42998. 967,
  42999. [
  43000. ],
  43001. [
  43002. ],
  43003. [
  43004. 0,
  43005. "Default",
  43006. 0,
  43007. 1
  43008. ]
  43009. ]
  43010. , [
  43011. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43012. 0,
  43013. 968,
  43014. [
  43015. [0],
  43016. [0],
  43017. [1]
  43018. ],
  43019. [
  43020. [
  43021. 1,
  43022. 1
  43023. ],
  43024. [
  43025. 1
  43026. ],
  43027. [
  43028. 200,
  43029. 600,
  43030. 500,
  43031. 3,
  43032. 3,
  43033. 1,
  43034. 1
  43035. ]
  43036. ],
  43037. [
  43038. 0,
  43039. "Red",
  43040. 4,
  43041. 1
  43042. ]
  43043. ]
  43044. , [
  43045. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  43046. 2,
  43047. 969,
  43048. [
  43049. ],
  43050. [
  43051. ],
  43052. [
  43053. 0,
  43054. "Default",
  43055. 0,
  43056. 1
  43057. ]
  43058. ]
  43059. , [
  43060. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43061. 1,
  43062. 970,
  43063. [
  43064. ],
  43065. [
  43066. ],
  43067. [
  43068. 1,
  43069. "Default",
  43070. 0,
  43071. 1
  43072. ]
  43073. ]
  43074. , [
  43075. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43076. 1,
  43077. 971,
  43078. [
  43079. ],
  43080. [
  43081. ],
  43082. [
  43083. 1,
  43084. "Default",
  43085. 0,
  43086. 1
  43087. ]
  43088. ]
  43089. , [
  43090. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  43091. 3,
  43092. 972,
  43093. [
  43094. ],
  43095. [
  43096. ],
  43097. [
  43098. 0,
  43099. "Default",
  43100. 2,
  43101. 1
  43102. ]
  43103. ]
  43104. , [
  43105. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  43106. 3,
  43107. 973,
  43108. [
  43109. ],
  43110. [
  43111. ],
  43112. [
  43113. 0,
  43114. "Default",
  43115. 1,
  43116. 1
  43117. ]
  43118. ]
  43119. , [
  43120. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  43121. 4,
  43122. 974,
  43123. [
  43124. [0]
  43125. ],
  43126. [
  43127. [
  43128. 1,
  43129. 0,
  43130. 0,
  43131. 4,
  43132. 0,
  43133. 0,
  43134. 0,
  43135. 50,
  43136. 0
  43137. ]
  43138. ],
  43139. [
  43140. 0,
  43141. "Default",
  43142. 0,
  43143. 1
  43144. ]
  43145. ]
  43146. , [
  43147. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  43148. 4,
  43149. 975,
  43150. [
  43151. [1]
  43152. ],
  43153. [
  43154. [
  43155. 1,
  43156. 0,
  43157. 0,
  43158. 4,
  43159. 0,
  43160. 0,
  43161. 0,
  43162. 50,
  43163. 0
  43164. ]
  43165. ],
  43166. [
  43167. 0,
  43168. "Default",
  43169. 2,
  43170. 1
  43171. ]
  43172. ]
  43173. , [
  43174. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  43175. 4,
  43176. 976,
  43177. [
  43178. [2]
  43179. ],
  43180. [
  43181. [
  43182. 1,
  43183. 0,
  43184. 0,
  43185. 4,
  43186. 0,
  43187. 0,
  43188. 0,
  43189. 50,
  43190. 0
  43191. ]
  43192. ],
  43193. [
  43194. 0,
  43195. "Default",
  43196. 1,
  43197. 1
  43198. ]
  43199. ]
  43200. , [
  43201. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  43202. 5,
  43203. 977,
  43204. [
  43205. [0],
  43206. [0]
  43207. ],
  43208. [
  43209. ],
  43210. [
  43211. 0,
  43212. "Default",
  43213. 0,
  43214. 1
  43215. ]
  43216. ]
  43217. , [
  43218. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43219. 6,
  43220. 978,
  43221. [
  43222. [1]
  43223. ],
  43224. [
  43225. ],
  43226. [
  43227. 29,
  43228. 43,
  43229. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  43230. sg_texts[SG.lang]["BEST:"],
  43231. 1,
  43232. 0,
  43233. 0,
  43234. 0,
  43235. 0,
  43236. 0,
  43237. 0,
  43238. 0
  43239. ]
  43240. ]
  43241. , [
  43242. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43243. 6,
  43244. 979,
  43245. [
  43246. [0]
  43247. ],
  43248. [
  43249. ],
  43250. [
  43251. 29,
  43252. 43,
  43253. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  43254. "MOVE:",
  43255. 1,
  43256. 0,
  43257. 0,
  43258. 0,
  43259. 0,
  43260. 0,
  43261. 0,
  43262. 0
  43263. ]
  43264. ]
  43265. , [
  43266. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43267. 6,
  43268. 980,
  43269. [
  43270. [2]
  43271. ],
  43272. [
  43273. ],
  43274. [
  43275. 29,
  43276. 43,
  43277. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  43278. sg_texts[SG.lang]["LEVEL:"]+" 01",
  43279. 1,
  43280. 0,
  43281. 0,
  43282. 0,
  43283. 0,
  43284. 0,
  43285. 0,
  43286. 0
  43287. ]
  43288. ]
  43289. , [
  43290. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  43291. 4,
  43292. 981,
  43293. [
  43294. [3]
  43295. ],
  43296. [
  43297. [
  43298. 1,
  43299. 0,
  43300. 0,
  43301. 4,
  43302. 0,
  43303. 0,
  43304. 0,
  43305. 50,
  43306. 0
  43307. ]
  43308. ],
  43309. [
  43310. 0,
  43311. "Default",
  43312. 3,
  43313. 1
  43314. ]
  43315. ]
  43316. , [
  43317. [0, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  43318. 0,
  43319. 982,
  43320. [
  43321. [0],
  43322. [0],
  43323. [0]
  43324. ],
  43325. [
  43326. [
  43327. 2,
  43328. 1
  43329. ],
  43330. [
  43331. 1
  43332. ],
  43333. [
  43334. 200,
  43335. 600,
  43336. 500,
  43337. 3,
  43338. 3,
  43339. 1,
  43340. 1
  43341. ]
  43342. ],
  43343. [
  43344. 0,
  43345. "Default",
  43346. 2,
  43347. 1
  43348. ]
  43349. ]
  43350. , [
  43351. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  43352. 0,
  43353. 984,
  43354. [
  43355. [0],
  43356. [0],
  43357. [0]
  43358. ],
  43359. [
  43360. [
  43361. 2,
  43362. 1
  43363. ],
  43364. [
  43365. 1
  43366. ],
  43367. [
  43368. 200,
  43369. 600,
  43370. 500,
  43371. 3,
  43372. 3,
  43373. 1,
  43374. 1
  43375. ]
  43376. ],
  43377. [
  43378. 0,
  43379. "Default",
  43380. 2,
  43381. 1
  43382. ]
  43383. ]
  43384. , [
  43385. [64, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  43386. 0,
  43387. 985,
  43388. [
  43389. [0],
  43390. [0],
  43391. [0]
  43392. ],
  43393. [
  43394. [
  43395. 2,
  43396. 1
  43397. ],
  43398. [
  43399. 1
  43400. ],
  43401. [
  43402. 200,
  43403. 600,
  43404. 500,
  43405. 3,
  43406. 3,
  43407. 1,
  43408. 1
  43409. ]
  43410. ],
  43411. [
  43412. 0,
  43413. "Default",
  43414. 0,
  43415. 1
  43416. ]
  43417. ]
  43418. , [
  43419. [64, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43420. 0,
  43421. 986,
  43422. [
  43423. [0],
  43424. [0],
  43425. [0]
  43426. ],
  43427. [
  43428. [
  43429. 1,
  43430. 1
  43431. ],
  43432. [
  43433. 1
  43434. ],
  43435. [
  43436. 200,
  43437. 600,
  43438. 500,
  43439. 3,
  43440. 3,
  43441. 1,
  43442. 1
  43443. ]
  43444. ],
  43445. [
  43446. 0,
  43447. "Default",
  43448. 3,
  43449. 1
  43450. ]
  43451. ]
  43452. , [
  43453. [256, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  43454. 0,
  43455. 987,
  43456. [
  43457. [0],
  43458. [0],
  43459. [0]
  43460. ],
  43461. [
  43462. [
  43463. 2,
  43464. 1
  43465. ],
  43466. [
  43467. 1
  43468. ],
  43469. [
  43470. 200,
  43471. 600,
  43472. 500,
  43473. 3,
  43474. 3,
  43475. 1,
  43476. 1
  43477. ]
  43478. ],
  43479. [
  43480. 0,
  43481. "Default",
  43482. 2,
  43483. 1
  43484. ]
  43485. ]
  43486. , [
  43487. [192, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43488. 0,
  43489. 988,
  43490. [
  43491. [0],
  43492. [0],
  43493. [0]
  43494. ],
  43495. [
  43496. [
  43497. 1,
  43498. 1
  43499. ],
  43500. [
  43501. 1
  43502. ],
  43503. [
  43504. 200,
  43505. 600,
  43506. 500,
  43507. 3,
  43508. 3,
  43509. 1,
  43510. 1
  43511. ]
  43512. ],
  43513. [
  43514. 0,
  43515. "Default",
  43516. 3,
  43517. 1
  43518. ]
  43519. ]
  43520. , [
  43521. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43522. 0,
  43523. 990,
  43524. [
  43525. [0],
  43526. [0],
  43527. [0]
  43528. ],
  43529. [
  43530. [
  43531. 1,
  43532. 1
  43533. ],
  43534. [
  43535. 1
  43536. ],
  43537. [
  43538. 200,
  43539. 600,
  43540. 500,
  43541. 3,
  43542. 3,
  43543. 1,
  43544. 1
  43545. ]
  43546. ],
  43547. [
  43548. 0,
  43549. "Default",
  43550. 3,
  43551. 1
  43552. ]
  43553. ]
  43554. , [
  43555. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  43556. 0,
  43557. 991,
  43558. [
  43559. [0],
  43560. [0],
  43561. [0]
  43562. ],
  43563. [
  43564. [
  43565. 2,
  43566. 1
  43567. ],
  43568. [
  43569. 1
  43570. ],
  43571. [
  43572. 200,
  43573. 600,
  43574. 500,
  43575. 3,
  43576. 3,
  43577. 1,
  43578. 1
  43579. ]
  43580. ],
  43581. [
  43582. 0,
  43583. "Default",
  43584. 2,
  43585. 1
  43586. ]
  43587. ]
  43588. , [
  43589. [320, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  43590. 0,
  43591. 961,
  43592. [
  43593. [0],
  43594. [0],
  43595. [0]
  43596. ],
  43597. [
  43598. [
  43599. 2,
  43600. 1
  43601. ],
  43602. [
  43603. 1
  43604. ],
  43605. [
  43606. 200,
  43607. 600,
  43608. 500,
  43609. 3,
  43610. 3,
  43611. 1,
  43612. 1
  43613. ]
  43614. ],
  43615. [
  43616. 0,
  43617. "Default",
  43618. 0,
  43619. 1
  43620. ]
  43621. ]
  43622. , [
  43623. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43624. 0,
  43625. 993,
  43626. [
  43627. [0],
  43628. [0],
  43629. [0]
  43630. ],
  43631. [
  43632. [
  43633. 1,
  43634. 1
  43635. ],
  43636. [
  43637. 1
  43638. ],
  43639. [
  43640. 200,
  43641. 600,
  43642. 500,
  43643. 3,
  43644. 3,
  43645. 1,
  43646. 1
  43647. ]
  43648. ],
  43649. [
  43650. 0,
  43651. "Default",
  43652. 3,
  43653. 1
  43654. ]
  43655. ]
  43656. , [
  43657. [192, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43658. 0,
  43659. 994,
  43660. [
  43661. [0],
  43662. [0],
  43663. [0]
  43664. ],
  43665. [
  43666. [
  43667. 1,
  43668. 1
  43669. ],
  43670. [
  43671. 1
  43672. ],
  43673. [
  43674. 200,
  43675. 600,
  43676. 500,
  43677. 3,
  43678. 3,
  43679. 1,
  43680. 1
  43681. ]
  43682. ],
  43683. [
  43684. 0,
  43685. "Default",
  43686. 3,
  43687. 1
  43688. ]
  43689. ]
  43690. , [
  43691. [192, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  43692. 0,
  43693. 995,
  43694. [
  43695. [0],
  43696. [0],
  43697. [0]
  43698. ],
  43699. [
  43700. [
  43701. 2,
  43702. 1
  43703. ],
  43704. [
  43705. 1
  43706. ],
  43707. [
  43708. 200,
  43709. 600,
  43710. 500,
  43711. 3,
  43712. 3,
  43713. 1,
  43714. 1
  43715. ]
  43716. ],
  43717. [
  43718. 0,
  43719. "Default",
  43720. 2,
  43721. 1
  43722. ]
  43723. ]
  43724. ],
  43725. [ ]
  43726. ]
  43727. ],
  43728. [
  43729. ],
  43730. []
  43731. ]
  43732. , [
  43733. "level33",
  43734. 384,
  43735. 600,
  43736. false,
  43737. "level",
  43738. 9340843592021373,
  43739. [
  43740. [
  43741. "Layer 0",
  43742. 0,
  43743. 8993791528598529,
  43744. true,
  43745. [44, 44, 44],
  43746. false,
  43747. 1,
  43748. 1,
  43749. 1,
  43750. false,
  43751. 1,
  43752. 0,
  43753. 0,
  43754. [
  43755. [
  43756. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  43757. 3,
  43758. 989,
  43759. [
  43760. ],
  43761. [
  43762. ],
  43763. [
  43764. 0,
  43765. "Default",
  43766. 0,
  43767. 1
  43768. ]
  43769. ]
  43770. , [
  43771. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43772. 0,
  43773. 992,
  43774. [
  43775. [0],
  43776. [0],
  43777. [1]
  43778. ],
  43779. [
  43780. [
  43781. 1,
  43782. 1
  43783. ],
  43784. [
  43785. 1
  43786. ],
  43787. [
  43788. 200,
  43789. 600,
  43790. 500,
  43791. 3,
  43792. 3,
  43793. 1,
  43794. 1
  43795. ]
  43796. ],
  43797. [
  43798. 0,
  43799. "Red",
  43800. 4,
  43801. 1
  43802. ]
  43803. ]
  43804. , [
  43805. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  43806. 2,
  43807. 996,
  43808. [
  43809. ],
  43810. [
  43811. ],
  43812. [
  43813. 0,
  43814. "Default",
  43815. 0,
  43816. 1
  43817. ]
  43818. ]
  43819. , [
  43820. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43821. 1,
  43822. 997,
  43823. [
  43824. ],
  43825. [
  43826. ],
  43827. [
  43828. 1,
  43829. "Default",
  43830. 0,
  43831. 1
  43832. ]
  43833. ]
  43834. , [
  43835. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43836. 1,
  43837. 998,
  43838. [
  43839. ],
  43840. [
  43841. ],
  43842. [
  43843. 1,
  43844. "Default",
  43845. 0,
  43846. 1
  43847. ]
  43848. ]
  43849. , [
  43850. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  43851. 3,
  43852. 999,
  43853. [
  43854. ],
  43855. [
  43856. ],
  43857. [
  43858. 0,
  43859. "Default",
  43860. 2,
  43861. 1
  43862. ]
  43863. ]
  43864. , [
  43865. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  43866. 3,
  43867. 1000,
  43868. [
  43869. ],
  43870. [
  43871. ],
  43872. [
  43873. 0,
  43874. "Default",
  43875. 1,
  43876. 1
  43877. ]
  43878. ]
  43879. , [
  43880. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  43881. 4,
  43882. 1001,
  43883. [
  43884. [0]
  43885. ],
  43886. [
  43887. [
  43888. 1,
  43889. 0,
  43890. 0,
  43891. 4,
  43892. 0,
  43893. 0,
  43894. 0,
  43895. 50,
  43896. 0
  43897. ]
  43898. ],
  43899. [
  43900. 0,
  43901. "Default",
  43902. 0,
  43903. 1
  43904. ]
  43905. ]
  43906. , [
  43907. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  43908. 4,
  43909. 1002,
  43910. [
  43911. [1]
  43912. ],
  43913. [
  43914. [
  43915. 1,
  43916. 0,
  43917. 0,
  43918. 4,
  43919. 0,
  43920. 0,
  43921. 0,
  43922. 50,
  43923. 0
  43924. ]
  43925. ],
  43926. [
  43927. 0,
  43928. "Default",
  43929. 2,
  43930. 1
  43931. ]
  43932. ]
  43933. , [
  43934. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  43935. 4,
  43936. 1003,
  43937. [
  43938. [2]
  43939. ],
  43940. [
  43941. [
  43942. 1,
  43943. 0,
  43944. 0,
  43945. 4,
  43946. 0,
  43947. 0,
  43948. 0,
  43949. 50,
  43950. 0
  43951. ]
  43952. ],
  43953. [
  43954. 0,
  43955. "Default",
  43956. 1,
  43957. 1
  43958. ]
  43959. ]
  43960. , [
  43961. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  43962. 5,
  43963. 1004,
  43964. [
  43965. [0],
  43966. [0]
  43967. ],
  43968. [
  43969. ],
  43970. [
  43971. 0,
  43972. "Default",
  43973. 0,
  43974. 1
  43975. ]
  43976. ]
  43977. , [
  43978. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  43979. 6,
  43980. 1005,
  43981. [
  43982. [1]
  43983. ],
  43984. [
  43985. ],
  43986. [
  43987. 29,
  43988. 43,
  43989. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  43990. sg_texts[SG.lang]["BEST:"],
  43991. 1,
  43992. 0,
  43993. 0,
  43994. 0,
  43995. 0,
  43996. 0,
  43997. 0,
  43998. 0
  43999. ]
  44000. ]
  44001. , [
  44002. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44003. 6,
  44004. 1006,
  44005. [
  44006. [0]
  44007. ],
  44008. [
  44009. ],
  44010. [
  44011. 29,
  44012. 43,
  44013. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  44014. "MOVE:",
  44015. 1,
  44016. 0,
  44017. 0,
  44018. 0,
  44019. 0,
  44020. 0,
  44021. 0,
  44022. 0
  44023. ]
  44024. ]
  44025. , [
  44026. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44027. 6,
  44028. 1007,
  44029. [
  44030. [2]
  44031. ],
  44032. [
  44033. ],
  44034. [
  44035. 29,
  44036. 43,
  44037. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  44038. sg_texts[SG.lang]["LEVEL:"]+" 01",
  44039. 1,
  44040. 0,
  44041. 0,
  44042. 0,
  44043. 0,
  44044. 0,
  44045. 0,
  44046. 0
  44047. ]
  44048. ]
  44049. , [
  44050. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  44051. 4,
  44052. 1008,
  44053. [
  44054. [3]
  44055. ],
  44056. [
  44057. [
  44058. 1,
  44059. 0,
  44060. 0,
  44061. 4,
  44062. 0,
  44063. 0,
  44064. 0,
  44065. 50,
  44066. 0
  44067. ]
  44068. ],
  44069. [
  44070. 0,
  44071. "Default",
  44072. 3,
  44073. 1
  44074. ]
  44075. ]
  44076. , [
  44077. [0, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  44078. 0,
  44079. 1009,
  44080. [
  44081. [0],
  44082. [0],
  44083. [0]
  44084. ],
  44085. [
  44086. [
  44087. 2,
  44088. 1
  44089. ],
  44090. [
  44091. 1
  44092. ],
  44093. [
  44094. 200,
  44095. 600,
  44096. 500,
  44097. 3,
  44098. 3,
  44099. 1,
  44100. 1
  44101. ]
  44102. ],
  44103. [
  44104. 0,
  44105. "Default",
  44106. 2,
  44107. 1
  44108. ]
  44109. ]
  44110. , [
  44111. [128, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44112. 0,
  44113. 1010,
  44114. [
  44115. [0],
  44116. [0],
  44117. [0]
  44118. ],
  44119. [
  44120. [
  44121. 1,
  44122. 1
  44123. ],
  44124. [
  44125. 1
  44126. ],
  44127. [
  44128. 200,
  44129. 600,
  44130. 500,
  44131. 3,
  44132. 3,
  44133. 1,
  44134. 1
  44135. ]
  44136. ],
  44137. [
  44138. 0,
  44139. "Default",
  44140. 1,
  44141. 1
  44142. ]
  44143. ]
  44144. , [
  44145. [256, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  44146. 0,
  44147. 1011,
  44148. [
  44149. [0],
  44150. [0],
  44151. [0]
  44152. ],
  44153. [
  44154. [
  44155. 2,
  44156. 1
  44157. ],
  44158. [
  44159. 1
  44160. ],
  44161. [
  44162. 200,
  44163. 600,
  44164. 500,
  44165. 3,
  44166. 3,
  44167. 1,
  44168. 1
  44169. ]
  44170. ],
  44171. [
  44172. 0,
  44173. "Default",
  44174. 2,
  44175. 1
  44176. ]
  44177. ]
  44178. , [
  44179. [192, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  44180. 0,
  44181. 1014,
  44182. [
  44183. [0],
  44184. [0],
  44185. [0]
  44186. ],
  44187. [
  44188. [
  44189. 2,
  44190. 1
  44191. ],
  44192. [
  44193. 1
  44194. ],
  44195. [
  44196. 200,
  44197. 600,
  44198. 500,
  44199. 3,
  44200. 3,
  44201. 1,
  44202. 1
  44203. ]
  44204. ],
  44205. [
  44206. 0,
  44207. "Default",
  44208. 2,
  44209. 1
  44210. ]
  44211. ]
  44212. , [
  44213. [0, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44214. 0,
  44215. 1015,
  44216. [
  44217. [0],
  44218. [0],
  44219. [0]
  44220. ],
  44221. [
  44222. [
  44223. 1,
  44224. 1
  44225. ],
  44226. [
  44227. 1
  44228. ],
  44229. [
  44230. 200,
  44231. 600,
  44232. 500,
  44233. 3,
  44234. 3,
  44235. 1,
  44236. 1
  44237. ]
  44238. ],
  44239. [
  44240. 0,
  44241. "Default",
  44242. 3,
  44243. 1
  44244. ]
  44245. ]
  44246. , [
  44247. [64, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44248. 0,
  44249. 1016,
  44250. [
  44251. [0],
  44252. [0],
  44253. [0]
  44254. ],
  44255. [
  44256. [
  44257. 1,
  44258. 1
  44259. ],
  44260. [
  44261. 1
  44262. ],
  44263. [
  44264. 200,
  44265. 600,
  44266. 500,
  44267. 3,
  44268. 3,
  44269. 1,
  44270. 1
  44271. ]
  44272. ],
  44273. [
  44274. 0,
  44275. "Default",
  44276. 3,
  44277. 1
  44278. ]
  44279. ]
  44280. , [
  44281. [0, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  44282. 0,
  44283. 1017,
  44284. [
  44285. [0],
  44286. [0],
  44287. [0]
  44288. ],
  44289. [
  44290. [
  44291. 2,
  44292. 1
  44293. ],
  44294. [
  44295. 1
  44296. ],
  44297. [
  44298. 200,
  44299. 600,
  44300. 500,
  44301. 3,
  44302. 3,
  44303. 1,
  44304. 1
  44305. ]
  44306. ],
  44307. [
  44308. 0,
  44309. "Default",
  44310. 2,
  44311. 1
  44312. ]
  44313. ]
  44314. , [
  44315. [320, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  44316. 0,
  44317. 1018,
  44318. [
  44319. [0],
  44320. [0],
  44321. [0]
  44322. ],
  44323. [
  44324. [
  44325. 2,
  44326. 1
  44327. ],
  44328. [
  44329. 1
  44330. ],
  44331. [
  44332. 200,
  44333. 600,
  44334. 500,
  44335. 3,
  44336. 3,
  44337. 1,
  44338. 1
  44339. ]
  44340. ],
  44341. [
  44342. 0,
  44343. "Default",
  44344. 0,
  44345. 1
  44346. ]
  44347. ]
  44348. , [
  44349. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44350. 0,
  44351. 1019,
  44352. [
  44353. [0],
  44354. [0],
  44355. [0]
  44356. ],
  44357. [
  44358. [
  44359. 1,
  44360. 1
  44361. ],
  44362. [
  44363. 1
  44364. ],
  44365. [
  44366. 200,
  44367. 600,
  44368. 500,
  44369. 3,
  44370. 3,
  44371. 1,
  44372. 1
  44373. ]
  44374. ],
  44375. [
  44376. 0,
  44377. "Default",
  44378. 3,
  44379. 1
  44380. ]
  44381. ]
  44382. , [
  44383. [0, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44384. 0,
  44385. 983,
  44386. [
  44387. [0],
  44388. [0],
  44389. [0]
  44390. ],
  44391. [
  44392. [
  44393. 1,
  44394. 1
  44395. ],
  44396. [
  44397. 1
  44398. ],
  44399. [
  44400. 200,
  44401. 600,
  44402. 500,
  44403. 3,
  44404. 3,
  44405. 1,
  44406. 1
  44407. ]
  44408. ],
  44409. [
  44410. 0,
  44411. "Default",
  44412. 3,
  44413. 1
  44414. ]
  44415. ]
  44416. , [
  44417. [128, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44418. 0,
  44419. 1012,
  44420. [
  44421. [0],
  44422. [0],
  44423. [0]
  44424. ],
  44425. [
  44426. [
  44427. 1,
  44428. 1
  44429. ],
  44430. [
  44431. 1
  44432. ],
  44433. [
  44434. 200,
  44435. 600,
  44436. 500,
  44437. 3,
  44438. 3,
  44439. 1,
  44440. 1
  44441. ]
  44442. ],
  44443. [
  44444. 0,
  44445. "Default",
  44446. 3,
  44447. 1
  44448. ]
  44449. ]
  44450. , [
  44451. [128, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44452. 0,
  44453. 1022,
  44454. [
  44455. [0],
  44456. [0],
  44457. [0]
  44458. ],
  44459. [
  44460. [
  44461. 1,
  44462. 1
  44463. ],
  44464. [
  44465. 1
  44466. ],
  44467. [
  44468. 200,
  44469. 600,
  44470. 500,
  44471. 3,
  44472. 3,
  44473. 1,
  44474. 1
  44475. ]
  44476. ],
  44477. [
  44478. 0,
  44479. "Default",
  44480. 3,
  44481. 1
  44482. ]
  44483. ]
  44484. , [
  44485. [64, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44486. 0,
  44487. 1023,
  44488. [
  44489. [0],
  44490. [0],
  44491. [0]
  44492. ],
  44493. [
  44494. [
  44495. 1,
  44496. 1
  44497. ],
  44498. [
  44499. 1
  44500. ],
  44501. [
  44502. 200,
  44503. 600,
  44504. 500,
  44505. 3,
  44506. 3,
  44507. 1,
  44508. 1
  44509. ]
  44510. ],
  44511. [
  44512. 0,
  44513. "Default",
  44514. 3,
  44515. 1
  44516. ]
  44517. ]
  44518. , [
  44519. [256, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44520. 0,
  44521. 1024,
  44522. [
  44523. [0],
  44524. [0],
  44525. [0]
  44526. ],
  44527. [
  44528. [
  44529. 1,
  44530. 1
  44531. ],
  44532. [
  44533. 1
  44534. ],
  44535. [
  44536. 200,
  44537. 600,
  44538. 500,
  44539. 3,
  44540. 3,
  44541. 1,
  44542. 1
  44543. ]
  44544. ],
  44545. [
  44546. 0,
  44547. "Default",
  44548. 3,
  44549. 1
  44550. ]
  44551. ]
  44552. ],
  44553. [ ]
  44554. ]
  44555. ],
  44556. [
  44557. ],
  44558. []
  44559. ]
  44560. , [
  44561. "level34",
  44562. 384,
  44563. 600,
  44564. false,
  44565. "level",
  44566. 8836978694370785,
  44567. [
  44568. [
  44569. "Layer 0",
  44570. 0,
  44571. 5619228732803368,
  44572. true,
  44573. [44, 44, 44],
  44574. false,
  44575. 1,
  44576. 1,
  44577. 1,
  44578. false,
  44579. 1,
  44580. 0,
  44581. 0,
  44582. [
  44583. [
  44584. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  44585. 3,
  44586. 1013,
  44587. [
  44588. ],
  44589. [
  44590. ],
  44591. [
  44592. 0,
  44593. "Default",
  44594. 0,
  44595. 1
  44596. ]
  44597. ]
  44598. , [
  44599. [64, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44600. 0,
  44601. 1020,
  44602. [
  44603. [0],
  44604. [0],
  44605. [1]
  44606. ],
  44607. [
  44608. [
  44609. 1,
  44610. 1
  44611. ],
  44612. [
  44613. 1
  44614. ],
  44615. [
  44616. 200,
  44617. 600,
  44618. 500,
  44619. 3,
  44620. 3,
  44621. 1,
  44622. 1
  44623. ]
  44624. ],
  44625. [
  44626. 0,
  44627. "Red",
  44628. 4,
  44629. 1
  44630. ]
  44631. ]
  44632. , [
  44633. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  44634. 2,
  44635. 1021,
  44636. [
  44637. ],
  44638. [
  44639. ],
  44640. [
  44641. 0,
  44642. "Default",
  44643. 0,
  44644. 1
  44645. ]
  44646. ]
  44647. , [
  44648. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44649. 1,
  44650. 1025,
  44651. [
  44652. ],
  44653. [
  44654. ],
  44655. [
  44656. 1,
  44657. "Default",
  44658. 0,
  44659. 1
  44660. ]
  44661. ]
  44662. , [
  44663. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44664. 1,
  44665. 1026,
  44666. [
  44667. ],
  44668. [
  44669. ],
  44670. [
  44671. 1,
  44672. "Default",
  44673. 0,
  44674. 1
  44675. ]
  44676. ]
  44677. , [
  44678. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  44679. 3,
  44680. 1027,
  44681. [
  44682. ],
  44683. [
  44684. ],
  44685. [
  44686. 0,
  44687. "Default",
  44688. 2,
  44689. 1
  44690. ]
  44691. ]
  44692. , [
  44693. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  44694. 3,
  44695. 1028,
  44696. [
  44697. ],
  44698. [
  44699. ],
  44700. [
  44701. 0,
  44702. "Default",
  44703. 1,
  44704. 1
  44705. ]
  44706. ]
  44707. , [
  44708. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  44709. 4,
  44710. 1029,
  44711. [
  44712. [0]
  44713. ],
  44714. [
  44715. [
  44716. 1,
  44717. 0,
  44718. 0,
  44719. 4,
  44720. 0,
  44721. 0,
  44722. 0,
  44723. 50,
  44724. 0
  44725. ]
  44726. ],
  44727. [
  44728. 0,
  44729. "Default",
  44730. 0,
  44731. 1
  44732. ]
  44733. ]
  44734. , [
  44735. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  44736. 4,
  44737. 1030,
  44738. [
  44739. [1]
  44740. ],
  44741. [
  44742. [
  44743. 1,
  44744. 0,
  44745. 0,
  44746. 4,
  44747. 0,
  44748. 0,
  44749. 0,
  44750. 50,
  44751. 0
  44752. ]
  44753. ],
  44754. [
  44755. 0,
  44756. "Default",
  44757. 2,
  44758. 1
  44759. ]
  44760. ]
  44761. , [
  44762. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  44763. 4,
  44764. 1031,
  44765. [
  44766. [2]
  44767. ],
  44768. [
  44769. [
  44770. 1,
  44771. 0,
  44772. 0,
  44773. 4,
  44774. 0,
  44775. 0,
  44776. 0,
  44777. 50,
  44778. 0
  44779. ]
  44780. ],
  44781. [
  44782. 0,
  44783. "Default",
  44784. 1,
  44785. 1
  44786. ]
  44787. ]
  44788. , [
  44789. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  44790. 5,
  44791. 1032,
  44792. [
  44793. [0],
  44794. [0]
  44795. ],
  44796. [
  44797. ],
  44798. [
  44799. 0,
  44800. "Default",
  44801. 0,
  44802. 1
  44803. ]
  44804. ]
  44805. , [
  44806. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44807. 6,
  44808. 1033,
  44809. [
  44810. [1]
  44811. ],
  44812. [
  44813. ],
  44814. [
  44815. 29,
  44816. 43,
  44817. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  44818. sg_texts[SG.lang]["BEST:"],
  44819. 1,
  44820. 0,
  44821. 0,
  44822. 0,
  44823. 0,
  44824. 0,
  44825. 0,
  44826. 0
  44827. ]
  44828. ]
  44829. , [
  44830. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44831. 6,
  44832. 1034,
  44833. [
  44834. [0]
  44835. ],
  44836. [
  44837. ],
  44838. [
  44839. 29,
  44840. 43,
  44841. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  44842. "MOVE:",
  44843. 1,
  44844. 0,
  44845. 0,
  44846. 0,
  44847. 0,
  44848. 0,
  44849. 0,
  44850. 0
  44851. ]
  44852. ]
  44853. , [
  44854. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44855. 6,
  44856. 1035,
  44857. [
  44858. [2]
  44859. ],
  44860. [
  44861. ],
  44862. [
  44863. 29,
  44864. 43,
  44865. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  44866. sg_texts[SG.lang]["LEVEL:"]+" 01",
  44867. 1,
  44868. 0,
  44869. 0,
  44870. 0,
  44871. 0,
  44872. 0,
  44873. 0,
  44874. 0
  44875. ]
  44876. ]
  44877. , [
  44878. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  44879. 4,
  44880. 1036,
  44881. [
  44882. [3]
  44883. ],
  44884. [
  44885. [
  44886. 1,
  44887. 0,
  44888. 0,
  44889. 4,
  44890. 0,
  44891. 0,
  44892. 0,
  44893. 50,
  44894. 0
  44895. ]
  44896. ],
  44897. [
  44898. 0,
  44899. "Default",
  44900. 3,
  44901. 1
  44902. ]
  44903. ]
  44904. , [
  44905. [0, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  44906. 0,
  44907. 1037,
  44908. [
  44909. [0],
  44910. [0],
  44911. [0]
  44912. ],
  44913. [
  44914. [
  44915. 2,
  44916. 1
  44917. ],
  44918. [
  44919. 1
  44920. ],
  44921. [
  44922. 200,
  44923. 600,
  44924. 500,
  44925. 3,
  44926. 3,
  44927. 1,
  44928. 1
  44929. ]
  44930. ],
  44931. [
  44932. 0,
  44933. "Default",
  44934. 2,
  44935. 1
  44936. ]
  44937. ]
  44938. , [
  44939. [0, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  44940. 0,
  44941. 1038,
  44942. [
  44943. [0],
  44944. [0],
  44945. [0]
  44946. ],
  44947. [
  44948. [
  44949. 1,
  44950. 1
  44951. ],
  44952. [
  44953. 1
  44954. ],
  44955. [
  44956. 200,
  44957. 600,
  44958. 500,
  44959. 3,
  44960. 3,
  44961. 1,
  44962. 1
  44963. ]
  44964. ],
  44965. [
  44966. 0,
  44967. "Default",
  44968. 1,
  44969. 1
  44970. ]
  44971. ]
  44972. , [
  44973. [320, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  44974. 0,
  44975. 1039,
  44976. [
  44977. [0],
  44978. [0],
  44979. [0]
  44980. ],
  44981. [
  44982. [
  44983. 2,
  44984. 1
  44985. ],
  44986. [
  44987. 1
  44988. ],
  44989. [
  44990. 200,
  44991. 600,
  44992. 500,
  44993. 3,
  44994. 3,
  44995. 1,
  44996. 1
  44997. ]
  44998. ],
  44999. [
  45000. 0,
  45001. "Default",
  45002. 2,
  45003. 1
  45004. ]
  45005. ]
  45006. , [
  45007. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  45008. 0,
  45009. 1040,
  45010. [
  45011. [0],
  45012. [0],
  45013. [0]
  45014. ],
  45015. [
  45016. [
  45017. 2,
  45018. 1
  45019. ],
  45020. [
  45021. 1
  45022. ],
  45023. [
  45024. 200,
  45025. 600,
  45026. 500,
  45027. 3,
  45028. 3,
  45029. 1,
  45030. 1
  45031. ]
  45032. ],
  45033. [
  45034. 0,
  45035. "Default",
  45036. 2,
  45037. 1
  45038. ]
  45039. ]
  45040. , [
  45041. [0, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45042. 0,
  45043. 1042,
  45044. [
  45045. [0],
  45046. [0],
  45047. [0]
  45048. ],
  45049. [
  45050. [
  45051. 1,
  45052. 1
  45053. ],
  45054. [
  45055. 1
  45056. ],
  45057. [
  45058. 200,
  45059. 600,
  45060. 500,
  45061. 3,
  45062. 3,
  45063. 1,
  45064. 1
  45065. ]
  45066. ],
  45067. [
  45068. 0,
  45069. "Default",
  45070. 3,
  45071. 1
  45072. ]
  45073. ]
  45074. , [
  45075. [64, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45076. 0,
  45077. 1048,
  45078. [
  45079. [0],
  45080. [0],
  45081. [0]
  45082. ],
  45083. [
  45084. [
  45085. 1,
  45086. 1
  45087. ],
  45088. [
  45089. 1
  45090. ],
  45091. [
  45092. 200,
  45093. 600,
  45094. 500,
  45095. 3,
  45096. 3,
  45097. 1,
  45098. 1
  45099. ]
  45100. ],
  45101. [
  45102. 0,
  45103. "Default",
  45104. 3,
  45105. 1
  45106. ]
  45107. ]
  45108. , [
  45109. [128, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45110. 0,
  45111. 1049,
  45112. [
  45113. [0],
  45114. [0],
  45115. [0]
  45116. ],
  45117. [
  45118. [
  45119. 1,
  45120. 1
  45121. ],
  45122. [
  45123. 1
  45124. ],
  45125. [
  45126. 200,
  45127. 600,
  45128. 500,
  45129. 3,
  45130. 3,
  45131. 1,
  45132. 1
  45133. ]
  45134. ],
  45135. [
  45136. 0,
  45137. "Default",
  45138. 3,
  45139. 1
  45140. ]
  45141. ]
  45142. , [
  45143. [192, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  45144. 0,
  45145. 1051,
  45146. [
  45147. [0],
  45148. [0],
  45149. [0]
  45150. ],
  45151. [
  45152. [
  45153. 2,
  45154. 1
  45155. ],
  45156. [
  45157. 1
  45158. ],
  45159. [
  45160. 200,
  45161. 600,
  45162. 500,
  45163. 3,
  45164. 3,
  45165. 1,
  45166. 1
  45167. ]
  45168. ],
  45169. [
  45170. 0,
  45171. "Default",
  45172. 0,
  45173. 1
  45174. ]
  45175. ]
  45176. , [
  45177. [192, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45178. 0,
  45179. 1041,
  45180. [
  45181. [0],
  45182. [0],
  45183. [0]
  45184. ],
  45185. [
  45186. [
  45187. 1,
  45188. 1
  45189. ],
  45190. [
  45191. 1
  45192. ],
  45193. [
  45194. 200,
  45195. 600,
  45196. 500,
  45197. 3,
  45198. 3,
  45199. 1,
  45200. 1
  45201. ]
  45202. ],
  45203. [
  45204. 0,
  45205. "Default",
  45206. 1,
  45207. 1
  45208. ]
  45209. ]
  45210. , [
  45211. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  45212. 0,
  45213. 1043,
  45214. [
  45215. [0],
  45216. [0],
  45217. [0]
  45218. ],
  45219. [
  45220. [
  45221. 2,
  45222. 1
  45223. ],
  45224. [
  45225. 1
  45226. ],
  45227. [
  45228. 200,
  45229. 600,
  45230. 500,
  45231. 3,
  45232. 3,
  45233. 1,
  45234. 1
  45235. ]
  45236. ],
  45237. [
  45238. 0,
  45239. "Default",
  45240. 2,
  45241. 1
  45242. ]
  45243. ]
  45244. ],
  45245. [ ]
  45246. ]
  45247. ],
  45248. [
  45249. ],
  45250. []
  45251. ]
  45252. , [
  45253. "level35",
  45254. 384,
  45255. 600,
  45256. false,
  45257. "level",
  45258. 5616076748027522,
  45259. [
  45260. [
  45261. "Layer 0",
  45262. 0,
  45263. 401089839475965,
  45264. true,
  45265. [44, 44, 44],
  45266. false,
  45267. 1,
  45268. 1,
  45269. 1,
  45270. false,
  45271. 1,
  45272. 0,
  45273. 0,
  45274. [
  45275. [
  45276. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  45277. 3,
  45278. 1044,
  45279. [
  45280. ],
  45281. [
  45282. ],
  45283. [
  45284. 0,
  45285. "Default",
  45286. 0,
  45287. 1
  45288. ]
  45289. ]
  45290. , [
  45291. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45292. 0,
  45293. 1045,
  45294. [
  45295. [0],
  45296. [0],
  45297. [1]
  45298. ],
  45299. [
  45300. [
  45301. 1,
  45302. 1
  45303. ],
  45304. [
  45305. 1
  45306. ],
  45307. [
  45308. 200,
  45309. 600,
  45310. 500,
  45311. 3,
  45312. 3,
  45313. 1,
  45314. 1
  45315. ]
  45316. ],
  45317. [
  45318. 0,
  45319. "Red",
  45320. 4,
  45321. 1
  45322. ]
  45323. ]
  45324. , [
  45325. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  45326. 2,
  45327. 1046,
  45328. [
  45329. ],
  45330. [
  45331. ],
  45332. [
  45333. 0,
  45334. "Default",
  45335. 0,
  45336. 1
  45337. ]
  45338. ]
  45339. , [
  45340. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45341. 1,
  45342. 1047,
  45343. [
  45344. ],
  45345. [
  45346. ],
  45347. [
  45348. 1,
  45349. "Default",
  45350. 0,
  45351. 1
  45352. ]
  45353. ]
  45354. , [
  45355. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45356. 1,
  45357. 1050,
  45358. [
  45359. ],
  45360. [
  45361. ],
  45362. [
  45363. 1,
  45364. "Default",
  45365. 0,
  45366. 1
  45367. ]
  45368. ]
  45369. , [
  45370. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673509985209, 0.00699300691485405, 0, 0, []],
  45371. 3,
  45372. 1052,
  45373. [
  45374. ],
  45375. [
  45376. ],
  45377. [
  45378. 0,
  45379. "Default",
  45380. 2,
  45381. 1
  45382. ]
  45383. ]
  45384. , [
  45385. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673509985209, -1.422360301017761, 0, 0, []],
  45386. 3,
  45387. 1053,
  45388. [
  45389. ],
  45390. [
  45391. ],
  45392. [
  45393. 0,
  45394. "Default",
  45395. 1,
  45396. 1
  45397. ]
  45398. ]
  45399. , [
  45400. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  45401. 4,
  45402. 1054,
  45403. [
  45404. [0]
  45405. ],
  45406. [
  45407. [
  45408. 1,
  45409. 0,
  45410. 0,
  45411. 4,
  45412. 0,
  45413. 0,
  45414. 0,
  45415. 50,
  45416. 0
  45417. ]
  45418. ],
  45419. [
  45420. 0,
  45421. "Default",
  45422. 0,
  45423. 1
  45424. ]
  45425. ]
  45426. , [
  45427. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  45428. 4,
  45429. 1055,
  45430. [
  45431. [1]
  45432. ],
  45433. [
  45434. [
  45435. 1,
  45436. 0,
  45437. 0,
  45438. 4,
  45439. 0,
  45440. 0,
  45441. 0,
  45442. 50,
  45443. 0
  45444. ]
  45445. ],
  45446. [
  45447. 0,
  45448. "Default",
  45449. 2,
  45450. 1
  45451. ]
  45452. ]
  45453. , [
  45454. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  45455. 4,
  45456. 1056,
  45457. [
  45458. [2]
  45459. ],
  45460. [
  45461. [
  45462. 1,
  45463. 0,
  45464. 0,
  45465. 4,
  45466. 0,
  45467. 0,
  45468. 0,
  45469. 50,
  45470. 0
  45471. ]
  45472. ],
  45473. [
  45474. 0,
  45475. "Default",
  45476. 1,
  45477. 1
  45478. ]
  45479. ]
  45480. , [
  45481. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  45482. 5,
  45483. 1057,
  45484. [
  45485. [0],
  45486. [0]
  45487. ],
  45488. [
  45489. ],
  45490. [
  45491. 0,
  45492. "Default",
  45493. 0,
  45494. 1
  45495. ]
  45496. ]
  45497. , [
  45498. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45499. 6,
  45500. 1058,
  45501. [
  45502. [1]
  45503. ],
  45504. [
  45505. ],
  45506. [
  45507. 29,
  45508. 43,
  45509. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  45510. sg_texts[SG.lang]["BEST:"],
  45511. 1,
  45512. 0,
  45513. 0,
  45514. 0,
  45515. 0,
  45516. 0,
  45517. 0,
  45518. 0
  45519. ]
  45520. ]
  45521. , [
  45522. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45523. 6,
  45524. 1059,
  45525. [
  45526. [0]
  45527. ],
  45528. [
  45529. ],
  45530. [
  45531. 29,
  45532. 43,
  45533. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  45534. "MOVE:",
  45535. 1,
  45536. 0,
  45537. 0,
  45538. 0,
  45539. 0,
  45540. 0,
  45541. 0,
  45542. 0
  45543. ]
  45544. ]
  45545. , [
  45546. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45547. 6,
  45548. 1060,
  45549. [
  45550. [2]
  45551. ],
  45552. [
  45553. ],
  45554. [
  45555. 29,
  45556. 43,
  45557. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  45558. sg_texts[SG.lang]["LEVEL:"]+" 01",
  45559. 1,
  45560. 0,
  45561. 0,
  45562. 0,
  45563. 0,
  45564. 0,
  45565. 0,
  45566. 0
  45567. ]
  45568. ]
  45569. , [
  45570. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  45571. 4,
  45572. 1061,
  45573. [
  45574. [3]
  45575. ],
  45576. [
  45577. [
  45578. 1,
  45579. 0,
  45580. 0,
  45581. 4,
  45582. 0,
  45583. 0,
  45584. 0,
  45585. 50,
  45586. 0
  45587. ]
  45588. ],
  45589. [
  45590. 0,
  45591. "Default",
  45592. 3,
  45593. 1
  45594. ]
  45595. ]
  45596. , [
  45597. [256, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  45598. 0,
  45599. 1062,
  45600. [
  45601. [0],
  45602. [0],
  45603. [0]
  45604. ],
  45605. [
  45606. [
  45607. 2,
  45608. 1
  45609. ],
  45610. [
  45611. 1
  45612. ],
  45613. [
  45614. 200,
  45615. 600,
  45616. 500,
  45617. 3,
  45618. 3,
  45619. 1,
  45620. 1
  45621. ]
  45622. ],
  45623. [
  45624. 0,
  45625. "Default",
  45626. 2,
  45627. 1
  45628. ]
  45629. ]
  45630. , [
  45631. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  45632. 0,
  45633. 1065,
  45634. [
  45635. [0],
  45636. [0],
  45637. [0]
  45638. ],
  45639. [
  45640. [
  45641. 2,
  45642. 1
  45643. ],
  45644. [
  45645. 1
  45646. ],
  45647. [
  45648. 200,
  45649. 600,
  45650. 500,
  45651. 3,
  45652. 3,
  45653. 1,
  45654. 1
  45655. ]
  45656. ],
  45657. [
  45658. 0,
  45659. "Default",
  45660. 2,
  45661. 1
  45662. ]
  45663. ]
  45664. , [
  45665. [0, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45666. 0,
  45667. 1066,
  45668. [
  45669. [0],
  45670. [0],
  45671. [0]
  45672. ],
  45673. [
  45674. [
  45675. 1,
  45676. 1
  45677. ],
  45678. [
  45679. 1
  45680. ],
  45681. [
  45682. 200,
  45683. 600,
  45684. 500,
  45685. 3,
  45686. 3,
  45687. 1,
  45688. 1
  45689. ]
  45690. ],
  45691. [
  45692. 0,
  45693. "Default",
  45694. 3,
  45695. 1
  45696. ]
  45697. ]
  45698. , [
  45699. [64, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45700. 0,
  45701. 1067,
  45702. [
  45703. [0],
  45704. [0],
  45705. [0]
  45706. ],
  45707. [
  45708. [
  45709. 1,
  45710. 1
  45711. ],
  45712. [
  45713. 1
  45714. ],
  45715. [
  45716. 200,
  45717. 600,
  45718. 500,
  45719. 3,
  45720. 3,
  45721. 1,
  45722. 1
  45723. ]
  45724. ],
  45725. [
  45726. 0,
  45727. "Default",
  45728. 3,
  45729. 1
  45730. ]
  45731. ]
  45732. , [
  45733. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45734. 0,
  45735. 1068,
  45736. [
  45737. [0],
  45738. [0],
  45739. [0]
  45740. ],
  45741. [
  45742. [
  45743. 1,
  45744. 1
  45745. ],
  45746. [
  45747. 1
  45748. ],
  45749. [
  45750. 200,
  45751. 600,
  45752. 500,
  45753. 3,
  45754. 3,
  45755. 1,
  45756. 1
  45757. ]
  45758. ],
  45759. [
  45760. 0,
  45761. "Default",
  45762. 3,
  45763. 1
  45764. ]
  45765. ]
  45766. , [
  45767. [128, 320, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  45768. 0,
  45769. 1069,
  45770. [
  45771. [0],
  45772. [0],
  45773. [0]
  45774. ],
  45775. [
  45776. [
  45777. 2,
  45778. 1
  45779. ],
  45780. [
  45781. 1
  45782. ],
  45783. [
  45784. 200,
  45785. 600,
  45786. 500,
  45787. 3,
  45788. 3,
  45789. 1,
  45790. 1
  45791. ]
  45792. ],
  45793. [
  45794. 0,
  45795. "Default",
  45796. 0,
  45797. 1
  45798. ]
  45799. ]
  45800. , [
  45801. [64, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  45802. 0,
  45803. 1072,
  45804. [
  45805. [0],
  45806. [0],
  45807. [0]
  45808. ],
  45809. [
  45810. [
  45811. 2,
  45812. 1
  45813. ],
  45814. [
  45815. 1
  45816. ],
  45817. [
  45818. 200,
  45819. 600,
  45820. 500,
  45821. 3,
  45822. 3,
  45823. 1,
  45824. 1
  45825. ]
  45826. ],
  45827. [
  45828. 0,
  45829. "Default",
  45830. 2,
  45831. 1
  45832. ]
  45833. ]
  45834. , [
  45835. [320, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  45836. 0,
  45837. 1064,
  45838. [
  45839. [0],
  45840. [0],
  45841. [0]
  45842. ],
  45843. [
  45844. [
  45845. 2,
  45846. 1
  45847. ],
  45848. [
  45849. 1
  45850. ],
  45851. [
  45852. 200,
  45853. 600,
  45854. 500,
  45855. 3,
  45856. 3,
  45857. 1,
  45858. 1
  45859. ]
  45860. ],
  45861. [
  45862. 0,
  45863. "Default",
  45864. 0,
  45865. 1
  45866. ]
  45867. ]
  45868. , [
  45869. [192, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  45870. 0,
  45871. 1071,
  45872. [
  45873. [0],
  45874. [0],
  45875. [0]
  45876. ],
  45877. [
  45878. [
  45879. 2,
  45880. 1
  45881. ],
  45882. [
  45883. 1
  45884. ],
  45885. [
  45886. 200,
  45887. 600,
  45888. 500,
  45889. 3,
  45890. 3,
  45891. 1,
  45892. 1
  45893. ]
  45894. ],
  45895. [
  45896. 0,
  45897. "Default",
  45898. 2,
  45899. 1
  45900. ]
  45901. ]
  45902. , [
  45903. [192, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45904. 0,
  45905. 83,
  45906. [
  45907. [0],
  45908. [0],
  45909. [0]
  45910. ],
  45911. [
  45912. [
  45913. 1,
  45914. 1
  45915. ],
  45916. [
  45917. 1
  45918. ],
  45919. [
  45920. 200,
  45921. 600,
  45922. 500,
  45923. 3,
  45924. 3,
  45925. 1,
  45926. 1
  45927. ]
  45928. ],
  45929. [
  45930. 0,
  45931. "Default",
  45932. 3,
  45933. 1
  45934. ]
  45935. ]
  45936. ],
  45937. [ ]
  45938. ]
  45939. ],
  45940. [
  45941. ],
  45942. []
  45943. ]
  45944. , [
  45945. "level36",
  45946. 384,
  45947. 600,
  45948. false,
  45949. "level",
  45950. 3598728722339305,
  45951. [
  45952. [
  45953. "Layer 0",
  45954. 0,
  45955. 193284296942073,
  45956. true,
  45957. [44, 44, 44],
  45958. false,
  45959. 1,
  45960. 1,
  45961. 1,
  45962. false,
  45963. 1,
  45964. 0,
  45965. 0,
  45966. [
  45967. [
  45968. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  45969. 3,
  45970. 1063,
  45971. [
  45972. ],
  45973. [
  45974. ],
  45975. [
  45976. 0,
  45977. "Default",
  45978. 0,
  45979. 1
  45980. ]
  45981. ]
  45982. , [
  45983. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  45984. 0,
  45985. 1075,
  45986. [
  45987. [0],
  45988. [0],
  45989. [1]
  45990. ],
  45991. [
  45992. [
  45993. 1,
  45994. 1
  45995. ],
  45996. [
  45997. 1
  45998. ],
  45999. [
  46000. 200,
  46001. 600,
  46002. 500,
  46003. 3,
  46004. 3,
  46005. 1,
  46006. 1
  46007. ]
  46008. ],
  46009. [
  46010. 0,
  46011. "Red",
  46012. 4,
  46013. 1
  46014. ]
  46015. ]
  46016. , [
  46017. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  46018. 2,
  46019. 1076,
  46020. [
  46021. ],
  46022. [
  46023. ],
  46024. [
  46025. 0,
  46026. "Default",
  46027. 0,
  46028. 1
  46029. ]
  46030. ]
  46031. , [
  46032. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46033. 1,
  46034. 1077,
  46035. [
  46036. ],
  46037. [
  46038. ],
  46039. [
  46040. 1,
  46041. "Default",
  46042. 0,
  46043. 1
  46044. ]
  46045. ]
  46046. , [
  46047. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46048. 1,
  46049. 1078,
  46050. [
  46051. ],
  46052. [
  46053. ],
  46054. [
  46055. 1,
  46056. "Default",
  46057. 0,
  46058. 1
  46059. ]
  46060. ]
  46061. , [
  46062. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  46063. 3,
  46064. 1079,
  46065. [
  46066. ],
  46067. [
  46068. ],
  46069. [
  46070. 0,
  46071. "Default",
  46072. 2,
  46073. 1
  46074. ]
  46075. ]
  46076. , [
  46077. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  46078. 3,
  46079. 1080,
  46080. [
  46081. ],
  46082. [
  46083. ],
  46084. [
  46085. 0,
  46086. "Default",
  46087. 1,
  46088. 1
  46089. ]
  46090. ]
  46091. , [
  46092. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  46093. 4,
  46094. 1081,
  46095. [
  46096. [0]
  46097. ],
  46098. [
  46099. [
  46100. 1,
  46101. 0,
  46102. 0,
  46103. 4,
  46104. 0,
  46105. 0,
  46106. 0,
  46107. 50,
  46108. 0
  46109. ]
  46110. ],
  46111. [
  46112. 0,
  46113. "Default",
  46114. 0,
  46115. 1
  46116. ]
  46117. ]
  46118. , [
  46119. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  46120. 4,
  46121. 1082,
  46122. [
  46123. [1]
  46124. ],
  46125. [
  46126. [
  46127. 1,
  46128. 0,
  46129. 0,
  46130. 4,
  46131. 0,
  46132. 0,
  46133. 0,
  46134. 50,
  46135. 0
  46136. ]
  46137. ],
  46138. [
  46139. 0,
  46140. "Default",
  46141. 2,
  46142. 1
  46143. ]
  46144. ]
  46145. , [
  46146. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  46147. 4,
  46148. 1083,
  46149. [
  46150. [2]
  46151. ],
  46152. [
  46153. [
  46154. 1,
  46155. 0,
  46156. 0,
  46157. 4,
  46158. 0,
  46159. 0,
  46160. 0,
  46161. 50,
  46162. 0
  46163. ]
  46164. ],
  46165. [
  46166. 0,
  46167. "Default",
  46168. 1,
  46169. 1
  46170. ]
  46171. ]
  46172. , [
  46173. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  46174. 5,
  46175. 1084,
  46176. [
  46177. [0],
  46178. [0]
  46179. ],
  46180. [
  46181. ],
  46182. [
  46183. 0,
  46184. "Default",
  46185. 0,
  46186. 1
  46187. ]
  46188. ]
  46189. , [
  46190. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46191. 6,
  46192. 1085,
  46193. [
  46194. [1]
  46195. ],
  46196. [
  46197. ],
  46198. [
  46199. 29,
  46200. 43,
  46201. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  46202. sg_texts[SG.lang]["BEST:"],
  46203. 1,
  46204. 0,
  46205. 0,
  46206. 0,
  46207. 0,
  46208. 0,
  46209. 0,
  46210. 0
  46211. ]
  46212. ]
  46213. , [
  46214. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46215. 6,
  46216. 1086,
  46217. [
  46218. [0]
  46219. ],
  46220. [
  46221. ],
  46222. [
  46223. 29,
  46224. 43,
  46225. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  46226. "MOVE:",
  46227. 1,
  46228. 0,
  46229. 0,
  46230. 0,
  46231. 0,
  46232. 0,
  46233. 0,
  46234. 0
  46235. ]
  46236. ]
  46237. , [
  46238. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46239. 6,
  46240. 1087,
  46241. [
  46242. [2]
  46243. ],
  46244. [
  46245. ],
  46246. [
  46247. 29,
  46248. 43,
  46249. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  46250. sg_texts[SG.lang]["LEVEL:"]+" 01",
  46251. 1,
  46252. 0,
  46253. 0,
  46254. 0,
  46255. 0,
  46256. 0,
  46257. 0,
  46258. 0
  46259. ]
  46260. ]
  46261. , [
  46262. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  46263. 4,
  46264. 1088,
  46265. [
  46266. [3]
  46267. ],
  46268. [
  46269. [
  46270. 1,
  46271. 0,
  46272. 0,
  46273. 4,
  46274. 0,
  46275. 0,
  46276. 0,
  46277. 50,
  46278. 0
  46279. ]
  46280. ],
  46281. [
  46282. 0,
  46283. "Default",
  46284. 3,
  46285. 1
  46286. ]
  46287. ]
  46288. , [
  46289. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  46290. 0,
  46291. 1090,
  46292. [
  46293. [0],
  46294. [0],
  46295. [0]
  46296. ],
  46297. [
  46298. [
  46299. 2,
  46300. 1
  46301. ],
  46302. [
  46303. 1
  46304. ],
  46305. [
  46306. 200,
  46307. 600,
  46308. 500,
  46309. 3,
  46310. 3,
  46311. 1,
  46312. 1
  46313. ]
  46314. ],
  46315. [
  46316. 0,
  46317. "Default",
  46318. 2,
  46319. 1
  46320. ]
  46321. ]
  46322. , [
  46323. [256, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  46324. 0,
  46325. 1094,
  46326. [
  46327. [0],
  46328. [0],
  46329. [0]
  46330. ],
  46331. [
  46332. [
  46333. 2,
  46334. 1
  46335. ],
  46336. [
  46337. 1
  46338. ],
  46339. [
  46340. 200,
  46341. 600,
  46342. 500,
  46343. 3,
  46344. 3,
  46345. 1,
  46346. 1
  46347. ]
  46348. ],
  46349. [
  46350. 0,
  46351. "Default",
  46352. 0,
  46353. 1
  46354. ]
  46355. ]
  46356. , [
  46357. [64, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46358. 0,
  46359. 1095,
  46360. [
  46361. [0],
  46362. [0],
  46363. [0]
  46364. ],
  46365. [
  46366. [
  46367. 1,
  46368. 1
  46369. ],
  46370. [
  46371. 1
  46372. ],
  46373. [
  46374. 200,
  46375. 600,
  46376. 500,
  46377. 3,
  46378. 3,
  46379. 1,
  46380. 1
  46381. ]
  46382. ],
  46383. [
  46384. 0,
  46385. "Default",
  46386. 1,
  46387. 1
  46388. ]
  46389. ]
  46390. , [
  46391. [256, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46392. 0,
  46393. 1098,
  46394. [
  46395. [0],
  46396. [0],
  46397. [0]
  46398. ],
  46399. [
  46400. [
  46401. 1,
  46402. 1
  46403. ],
  46404. [
  46405. 1
  46406. ],
  46407. [
  46408. 200,
  46409. 600,
  46410. 500,
  46411. 3,
  46412. 3,
  46413. 1,
  46414. 1
  46415. ]
  46416. ],
  46417. [
  46418. 0,
  46419. "Default",
  46420. 3,
  46421. 1
  46422. ]
  46423. ]
  46424. , [
  46425. [320, 320, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  46426. 0,
  46427. 1092,
  46428. [
  46429. [0],
  46430. [0],
  46431. [0]
  46432. ],
  46433. [
  46434. [
  46435. 2,
  46436. 1
  46437. ],
  46438. [
  46439. 1
  46440. ],
  46441. [
  46442. 200,
  46443. 600,
  46444. 500,
  46445. 3,
  46446. 3,
  46447. 1,
  46448. 1
  46449. ]
  46450. ],
  46451. [
  46452. 0,
  46453. "Default",
  46454. 0,
  46455. 1
  46456. ]
  46457. ]
  46458. , [
  46459. [64, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  46460. 0,
  46461. 1093,
  46462. [
  46463. [0],
  46464. [0],
  46465. [0]
  46466. ],
  46467. [
  46468. [
  46469. 2,
  46470. 1
  46471. ],
  46472. [
  46473. 1
  46474. ],
  46475. [
  46476. 200,
  46477. 600,
  46478. 500,
  46479. 3,
  46480. 3,
  46481. 1,
  46482. 1
  46483. ]
  46484. ],
  46485. [
  46486. 0,
  46487. "Default",
  46488. 2,
  46489. 1
  46490. ]
  46491. ]
  46492. , [
  46493. [0, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  46494. 0,
  46495. 1089,
  46496. [
  46497. [0],
  46498. [0],
  46499. [0]
  46500. ],
  46501. [
  46502. [
  46503. 2,
  46504. 1
  46505. ],
  46506. [
  46507. 1
  46508. ],
  46509. [
  46510. 200,
  46511. 600,
  46512. 500,
  46513. 3,
  46514. 3,
  46515. 1,
  46516. 1
  46517. ]
  46518. ],
  46519. [
  46520. 0,
  46521. "Default",
  46522. 0,
  46523. 1
  46524. ]
  46525. ]
  46526. , [
  46527. [256, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46528. 0,
  46529. 1091,
  46530. [
  46531. [0],
  46532. [0],
  46533. [0]
  46534. ],
  46535. [
  46536. [
  46537. 1,
  46538. 1
  46539. ],
  46540. [
  46541. 1
  46542. ],
  46543. [
  46544. 200,
  46545. 600,
  46546. 500,
  46547. 3,
  46548. 3,
  46549. 1,
  46550. 1
  46551. ]
  46552. ],
  46553. [
  46554. 0,
  46555. "Default",
  46556. 3,
  46557. 1
  46558. ]
  46559. ]
  46560. , [
  46561. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  46562. 0,
  46563. 1096,
  46564. [
  46565. [0],
  46566. [0],
  46567. [0]
  46568. ],
  46569. [
  46570. [
  46571. 2,
  46572. 1
  46573. ],
  46574. [
  46575. 1
  46576. ],
  46577. [
  46578. 200,
  46579. 600,
  46580. 500,
  46581. 3,
  46582. 3,
  46583. 1,
  46584. 1
  46585. ]
  46586. ],
  46587. [
  46588. 0,
  46589. "Default",
  46590. 2,
  46591. 1
  46592. ]
  46593. ]
  46594. , [
  46595. [192, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46596. 0,
  46597. 1097,
  46598. [
  46599. [0],
  46600. [0],
  46601. [0]
  46602. ],
  46603. [
  46604. [
  46605. 1,
  46606. 1
  46607. ],
  46608. [
  46609. 1
  46610. ],
  46611. [
  46612. 200,
  46613. 600,
  46614. 500,
  46615. 3,
  46616. 3,
  46617. 1,
  46618. 1
  46619. ]
  46620. ],
  46621. [
  46622. 0,
  46623. "Default",
  46624. 3,
  46625. 1
  46626. ]
  46627. ]
  46628. ],
  46629. [ ]
  46630. ]
  46631. ],
  46632. [
  46633. ],
  46634. []
  46635. ]
  46636. , [
  46637. "level37",
  46638. 384,
  46639. 600,
  46640. false,
  46641. "level",
  46642. 5938694497851802,
  46643. [
  46644. [
  46645. "Layer 0",
  46646. 0,
  46647. 8541297649509562,
  46648. true,
  46649. [44, 44, 44],
  46650. false,
  46651. 1,
  46652. 1,
  46653. 1,
  46654. false,
  46655. 1,
  46656. 0,
  46657. 0,
  46658. [
  46659. [
  46660. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  46661. 3,
  46662. 1099,
  46663. [
  46664. ],
  46665. [
  46666. ],
  46667. [
  46668. 0,
  46669. "Default",
  46670. 0,
  46671. 1
  46672. ]
  46673. ]
  46674. , [
  46675. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46676. 0,
  46677. 1100,
  46678. [
  46679. [0],
  46680. [0],
  46681. [1]
  46682. ],
  46683. [
  46684. [
  46685. 1,
  46686. 1
  46687. ],
  46688. [
  46689. 1
  46690. ],
  46691. [
  46692. 200,
  46693. 600,
  46694. 500,
  46695. 3,
  46696. 3,
  46697. 1,
  46698. 1
  46699. ]
  46700. ],
  46701. [
  46702. 0,
  46703. "Red",
  46704. 4,
  46705. 1
  46706. ]
  46707. ]
  46708. , [
  46709. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  46710. 2,
  46711. 1101,
  46712. [
  46713. ],
  46714. [
  46715. ],
  46716. [
  46717. 0,
  46718. "Default",
  46719. 0,
  46720. 1
  46721. ]
  46722. ]
  46723. , [
  46724. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46725. 1,
  46726. 1102,
  46727. [
  46728. ],
  46729. [
  46730. ],
  46731. [
  46732. 1,
  46733. "Default",
  46734. 0,
  46735. 1
  46736. ]
  46737. ]
  46738. , [
  46739. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46740. 1,
  46741. 1103,
  46742. [
  46743. ],
  46744. [
  46745. ],
  46746. [
  46747. 1,
  46748. "Default",
  46749. 0,
  46750. 1
  46751. ]
  46752. ]
  46753. , [
  46754. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  46755. 3,
  46756. 1104,
  46757. [
  46758. ],
  46759. [
  46760. ],
  46761. [
  46762. 0,
  46763. "Default",
  46764. 2,
  46765. 1
  46766. ]
  46767. ]
  46768. , [
  46769. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  46770. 3,
  46771. 1105,
  46772. [
  46773. ],
  46774. [
  46775. ],
  46776. [
  46777. 0,
  46778. "Default",
  46779. 1,
  46780. 1
  46781. ]
  46782. ]
  46783. , [
  46784. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  46785. 4,
  46786. 1106,
  46787. [
  46788. [0]
  46789. ],
  46790. [
  46791. [
  46792. 1,
  46793. 0,
  46794. 0,
  46795. 4,
  46796. 0,
  46797. 0,
  46798. 0,
  46799. 50,
  46800. 0
  46801. ]
  46802. ],
  46803. [
  46804. 0,
  46805. "Default",
  46806. 0,
  46807. 1
  46808. ]
  46809. ]
  46810. , [
  46811. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  46812. 4,
  46813. 1107,
  46814. [
  46815. [1]
  46816. ],
  46817. [
  46818. [
  46819. 1,
  46820. 0,
  46821. 0,
  46822. 4,
  46823. 0,
  46824. 0,
  46825. 0,
  46826. 50,
  46827. 0
  46828. ]
  46829. ],
  46830. [
  46831. 0,
  46832. "Default",
  46833. 2,
  46834. 1
  46835. ]
  46836. ]
  46837. , [
  46838. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  46839. 4,
  46840. 1108,
  46841. [
  46842. [2]
  46843. ],
  46844. [
  46845. [
  46846. 1,
  46847. 0,
  46848. 0,
  46849. 4,
  46850. 0,
  46851. 0,
  46852. 0,
  46853. 50,
  46854. 0
  46855. ]
  46856. ],
  46857. [
  46858. 0,
  46859. "Default",
  46860. 1,
  46861. 1
  46862. ]
  46863. ]
  46864. , [
  46865. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  46866. 5,
  46867. 1109,
  46868. [
  46869. [0],
  46870. [0]
  46871. ],
  46872. [
  46873. ],
  46874. [
  46875. 0,
  46876. "Default",
  46877. 0,
  46878. 1
  46879. ]
  46880. ]
  46881. , [
  46882. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46883. 6,
  46884. 1110,
  46885. [
  46886. [1]
  46887. ],
  46888. [
  46889. ],
  46890. [
  46891. 29,
  46892. 43,
  46893. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  46894. sg_texts[SG.lang]["BEST:"],
  46895. 1,
  46896. 0,
  46897. 0,
  46898. 0,
  46899. 0,
  46900. 0,
  46901. 0,
  46902. 0
  46903. ]
  46904. ]
  46905. , [
  46906. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46907. 6,
  46908. 1111,
  46909. [
  46910. [0]
  46911. ],
  46912. [
  46913. ],
  46914. [
  46915. 29,
  46916. 43,
  46917. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  46918. "MOVE:",
  46919. 1,
  46920. 0,
  46921. 0,
  46922. 0,
  46923. 0,
  46924. 0,
  46925. 0,
  46926. 0
  46927. ]
  46928. ]
  46929. , [
  46930. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  46931. 6,
  46932. 1112,
  46933. [
  46934. [2]
  46935. ],
  46936. [
  46937. ],
  46938. [
  46939. 29,
  46940. 43,
  46941. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  46942. sg_texts[SG.lang]["LEVEL:"]+" 01",
  46943. 1,
  46944. 0,
  46945. 0,
  46946. 0,
  46947. 0,
  46948. 0,
  46949. 0,
  46950. 0
  46951. ]
  46952. ]
  46953. , [
  46954. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  46955. 4,
  46956. 1113,
  46957. [
  46958. [3]
  46959. ],
  46960. [
  46961. [
  46962. 1,
  46963. 0,
  46964. 0,
  46965. 4,
  46966. 0,
  46967. 0,
  46968. 0,
  46969. 50,
  46970. 0
  46971. ]
  46972. ],
  46973. [
  46974. 0,
  46975. "Default",
  46976. 3,
  46977. 1
  46978. ]
  46979. ]
  46980. , [
  46981. [128, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  46982. 0,
  46983. 1114,
  46984. [
  46985. [0],
  46986. [0],
  46987. [0]
  46988. ],
  46989. [
  46990. [
  46991. 2,
  46992. 1
  46993. ],
  46994. [
  46995. 1
  46996. ],
  46997. [
  46998. 200,
  46999. 600,
  47000. 500,
  47001. 3,
  47002. 3,
  47003. 1,
  47004. 1
  47005. ]
  47006. ],
  47007. [
  47008. 0,
  47009. "Default",
  47010. 2,
  47011. 1
  47012. ]
  47013. ]
  47014. , [
  47015. [192, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  47016. 0,
  47017. 1115,
  47018. [
  47019. [0],
  47020. [0],
  47021. [0]
  47022. ],
  47023. [
  47024. [
  47025. 2,
  47026. 1
  47027. ],
  47028. [
  47029. 1
  47030. ],
  47031. [
  47032. 200,
  47033. 600,
  47034. 500,
  47035. 3,
  47036. 3,
  47037. 1,
  47038. 1
  47039. ]
  47040. ],
  47041. [
  47042. 0,
  47043. "Default",
  47044. 0,
  47045. 1
  47046. ]
  47047. ]
  47048. , [
  47049. [0, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47050. 0,
  47051. 1116,
  47052. [
  47053. [0],
  47054. [0],
  47055. [0]
  47056. ],
  47057. [
  47058. [
  47059. 1,
  47060. 1
  47061. ],
  47062. [
  47063. 1
  47064. ],
  47065. [
  47066. 200,
  47067. 600,
  47068. 500,
  47069. 3,
  47070. 3,
  47071. 1,
  47072. 1
  47073. ]
  47074. ],
  47075. [
  47076. 0,
  47077. "Default",
  47078. 1,
  47079. 1
  47080. ]
  47081. ]
  47082. , [
  47083. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  47084. 0,
  47085. 1119,
  47086. [
  47087. [0],
  47088. [0],
  47089. [0]
  47090. ],
  47091. [
  47092. [
  47093. 2,
  47094. 1
  47095. ],
  47096. [
  47097. 1
  47098. ],
  47099. [
  47100. 200,
  47101. 600,
  47102. 500,
  47103. 3,
  47104. 3,
  47105. 1,
  47106. 1
  47107. ]
  47108. ],
  47109. [
  47110. 0,
  47111. "Default",
  47112. 2,
  47113. 1
  47114. ]
  47115. ]
  47116. , [
  47117. [128, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47118. 0,
  47119. 1121,
  47120. [
  47121. [0],
  47122. [0],
  47123. [0]
  47124. ],
  47125. [
  47126. [
  47127. 1,
  47128. 1
  47129. ],
  47130. [
  47131. 1
  47132. ],
  47133. [
  47134. 200,
  47135. 600,
  47136. 500,
  47137. 3,
  47138. 3,
  47139. 1,
  47140. 1
  47141. ]
  47142. ],
  47143. [
  47144. 0,
  47145. "Default",
  47146. 3,
  47147. 1
  47148. ]
  47149. ]
  47150. , [
  47151. [256, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  47152. 0,
  47153. 1122,
  47154. [
  47155. [0],
  47156. [0],
  47157. [0]
  47158. ],
  47159. [
  47160. [
  47161. 2,
  47162. 1
  47163. ],
  47164. [
  47165. 1
  47166. ],
  47167. [
  47168. 200,
  47169. 600,
  47170. 500,
  47171. 3,
  47172. 3,
  47173. 1,
  47174. 1
  47175. ]
  47176. ],
  47177. [
  47178. 0,
  47179. "Default",
  47180. 2,
  47181. 1
  47182. ]
  47183. ]
  47184. , [
  47185. [0, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47186. 0,
  47187. 1123,
  47188. [
  47189. [0],
  47190. [0],
  47191. [0]
  47192. ],
  47193. [
  47194. [
  47195. 1,
  47196. 1
  47197. ],
  47198. [
  47199. 1
  47200. ],
  47201. [
  47202. 200,
  47203. 600,
  47204. 500,
  47205. 3,
  47206. 3,
  47207. 1,
  47208. 1
  47209. ]
  47210. ],
  47211. [
  47212. 0,
  47213. "Default",
  47214. 3,
  47215. 1
  47216. ]
  47217. ]
  47218. , [
  47219. [64, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47220. 0,
  47221. 1120,
  47222. [
  47223. [0],
  47224. [0],
  47225. [0]
  47226. ],
  47227. [
  47228. [
  47229. 1,
  47230. 1
  47231. ],
  47232. [
  47233. 1
  47234. ],
  47235. [
  47236. 200,
  47237. 600,
  47238. 500,
  47239. 3,
  47240. 3,
  47241. 1,
  47242. 1
  47243. ]
  47244. ],
  47245. [
  47246. 0,
  47247. "Default",
  47248. 1,
  47249. 1
  47250. ]
  47251. ]
  47252. , [
  47253. [256, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47254. 0,
  47255. 1117,
  47256. [
  47257. [0],
  47258. [0],
  47259. [0]
  47260. ],
  47261. [
  47262. [
  47263. 1,
  47264. 1
  47265. ],
  47266. [
  47267. 1
  47268. ],
  47269. [
  47270. 200,
  47271. 600,
  47272. 500,
  47273. 3,
  47274. 3,
  47275. 1,
  47276. 1
  47277. ]
  47278. ],
  47279. [
  47280. 0,
  47281. "Default",
  47282. 3,
  47283. 1
  47284. ]
  47285. ]
  47286. ],
  47287. [ ]
  47288. ]
  47289. ],
  47290. [
  47291. ],
  47292. []
  47293. ]
  47294. , [
  47295. "level38",
  47296. 384,
  47297. 600,
  47298. false,
  47299. "level",
  47300. 9056705169420474,
  47301. [
  47302. [
  47303. "Layer 0",
  47304. 0,
  47305. 3165085713215433,
  47306. true,
  47307. [44, 44, 44],
  47308. false,
  47309. 1,
  47310. 1,
  47311. 1,
  47312. false,
  47313. 1,
  47314. 0,
  47315. 0,
  47316. [
  47317. [
  47318. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  47319. 3,
  47320. 1118,
  47321. [
  47322. ],
  47323. [
  47324. ],
  47325. [
  47326. 0,
  47327. "Default",
  47328. 0,
  47329. 1
  47330. ]
  47331. ]
  47332. , [
  47333. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47334. 0,
  47335. 1124,
  47336. [
  47337. [0],
  47338. [0],
  47339. [1]
  47340. ],
  47341. [
  47342. [
  47343. 1,
  47344. 1
  47345. ],
  47346. [
  47347. 1
  47348. ],
  47349. [
  47350. 200,
  47351. 600,
  47352. 500,
  47353. 3,
  47354. 3,
  47355. 1,
  47356. 1
  47357. ]
  47358. ],
  47359. [
  47360. 0,
  47361. "Red",
  47362. 4,
  47363. 1
  47364. ]
  47365. ]
  47366. , [
  47367. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  47368. 2,
  47369. 1125,
  47370. [
  47371. ],
  47372. [
  47373. ],
  47374. [
  47375. 0,
  47376. "Default",
  47377. 0,
  47378. 1
  47379. ]
  47380. ]
  47381. , [
  47382. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47383. 1,
  47384. 1126,
  47385. [
  47386. ],
  47387. [
  47388. ],
  47389. [
  47390. 1,
  47391. "Default",
  47392. 0,
  47393. 1
  47394. ]
  47395. ]
  47396. , [
  47397. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47398. 1,
  47399. 1127,
  47400. [
  47401. ],
  47402. [
  47403. ],
  47404. [
  47405. 1,
  47406. "Default",
  47407. 0,
  47408. 1
  47409. ]
  47410. ]
  47411. , [
  47412. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  47413. 3,
  47414. 1128,
  47415. [
  47416. ],
  47417. [
  47418. ],
  47419. [
  47420. 0,
  47421. "Default",
  47422. 2,
  47423. 1
  47424. ]
  47425. ]
  47426. , [
  47427. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  47428. 3,
  47429. 1129,
  47430. [
  47431. ],
  47432. [
  47433. ],
  47434. [
  47435. 0,
  47436. "Default",
  47437. 1,
  47438. 1
  47439. ]
  47440. ]
  47441. , [
  47442. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  47443. 4,
  47444. 1130,
  47445. [
  47446. [0]
  47447. ],
  47448. [
  47449. [
  47450. 1,
  47451. 0,
  47452. 0,
  47453. 4,
  47454. 0,
  47455. 0,
  47456. 0,
  47457. 50,
  47458. 0
  47459. ]
  47460. ],
  47461. [
  47462. 0,
  47463. "Default",
  47464. 0,
  47465. 1
  47466. ]
  47467. ]
  47468. , [
  47469. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  47470. 4,
  47471. 1131,
  47472. [
  47473. [1]
  47474. ],
  47475. [
  47476. [
  47477. 1,
  47478. 0,
  47479. 0,
  47480. 4,
  47481. 0,
  47482. 0,
  47483. 0,
  47484. 50,
  47485. 0
  47486. ]
  47487. ],
  47488. [
  47489. 0,
  47490. "Default",
  47491. 2,
  47492. 1
  47493. ]
  47494. ]
  47495. , [
  47496. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  47497. 4,
  47498. 1132,
  47499. [
  47500. [2]
  47501. ],
  47502. [
  47503. [
  47504. 1,
  47505. 0,
  47506. 0,
  47507. 4,
  47508. 0,
  47509. 0,
  47510. 0,
  47511. 50,
  47512. 0
  47513. ]
  47514. ],
  47515. [
  47516. 0,
  47517. "Default",
  47518. 1,
  47519. 1
  47520. ]
  47521. ]
  47522. , [
  47523. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  47524. 5,
  47525. 1133,
  47526. [
  47527. [0],
  47528. [0]
  47529. ],
  47530. [
  47531. ],
  47532. [
  47533. 0,
  47534. "Default",
  47535. 0,
  47536. 1
  47537. ]
  47538. ]
  47539. , [
  47540. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47541. 6,
  47542. 1134,
  47543. [
  47544. [1]
  47545. ],
  47546. [
  47547. ],
  47548. [
  47549. 29,
  47550. 43,
  47551. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  47552. sg_texts[SG.lang]["BEST:"],
  47553. 1,
  47554. 0,
  47555. 0,
  47556. 0,
  47557. 0,
  47558. 0,
  47559. 0,
  47560. 0
  47561. ]
  47562. ]
  47563. , [
  47564. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47565. 6,
  47566. 1135,
  47567. [
  47568. [0]
  47569. ],
  47570. [
  47571. ],
  47572. [
  47573. 29,
  47574. 43,
  47575. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  47576. "MOVE:",
  47577. 1,
  47578. 0,
  47579. 0,
  47580. 0,
  47581. 0,
  47582. 0,
  47583. 0,
  47584. 0
  47585. ]
  47586. ]
  47587. , [
  47588. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47589. 6,
  47590. 1136,
  47591. [
  47592. [2]
  47593. ],
  47594. [
  47595. ],
  47596. [
  47597. 29,
  47598. 43,
  47599. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  47600. sg_texts[SG.lang]["LEVEL:"]+" 01",
  47601. 1,
  47602. 0,
  47603. 0,
  47604. 0,
  47605. 0,
  47606. 0,
  47607. 0,
  47608. 0
  47609. ]
  47610. ]
  47611. , [
  47612. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  47613. 4,
  47614. 1137,
  47615. [
  47616. [3]
  47617. ],
  47618. [
  47619. [
  47620. 1,
  47621. 0,
  47622. 0,
  47623. 4,
  47624. 0,
  47625. 0,
  47626. 0,
  47627. 50,
  47628. 0
  47629. ]
  47630. ],
  47631. [
  47632. 0,
  47633. "Default",
  47634. 3,
  47635. 1
  47636. ]
  47637. ]
  47638. , [
  47639. [256, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  47640. 0,
  47641. 1138,
  47642. [
  47643. [0],
  47644. [0],
  47645. [0]
  47646. ],
  47647. [
  47648. [
  47649. 2,
  47650. 1
  47651. ],
  47652. [
  47653. 1
  47654. ],
  47655. [
  47656. 200,
  47657. 600,
  47658. 500,
  47659. 3,
  47660. 3,
  47661. 1,
  47662. 1
  47663. ]
  47664. ],
  47665. [
  47666. 0,
  47667. "Default",
  47668. 2,
  47669. 1
  47670. ]
  47671. ]
  47672. , [
  47673. [192, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  47674. 0,
  47675. 1139,
  47676. [
  47677. [0],
  47678. [0],
  47679. [0]
  47680. ],
  47681. [
  47682. [
  47683. 2,
  47684. 1
  47685. ],
  47686. [
  47687. 1
  47688. ],
  47689. [
  47690. 200,
  47691. 600,
  47692. 500,
  47693. 3,
  47694. 3,
  47695. 1,
  47696. 1
  47697. ]
  47698. ],
  47699. [
  47700. 0,
  47701. "Default",
  47702. 0,
  47703. 1
  47704. ]
  47705. ]
  47706. , [
  47707. [64, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47708. 0,
  47709. 1140,
  47710. [
  47711. [0],
  47712. [0],
  47713. [0]
  47714. ],
  47715. [
  47716. [
  47717. 1,
  47718. 1
  47719. ],
  47720. [
  47721. 1
  47722. ],
  47723. [
  47724. 200,
  47725. 600,
  47726. 500,
  47727. 3,
  47728. 3,
  47729. 1,
  47730. 1
  47731. ]
  47732. ],
  47733. [
  47734. 0,
  47735. "Default",
  47736. 1,
  47737. 1
  47738. ]
  47739. ]
  47740. , [
  47741. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  47742. 0,
  47743. 1141,
  47744. [
  47745. [0],
  47746. [0],
  47747. [0]
  47748. ],
  47749. [
  47750. [
  47751. 2,
  47752. 1
  47753. ],
  47754. [
  47755. 1
  47756. ],
  47757. [
  47758. 200,
  47759. 600,
  47760. 500,
  47761. 3,
  47762. 3,
  47763. 1,
  47764. 1
  47765. ]
  47766. ],
  47767. [
  47768. 0,
  47769. "Default",
  47770. 2,
  47771. 1
  47772. ]
  47773. ]
  47774. , [
  47775. [256, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47776. 0,
  47777. 1142,
  47778. [
  47779. [0],
  47780. [0],
  47781. [0]
  47782. ],
  47783. [
  47784. [
  47785. 1,
  47786. 1
  47787. ],
  47788. [
  47789. 1
  47790. ],
  47791. [
  47792. 200,
  47793. 600,
  47794. 500,
  47795. 3,
  47796. 3,
  47797. 1,
  47798. 1
  47799. ]
  47800. ],
  47801. [
  47802. 0,
  47803. "Default",
  47804. 3,
  47805. 1
  47806. ]
  47807. ]
  47808. , [
  47809. [320, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  47810. 0,
  47811. 1147,
  47812. [
  47813. [0],
  47814. [0],
  47815. [0]
  47816. ],
  47817. [
  47818. [
  47819. 2,
  47820. 1
  47821. ],
  47822. [
  47823. 1
  47824. ],
  47825. [
  47826. 200,
  47827. 600,
  47828. 500,
  47829. 3,
  47830. 3,
  47831. 1,
  47832. 1
  47833. ]
  47834. ],
  47835. [
  47836. 0,
  47837. "Default",
  47838. 0,
  47839. 1
  47840. ]
  47841. ]
  47842. , [
  47843. [256, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  47844. 0,
  47845. 1148,
  47846. [
  47847. [0],
  47848. [0],
  47849. [0]
  47850. ],
  47851. [
  47852. [
  47853. 2,
  47854. 1
  47855. ],
  47856. [
  47857. 1
  47858. ],
  47859. [
  47860. 200,
  47861. 600,
  47862. 500,
  47863. 3,
  47864. 3,
  47865. 1,
  47866. 1
  47867. ]
  47868. ],
  47869. [
  47870. 0,
  47871. "Default",
  47872. 2,
  47873. 1
  47874. ]
  47875. ]
  47876. , [
  47877. [0, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  47878. 0,
  47879. 1144,
  47880. [
  47881. [0],
  47882. [0],
  47883. [0]
  47884. ],
  47885. [
  47886. [
  47887. 2,
  47888. 1
  47889. ],
  47890. [
  47891. 1
  47892. ],
  47893. [
  47894. 200,
  47895. 600,
  47896. 500,
  47897. 3,
  47898. 3,
  47899. 1,
  47900. 1
  47901. ]
  47902. ],
  47903. [
  47904. 0,
  47905. "Default",
  47906. 2,
  47907. 1
  47908. ]
  47909. ]
  47910. ],
  47911. [ ]
  47912. ]
  47913. ],
  47914. [
  47915. ],
  47916. []
  47917. ]
  47918. , [
  47919. "level39",
  47920. 384,
  47921. 600,
  47922. false,
  47923. "level",
  47924. 4235139016807344,
  47925. [
  47926. [
  47927. "Layer 0",
  47928. 0,
  47929. 718436258565964,
  47930. true,
  47931. [44, 44, 44],
  47932. false,
  47933. 1,
  47934. 1,
  47935. 1,
  47936. false,
  47937. 1,
  47938. 0,
  47939. 0,
  47940. [
  47941. [
  47942. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  47943. 3,
  47944. 1143,
  47945. [
  47946. ],
  47947. [
  47948. ],
  47949. [
  47950. 0,
  47951. "Default",
  47952. 0,
  47953. 1
  47954. ]
  47955. ]
  47956. , [
  47957. [192, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  47958. 0,
  47959. 1145,
  47960. [
  47961. [0],
  47962. [0],
  47963. [1]
  47964. ],
  47965. [
  47966. [
  47967. 1,
  47968. 1
  47969. ],
  47970. [
  47971. 1
  47972. ],
  47973. [
  47974. 200,
  47975. 600,
  47976. 500,
  47977. 3,
  47978. 3,
  47979. 1,
  47980. 1
  47981. ]
  47982. ],
  47983. [
  47984. 0,
  47985. "Red",
  47986. 4,
  47987. 1
  47988. ]
  47989. ]
  47990. , [
  47991. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  47992. 2,
  47993. 1146,
  47994. [
  47995. ],
  47996. [
  47997. ],
  47998. [
  47999. 0,
  48000. "Default",
  48001. 0,
  48002. 1
  48003. ]
  48004. ]
  48005. , [
  48006. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48007. 1,
  48008. 1149,
  48009. [
  48010. ],
  48011. [
  48012. ],
  48013. [
  48014. 1,
  48015. "Default",
  48016. 0,
  48017. 1
  48018. ]
  48019. ]
  48020. , [
  48021. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48022. 1,
  48023. 1150,
  48024. [
  48025. ],
  48026. [
  48027. ],
  48028. [
  48029. 1,
  48030. "Default",
  48031. 0,
  48032. 1
  48033. ]
  48034. ]
  48035. , [
  48036. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  48037. 3,
  48038. 1151,
  48039. [
  48040. ],
  48041. [
  48042. ],
  48043. [
  48044. 0,
  48045. "Default",
  48046. 2,
  48047. 1
  48048. ]
  48049. ]
  48050. , [
  48051. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  48052. 3,
  48053. 1152,
  48054. [
  48055. ],
  48056. [
  48057. ],
  48058. [
  48059. 0,
  48060. "Default",
  48061. 1,
  48062. 1
  48063. ]
  48064. ]
  48065. , [
  48066. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  48067. 4,
  48068. 1153,
  48069. [
  48070. [0]
  48071. ],
  48072. [
  48073. [
  48074. 1,
  48075. 0,
  48076. 0,
  48077. 4,
  48078. 0,
  48079. 0,
  48080. 0,
  48081. 50,
  48082. 0
  48083. ]
  48084. ],
  48085. [
  48086. 0,
  48087. "Default",
  48088. 0,
  48089. 1
  48090. ]
  48091. ]
  48092. , [
  48093. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  48094. 4,
  48095. 1154,
  48096. [
  48097. [1]
  48098. ],
  48099. [
  48100. [
  48101. 1,
  48102. 0,
  48103. 0,
  48104. 4,
  48105. 0,
  48106. 0,
  48107. 0,
  48108. 50,
  48109. 0
  48110. ]
  48111. ],
  48112. [
  48113. 0,
  48114. "Default",
  48115. 2,
  48116. 1
  48117. ]
  48118. ]
  48119. , [
  48120. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  48121. 4,
  48122. 1155,
  48123. [
  48124. [2]
  48125. ],
  48126. [
  48127. [
  48128. 1,
  48129. 0,
  48130. 0,
  48131. 4,
  48132. 0,
  48133. 0,
  48134. 0,
  48135. 50,
  48136. 0
  48137. ]
  48138. ],
  48139. [
  48140. 0,
  48141. "Default",
  48142. 1,
  48143. 1
  48144. ]
  48145. ]
  48146. , [
  48147. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  48148. 5,
  48149. 1156,
  48150. [
  48151. [0],
  48152. [0]
  48153. ],
  48154. [
  48155. ],
  48156. [
  48157. 0,
  48158. "Default",
  48159. 0,
  48160. 1
  48161. ]
  48162. ]
  48163. , [
  48164. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48165. 6,
  48166. 1157,
  48167. [
  48168. [1]
  48169. ],
  48170. [
  48171. ],
  48172. [
  48173. 29,
  48174. 43,
  48175. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  48176. sg_texts[SG.lang]["BEST:"],
  48177. 1,
  48178. 0,
  48179. 0,
  48180. 0,
  48181. 0,
  48182. 0,
  48183. 0,
  48184. 0
  48185. ]
  48186. ]
  48187. , [
  48188. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48189. 6,
  48190. 1158,
  48191. [
  48192. [0]
  48193. ],
  48194. [
  48195. ],
  48196. [
  48197. 29,
  48198. 43,
  48199. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  48200. "MOVE:",
  48201. 1,
  48202. 0,
  48203. 0,
  48204. 0,
  48205. 0,
  48206. 0,
  48207. 0,
  48208. 0
  48209. ]
  48210. ]
  48211. , [
  48212. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48213. 6,
  48214. 1159,
  48215. [
  48216. [2]
  48217. ],
  48218. [
  48219. ],
  48220. [
  48221. 29,
  48222. 43,
  48223. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  48224. sg_texts[SG.lang]["LEVEL:"]+" 01",
  48225. 1,
  48226. 0,
  48227. 0,
  48228. 0,
  48229. 0,
  48230. 0,
  48231. 0,
  48232. 0
  48233. ]
  48234. ]
  48235. , [
  48236. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  48237. 4,
  48238. 1160,
  48239. [
  48240. [3]
  48241. ],
  48242. [
  48243. [
  48244. 1,
  48245. 0,
  48246. 0,
  48247. 4,
  48248. 0,
  48249. 0,
  48250. 0,
  48251. 50,
  48252. 0
  48253. ]
  48254. ],
  48255. [
  48256. 0,
  48257. "Default",
  48258. 3,
  48259. 1
  48260. ]
  48261. ]
  48262. , [
  48263. [320, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  48264. 0,
  48265. 1161,
  48266. [
  48267. [0],
  48268. [0],
  48269. [0]
  48270. ],
  48271. [
  48272. [
  48273. 2,
  48274. 1
  48275. ],
  48276. [
  48277. 1
  48278. ],
  48279. [
  48280. 200,
  48281. 600,
  48282. 500,
  48283. 3,
  48284. 3,
  48285. 1,
  48286. 1
  48287. ]
  48288. ],
  48289. [
  48290. 0,
  48291. "Default",
  48292. 2,
  48293. 1
  48294. ]
  48295. ]
  48296. , [
  48297. [0, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  48298. 0,
  48299. 1162,
  48300. [
  48301. [0],
  48302. [0],
  48303. [0]
  48304. ],
  48305. [
  48306. [
  48307. 2,
  48308. 1
  48309. ],
  48310. [
  48311. 1
  48312. ],
  48313. [
  48314. 200,
  48315. 600,
  48316. 500,
  48317. 3,
  48318. 3,
  48319. 1,
  48320. 1
  48321. ]
  48322. ],
  48323. [
  48324. 0,
  48325. "Default",
  48326. 0,
  48327. 1
  48328. ]
  48329. ]
  48330. , [
  48331. [0, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48332. 0,
  48333. 1163,
  48334. [
  48335. [0],
  48336. [0],
  48337. [0]
  48338. ],
  48339. [
  48340. [
  48341. 1,
  48342. 1
  48343. ],
  48344. [
  48345. 1
  48346. ],
  48347. [
  48348. 200,
  48349. 600,
  48350. 500,
  48351. 3,
  48352. 3,
  48353. 1,
  48354. 1
  48355. ]
  48356. ],
  48357. [
  48358. 0,
  48359. "Default",
  48360. 1,
  48361. 1
  48362. ]
  48363. ]
  48364. , [
  48365. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  48366. 0,
  48367. 1164,
  48368. [
  48369. [0],
  48370. [0],
  48371. [0]
  48372. ],
  48373. [
  48374. [
  48375. 2,
  48376. 1
  48377. ],
  48378. [
  48379. 1
  48380. ],
  48381. [
  48382. 200,
  48383. 600,
  48384. 500,
  48385. 3,
  48386. 3,
  48387. 1,
  48388. 1
  48389. ]
  48390. ],
  48391. [
  48392. 0,
  48393. "Default",
  48394. 2,
  48395. 1
  48396. ]
  48397. ]
  48398. , [
  48399. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48400. 0,
  48401. 1165,
  48402. [
  48403. [0],
  48404. [0],
  48405. [0]
  48406. ],
  48407. [
  48408. [
  48409. 1,
  48410. 1
  48411. ],
  48412. [
  48413. 1
  48414. ],
  48415. [
  48416. 200,
  48417. 600,
  48418. 500,
  48419. 3,
  48420. 3,
  48421. 1,
  48422. 1
  48423. ]
  48424. ],
  48425. [
  48426. 0,
  48427. "Default",
  48428. 3,
  48429. 1
  48430. ]
  48431. ]
  48432. , [
  48433. [192, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  48434. 0,
  48435. 1167,
  48436. [
  48437. [0],
  48438. [0],
  48439. [0]
  48440. ],
  48441. [
  48442. [
  48443. 2,
  48444. 1
  48445. ],
  48446. [
  48447. 1
  48448. ],
  48449. [
  48450. 200,
  48451. 600,
  48452. 500,
  48453. 3,
  48454. 3,
  48455. 1,
  48456. 1
  48457. ]
  48458. ],
  48459. [
  48460. 0,
  48461. "Default",
  48462. 2,
  48463. 1
  48464. ]
  48465. ]
  48466. , [
  48467. [256, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  48468. 0,
  48469. 1169,
  48470. [
  48471. [0],
  48472. [0],
  48473. [0]
  48474. ],
  48475. [
  48476. [
  48477. 2,
  48478. 1
  48479. ],
  48480. [
  48481. 1
  48482. ],
  48483. [
  48484. 200,
  48485. 600,
  48486. 500,
  48487. 3,
  48488. 3,
  48489. 1,
  48490. 1
  48491. ]
  48492. ],
  48493. [
  48494. 0,
  48495. "Default",
  48496. 2,
  48497. 1
  48498. ]
  48499. ]
  48500. , [
  48501. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  48502. 0,
  48503. 1170,
  48504. [
  48505. [0],
  48506. [0],
  48507. [0]
  48508. ],
  48509. [
  48510. [
  48511. 2,
  48512. 1
  48513. ],
  48514. [
  48515. 1
  48516. ],
  48517. [
  48518. 200,
  48519. 600,
  48520. 500,
  48521. 3,
  48522. 3,
  48523. 1,
  48524. 1
  48525. ]
  48526. ],
  48527. [
  48528. 0,
  48529. "Default",
  48530. 2,
  48531. 1
  48532. ]
  48533. ]
  48534. , [
  48535. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  48536. 0,
  48537. 1171,
  48538. [
  48539. [0],
  48540. [0],
  48541. [0]
  48542. ],
  48543. [
  48544. [
  48545. 2,
  48546. 1
  48547. ],
  48548. [
  48549. 1
  48550. ],
  48551. [
  48552. 200,
  48553. 600,
  48554. 500,
  48555. 3,
  48556. 3,
  48557. 1,
  48558. 1
  48559. ]
  48560. ],
  48561. [
  48562. 0,
  48563. "Default",
  48564. 2,
  48565. 1
  48566. ]
  48567. ]
  48568. , [
  48569. [64, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  48570. 0,
  48571. 1172,
  48572. [
  48573. [0],
  48574. [0],
  48575. [0]
  48576. ],
  48577. [
  48578. [
  48579. 2,
  48580. 1
  48581. ],
  48582. [
  48583. 1
  48584. ],
  48585. [
  48586. 200,
  48587. 600,
  48588. 500,
  48589. 3,
  48590. 3,
  48591. 1,
  48592. 1
  48593. ]
  48594. ],
  48595. [
  48596. 0,
  48597. "Default",
  48598. 2,
  48599. 1
  48600. ]
  48601. ]
  48602. , [
  48603. [64, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48604. 0,
  48605. 1173,
  48606. [
  48607. [0],
  48608. [0],
  48609. [0]
  48610. ],
  48611. [
  48612. [
  48613. 1,
  48614. 1
  48615. ],
  48616. [
  48617. 1
  48618. ],
  48619. [
  48620. 200,
  48621. 600,
  48622. 500,
  48623. 3,
  48624. 3,
  48625. 1,
  48626. 1
  48627. ]
  48628. ],
  48629. [
  48630. 0,
  48631. "Default",
  48632. 3,
  48633. 1
  48634. ]
  48635. ]
  48636. ],
  48637. [ ]
  48638. ]
  48639. ],
  48640. [
  48641. ],
  48642. []
  48643. ]
  48644. , [
  48645. "level40",
  48646. 384,
  48647. 600,
  48648. false,
  48649. "level",
  48650. 8896901421998606,
  48651. [
  48652. [
  48653. "Layer 0",
  48654. 0,
  48655. 9359295469009389,
  48656. true,
  48657. [44, 44, 44],
  48658. false,
  48659. 1,
  48660. 1,
  48661. 1,
  48662. false,
  48663. 1,
  48664. 0,
  48665. 0,
  48666. [
  48667. [
  48668. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  48669. 3,
  48670. 1166,
  48671. [
  48672. ],
  48673. [
  48674. ],
  48675. [
  48676. 0,
  48677. "Default",
  48678. 0,
  48679. 1
  48680. ]
  48681. ]
  48682. , [
  48683. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48684. 0,
  48685. 1168,
  48686. [
  48687. [0],
  48688. [0],
  48689. [1]
  48690. ],
  48691. [
  48692. [
  48693. 1,
  48694. 1
  48695. ],
  48696. [
  48697. 1
  48698. ],
  48699. [
  48700. 200,
  48701. 600,
  48702. 500,
  48703. 3,
  48704. 3,
  48705. 1,
  48706. 1
  48707. ]
  48708. ],
  48709. [
  48710. 0,
  48711. "Red",
  48712. 4,
  48713. 1
  48714. ]
  48715. ]
  48716. , [
  48717. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  48718. 2,
  48719. 1174,
  48720. [
  48721. ],
  48722. [
  48723. ],
  48724. [
  48725. 0,
  48726. "Default",
  48727. 0,
  48728. 1
  48729. ]
  48730. ]
  48731. , [
  48732. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48733. 1,
  48734. 1175,
  48735. [
  48736. ],
  48737. [
  48738. ],
  48739. [
  48740. 1,
  48741. "Default",
  48742. 0,
  48743. 1
  48744. ]
  48745. ]
  48746. , [
  48747. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48748. 1,
  48749. 1176,
  48750. [
  48751. ],
  48752. [
  48753. ],
  48754. [
  48755. 1,
  48756. "Default",
  48757. 0,
  48758. 1
  48759. ]
  48760. ]
  48761. , [
  48762. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  48763. 3,
  48764. 1177,
  48765. [
  48766. ],
  48767. [
  48768. ],
  48769. [
  48770. 0,
  48771. "Default",
  48772. 2,
  48773. 1
  48774. ]
  48775. ]
  48776. , [
  48777. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  48778. 3,
  48779. 1178,
  48780. [
  48781. ],
  48782. [
  48783. ],
  48784. [
  48785. 0,
  48786. "Default",
  48787. 1,
  48788. 1
  48789. ]
  48790. ]
  48791. , [
  48792. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  48793. 4,
  48794. 1179,
  48795. [
  48796. [0]
  48797. ],
  48798. [
  48799. [
  48800. 1,
  48801. 0,
  48802. 0,
  48803. 4,
  48804. 0,
  48805. 0,
  48806. 0,
  48807. 50,
  48808. 0
  48809. ]
  48810. ],
  48811. [
  48812. 0,
  48813. "Default",
  48814. 0,
  48815. 1
  48816. ]
  48817. ]
  48818. , [
  48819. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  48820. 4,
  48821. 1180,
  48822. [
  48823. [1]
  48824. ],
  48825. [
  48826. [
  48827. 1,
  48828. 0,
  48829. 0,
  48830. 4,
  48831. 0,
  48832. 0,
  48833. 0,
  48834. 50,
  48835. 0
  48836. ]
  48837. ],
  48838. [
  48839. 0,
  48840. "Default",
  48841. 2,
  48842. 1
  48843. ]
  48844. ]
  48845. , [
  48846. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  48847. 4,
  48848. 1181,
  48849. [
  48850. [2]
  48851. ],
  48852. [
  48853. [
  48854. 1,
  48855. 0,
  48856. 0,
  48857. 4,
  48858. 0,
  48859. 0,
  48860. 0,
  48861. 50,
  48862. 0
  48863. ]
  48864. ],
  48865. [
  48866. 0,
  48867. "Default",
  48868. 1,
  48869. 1
  48870. ]
  48871. ]
  48872. , [
  48873. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  48874. 5,
  48875. 1182,
  48876. [
  48877. [0],
  48878. [0]
  48879. ],
  48880. [
  48881. ],
  48882. [
  48883. 0,
  48884. "Default",
  48885. 0,
  48886. 1
  48887. ]
  48888. ]
  48889. , [
  48890. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48891. 6,
  48892. 1183,
  48893. [
  48894. [1]
  48895. ],
  48896. [
  48897. ],
  48898. [
  48899. 29,
  48900. 43,
  48901. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  48902. sg_texts[SG.lang]["BEST:"],
  48903. 1,
  48904. 0,
  48905. 0,
  48906. 0,
  48907. 0,
  48908. 0,
  48909. 0,
  48910. 0
  48911. ]
  48912. ]
  48913. , [
  48914. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48915. 6,
  48916. 1184,
  48917. [
  48918. [0]
  48919. ],
  48920. [
  48921. ],
  48922. [
  48923. 29,
  48924. 43,
  48925. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  48926. "MOVE:",
  48927. 1,
  48928. 0,
  48929. 0,
  48930. 0,
  48931. 0,
  48932. 0,
  48933. 0,
  48934. 0
  48935. ]
  48936. ]
  48937. , [
  48938. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  48939. 6,
  48940. 1185,
  48941. [
  48942. [2]
  48943. ],
  48944. [
  48945. ],
  48946. [
  48947. 29,
  48948. 43,
  48949. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  48950. sg_texts[SG.lang]["LEVEL:"]+" 01",
  48951. 1,
  48952. 0,
  48953. 0,
  48954. 0,
  48955. 0,
  48956. 0,
  48957. 0,
  48958. 0
  48959. ]
  48960. ]
  48961. , [
  48962. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  48963. 4,
  48964. 1186,
  48965. [
  48966. [3]
  48967. ],
  48968. [
  48969. [
  48970. 1,
  48971. 0,
  48972. 0,
  48973. 4,
  48974. 0,
  48975. 0,
  48976. 0,
  48977. 50,
  48978. 0
  48979. ]
  48980. ],
  48981. [
  48982. 0,
  48983. "Default",
  48984. 3,
  48985. 1
  48986. ]
  48987. ]
  48988. , [
  48989. [320, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  48990. 0,
  48991. 1188,
  48992. [
  48993. [0],
  48994. [0],
  48995. [0]
  48996. ],
  48997. [
  48998. [
  48999. 2,
  49000. 1
  49001. ],
  49002. [
  49003. 1
  49004. ],
  49005. [
  49006. 200,
  49007. 600,
  49008. 500,
  49009. 3,
  49010. 3,
  49011. 1,
  49012. 1
  49013. ]
  49014. ],
  49015. [
  49016. 0,
  49017. "Default",
  49018. 0,
  49019. 1
  49020. ]
  49021. ]
  49022. , [
  49023. [192, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49024. 0,
  49025. 1189,
  49026. [
  49027. [0],
  49028. [0],
  49029. [0]
  49030. ],
  49031. [
  49032. [
  49033. 1,
  49034. 1
  49035. ],
  49036. [
  49037. 1
  49038. ],
  49039. [
  49040. 200,
  49041. 600,
  49042. 500,
  49043. 3,
  49044. 3,
  49045. 1,
  49046. 1
  49047. ]
  49048. ],
  49049. [
  49050. 0,
  49051. "Default",
  49052. 1,
  49053. 1
  49054. ]
  49055. ]
  49056. , [
  49057. [128, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  49058. 0,
  49059. 1190,
  49060. [
  49061. [0],
  49062. [0],
  49063. [0]
  49064. ],
  49065. [
  49066. [
  49067. 2,
  49068. 1
  49069. ],
  49070. [
  49071. 1
  49072. ],
  49073. [
  49074. 200,
  49075. 600,
  49076. 500,
  49077. 3,
  49078. 3,
  49079. 1,
  49080. 1
  49081. ]
  49082. ],
  49083. [
  49084. 0,
  49085. "Default",
  49086. 2,
  49087. 1
  49088. ]
  49089. ]
  49090. , [
  49091. [192, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49092. 0,
  49093. 1191,
  49094. [
  49095. [0],
  49096. [0],
  49097. [0]
  49098. ],
  49099. [
  49100. [
  49101. 1,
  49102. 1
  49103. ],
  49104. [
  49105. 1
  49106. ],
  49107. [
  49108. 200,
  49109. 600,
  49110. 500,
  49111. 3,
  49112. 3,
  49113. 1,
  49114. 1
  49115. ]
  49116. ],
  49117. [
  49118. 0,
  49119. "Default",
  49120. 3,
  49121. 1
  49122. ]
  49123. ]
  49124. , [
  49125. [64, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  49126. 0,
  49127. 1196,
  49128. [
  49129. [0],
  49130. [0],
  49131. [0]
  49132. ],
  49133. [
  49134. [
  49135. 2,
  49136. 1
  49137. ],
  49138. [
  49139. 1
  49140. ],
  49141. [
  49142. 200,
  49143. 600,
  49144. 500,
  49145. 3,
  49146. 3,
  49147. 1,
  49148. 1
  49149. ]
  49150. ],
  49151. [
  49152. 0,
  49153. "Default",
  49154. 2,
  49155. 1
  49156. ]
  49157. ]
  49158. , [
  49159. [128, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49160. 0,
  49161. 1197,
  49162. [
  49163. [0],
  49164. [0],
  49165. [0]
  49166. ],
  49167. [
  49168. [
  49169. 1,
  49170. 1
  49171. ],
  49172. [
  49173. 1
  49174. ],
  49175. [
  49176. 200,
  49177. 600,
  49178. 500,
  49179. 3,
  49180. 3,
  49181. 1,
  49182. 1
  49183. ]
  49184. ],
  49185. [
  49186. 0,
  49187. "Default",
  49188. 3,
  49189. 1
  49190. ]
  49191. ]
  49192. , [
  49193. [64, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49194. 0,
  49195. 1198,
  49196. [
  49197. [0],
  49198. [0],
  49199. [0]
  49200. ],
  49201. [
  49202. [
  49203. 1,
  49204. 1
  49205. ],
  49206. [
  49207. 1
  49208. ],
  49209. [
  49210. 200,
  49211. 600,
  49212. 500,
  49213. 3,
  49214. 3,
  49215. 1,
  49216. 1
  49217. ]
  49218. ],
  49219. [
  49220. 0,
  49221. "Default",
  49222. 3,
  49223. 1
  49224. ]
  49225. ]
  49226. , [
  49227. [128, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  49228. 0,
  49229. 1199,
  49230. [
  49231. [0],
  49232. [0],
  49233. [0]
  49234. ],
  49235. [
  49236. [
  49237. 2,
  49238. 1
  49239. ],
  49240. [
  49241. 1
  49242. ],
  49243. [
  49244. 200,
  49245. 600,
  49246. 500,
  49247. 3,
  49248. 3,
  49249. 1,
  49250. 1
  49251. ]
  49252. ],
  49253. [
  49254. 0,
  49255. "Default",
  49256. 2,
  49257. 1
  49258. ]
  49259. ]
  49260. , [
  49261. [192, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  49262. 0,
  49263. 1200,
  49264. [
  49265. [0],
  49266. [0],
  49267. [0]
  49268. ],
  49269. [
  49270. [
  49271. 2,
  49272. 1
  49273. ],
  49274. [
  49275. 1
  49276. ],
  49277. [
  49278. 200,
  49279. 600,
  49280. 500,
  49281. 3,
  49282. 3,
  49283. 1,
  49284. 1
  49285. ]
  49286. ],
  49287. [
  49288. 0,
  49289. "Default",
  49290. 2,
  49291. 1
  49292. ]
  49293. ]
  49294. , [
  49295. [192, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49296. 0,
  49297. 1201,
  49298. [
  49299. [0],
  49300. [0],
  49301. [0]
  49302. ],
  49303. [
  49304. [
  49305. 1,
  49306. 1
  49307. ],
  49308. [
  49309. 1
  49310. ],
  49311. [
  49312. 200,
  49313. 600,
  49314. 500,
  49315. 3,
  49316. 3,
  49317. 1,
  49318. 1
  49319. ]
  49320. ],
  49321. [
  49322. 0,
  49323. "Default",
  49324. 3,
  49325. 1
  49326. ]
  49327. ]
  49328. ],
  49329. [ ]
  49330. ]
  49331. ],
  49332. [
  49333. ],
  49334. []
  49335. ]
  49336. , [
  49337. "level41",
  49338. 384,
  49339. 600,
  49340. false,
  49341. "level",
  49342. 7042312426776311,
  49343. [
  49344. [
  49345. "Layer 0",
  49346. 0,
  49347. 6946511892129143,
  49348. true,
  49349. [44, 44, 44],
  49350. false,
  49351. 1,
  49352. 1,
  49353. 1,
  49354. false,
  49355. 1,
  49356. 0,
  49357. 0,
  49358. [
  49359. [
  49360. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  49361. 3,
  49362. 1187,
  49363. [
  49364. ],
  49365. [
  49366. ],
  49367. [
  49368. 0,
  49369. "Default",
  49370. 0,
  49371. 1
  49372. ]
  49373. ]
  49374. , [
  49375. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49376. 0,
  49377. 1192,
  49378. [
  49379. [0],
  49380. [0],
  49381. [1]
  49382. ],
  49383. [
  49384. [
  49385. 1,
  49386. 1
  49387. ],
  49388. [
  49389. 1
  49390. ],
  49391. [
  49392. 200,
  49393. 600,
  49394. 500,
  49395. 3,
  49396. 3,
  49397. 1,
  49398. 1
  49399. ]
  49400. ],
  49401. [
  49402. 0,
  49403. "Red",
  49404. 4,
  49405. 1
  49406. ]
  49407. ]
  49408. , [
  49409. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  49410. 2,
  49411. 1193,
  49412. [
  49413. ],
  49414. [
  49415. ],
  49416. [
  49417. 0,
  49418. "Default",
  49419. 0,
  49420. 1
  49421. ]
  49422. ]
  49423. , [
  49424. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49425. 1,
  49426. 1194,
  49427. [
  49428. ],
  49429. [
  49430. ],
  49431. [
  49432. 1,
  49433. "Default",
  49434. 0,
  49435. 1
  49436. ]
  49437. ]
  49438. , [
  49439. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49440. 1,
  49441. 1195,
  49442. [
  49443. ],
  49444. [
  49445. ],
  49446. [
  49447. 1,
  49448. "Default",
  49449. 0,
  49450. 1
  49451. ]
  49452. ]
  49453. , [
  49454. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  49455. 3,
  49456. 1202,
  49457. [
  49458. ],
  49459. [
  49460. ],
  49461. [
  49462. 0,
  49463. "Default",
  49464. 2,
  49465. 1
  49466. ]
  49467. ]
  49468. , [
  49469. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  49470. 3,
  49471. 1203,
  49472. [
  49473. ],
  49474. [
  49475. ],
  49476. [
  49477. 0,
  49478. "Default",
  49479. 1,
  49480. 1
  49481. ]
  49482. ]
  49483. , [
  49484. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  49485. 4,
  49486. 1204,
  49487. [
  49488. [0]
  49489. ],
  49490. [
  49491. [
  49492. 1,
  49493. 0,
  49494. 0,
  49495. 4,
  49496. 0,
  49497. 0,
  49498. 0,
  49499. 50,
  49500. 0
  49501. ]
  49502. ],
  49503. [
  49504. 0,
  49505. "Default",
  49506. 0,
  49507. 1
  49508. ]
  49509. ]
  49510. , [
  49511. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  49512. 4,
  49513. 1205,
  49514. [
  49515. [1]
  49516. ],
  49517. [
  49518. [
  49519. 1,
  49520. 0,
  49521. 0,
  49522. 4,
  49523. 0,
  49524. 0,
  49525. 0,
  49526. 50,
  49527. 0
  49528. ]
  49529. ],
  49530. [
  49531. 0,
  49532. "Default",
  49533. 2,
  49534. 1
  49535. ]
  49536. ]
  49537. , [
  49538. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  49539. 4,
  49540. 1206,
  49541. [
  49542. [2]
  49543. ],
  49544. [
  49545. [
  49546. 1,
  49547. 0,
  49548. 0,
  49549. 4,
  49550. 0,
  49551. 0,
  49552. 0,
  49553. 50,
  49554. 0
  49555. ]
  49556. ],
  49557. [
  49558. 0,
  49559. "Default",
  49560. 1,
  49561. 1
  49562. ]
  49563. ]
  49564. , [
  49565. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  49566. 5,
  49567. 1207,
  49568. [
  49569. [0],
  49570. [0]
  49571. ],
  49572. [
  49573. ],
  49574. [
  49575. 0,
  49576. "Default",
  49577. 0,
  49578. 1
  49579. ]
  49580. ]
  49581. , [
  49582. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49583. 6,
  49584. 1208,
  49585. [
  49586. [1]
  49587. ],
  49588. [
  49589. ],
  49590. [
  49591. 29,
  49592. 43,
  49593. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  49594. sg_texts[SG.lang]["BEST:"],
  49595. 1,
  49596. 0,
  49597. 0,
  49598. 0,
  49599. 0,
  49600. 0,
  49601. 0,
  49602. 0
  49603. ]
  49604. ]
  49605. , [
  49606. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49607. 6,
  49608. 1209,
  49609. [
  49610. [0]
  49611. ],
  49612. [
  49613. ],
  49614. [
  49615. 29,
  49616. 43,
  49617. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  49618. "MOVE:",
  49619. 1,
  49620. 0,
  49621. 0,
  49622. 0,
  49623. 0,
  49624. 0,
  49625. 0,
  49626. 0
  49627. ]
  49628. ]
  49629. , [
  49630. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49631. 6,
  49632. 1210,
  49633. [
  49634. [2]
  49635. ],
  49636. [
  49637. ],
  49638. [
  49639. 29,
  49640. 43,
  49641. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  49642. sg_texts[SG.lang]["LEVEL:"]+" 01",
  49643. 1,
  49644. 0,
  49645. 0,
  49646. 0,
  49647. 0,
  49648. 0,
  49649. 0,
  49650. 0
  49651. ]
  49652. ]
  49653. , [
  49654. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  49655. 4,
  49656. 1211,
  49657. [
  49658. [3]
  49659. ],
  49660. [
  49661. [
  49662. 1,
  49663. 0,
  49664. 0,
  49665. 4,
  49666. 0,
  49667. 0,
  49668. 0,
  49669. 50,
  49670. 0
  49671. ]
  49672. ],
  49673. [
  49674. 0,
  49675. "Default",
  49676. 3,
  49677. 1
  49678. ]
  49679. ]
  49680. , [
  49681. [320, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  49682. 0,
  49683. 1212,
  49684. [
  49685. [0],
  49686. [0],
  49687. [0]
  49688. ],
  49689. [
  49690. [
  49691. 2,
  49692. 1
  49693. ],
  49694. [
  49695. 1
  49696. ],
  49697. [
  49698. 200,
  49699. 600,
  49700. 500,
  49701. 3,
  49702. 3,
  49703. 1,
  49704. 1
  49705. ]
  49706. ],
  49707. [
  49708. 0,
  49709. "Default",
  49710. 0,
  49711. 1
  49712. ]
  49713. ]
  49714. , [
  49715. [64, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49716. 0,
  49717. 1213,
  49718. [
  49719. [0],
  49720. [0],
  49721. [0]
  49722. ],
  49723. [
  49724. [
  49725. 1,
  49726. 1
  49727. ],
  49728. [
  49729. 1
  49730. ],
  49731. [
  49732. 200,
  49733. 600,
  49734. 500,
  49735. 3,
  49736. 3,
  49737. 1,
  49738. 1
  49739. ]
  49740. ],
  49741. [
  49742. 0,
  49743. "Default",
  49744. 1,
  49745. 1
  49746. ]
  49747. ]
  49748. , [
  49749. [256, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  49750. 0,
  49751. 1214,
  49752. [
  49753. [0],
  49754. [0],
  49755. [0]
  49756. ],
  49757. [
  49758. [
  49759. 2,
  49760. 1
  49761. ],
  49762. [
  49763. 1
  49764. ],
  49765. [
  49766. 200,
  49767. 600,
  49768. 500,
  49769. 3,
  49770. 3,
  49771. 1,
  49772. 1
  49773. ]
  49774. ],
  49775. [
  49776. 0,
  49777. "Default",
  49778. 2,
  49779. 1
  49780. ]
  49781. ]
  49782. , [
  49783. [192, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  49784. 0,
  49785. 1216,
  49786. [
  49787. [0],
  49788. [0],
  49789. [0]
  49790. ],
  49791. [
  49792. [
  49793. 2,
  49794. 1
  49795. ],
  49796. [
  49797. 1
  49798. ],
  49799. [
  49800. 200,
  49801. 600,
  49802. 500,
  49803. 3,
  49804. 3,
  49805. 1,
  49806. 1
  49807. ]
  49808. ],
  49809. [
  49810. 0,
  49811. "Default",
  49812. 2,
  49813. 1
  49814. ]
  49815. ]
  49816. , [
  49817. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49818. 0,
  49819. 1218,
  49820. [
  49821. [0],
  49822. [0],
  49823. [0]
  49824. ],
  49825. [
  49826. [
  49827. 1,
  49828. 1
  49829. ],
  49830. [
  49831. 1
  49832. ],
  49833. [
  49834. 200,
  49835. 600,
  49836. 500,
  49837. 3,
  49838. 3,
  49839. 1,
  49840. 1
  49841. ]
  49842. ],
  49843. [
  49844. 0,
  49845. "Default",
  49846. 3,
  49847. 1
  49848. ]
  49849. ]
  49850. , [
  49851. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  49852. 0,
  49853. 1219,
  49854. [
  49855. [0],
  49856. [0],
  49857. [0]
  49858. ],
  49859. [
  49860. [
  49861. 2,
  49862. 1
  49863. ],
  49864. [
  49865. 1
  49866. ],
  49867. [
  49868. 200,
  49869. 600,
  49870. 500,
  49871. 3,
  49872. 3,
  49873. 1,
  49874. 1
  49875. ]
  49876. ],
  49877. [
  49878. 0,
  49879. "Default",
  49880. 2,
  49881. 1
  49882. ]
  49883. ]
  49884. , [
  49885. [192, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  49886. 0,
  49887. 1220,
  49888. [
  49889. [0],
  49890. [0],
  49891. [0]
  49892. ],
  49893. [
  49894. [
  49895. 2,
  49896. 1
  49897. ],
  49898. [
  49899. 1
  49900. ],
  49901. [
  49902. 200,
  49903. 600,
  49904. 500,
  49905. 3,
  49906. 3,
  49907. 1,
  49908. 1
  49909. ]
  49910. ],
  49911. [
  49912. 0,
  49913. "Default",
  49914. 2,
  49915. 1
  49916. ]
  49917. ]
  49918. , [
  49919. [256, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49920. 0,
  49921. 1221,
  49922. [
  49923. [0],
  49924. [0],
  49925. [0]
  49926. ],
  49927. [
  49928. [
  49929. 1,
  49930. 1
  49931. ],
  49932. [
  49933. 1
  49934. ],
  49935. [
  49936. 200,
  49937. 600,
  49938. 500,
  49939. 3,
  49940. 3,
  49941. 1,
  49942. 1
  49943. ]
  49944. ],
  49945. [
  49946. 0,
  49947. "Default",
  49948. 3,
  49949. 1
  49950. ]
  49951. ]
  49952. , [
  49953. [256, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  49954. 0,
  49955. 1222,
  49956. [
  49957. [0],
  49958. [0],
  49959. [0]
  49960. ],
  49961. [
  49962. [
  49963. 2,
  49964. 1
  49965. ],
  49966. [
  49967. 1
  49968. ],
  49969. [
  49970. 200,
  49971. 600,
  49972. 500,
  49973. 3,
  49974. 3,
  49975. 1,
  49976. 1
  49977. ]
  49978. ],
  49979. [
  49980. 0,
  49981. "Default",
  49982. 2,
  49983. 1
  49984. ]
  49985. ]
  49986. , [
  49987. [64, 320, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  49988. 0,
  49989. 1223,
  49990. [
  49991. [0],
  49992. [0],
  49993. [0]
  49994. ],
  49995. [
  49996. [
  49997. 1,
  49998. 1
  49999. ],
  50000. [
  50001. 1
  50002. ],
  50003. [
  50004. 200,
  50005. 600,
  50006. 500,
  50007. 3,
  50008. 3,
  50009. 1,
  50010. 1
  50011. ]
  50012. ],
  50013. [
  50014. 0,
  50015. "Default",
  50016. 1,
  50017. 1
  50018. ]
  50019. ]
  50020. , [
  50021. [0, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  50022. 0,
  50023. 1224,
  50024. [
  50025. [0],
  50026. [0],
  50027. [0]
  50028. ],
  50029. [
  50030. [
  50031. 2,
  50032. 1
  50033. ],
  50034. [
  50035. 1
  50036. ],
  50037. [
  50038. 200,
  50039. 600,
  50040. 500,
  50041. 3,
  50042. 3,
  50043. 1,
  50044. 1
  50045. ]
  50046. ],
  50047. [
  50048. 0,
  50049. "Default",
  50050. 2,
  50051. 1
  50052. ]
  50053. ]
  50054. ],
  50055. [ ]
  50056. ]
  50057. ],
  50058. [
  50059. ],
  50060. []
  50061. ]
  50062. , [
  50063. "level42",
  50064. 384,
  50065. 600,
  50066. false,
  50067. "level",
  50068. 9086234496957633,
  50069. [
  50070. [
  50071. "Layer 0",
  50072. 0,
  50073. 8820506034855131,
  50074. true,
  50075. [44, 44, 44],
  50076. false,
  50077. 1,
  50078. 1,
  50079. 1,
  50080. false,
  50081. 1,
  50082. 0,
  50083. 0,
  50084. [
  50085. [
  50086. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  50087. 3,
  50088. 1215,
  50089. [
  50090. ],
  50091. [
  50092. ],
  50093. [
  50094. 0,
  50095. "Default",
  50096. 0,
  50097. 1
  50098. ]
  50099. ]
  50100. , [
  50101. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50102. 0,
  50103. 1217,
  50104. [
  50105. [0],
  50106. [0],
  50107. [1]
  50108. ],
  50109. [
  50110. [
  50111. 1,
  50112. 1
  50113. ],
  50114. [
  50115. 1
  50116. ],
  50117. [
  50118. 200,
  50119. 600,
  50120. 500,
  50121. 3,
  50122. 3,
  50123. 1,
  50124. 1
  50125. ]
  50126. ],
  50127. [
  50128. 0,
  50129. "Red",
  50130. 4,
  50131. 1
  50132. ]
  50133. ]
  50134. , [
  50135. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  50136. 2,
  50137. 1225,
  50138. [
  50139. ],
  50140. [
  50141. ],
  50142. [
  50143. 0,
  50144. "Default",
  50145. 0,
  50146. 1
  50147. ]
  50148. ]
  50149. , [
  50150. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50151. 1,
  50152. 1226,
  50153. [
  50154. ],
  50155. [
  50156. ],
  50157. [
  50158. 1,
  50159. "Default",
  50160. 0,
  50161. 1
  50162. ]
  50163. ]
  50164. , [
  50165. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50166. 1,
  50167. 1227,
  50168. [
  50169. ],
  50170. [
  50171. ],
  50172. [
  50173. 1,
  50174. "Default",
  50175. 0,
  50176. 1
  50177. ]
  50178. ]
  50179. , [
  50180. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  50181. 3,
  50182. 1228,
  50183. [
  50184. ],
  50185. [
  50186. ],
  50187. [
  50188. 0,
  50189. "Default",
  50190. 2,
  50191. 1
  50192. ]
  50193. ]
  50194. , [
  50195. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  50196. 3,
  50197. 1229,
  50198. [
  50199. ],
  50200. [
  50201. ],
  50202. [
  50203. 0,
  50204. "Default",
  50205. 1,
  50206. 1
  50207. ]
  50208. ]
  50209. , [
  50210. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  50211. 4,
  50212. 1230,
  50213. [
  50214. [0]
  50215. ],
  50216. [
  50217. [
  50218. 1,
  50219. 0,
  50220. 0,
  50221. 4,
  50222. 0,
  50223. 0,
  50224. 0,
  50225. 50,
  50226. 0
  50227. ]
  50228. ],
  50229. [
  50230. 0,
  50231. "Default",
  50232. 0,
  50233. 1
  50234. ]
  50235. ]
  50236. , [
  50237. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  50238. 4,
  50239. 1231,
  50240. [
  50241. [1]
  50242. ],
  50243. [
  50244. [
  50245. 1,
  50246. 0,
  50247. 0,
  50248. 4,
  50249. 0,
  50250. 0,
  50251. 0,
  50252. 50,
  50253. 0
  50254. ]
  50255. ],
  50256. [
  50257. 0,
  50258. "Default",
  50259. 2,
  50260. 1
  50261. ]
  50262. ]
  50263. , [
  50264. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  50265. 4,
  50266. 1232,
  50267. [
  50268. [2]
  50269. ],
  50270. [
  50271. [
  50272. 1,
  50273. 0,
  50274. 0,
  50275. 4,
  50276. 0,
  50277. 0,
  50278. 0,
  50279. 50,
  50280. 0
  50281. ]
  50282. ],
  50283. [
  50284. 0,
  50285. "Default",
  50286. 1,
  50287. 1
  50288. ]
  50289. ]
  50290. , [
  50291. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  50292. 5,
  50293. 1233,
  50294. [
  50295. [0],
  50296. [0]
  50297. ],
  50298. [
  50299. ],
  50300. [
  50301. 0,
  50302. "Default",
  50303. 0,
  50304. 1
  50305. ]
  50306. ]
  50307. , [
  50308. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50309. 6,
  50310. 1234,
  50311. [
  50312. [1]
  50313. ],
  50314. [
  50315. ],
  50316. [
  50317. 29,
  50318. 43,
  50319. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  50320. sg_texts[SG.lang]["BEST:"],
  50321. 1,
  50322. 0,
  50323. 0,
  50324. 0,
  50325. 0,
  50326. 0,
  50327. 0,
  50328. 0
  50329. ]
  50330. ]
  50331. , [
  50332. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50333. 6,
  50334. 1235,
  50335. [
  50336. [0]
  50337. ],
  50338. [
  50339. ],
  50340. [
  50341. 29,
  50342. 43,
  50343. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  50344. "MOVE:",
  50345. 1,
  50346. 0,
  50347. 0,
  50348. 0,
  50349. 0,
  50350. 0,
  50351. 0,
  50352. 0
  50353. ]
  50354. ]
  50355. , [
  50356. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50357. 6,
  50358. 1236,
  50359. [
  50360. [2]
  50361. ],
  50362. [
  50363. ],
  50364. [
  50365. 29,
  50366. 43,
  50367. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  50368. sg_texts[SG.lang]["LEVEL:"]+" 01",
  50369. 1,
  50370. 0,
  50371. 0,
  50372. 0,
  50373. 0,
  50374. 0,
  50375. 0,
  50376. 0
  50377. ]
  50378. ]
  50379. , [
  50380. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  50381. 4,
  50382. 1237,
  50383. [
  50384. [3]
  50385. ],
  50386. [
  50387. [
  50388. 1,
  50389. 0,
  50390. 0,
  50391. 4,
  50392. 0,
  50393. 0,
  50394. 0,
  50395. 50,
  50396. 0
  50397. ]
  50398. ],
  50399. [
  50400. 0,
  50401. "Default",
  50402. 3,
  50403. 1
  50404. ]
  50405. ]
  50406. , [
  50407. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  50408. 0,
  50409. 1240,
  50410. [
  50411. [0],
  50412. [0],
  50413. [0]
  50414. ],
  50415. [
  50416. [
  50417. 2,
  50418. 1
  50419. ],
  50420. [
  50421. 1
  50422. ],
  50423. [
  50424. 200,
  50425. 600,
  50426. 500,
  50427. 3,
  50428. 3,
  50429. 1,
  50430. 1
  50431. ]
  50432. ],
  50433. [
  50434. 0,
  50435. "Default",
  50436. 2,
  50437. 1
  50438. ]
  50439. ]
  50440. , [
  50441. [256, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  50442. 0,
  50443. 1241,
  50444. [
  50445. [0],
  50446. [0],
  50447. [0]
  50448. ],
  50449. [
  50450. [
  50451. 2,
  50452. 1
  50453. ],
  50454. [
  50455. 1
  50456. ],
  50457. [
  50458. 200,
  50459. 600,
  50460. 500,
  50461. 3,
  50462. 3,
  50463. 1,
  50464. 1
  50465. ]
  50466. ],
  50467. [
  50468. 0,
  50469. "Default",
  50470. 2,
  50471. 1
  50472. ]
  50473. ]
  50474. , [
  50475. [0, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50476. 0,
  50477. 1242,
  50478. [
  50479. [0],
  50480. [0],
  50481. [0]
  50482. ],
  50483. [
  50484. [
  50485. 1,
  50486. 1
  50487. ],
  50488. [
  50489. 1
  50490. ],
  50491. [
  50492. 200,
  50493. 600,
  50494. 500,
  50495. 3,
  50496. 3,
  50497. 1,
  50498. 1
  50499. ]
  50500. ],
  50501. [
  50502. 0,
  50503. "Default",
  50504. 3,
  50505. 1
  50506. ]
  50507. ]
  50508. , [
  50509. [128, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  50510. 0,
  50511. 1243,
  50512. [
  50513. [0],
  50514. [0],
  50515. [0]
  50516. ],
  50517. [
  50518. [
  50519. 2,
  50520. 1
  50521. ],
  50522. [
  50523. 1
  50524. ],
  50525. [
  50526. 200,
  50527. 600,
  50528. 500,
  50529. 3,
  50530. 3,
  50531. 1,
  50532. 1
  50533. ]
  50534. ],
  50535. [
  50536. 0,
  50537. "Default",
  50538. 2,
  50539. 1
  50540. ]
  50541. ]
  50542. , [
  50543. [256, 128, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50544. 0,
  50545. 1245,
  50546. [
  50547. [0],
  50548. [0],
  50549. [0]
  50550. ],
  50551. [
  50552. [
  50553. 1,
  50554. 1
  50555. ],
  50556. [
  50557. 1
  50558. ],
  50559. [
  50560. 200,
  50561. 600,
  50562. 500,
  50563. 3,
  50564. 3,
  50565. 1,
  50566. 1
  50567. ]
  50568. ],
  50569. [
  50570. 0,
  50571. "Default",
  50572. 3,
  50573. 1
  50574. ]
  50575. ]
  50576. , [
  50577. [192, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  50578. 0,
  50579. 1246,
  50580. [
  50581. [0],
  50582. [0],
  50583. [0]
  50584. ],
  50585. [
  50586. [
  50587. 2,
  50588. 1
  50589. ],
  50590. [
  50591. 1
  50592. ],
  50593. [
  50594. 200,
  50595. 600,
  50596. 500,
  50597. 3,
  50598. 3,
  50599. 1,
  50600. 1
  50601. ]
  50602. ],
  50603. [
  50604. 0,
  50605. "Default",
  50606. 2,
  50607. 1
  50608. ]
  50609. ]
  50610. , [
  50611. [64, 384, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50612. 0,
  50613. 1247,
  50614. [
  50615. [0],
  50616. [0],
  50617. [0]
  50618. ],
  50619. [
  50620. [
  50621. 1,
  50622. 1
  50623. ],
  50624. [
  50625. 1
  50626. ],
  50627. [
  50628. 200,
  50629. 600,
  50630. 500,
  50631. 3,
  50632. 3,
  50633. 1,
  50634. 1
  50635. ]
  50636. ],
  50637. [
  50638. 0,
  50639. "Default",
  50640. 1,
  50641. 1
  50642. ]
  50643. ]
  50644. , [
  50645. [0, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  50646. 0,
  50647. 1248,
  50648. [
  50649. [0],
  50650. [0],
  50651. [0]
  50652. ],
  50653. [
  50654. [
  50655. 2,
  50656. 1
  50657. ],
  50658. [
  50659. 1
  50660. ],
  50661. [
  50662. 200,
  50663. 600,
  50664. 500,
  50665. 3,
  50666. 3,
  50667. 1,
  50668. 1
  50669. ]
  50670. ],
  50671. [
  50672. 0,
  50673. "Default",
  50674. 2,
  50675. 1
  50676. ]
  50677. ]
  50678. , [
  50679. [256, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  50680. 0,
  50681. 1249,
  50682. [
  50683. [0],
  50684. [0],
  50685. [0]
  50686. ],
  50687. [
  50688. [
  50689. 2,
  50690. 1
  50691. ],
  50692. [
  50693. 1
  50694. ],
  50695. [
  50696. 200,
  50697. 600,
  50698. 500,
  50699. 3,
  50700. 3,
  50701. 1,
  50702. 1
  50703. ]
  50704. ],
  50705. [
  50706. 0,
  50707. "Default",
  50708. 2,
  50709. 1
  50710. ]
  50711. ]
  50712. , [
  50713. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  50714. 0,
  50715. 1250,
  50716. [
  50717. [0],
  50718. [0],
  50719. [0]
  50720. ],
  50721. [
  50722. [
  50723. 2,
  50724. 1
  50725. ],
  50726. [
  50727. 1
  50728. ],
  50729. [
  50730. 200,
  50731. 600,
  50732. 500,
  50733. 3,
  50734. 3,
  50735. 1,
  50736. 1
  50737. ]
  50738. ],
  50739. [
  50740. 0,
  50741. "Default",
  50742. 2,
  50743. 1
  50744. ]
  50745. ]
  50746. , [
  50747. [256, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50748. 0,
  50749. 1251,
  50750. [
  50751. [0],
  50752. [0],
  50753. [0]
  50754. ],
  50755. [
  50756. [
  50757. 1,
  50758. 1
  50759. ],
  50760. [
  50761. 1
  50762. ],
  50763. [
  50764. 200,
  50765. 600,
  50766. 500,
  50767. 3,
  50768. 3,
  50769. 1,
  50770. 1
  50771. ]
  50772. ],
  50773. [
  50774. 0,
  50775. "Default",
  50776. 3,
  50777. 1
  50778. ]
  50779. ]
  50780. ],
  50781. [ ]
  50782. ]
  50783. ],
  50784. [
  50785. ],
  50786. []
  50787. ]
  50788. , [
  50789. "level43",
  50790. 384,
  50791. 600,
  50792. false,
  50793. "level",
  50794. 5093009197148014,
  50795. [
  50796. [
  50797. "Layer 0",
  50798. 0,
  50799. 9951508908450689,
  50800. true,
  50801. [44, 44, 44],
  50802. false,
  50803. 1,
  50804. 1,
  50805. 1,
  50806. false,
  50807. 1,
  50808. 0,
  50809. 0,
  50810. [
  50811. [
  50812. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  50813. 3,
  50814. 1239,
  50815. [
  50816. ],
  50817. [
  50818. ],
  50819. [
  50820. 0,
  50821. "Default",
  50822. 0,
  50823. 1
  50824. ]
  50825. ]
  50826. , [
  50827. [128, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50828. 0,
  50829. 1244,
  50830. [
  50831. [0],
  50832. [0],
  50833. [1]
  50834. ],
  50835. [
  50836. [
  50837. 1,
  50838. 1
  50839. ],
  50840. [
  50841. 1
  50842. ],
  50843. [
  50844. 200,
  50845. 600,
  50846. 500,
  50847. 3,
  50848. 3,
  50849. 1,
  50850. 1
  50851. ]
  50852. ],
  50853. [
  50854. 0,
  50855. "Red",
  50856. 4,
  50857. 1
  50858. ]
  50859. ]
  50860. , [
  50861. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  50862. 2,
  50863. 1252,
  50864. [
  50865. ],
  50866. [
  50867. ],
  50868. [
  50869. 0,
  50870. "Default",
  50871. 0,
  50872. 1
  50873. ]
  50874. ]
  50875. , [
  50876. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50877. 1,
  50878. 1253,
  50879. [
  50880. ],
  50881. [
  50882. ],
  50883. [
  50884. 1,
  50885. "Default",
  50886. 0,
  50887. 1
  50888. ]
  50889. ]
  50890. , [
  50891. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  50892. 1,
  50893. 1254,
  50894. [
  50895. ],
  50896. [
  50897. ],
  50898. [
  50899. 1,
  50900. "Default",
  50901. 0,
  50902. 1
  50903. ]
  50904. ]
  50905. , [
  50906. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  50907. 3,
  50908. 1255,
  50909. [
  50910. ],
  50911. [
  50912. ],
  50913. [
  50914. 0,
  50915. "Default",
  50916. 2,
  50917. 1
  50918. ]
  50919. ]
  50920. , [
  50921. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  50922. 3,
  50923. 1256,
  50924. [
  50925. ],
  50926. [
  50927. ],
  50928. [
  50929. 0,
  50930. "Default",
  50931. 1,
  50932. 1
  50933. ]
  50934. ]
  50935. , [
  50936. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  50937. 4,
  50938. 1257,
  50939. [
  50940. [0]
  50941. ],
  50942. [
  50943. [
  50944. 1,
  50945. 0,
  50946. 0,
  50947. 4,
  50948. 0,
  50949. 0,
  50950. 0,
  50951. 50,
  50952. 0
  50953. ]
  50954. ],
  50955. [
  50956. 0,
  50957. "Default",
  50958. 0,
  50959. 1
  50960. ]
  50961. ]
  50962. , [
  50963. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  50964. 4,
  50965. 1258,
  50966. [
  50967. [1]
  50968. ],
  50969. [
  50970. [
  50971. 1,
  50972. 0,
  50973. 0,
  50974. 4,
  50975. 0,
  50976. 0,
  50977. 0,
  50978. 50,
  50979. 0
  50980. ]
  50981. ],
  50982. [
  50983. 0,
  50984. "Default",
  50985. 2,
  50986. 1
  50987. ]
  50988. ]
  50989. , [
  50990. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  50991. 4,
  50992. 1259,
  50993. [
  50994. [2]
  50995. ],
  50996. [
  50997. [
  50998. 1,
  50999. 0,
  51000. 0,
  51001. 4,
  51002. 0,
  51003. 0,
  51004. 0,
  51005. 50,
  51006. 0
  51007. ]
  51008. ],
  51009. [
  51010. 0,
  51011. "Default",
  51012. 1,
  51013. 1
  51014. ]
  51015. ]
  51016. , [
  51017. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  51018. 5,
  51019. 1260,
  51020. [
  51021. [0],
  51022. [0]
  51023. ],
  51024. [
  51025. ],
  51026. [
  51027. 0,
  51028. "Default",
  51029. 0,
  51030. 1
  51031. ]
  51032. ]
  51033. , [
  51034. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51035. 6,
  51036. 1261,
  51037. [
  51038. [1]
  51039. ],
  51040. [
  51041. ],
  51042. [
  51043. 29,
  51044. 43,
  51045. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  51046. sg_texts[SG.lang]["BEST:"],
  51047. 1,
  51048. 0,
  51049. 0,
  51050. 0,
  51051. 0,
  51052. 0,
  51053. 0,
  51054. 0
  51055. ]
  51056. ]
  51057. , [
  51058. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51059. 6,
  51060. 1262,
  51061. [
  51062. [0]
  51063. ],
  51064. [
  51065. ],
  51066. [
  51067. 29,
  51068. 43,
  51069. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  51070. "MOVE:",
  51071. 1,
  51072. 0,
  51073. 0,
  51074. 0,
  51075. 0,
  51076. 0,
  51077. 0,
  51078. 0
  51079. ]
  51080. ]
  51081. , [
  51082. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51083. 6,
  51084. 1263,
  51085. [
  51086. [2]
  51087. ],
  51088. [
  51089. ],
  51090. [
  51091. 29,
  51092. 43,
  51093. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  51094. sg_texts[SG.lang]["LEVEL:"]+" 01",
  51095. 1,
  51096. 0,
  51097. 0,
  51098. 0,
  51099. 0,
  51100. 0,
  51101. 0,
  51102. 0
  51103. ]
  51104. ]
  51105. , [
  51106. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  51107. 4,
  51108. 1264,
  51109. [
  51110. [3]
  51111. ],
  51112. [
  51113. [
  51114. 1,
  51115. 0,
  51116. 0,
  51117. 4,
  51118. 0,
  51119. 0,
  51120. 0,
  51121. 50,
  51122. 0
  51123. ]
  51124. ],
  51125. [
  51126. 0,
  51127. "Default",
  51128. 3,
  51129. 1
  51130. ]
  51131. ]
  51132. , [
  51133. [64, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  51134. 0,
  51135. 1265,
  51136. [
  51137. [0],
  51138. [0],
  51139. [0]
  51140. ],
  51141. [
  51142. [
  51143. 2,
  51144. 1
  51145. ],
  51146. [
  51147. 1
  51148. ],
  51149. [
  51150. 200,
  51151. 600,
  51152. 500,
  51153. 3,
  51154. 3,
  51155. 1,
  51156. 1
  51157. ]
  51158. ],
  51159. [
  51160. 0,
  51161. "Default",
  51162. 0,
  51163. 1
  51164. ]
  51165. ]
  51166. , [
  51167. [128, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  51168. 0,
  51169. 1267,
  51170. [
  51171. [0],
  51172. [0],
  51173. [0]
  51174. ],
  51175. [
  51176. [
  51177. 2,
  51178. 1
  51179. ],
  51180. [
  51181. 1
  51182. ],
  51183. [
  51184. 200,
  51185. 600,
  51186. 500,
  51187. 3,
  51188. 3,
  51189. 1,
  51190. 1
  51191. ]
  51192. ],
  51193. [
  51194. 0,
  51195. "Default",
  51196. 2,
  51197. 1
  51198. ]
  51199. ]
  51200. , [
  51201. [64, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51202. 0,
  51203. 1268,
  51204. [
  51205. [0],
  51206. [0],
  51207. [0]
  51208. ],
  51209. [
  51210. [
  51211. 1,
  51212. 1
  51213. ],
  51214. [
  51215. 1
  51216. ],
  51217. [
  51218. 200,
  51219. 600,
  51220. 500,
  51221. 3,
  51222. 3,
  51223. 1,
  51224. 1
  51225. ]
  51226. ],
  51227. [
  51228. 0,
  51229. "Default",
  51230. 3,
  51231. 1
  51232. ]
  51233. ]
  51234. , [
  51235. [0, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  51236. 0,
  51237. 1269,
  51238. [
  51239. [0],
  51240. [0],
  51241. [0]
  51242. ],
  51243. [
  51244. [
  51245. 2,
  51246. 1
  51247. ],
  51248. [
  51249. 1
  51250. ],
  51251. [
  51252. 200,
  51253. 600,
  51254. 500,
  51255. 3,
  51256. 3,
  51257. 1,
  51258. 1
  51259. ]
  51260. ],
  51261. [
  51262. 0,
  51263. "Default",
  51264. 2,
  51265. 1
  51266. ]
  51267. ]
  51268. , [
  51269. [128, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51270. 0,
  51271. 1272,
  51272. [
  51273. [0],
  51274. [0],
  51275. [0]
  51276. ],
  51277. [
  51278. [
  51279. 1,
  51280. 1
  51281. ],
  51282. [
  51283. 1
  51284. ],
  51285. [
  51286. 200,
  51287. 600,
  51288. 500,
  51289. 3,
  51290. 3,
  51291. 1,
  51292. 1
  51293. ]
  51294. ],
  51295. [
  51296. 0,
  51297. "Default",
  51298. 1,
  51299. 1
  51300. ]
  51301. ]
  51302. , [
  51303. [0, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  51304. 0,
  51305. 1273,
  51306. [
  51307. [0],
  51308. [0],
  51309. [0]
  51310. ],
  51311. [
  51312. [
  51313. 2,
  51314. 1
  51315. ],
  51316. [
  51317. 1
  51318. ],
  51319. [
  51320. 200,
  51321. 600,
  51322. 500,
  51323. 3,
  51324. 3,
  51325. 1,
  51326. 1
  51327. ]
  51328. ],
  51329. [
  51330. 0,
  51331. "Default",
  51332. 2,
  51333. 1
  51334. ]
  51335. ]
  51336. , [
  51337. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51338. 0,
  51339. 1238,
  51340. [
  51341. [0],
  51342. [0],
  51343. [0]
  51344. ],
  51345. [
  51346. [
  51347. 1,
  51348. 1
  51349. ],
  51350. [
  51351. 1
  51352. ],
  51353. [
  51354. 200,
  51355. 600,
  51356. 500,
  51357. 3,
  51358. 3,
  51359. 1,
  51360. 1
  51361. ]
  51362. ],
  51363. [
  51364. 0,
  51365. "Default",
  51366. 3,
  51367. 1
  51368. ]
  51369. ]
  51370. , [
  51371. [192, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51372. 0,
  51373. 1277,
  51374. [
  51375. [0],
  51376. [0],
  51377. [0]
  51378. ],
  51379. [
  51380. [
  51381. 1,
  51382. 1
  51383. ],
  51384. [
  51385. 1
  51386. ],
  51387. [
  51388. 200,
  51389. 600,
  51390. 500,
  51391. 3,
  51392. 3,
  51393. 1,
  51394. 1
  51395. ]
  51396. ],
  51397. [
  51398. 0,
  51399. "Default",
  51400. 3,
  51401. 1
  51402. ]
  51403. ]
  51404. , [
  51405. [256, 192, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  51406. 0,
  51407. 1266,
  51408. [
  51409. [0],
  51410. [0],
  51411. [0]
  51412. ],
  51413. [
  51414. [
  51415. 2,
  51416. 1
  51417. ],
  51418. [
  51419. 1
  51420. ],
  51421. [
  51422. 200,
  51423. 600,
  51424. 500,
  51425. 3,
  51426. 3,
  51427. 1,
  51428. 1
  51429. ]
  51430. ],
  51431. [
  51432. 0,
  51433. "Default",
  51434. 0,
  51435. 1
  51436. ]
  51437. ]
  51438. , [
  51439. [320, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  51440. 0,
  51441. 1270,
  51442. [
  51443. [0],
  51444. [0],
  51445. [0]
  51446. ],
  51447. [
  51448. [
  51449. 2,
  51450. 1
  51451. ],
  51452. [
  51453. 1
  51454. ],
  51455. [
  51456. 200,
  51457. 600,
  51458. 500,
  51459. 3,
  51460. 3,
  51461. 1,
  51462. 1
  51463. ]
  51464. ],
  51465. [
  51466. 0,
  51467. "Default",
  51468. 2,
  51469. 1
  51470. ]
  51471. ]
  51472. , [
  51473. [320, 256, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  51474. 0,
  51475. 1271,
  51476. [
  51477. [0],
  51478. [0],
  51479. [0]
  51480. ],
  51481. [
  51482. [
  51483. 2,
  51484. 1
  51485. ],
  51486. [
  51487. 1
  51488. ],
  51489. [
  51490. 200,
  51491. 600,
  51492. 500,
  51493. 3,
  51494. 3,
  51495. 1,
  51496. 1
  51497. ]
  51498. ],
  51499. [
  51500. 0,
  51501. "Default",
  51502. 2,
  51503. 1
  51504. ]
  51505. ]
  51506. ],
  51507. [ ]
  51508. ]
  51509. ],
  51510. [
  51511. ],
  51512. []
  51513. ]
  51514. , [
  51515. "level44",
  51516. 384,
  51517. 600,
  51518. false,
  51519. "level",
  51520. 5566726237263082,
  51521. [
  51522. [
  51523. "Layer 0",
  51524. 0,
  51525. 6999816682334811,
  51526. true,
  51527. [44, 44, 44],
  51528. false,
  51529. 1,
  51530. 1,
  51531. 1,
  51532. false,
  51533. 1,
  51534. 0,
  51535. 0,
  51536. [
  51537. [
  51538. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  51539. 3,
  51540. 1274,
  51541. [
  51542. ],
  51543. [
  51544. ],
  51545. [
  51546. 0,
  51547. "Default",
  51548. 0,
  51549. 1
  51550. ]
  51551. ]
  51552. , [
  51553. [64, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51554. 0,
  51555. 1275,
  51556. [
  51557. [0],
  51558. [0],
  51559. [1]
  51560. ],
  51561. [
  51562. [
  51563. 1,
  51564. 1
  51565. ],
  51566. [
  51567. 1
  51568. ],
  51569. [
  51570. 200,
  51571. 600,
  51572. 500,
  51573. 3,
  51574. 3,
  51575. 1,
  51576. 1
  51577. ]
  51578. ],
  51579. [
  51580. 0,
  51581. "Red",
  51582. 4,
  51583. 1
  51584. ]
  51585. ]
  51586. , [
  51587. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  51588. 2,
  51589. 1276,
  51590. [
  51591. ],
  51592. [
  51593. ],
  51594. [
  51595. 0,
  51596. "Default",
  51597. 0,
  51598. 1
  51599. ]
  51600. ]
  51601. , [
  51602. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51603. 1,
  51604. 1278,
  51605. [
  51606. ],
  51607. [
  51608. ],
  51609. [
  51610. 1,
  51611. "Default",
  51612. 0,
  51613. 1
  51614. ]
  51615. ]
  51616. , [
  51617. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51618. 1,
  51619. 1279,
  51620. [
  51621. ],
  51622. [
  51623. ],
  51624. [
  51625. 1,
  51626. "Default",
  51627. 0,
  51628. 1
  51629. ]
  51630. ]
  51631. , [
  51632. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  51633. 3,
  51634. 1280,
  51635. [
  51636. ],
  51637. [
  51638. ],
  51639. [
  51640. 0,
  51641. "Default",
  51642. 2,
  51643. 1
  51644. ]
  51645. ]
  51646. , [
  51647. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  51648. 3,
  51649. 1281,
  51650. [
  51651. ],
  51652. [
  51653. ],
  51654. [
  51655. 0,
  51656. "Default",
  51657. 1,
  51658. 1
  51659. ]
  51660. ]
  51661. , [
  51662. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  51663. 4,
  51664. 1282,
  51665. [
  51666. [0]
  51667. ],
  51668. [
  51669. [
  51670. 1,
  51671. 0,
  51672. 0,
  51673. 4,
  51674. 0,
  51675. 0,
  51676. 0,
  51677. 50,
  51678. 0
  51679. ]
  51680. ],
  51681. [
  51682. 0,
  51683. "Default",
  51684. 0,
  51685. 1
  51686. ]
  51687. ]
  51688. , [
  51689. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  51690. 4,
  51691. 1283,
  51692. [
  51693. [1]
  51694. ],
  51695. [
  51696. [
  51697. 1,
  51698. 0,
  51699. 0,
  51700. 4,
  51701. 0,
  51702. 0,
  51703. 0,
  51704. 50,
  51705. 0
  51706. ]
  51707. ],
  51708. [
  51709. 0,
  51710. "Default",
  51711. 2,
  51712. 1
  51713. ]
  51714. ]
  51715. , [
  51716. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  51717. 4,
  51718. 1284,
  51719. [
  51720. [2]
  51721. ],
  51722. [
  51723. [
  51724. 1,
  51725. 0,
  51726. 0,
  51727. 4,
  51728. 0,
  51729. 0,
  51730. 0,
  51731. 50,
  51732. 0
  51733. ]
  51734. ],
  51735. [
  51736. 0,
  51737. "Default",
  51738. 1,
  51739. 1
  51740. ]
  51741. ]
  51742. , [
  51743. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  51744. 5,
  51745. 1285,
  51746. [
  51747. [0],
  51748. [0]
  51749. ],
  51750. [
  51751. ],
  51752. [
  51753. 0,
  51754. "Default",
  51755. 0,
  51756. 1
  51757. ]
  51758. ]
  51759. , [
  51760. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51761. 6,
  51762. 1286,
  51763. [
  51764. [1]
  51765. ],
  51766. [
  51767. ],
  51768. [
  51769. 29,
  51770. 43,
  51771. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  51772. sg_texts[SG.lang]["BEST:"],
  51773. 1,
  51774. 0,
  51775. 0,
  51776. 0,
  51777. 0,
  51778. 0,
  51779. 0,
  51780. 0
  51781. ]
  51782. ]
  51783. , [
  51784. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51785. 6,
  51786. 1287,
  51787. [
  51788. [0]
  51789. ],
  51790. [
  51791. ],
  51792. [
  51793. 29,
  51794. 43,
  51795. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  51796. "MOVE:",
  51797. 1,
  51798. 0,
  51799. 0,
  51800. 0,
  51801. 0,
  51802. 0,
  51803. 0,
  51804. 0
  51805. ]
  51806. ]
  51807. , [
  51808. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51809. 6,
  51810. 1288,
  51811. [
  51812. [2]
  51813. ],
  51814. [
  51815. ],
  51816. [
  51817. 29,
  51818. 43,
  51819. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  51820. sg_texts[SG.lang]["LEVEL:"]+" 01",
  51821. 1,
  51822. 0,
  51823. 0,
  51824. 0,
  51825. 0,
  51826. 0,
  51827. 0,
  51828. 0
  51829. ]
  51830. ]
  51831. , [
  51832. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  51833. 4,
  51834. 1289,
  51835. [
  51836. [3]
  51837. ],
  51838. [
  51839. [
  51840. 1,
  51841. 0,
  51842. 0,
  51843. 4,
  51844. 0,
  51845. 0,
  51846. 0,
  51847. 50,
  51848. 0
  51849. ]
  51850. ],
  51851. [
  51852. 0,
  51853. "Default",
  51854. 3,
  51855. 1
  51856. ]
  51857. ]
  51858. , [
  51859. [0, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  51860. 0,
  51861. 1290,
  51862. [
  51863. [0],
  51864. [0],
  51865. [0]
  51866. ],
  51867. [
  51868. [
  51869. 2,
  51870. 1
  51871. ],
  51872. [
  51873. 1
  51874. ],
  51875. [
  51876. 200,
  51877. 600,
  51878. 500,
  51879. 3,
  51880. 3,
  51881. 1,
  51882. 1
  51883. ]
  51884. ],
  51885. [
  51886. 0,
  51887. "Default",
  51888. 0,
  51889. 1
  51890. ]
  51891. ]
  51892. , [
  51893. [128, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  51894. 0,
  51895. 1291,
  51896. [
  51897. [0],
  51898. [0],
  51899. [0]
  51900. ],
  51901. [
  51902. [
  51903. 2,
  51904. 1
  51905. ],
  51906. [
  51907. 1
  51908. ],
  51909. [
  51910. 200,
  51911. 600,
  51912. 500,
  51913. 3,
  51914. 3,
  51915. 1,
  51916. 1
  51917. ]
  51918. ],
  51919. [
  51920. 0,
  51921. "Default",
  51922. 2,
  51923. 1
  51924. ]
  51925. ]
  51926. , [
  51927. [128, 384, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51928. 0,
  51929. 1292,
  51930. [
  51931. [0],
  51932. [0],
  51933. [0]
  51934. ],
  51935. [
  51936. [
  51937. 1,
  51938. 1
  51939. ],
  51940. [
  51941. 1
  51942. ],
  51943. [
  51944. 200,
  51945. 600,
  51946. 500,
  51947. 3,
  51948. 3,
  51949. 1,
  51950. 1
  51951. ]
  51952. ],
  51953. [
  51954. 0,
  51955. "Default",
  51956. 3,
  51957. 1
  51958. ]
  51959. ]
  51960. , [
  51961. [64, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  51962. 0,
  51963. 1293,
  51964. [
  51965. [0],
  51966. [0],
  51967. [0]
  51968. ],
  51969. [
  51970. [
  51971. 2,
  51972. 1
  51973. ],
  51974. [
  51975. 1
  51976. ],
  51977. [
  51978. 200,
  51979. 600,
  51980. 500,
  51981. 3,
  51982. 3,
  51983. 1,
  51984. 1
  51985. ]
  51986. ],
  51987. [
  51988. 0,
  51989. "Default",
  51990. 2,
  51991. 1
  51992. ]
  51993. ]
  51994. , [
  51995. [192, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  51996. 0,
  51997. 1294,
  51998. [
  51999. [0],
  52000. [0],
  52001. [0]
  52002. ],
  52003. [
  52004. [
  52005. 1,
  52006. 1
  52007. ],
  52008. [
  52009. 1
  52010. ],
  52011. [
  52012. 200,
  52013. 600,
  52014. 500,
  52015. 3,
  52016. 3,
  52017. 1,
  52018. 1
  52019. ]
  52020. ],
  52021. [
  52022. 0,
  52023. "Default",
  52024. 1,
  52025. 1
  52026. ]
  52027. ]
  52028. , [
  52029. [0, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52030. 0,
  52031. 1296,
  52032. [
  52033. [0],
  52034. [0],
  52035. [0]
  52036. ],
  52037. [
  52038. [
  52039. 1,
  52040. 1
  52041. ],
  52042. [
  52043. 1
  52044. ],
  52045. [
  52046. 200,
  52047. 600,
  52048. 500,
  52049. 3,
  52050. 3,
  52051. 1,
  52052. 1
  52053. ]
  52054. ],
  52055. [
  52056. 0,
  52057. "Default",
  52058. 3,
  52059. 1
  52060. ]
  52061. ]
  52062. , [
  52063. [128, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52064. 0,
  52065. 1297,
  52066. [
  52067. [0],
  52068. [0],
  52069. [0]
  52070. ],
  52071. [
  52072. [
  52073. 1,
  52074. 1
  52075. ],
  52076. [
  52077. 1
  52078. ],
  52079. [
  52080. 200,
  52081. 600,
  52082. 500,
  52083. 3,
  52084. 3,
  52085. 1,
  52086. 1
  52087. ]
  52088. ],
  52089. [
  52090. 0,
  52091. "Default",
  52092. 3,
  52093. 1
  52094. ]
  52095. ]
  52096. , [
  52097. [256, 320, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  52098. 0,
  52099. 1298,
  52100. [
  52101. [0],
  52102. [0],
  52103. [0]
  52104. ],
  52105. [
  52106. [
  52107. 2,
  52108. 1
  52109. ],
  52110. [
  52111. 1
  52112. ],
  52113. [
  52114. 200,
  52115. 600,
  52116. 500,
  52117. 3,
  52118. 3,
  52119. 1,
  52120. 1
  52121. ]
  52122. ],
  52123. [
  52124. 0,
  52125. "Default",
  52126. 0,
  52127. 1
  52128. ]
  52129. ]
  52130. , [
  52131. [192, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  52132. 0,
  52133. 1300,
  52134. [
  52135. [0],
  52136. [0],
  52137. [0]
  52138. ],
  52139. [
  52140. [
  52141. 2,
  52142. 1
  52143. ],
  52144. [
  52145. 1
  52146. ],
  52147. [
  52148. 200,
  52149. 600,
  52150. 500,
  52151. 3,
  52152. 3,
  52153. 1,
  52154. 1
  52155. ]
  52156. ],
  52157. [
  52158. 0,
  52159. "Default",
  52160. 2,
  52161. 1
  52162. ]
  52163. ]
  52164. , [
  52165. [320, 256, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  52166. 0,
  52167. 1301,
  52168. [
  52169. [0],
  52170. [0],
  52171. [0]
  52172. ],
  52173. [
  52174. [
  52175. 2,
  52176. 1
  52177. ],
  52178. [
  52179. 1
  52180. ],
  52181. [
  52182. 200,
  52183. 600,
  52184. 500,
  52185. 3,
  52186. 3,
  52187. 1,
  52188. 1
  52189. ]
  52190. ],
  52191. [
  52192. 0,
  52193. "Default",
  52194. 0,
  52195. 1
  52196. ]
  52197. ]
  52198. , [
  52199. [256, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52200. 0,
  52201. 1302,
  52202. [
  52203. [0],
  52204. [0],
  52205. [0]
  52206. ],
  52207. [
  52208. [
  52209. 1,
  52210. 1
  52211. ],
  52212. [
  52213. 1
  52214. ],
  52215. [
  52216. 200,
  52217. 600,
  52218. 500,
  52219. 3,
  52220. 3,
  52221. 1,
  52222. 1
  52223. ]
  52224. ],
  52225. [
  52226. 0,
  52227. "Default",
  52228. 3,
  52229. 1
  52230. ]
  52231. ]
  52232. ],
  52233. [ ]
  52234. ]
  52235. ],
  52236. [
  52237. ],
  52238. []
  52239. ]
  52240. , [
  52241. "level45",
  52242. 384,
  52243. 600,
  52244. false,
  52245. "level",
  52246. 7653858613575446,
  52247. [
  52248. [
  52249. "Layer 0",
  52250. 0,
  52251. 2442361974196188,
  52252. true,
  52253. [44, 44, 44],
  52254. false,
  52255. 1,
  52256. 1,
  52257. 1,
  52258. false,
  52259. 1,
  52260. 0,
  52261. 0,
  52262. [
  52263. [
  52264. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  52265. 3,
  52266. 1295,
  52267. [
  52268. ],
  52269. [
  52270. ],
  52271. [
  52272. 0,
  52273. "Default",
  52274. 0,
  52275. 1
  52276. ]
  52277. ]
  52278. , [
  52279. [64, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52280. 0,
  52281. 1299,
  52282. [
  52283. [0],
  52284. [0],
  52285. [1]
  52286. ],
  52287. [
  52288. [
  52289. 1,
  52290. 1
  52291. ],
  52292. [
  52293. 1
  52294. ],
  52295. [
  52296. 200,
  52297. 600,
  52298. 500,
  52299. 3,
  52300. 3,
  52301. 1,
  52302. 1
  52303. ]
  52304. ],
  52305. [
  52306. 0,
  52307. "Red",
  52308. 4,
  52309. 1
  52310. ]
  52311. ]
  52312. , [
  52313. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  52314. 2,
  52315. 1303,
  52316. [
  52317. ],
  52318. [
  52319. ],
  52320. [
  52321. 0,
  52322. "Default",
  52323. 0,
  52324. 1
  52325. ]
  52326. ]
  52327. , [
  52328. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52329. 1,
  52330. 1304,
  52331. [
  52332. ],
  52333. [
  52334. ],
  52335. [
  52336. 1,
  52337. "Default",
  52338. 0,
  52339. 1
  52340. ]
  52341. ]
  52342. , [
  52343. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52344. 1,
  52345. 1305,
  52346. [
  52347. ],
  52348. [
  52349. ],
  52350. [
  52351. 1,
  52352. "Default",
  52353. 0,
  52354. 1
  52355. ]
  52356. ]
  52357. , [
  52358. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673975646496, 0.00699300691485405, 0, 0, []],
  52359. 3,
  52360. 1306,
  52361. [
  52362. ],
  52363. [
  52364. ],
  52365. [
  52366. 0,
  52367. "Default",
  52368. 2,
  52369. 1
  52370. ]
  52371. ]
  52372. , [
  52373. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673975646496, -1.422360301017761, 0, 0, []],
  52374. 3,
  52375. 1307,
  52376. [
  52377. ],
  52378. [
  52379. ],
  52380. [
  52381. 0,
  52382. "Default",
  52383. 1,
  52384. 1
  52385. ]
  52386. ]
  52387. , [
  52388. [68, 562, 0, 67, 76, 0, 0, 1, 0.5074626803398132, 0.5, 0, 0, []],
  52389. 4,
  52390. 1308,
  52391. [
  52392. [0]
  52393. ],
  52394. [
  52395. [
  52396. 1,
  52397. 0,
  52398. 0,
  52399. 4,
  52400. 0,
  52401. 0,
  52402. 0,
  52403. 50,
  52404. 0
  52405. ]
  52406. ],
  52407. [
  52408. 0,
  52409. "Default",
  52410. 0,
  52411. 1
  52412. ]
  52413. ]
  52414. , [
  52415. [192, 562, 0, 75, 72, 0, 0, 1, 0.5066666603088379, 0.5, 0, 0, []],
  52416. 4,
  52417. 1309,
  52418. [
  52419. [1]
  52420. ],
  52421. [
  52422. [
  52423. 1,
  52424. 0,
  52425. 0,
  52426. 4,
  52427. 0,
  52428. 0,
  52429. 0,
  52430. 50,
  52431. 0
  52432. ]
  52433. ],
  52434. [
  52435. 0,
  52436. "Default",
  52437. 2,
  52438. 1
  52439. ]
  52440. ]
  52441. , [
  52442. [313, 562, 0, 69, 74, 0, 0, 0.5, 0.5072463750839233, 0.5, 0, 0, []],
  52443. 4,
  52444. 1310,
  52445. [
  52446. [2]
  52447. ],
  52448. [
  52449. [
  52450. 1,
  52451. 0,
  52452. 0,
  52453. 4,
  52454. 0,
  52455. 0,
  52456. 0,
  52457. 50,
  52458. 0
  52459. ]
  52460. ],
  52461. [
  52462. 0,
  52463. "Default",
  52464. 1,
  52465. 1
  52466. ]
  52467. ]
  52468. , [
  52469. [318, 91, 0, 99, 36, 0, 0, 1, 0.5050504803657532, 0.5, 0, 0, []],
  52470. 5,
  52471. 1311,
  52472. [
  52473. [0],
  52474. [0]
  52475. ],
  52476. [
  52477. ],
  52478. [
  52479. 0,
  52480. "Default",
  52481. 0,
  52482. 1
  52483. ]
  52484. ]
  52485. , [
  52486. [9, 0, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52487. 6,
  52488. 1312,
  52489. [
  52490. [1]
  52491. ],
  52492. [
  52493. ],
  52494. [
  52495. 29,
  52496. 43,
  52497. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  52498. sg_texts[SG.lang]["BEST:"],
  52499. 1,
  52500. 0,
  52501. 0,
  52502. 0,
  52503. 0,
  52504. 0,
  52505. 0,
  52506. 0
  52507. ]
  52508. ]
  52509. , [
  52510. [8, 64, 0, 256, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52511. 6,
  52512. 1313,
  52513. [
  52514. [0]
  52515. ],
  52516. [
  52517. ],
  52518. [
  52519. 29,
  52520. 43,
  52521. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  52522. "MOVE:",
  52523. 1,
  52524. 0,
  52525. 0,
  52526. 0,
  52527. 0,
  52528. 0,
  52529. 0,
  52530. 0
  52531. ]
  52532. ]
  52533. , [
  52534. [265, 0, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52535. 6,
  52536. 1314,
  52537. [
  52538. [2]
  52539. ],
  52540. [
  52541. ],
  52542. [
  52543. 29,
  52544. 43,
  52545. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  52546. sg_texts[SG.lang]["LEVEL:"]+" 01",
  52547. 1,
  52548. 0,
  52549. 0,
  52550. 0,
  52551. 0,
  52552. 0,
  52553. 0,
  52554. 0
  52555. ]
  52556. ]
  52557. , [
  52558. [192, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  52559. 4,
  52560. 1315,
  52561. [
  52562. [3]
  52563. ],
  52564. [
  52565. [
  52566. 1,
  52567. 0,
  52568. 0,
  52569. 4,
  52570. 0,
  52571. 0,
  52572. 0,
  52573. 50,
  52574. 0
  52575. ]
  52576. ],
  52577. [
  52578. 0,
  52579. "Default",
  52580. 3,
  52581. 1
  52582. ]
  52583. ]
  52584. , [
  52585. [0, 192, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  52586. 0,
  52587. 1317,
  52588. [
  52589. [0],
  52590. [0],
  52591. [0]
  52592. ],
  52593. [
  52594. [
  52595. 2,
  52596. 1
  52597. ],
  52598. [
  52599. 1
  52600. ],
  52601. [
  52602. 200,
  52603. 600,
  52604. 500,
  52605. 3,
  52606. 3,
  52607. 1,
  52608. 1
  52609. ]
  52610. ],
  52611. [
  52612. 0,
  52613. "Default",
  52614. 2,
  52615. 1
  52616. ]
  52617. ]
  52618. , [
  52619. [64, 192, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52620. 0,
  52621. 1318,
  52622. [
  52623. [0],
  52624. [0],
  52625. [0]
  52626. ],
  52627. [
  52628. [
  52629. 1,
  52630. 1
  52631. ],
  52632. [
  52633. 1
  52634. ],
  52635. [
  52636. 200,
  52637. 600,
  52638. 500,
  52639. 3,
  52640. 3,
  52641. 1,
  52642. 1
  52643. ]
  52644. ],
  52645. [
  52646. 0,
  52647. "Default",
  52648. 3,
  52649. 1
  52650. ]
  52651. ]
  52652. , [
  52653. [64, 384, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  52654. 0,
  52655. 1319,
  52656. [
  52657. [0],
  52658. [0],
  52659. [0]
  52660. ],
  52661. [
  52662. [
  52663. 2,
  52664. 1
  52665. ],
  52666. [
  52667. 1
  52668. ],
  52669. [
  52670. 200,
  52671. 600,
  52672. 500,
  52673. 3,
  52674. 3,
  52675. 1,
  52676. 1
  52677. ]
  52678. ],
  52679. [
  52680. 0,
  52681. "Default",
  52682. 2,
  52683. 1
  52684. ]
  52685. ]
  52686. , [
  52687. [0, 128, 0, 192, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52688. 0,
  52689. 1320,
  52690. [
  52691. [0],
  52692. [0],
  52693. [0]
  52694. ],
  52695. [
  52696. [
  52697. 1,
  52698. 1
  52699. ],
  52700. [
  52701. 1
  52702. ],
  52703. [
  52704. 200,
  52705. 600,
  52706. 500,
  52707. 3,
  52708. 3,
  52709. 1,
  52710. 1
  52711. ]
  52712. ],
  52713. [
  52714. 0,
  52715. "Default",
  52716. 1,
  52717. 1
  52718. ]
  52719. ]
  52720. , [
  52721. [0, 320, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52722. 0,
  52723. 1321,
  52724. [
  52725. [0],
  52726. [0],
  52727. [0]
  52728. ],
  52729. [
  52730. [
  52731. 1,
  52732. 1
  52733. ],
  52734. [
  52735. 1
  52736. ],
  52737. [
  52738. 200,
  52739. 600,
  52740. 500,
  52741. 3,
  52742. 3,
  52743. 1,
  52744. 1
  52745. ]
  52746. ],
  52747. [
  52748. 0,
  52749. "Default",
  52750. 3,
  52751. 1
  52752. ]
  52753. ]
  52754. , [
  52755. [256, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52756. 0,
  52757. 1322,
  52758. [
  52759. [0],
  52760. [0],
  52761. [0]
  52762. ],
  52763. [
  52764. [
  52765. 1,
  52766. 1
  52767. ],
  52768. [
  52769. 1
  52770. ],
  52771. [
  52772. 200,
  52773. 600,
  52774. 500,
  52775. 3,
  52776. 3,
  52777. 1,
  52778. 1
  52779. ]
  52780. ],
  52781. [
  52782. 0,
  52783. "Default",
  52784. 3,
  52785. 1
  52786. ]
  52787. ]
  52788. , [
  52789. [256, 128, 0, 64, 192, 0, 0, 1, 0, 0, 0, 0, []],
  52790. 0,
  52791. 1323,
  52792. [
  52793. [0],
  52794. [0],
  52795. [0]
  52796. ],
  52797. [
  52798. [
  52799. 2,
  52800. 1
  52801. ],
  52802. [
  52803. 1
  52804. ],
  52805. [
  52806. 200,
  52807. 600,
  52808. 500,
  52809. 3,
  52810. 3,
  52811. 1,
  52812. 1
  52813. ]
  52814. ],
  52815. [
  52816. 0,
  52817. "Default",
  52818. 0,
  52819. 1
  52820. ]
  52821. ]
  52822. , [
  52823. [192, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  52824. 0,
  52825. 1324,
  52826. [
  52827. [0],
  52828. [0],
  52829. [0]
  52830. ],
  52831. [
  52832. [
  52833. 2,
  52834. 1
  52835. ],
  52836. [
  52837. 1
  52838. ],
  52839. [
  52840. 200,
  52841. 600,
  52842. 500,
  52843. 3,
  52844. 3,
  52845. 1,
  52846. 1
  52847. ]
  52848. ],
  52849. [
  52850. 0,
  52851. "Default",
  52852. 2,
  52853. 1
  52854. ]
  52855. ]
  52856. , [
  52857. [320, 128, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  52858. 0,
  52859. 1327,
  52860. [
  52861. [0],
  52862. [0],
  52863. [0]
  52864. ],
  52865. [
  52866. [
  52867. 2,
  52868. 1
  52869. ],
  52870. [
  52871. 1
  52872. ],
  52873. [
  52874. 200,
  52875. 600,
  52876. 500,
  52877. 3,
  52878. 3,
  52879. 1,
  52880. 1
  52881. ]
  52882. ],
  52883. [
  52884. 0,
  52885. "Default",
  52886. 2,
  52887. 1
  52888. ]
  52889. ]
  52890. , [
  52891. [128, 320, 0, 64, 128, 0, 0, 1, 0, 0, 0, 0, []],
  52892. 0,
  52893. 1328,
  52894. [
  52895. [0],
  52896. [0],
  52897. [0]
  52898. ],
  52899. [
  52900. [
  52901. 2,
  52902. 1
  52903. ],
  52904. [
  52905. 1
  52906. ],
  52907. [
  52908. 200,
  52909. 600,
  52910. 500,
  52911. 3,
  52912. 3,
  52913. 1,
  52914. 1
  52915. ]
  52916. ],
  52917. [
  52918. 0,
  52919. "Default",
  52920. 2,
  52921. 1
  52922. ]
  52923. ]
  52924. , [
  52925. [128, 448, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  52926. 0,
  52927. 1316,
  52928. [
  52929. [0],
  52930. [0],
  52931. [0]
  52932. ],
  52933. [
  52934. [
  52935. 1,
  52936. 1
  52937. ],
  52938. [
  52939. 1
  52940. ],
  52941. [
  52942. 200,
  52943. 600,
  52944. 500,
  52945. 3,
  52946. 3,
  52947. 1,
  52948. 1
  52949. ]
  52950. ],
  52951. [
  52952. 0,
  52953. "Default",
  52954. 3,
  52955. 1
  52956. ]
  52957. ]
  52958. ],
  52959. [ ]
  52960. ]
  52961. ],
  52962. [
  52963. ],
  52964. []
  52965. ]
  52966. , [
  52967. "menu",
  52968. 384,
  52969. 600,
  52970. false,
  52971. "menu",
  52972. 5573629666584475,
  52973. [
  52974. [
  52975. "Layer 0",
  52976. 0,
  52977. 1559280090494517,
  52978. true,
  52979. [44, 44, 44],
  52980. false,
  52981. 1,
  52982. 1,
  52983. 1,
  52984. false,
  52985. 1,
  52986. 0,
  52987. 0,
  52988. [
  52989. [
  52990. [0, 512, 0, 389, 384, 0, 0, 1, 0, 1, 0, 0, []],
  52991. 3,
  52992. 22,
  52993. [
  52994. ],
  52995. [
  52996. ],
  52997. [
  52998. 0,
  52999. "Default",
  53000. 0,
  53001. 1
  53002. ]
  53003. ]
  53004. , [
  53005. [0, 256, 0, 128, 64, 0, 0, 1, 0, 0, 0, 0, []],
  53006. 0,
  53007. 27,
  53008. [
  53009. [0],
  53010. [0],
  53011. [1]
  53012. ],
  53013. [
  53014. [
  53015. 1,
  53016. 1
  53017. ],
  53018. [
  53019. 1
  53020. ],
  53021. [
  53022. 200,
  53023. 600,
  53024. 500,
  53025. 3,
  53026. 3,
  53027. 1,
  53028. 1
  53029. ]
  53030. ],
  53031. [
  53032. 0,
  53033. "Red",
  53034. 4,
  53035. 1
  53036. ]
  53037. ]
  53038. , [
  53039. [320, 320, 0, 64, 64, 0, 0, 1, 0, 1, 0, 0, []],
  53040. 2,
  53041. 28,
  53042. [
  53043. ],
  53044. [
  53045. ],
  53046. [
  53047. 0,
  53048. "Default",
  53049. 0,
  53050. 1
  53051. ]
  53052. ]
  53053. , [
  53054. [0, 512, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  53055. 1,
  53056. 29,
  53057. [
  53058. ],
  53059. [
  53060. ],
  53061. [
  53062. 1,
  53063. "Default",
  53064. 0,
  53065. 1
  53066. ]
  53067. ]
  53068. , [
  53069. [0, 64, 0, 384, 64, 0, 0, 1, 0, 0, 0, 0, []],
  53070. 1,
  53071. 30,
  53072. [
  53073. ],
  53074. [
  53075. ],
  53076. [
  53077. 1,
  53078. "Default",
  53079. 0,
  53080. 1
  53081. ]
  53082. ]
  53083. , [
  53084. [0, 521, 0, 386, 143, 0, 0, 1, 0.002590673509985209, 0.00699300691485405, 0, 0, []],
  53085. 3,
  53086. 31,
  53087. [
  53088. ],
  53089. [
  53090. ],
  53091. [
  53092. 0,
  53093. "Default",
  53094. 2,
  53095. 1
  53096. ]
  53097. ]
  53098. , [
  53099. [-1, -270, 0, 386, 161, 0, 0, 1, 0.002590673509985209, -1.422360301017761, 0, 0, []],
  53100. 3,
  53101. 32,
  53102. [
  53103. ],
  53104. [
  53105. ],
  53106. [
  53107. 0,
  53108. "Default",
  53109. 1,
  53110. 1
  53111. ]
  53112. ]
  53113. , [
  53114. [262.0788269042969, 56, 0, 100, 100, 0, 0, 1, 0.5, 0.5036496520042419, 0, 0, []],
  53115. 4,
  53116. 40,
  53117. [
  53118. [3]
  53119. ],
  53120. [
  53121. [
  53122. 0,
  53123. 0,
  53124. 0,
  53125. 4,
  53126. 0,
  53127. 0,
  53128. 0,
  53129. 50,
  53130. 0
  53131. ]
  53132. ],
  53133. [
  53134. 0,
  53135. "Default",
  53136. 3,
  53137. 1
  53138. ]
  53139. ]
  53140. , [
  53141. [160, 529, 0, 64, 64, 0, 0, 1, 0, 0, 0, 0, []],
  53142. 10,
  53143. 23,
  53144. [
  53145. ],
  53146. [
  53147. ],
  53148. [
  53149. 0,
  53150. "Default",
  53151. 0,
  53152. 1
  53153. ]
  53154. ]
  53155. , [
  53156. [66.316650390625, 33.14364624023438, 0, 316.1051330566406, 64, 0, 0, 1, 0, 0, 0, 0, []],
  53157. 6,
  53158. 25,
  53159. [
  53160. [1]
  53161. ],
  53162. [
  53163. ],
  53164. [
  53165. 29,
  53166. 43,
  53167. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  53168. sg_texts[SG.lang]["MORE GAMES"],
  53169. 1,
  53170. 0,
  53171. 0,
  53172. 0,
  53173. 0,
  53174. 0,
  53175. 0,
  53176. 0
  53177. ]
  53178. ]
  53179. , [
  53180. [758, 320, 0, 500, 700, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  53181. 11,
  53182. 46,
  53183. [
  53184. ],
  53185. [
  53186. [
  53187. 1,
  53188. 0,
  53189. 0,
  53190. 0.5,
  53191. 1
  53192. ]
  53193. ],
  53194. [
  53195. 0,
  53196. "Default",
  53197. 0,
  53198. 1
  53199. ]
  53200. ]
  53201. , [
  53202. [186, 404, 0, 138, 60, 0, 0, 1, 0.5, 0.550000011920929, 0, 0, []],
  53203. 17,
  53204. 56,
  53205. [
  53206. ],
  53207. [
  53208. ],
  53209. [
  53210. 0,
  53211. "Default",
  53212. 0,
  53213. 1
  53214. ]
  53215. ]
  53216. , [
  53217. [197, 186, 0, 477, 64, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  53218. 19,
  53219. 15,
  53220. [
  53221. [0]
  53222. ],
  53223. [
  53224. ],
  53225. [
  53226. 29,
  53227. 43,
  53228. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>",
  53229. sg_texts[SG.lang]["SLIDE GREEN BLOCK TO START"],
  53230. 1,
  53231. 0,
  53232. 1,
  53233. 1,
  53234. 1,
  53235. 0,
  53236. -16,
  53237. 0
  53238. ]
  53239. ]
  53240. ],
  53241. [ ]
  53242. ]
  53243. ],
  53244. [
  53245. ],
  53246. []
  53247. ]
  53248. , [
  53249. "Splash",
  53250. 384,
  53251. 600,
  53252. false,
  53253. "Splash",
  53254. 2687879298449789,
  53255. [
  53256. [
  53257. "Layer 0",
  53258. 0,
  53259. 1474114471424048,
  53260. true,
  53261. [44, 44, 44],
  53262. false,
  53263. 1,
  53264. 1,
  53265. 1,
  53266. false,
  53267. 1,
  53268. 0,
  53269. 0,
  53270. [
  53271. [
  53272. [192, 300, 0, 256, 256, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  53273. 16,
  53274. 86,
  53275. [
  53276. ],
  53277. [
  53278. ],
  53279. [
  53280. 0,
  53281. "Default",
  53282. 0,
  53283. 1
  53284. ]
  53285. ]
  53286. ],
  53287. [ ]
  53288. ]
  53289. ],
  53290. [
  53291. ],
  53292. []
  53293. ]
  53294. , [
  53295. "Loading",
  53296. 384,
  53297. 600,
  53298. false,
  53299. "Loading",
  53300. 9738847845378719,
  53301. [
  53302. [
  53303. "Layer 0",
  53304. 0,
  53305. 1380657750457465,
  53306. true,
  53307. [44, 44, 44],
  53308. false,
  53309. 1,
  53310. 1,
  53311. 1,
  53312. false,
  53313. 1,
  53314. 0,
  53315. 0,
  53316. [
  53317. [
  53318. [192, 300, 0, 256, 256, 0, 0, 1, 0.5, 0.5, 0, 0, []],
  53319. 16,
  53320. 50,
  53321. [
  53322. ],
  53323. [
  53324. ],
  53325. [
  53326. 0,
  53327. "Default",
  53328. 0,
  53329. 1
  53330. ]
  53331. ]
  53332. , [
  53333. [0, 517, 0, 1, 7, 0, 0, 1, 0, 0, 0, 0, []],
  53334. 15,
  53335. 53,
  53336. [
  53337. ],
  53338. [
  53339. ],
  53340. [
  53341. 0,
  53342. 0
  53343. ]
  53344. ]
  53345. ],
  53346. [ ]
  53347. ]
  53348. ],
  53349. [
  53350. ],
  53351. []
  53352. ]
  53353. ],
  53354. [
  53355. [
  53356. "level",
  53357. [
  53358. [
  53359. 1,
  53360. "level",
  53361. 0,
  53362. 0,
  53363. false,false,6296201313772328,false
  53364. ]
  53365. , [
  53366. 1,
  53367. "stars",
  53368. 0,
  53369. 0,
  53370. false,false,3464907030350117,false
  53371. ]
  53372. , [
  53373. 1,
  53374. "timee",
  53375. 0,
  53376. 0,
  53377. false,false,8463331835070682,false
  53378. ]
  53379. , [
  53380. 0,
  53381. null,
  53382. false,
  53383. null,
  53384. 6340896181407977,
  53385. [
  53386. [
  53387. -1,
  53388. cr.system_object.prototype.cnds.EveryTick,
  53389. null,
  53390. 0,
  53391. false,
  53392. false,
  53393. false,
  53394. 2642858007107924,
  53395. false
  53396. ]
  53397. , [
  53398. 0,
  53399. cr.behaviors.DragnDrop.prototype.cnds.IsDragging,
  53400. "DragDrop",
  53401. 0,
  53402. false,
  53403. true,
  53404. false,
  53405. 8138022065639615,
  53406. false
  53407. ]
  53408. ],
  53409. [
  53410. [
  53411. 0,
  53412. cr.plugins_.Sprite.prototype.acts.SetPos,
  53413. null,
  53414. 9926733802307267,
  53415. false
  53416. ,[
  53417. [
  53418. 0,
  53419. [
  53420. 19,
  53421. cr.system_object.prototype.exps.lerp
  53422. ,[
  53423. [
  53424. 20,
  53425. 0,
  53426. cr.plugins_.Sprite.prototype.exps.X,
  53427. false,
  53428. null
  53429. ]
  53430. ,[
  53431. 6,
  53432. [
  53433. 19,
  53434. cr.system_object.prototype.exps.round
  53435. ,[
  53436. [
  53437. 7,
  53438. [
  53439. 20,
  53440. 0,
  53441. cr.plugins_.Sprite.prototype.exps.X,
  53442. false,
  53443. null
  53444. ]
  53445. ,[
  53446. 0,
  53447. 64
  53448. ]
  53449. ]
  53450. ]
  53451. ]
  53452. ,[
  53453. 0,
  53454. 64
  53455. ]
  53456. ]
  53457. ,[
  53458. 1,
  53459. 0.5
  53460. ]
  53461. ]
  53462. ]
  53463. ]
  53464. , [
  53465. 0,
  53466. [
  53467. 19,
  53468. cr.system_object.prototype.exps.lerp
  53469. ,[
  53470. [
  53471. 20,
  53472. 0,
  53473. cr.plugins_.Sprite.prototype.exps.Y,
  53474. false,
  53475. null
  53476. ]
  53477. ,[
  53478. 6,
  53479. [
  53480. 19,
  53481. cr.system_object.prototype.exps.round
  53482. ,[
  53483. [
  53484. 7,
  53485. [
  53486. 20,
  53487. 0,
  53488. cr.plugins_.Sprite.prototype.exps.Y,
  53489. false,
  53490. null
  53491. ]
  53492. ,[
  53493. 0,
  53494. 64
  53495. ]
  53496. ]
  53497. ]
  53498. ]
  53499. ,[
  53500. 0,
  53501. 64
  53502. ]
  53503. ]
  53504. ,[
  53505. 1,
  53506. 0.5
  53507. ]
  53508. ]
  53509. ]
  53510. ]
  53511. ]
  53512. ]
  53513. ]
  53514. ]
  53515. , [
  53516. 0,
  53517. null,
  53518. true,
  53519. null,
  53520. 3262928771436402,
  53521. [
  53522. [
  53523. 0,
  53524. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  53525. null,
  53526. 0,
  53527. false,
  53528. false,
  53529. false,
  53530. 1919107708179077,
  53531. false
  53532. ,[
  53533. [
  53534. 4,
  53535. 0
  53536. ]
  53537. ]
  53538. ]
  53539. , [
  53540. 0,
  53541. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  53542. null,
  53543. 0,
  53544. false,
  53545. false,
  53546. false,
  53547. 6817187314158365,
  53548. false
  53549. ,[
  53550. [
  53551. 4,
  53552. 1
  53553. ]
  53554. ]
  53555. ]
  53556. ],
  53557. [
  53558. [
  53559. 0,
  53560. cr.plugins_.Sprite.prototype.acts.SetPos,
  53561. null,
  53562. 9430797690168518,
  53563. false
  53564. ,[
  53565. [
  53566. 0,
  53567. [
  53568. 6,
  53569. [
  53570. 19,
  53571. cr.system_object.prototype.exps.round
  53572. ,[
  53573. [
  53574. 7,
  53575. [
  53576. 21,
  53577. 0,
  53578. false,
  53579. null
  53580. ,0
  53581. ]
  53582. ,[
  53583. 0,
  53584. 64
  53585. ]
  53586. ]
  53587. ]
  53588. ]
  53589. ,[
  53590. 0,
  53591. 64
  53592. ]
  53593. ]
  53594. ]
  53595. , [
  53596. 0,
  53597. [
  53598. 6,
  53599. [
  53600. 19,
  53601. cr.system_object.prototype.exps.round
  53602. ,[
  53603. [
  53604. 7,
  53605. [
  53606. 21,
  53607. 0,
  53608. false,
  53609. null
  53610. ,1
  53611. ]
  53612. ,[
  53613. 0,
  53614. 64
  53615. ]
  53616. ]
  53617. ]
  53618. ]
  53619. ,[
  53620. 0,
  53621. 64
  53622. ]
  53623. ]
  53624. ]
  53625. ]
  53626. ]
  53627. , [
  53628. 0,
  53629. cr.behaviors.DragnDrop.prototype.acts.Drop,
  53630. "DragDrop",
  53631. 7547028486606034,
  53632. false
  53633. ]
  53634. ]
  53635. ]
  53636. , [
  53637. 0,
  53638. null,
  53639. false,
  53640. null,
  53641. 3154168705741433,
  53642. [
  53643. [
  53644. 0,
  53645. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  53646. null,
  53647. 0,
  53648. false,
  53649. true,
  53650. false,
  53651. 4044842580857039,
  53652. false
  53653. ,[
  53654. [
  53655. 4,
  53656. 0
  53657. ]
  53658. ]
  53659. ]
  53660. , [
  53661. 0,
  53662. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  53663. null,
  53664. 0,
  53665. false,
  53666. true,
  53667. false,
  53668. 5928673735735991,
  53669. false
  53670. ,[
  53671. [
  53672. 4,
  53673. 1
  53674. ]
  53675. ]
  53676. ]
  53677. , [
  53678. 0,
  53679. cr.plugins_.Sprite.prototype.cnds.IsOutsideLayout,
  53680. null,
  53681. 0,
  53682. false,
  53683. true,
  53684. false,
  53685. 8223938642719215,
  53686. false
  53687. ]
  53688. ],
  53689. [
  53690. [
  53691. 0,
  53692. cr.plugins_.Sprite.prototype.acts.SetInstanceVar,
  53693. null,
  53694. 5350666292592225,
  53695. false
  53696. ,[
  53697. [
  53698. 10,
  53699. 0
  53700. ]
  53701. , [
  53702. 7,
  53703. [
  53704. 20,
  53705. 0,
  53706. cr.plugins_.Sprite.prototype.exps.X,
  53707. false,
  53708. null
  53709. ]
  53710. ]
  53711. ]
  53712. ]
  53713. , [
  53714. 0,
  53715. cr.plugins_.Sprite.prototype.acts.SetInstanceVar,
  53716. null,
  53717. 8837892996494098,
  53718. false
  53719. ,[
  53720. [
  53721. 10,
  53722. 1
  53723. ]
  53724. , [
  53725. 7,
  53726. [
  53727. 20,
  53728. 0,
  53729. cr.plugins_.Sprite.prototype.exps.Y,
  53730. false,
  53731. null
  53732. ]
  53733. ]
  53734. ]
  53735. ]
  53736. ]
  53737. ]
  53738. , [
  53739. 0,
  53740. null,
  53741. false,
  53742. null,
  53743. 3092708355011694,
  53744. [
  53745. [
  53746. 0,
  53747. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  53748. null,
  53749. 0,
  53750. false,
  53751. false,
  53752. false,
  53753. 1638529156637545,
  53754. false
  53755. ,[
  53756. [
  53757. 4,
  53758. 2
  53759. ]
  53760. ]
  53761. ]
  53762. , [
  53763. 0,
  53764. cr.plugins_.Sprite.prototype.cnds.IsBoolInstanceVarSet,
  53765. null,
  53766. 0,
  53767. false,
  53768. false,
  53769. false,
  53770. 5562540127824782,
  53771. false
  53772. ,[
  53773. [
  53774. 10,
  53775. 2
  53776. ]
  53777. ]
  53778. ]
  53779. ],
  53780. [
  53781. [
  53782. 0,
  53783. cr.behaviors.DragnDrop.prototype.acts.SetEnabled,
  53784. "DragDrop",
  53785. 2421275837007395,
  53786. false
  53787. ,[
  53788. [
  53789. 3,
  53790. 0
  53791. ]
  53792. ]
  53793. ]
  53794. ]
  53795. ,[
  53796. [
  53797. 0,
  53798. null,
  53799. false,
  53800. null,
  53801. 2425612183229859,
  53802. [
  53803. [
  53804. 4,
  53805. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  53806. null,
  53807. 0,
  53808. false,
  53809. false,
  53810. false,
  53811. 1188985158677896,
  53812. false
  53813. ,[
  53814. [
  53815. 10,
  53816. 0
  53817. ]
  53818. , [
  53819. 8,
  53820. 0
  53821. ]
  53822. , [
  53823. 7,
  53824. [
  53825. 0,
  53826. 2
  53827. ]
  53828. ]
  53829. ]
  53830. ]
  53831. ],
  53832. [
  53833. [
  53834. 4,
  53835. cr.plugins_.Sprite.prototype.acts.SetOpacity,
  53836. null,
  53837. 2657520612945695,
  53838. false
  53839. ,[
  53840. [
  53841. 0,
  53842. [
  53843. 0,
  53844. 100
  53845. ]
  53846. ]
  53847. ]
  53848. ]
  53849. ]
  53850. ]
  53851. , [
  53852. 0,
  53853. null,
  53854. false,
  53855. null,
  53856. 6458809708918327,
  53857. [
  53858. [
  53859. -1,
  53860. cr.system_object.prototype.cnds.TriggerOnce,
  53861. null,
  53862. 0,
  53863. false,
  53864. false,
  53865. false,
  53866. 9120165400229315,
  53867. false
  53868. ]
  53869. ],
  53870. [
  53871. [
  53872. 14,
  53873. cr.plugins_.Arr.prototype.acts.SetX,
  53874. null,
  53875. 3212655934846545,
  53876. false
  53877. ,[
  53878. [
  53879. 0,
  53880. [
  53881. 23,
  53882. "currentLevel"
  53883. ]
  53884. ]
  53885. , [
  53886. 7,
  53887. [
  53888. 19,
  53889. cr.system_object.prototype.exps.max
  53890. ,[
  53891. [
  53892. 4,
  53893. [
  53894. 0,
  53895. 2
  53896. ]
  53897. ,[
  53898. 23,
  53899. "stars"
  53900. ]
  53901. ]
  53902. ,[
  53903. 20,
  53904. 14,
  53905. cr.plugins_.Arr.prototype.exps.At,
  53906. false,
  53907. null
  53908. ,[
  53909. [
  53910. 23,
  53911. "currentLevel"
  53912. ]
  53913. ]
  53914. ]
  53915. ]
  53916. ]
  53917. ]
  53918. ]
  53919. ]
  53920. , [
  53921. 5,
  53922. cr.plugins_.Sprite.prototype.acts.SetAnimFrame,
  53923. null,
  53924. 6673877501687342,
  53925. false
  53926. ,[
  53927. [
  53928. 0,
  53929. [
  53930. 5,
  53931. [
  53932. 20,
  53933. 14,
  53934. cr.plugins_.Arr.prototype.exps.At,
  53935. false,
  53936. null
  53937. ,[
  53938. [
  53939. 23,
  53940. "currentLevel"
  53941. ]
  53942. ,[
  53943. 0,
  53944. 0
  53945. ]
  53946. ]
  53947. ]
  53948. ,[
  53949. 0,
  53950. 2
  53951. ]
  53952. ]
  53953. ]
  53954. ]
  53955. ]
  53956. , [
  53957. -1,
  53958. cr.system_object.prototype.acts.AddVar,
  53959. null,
  53960. 6208664989481864,
  53961. false
  53962. ,[
  53963. [
  53964. 11,
  53965. "currentLevel"
  53966. ]
  53967. , [
  53968. 7,
  53969. [
  53970. 0,
  53971. 1
  53972. ]
  53973. ]
  53974. ]
  53975. ]
  53976. ]
  53977. ]
  53978. ]
  53979. ]
  53980. , [
  53981. 0,
  53982. null,
  53983. false,
  53984. null,
  53985. 4570722350269926,
  53986. [
  53987. [
  53988. 6,
  53989. cr.plugins_.Spritefont2.prototype.cnds.OnCreated,
  53990. null,
  53991. 1,
  53992. false,
  53993. false,
  53994. false,
  53995. 3700932591412556,
  53996. false
  53997. ]
  53998. ],
  53999. [
  54000. [
  54001. 7,
  54002. cr.plugins_.Arr.prototype.acts.JSONLoad,
  54003. null,
  54004. 7738146856842609,
  54005. false
  54006. ,[
  54007. [
  54008. 1,
  54009. [
  54010. 2,
  54011. "{\"c2array\":true,\"size\":[2,18,1],\"data\":[[[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[24],[26],[27]],[[\"'\"],[\";|\"],[\"Ii.,\"],[\":!-`\"],[\"()°\"],[\"l\\\"[]\"],[\"Le12_=$<>\"],[\"ERSfp357\\\\/\"],[\"BCFGJPTUZbcgjnoqstz4689?+\"],[\"DHNOQdkru0~*\"],[\"AKVYhvy£€\"],[\"ax\"],[\"MXm\"],[\"w&\"],[\"W\"],[\"%\"],[\"#\"],[\"@\"]]]}"
  54012. ]
  54013. ]
  54014. ]
  54015. ]
  54016. ]
  54017. ,[
  54018. [
  54019. 0,
  54020. null,
  54021. false,
  54022. null,
  54023. 248332985935212,
  54024. [
  54025. [
  54026. -1,
  54027. cr.system_object.prototype.cnds.For,
  54028. null,
  54029. 0,
  54030. true,
  54031. false,
  54032. false,
  54033. 731143400910005,
  54034. false
  54035. ,[
  54036. [
  54037. 1,
  54038. [
  54039. 2,
  54040. "y"
  54041. ]
  54042. ]
  54043. , [
  54044. 0,
  54045. [
  54046. 0,
  54047. 0
  54048. ]
  54049. ]
  54050. , [
  54051. 0,
  54052. [
  54053. 5,
  54054. [
  54055. 20,
  54056. 7,
  54057. cr.plugins_.Arr.prototype.exps.Height,
  54058. false,
  54059. null
  54060. ]
  54061. ,[
  54062. 0,
  54063. 1
  54064. ]
  54065. ]
  54066. ]
  54067. ]
  54068. ]
  54069. ],
  54070. [
  54071. [
  54072. 6,
  54073. cr.plugins_.Spritefont2.prototype.acts.SetCharacterWidth,
  54074. null,
  54075. 6143337227191957,
  54076. false
  54077. ,[
  54078. [
  54079. 1,
  54080. [
  54081. 20,
  54082. 7,
  54083. cr.plugins_.Arr.prototype.exps.At,
  54084. false,
  54085. null
  54086. ,[
  54087. [
  54088. 0,
  54089. 1
  54090. ]
  54091. ,[
  54092. 19,
  54093. cr.system_object.prototype.exps.loopindex
  54094. ,[
  54095. [
  54096. 2,
  54097. "y"
  54098. ]
  54099. ]
  54100. ]
  54101. ]
  54102. ]
  54103. ]
  54104. , [
  54105. 0,
  54106. [
  54107. 20,
  54108. 7,
  54109. cr.plugins_.Arr.prototype.exps.At,
  54110. false,
  54111. null
  54112. ,[
  54113. [
  54114. 0,
  54115. 0
  54116. ]
  54117. ,[
  54118. 19,
  54119. cr.system_object.prototype.exps.loopindex
  54120. ,[
  54121. [
  54122. 2,
  54123. "y"
  54124. ]
  54125. ]
  54126. ]
  54127. ]
  54128. ]
  54129. ]
  54130. ]
  54131. ]
  54132. , [
  54133. 6,
  54134. cr.plugins_.Spritefont2.prototype.acts.SetCharacterWidth,
  54135. null,
  54136. 265591441951755,
  54137. false
  54138. ,[
  54139. [
  54140. 1,
  54141. [
  54142. 2,
  54143. " "
  54144. ]
  54145. ]
  54146. , [
  54147. 0,
  54148. [
  54149. 0,
  54150. 9
  54151. ]
  54152. ]
  54153. ]
  54154. ]
  54155. ]
  54156. ]
  54157. ]
  54158. ]
  54159. , [
  54160. 0,
  54161. null,
  54162. false,
  54163. null,
  54164. 4739079917613882,
  54165. [
  54166. [
  54167. -1,
  54168. cr.system_object.prototype.cnds.OnLayoutStart,
  54169. null,
  54170. 1,
  54171. false,
  54172. false,
  54173. false,
  54174. 6730174611284973,
  54175. false
  54176. ]
  54177. , [
  54178. 6,
  54179. cr.plugins_.Spritefont2.prototype.cnds.CompareInstanceVar,
  54180. null,
  54181. 0,
  54182. false,
  54183. false,
  54184. false,
  54185. 1798204198973239,
  54186. false
  54187. ,[
  54188. [
  54189. 10,
  54190. 0
  54191. ]
  54192. , [
  54193. 8,
  54194. 0
  54195. ]
  54196. , [
  54197. 7,
  54198. [
  54199. 0,
  54200. 2
  54201. ]
  54202. ]
  54203. ]
  54204. ]
  54205. ],
  54206. [
  54207. ]
  54208. ,[
  54209. [
  54210. 0,
  54211. null,
  54212. false,
  54213. null,
  54214. 4017773690330887,
  54215. [
  54216. [
  54217. -1,
  54218. cr.system_object.prototype.cnds.CompareVar,
  54219. null,
  54220. 0,
  54221. false,
  54222. false,
  54223. false,
  54224. 895168830941694,
  54225. false
  54226. ,[
  54227. [
  54228. 11,
  54229. "currentLevel"
  54230. ]
  54231. , [
  54232. 8,
  54233. 2
  54234. ]
  54235. , [
  54236. 7,
  54237. [
  54238. 0,
  54239. 10
  54240. ]
  54241. ]
  54242. ]
  54243. ]
  54244. ],
  54245. [
  54246. [
  54247. 6,
  54248. cr.plugins_.Spritefont2.prototype.acts.SetText,
  54249. null,
  54250. 3641017931734273,
  54251. false
  54252. ,[
  54253. [
  54254. 7,
  54255. [
  54256. 10,
  54257. [
  54258. 2,
  54259. sg_texts[SG.lang]["LEVEL:"]+" 0"
  54260. ]
  54261. ,[
  54262. 23,
  54263. "currentLevel"
  54264. ]
  54265. ]
  54266. ]
  54267. ]
  54268. ]
  54269. ]
  54270. ]
  54271. , [
  54272. 0,
  54273. null,
  54274. false,
  54275. null,
  54276. 2237060996506978,
  54277. [
  54278. [
  54279. -1,
  54280. cr.system_object.prototype.cnds.CompareVar,
  54281. null,
  54282. 0,
  54283. false,
  54284. false,
  54285. false,
  54286. 620835951072649,
  54287. false
  54288. ,[
  54289. [
  54290. 11,
  54291. "currentLevel"
  54292. ]
  54293. , [
  54294. 8,
  54295. 5
  54296. ]
  54297. , [
  54298. 7,
  54299. [
  54300. 0,
  54301. 10
  54302. ]
  54303. ]
  54304. ]
  54305. ]
  54306. ],
  54307. [
  54308. [
  54309. 6,
  54310. cr.plugins_.Spritefont2.prototype.acts.SetText,
  54311. null,
  54312. 8373263468762661,
  54313. false
  54314. ,[
  54315. [
  54316. 7,
  54317. [
  54318. 10,
  54319. [
  54320. 2,
  54321. sg_texts[SG.lang]["LEVEL:"]+" "
  54322. ]
  54323. ,[
  54324. 23,
  54325. "currentLevel"
  54326. ]
  54327. ]
  54328. ]
  54329. ]
  54330. ]
  54331. ]
  54332. ]
  54333. ]
  54334. ]
  54335. , [
  54336. 0,
  54337. null,
  54338. false,
  54339. null,
  54340. 7945946285370736,
  54341. [
  54342. [
  54343. -1,
  54344. cr.system_object.prototype.cnds.EveryTick,
  54345. null,
  54346. 0,
  54347. false,
  54348. false,
  54349. false,
  54350. 9787994775176769,
  54351. false
  54352. ]
  54353. , [
  54354. 6,
  54355. cr.plugins_.Spritefont2.prototype.cnds.CompareInstanceVar,
  54356. null,
  54357. 0,
  54358. false,
  54359. false,
  54360. false,
  54361. 3919612239108379,
  54362. false
  54363. ,[
  54364. [
  54365. 10,
  54366. 0
  54367. ]
  54368. , [
  54369. 8,
  54370. 0
  54371. ]
  54372. , [
  54373. 7,
  54374. [
  54375. 0,
  54376. 1
  54377. ]
  54378. ]
  54379. ]
  54380. ]
  54381. ],
  54382. [
  54383. ]
  54384. ,[
  54385. [
  54386. 0,
  54387. null,
  54388. false,
  54389. null,
  54390. 5024250802769209,
  54391. [
  54392. ],
  54393. [
  54394. [
  54395. 6,
  54396. cr.plugins_.Spritefont2.prototype.acts.SetText,
  54397. null,
  54398. 2073551574911833,
  54399. false
  54400. ,[
  54401. [
  54402. 7,
  54403. [
  54404. 2,
  54405. sg_texts[SG.lang]["BEST:"]+" --"
  54406. ]
  54407. ]
  54408. ]
  54409. ]
  54410. ]
  54411. ]
  54412. ]
  54413. ]
  54414. , [
  54415. 0,
  54416. null,
  54417. false,
  54418. null,
  54419. 5869418437837842,
  54420. [
  54421. [
  54422. -1,
  54423. cr.system_object.prototype.cnds.OnLayoutStart,
  54424. null,
  54425. 1,
  54426. false,
  54427. false,
  54428. false,
  54429. 4768816212115628,
  54430. false
  54431. ]
  54432. , [
  54433. 6,
  54434. cr.plugins_.Spritefont2.prototype.cnds.CompareInstanceVar,
  54435. null,
  54436. 0,
  54437. false,
  54438. false,
  54439. false,
  54440. 2567624814336308,
  54441. false
  54442. ,[
  54443. [
  54444. 10,
  54445. 0
  54446. ]
  54447. , [
  54448. 8,
  54449. 0
  54450. ]
  54451. , [
  54452. 7,
  54453. [
  54454. 0,
  54455. 1
  54456. ]
  54457. ]
  54458. ]
  54459. ]
  54460. ],
  54461. [
  54462. [
  54463. -1,
  54464. cr.system_object.prototype.acts.SetVar,
  54465. null,
  54466. 8778556185939904,
  54467. false
  54468. ,[
  54469. [
  54470. 11,
  54471. "timee"
  54472. ]
  54473. , [
  54474. 7,
  54475. [
  54476. 0,
  54477. 0
  54478. ]
  54479. ]
  54480. ]
  54481. ]
  54482. ]
  54483. ]
  54484. , [
  54485. 0,
  54486. null,
  54487. false,
  54488. null,
  54489. 6337865772441996,
  54490. [
  54491. [
  54492. -1,
  54493. cr.system_object.prototype.cnds.EveryTick,
  54494. null,
  54495. 0,
  54496. false,
  54497. false,
  54498. false,
  54499. 3352956746701932,
  54500. false
  54501. ]
  54502. , [
  54503. 6,
  54504. cr.plugins_.Spritefont2.prototype.cnds.CompareInstanceVar,
  54505. null,
  54506. 0,
  54507. false,
  54508. false,
  54509. false,
  54510. 9433860835439984,
  54511. false
  54512. ,[
  54513. [
  54514. 10,
  54515. 0
  54516. ]
  54517. , [
  54518. 8,
  54519. 0
  54520. ]
  54521. , [
  54522. 7,
  54523. [
  54524. 0,
  54525. 0
  54526. ]
  54527. ]
  54528. ]
  54529. ]
  54530. ],
  54531. [
  54532. [
  54533. 6,
  54534. cr.plugins_.Spritefont2.prototype.acts.SetText,
  54535. null,
  54536. 5727524538646942,
  54537. false
  54538. ,[
  54539. [
  54540. 7,
  54541. [
  54542. 10,
  54543. [
  54544. 2,
  54545. sg_texts[SG.lang]["TIME:"]+" "
  54546. ]
  54547. ,[
  54548. 23,
  54549. "timee"
  54550. ]
  54551. ]
  54552. ]
  54553. ]
  54554. ]
  54555. ]
  54556. ]
  54557. , [
  54558. 0,
  54559. null,
  54560. false,
  54561. null,
  54562. 2013394728932725,
  54563. [
  54564. [
  54565. 8,
  54566. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  54567. null,
  54568. 1,
  54569. false,
  54570. false,
  54571. false,
  54572. 2076824864624852,
  54573. false
  54574. ,[
  54575. [
  54576. 4,
  54577. 4
  54578. ]
  54579. ]
  54580. ]
  54581. , [
  54582. 4,
  54583. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  54584. null,
  54585. 0,
  54586. false,
  54587. false,
  54588. false,
  54589. 5136684766415976,
  54590. false
  54591. ,[
  54592. [
  54593. 10,
  54594. 0
  54595. ]
  54596. , [
  54597. 8,
  54598. 0
  54599. ]
  54600. , [
  54601. 7,
  54602. [
  54603. 0,
  54604. 0
  54605. ]
  54606. ]
  54607. ]
  54608. ]
  54609. ],
  54610. [
  54611. [
  54612. -1,
  54613. cr.system_object.prototype.acts.GoToLayoutByName,
  54614. null,
  54615. 6474334872826916,
  54616. false
  54617. ,[
  54618. [
  54619. 1,
  54620. [
  54621. 10,
  54622. [
  54623. 2,
  54624. "levels"
  54625. ]
  54626. ,[
  54627. 23,
  54628. "levelse"
  54629. ]
  54630. ]
  54631. ]
  54632. ]
  54633. ]
  54634. , [
  54635. 20,
  54636. cr.plugins_.Softgames.prototype.acts.gameOver,
  54637. null,
  54638. 8603298156779475,
  54639. false
  54640. ]
  54641. ]
  54642. ]
  54643. , [
  54644. 0,
  54645. null,
  54646. false,
  54647. null,
  54648. 860354103723071,
  54649. [
  54650. [
  54651. 8,
  54652. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  54653. null,
  54654. 1,
  54655. false,
  54656. false,
  54657. false,
  54658. 8365919692349908,
  54659. false
  54660. ,[
  54661. [
  54662. 4,
  54663. 4
  54664. ]
  54665. ]
  54666. ]
  54667. , [
  54668. 4,
  54669. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  54670. null,
  54671. 0,
  54672. false,
  54673. false,
  54674. false,
  54675. 5564045368465237,
  54676. false
  54677. ,[
  54678. [
  54679. 10,
  54680. 0
  54681. ]
  54682. , [
  54683. 8,
  54684. 0
  54685. ]
  54686. , [
  54687. 7,
  54688. [
  54689. 0,
  54690. 2
  54691. ]
  54692. ]
  54693. ]
  54694. ]
  54695. , [
  54696. -1,
  54697. cr.system_object.prototype.cnds.CompareVar,
  54698. null,
  54699. 0,
  54700. false,
  54701. false,
  54702. false,
  54703. 5741698589192267,
  54704. false
  54705. ,[
  54706. [
  54707. 11,
  54708. "level"
  54709. ]
  54710. , [
  54711. 8,
  54712. 2
  54713. ]
  54714. , [
  54715. 7,
  54716. [
  54717. 0,
  54718. 45
  54719. ]
  54720. ]
  54721. ]
  54722. ]
  54723. , [
  54724. 4,
  54725. cr.plugins_.Sprite.prototype.cnds.CompareOpacity,
  54726. null,
  54727. 0,
  54728. false,
  54729. false,
  54730. false,
  54731. 4439896482544589,
  54732. false
  54733. ,[
  54734. [
  54735. 8,
  54736. 0
  54737. ]
  54738. , [
  54739. 0,
  54740. [
  54741. 0,
  54742. 100
  54743. ]
  54744. ]
  54745. ]
  54746. ]
  54747. ],
  54748. [
  54749. [
  54750. -1,
  54751. cr.system_object.prototype.acts.GoToLayoutByName,
  54752. null,
  54753. 8667842642591984,
  54754. false
  54755. ,[
  54756. [
  54757. 1,
  54758. [
  54759. 10,
  54760. [
  54761. 2,
  54762. "level"
  54763. ]
  54764. ,[
  54765. 23,
  54766. "currentLevel"
  54767. ]
  54768. ]
  54769. ]
  54770. ]
  54771. ]
  54772. , [
  54773. 20,
  54774. cr.plugins_.Softgames.prototype.acts.levelUp,
  54775. null,
  54776. 9061666706221086,
  54777. false
  54778. ]
  54779. ]
  54780. ]
  54781. , [
  54782. 0,
  54783. null,
  54784. false,
  54785. null,
  54786. 9581356910996781,
  54787. [
  54788. [
  54789. 8,
  54790. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  54791. null,
  54792. 1,
  54793. false,
  54794. false,
  54795. false,
  54796. 2830429852910951,
  54797. false
  54798. ,[
  54799. [
  54800. 4,
  54801. 4
  54802. ]
  54803. ]
  54804. ]
  54805. , [
  54806. 4,
  54807. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  54808. null,
  54809. 0,
  54810. false,
  54811. false,
  54812. false,
  54813. 6245777119770819,
  54814. false
  54815. ,[
  54816. [
  54817. 10,
  54818. 0
  54819. ]
  54820. , [
  54821. 8,
  54822. 0
  54823. ]
  54824. , [
  54825. 7,
  54826. [
  54827. 0,
  54828. 2
  54829. ]
  54830. ]
  54831. ]
  54832. ]
  54833. , [
  54834. -1,
  54835. cr.system_object.prototype.cnds.CompareVar,
  54836. null,
  54837. 0,
  54838. false,
  54839. false,
  54840. false,
  54841. 179933563471751,
  54842. false
  54843. ,[
  54844. [
  54845. 11,
  54846. "level"
  54847. ]
  54848. , [
  54849. 8,
  54850. 5
  54851. ]
  54852. , [
  54853. 7,
  54854. [
  54855. 0,
  54856. 45
  54857. ]
  54858. ]
  54859. ]
  54860. ]
  54861. , [
  54862. 4,
  54863. cr.plugins_.Sprite.prototype.cnds.CompareOpacity,
  54864. null,
  54865. 0,
  54866. false,
  54867. false,
  54868. false,
  54869. 439860637195265,
  54870. false
  54871. ,[
  54872. [
  54873. 8,
  54874. 0
  54875. ]
  54876. , [
  54877. 0,
  54878. [
  54879. 0,
  54880. 100
  54881. ]
  54882. ]
  54883. ]
  54884. ]
  54885. ],
  54886. [
  54887. [
  54888. -1,
  54889. cr.system_object.prototype.acts.GoToLayoutByName,
  54890. null,
  54891. 5427045489304109,
  54892. false
  54893. ,[
  54894. [
  54895. 1,
  54896. [
  54897. 2,
  54898. "menu"
  54899. ]
  54900. ]
  54901. ]
  54902. ]
  54903. ]
  54904. ]
  54905. , [
  54906. 0,
  54907. null,
  54908. false,
  54909. null,
  54910. 4119976702168647,
  54911. [
  54912. [
  54913. 8,
  54914. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  54915. null,
  54916. 1,
  54917. false,
  54918. false,
  54919. false,
  54920. 2570697404681795,
  54921. false
  54922. ,[
  54923. [
  54924. 4,
  54925. 4
  54926. ]
  54927. ]
  54928. ]
  54929. , [
  54930. 4,
  54931. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  54932. null,
  54933. 0,
  54934. false,
  54935. false,
  54936. false,
  54937. 6579839735803893,
  54938. false
  54939. ,[
  54940. [
  54941. 10,
  54942. 0
  54943. ]
  54944. , [
  54945. 8,
  54946. 0
  54947. ]
  54948. , [
  54949. 7,
  54950. [
  54951. 0,
  54952. 3
  54953. ]
  54954. ]
  54955. ]
  54956. ]
  54957. ],
  54958. [
  54959. [
  54960. 9,
  54961. cr.plugins_.Browser.prototype.acts.GoToURLWindow,
  54962. null,
  54963. 7756544790061453,
  54964. false
  54965. ,[
  54966. [
  54967. 1,
  54968. [
  54969. 23,
  54970. "MOREGAMESURL"
  54971. ]
  54972. ]
  54973. , [
  54974. 1,
  54975. [
  54976. 2,
  54977. "6"
  54978. ]
  54979. ]
  54980. ]
  54981. ]
  54982. ]
  54983. ]
  54984. , [
  54985. 0,
  54986. null,
  54987. false,
  54988. null,
  54989. 823295715877363,
  54990. [
  54991. [
  54992. 8,
  54993. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  54994. null,
  54995. 1,
  54996. false,
  54997. false,
  54998. false,
  54999. 6203737785697902,
  55000. false
  55001. ,[
  55002. [
  55003. 4,
  55004. 10
  55005. ]
  55006. ]
  55007. ]
  55008. ],
  55009. [
  55010. [
  55011. 9,
  55012. cr.plugins_.Browser.prototype.acts.GoToURLWindow,
  55013. null,
  55014. 7739508632794964,
  55015. false
  55016. ,[
  55017. [
  55018. 1,
  55019. [
  55020. 23,
  55021. "MOREGAMESURL"
  55022. ]
  55023. ]
  55024. , [
  55025. 1,
  55026. [
  55027. 2,
  55028. "5"
  55029. ]
  55030. ]
  55031. ]
  55032. ]
  55033. ]
  55034. ]
  55035. , [
  55036. 0,
  55037. null,
  55038. false,
  55039. null,
  55040. 6707660831030681,
  55041. [
  55042. [
  55043. -1,
  55044. cr.system_object.prototype.cnds.OnLayoutStart,
  55045. null,
  55046. 1,
  55047. false,
  55048. false,
  55049. false,
  55050. 8240082648843446,
  55051. false
  55052. ]
  55053. ],
  55054. [
  55055. [
  55056. 3,
  55057. cr.plugins_.Sprite.prototype.acts.SetOpacity,
  55058. null,
  55059. 1219728441794125,
  55060. false
  55061. ,[
  55062. [
  55063. 0,
  55064. [
  55065. 0,
  55066. 100
  55067. ]
  55068. ]
  55069. ]
  55070. ]
  55071. , [
  55072. 4,
  55073. cr.behaviors.Sin.prototype.acts.SetActive,
  55074. "Sine",
  55075. 1153872276441199,
  55076. false
  55077. ,[
  55078. [
  55079. 3,
  55080. 0
  55081. ]
  55082. ]
  55083. ]
  55084. ]
  55085. ,[
  55086. [
  55087. 0,
  55088. null,
  55089. false,
  55090. null,
  55091. 1327481542979748,
  55092. [
  55093. [
  55094. -1,
  55095. cr.system_object.prototype.cnds.TriggerOnce,
  55096. null,
  55097. 0,
  55098. false,
  55099. false,
  55100. false,
  55101. 8701887086012961,
  55102. false
  55103. ]
  55104. ],
  55105. [
  55106. [
  55107. -1,
  55108. cr.system_object.prototype.acts.CreateObject,
  55109. null,
  55110. 8685061683612648,
  55111. false
  55112. ,[
  55113. [
  55114. 4,
  55115. 11
  55116. ]
  55117. , [
  55118. 5,
  55119. [
  55120. 0,
  55121. 0
  55122. ]
  55123. ]
  55124. , [
  55125. 0,
  55126. [
  55127. 0,
  55128. 192
  55129. ]
  55130. ]
  55131. , [
  55132. 0,
  55133. [
  55134. 0,
  55135. 300
  55136. ]
  55137. ]
  55138. ]
  55139. ]
  55140. ]
  55141. ]
  55142. ]
  55143. ]
  55144. , [
  55145. 0,
  55146. null,
  55147. false,
  55148. null,
  55149. 8121912732136716,
  55150. [
  55151. [
  55152. 4,
  55153. cr.plugins_.Sprite.prototype.cnds.CompareOpacity,
  55154. null,
  55155. 0,
  55156. false,
  55157. false,
  55158. false,
  55159. 787274713096158,
  55160. false
  55161. ,[
  55162. [
  55163. 8,
  55164. 0
  55165. ]
  55166. , [
  55167. 0,
  55168. [
  55169. 0,
  55170. 100
  55171. ]
  55172. ]
  55173. ]
  55174. ]
  55175. , [
  55176. 4,
  55177. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  55178. null,
  55179. 0,
  55180. false,
  55181. false,
  55182. false,
  55183. 3551560271420093,
  55184. false
  55185. ,[
  55186. [
  55187. 10,
  55188. 0
  55189. ]
  55190. , [
  55191. 8,
  55192. 0
  55193. ]
  55194. , [
  55195. 7,
  55196. [
  55197. 0,
  55198. 2
  55199. ]
  55200. ]
  55201. ]
  55202. ]
  55203. ],
  55204. [
  55205. ]
  55206. ,[
  55207. [
  55208. 0,
  55209. null,
  55210. false,
  55211. null,
  55212. 7222370704869001,
  55213. [
  55214. [
  55215. -1,
  55216. cr.system_object.prototype.cnds.TriggerOnce,
  55217. null,
  55218. 0,
  55219. false,
  55220. false,
  55221. false,
  55222. 4485310602139408,
  55223. false
  55224. ]
  55225. ],
  55226. [
  55227. [
  55228. 0,
  55229. cr.behaviors.DragnDrop.prototype.acts.SetEnabled,
  55230. "DragDrop",
  55231. 8906206728892161,
  55232. false
  55233. ,[
  55234. [
  55235. 3,
  55236. 0
  55237. ]
  55238. ]
  55239. ]
  55240. , [
  55241. 4,
  55242. cr.behaviors.Sin.prototype.acts.SetActive,
  55243. "Sine",
  55244. 1723291120410511,
  55245. false
  55246. ,[
  55247. [
  55248. 3,
  55249. 1
  55250. ]
  55251. ]
  55252. ]
  55253. , [
  55254. 4,
  55255. cr.behaviors.Sin.prototype.acts.SetMovement,
  55256. "Sine",
  55257. 5555906476149424,
  55258. false
  55259. ,[
  55260. [
  55261. 3,
  55262. 5
  55263. ]
  55264. ]
  55265. ]
  55266. , [
  55267. 4,
  55268. cr.behaviors.Sin.prototype.acts.SetMagnitude,
  55269. "Sine",
  55270. 4282891735253008,
  55271. false
  55272. ,[
  55273. [
  55274. 0,
  55275. [
  55276. 0,
  55277. 30
  55278. ]
  55279. ]
  55280. ]
  55281. ]
  55282. , [
  55283. 4,
  55284. cr.behaviors.Sin.prototype.acts.SetPeriod,
  55285. "Sine",
  55286. 7973253417346936,
  55287. false
  55288. ,[
  55289. [
  55290. 0,
  55291. [
  55292. 0,
  55293. 1
  55294. ]
  55295. ]
  55296. ]
  55297. ]
  55298. , [
  55299. 4,
  55300. cr.behaviors.Sin.prototype.acts.SetWave,
  55301. "Sine",
  55302. 3442608916300307,
  55303. false
  55304. ,[
  55305. [
  55306. 3,
  55307. 1
  55308. ]
  55309. ]
  55310. ]
  55311. ]
  55312. ]
  55313. ]
  55314. ]
  55315. , [
  55316. 0,
  55317. null,
  55318. false,
  55319. null,
  55320. 2133581766194421,
  55321. [
  55322. [
  55323. -1,
  55324. cr.system_object.prototype.cnds.Every,
  55325. null,
  55326. 0,
  55327. false,
  55328. false,
  55329. false,
  55330. 5307744597568933,
  55331. false
  55332. ,[
  55333. [
  55334. 0,
  55335. [
  55336. 1,
  55337. 1
  55338. ]
  55339. ]
  55340. ]
  55341. ]
  55342. ],
  55343. [
  55344. ]
  55345. ,[
  55346. [
  55347. 0,
  55348. null,
  55349. false,
  55350. null,
  55351. 7263671102735837,
  55352. [
  55353. [
  55354. 0,
  55355. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  55356. null,
  55357. 0,
  55358. false,
  55359. true,
  55360. false,
  55361. 5472001303888893,
  55362. false
  55363. ,[
  55364. [
  55365. 4,
  55366. 2
  55367. ]
  55368. ]
  55369. ]
  55370. , [
  55371. 0,
  55372. cr.plugins_.Sprite.prototype.cnds.IsBoolInstanceVarSet,
  55373. null,
  55374. 0,
  55375. false,
  55376. false,
  55377. false,
  55378. 7897702033625638,
  55379. false
  55380. ,[
  55381. [
  55382. 10,
  55383. 2
  55384. ]
  55385. ]
  55386. ]
  55387. ],
  55388. [
  55389. [
  55390. -1,
  55391. cr.system_object.prototype.acts.AddVar,
  55392. null,
  55393. 4524483396558973,
  55394. false
  55395. ,[
  55396. [
  55397. 11,
  55398. "timee"
  55399. ]
  55400. , [
  55401. 7,
  55402. [
  55403. 0,
  55404. 1
  55405. ]
  55406. ]
  55407. ]
  55408. ]
  55409. ]
  55410. ]
  55411. ]
  55412. ]
  55413. , [
  55414. 0,
  55415. null,
  55416. false,
  55417. null,
  55418. 2659096521787894,
  55419. [
  55420. [
  55421. -1,
  55422. cr.system_object.prototype.cnds.CompareBetween,
  55423. null,
  55424. 0,
  55425. false,
  55426. false,
  55427. false,
  55428. 185379590450836,
  55429. false
  55430. ,[
  55431. [
  55432. 0,
  55433. [
  55434. 23,
  55435. "timee"
  55436. ]
  55437. ]
  55438. , [
  55439. 0,
  55440. [
  55441. 0,
  55442. 1
  55443. ]
  55444. ]
  55445. , [
  55446. 0,
  55447. [
  55448. 0,
  55449. 8
  55450. ]
  55451. ]
  55452. ]
  55453. ]
  55454. , [
  55455. -1,
  55456. cr.system_object.prototype.cnds.TriggerOnce,
  55457. null,
  55458. 0,
  55459. false,
  55460. false,
  55461. false,
  55462. 3748829435026767,
  55463. false
  55464. ]
  55465. ],
  55466. [
  55467. [
  55468. -1,
  55469. cr.system_object.prototype.acts.SetVar,
  55470. null,
  55471. 1510629553795406,
  55472. false
  55473. ,[
  55474. [
  55475. 11,
  55476. "stars"
  55477. ]
  55478. , [
  55479. 7,
  55480. [
  55481. 0,
  55482. 3
  55483. ]
  55484. ]
  55485. ]
  55486. ]
  55487. ]
  55488. ]
  55489. , [
  55490. 0,
  55491. null,
  55492. false,
  55493. null,
  55494. 8396812218463581,
  55495. [
  55496. [
  55497. -1,
  55498. cr.system_object.prototype.cnds.CompareBetween,
  55499. null,
  55500. 0,
  55501. false,
  55502. false,
  55503. false,
  55504. 858124192282195,
  55505. false
  55506. ,[
  55507. [
  55508. 0,
  55509. [
  55510. 23,
  55511. "timee"
  55512. ]
  55513. ]
  55514. , [
  55515. 0,
  55516. [
  55517. 0,
  55518. 9
  55519. ]
  55520. ]
  55521. , [
  55522. 0,
  55523. [
  55524. 0,
  55525. 30
  55526. ]
  55527. ]
  55528. ]
  55529. ]
  55530. , [
  55531. -1,
  55532. cr.system_object.prototype.cnds.TriggerOnce,
  55533. null,
  55534. 0,
  55535. false,
  55536. false,
  55537. false,
  55538. 776028382215364,
  55539. false
  55540. ]
  55541. ],
  55542. [
  55543. [
  55544. -1,
  55545. cr.system_object.prototype.acts.SetVar,
  55546. null,
  55547. 5873986245199135,
  55548. false
  55549. ,[
  55550. [
  55551. 11,
  55552. "stars"
  55553. ]
  55554. , [
  55555. 7,
  55556. [
  55557. 0,
  55558. 2
  55559. ]
  55560. ]
  55561. ]
  55562. ]
  55563. ]
  55564. ]
  55565. , [
  55566. 0,
  55567. null,
  55568. false,
  55569. null,
  55570. 8583809614422241,
  55571. [
  55572. [
  55573. -1,
  55574. cr.system_object.prototype.cnds.CompareVar,
  55575. null,
  55576. 0,
  55577. false,
  55578. false,
  55579. false,
  55580. 1591815221990498,
  55581. false
  55582. ,[
  55583. [
  55584. 11,
  55585. "timee"
  55586. ]
  55587. , [
  55588. 8,
  55589. 4
  55590. ]
  55591. , [
  55592. 7,
  55593. [
  55594. 0,
  55595. 30
  55596. ]
  55597. ]
  55598. ]
  55599. ]
  55600. , [
  55601. -1,
  55602. cr.system_object.prototype.cnds.TriggerOnce,
  55603. null,
  55604. 0,
  55605. false,
  55606. false,
  55607. false,
  55608. 8955159555472683,
  55609. false
  55610. ]
  55611. ],
  55612. [
  55613. [
  55614. -1,
  55615. cr.system_object.prototype.acts.SetVar,
  55616. null,
  55617. 365134838687838,
  55618. false
  55619. ,[
  55620. [
  55621. 11,
  55622. "stars"
  55623. ]
  55624. , [
  55625. 7,
  55626. [
  55627. 0,
  55628. 1
  55629. ]
  55630. ]
  55631. ]
  55632. ]
  55633. ]
  55634. ]
  55635. , [
  55636. 0,
  55637. null,
  55638. false,
  55639. null,
  55640. 8459327027074263,
  55641. [
  55642. [
  55643. -1,
  55644. cr.system_object.prototype.cnds.OnLayoutStart,
  55645. null,
  55646. 1,
  55647. false,
  55648. false,
  55649. false,
  55650. 6870692236913369,
  55651. false
  55652. ]
  55653. ],
  55654. [
  55655. [
  55656. -1,
  55657. cr.system_object.prototype.acts.SetVar,
  55658. null,
  55659. 7058571155008255,
  55660. false
  55661. ,[
  55662. [
  55663. 11,
  55664. "stars"
  55665. ]
  55666. , [
  55667. 7,
  55668. [
  55669. 0,
  55670. 3
  55671. ]
  55672. ]
  55673. ]
  55674. ]
  55675. ]
  55676. ]
  55677. , [
  55678. 0,
  55679. null,
  55680. false,
  55681. null,
  55682. 5669201686679056,
  55683. [
  55684. [
  55685. -1,
  55686. cr.system_object.prototype.cnds.OnLayoutStart,
  55687. null,
  55688. 1,
  55689. false,
  55690. false,
  55691. false,
  55692. 9270911393240867,
  55693. false
  55694. ]
  55695. ],
  55696. [
  55697. [
  55698. -1,
  55699. cr.system_object.prototype.acts.SetVar,
  55700. null,
  55701. 1901201281087144,
  55702. false
  55703. ,[
  55704. [
  55705. 11,
  55706. "timee"
  55707. ]
  55708. , [
  55709. 7,
  55710. [
  55711. 0,
  55712. 0
  55713. ]
  55714. ]
  55715. ]
  55716. ]
  55717. , [
  55718. 5,
  55719. cr.plugins_.Sprite.prototype.acts.SetAnimFrame,
  55720. null,
  55721. 8613287620445448,
  55722. false
  55723. ,[
  55724. [
  55725. 0,
  55726. [
  55727. 5,
  55728. [
  55729. 20,
  55730. 14,
  55731. cr.plugins_.Arr.prototype.exps.At,
  55732. false,
  55733. null
  55734. ,[
  55735. [
  55736. 23,
  55737. "currentLevel"
  55738. ]
  55739. ,[
  55740. 0,
  55741. 0
  55742. ]
  55743. ]
  55744. ]
  55745. ,[
  55746. 0,
  55747. 2
  55748. ]
  55749. ]
  55750. ]
  55751. ]
  55752. ]
  55753. , [
  55754. -1,
  55755. cr.system_object.prototype.acts.SetVar,
  55756. null,
  55757. 6794869556644566,
  55758. false
  55759. ,[
  55760. [
  55761. 11,
  55762. "level"
  55763. ]
  55764. , [
  55765. 7,
  55766. [
  55767. 23,
  55768. "currentLevel"
  55769. ]
  55770. ]
  55771. ]
  55772. ]
  55773. ]
  55774. ]
  55775. , [
  55776. 0,
  55777. null,
  55778. false,
  55779. null,
  55780. 7270044860990173,
  55781. [
  55782. [
  55783. 8,
  55784. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  55785. null,
  55786. 1,
  55787. false,
  55788. false,
  55789. false,
  55790. 3141513715614628,
  55791. false
  55792. ,[
  55793. [
  55794. 4,
  55795. 4
  55796. ]
  55797. ]
  55798. ]
  55799. , [
  55800. 4,
  55801. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  55802. null,
  55803. 0,
  55804. false,
  55805. false,
  55806. false,
  55807. 8082928735325954,
  55808. false
  55809. ,[
  55810. [
  55811. 10,
  55812. 0
  55813. ]
  55814. , [
  55815. 8,
  55816. 0
  55817. ]
  55818. , [
  55819. 7,
  55820. [
  55821. 0,
  55822. 1
  55823. ]
  55824. ]
  55825. ]
  55826. ]
  55827. ],
  55828. [
  55829. [
  55830. -1,
  55831. cr.system_object.prototype.acts.RestartLayout,
  55832. null,
  55833. 3324592897777375,
  55834. false
  55835. ]
  55836. ]
  55837. ,[
  55838. [
  55839. 0,
  55840. null,
  55841. false,
  55842. null,
  55843. 2613803316073916,
  55844. [
  55845. [
  55846. 0,
  55847. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  55848. null,
  55849. 0,
  55850. false,
  55851. false,
  55852. false,
  55853. 7586832466079552,
  55854. false
  55855. ,[
  55856. [
  55857. 4,
  55858. 2
  55859. ]
  55860. ]
  55861. ]
  55862. , [
  55863. 0,
  55864. cr.plugins_.Sprite.prototype.cnds.IsBoolInstanceVarSet,
  55865. null,
  55866. 0,
  55867. false,
  55868. false,
  55869. false,
  55870. 5591896322999129,
  55871. false
  55872. ,[
  55873. [
  55874. 10,
  55875. 2
  55876. ]
  55877. ]
  55878. ]
  55879. ],
  55880. [
  55881. ]
  55882. ,[
  55883. [
  55884. 0,
  55885. null,
  55886. false,
  55887. null,
  55888. 8747597547862667,
  55889. [
  55890. [
  55891. -1,
  55892. cr.system_object.prototype.cnds.TriggerOnce,
  55893. null,
  55894. 0,
  55895. false,
  55896. false,
  55897. false,
  55898. 8783615622411771,
  55899. false
  55900. ]
  55901. ],
  55902. [
  55903. [
  55904. 14,
  55905. cr.plugins_.Arr.prototype.acts.SetX,
  55906. null,
  55907. 5322219567528078,
  55908. false
  55909. ,[
  55910. [
  55911. 0,
  55912. [
  55913. 23,
  55914. "currentLevel"
  55915. ]
  55916. ]
  55917. , [
  55918. 7,
  55919. [
  55920. 0,
  55921. 2
  55922. ]
  55923. ]
  55924. ]
  55925. ]
  55926. , [
  55927. 5,
  55928. cr.plugins_.Sprite.prototype.acts.SetAnimFrame,
  55929. null,
  55930. 306530016236553,
  55931. false
  55932. ,[
  55933. [
  55934. 0,
  55935. [
  55936. 5,
  55937. [
  55938. 20,
  55939. 14,
  55940. cr.plugins_.Arr.prototype.exps.At,
  55941. false,
  55942. null
  55943. ,[
  55944. [
  55945. 23,
  55946. "currentLevel"
  55947. ]
  55948. ,[
  55949. 0,
  55950. 0
  55951. ]
  55952. ]
  55953. ]
  55954. ,[
  55955. 0,
  55956. 2
  55957. ]
  55958. ]
  55959. ]
  55960. ]
  55961. ]
  55962. , [
  55963. -1,
  55964. cr.system_object.prototype.acts.AddVar,
  55965. null,
  55966. 4803374966348184,
  55967. false
  55968. ,[
  55969. [
  55970. 11,
  55971. "currentLevel"
  55972. ]
  55973. , [
  55974. 7,
  55975. [
  55976. 0,
  55977. -1
  55978. ]
  55979. ]
  55980. ]
  55981. ]
  55982. ]
  55983. ]
  55984. ]
  55985. ]
  55986. ]
  55987. ]
  55988. , [
  55989. 0,
  55990. null,
  55991. false,
  55992. null,
  55993. 1527319069994363,
  55994. [
  55995. [
  55996. -1,
  55997. cr.system_object.prototype.cnds.OnLayoutStart,
  55998. null,
  55999. 1,
  56000. false,
  56001. false,
  56002. false,
  56003. 686881817592967,
  56004. false
  56005. ]
  56006. , [
  56007. 6,
  56008. cr.plugins_.Spritefont2.prototype.cnds.CompareInstanceVar,
  56009. null,
  56010. 0,
  56011. false,
  56012. false,
  56013. false,
  56014. 8086736861930893,
  56015. false
  56016. ,[
  56017. [
  56018. 10,
  56019. 0
  56020. ]
  56021. , [
  56022. 8,
  56023. 0
  56024. ]
  56025. , [
  56026. 7,
  56027. [
  56028. 0,
  56029. 1
  56030. ]
  56031. ]
  56032. ]
  56033. ]
  56034. ],
  56035. [
  56036. [
  56037. 6,
  56038. cr.plugins_.Spritefont2.prototype.acts.Destroy,
  56039. null,
  56040. 4622833749328621,
  56041. false
  56042. ]
  56043. ]
  56044. ]
  56045. , [
  56046. 0,
  56047. null,
  56048. false,
  56049. null,
  56050. 1776184089140383,
  56051. [
  56052. [
  56053. -1,
  56054. cr.system_object.prototype.cnds.OnLayoutStart,
  56055. null,
  56056. 1,
  56057. false,
  56058. false,
  56059. false,
  56060. 2421913765785982,
  56061. false
  56062. ]
  56063. ],
  56064. [
  56065. ]
  56066. ,[
  56067. [
  56068. 0,
  56069. null,
  56070. false,
  56071. null,
  56072. 7918456428498456,
  56073. [
  56074. [
  56075. -1,
  56076. cr.system_object.prototype.cnds.TriggerOnce,
  56077. null,
  56078. 0,
  56079. false,
  56080. false,
  56081. false,
  56082. 8260536546051275,
  56083. false
  56084. ]
  56085. ],
  56086. [
  56087. [
  56088. -1,
  56089. cr.system_object.prototype.acts.CreateObject,
  56090. null,
  56091. 1832537669237175,
  56092. false
  56093. ,[
  56094. [
  56095. 4,
  56096. 10
  56097. ]
  56098. , [
  56099. 5,
  56100. [
  56101. 0,
  56102. 0
  56103. ]
  56104. ]
  56105. , [
  56106. 0,
  56107. [
  56108. 0,
  56109. 10
  56110. ]
  56111. ]
  56112. , [
  56113. 0,
  56114. [
  56115. 0,
  56116. 2
  56117. ]
  56118. ]
  56119. ]
  56120. ]
  56121. , [
  56122. 11,
  56123. cr.plugins_.Sprite.prototype.acts.MoveToTop,
  56124. null,
  56125. 5072759491718824,
  56126. false
  56127. ]
  56128. ]
  56129. ]
  56130. ]
  56131. ]
  56132. , [
  56133. 0,
  56134. null,
  56135. false,
  56136. null,
  56137. 7243063696866231,
  56138. [
  56139. [
  56140. -1,
  56141. cr.system_object.prototype.cnds.OnLayoutEnd,
  56142. null,
  56143. 1,
  56144. false,
  56145. false,
  56146. false,
  56147. 4016981932858083,
  56148. false
  56149. ]
  56150. ],
  56151. [
  56152. [
  56153. 18,
  56154. cr.plugins_.WebStorage.prototype.acts.StoreLocal,
  56155. null,
  56156. 9949536141107374,
  56157. false
  56158. ,[
  56159. [
  56160. 1,
  56161. [
  56162. 2,
  56163. "save"
  56164. ]
  56165. ]
  56166. , [
  56167. 7,
  56168. [
  56169. 20,
  56170. 14,
  56171. cr.plugins_.Arr.prototype.exps.AsJSON,
  56172. true,
  56173. null
  56174. ]
  56175. ]
  56176. ]
  56177. ]
  56178. , [
  56179. 18,
  56180. cr.plugins_.WebStorage.prototype.acts.StoreLocal,
  56181. null,
  56182. 4011694167217524,
  56183. false
  56184. ,[
  56185. [
  56186. 1,
  56187. [
  56188. 2,
  56189. "current"
  56190. ]
  56191. ]
  56192. , [
  56193. 7,
  56194. [
  56195. 23,
  56196. "currentLevel"
  56197. ]
  56198. ]
  56199. ]
  56200. ]
  56201. ]
  56202. ]
  56203. ]
  56204. ]
  56205. , [
  56206. "menu",
  56207. [
  56208. [
  56209. 1,
  56210. "MOREGAMESURL",
  56211. 1,
  56212. "",
  56213. false,true,2896250554953761,false
  56214. ]
  56215. , [
  56216. 0,
  56217. null,
  56218. false,
  56219. null,
  56220. 1251697088673423,
  56221. [
  56222. [
  56223. 6,
  56224. cr.plugins_.Spritefont2.prototype.cnds.OnCreated,
  56225. null,
  56226. 1,
  56227. false,
  56228. false,
  56229. false,
  56230. 5084325921798728,
  56231. false
  56232. ]
  56233. ],
  56234. [
  56235. [
  56236. 7,
  56237. cr.plugins_.Arr.prototype.acts.JSONLoad,
  56238. null,
  56239. 6548363612825162,
  56240. false
  56241. ,[
  56242. [
  56243. 1,
  56244. [
  56245. 2,
  56246. "{\"c2array\":true,\"size\":[2,18,1],\"data\":[[[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[24],[26],[27]],[[\"'\"],[\";|\"],[\"Ii.,\"],[\":!-`\"],[\"()°\"],[\"l\\\"[]\"],[\"Le12_=$<>\"],[\"ERSfp357\\\\/\"],[\"BCFGJPTUZbcgjnoqstz4689?+\"],[\"DHNOQdkru0~*\"],[\"AKVYhvy£€\"],[\"ax\"],[\"MXm\"],[\"w&\"],[\"W\"],[\"%\"],[\"#\"],[\"@\"]]]}"
  56247. ]
  56248. ]
  56249. ]
  56250. ]
  56251. ]
  56252. ,[
  56253. [
  56254. 0,
  56255. null,
  56256. false,
  56257. null,
  56258. 9118653331583086,
  56259. [
  56260. [
  56261. -1,
  56262. cr.system_object.prototype.cnds.For,
  56263. null,
  56264. 0,
  56265. true,
  56266. false,
  56267. false,
  56268. 1339960626145382,
  56269. false
  56270. ,[
  56271. [
  56272. 1,
  56273. [
  56274. 2,
  56275. "y"
  56276. ]
  56277. ]
  56278. , [
  56279. 0,
  56280. [
  56281. 0,
  56282. 0
  56283. ]
  56284. ]
  56285. , [
  56286. 0,
  56287. [
  56288. 5,
  56289. [
  56290. 20,
  56291. 7,
  56292. cr.plugins_.Arr.prototype.exps.Height,
  56293. false,
  56294. null
  56295. ]
  56296. ,[
  56297. 0,
  56298. 1
  56299. ]
  56300. ]
  56301. ]
  56302. ]
  56303. ]
  56304. ],
  56305. [
  56306. [
  56307. 6,
  56308. cr.plugins_.Spritefont2.prototype.acts.SetCharacterWidth,
  56309. null,
  56310. 9438675236282495,
  56311. false
  56312. ,[
  56313. [
  56314. 1,
  56315. [
  56316. 20,
  56317. 7,
  56318. cr.plugins_.Arr.prototype.exps.At,
  56319. false,
  56320. null
  56321. ,[
  56322. [
  56323. 0,
  56324. 1
  56325. ]
  56326. ,[
  56327. 19,
  56328. cr.system_object.prototype.exps.loopindex
  56329. ,[
  56330. [
  56331. 2,
  56332. "y"
  56333. ]
  56334. ]
  56335. ]
  56336. ]
  56337. ]
  56338. ]
  56339. , [
  56340. 0,
  56341. [
  56342. 20,
  56343. 7,
  56344. cr.plugins_.Arr.prototype.exps.At,
  56345. false,
  56346. null
  56347. ,[
  56348. [
  56349. 0,
  56350. 0
  56351. ]
  56352. ,[
  56353. 19,
  56354. cr.system_object.prototype.exps.loopindex
  56355. ,[
  56356. [
  56357. 2,
  56358. "y"
  56359. ]
  56360. ]
  56361. ]
  56362. ]
  56363. ]
  56364. ]
  56365. ]
  56366. ]
  56367. , [
  56368. 6,
  56369. cr.plugins_.Spritefont2.prototype.acts.SetCharacterWidth,
  56370. null,
  56371. 924964173312388,
  56372. false
  56373. ,[
  56374. [
  56375. 1,
  56376. [
  56377. 2,
  56378. " "
  56379. ]
  56380. ]
  56381. , [
  56382. 0,
  56383. [
  56384. 0,
  56385. 9
  56386. ]
  56387. ]
  56388. ]
  56389. ]
  56390. ]
  56391. ]
  56392. ]
  56393. ]
  56394. , [
  56395. 0,
  56396. null,
  56397. false,
  56398. null,
  56399. 2511199676811585,
  56400. [
  56401. [
  56402. 8,
  56403. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  56404. null,
  56405. 1,
  56406. false,
  56407. false,
  56408. false,
  56409. 2872760565272272,
  56410. false
  56411. ,[
  56412. [
  56413. 4,
  56414. 10
  56415. ]
  56416. ]
  56417. ]
  56418. ],
  56419. [
  56420. [
  56421. 9,
  56422. cr.plugins_.Browser.prototype.acts.GoToURLWindow,
  56423. null,
  56424. 2658644238454745,
  56425. false
  56426. ,[
  56427. [
  56428. 1,
  56429. [
  56430. 23,
  56431. "MOREGAMESURL"
  56432. ]
  56433. ]
  56434. , [
  56435. 1,
  56436. [
  56437. 2,
  56438. "2"
  56439. ]
  56440. ]
  56441. ]
  56442. ]
  56443. ]
  56444. ]
  56445. , [
  56446. 0,
  56447. null,
  56448. false,
  56449. null,
  56450. 6099757924299238,
  56451. [
  56452. [
  56453. 8,
  56454. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  56455. null,
  56456. 1,
  56457. false,
  56458. false,
  56459. false,
  56460. 449682400733062,
  56461. false
  56462. ,[
  56463. [
  56464. 4,
  56465. 4
  56466. ]
  56467. ]
  56468. ]
  56469. ],
  56470. [
  56471. [
  56472. 9,
  56473. cr.plugins_.Browser.prototype.acts.GoToURLWindow,
  56474. null,
  56475. 3239769240685774,
  56476. false
  56477. ,[
  56478. [
  56479. 1,
  56480. [
  56481. 23,
  56482. "MOREGAMESURL"
  56483. ]
  56484. ]
  56485. , [
  56486. 1,
  56487. [
  56488. 2,
  56489. "3"
  56490. ]
  56491. ]
  56492. ]
  56493. ]
  56494. ]
  56495. ]
  56496. , [
  56497. 0,
  56498. null,
  56499. false,
  56500. null,
  56501. 914126883270541,
  56502. [
  56503. [
  56504. 0,
  56505. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  56506. null,
  56507. 0,
  56508. false,
  56509. false,
  56510. false,
  56511. 854479207791489,
  56512. false
  56513. ,[
  56514. [
  56515. 4,
  56516. 2
  56517. ]
  56518. ]
  56519. ]
  56520. , [
  56521. 0,
  56522. cr.plugins_.Sprite.prototype.cnds.IsBoolInstanceVarSet,
  56523. null,
  56524. 0,
  56525. false,
  56526. false,
  56527. false,
  56528. 2118278908019458,
  56529. false
  56530. ,[
  56531. [
  56532. 10,
  56533. 2
  56534. ]
  56535. ]
  56536. ]
  56537. ],
  56538. [
  56539. [
  56540. 0,
  56541. cr.behaviors.DragnDrop.prototype.acts.SetEnabled,
  56542. "DragDrop",
  56543. 1439172145098647,
  56544. false
  56545. ,[
  56546. [
  56547. 3,
  56548. 0
  56549. ]
  56550. ]
  56551. ]
  56552. , [
  56553. -1,
  56554. cr.system_object.prototype.acts.GoToLayout,
  56555. null,
  56556. 8265309664288159,
  56557. false
  56558. ,[
  56559. [
  56560. 6,
  56561. "levels1"
  56562. ]
  56563. ]
  56564. ]
  56565. , [
  56566. 20,
  56567. cr.plugins_.Softgames.prototype.acts.startGame,
  56568. null,
  56569. 3971548191852136,
  56570. false
  56571. ]
  56572. ]
  56573. ]
  56574. , [
  56575. 0,
  56576. null,
  56577. false,
  56578. null,
  56579. 9764619254207175,
  56580. [
  56581. [
  56582. -1,
  56583. cr.system_object.prototype.cnds.OnLayoutStart,
  56584. null,
  56585. 1,
  56586. false,
  56587. false,
  56588. false,
  56589. 3755729855361753,
  56590. false
  56591. ]
  56592. ],
  56593. [
  56594. [
  56595. 3,
  56596. cr.plugins_.Sprite.prototype.acts.SetOpacity,
  56597. null,
  56598. 4174496116366403,
  56599. false
  56600. ,[
  56601. [
  56602. 0,
  56603. [
  56604. 0,
  56605. 100
  56606. ]
  56607. ]
  56608. ]
  56609. ]
  56610. , [
  56611. 4,
  56612. cr.behaviors.Sin.prototype.acts.SetActive,
  56613. "Sine",
  56614. 9383284356642604,
  56615. false
  56616. ,[
  56617. [
  56618. 3,
  56619. 0
  56620. ]
  56621. ]
  56622. ]
  56623. ]
  56624. ,[
  56625. [
  56626. 0,
  56627. null,
  56628. false,
  56629. null,
  56630. 5973872586172212,
  56631. [
  56632. [
  56633. -1,
  56634. cr.system_object.prototype.cnds.TriggerOnce,
  56635. null,
  56636. 0,
  56637. false,
  56638. false,
  56639. false,
  56640. 9039560175824146,
  56641. false
  56642. ]
  56643. ],
  56644. [
  56645. [
  56646. -1,
  56647. cr.system_object.prototype.acts.CreateObject,
  56648. null,
  56649. 9938153221702163,
  56650. false
  56651. ,[
  56652. [
  56653. 4,
  56654. 11
  56655. ]
  56656. , [
  56657. 5,
  56658. [
  56659. 0,
  56660. 0
  56661. ]
  56662. ]
  56663. , [
  56664. 0,
  56665. [
  56666. 0,
  56667. 192
  56668. ]
  56669. ]
  56670. , [
  56671. 0,
  56672. [
  56673. 0,
  56674. 300
  56675. ]
  56676. ]
  56677. ]
  56678. ]
  56679. ]
  56680. ]
  56681. ]
  56682. ]
  56683. , [
  56684. 0,
  56685. null,
  56686. false,
  56687. null,
  56688. 3949071367812633,
  56689. [
  56690. [
  56691. 8,
  56692. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  56693. null,
  56694. 1,
  56695. false,
  56696. false,
  56697. false,
  56698. 8154248475573044,
  56699. false
  56700. ,[
  56701. [
  56702. 4,
  56703. 6
  56704. ]
  56705. ]
  56706. ]
  56707. , [
  56708. 6,
  56709. cr.plugins_.Spritefont2.prototype.cnds.CompareInstanceVar,
  56710. null,
  56711. 0,
  56712. false,
  56713. false,
  56714. false,
  56715. 5638522598572712,
  56716. false
  56717. ,[
  56718. [
  56719. 10,
  56720. 0
  56721. ]
  56722. , [
  56723. 8,
  56724. 0
  56725. ]
  56726. , [
  56727. 7,
  56728. [
  56729. 0,
  56730. 1
  56731. ]
  56732. ]
  56733. ]
  56734. ]
  56735. ],
  56736. [
  56737. [
  56738. 9,
  56739. cr.plugins_.Browser.prototype.acts.GoToURLWindow,
  56740. null,
  56741. 4460698195027894,
  56742. false
  56743. ,[
  56744. [
  56745. 1,
  56746. [
  56747. 23,
  56748. "MOREGAMESURL"
  56749. ]
  56750. ]
  56751. , [
  56752. 1,
  56753. [
  56754. 2,
  56755. "3"
  56756. ]
  56757. ]
  56758. ]
  56759. ]
  56760. ]
  56761. ]
  56762. , [
  56763. 0,
  56764. null,
  56765. false,
  56766. null,
  56767. 9658425284273181,
  56768. [
  56769. [
  56770. -1,
  56771. cr.system_object.prototype.cnds.EveryTick,
  56772. null,
  56773. 0,
  56774. false,
  56775. false,
  56776. false,
  56777. 7549973538490019,
  56778. false
  56779. ]
  56780. , [
  56781. 0,
  56782. cr.behaviors.DragnDrop.prototype.cnds.IsDragging,
  56783. "DragDrop",
  56784. 0,
  56785. false,
  56786. true,
  56787. false,
  56788. 4820634245486586,
  56789. false
  56790. ]
  56791. ],
  56792. [
  56793. [
  56794. 0,
  56795. cr.plugins_.Sprite.prototype.acts.SetPos,
  56796. null,
  56797. 6136239160859562,
  56798. false
  56799. ,[
  56800. [
  56801. 0,
  56802. [
  56803. 19,
  56804. cr.system_object.prototype.exps.lerp
  56805. ,[
  56806. [
  56807. 20,
  56808. 0,
  56809. cr.plugins_.Sprite.prototype.exps.X,
  56810. false,
  56811. null
  56812. ]
  56813. ,[
  56814. 6,
  56815. [
  56816. 19,
  56817. cr.system_object.prototype.exps.round
  56818. ,[
  56819. [
  56820. 7,
  56821. [
  56822. 20,
  56823. 0,
  56824. cr.plugins_.Sprite.prototype.exps.X,
  56825. false,
  56826. null
  56827. ]
  56828. ,[
  56829. 0,
  56830. 64
  56831. ]
  56832. ]
  56833. ]
  56834. ]
  56835. ,[
  56836. 0,
  56837. 64
  56838. ]
  56839. ]
  56840. ,[
  56841. 1,
  56842. 0.5
  56843. ]
  56844. ]
  56845. ]
  56846. ]
  56847. , [
  56848. 0,
  56849. [
  56850. 19,
  56851. cr.system_object.prototype.exps.lerp
  56852. ,[
  56853. [
  56854. 20,
  56855. 0,
  56856. cr.plugins_.Sprite.prototype.exps.Y,
  56857. false,
  56858. null
  56859. ]
  56860. ,[
  56861. 6,
  56862. [
  56863. 19,
  56864. cr.system_object.prototype.exps.round
  56865. ,[
  56866. [
  56867. 7,
  56868. [
  56869. 20,
  56870. 0,
  56871. cr.plugins_.Sprite.prototype.exps.Y,
  56872. false,
  56873. null
  56874. ]
  56875. ,[
  56876. 0,
  56877. 64
  56878. ]
  56879. ]
  56880. ]
  56881. ]
  56882. ,[
  56883. 0,
  56884. 64
  56885. ]
  56886. ]
  56887. ,[
  56888. 1,
  56889. 0.5
  56890. ]
  56891. ]
  56892. ]
  56893. ]
  56894. ]
  56895. ]
  56896. ]
  56897. ]
  56898. , [
  56899. 0,
  56900. null,
  56901. false,
  56902. null,
  56903. 6339550090990449,
  56904. [
  56905. [
  56906. 0,
  56907. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  56908. null,
  56909. 0,
  56910. false,
  56911. true,
  56912. false,
  56913. 5221939089369189,
  56914. false
  56915. ,[
  56916. [
  56917. 4,
  56918. 0
  56919. ]
  56920. ]
  56921. ]
  56922. , [
  56923. 0,
  56924. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  56925. null,
  56926. 0,
  56927. false,
  56928. true,
  56929. false,
  56930. 4774494377501017,
  56931. false
  56932. ,[
  56933. [
  56934. 4,
  56935. 1
  56936. ]
  56937. ]
  56938. ]
  56939. , [
  56940. 0,
  56941. cr.plugins_.Sprite.prototype.cnds.IsOutsideLayout,
  56942. null,
  56943. 0,
  56944. false,
  56945. true,
  56946. false,
  56947. 9782006399932237,
  56948. false
  56949. ]
  56950. , [
  56951. 0,
  56952. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  56953. null,
  56954. 0,
  56955. false,
  56956. true,
  56957. false,
  56958. 7813332684633102,
  56959. false
  56960. ,[
  56961. [
  56962. 4,
  56963. 2
  56964. ]
  56965. ]
  56966. ]
  56967. ],
  56968. [
  56969. [
  56970. 0,
  56971. cr.plugins_.Sprite.prototype.acts.SetInstanceVar,
  56972. null,
  56973. 1199035052368853,
  56974. false
  56975. ,[
  56976. [
  56977. 10,
  56978. 0
  56979. ]
  56980. , [
  56981. 7,
  56982. [
  56983. 20,
  56984. 0,
  56985. cr.plugins_.Sprite.prototype.exps.X,
  56986. false,
  56987. null
  56988. ]
  56989. ]
  56990. ]
  56991. ]
  56992. , [
  56993. 0,
  56994. cr.plugins_.Sprite.prototype.acts.SetInstanceVar,
  56995. null,
  56996. 8691493484146503,
  56997. false
  56998. ,[
  56999. [
  57000. 10,
  57001. 1
  57002. ]
  57003. , [
  57004. 7,
  57005. [
  57006. 20,
  57007. 0,
  57008. cr.plugins_.Sprite.prototype.exps.Y,
  57009. false,
  57010. null
  57011. ]
  57012. ]
  57013. ]
  57014. ]
  57015. ]
  57016. ]
  57017. , [
  57018. 0,
  57019. null,
  57020. true,
  57021. null,
  57022. 8059698831282791,
  57023. [
  57024. [
  57025. 0,
  57026. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  57027. null,
  57028. 0,
  57029. false,
  57030. false,
  57031. false,
  57032. 2194139078029482,
  57033. false
  57034. ,[
  57035. [
  57036. 4,
  57037. 0
  57038. ]
  57039. ]
  57040. ]
  57041. , [
  57042. 0,
  57043. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  57044. null,
  57045. 0,
  57046. false,
  57047. false,
  57048. false,
  57049. 3913671306202042,
  57050. false
  57051. ,[
  57052. [
  57053. 4,
  57054. 1
  57055. ]
  57056. ]
  57057. ]
  57058. ],
  57059. [
  57060. [
  57061. 0,
  57062. cr.plugins_.Sprite.prototype.acts.SetPos,
  57063. null,
  57064. 9027011837478171,
  57065. false
  57066. ,[
  57067. [
  57068. 0,
  57069. [
  57070. 6,
  57071. [
  57072. 19,
  57073. cr.system_object.prototype.exps.round
  57074. ,[
  57075. [
  57076. 7,
  57077. [
  57078. 21,
  57079. 0,
  57080. false,
  57081. null
  57082. ,0
  57083. ]
  57084. ,[
  57085. 0,
  57086. 64
  57087. ]
  57088. ]
  57089. ]
  57090. ]
  57091. ,[
  57092. 0,
  57093. 64
  57094. ]
  57095. ]
  57096. ]
  57097. , [
  57098. 0,
  57099. [
  57100. 6,
  57101. [
  57102. 19,
  57103. cr.system_object.prototype.exps.round
  57104. ,[
  57105. [
  57106. 7,
  57107. [
  57108. 21,
  57109. 0,
  57110. false,
  57111. null
  57112. ,1
  57113. ]
  57114. ,[
  57115. 0,
  57116. 64
  57117. ]
  57118. ]
  57119. ]
  57120. ]
  57121. ,[
  57122. 0,
  57123. 64
  57124. ]
  57125. ]
  57126. ]
  57127. ]
  57128. ]
  57129. , [
  57130. 0,
  57131. cr.behaviors.DragnDrop.prototype.acts.Drop,
  57132. "DragDrop",
  57133. 2601976952226299,
  57134. false
  57135. ]
  57136. ]
  57137. ]
  57138. , [
  57139. 0,
  57140. null,
  57141. false,
  57142. null,
  57143. 2618674750141266,
  57144. [
  57145. [
  57146. 0,
  57147. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  57148. null,
  57149. 0,
  57150. false,
  57151. false,
  57152. false,
  57153. 8582798816157578,
  57154. false
  57155. ,[
  57156. [
  57157. 4,
  57158. 2
  57159. ]
  57160. ]
  57161. ]
  57162. , [
  57163. 0,
  57164. cr.plugins_.Sprite.prototype.cnds.IsBoolInstanceVarSet,
  57165. null,
  57166. 0,
  57167. false,
  57168. true,
  57169. false,
  57170. 7101248170582682,
  57171. false
  57172. ,[
  57173. [
  57174. 10,
  57175. 2
  57176. ]
  57177. ]
  57178. ]
  57179. ],
  57180. [
  57181. [
  57182. 0,
  57183. cr.plugins_.Sprite.prototype.acts.SetPos,
  57184. null,
  57185. 2550936150303917,
  57186. false
  57187. ,[
  57188. [
  57189. 0,
  57190. [
  57191. 6,
  57192. [
  57193. 19,
  57194. cr.system_object.prototype.exps.round
  57195. ,[
  57196. [
  57197. 7,
  57198. [
  57199. 21,
  57200. 0,
  57201. false,
  57202. null
  57203. ,0
  57204. ]
  57205. ,[
  57206. 0,
  57207. 64
  57208. ]
  57209. ]
  57210. ]
  57211. ]
  57212. ,[
  57213. 0,
  57214. 64
  57215. ]
  57216. ]
  57217. ]
  57218. , [
  57219. 0,
  57220. [
  57221. 6,
  57222. [
  57223. 19,
  57224. cr.system_object.prototype.exps.round
  57225. ,[
  57226. [
  57227. 7,
  57228. [
  57229. 21,
  57230. 0,
  57231. false,
  57232. null
  57233. ,1
  57234. ]
  57235. ,[
  57236. 0,
  57237. 64
  57238. ]
  57239. ]
  57240. ]
  57241. ]
  57242. ,[
  57243. 0,
  57244. 64
  57245. ]
  57246. ]
  57247. ]
  57248. ]
  57249. ]
  57250. , [
  57251. 0,
  57252. cr.behaviors.DragnDrop.prototype.acts.Drop,
  57253. "DragDrop",
  57254. 845142199252055,
  57255. false
  57256. ]
  57257. ]
  57258. ]
  57259. , [
  57260. 0,
  57261. null,
  57262. false,
  57263. null,
  57264. 1001030491047468,
  57265. [
  57266. [
  57267. 0,
  57268. cr.plugins_.Sprite.prototype.cnds.IsOverlapping,
  57269. null,
  57270. 0,
  57271. false,
  57272. false,
  57273. false,
  57274. 8616288651771235,
  57275. false
  57276. ,[
  57277. [
  57278. 4,
  57279. 2
  57280. ]
  57281. ]
  57282. ]
  57283. , [
  57284. 0,
  57285. cr.plugins_.Sprite.prototype.cnds.IsBoolInstanceVarSet,
  57286. null,
  57287. 0,
  57288. false,
  57289. false,
  57290. false,
  57291. 6092563684882589,
  57292. false
  57293. ,[
  57294. [
  57295. 10,
  57296. 2
  57297. ]
  57298. ]
  57299. ]
  57300. ],
  57301. [
  57302. [
  57303. 0,
  57304. cr.behaviors.DragnDrop.prototype.acts.SetEnabled,
  57305. "DragDrop",
  57306. 9313035551173551,
  57307. false
  57308. ,[
  57309. [
  57310. 3,
  57311. 0
  57312. ]
  57313. ]
  57314. ]
  57315. ]
  57316. ,[
  57317. [
  57318. 0,
  57319. null,
  57320. false,
  57321. null,
  57322. 8251183701446412,
  57323. [
  57324. [
  57325. 4,
  57326. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  57327. null,
  57328. 0,
  57329. false,
  57330. false,
  57331. false,
  57332. 7194828344062397,
  57333. false
  57334. ,[
  57335. [
  57336. 10,
  57337. 0
  57338. ]
  57339. , [
  57340. 8,
  57341. 0
  57342. ]
  57343. , [
  57344. 7,
  57345. [
  57346. 0,
  57347. 2
  57348. ]
  57349. ]
  57350. ]
  57351. ]
  57352. ],
  57353. [
  57354. [
  57355. 4,
  57356. cr.plugins_.Sprite.prototype.acts.SetOpacity,
  57357. null,
  57358. 6517280348638264,
  57359. false
  57360. ,[
  57361. [
  57362. 0,
  57363. [
  57364. 0,
  57365. 100
  57366. ]
  57367. ]
  57368. ]
  57369. ]
  57370. ]
  57371. ]
  57372. ]
  57373. ]
  57374. , [
  57375. 0,
  57376. null,
  57377. false,
  57378. null,
  57379. 6180366919094877,
  57380. [
  57381. [
  57382. -1,
  57383. cr.system_object.prototype.cnds.OnLayoutStart,
  57384. null,
  57385. 1,
  57386. false,
  57387. false,
  57388. false,
  57389. 8388059351280355,
  57390. false
  57391. ]
  57392. , [
  57393. 18,
  57394. cr.plugins_.WebStorage.prototype.cnds.LocalStorageExists,
  57395. null,
  57396. 0,
  57397. false,
  57398. false,
  57399. false,
  57400. 9283664198726753,
  57401. false
  57402. ,[
  57403. [
  57404. 1,
  57405. [
  57406. 2,
  57407. "save"
  57408. ]
  57409. ]
  57410. ]
  57411. ]
  57412. ],
  57413. [
  57414. [
  57415. 14,
  57416. cr.plugins_.Arr.prototype.acts.JSONLoad,
  57417. null,
  57418. 6241275822013352,
  57419. false
  57420. ,[
  57421. [
  57422. 1,
  57423. [
  57424. 20,
  57425. 18,
  57426. cr.plugins_.WebStorage.prototype.exps.LocalValue,
  57427. true,
  57428. null
  57429. ,[
  57430. [
  57431. 2,
  57432. "save"
  57433. ]
  57434. ]
  57435. ]
  57436. ]
  57437. ]
  57438. ]
  57439. ]
  57440. ]
  57441. , [
  57442. 0,
  57443. null,
  57444. false,
  57445. null,
  57446. 7263361067723026,
  57447. [
  57448. [
  57449. -1,
  57450. cr.system_object.prototype.cnds.OnLayoutStart,
  57451. null,
  57452. 1,
  57453. false,
  57454. false,
  57455. false,
  57456. 2542281302873987,
  57457. false
  57458. ]
  57459. , [
  57460. 18,
  57461. cr.plugins_.WebStorage.prototype.cnds.LocalStorageExists,
  57462. null,
  57463. 0,
  57464. false,
  57465. false,
  57466. false,
  57467. 7138883073161695,
  57468. false
  57469. ,[
  57470. [
  57471. 1,
  57472. [
  57473. 2,
  57474. "current"
  57475. ]
  57476. ]
  57477. ]
  57478. ]
  57479. ],
  57480. [
  57481. [
  57482. -1,
  57483. cr.system_object.prototype.acts.SetVar,
  57484. null,
  57485. 1460857649450276,
  57486. false
  57487. ,[
  57488. [
  57489. 11,
  57490. "currentLevel"
  57491. ]
  57492. , [
  57493. 7,
  57494. [
  57495. 20,
  57496. 18,
  57497. cr.plugins_.WebStorage.prototype.exps.LocalValue,
  57498. true,
  57499. null
  57500. ,[
  57501. [
  57502. 2,
  57503. "current"
  57504. ]
  57505. ]
  57506. ]
  57507. ]
  57508. ]
  57509. ]
  57510. ]
  57511. ]
  57512. ]
  57513. ]
  57514. , [
  57515. "levelselect",
  57516. [
  57517. [
  57518. 1,
  57519. "currentLevel",
  57520. 0,
  57521. 1,
  57522. false,false,9235434867904713,false
  57523. ]
  57524. , [
  57525. 1,
  57526. "levelse",
  57527. 0,
  57528. 1,
  57529. false,false,4579651540712585,false
  57530. ]
  57531. , [
  57532. 2,
  57533. "menu",
  57534. false
  57535. ]
  57536. , [
  57537. 0,
  57538. null,
  57539. false,
  57540. null,
  57541. 7299227024563434,
  57542. [
  57543. [
  57544. 8,
  57545. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  57546. null,
  57547. 1,
  57548. false,
  57549. false,
  57550. false,
  57551. 8893683712062349,
  57552. false
  57553. ,[
  57554. [
  57555. 4,
  57556. 13
  57557. ]
  57558. ]
  57559. ]
  57560. , [
  57561. 13,
  57562. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  57563. null,
  57564. 0,
  57565. false,
  57566. false,
  57567. false,
  57568. 3935572887466489,
  57569. false
  57570. ,[
  57571. [
  57572. 10,
  57573. 0
  57574. ]
  57575. , [
  57576. 8,
  57577. 0
  57578. ]
  57579. , [
  57580. 7,
  57581. [
  57582. 0,
  57583. 0
  57584. ]
  57585. ]
  57586. ]
  57587. ]
  57588. , [
  57589. -1,
  57590. cr.system_object.prototype.cnds.CompareVar,
  57591. null,
  57592. 0,
  57593. false,
  57594. false,
  57595. false,
  57596. 1250101509118359,
  57597. false
  57598. ,[
  57599. [
  57600. 11,
  57601. "levelse"
  57602. ]
  57603. , [
  57604. 8,
  57605. 4
  57606. ]
  57607. , [
  57608. 7,
  57609. [
  57610. 0,
  57611. 1
  57612. ]
  57613. ]
  57614. ]
  57615. ]
  57616. ],
  57617. [
  57618. [
  57619. -1,
  57620. cr.system_object.prototype.acts.SubVar,
  57621. null,
  57622. 2311131798972676,
  57623. false
  57624. ,[
  57625. [
  57626. 11,
  57627. "levelse"
  57628. ]
  57629. , [
  57630. 7,
  57631. [
  57632. 0,
  57633. 1
  57634. ]
  57635. ]
  57636. ]
  57637. ]
  57638. , [
  57639. -1,
  57640. cr.system_object.prototype.acts.GoToLayoutByName,
  57641. null,
  57642. 4221665380804587,
  57643. false
  57644. ,[
  57645. [
  57646. 1,
  57647. [
  57648. 10,
  57649. [
  57650. 2,
  57651. "levels"
  57652. ]
  57653. ,[
  57654. 23,
  57655. "levelse"
  57656. ]
  57657. ]
  57658. ]
  57659. ]
  57660. ]
  57661. ]
  57662. ]
  57663. , [
  57664. 0,
  57665. null,
  57666. false,
  57667. null,
  57668. 5513817968728792,
  57669. [
  57670. [
  57671. 8,
  57672. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  57673. null,
  57674. 1,
  57675. false,
  57676. false,
  57677. false,
  57678. 7952914812119548,
  57679. false
  57680. ,[
  57681. [
  57682. 4,
  57683. 13
  57684. ]
  57685. ]
  57686. ]
  57687. , [
  57688. 13,
  57689. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  57690. null,
  57691. 0,
  57692. false,
  57693. false,
  57694. false,
  57695. 8302450242556346,
  57696. false
  57697. ,[
  57698. [
  57699. 10,
  57700. 0
  57701. ]
  57702. , [
  57703. 8,
  57704. 0
  57705. ]
  57706. , [
  57707. 7,
  57708. [
  57709. 0,
  57710. 0
  57711. ]
  57712. ]
  57713. ]
  57714. ]
  57715. , [
  57716. -1,
  57717. cr.system_object.prototype.cnds.CompareVar,
  57718. null,
  57719. 0,
  57720. false,
  57721. false,
  57722. false,
  57723. 3297340706690954,
  57724. false
  57725. ,[
  57726. [
  57727. 11,
  57728. "levelse"
  57729. ]
  57730. , [
  57731. 8,
  57732. 0
  57733. ]
  57734. , [
  57735. 7,
  57736. [
  57737. 0,
  57738. 1
  57739. ]
  57740. ]
  57741. ]
  57742. ]
  57743. ],
  57744. [
  57745. [
  57746. -1,
  57747. cr.system_object.prototype.acts.GoToLayoutByName,
  57748. null,
  57749. 238928429085581,
  57750. false
  57751. ,[
  57752. [
  57753. 1,
  57754. [
  57755. 2,
  57756. "menu"
  57757. ]
  57758. ]
  57759. ]
  57760. ]
  57761. ]
  57762. ]
  57763. , [
  57764. 0,
  57765. null,
  57766. false,
  57767. null,
  57768. 7637441374251919,
  57769. [
  57770. [
  57771. 8,
  57772. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  57773. null,
  57774. 1,
  57775. false,
  57776. false,
  57777. false,
  57778. 5899606795958233,
  57779. false
  57780. ,[
  57781. [
  57782. 4,
  57783. 13
  57784. ]
  57785. ]
  57786. ]
  57787. , [
  57788. 13,
  57789. cr.plugins_.Sprite.prototype.cnds.CompareInstanceVar,
  57790. null,
  57791. 0,
  57792. false,
  57793. false,
  57794. false,
  57795. 5152791517955322,
  57796. false
  57797. ,[
  57798. [
  57799. 10,
  57800. 0
  57801. ]
  57802. , [
  57803. 8,
  57804. 0
  57805. ]
  57806. , [
  57807. 7,
  57808. [
  57809. 0,
  57810. 1
  57811. ]
  57812. ]
  57813. ]
  57814. ]
  57815. , [
  57816. -1,
  57817. cr.system_object.prototype.cnds.CompareVar,
  57818. null,
  57819. 0,
  57820. false,
  57821. false,
  57822. false,
  57823. 7765357554451001,
  57824. false
  57825. ,[
  57826. [
  57827. 11,
  57828. "levelse"
  57829. ]
  57830. , [
  57831. 8,
  57832. 2
  57833. ]
  57834. , [
  57835. 7,
  57836. [
  57837. 0,
  57838. 11
  57839. ]
  57840. ]
  57841. ]
  57842. ]
  57843. ],
  57844. [
  57845. [
  57846. -1,
  57847. cr.system_object.prototype.acts.AddVar,
  57848. null,
  57849. 4316488144244032,
  57850. false
  57851. ,[
  57852. [
  57853. 11,
  57854. "levelse"
  57855. ]
  57856. , [
  57857. 7,
  57858. [
  57859. 0,
  57860. 1
  57861. ]
  57862. ]
  57863. ]
  57864. ]
  57865. , [
  57866. -1,
  57867. cr.system_object.prototype.acts.GoToLayoutByName,
  57868. null,
  57869. 7631595429375934,
  57870. false
  57871. ,[
  57872. [
  57873. 1,
  57874. [
  57875. 10,
  57876. [
  57877. 2,
  57878. "levels"
  57879. ]
  57880. ,[
  57881. 23,
  57882. "levelse"
  57883. ]
  57884. ]
  57885. ]
  57886. ]
  57887. ]
  57888. ]
  57889. ]
  57890. , [
  57891. 0,
  57892. null,
  57893. false,
  57894. null,
  57895. 4902046580753422,
  57896. [
  57897. [
  57898. 12,
  57899. cr.plugins_.Sprite.prototype.cnds.CompareFrame,
  57900. null,
  57901. 0,
  57902. false,
  57903. false,
  57904. false,
  57905. 7522646479640305,
  57906. false
  57907. ,[
  57908. [
  57909. 8,
  57910. 0
  57911. ]
  57912. , [
  57913. 0,
  57914. [
  57915. 0,
  57916. 1
  57917. ]
  57918. ]
  57919. ]
  57920. ]
  57921. ],
  57922. [
  57923. [
  57924. 12,
  57925. cr.plugins_.Sprite.prototype.acts.MoveToTop,
  57926. null,
  57927. 2571955871028147,
  57928. false
  57929. ]
  57930. , [
  57931. 11,
  57932. cr.plugins_.Sprite.prototype.acts.MoveToTop,
  57933. null,
  57934. 4976674943068493,
  57935. false
  57936. ]
  57937. ]
  57938. ]
  57939. , [
  57940. 0,
  57941. null,
  57942. false,
  57943. null,
  57944. 309085286166799,
  57945. [
  57946. [
  57947. -1,
  57948. cr.system_object.prototype.cnds.OnLayoutStart,
  57949. null,
  57950. 1,
  57951. false,
  57952. false,
  57953. false,
  57954. 988282266748056,
  57955. false
  57956. ]
  57957. ],
  57958. [
  57959. ]
  57960. ,[
  57961. [
  57962. 0,
  57963. null,
  57964. false,
  57965. null,
  57966. 1032026139240119,
  57967. [
  57968. [
  57969. 14,
  57970. cr.plugins_.Arr.prototype.cnds.CompareX,
  57971. null,
  57972. 0,
  57973. false,
  57974. false,
  57975. false,
  57976. 9762170370544777,
  57977. false
  57978. ,[
  57979. [
  57980. 0,
  57981. [
  57982. 23,
  57983. "currentLevel"
  57984. ]
  57985. ]
  57986. , [
  57987. 8,
  57988. 0
  57989. ]
  57990. , [
  57991. 7,
  57992. [
  57993. 0,
  57994. 0
  57995. ]
  57996. ]
  57997. ]
  57998. ]
  57999. ],
  58000. [
  58001. [
  58002. 14,
  58003. cr.plugins_.Arr.prototype.acts.SetX,
  58004. null,
  58005. 100076977271996,
  58006. false
  58007. ,[
  58008. [
  58009. 0,
  58010. [
  58011. 23,
  58012. "currentLevel"
  58013. ]
  58014. ]
  58015. , [
  58016. 7,
  58017. [
  58018. 0,
  58019. 2
  58020. ]
  58021. ]
  58022. ]
  58023. ]
  58024. ]
  58025. ]
  58026. , [
  58027. 0,
  58028. null,
  58029. false,
  58030. null,
  58031. 2179640444031156,
  58032. [
  58033. [
  58034. -1,
  58035. cr.system_object.prototype.cnds.ForEach,
  58036. null,
  58037. 0,
  58038. true,
  58039. false,
  58040. false,
  58041. 6499794766885315,
  58042. false
  58043. ,[
  58044. [
  58045. 4,
  58046. 12
  58047. ]
  58048. ]
  58049. ]
  58050. ],
  58051. [
  58052. ]
  58053. ,[
  58054. [
  58055. 0,
  58056. null,
  58057. false,
  58058. null,
  58059. 8559947353176489,
  58060. [
  58061. [
  58062. 14,
  58063. cr.plugins_.Arr.prototype.cnds.CompareX,
  58064. null,
  58065. 0,
  58066. false,
  58067. false,
  58068. false,
  58069. 1618036470640494,
  58070. false
  58071. ,[
  58072. [
  58073. 0,
  58074. [
  58075. 21,
  58076. 12,
  58077. false,
  58078. null
  58079. ,0
  58080. ]
  58081. ]
  58082. , [
  58083. 8,
  58084. 0
  58085. ]
  58086. , [
  58087. 7,
  58088. [
  58089. 0,
  58090. 0
  58091. ]
  58092. ]
  58093. ]
  58094. ]
  58095. ],
  58096. [
  58097. [
  58098. 12,
  58099. cr.plugins_.Sprite.prototype.acts.SetAnimFrame,
  58100. null,
  58101. 2987071436818113,
  58102. false
  58103. ,[
  58104. [
  58105. 0,
  58106. [
  58107. 0,
  58108. 1
  58109. ]
  58110. ]
  58111. ]
  58112. ]
  58113. ]
  58114. ]
  58115. , [
  58116. 0,
  58117. null,
  58118. false,
  58119. null,
  58120. 8351226443659134,
  58121. [
  58122. [
  58123. 14,
  58124. cr.plugins_.Arr.prototype.cnds.CompareX,
  58125. null,
  58126. 0,
  58127. false,
  58128. false,
  58129. false,
  58130. 5633018969455614,
  58131. false
  58132. ,[
  58133. [
  58134. 0,
  58135. [
  58136. 21,
  58137. 12,
  58138. false,
  58139. null
  58140. ,0
  58141. ]
  58142. ]
  58143. , [
  58144. 8,
  58145. 0
  58146. ]
  58147. , [
  58148. 7,
  58149. [
  58150. 0,
  58151. 1
  58152. ]
  58153. ]
  58154. ]
  58155. ]
  58156. ],
  58157. [
  58158. [
  58159. 12,
  58160. cr.plugins_.Sprite.prototype.acts.SetAnimFrame,
  58161. null,
  58162. 5340654629347036,
  58163. false
  58164. ,[
  58165. [
  58166. 0,
  58167. [
  58168. 0,
  58169. 0
  58170. ]
  58171. ]
  58172. ]
  58173. ]
  58174. ]
  58175. ]
  58176. , [
  58177. 0,
  58178. null,
  58179. false,
  58180. null,
  58181. 9652251878730896,
  58182. [
  58183. [
  58184. 14,
  58185. cr.plugins_.Arr.prototype.cnds.CompareX,
  58186. null,
  58187. 0,
  58188. false,
  58189. false,
  58190. false,
  58191. 3047496447637519,
  58192. false
  58193. ,[
  58194. [
  58195. 0,
  58196. [
  58197. 21,
  58198. 12,
  58199. false,
  58200. null
  58201. ,0
  58202. ]
  58203. ]
  58204. , [
  58205. 8,
  58206. 0
  58207. ]
  58208. , [
  58209. 7,
  58210. [
  58211. 0,
  58212. 2
  58213. ]
  58214. ]
  58215. ]
  58216. ]
  58217. ],
  58218. [
  58219. [
  58220. 12,
  58221. cr.plugins_.Sprite.prototype.acts.SetAnimFrame,
  58222. null,
  58223. 705788475423426,
  58224. false
  58225. ,[
  58226. [
  58227. 0,
  58228. [
  58229. 0,
  58230. 2
  58231. ]
  58232. ]
  58233. ]
  58234. ]
  58235. ]
  58236. ]
  58237. , [
  58238. 0,
  58239. null,
  58240. false,
  58241. null,
  58242. 9510315228106781,
  58243. [
  58244. [
  58245. 14,
  58246. cr.plugins_.Arr.prototype.cnds.CompareX,
  58247. null,
  58248. 0,
  58249. false,
  58250. false,
  58251. false,
  58252. 9617154910709708,
  58253. false
  58254. ,[
  58255. [
  58256. 0,
  58257. [
  58258. 21,
  58259. 12,
  58260. false,
  58261. null
  58262. ,0
  58263. ]
  58264. ]
  58265. , [
  58266. 8,
  58267. 0
  58268. ]
  58269. , [
  58270. 7,
  58271. [
  58272. 0,
  58273. 3
  58274. ]
  58275. ]
  58276. ]
  58277. ]
  58278. ],
  58279. [
  58280. [
  58281. 12,
  58282. cr.plugins_.Sprite.prototype.acts.SetAnim,
  58283. null,
  58284. 7856424008316315,
  58285. false
  58286. ,[
  58287. [
  58288. 1,
  58289. [
  58290. 2,
  58291. "1star"
  58292. ]
  58293. ]
  58294. , [
  58295. 3,
  58296. 1
  58297. ]
  58298. ]
  58299. ]
  58300. ]
  58301. ]
  58302. , [
  58303. 0,
  58304. null,
  58305. false,
  58306. null,
  58307. 9421378039809894,
  58308. [
  58309. [
  58310. 14,
  58311. cr.plugins_.Arr.prototype.cnds.CompareX,
  58312. null,
  58313. 0,
  58314. false,
  58315. false,
  58316. false,
  58317. 6879846151875378,
  58318. false
  58319. ,[
  58320. [
  58321. 0,
  58322. [
  58323. 21,
  58324. 12,
  58325. false,
  58326. null
  58327. ,0
  58328. ]
  58329. ]
  58330. , [
  58331. 8,
  58332. 0
  58333. ]
  58334. , [
  58335. 7,
  58336. [
  58337. 0,
  58338. 4
  58339. ]
  58340. ]
  58341. ]
  58342. ]
  58343. ],
  58344. [
  58345. [
  58346. 12,
  58347. cr.plugins_.Sprite.prototype.acts.SetAnim,
  58348. null,
  58349. 5457807214141602,
  58350. false
  58351. ,[
  58352. [
  58353. 1,
  58354. [
  58355. 2,
  58356. "2star"
  58357. ]
  58358. ]
  58359. , [
  58360. 3,
  58361. 1
  58362. ]
  58363. ]
  58364. ]
  58365. ]
  58366. ]
  58367. , [
  58368. 0,
  58369. null,
  58370. false,
  58371. null,
  58372. 9063556420913564,
  58373. [
  58374. [
  58375. 14,
  58376. cr.plugins_.Arr.prototype.cnds.CompareX,
  58377. null,
  58378. 0,
  58379. false,
  58380. false,
  58381. false,
  58382. 4146437212286112,
  58383. false
  58384. ,[
  58385. [
  58386. 0,
  58387. [
  58388. 21,
  58389. 12,
  58390. false,
  58391. null
  58392. ,0
  58393. ]
  58394. ]
  58395. , [
  58396. 8,
  58397. 0
  58398. ]
  58399. , [
  58400. 7,
  58401. [
  58402. 0,
  58403. 5
  58404. ]
  58405. ]
  58406. ]
  58407. ]
  58408. ],
  58409. [
  58410. [
  58411. 12,
  58412. cr.plugins_.Sprite.prototype.acts.SetAnim,
  58413. null,
  58414. 7329889470218405,
  58415. false
  58416. ,[
  58417. [
  58418. 1,
  58419. [
  58420. 2,
  58421. "3star"
  58422. ]
  58423. ]
  58424. , [
  58425. 3,
  58426. 1
  58427. ]
  58428. ]
  58429. ]
  58430. ]
  58431. ]
  58432. ]
  58433. ]
  58434. ]
  58435. ]
  58436. , [
  58437. 0,
  58438. null,
  58439. false,
  58440. null,
  58441. 2135875472858412,
  58442. [
  58443. [
  58444. 8,
  58445. cr.plugins_.Touch.prototype.cnds.OnTouchObject,
  58446. null,
  58447. 1,
  58448. false,
  58449. false,
  58450. false,
  58451. 7843660074916645,
  58452. false
  58453. ,[
  58454. [
  58455. 4,
  58456. 12
  58457. ]
  58458. ]
  58459. ]
  58460. , [
  58461. 14,
  58462. cr.plugins_.Arr.prototype.cnds.CompareX,
  58463. null,
  58464. 0,
  58465. false,
  58466. false,
  58467. false,
  58468. 9119878541977444,
  58469. false
  58470. ,[
  58471. [
  58472. 0,
  58473. [
  58474. 21,
  58475. 12,
  58476. false,
  58477. null
  58478. ,0
  58479. ]
  58480. ]
  58481. , [
  58482. 8,
  58483. 4
  58484. ]
  58485. , [
  58486. 7,
  58487. [
  58488. 0,
  58489. 0
  58490. ]
  58491. ]
  58492. ]
  58493. ]
  58494. ],
  58495. [
  58496. [
  58497. -1,
  58498. cr.system_object.prototype.acts.GoToLayoutByName,
  58499. null,
  58500. 2619277216613189,
  58501. false
  58502. ,[
  58503. [
  58504. 1,
  58505. [
  58506. 10,
  58507. [
  58508. 2,
  58509. "level"
  58510. ]
  58511. ,[
  58512. 21,
  58513. 12,
  58514. false,
  58515. null
  58516. ,0
  58517. ]
  58518. ]
  58519. ]
  58520. ]
  58521. ]
  58522. , [
  58523. -1,
  58524. cr.system_object.prototype.acts.SetVar,
  58525. null,
  58526. 5162401627640953,
  58527. false
  58528. ,[
  58529. [
  58530. 11,
  58531. "currentLevel"
  58532. ]
  58533. , [
  58534. 7,
  58535. [
  58536. 21,
  58537. 12,
  58538. false,
  58539. null
  58540. ,0
  58541. ]
  58542. ]
  58543. ]
  58544. ]
  58545. ]
  58546. ]
  58547. ]
  58548. ]
  58549. , [
  58550. "Splash",
  58551. [
  58552. [
  58553. 0,
  58554. null,
  58555. false,
  58556. null,
  58557. 8128097849164676,
  58558. [
  58559. [
  58560. -1,
  58561. cr.system_object.prototype.cnds.OnLayoutStart,
  58562. null,
  58563. 1,
  58564. false,
  58565. false,
  58566. false,
  58567. 9140242570125596,
  58568. false
  58569. ]
  58570. ],
  58571. [
  58572. ]
  58573. ,[
  58574. [
  58575. 0,
  58576. null,
  58577. false,
  58578. null,
  58579. 3425475073615747,
  58580. [
  58581. [
  58582. -1,
  58583. cr.system_object.prototype.cnds.TriggerOnce,
  58584. null,
  58585. 0,
  58586. false,
  58587. false,
  58588. false,
  58589. 3786616603548873,
  58590. false
  58591. ]
  58592. ],
  58593. [
  58594. [
  58595. -1,
  58596. cr.system_object.prototype.acts.CreateObject,
  58597. null,
  58598. 4784064840406439,
  58599. false
  58600. ,[
  58601. [
  58602. 4,
  58603. 11
  58604. ]
  58605. , [
  58606. 5,
  58607. [
  58608. 0,
  58609. 0
  58610. ]
  58611. ]
  58612. , [
  58613. 0,
  58614. [
  58615. 0,
  58616. 192
  58617. ]
  58618. ]
  58619. , [
  58620. 0,
  58621. [
  58622. 0,
  58623. 300
  58624. ]
  58625. ]
  58626. ]
  58627. ]
  58628. , [
  58629. -1,
  58630. cr.system_object.prototype.acts.Wait,
  58631. null,
  58632. 1887515411466389,
  58633. false
  58634. ,[
  58635. [
  58636. 0,
  58637. [
  58638. 0,
  58639. 2
  58640. ]
  58641. ]
  58642. ]
  58643. ]
  58644. , [
  58645. -1,
  58646. cr.system_object.prototype.acts.GoToLayout,
  58647. null,
  58648. 4171811604452128,
  58649. false
  58650. ,[
  58651. [
  58652. 6,
  58653. "menu"
  58654. ]
  58655. ]
  58656. ]
  58657. ]
  58658. ]
  58659. ]
  58660. ]
  58661. , [
  58662. 0,
  58663. null,
  58664. false,
  58665. null,
  58666. 254243853346505,
  58667. [
  58668. [
  58669. 8,
  58670. cr.plugins_.Touch.prototype.cnds.OnTouchStart,
  58671. null,
  58672. 1,
  58673. false,
  58674. false,
  58675. false,
  58676. 3851515598960084,
  58677. false
  58678. ]
  58679. ],
  58680. [
  58681. [
  58682. -1,
  58683. cr.system_object.prototype.acts.GoToLayout,
  58684. null,
  58685. 5768863553506361,
  58686. false
  58687. ,[
  58688. [
  58689. 6,
  58690. "menu"
  58691. ]
  58692. ]
  58693. ]
  58694. ]
  58695. ]
  58696. ]
  58697. ]
  58698. , [
  58699. "Loading",
  58700. [
  58701. [
  58702. 0,
  58703. null,
  58704. false,
  58705. null,
  58706. 9758285068318356,
  58707. [
  58708. [
  58709. -1,
  58710. cr.system_object.prototype.cnds.OnLayoutStart,
  58711. null,
  58712. 1,
  58713. false,
  58714. false,
  58715. false,
  58716. 9126960228785638,
  58717. false
  58718. ]
  58719. ],
  58720. [
  58721. ]
  58722. ,[
  58723. [
  58724. 0,
  58725. null,
  58726. false,
  58727. null,
  58728. 2059170374988399,
  58729. [
  58730. [
  58731. -1,
  58732. cr.system_object.prototype.cnds.TriggerOnce,
  58733. null,
  58734. 0,
  58735. false,
  58736. false,
  58737. false,
  58738. 1721234934427994,
  58739. false
  58740. ]
  58741. ],
  58742. [
  58743. [
  58744. -1,
  58745. cr.system_object.prototype.acts.CreateObject,
  58746. null,
  58747. 5215254738137696,
  58748. false
  58749. ,[
  58750. [
  58751. 4,
  58752. 11
  58753. ]
  58754. , [
  58755. 5,
  58756. [
  58757. 0,
  58758. 0
  58759. ]
  58760. ]
  58761. , [
  58762. 0,
  58763. [
  58764. 0,
  58765. 192
  58766. ]
  58767. ]
  58768. , [
  58769. 0,
  58770. [
  58771. 0,
  58772. 300
  58773. ]
  58774. ]
  58775. ]
  58776. ]
  58777. ]
  58778. ]
  58779. ]
  58780. ]
  58781. , [
  58782. 0,
  58783. null,
  58784. false,
  58785. null,
  58786. 6862054964407212,
  58787. [
  58788. [
  58789. -1,
  58790. cr.system_object.prototype.cnds.EveryTick,
  58791. null,
  58792. 0,
  58793. false,
  58794. false,
  58795. false,
  58796. 6046639193673458,
  58797. false
  58798. ]
  58799. ],
  58800. [
  58801. [
  58802. 15,
  58803. cr.plugins_.TiledBg.prototype.acts.SetWidth,
  58804. null,
  58805. 4958959897573603,
  58806. false
  58807. ,[
  58808. [
  58809. 0,
  58810. [
  58811. 6,
  58812. [
  58813. 19,
  58814. cr.system_object.prototype.exps.loadingprogress
  58815. ]
  58816. ,[
  58817. 19,
  58818. cr.system_object.prototype.exps.layoutwidth
  58819. ]
  58820. ]
  58821. ]
  58822. ]
  58823. ]
  58824. ]
  58825. ]
  58826. , [
  58827. 0,
  58828. null,
  58829. false,
  58830. null,
  58831. 6664285362601632,
  58832. [
  58833. [
  58834. -1,
  58835. cr.system_object.prototype.cnds.Compare,
  58836. null,
  58837. 0,
  58838. false,
  58839. false,
  58840. false,
  58841. 8808189076581826,
  58842. false
  58843. ,[
  58844. [
  58845. 7,
  58846. [
  58847. 19,
  58848. cr.system_object.prototype.exps.loadingprogress
  58849. ]
  58850. ]
  58851. , [
  58852. 8,
  58853. 0
  58854. ]
  58855. , [
  58856. 7,
  58857. [
  58858. 0,
  58859. 1
  58860. ]
  58861. ]
  58862. ]
  58863. ]
  58864. ],
  58865. [
  58866. [
  58867. -1,
  58868. cr.system_object.prototype.acts.GoToLayout,
  58869. null,
  58870. 6864498588123869,
  58871. false
  58872. ,[
  58873. [
  58874. 6,
  58875. "Splash"
  58876. ]
  58877. ]
  58878. ]
  58879. ]
  58880. ]
  58881. ]
  58882. ]
  58883. ],
  58884. "media/",
  58885. false,
  58886. 384,
  58887. 600,
  58888. 4,
  58889. true,
  58890. true,
  58891. true,
  58892. "1.0.0.0",
  58893. true,
  58894. true,
  58895. 3,
  58896. 1,
  58897. 1329,
  58898. false,
  58899. true,
  58900. [
  58901. ]
  58902. ];};