RIVEÄÅÆËÔàáìóŒ�’—¨½¾ÃÄÏÐø†îòó€�‚ƒ„…†‡šª«­±¶¿ÇÊËÌÕÖßàåæçèéêëìíîïðñòøü€ŠŒ��”–¥§ËÌÍÎÏôõöÐ�þ¿@† ŠˆªªÂ…@€" *‚jÔ�Ë JetBrainsMonojÔìÛGDEFÜ’¦*GPOShéšG¨@#–GSUB(ÛɈËØbOS/25 „˜`cmapZ$XÚ4Bjcvt 'Xn„¨fpgmb/_  gasp¦ glyfl!}ŠlÉXUXWXPXUXUXUXX<X?XX2X\X[X<X<XIXdXTXXFX\XTXZXNXZX XdXdXdX6X6XX2X]X‚X2XdXUX]XXXiX\X2XHXZXPXXX^X\XKX7X#X.X(X6X2X Xÿ�Xÿ�Xÿ�Xÿ°XÿƒXÿ°XiX#X\X]X]XUX\X<XTXKXiX\XXX7XgX2X]X6XUXTXX^XZXUX/XZX6X2X6X6X7X7X7XZXZXZXTX6XUXKX\X\X0XXdXX/XX.XKXJXKXUXZXJXKXPXXKXdX2X_XJXKXJXKXAX2XJX.XXXXFX6XKXKXAXFXAXAXKXAXKXKX2XXKXFXKXAX-XKX7XPX-XXX-XFXPXZXLXFXFXKX@XRXBX@XPXXXUXIXBXUX‰X–X“X‹X�X�X†X”X‡X‹X‰X–X“X‹X�X�X†X”X‡X‹X‰X–X“X‹X�X�X†X”X‡X‹X‰X–X“X‹X�X�X†X”X‡X‹XšX�X„XšX�X„XšX�X„XšX�X„X‡X‡X‡X‡XŠXŠXŠXŠXXXXX‰X‰X‰X‘XLXÚXÒXÙXÍX<XáXáX‚XsXÚX´X$XÍX–X}XiX‡X#XÚXÿöXKXKX XÙÿÿyX¹XsXKX_XÍX–XKX_XnX–XiX“XÍXÍX‡X–X–XxX XsXŒXŒXPXXŒX<XÜXiXiXiXÒXÜXÒXiXX%X“X“XX�XùXþ4XûÜXùMXû¦Xþ\XýýXû¥XýýXû¥XþXþ XùXùXü XþCXþ4Xþ»XþŽXþ>XþÔXü�XüqXþ‚Xþ\XþÑXüÉXüDXþ³Xü,XþRXþ�Xþ�XþÅXü½XþÅXühXýøXû¥Xþ�Xþ�Xþ\XûúXþRXûœXýåXýÌXýËXýËXýËXýËXýËXýËXýéXû‘Xù9XýËXýËXûsXýóXû›XþXû XþXþ>XûúXüXþfXþfXü"XýäXþ\XüX}XdX XsX.XiXÚXÍXXXXXX]XXX+XHXZXXX2XXKX-X#XXXHXFXXžXXÚXX›XFX(XÿXXŸXÿXX}XŒX#XÿöX#X¥XæXxX—XUX-XXPX2XPX#Xÿ°X XÿX-XÿXXÿXÿXÿXAXÿöXAXXXXFXÿöX+X+X-X+X+XFX#XX-XUXFX#X#X-XUXUXUXUXUX#X#XXAXŒXiXdXUXUXUXUXUXUXAXFXdXFXPX#XÿöX<X<X+X+XX2X(X7XXZX]X›XÿXÿXÿXÿX-X-XXÿûXxX X7X7X7XUXÙX#XXÿ°XsXÿXsXXÿXdXdXXUX´XFX<X<XXXXX#X#XXX´XUX#XPX#X7XXXXCXXAX2XÿöXX<XÿöXÿöXÿöXÿöXÿöXÿöXÿöXÿöX(X/XX/X(X<X X<Xÿ°X(X X X X X X XnX XnXX X XÿX XÿöXXÿöXXÿ°XXXX XÿöX XX X XÿØXÿØXÿ°XXXXXXXXXXXXXXXXXX,X XX,XXXXXÿöX,XXX<XXXÿöXÿöXÿöXÿöXÿöXÿöXÿöXÿöXÿöX´XÿöXÿöXÿöX<XXX–X–XXXXXXÿöXXÿöXÿöXÿöXXÿöXÿöXXÿöXXÿöX–X–X–XŒX–X–X–XŒXÿìXÿìX–XÿìXÿìXÿìX–X–XÿìXÿìX–XÿìXÿìX–XÿìXÿìXÿìXÈXÈXÿìXÿìXÿìXÿìXúXÈXÿìXÿìXÿìXúXKXÈXÈXÿìXÿìXÈXÿìXÿìXÿìXXÈXúX%XÈXÈXÿìXÿìXÈXÈXÈXÿìXÿìXÈXÿìXÿìXÿìXÿìXÿìXÿìXÿìXÿìXÿìXúXÿìXúXÿìXÿìXÿìXFXúXúXÿìXÿìXúXÿìXÿìXÿìXXúXúX%XúXúXÈXÿìXÿìXúXúXÿìXÿìXúXÿìXÿìXÿìXÿìXÿìXÿìXÿìXÿìXÿìXÿìX–XÿìXÿìXÿìXÿìXÈXÈXÿìXÿìXÿìXÿìXÈXúXÿìXÿìXúXÿìXÿìX–XÿìXÿìXÈXÿìXÿìXúXÿìXÿìXúXXDXDX<XÿöXÿöXÿöXÿöXÿöXÿöXŒX2X2X2X-X2XÿöX<XPXXXXPXUX7X7X}XŒXXÿìX7X7XXXXXXXXXXXXXXXXXXXXXXXŒX^XXŒX<XªX}XAXFX<XPXXXXXXXÿöXÿöXX%XBXX'XX-X-XXAXMX-X-XX–XÒXiXÿXÿXPXFXPXX<X-X(XX X X#XÃXiXiXÃX-X-X-X-X-X-XÿöX4X4X4X4X4X4X>X>X X-XÿöXQXXÿ[XÿÉXÿ©X XdXdXXÿìXRX-X-X-XÿìXÿìXÿìXõXX#X-XÿöX%X%X%X%X%X%X%XZXIX-XX7X´XŒXþXþXûÈXýÚXû‚XýßXýÕXýÆXûsXýÕXþ§XûÒXþ»Xþ»XþãXü¤XüÇXúÉXü¤XüÖXþ§XûÒXþ»XþXþ XûÿXýÚXþ*Xû Xû XýøXû¥Xû¥XýýXû¥Xû¥Xû¡Xþ Xû³XþaXþ‰XþÏXû³Xþ*Xû³Xû³XümXýóXû›Xû›Xû›Xû›Xþ‰XûÍXùCXýîXû´Xþ˜XüwXú~XûæXþXû¾XùCXýîXû´XþÏXû›Xû›XùCXû›Xû›Xþ4XþGXû›Xû›XûõXû›XýóXû´Xû›Xþ*XûõXþXýîXýîXþWXû–Xþ9XýøXû XŒXAX¥XÒX¥X7XŒX¥þ%þ�þJþ�þ;ÿ`þþþ4þ\þ4þ4þzýðþzÿþ�þ\þfþuþaýŠýËþX}XåX¢XèX“XwXwXŒX´XŒXŒXÍX¹þfþ%þ�þJþ�þ;þþþ4þ\þ4þ4þzýðþ4þzÿþ�þ%þfþuþaþ4þ4X}XåX¢XèX“XwXwXŒX´XŒXŒXÒXáX}þ4þ*þ*þ*þ4þ þ þ þ þ/þ/þ/þ/þ þ þ þ XZXiX2XÿØXXXXUXUX$$  /9~1�’›¡°ÎÐÒÔÖØÚÜçëõÿ37Yº¼ÇÉÝó÷ #(8u~ŠŒ�¡©°ÉÏ× #:CO\_“›£±·»Ùßéõ ê…žù     " $ & 0 4 : ? F p y z | ‰ ¬ ® ´ ½ ¿!! !!!!!"!$!.!@!‹!™!ž! !£!§!ª!­!¾!É!Ô!Û!ß!å!è!ê" """""%"+"9"<">"C"E"I"K"M"T"W"e"s"|"‰"™"¥"´"¸"½"Ä"Æ"Ê"Î"Ð"â"ñ## ###&#(#+#z#‹#•#­#Î#þ$!$$%”%Ÿ%¡%«%Ì%Ï%Õ%æ%ë%ï%ö&m&o&‡&¡''''6'q'”'ž'Æ'Ü'ë'÷))J)ˆ**+Xà¢à³þbþÿÿ[ÿ]ÿýÿÿ 0: 4�’› ¯ÍÐÒÔÖØÚÜæêôü27Y¹¼ÆÉØó÷#%6t~„ŒŽ‘£ª±ÊÕ$;DQ^�𢮶ºØÜäô ꀞ       $ & 0 2 9 < D p t z | € « ® ´ ½ ¿!! !!!!!"!$!.!@!Š!�!�! !¢!¥!©!­!¾!É!Ð!Û!Þ!å!ç!ê""""""#"'"4"<">"C"E"G"K"M"T"W"_"j"z"‚"Ž"›"´"¸"»"Â"Æ"È"Î"Ð"â"î#####$#(#+#6#‰#•#›#Î#û$$#%%•% %ª%²%Î%Ô%æ%ç%ï%ö&m&o&‡& ''''6'n'”'œ'Å'Ü'æ'õ))J)‡**+Xà à°þbþÿÿ[ÿ]ÿýÿÿ³¤6ÿzÿ3ÿSÿ€ÿ„ÿÿ~ÿ}þ×þš¨¿� fd\UTGî=þáþÀþ¿þÄý¼ýàø>áéã»ã²ãKãFã!ããä ã.â’â’ãÁãjâdãããã ãá ášä®á–á”ä˜á•ä–ãâÞâÝâÜâÜâÏâÉâ¿â³âŸâ¨ãøáÈâáÿâá¯á�á’âá›á�áõáTáDá“á áá0âÑâ½â¸áðâßß(ß ÞéÞÝÞåÞÍÞÉßóßòß$ß Þ›ÞšÞ™Þ{ÜÿÜøÜÜ¢Û-Ú¤ÙÎÙþÙúÚ™&$&ØÂîíù¦ÂJløúüþ  ",0F\†œ²´º¼¾ÄÆÈÊÐÚÚâŠ˜š Š€‚”ˆŽŠ¢ª¬®°¬¸ÊÎÜò ¤¦ÈÎ4hPRR¾.j:Å8µkCD4*W)=+,0´!%89@COQSYZ`z|}�‰Ž¡¢§¨±G>H#\‚½Ö×Ýáôõüÿ "=?@DLQijopyE¾F"¿/ÃËÄÍ¿·€¸Æe!X¹Š»ƒ0¶2‹Çf"!#1 2&)/JDFG"_kacxiv”�‘’©{JξÆÓÌÒÔÚîâåëÞ!.#&;,9\RUVq>sÐ¿ÑØÛ ÜÙ#ß$à4ð'ã0ì5ñ(ä=ù;÷?û>úBþAýN L EM HPRTVUWX[]\^ t7b$s6y<~A€CB‚E…H„GƒFŒO‹NŠM h�e�SŸgœdžf¤lªr«²z´|³{Kˆ6m0–^ Å<øu8:öÕw:†I�P¯wge‡�ˆŒ‰„jknrspihtqlo°²iºjklno�pq–—˜Ž“�’”‘•rš›™ÐöÌîíðñòëìóÖàçÈÉÊËÎÏÑÒÓÔÕáâäãåæéêèïôõ  %&(')*-.,389:21456/07$+Í÷;ø<ù=ú>û?ü@ýAþBÿCDEFGH¦n£k¥mÍÏ Ç ÉÊË ÈÀÂÃÄÁ1í3ï7ò*æ,è-é.ê+çK Ij-l/d'f)g*h+e(n1p3q4r5o2“[•]—_™ašb›c˜`­u¬t®v°xab]c_`^dÀÂ3¼½i89<? 56­Ãÿþwqsuyzxrtv{}Œ‰Š‹�èçeÖ/êb%+ëâ ã] å,Ø-ùMÔ.ÜÞ1cÑ@>ßé  ?çZûúÒ  ÷ì<\=[_ABýUWVXOPpmnloikjSRTQKa`ghÛÓóGäøfááÊ‘ôORPSÎÍËÌ’æäe �Œ‹‘‡mkŸh—†“�‚�’–iyrŽŠx©˜¨q™‰§z�›su€n¥šlˆ¦p¡jw�£|otª¢ž”•v¤}œƒg{~„fàÕÇ423756öôõJHIòñðÙFEDïðòóîúû×ØÚ²Å³ßëÝÉø÷ÏÒÔÓÑìýÙÈÖüÛÜÞõùÐÆí.;451 2 -üö,úô:UO9SM>aN÷^ýT=`Lõ]ûR+@ùóC8AQKD<B_Jø\ F?þPE()èìòçñæXIëWHêd[ïcZîÿðåVGébYí"!#$'&%/63*  07 ¢š›œ�žŸ ¡ª©¨§¦¥¤«·¸¹£ÑÕÝáÒÖÞâÙÛÓ×ßãÔØàäÚÜÄÅÆÁÇ»ÀºLNKMQT¶¹´·µ¸ 3XF À ¾!!.""j##:$$Å%%8&&µ''k()C**4++,,*--W..)//=09Ô:;+<<==>>??0@@´AABCDD!EE%FG8HH@IICJJOKKQLLSMNYOO`PPzQR|SS�TT‰UUŽVW¡XY§ZZ±[[G\\>]]H^^#__\``‚aa½bcÖddÝeeáfgôhhüiiÿjj kkllmnoo"pp=qr?ssDttLuuQvwixyozzy{{E||¾}}F~~"  ¿¡¡/¢¢ã£ˤ¤Ä¥¥ͦ¦¿§§·¨¨€©©¸ªªÆ««e¬¬!­­X®®¹¯¯а°»±±²³´´ƒµµ0¶¶¶··2¸¸‹¹¹ººÇ»»f¼¼"½½!¾¾#¿¿1ÀÀÁÁ ÃÃÄÄÅÅÆÆÇÇÈÈ2ÉÉ&ÊÊ)ËË/ÌÌJÍÍDÎÏFÐÐ"ÑÑ_ÒÒkÓÓaÔÔcÕÕxÖÖi×רØvÙÙ”ÚÚ�ÛÜ‘ÝÝ©ÞÞ{ßßJààÎáá¾ââÆããÓääÌååÒææÔççÚèèîééâêêåëëëììííîïððÞññ!òò.óó#ôô&õõ;öö,÷÷øø9ùù\úúRûüUýýqþþ>ÿÿsÐ¿ÑØ  Û    Ü    Ù#ß$à4ð'ã0ì5ñ(ä=ù;÷  ?!!û"">##ú$$B%%þ&&A''ý((N)) **L++ ,,E--..M// 00H1144P5566R7899T::;;V<<==U>>??W@@AAXBBCC[DDEE]FFGG\HHIIJJ^KK LLtMM7NNbOO$PPsQQ6RRySS<TT~UUAVV€WWCXXYYBZZ‚[[E\\…]]H^^„__G``ƒaaFbbŒccOdd‹eeNffŠggMhh iihjj�kkell�mmSnnŸoogppœqqdrržssftt¤uulvvªwwrxx«yy²zzz{{´|||}}³~~{K��ˆ��6’’È››  m¡¡0¯¯–°°^ÍÍ ÎÎÅÐÐÒÒ%ÔÔTÖÖZØØWÚÚXÜÜYææ<ççøêêuëë8ôô:õõöüüýýÕþþwÿÿ:†I�P22¯33w77YYó¹¹gººe¼¼dÆÇ…ÉÉfØØ‡ÙÙ�ÚÚˆÛÛŒÜ܉ÝÝ„óó÷÷jnrpih  t  q  l  ouvw##x%(y68}tub~~»„„°……²††i‡‡ºˆŠjŒŒmŽ�n���‘¡Q£©bª«p¬®–¯¯Ž°°“±ÉuÊÊ�ËË’ÌÌ”ÍÍ‘ÎΕÏÏrÕÖš××™ÐöÌîíð  ë  ó  ÖàçÈÎÑ#×$%á&&ä''ã()å*+é,,è--ï./ô03 456:;CDE%FF(GG'HI)JK-LL,MM3NO8QQRR:SSTT2UU1VX4YZ/[[7\\^^$__+��Í‘‘’’÷““;ššø››<¢¢ù££=®®ú¯¯>°°û±±?¶¶ü··@ººý»»AØØþÙÙBÜÜÿÝÝCÞÞßßDääååEææççFèèééGôôõõH ê ê(€€¦��n‚‚£ƒƒk„„¥……mžž‡  ¡¡Í¢¢££Ï¤¤ ¥¥Ç¦¦ §§É¨¨©©Êªª««Ë¬¬ ­­È®®¯¯À°°±±Â²²³³Ã´´µµÄ¶¶··Á¸¸1¹¹íºº3»»ï¼¼7½½ò¾¾*¿¿æÀÀ,ÁÁèÂÂ-ÃÃéÄÄ.ÅÅêÆÆ+ÇÇçÈÈKÉÉ ÊÊIËËÌÌjÍÍ-ÎÎlÏÏ/ÐÐdÑÑ'ÒÒfÓÓ)ÔÔgÕÕ*ÖÖh××+ØØeÙÙ(ÚÚnÛÛ1ÜÜpÝÝ3ÞÞqßß4ààráá5ââoãã2ää“åå[ææ•çç]èè—éé_êê™ëëaììšííbîî›ïïcðð˜ññ`òò­óóuôô¬õõtöö®÷÷vøø°ùùx  ¼ ½  [  Y  7  a  ]  c  _  ^  d À ! ! " "3 $ $; & &- 0 09 2 3¼ 4 4i 9 :g < =8 > >< ? ?? D D E F5 p p t y z z; | |æ € ‰ä « ¬Æ ® ®Ì ´ ´É ½ ½Ê ¿ ¿Â!!¢! ! §!!Á!!­!!Ã!!¯!!±!"!"º!$!$¹!.!.Ä!@!@^!Š!Šÿ!‹!‹þ!�!�w!‘!‘q!’!’s!“!“u!”!•y!–!–x!—!—r!˜!˜t!™!™v!�!�{!ž!ž}! ! ~!¢!£!¥!§�!©!ª…!­!­|!¾!¾‡!É!Ɉ!Ð!ÐŒ!Ñ!Ó‰!Ô!Ô�!Û!ÛŽ!Þ!Þè!ß!ßç!å!å„!ç!è�!ê!êâ""e""Ö""/""ê""b""%""+""ë""â" "  " " ã" " ]" "  ""å"",""Ø""-""""ù""Ý""M""Ô"".""$"#"#Ü"$"$Þ"%"%1"'"+&"4"4c"5"5Ñ"6"6@"7"7>"8"8ß"9"9é"<"<N">">í"C"CÐ"E"E×"G"G"H"H "I"I "K"Kd"M"Mè"T"TÕ"W"WL"_"_?"`"`"a"aç"b"b"c"cZ"d"d"e"e"j"jû"k"kú"l"lÒ"m"m "n"n"o"o "p"p"q"q"r"r÷"s"sì"z"z<"{"{\"|"|="‚"‚["ƒ"ƒ_"„"…"†"‡A"ˆ"‰"Ž"Žý"�"�U"�"�W"‘"‘V"’"’X"“"”O"•"•p"–"—m"˜"˜l"™"™o"›"›i"œ"œk"�"�j"ž"žS"Ÿ"ŸR" " T"¡"¡Q"¢"¢K"£"£a"¤"¤`"¥"¥g"´"´"¸"¸ü"»"»h"¼"¼"½"½"Â"Ã"Ä"ÄÛ"Æ"ÆY"È"ÈÓ"É"Éó"Ê"ÊG"Î"ÎÚ"Ð"Ðà"â"â"î"îä"ï"ïø"ð"ðf"ñ"ñá##á##Ê##‘##ô##O# # R# # P# # S##é##Î##Í##Ë#$#$’#%#%æ#&#&ä#(#(å#+#+ã#6#6e#7#7 #8#8�#9#9Œ#:#:‹#;#;‘#<#<‡#=#=m#>#>k#?#?Ÿ#@#@h#A#A—#B#B†#C#C“#D#D�#E#E‚#F#F�#G#G’#H#H–#I#Ii#J#Jy#K#Kr#L#LŽ#M#MŠ#N#Nx#O#O©#P#P˜#Q#Q¨#R#Rq#S#S™#T#T‰#U#U§#V#Vz#W#W�#X#X›#Y#Ys#Z#Zu#[#[€#\#\n#]#]¥#^#^š#_#_l#`#`ˆ#a#a¦#b#bp#c#c¡#d#d#e#ej#f#fw#g#g�#h#h£#i#i|#j#jo#k#kt#l#lª#m#m¢#n#nž#o#p”#q#qv#r#r¤#s#s}#t#tœ#u#uƒ#v#vg#w#w{#x#x~#y#y„#z#zf#‰#‰à#Š#ŠÕ#‹#‹Ç#•#•…#›#›4#œ#�2#ž#ž7#Ÿ# 5#¡#¡ö#¢#£ô#¤#¤J#¥#¦H#§#§ò#¨#¨ñ#©#©ð#ª#ªÙ#«#«F#¬#¬E#­#­D#Î#Îê#û#üï#ý#þò$$î$$ú$$×$$Ú$$²$$Å$$³$ $ ß$ $ ë$ $ $ $ Ý$ $ É$$ø$$÷$$Ï$$Ò$$Ô$$Ó$$Ñ$$ì$$ý$$Ù$$È$$Ö$$ü$$Û$$Þ$$õ$$$ $ ù$!$!Ð$#$#Æ$$$$í%%.%%%%;%%%%4%%%%5%%%%1% %  % % 2% %  % % -% % ü%%ö%%%%,%%ú%%ô%%%%:%%U%%O%%%%9%%S%%M%%%%>%%a%%N%%÷% % ^%!%!ý%"%"T%#%#%$%$=%%%%`%&%&L%'%'õ%(%(]%)%)û%*%*R%+%+%,%,+%-%-%.%.@%/%/ù%0%0ó%1%1C%2%2%3%3%4%48%5%5%6%6A%7%7Q%8%8K%9%9D%:%:%;%;%<%<<%=%=%>%>B%?%?_%@%@J%A%Aø%B%B\%C%C %D%DF%E%E%F%F?%G%Gþ%H%HP%I%IE%J%J%K%K%L%L(%M%M%N%N)%O%O%P%Pè%Q%Qì%R%R%S%Sò%T%Tç%U%U%V%Vñ%W%Wæ%X%XX%Y%YI%Z%Zë%[%[W%\%\H%]%]ê%^%^d%_%_[%`%`ï%a%ac%b%bZ%c%cî%d%dÿ%e%eð%f%få%g%gV%h%hG%i%ié%j%jb%k%kY%l%lí%m%m"%n%n!%o%p#%q%q'%r%r&%s%s%%t%t/%u%u6%v%v3%w%w*%x%x %y%y%z%z %{%{%|%|0%}%}7%~%~ %%%€%€¢%�%ˆš%‰%‰ª%Š%Š©%‹%‹¨%Œ%Œ§%�%�¦%Ž%Ž¥%�%�¤%�%�«%‘%“·%”%”£%•%Ÿ¬% %¡È%ª%«Ê%²%²Ñ%³%³Õ%´%´Ý%µ%µá%¶%¶Ò%·%·Ö%¸%¸Þ%¹%¹â%º%ºÙ%»%»Û%¼%¼Ó%½%½×%¾%¾ß%¿%¿ã%À%ÀÔ%Á%ÁØ%Â%Âà%Ã%Ãä%Ä%ÄÚ%Å%ÅÜ%Æ%ÈÄ%É%ÉÁ%Ê%ÊÇ%Ë%Ë»%Ì%ÌÀ%Î%ÎÂ%Ï%Ϻ%Ô%Õ½%æ%æÃ%ç%ëÌ%ï%ï¼%ö%ö¿&m&m`&o&oa&‡&‡«& &¡¬''®''¯''°'6'6±'n'nL'o'oN'p'pK'q'qM'”'”“'œ'ž”'Å'ÅQ'Æ'ÆT'Ü'Üï'æ'æ¶'ç'ç¹'è'è´'é'é·'ê'êµ'ë'ë¸'õ'÷—))C)J)Jî)‡)ˆU**þ**ÿ+X+Xñà à¢Äà°à³Çþbþb:þÿþÿÁÿ[ÿ[Iÿ]ÿ]JÿýÿýöiiŸÕ8Õ9 Õ;Õ>£Õ@ÕD¨ÕFÕF®ÕJÕP²ÕRÕkº°, °UXEY K¸QK°SZX°4°(Y`f ŠUX°%a¹cc#b!!°Y°C#D²C`B-°,° `f-°,#!#!-°, d³BC°C ``B±CB±%C°CTx ° #°CCad°Px²C`B°!e!°CC²B °C#B²C`B#°PXeY²C`B-°,°+°CX#!#!°CC#°PXeY d °ÀP°&Z²( CEcE°EX!°%YR[X!#!ŠX °PPX!°@Y °8PX!°8YY ± CEcEad°(PX!± CEcE °0PX!°0Y °ÀPX f ŠŠa ° PX` ° PX!° ` °6PX!°6``YYY°%° Cc°RX°K° PX!° CK°PX!°Ka¸c° Cc¸bYYdaY°+YY#°PXeYY d°C#BY-°, E °%ad °CPX°#B°#B!!Y°`-°,#!#!°+ d±bB °#B°EX± CEc± C°`Ec°*! °C Ра+±0%°&QX`PaRYX#Y!Y °@SX°+!°@Y#°PXeY-°,° C+²C`B-°,° #B# °#Ba°bf°c°`°*-° , E °Cc¸b °PX°@`Yf°c`D°`-° ,² CEB*!²C`B-° ,°C#D²C`B-° , E °+#°C°%` EŠ#a d ° PX!°°0PX° °@YY#°PXeY°%#aDD°`-° , E °+#°C°%` EŠ#a d°$PX°°@Y#°PXeY°%#aDD°`-°, °#B³ EPX!#!Y*!-°,±E°daD-°,°` °CJ°PX °#BY°CJ°RX °#BY-°, °bf°c ¸cŠ#a°C` Š` °#B#-°,KTX±dDY$° e#x-°,KQXKSX±dDY!Y$°e#x-°,±CUX±C°aB°+Y°C°%B±%B±%B°# °%PX±C`°%BŠŠ Š#a°*!#°a Š#a°*!±C`°%B°%a°*!Y°CG°CG`°b °PX°@`Yf°c °Cc¸b °PX°@`Yf°c`±#D°C°>²C`B-°,±ETX°#B E°#B° #°`B `·BBBŠ` °#B°a±+°‹+"Y-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,±+-°,± +-°+,# °bf°c°`KTX# .°]!!Y-°,,# °bf°c°`KTX# .°q!!Y-°-,# °bf°c°&`KTX# .°r!!Y-° ,°+±ETX°#B E°#B° #°`B `°aµBBŠ`±+°‹+"Y-°!,± +-°",± +-°#,± +-°$,± +-°%,± +-°&,± +-°',± +-°(,± +-°),± +-°*,± +-°., <°`-°/, `°` C#°`C°%a°`°.*!-°0,°/+°/*-°1, G °Cc¸b °PX°@`Yf°c`#a8# ŠUX G °Cc¸b °PX°@`Yf°c`#a8!Y-°2,±ETX±EB°°1*±EX0Y"Y-°3,°+±ETX±EB°°1*±EX0Y"Y-°4, 5°`-°5,±EB°Ec¸b °PX°@`Yf°c°+°Cc¸b °PX°@`Yf°c°+°´D>#8±4*!-°6, < G °Cc¸b °PX°@`Yf°c`°Ca8-°7,.<-°8, < G °Cc¸b °PX°@`Yf°c`°Ca°Cc8-°9,±% . G°#B°%IŠŠG#G#a Xb!Y°#B²8*-°:,°°#B°%°%G#G#a± B° C+eŠ.# <Š8-°;,°°#B°%°% .G#G#a °#B± B° C+ °`PX °@QX³  ³&YBB# ° C Š#G#G#a#F`°C°b °PX°@`Yf°c` °+ ŠŠa °C`d#°CadPX°Ca°C`Y°%°b °PX°@`Yf°ca# °&#Fa8#° CF°%° CG#G#a` °C°b °PX°@`Yf°c`# °+#°C`°+°%a°%°b °PX°@`Yf°c°&a °%`d#°%`dPX!#!Y# °&#Fa8Y-°<,°°#B °& .G#G#a#<8-°=,°°#B ° #B F#G°+#a8-°>,°°#B°%°%G#G#a°TX. <#!°%°%G#G#a °%°%G#G#a°%°%I°%a¹cc# Xb!Yc¸b °PX°@`Yf°c`#.# <Š8#!Y-°?,°°#B ° C .G#G#a `° `f°b °PX°@`Yf°c# <Š8-°@,# .F°%F°CXPRYX +.±0+-°~,±>+°@+-°,±>+°A+-°€,±>+°B+-°�,±>+°@+-°‚,±>+°A+-°ƒ,±>+°B+-°„,±?+.±0+-°…,±?+°@+-°†,±?+°A+-°‡,±?+°B+-°ˆ,±?+°@+-°‰,±?+°A+-°Š,±?+°B+-°‹,² EPX°²EX#!!YYB+°e°$Px±EX0Y-K¸ÈRX±ŽY°¹cp±B¶A1!*±B@ NF6& *±B@ RJ>. *± B¾ÀÀ À À@ *±B¾@@@@@ *¹D±$ˆQX°@ˆX¹dD±(ˆQX¸ˆX¹DY±'ˆQXº€@ˆcTX¹DYYYYY@ PH8(*¸ÿ…°�±D³dDDZZPPÚ&ÿLäÿö0ÿøÿLZZPPÚÚ&ÿLäÿöä.ÿøÿLZZPPÚÚ&ÿLäÿö 0ÿøÿLGG@@;ÿ{@ÿvGG@@>~CydÔì<Tl„œ´Ìì4Ld|”¬x�¨(@àpˆ ¸ÐèXè�ì   4 L d „ œ ´ Ì ä ü  , D \ ð  \ ô $ < T l „ ØXpÄÜô $<Tl„œPhÌäD\˜°ÈàdÜ@Xpˆ ¤¼Ôì$<Tl„œ´ÌtŒ¤¼Ôìì|è\ü|”¬Äx�¨äü¬ L � ô! !È!à"@"X"p"ˆ" "¸"Ð"è#l#„#œ#´#Ì#ä#ü$$Ì$ä$ü%T%è&&&0&H&Ä'$'<'T'l'„'œ'´'Ì'ä(<(T(l(„))()@)X)p)Ì)ä*”+ˆ+ +¸+Ð+ð,, ,8,P,h,€, ,¸,Ð,è---0-H-`.à.ø/0l0„1T1ä1ü23,3D3\4,55ø6ð7”7¬7Ä7Ü7ô8 8,8D8\8t8Œ8¤8¼8Ô8ì9: :$:Ä;(<<(<@> >8>X>p>ˆ> ?È?à?ø@P@h@Ì@ä@ôALAdAàAøBB4B¤CdCôD D0DHD`EE,E¬EÄEÜEôF F$FDF\FtFŒF¤F¼FÔFìGÈGàGøHH(H@HXHpITJJ0JHKPLLðMÀNXNpNˆN OPOhO€P´PÌPäQ�QÜRLRÔRøSèTT`TxT�T¨TÀTØUU0U\UˆU U¸UÐVlV„VœV´VÌVäVüWWÈWàWøXPXèYYY0YHYÄZ$Z<ZTZlZ„ZœZ´ZÌZä[<[T[l[„[”[à[ø\\(\L\¼]H]è^ _ _8`¼`Ô`ìaaa4aLadbbb�b¨bÀbØc|ddÐe\eteŒe¤e¼ff4fDf¸gdg|g”g¬hh4hLhdh|h”h¬hÄhÜilj(k kÜmmÌnŒoœp€p˜p°pÈpàpøqÐr¸sÀtÈvHvÌwDw¬x¨y0y@y¸yÈzz zŒ{ {{4{¸|ˆ|ì}}},}´}Ä}Ô}ä~(~8~H~X~´~Ìð€€\€´��l�ä‚T‚ЃX„(„´„Ä…h…ü† †$†4†°‡Œˆˆ¬‰‰|‰à‰ðŠhŠÔ‹0‹Ð‹èŒŒŒ0ŒÌŒä�d�t�Œ�üŽpŽˆ�`�p��´�ô‘ ‘x‘ø’’ ’œ“h“È“à”<”T”Ü•L•œ•¬•ð–––T–d–|—4—D—œ—ô˜H˜¬™$™�ššˆ›Œœœ$œÈ�l�„�œ�´ž@ŸŸ˜ @ œ¡¡h¡x¡ð¢\¢¸£\£t£Œ£¤£¼¤X¤p¤ˆ¥¥d¥|¥è¥ø¦¦¼¦Ì¦Ü¦ì§P§`§p§€¨ ¨0¨@¨�¨ ¨°©$©4©D©T©¼©Ì©Ü©ì©üªx«D«\«t«Œ«¤«¼«Ô«ì¬¬¬¬¬¼­H®®è¯H¯ô°Ä±@±P±ì²D²T²°³T³d´,´<´Ôµlµð¶ˆ¶è¶ø·¨·¸¸0¸ä¸ü¹¹,¹D¹\¹t¹Œ¹¤ºœ¼l¼„½½ ½ä½ô¾l¿ ¿ ¿¬À˜ÁHÁèÂXÂÀÃ�ÄÄ|Å Å ÅôÆœÇÇØÈxÉPÊ ËËpËðÌdÍ<͸Î<θÐÑ$ÑÐÒðÓÄÔTÕˆÖ$×$Ø0ØÄÙ0Ú€ÛTÜ Ý(ÞHßàà¬á,á â€âôã„ãðä¨äü倿æxçç¬è(é é¬êPêäë¤ìhíHíøîî8îXîxî˜î¸îØîøïï8ïXïxï˜ï¸ïØïøðð8ðXðxð”ð°ðÌðèññ ñ<ñXñtñ�òòhòðó„óäôpõõ€öXöì÷ ÷,÷L÷l÷Œ÷¬÷È÷äøøˆùHúú$úDú`ûDûdû€ûœüLü„ýxþDÿ˜ÿ¸ÿÈÿèpX¨$´\È8 èT\´ü¼ ` p ° ä  t ô  4 x ¼ l  h ´ Ä ÔX”ÐX$h¬p¼<L„¼Ì |” P¤Ä”üd¬ð0H€Ð8¤pØxÔX4¨  <!!!|! "t"Œ"¬"Ð"è# #$#H#|#”%¨&Œ&°&Ô&ì''('H'Ä(p(ˆ( (¸(Ø**0*H*l+P,è-À/ 0T2$304¨6ˆ7à8˜9ˆ9¬9à:H:°;;4;¸;Ø<(”>Ü?P?°?ø@\@¼@Ü@ì@ì@ì@ì@ì@ì@ìAÄBxChD@E\F,F¨G”H0HèIhJJ¨KhLHLðMŒMÔMðN¨OtP|PÔQQdQ˜QÈQØR4R S\TT”UU¼UìVDV¸W\WøXXXÀY¸ZPZ [,[|[ø\H\�\Ä]]L^^¤__h_Ð``aaÄb bXbÜc@c dèf,g<gÀh0iÀjÔkäl°m,no$o¨p„q¨rPrüsts„s¼tXt°u,uhu¨vv„ww4w˜xPx°yœzxzÐ{({Œ{ì|P|`|¸}(}”~H~X~ ~ÔTd Ü�(‚؃0ƒˆƒü„”…h†ˆ†˜‡(‡´ˆ”ˆä‰X‰ ‰ä‰ôŠ0ŠlЏ‹p‹ì‹üŒHŒ���„ŽŽ˜Žä�P�˜��H�Ü‘L‘À’H’Ì“8“€“È”¸•`—D—¸˜h˜¬™,šd››ìœ �Tž<ŸŸÐ $ ˆ ô¡T¡¨¢¢t¢Ô£`£Ä¤ ¥Œ¦4¦Ô§l¨¨d¨ø©X©Ðªl««8«ð¬H¬ì­8­Ô®˜¯T¯Ð°H°p°è±d²²`²¨³0³¸´|´´´èµµPµ„µ¸µì¶ ¶T¶Œ¶¼¶ì··P·„·¸·ì¸ ¸T¸ˆ¸¼¸ð¹0¹„¹Äºº8º�ºÐ½Á¼ÄÄXÄìÅ€ÆƘÇLÈ€ÉXÊdÊàËË@ˈÌÌ@Ì”ÌÈÍÍlÍÀÎÎdÎÈÎøÏÏ<Ï`ϬÏÜÐÐPÐpÐ�ÐÀÐìÑÑ<ÑdÑ„ÑÌÑøÒ4Ò`ÒäÓPÓ¼ÔÔ”ÔüÕdÕ°Ö`Öì×t×ÌØ ØtØÀÙÙ\Ù ÙøÚXÚ¤ÚèÛ@Û„ÛÜÜ<ܨÝÝXݨÝüÞ0Þ|ÞÀßß<ßtßÀà<àÌááháÜââ\â âäã(ã\ã¸ääXäÀååpåÔæ,æ€æàçHç çøèPè¬ééXé˜éèê<êpê¼ëëDë|ë´ìì|í íDí¨îîPî”îàï$ïhïœïüðLðœññ\ñ´òòpòÄó$óŒóäô8ôŒôìõ8õ�õÔö,öpöÐ÷÷t÷¸øøTø¼ùùlùäúHú°û û\û¬ü ü\ü¬ý0ý”ýøþTÿ ÿà@XH<¬`À|ˆ  „œ  Ø < ˜ „ œ ¬ (  œ<¨X$xà°dÀDÈX耠`ôÄì¬ ÐlðTð`ø X ¨!T"L"p"ˆ#L#ô$¼%%t&T'D'Ü( (L(„(¼(ô)¼*ü+Ü--d.x/�0˜1`1è2282h2À33È4@5\66à7L7ü8ä9ä: :\: :Ü; ;Ø55>ýÈC:Ma?N  +"&54632#4&#"326534dttdbtZA;;CC;;AZt pbJbpqa>CC>þ¶>CC>aqÿÿ\ÿö ¶&‘gÿÿ\ÿö ¶&”]\ÿ5 ä/•@ (LK°PX@6€~ra>Ma?M_ =N@4€~€ ca>Ma?NY@/.%"'! +532654&&54632#4&#"32653#"##ÒF72IStdbtZA;;CC;;AZtb 8&B6Ë7 AjRJbpqa>CC>þ¶>CC>aq$"1ÿÿ\ÿö ¶&“]ÿÿ\ÿö °&�]\Ú '@$_8M_9N ! +332#'32654&##\½Gg99gGccBKKBcÚ6bCþÝCc6PJB#AJ Ú7@4g_8M_9N! +3#5332#'32654&##3#\RR½Gg99gGccBKKBcllOK@6bCþÝCc6PJB#AJðKÿÿ\¶&!”X Ú7@4g_8M_9N! +3#5332#'32654&##3#\RR½Gg99gGccBKKBcllOK@6bCþÝCc6PJB#AJðKdÚ /@,g_8M_9N  +3!!!!!d¤þµ(þØKÚRâPþüRÿÿd¶&%‘lÿÿd¶&%•bÿÿd¶&%”bÿÿd¶&%“bÿÿdqü&%Àbÿÿdÿ+¶&%'žb“bÿÿd&ü&%Ábÿÿd0ü&%Âbÿÿdü&%Ãbÿÿd±&%Žbÿÿd°&%�bÿÿdÿ+Ú&%žbÿÿd¶&%�XÿÿdÔ&%™bÿÿd“&%˜bdÿ5 ÚnK°PX@)g_8M_ 9M_=N@&gc_8M_ 9NY@!% +3!!!!!#33#"&5467d¤þµ(þØK/!Ma?N*)'%!-- +"&&54675&&546632#4&#"33#"326735Hm>N>4A7a@Be8ZJ;8FG9WVCSSCATZ=k 5^>Gg  [<8U05^?:HA56DPK<_5ÿÿd±&%—b_ Ú )@&g_8M9N  +3!!!!_®þª<þÆÚRòRþ¼Xÿöä>@;€ga>Ma?N  +"&54632#4&#"32655#530dttdbtZA;;CC;;A”ît pbJbpqa>CB>þµ>DD>dR¶aqÿÿXÿö¶&9‘bÿÿXÿö¶&9•XÿÿXÿö¶&9”XÿÿXÿö¶&9“XÿÿXÿä&9 \ÿÿXÿö°&9�X]ûÚ '@$g8M9N  +3333##]ZêZZêÚþÈ8ý&Pþ° NÚ;@8  g  g8M 9N +3#53533533###35#]SSZêZSSZêêê K‚‚‚‚KýóPþ°¢kÿÿ]û¶&@“XiïÚ )@&_8M_9N  +353#5!#3i••†••R6RRýÊRÿÿiï¶&C‘bÿÿiï¶&C•Xÿÿiï¶&C“Xÿÿiï±&CŽXÿÿiï°&C�Xÿÿiÿ+ïÚ&CžXÿÿiï¶&C�NÿÿiïÔ&C™Xÿÿiï“&C˜Xiÿ5ïÚbK°PX@#_8M_ 9M_=N@ c_8M_ 9NY@!% +353#5!#3#33#"&5467i••†••¢!üWxßWp]´R=4bIQ%þfÚýÛIR$Mý5XkÿÿZþ±&Z—XXÿöä -@*a>Ma?N   +"&54632'2654&#",brrbbrrb;??;:@@ rj6jrriþÉjrQC>J>CC>þ¶>CÿÿXÿö¶&`‘bÿÿXÿö¶&`•XÿÿXÿö¶&`“XÿÿXÿögü&`ÀXÿÿXÿ+¶&`'žX“XÿÿXÿöü&`ÁXÿÿXÿö&ü&`ÂXÿÿXÿöü&`ÃXÿÿXÿö±&`ŽXÿÿXÿ+ä&`žXÿÿXÿö¶&`�NÿÿXÿöÔ&`™XXÿö*#>@; L…a>Ma?N##  +"&546326553'2654&#",brrbP5K0rb;??;:@@ rj6jr&KP:3KþÉjrQC>J>CC>þ¶>CÿÿXÿö¶&m‘XÿÿXÿ+*&mxXÿÿXÿö¶&m�DÿÿXÿöÔ&m™NÿÿXÿö±&m—NÿÿXÿö¶&`’XÿÿXÿö“&`˜XXÿ5ä+dK°PX@!a>Ma?M_=N@ca>Ma?NY@&$++  +"&547#"&54632332654&#"{7C8 brrbbr+'!<�;??;:@@Ë5(.6pbJbpobþµ;Z-<C>J>CC>þ¶>C#ÿØ5î#u@ "! LK°PX@†a>Ma?N@!…†a>Ma?NY@##&& +7&5463273#"'&#"265#Lrb\8!TFrbU7);àG:@z;?Ú (†-=Jbp1;})5þµbp+I:þÃ�1Cý÷C>)þ~(ÿÿ#ÿØ5¶&v‘bÿÿXÿö±&`—X(ÿö?ä+ãK°PX@ L@  LYK°PX@#g a>M a ?NK°PX@8g a>Ma>Ma ?M a ?N@3g a>M_8M_9M a ?NYY@&$++  +"&5463235!#3#3!5#'2654&#"ÃHSSH#. ±˜˜±þ÷. *00**00 fXrXf)PRæRþRP*P;3r3;;3þŽ3;\&Ú +@(g_8M9N $! +332##32654&##\ëfyyf‘‘;GG;‘ÚubbuþÔ}I=>HZ&Ú /@,gg8M9N %! +3332##32654&##ZZ™Ba6vc™™:BC9™Ú–2Z<[m´A78@PÿLä!8@5La>Ma?M=N!!%# +'"#"&54632'2654&#"¦g ewweew:5uâ;GG;;GG´«ub@buubþÀCdÁúJ=@>II>þÀ=J]!Ú3@0 Lg_8M9N! +332##32654&##]áAb6L?•c�yˆ8DD8ˆÚ5^?JjþÁ6þʇG:;Fÿÿ]!¶&}‘bÿÿ]!¶&}”Xÿÿ]ÿ!Ú&}zXHÿöä);@8€~a>Ma?N)) +"&5332654&''&&546632#4&#"0j~ZN@>J/,oEO4^=>_6ZD55B+'rIQz pb=EH:,A gF:X11W92??2(9 oL`rÿÿHÿö¶&�‘bÿÿHÿö¶&�”XHÿ5ä=•@ 6LK°PX@6€~ra>Ma?M_ =N@4€~€ ca>Ma?NY@=<","! +532654&&5332654&''&&546632#4&#"#"##ÍF72O\ZN@>J/,oEO4^=>_6ZD55B+'rIQzf 8&B6Ë7 @kS=EH:,A gF:X11W92??2(9 oL`r$"1ÿÿHÿö¶&�“XÿÿHÿä&�zX\Ú 8@5Li_8Ma9N "$!%$ +346633##532654&##57#"\4_?ã¢N_6`AC9]3XÛp[@a6RH=Ma?N  +"&55!54&#"#4632'2655#,aqJ=;:>Zpbdnpb>:ð; s_ȃ>CD>aqpbþ¶_sKFA‚‚AF7!Ú!@_8M9N +3#5!#ÿÈêȈRRýx7!Ú/@,g_8M9N +3#53#5!#3#ÿ‘‘ÈêÈ‘‘'KRRþêKþÙÿÿ7!¶&‰”X7ÿ5!Úo@ LKK°PX@$€_8M9M_=N@!€c_8M9NY@!( +3#5!###532654ÿÈêÈ 8&B6UF72ˆRRýx#$"17 Eÿÿ7ÿ!Ú&‰zXZÿöþÚ$@!8Ma?N  +"&5332653,flZ;=<:;=ZP!<Ë5(.6pbýî>CC>ýîy6-<ÿÿZÿöþâ&Ž–XÿÿZÿöþ±&Ž—X2&Ú !@L8M9N  +336673î¼\}  x]½Úþ4XY4ðý&DÚ&@#L8M9N +3366736673#&&'kWS9HaB;OYqBGÚýä!GG!ýä!GG!ý&&"AA"ýÚÿÿD¶&¢‘bÿÿD¶&¢“XÿÿD±&¢ŽXÿÿD¶&¢�N(0Ú&@# L8M9N +3366773#'&&'(ÒÇhq  scÇÒg}  ~rhØ' 'Øþžþˆè' &é#5Ú#@ L8M9N +336673ÿÜ`Ž  Ž]ÜÉþÔ##,þ7þïÿÿ#5¶&¨‘bÿÿ#5¶&¨“Xÿÿ#5±&¨ŽXÿÿ#ÿ+5Ú&¨žXÿÿ#5¶&¨�Nÿÿ#5Ô&¨™Xÿÿ#5“&¨˜Xÿÿ#5±&¨—XUÚ ,@)L_8M_9N  +35!5!!UIþ¼Ÿþ·SZ.RZýÒRÿÿU¶&±‘bÿÿU¶&±”XÿÿU°&±�X?Ú-@*L€8M9N +3366736673#bIS0LfE2OKsSYÚýä!=<"�þp"<=!ý&ôþ ÿÿ?¶&µ‘bÿÿ?¶&µ“Xÿÿ?±&µŽXÿÿ?¶&µ�N]0Ú +@(L8M9N   +!3!3¿ùùgðúþ-Z|^þ¢þ„Úý&ÿÿ]ÿ0Ú&º XXÿLä&>@;L€a>M`=N!&&  +"&55&&5463233'2654&#"‹DRJSrbbr^S!nÍ;??;:@@´OBnZ6jrriþÉ`p #RûC>J>CC>þ¶>CCÿöü0&„µLK°PX@(€gaAM a?N@,€gaAM9M a?NY@" &&  +"&54663354#"#6632#5#'2655#"üUd.R5ªu4@Zo\dkYV1BN ,7= _M3L++k&"AU`Vþ†d3;L@7M5,.5ÿÿCÿöü&½kgÿÿCÿöü&½p]ÿÿCÿöüz&½´]ÿÿCÿ+ü&½'x]p]ÿÿCÿöüz&½µ]ÿÿCÿöü¢&½¶]ÿÿCÿöü &½·]ÿÿCÿöü&½o]ÿÿCÿöü&½n]ÿÿCÿöv„&½¸]ÿÿCÿ+ü&½'x]n]ÿÿCÿö&„&½¹]ÿÿCÿö+¢&½º]ÿÿCÿöü &½»]ÿÿCÿöü &½h]ÿÿCÿ+ü0&½x]ÿÿCÿöü&½jSÿÿCÿöü9&½t]ÿÿCÿöüé&½s]Cÿ510+6êK°PX@ ( L@ ( LKYK°PX@2€  gaAM a ?M_=NK°PX@/€  gcaAM a ?N@3€  gcaAM9M a ?NYY@-,20,6-6'&! ++ +"&54663354#"#6632333#"&5467#5#'2655#"üUd.R5ªu4@Zo\dk"PZZQ>Sbbq9@@97AA =6iÚ }5>n_¡^nN–>FXÿö 0;@8€~aAMa?N  +"&554632#&&#"326734dxxd_uZB8;GG;8BZu pb–bpfX59C>—>D:4XfÿÿXÿö &×kjÿÿXÿö &×o`Xÿ5 0/•@ (LK°PX@6€~raAMa?M_ =N@4€~€ caAMa?NY@/.%"'! +532654&&554632#&&#"32673#"##ÑF72IVxd_uZB8;GG;8BZu_ 8&B6Ë7 AjR–bpfX59C>—>D:4Xf$"1ÿÿXÿö &×n`ÿÿXÿö  &×i`WÿöüÚ"k¶ LK°PX@8MaAMa?N@!8MaAM9Ma?NY@""  +"&5546323'53#5#'26554&#" RcbS>QZZP 8@@89@@ n^¡_n>5} ý&i6=NF>–>F;D C<Fÿöß ,L@ILJ€j8Ma?N"!(&!,",    +"&&5466323&&''57'37'2654&#"+Dh95_?,;  A£xHh,”jN,5:gF@MM@>MM 8fCCc7& 5%[LP8c@EP1q@Ž@Fi:PPAAPPAAP?ÿö\Ú&�¶ LK°PX@$ _8MaAM a?N@( _8MaAM9M a?NY@!&&  +"&5546323'53#5#7326554&#"äLYYL9GZZGÜTþ¾2772188 l[«\l>5} ý&i5>0´´þC< N¦¦Z^^ZN 8>>89== n^e_n>5}Z>FD@Z@DTÿö0 >@;€gaAMa?N  +"&554632!32673!54&#",awwaAa6þ¨F:2AZ t×C==C ug‚gu4^@b4=G'!EQLAGGAÿÿTÿö&ákbÿÿTÿö&ápXÿÿTÿö&áoXÿÿTÿö&ánXÿÿTÿöq„&á¸XÿÿTÿ+&á'xXnXÿÿTÿö!„&á¹XÿÿTÿö&¢&áºXÿÿTÿö &á»XÿÿTÿö &áhXÿÿTÿö &áiXÿÿTÿ+0&áxXÿÿTÿö&ájNÿÿTÿö9&átXÿÿTÿöé&ásXXÿ50%.„K°PX@0€gaAMa?M` =N@-€g daAMa?NY@,*'&$" %% +"&547#"&554632!327333354&#"u7C; assabrþ°?=iZ2'"<þíø>>=?Ë5(/5s_–_ss_a5AEJ+@ -< AFFAÿÿTÿö &árXZÿöþ0C@@€gaAMa?N  +"&55!54&#"#6632'2655#,aqL<>gZ pWbppb><ô= s_a5AEJEQs_–_sKFAAF7Ú-@*g_8M9N!# +3#5354633#"3#×  RH¡¡@áá‰RsAKR:sRþwXÿLû0*o¶LK°PX@ iaAM_=N@$i;MaAM_=NY@%#**%'! +5326557##"&554632353#26554&#"¡›/6N;UbbU;NYgY8@@89??´R5-2Z15l^t^n81_ýÚSa%F>i>FB8}8BÿÿXÿLû&õk_ÿÿXÿLû&õpUÿÿXÿLû&õoUÿÿXÿLû&õnUÿÿXÿLûp&õvUÿÿXÿLû &õiU\þÚ-@*L8MaAM9N#$ +3336632#4&#"\ZL?SbZ?68AÚþã7CF@þ¢ÿÿþÚ7ÿÿÿÔþÅ&ünµ´±°´°5+ÿÿU+ &igU+& '@$_;M_9N  +353#5!3Uï ¹R‚Rþ,RÿÿU+&kqÿÿU+&pgÿÿU+&ogÿÿU+&ngÿÿU+ &hgÿÿU+ &igÿÿUÿ++ &'igxgÿÿU+&j]ÿÿU+9&tgÿÿU+é&sgUÿ5+ %¶K°PX@- a@M_;M_ 9M_=NK°PX@+ i_;M_ 9M_=N@( ic_;M_ 9NYY@  % %    +"&5463253#5!3#33#"&5467;!&&!!&&þùï ¹Ï!Eþü^xe´RD=µRýùarÿÿUÿL1&n¨a/Ú 1@.Lg8M;M9N  +33373#'#aZišg±»i kÚþiãþúþàõõÿÿaÿ/Ú&zXÿÿg5&&Ú (@%_8M_9N    +!"&5#5!33|IW¾& ªUFíRýÁ"'Rÿÿ&¶&‘&2&ä,@) L J8M9N +3'57'37#&&'2Ì †,`§�Ý`ƒ  ~ PPCqISPGý³e#66#þ›ÿÿ&Ú&m:ÿÿÿ&Ú&zlÿÿ uÚ&ì)÷ ±¸°5+&Ú,@) L_8M_9N!' +757#5!733#"&55dx¾  & ªªIWæPQRþêlPlÙ"'RUFœ<0$V¶ LK°PX@a;M9N@;MaAM9NY@$$##%$ +333663236632#4&#"#4&#"=68?ZZK?S`p]´R=4Y;AF@þ¢&i7[-<B@–@BB@–@B#ÿâ5N'J@G &% L…†aAMa?N ' '&& +7&55463273#"'7&#"26554'#QrbL4.[TrbP6)0Ì 0þèE=–þÛÿÿ#ÿâ5&9kbÿÿTÿø &"rX#ÿö50(6?Y@V  $L€  g aAM a ?N*)=;871/)6*6!(( +"&5546323>32#32673#"&&'#'26554&#"354&#"´CNNC(33(CNÞ$%U L8(33$$ &&¹‰& $ WIúJV%%VJ–d&- >I%%M-&ú&--&ú&-M&--&\ÿL0"h¶LK°PX@a;Ma?M=N@!;MaAMa?M=NY@""%$ +336632#"&'#726554&#"\ZP>SbbS>Px9@@97AA´Úi6=m_¡_n>5} ø–>FWÿVüÚ"l¶LK°1PX@!8MaAMa?M=N@!†8MaAMa?NY@""%% +336632#"&'#726554&#"WZQ>SbbS>Px9@@97AAª„ }5>n_¡^n=6þíî–>FWÿLü0"h¶LK°PX@aAMa?M=N@!;MaAMa?M=NY@""%% +57##"&554632353'26554&#"¢P>SbcR>PZÒ8@@89@@´ }5>n_¡_m=6iý&øF>–>F:@ª@:p0ZµLK°PX@€a;M9N@€;MaAM9NY@ "$ +3336632#54#"pZL@V]Zu;>&i5>g_//xD@þ¢ÿÿp&@kvÿÿp&@olÿÿ#ÿ0&@z½Uÿø.(;@8€~aAMaBN (' +"&53332654''&&546332#&&##"#\eZ61,27A˜8>cW,Pe[3),.45ŽŒe\SL&+,(G M?HRO@&*$:�MUÿÿUÿø&DkbÿÿUÿø&DoXUÿ5.:•@ 3LK°PX@6€~raAMaBM_ =N@4€~€ caAMaBNY@:9)2:2! +532654&&53332654''&&546332#&&##"###×F72PWZ61,27A˜8>cW,Pe[3),.45ŽŒe\ 8&B6Ë7 >QG&+,(G M?HRO@&*$:�MU$"1ÿÿUÿø&DnXÿÿUÿ.&DzX\ä*7@4 Lia>Ma9N**$!$!-$ +346632##532654&##532654&#"\5_??^5A4>N8cB:0>MH:9.5CC56C=]4/R7;Z  hH<\4RH::HPB55BF8ýê¥þÚ @_8M9N !# +34633#"¥]L°°#,;GXP,$ýÆ/Á5@2…_;M`9N  +!"&5#53533#33cDRžžZáá! OBCR››Rþ½#R/Á>@;… g_;M ` 9 N# +7535#53533#3#33#"&55UxžžZáá´´!  DRïKšR››RšK^#ROB^ÿÿ/!&LmG±°G°5+/ÿ5Á%‡@ LK°PX@/…€_;M_9M _  = N@,…€  c_;M_9NY@%$#! +532654&&5#53533#33## F7206žžZáá! ™ 8&B6Ë7 K I5CR››Rþ½#R#$"1ÿÿ/ÿÁ&Lz”Zÿöþ&$@!;Ma?N  +"&5332653+_rZ@78AZt qa^þ¢EE>^#KP+4þãaqqÿÿZÿöX&^kbÿÿZÿ+X”&^xWÿÿZÿöX&^jNÿÿZÿöX9&^tXÿÿZÿöX &^rXÿÿZÿö&QlXÿÿZÿöþé&QsXZÿ5þ&VK°PX@;Ma?M`=N@d;Ma?NY@  +"&5467#"&53325333t7C" bpZxxZW"<Ë5(/pb^þ¢‚‚^þ¢4-<ÿÿZÿöþD&QqXÿÿZÿöþ &QrX6"& !@L;M9N  +336673ñ»ax  x_»&þŽ!==!rýÚ9&'@$L;M9N +3366736673#&&'yZN8EZE:J^c?B&þ|55„þ|55„ýÚ|??þ„ÿÿ9&jkbÿÿ9&jnXÿÿ9 &jhXÿÿ9&jjN2&&&@# L;M9N +3366773#'&&'2÷jm  mj·Âjv v ª  ªþôþæ´   ´6ÿL"& "@L;M=N  +736673²QÍa‚y_þî´Öþ¬,,Tý&ÿÿ6ÿL"&pkbÿÿ6ÿL"&pnXÿÿ6ÿL" &phXÿÿ6ÿ+"&&pxøÿÿ6ÿL"&pjNÿÿ6ÿL"9&ptXÿÿ6ÿL"é&psXÿÿ6ÿL" &prXZþ& ,@)L_;M_9N  +35!5!!Z4þÔ‘þÆEZzRZþ†RÿÿZþ&ykbÿÿZþ&yoXÿÿZþ &yiXÿÿ\Ú‡A+Ú '@$_8M_9N  +353#5!3AÈ´ÈR6RýxRÿÿA+¶&~‘SÿÿA+Ú&~mgÿÿAÿ+Ú'z]~ÿÿA§Ú'))~ ±¸°5+A+Ú4@1 L_8M_9N +3535575#5!73AÈŒŒ´ŒŒÈRó_P_óRþ÷_P_þÑR#ÿö$Á?@<…€_;Ma?N  +"&5#53533#326553pTc––Záá2++1Xa bT(R››RþØ/77/Tb#ÿö$Á!H@E…  €  g_;M a ? N!!# +7535#53533#3#326553#"&55Ud––ZááÈÈ2++1XaSTcïKšR››RšKC/77/TbbTCÿÿ#ÿö$!&„mG±°G°5+#ÿ5$Á-˜@  & LK°PX@6…€ r_;M a ?M _  = N@4…€ €  c_;M a ? NY@-,%""#! +532654&&5#53533#326553#"## F728?––Záá2++1XaS 8&B6Ë7 DZC(R››RþØ/77/Tb$"1ÿÿ#ÿ$Á&„z”2ÿBF0&2@Ñ@  LK°PX@* i  gaAM _ =NK°1PX@2 i  gaAM_;M _ =N@/ i  g  caAM_;NYY@#53('<93@5@.,'2(2 &% +"&&54675&&546323##"#32#2654&#"32654&##"â3P-Q@4:n^.Þ¹)3l\ w4O..O4f8@@88BB¦&11&¦%22¾)I0BW _P9P^ J-0KWN*J10I)Ü6..66..6þr0''00''0ÿÿ2ÿBF&‰kbÿÿ2ÿBF&‰pXÿÿ2ÿBF&‰oXÿÿ2ÿBF&‰nXÿÿ2ÿBFp&‰vXÿÿ2ÿBF &‰iXÿÿZÿBþ &‘iãZÿBî&XK°1PX@€_;Ma=N@€e_;NY@  +"&&5533265!5!$<[3Z?12>þóg3[¾2X:JJ4@@4ÎRýà:X2ÿÿZÿBl&‘nãÿûÿöÚ2@/€_8Ma?N  +"&5#5!326553`Xg¦6//6Zf fWÕRýÙ1<<1KKWfÿÿÿûÿö¶&“‘0ÿÿÿûÿöÚ'mX“ÿÿÿûÿÚ'z]“ÿûÿöMÚC@@€i_8Ma?N  +"&5#5!326553"&54632aXh¦7//7ZgA%--%%-- fWÕRýÙ1::1))Wf#,#%..%#,ÿûÿöÚ8@5 L€_8Ma?N#' +7575#5!7326553#"&55#~¦šš6//6ZfYXgæPUýRþîhPhÅ1<<1KKWffWˆ<0#d¶ LK°PX@€a;M9N@!€;MaAM9NY@####$$ +33366326632#4&#"#54&#"I[C:ýRÿÿF#'kv£ÿÿF#'ol£ÿÿFÿ#''z£6ÿL"&"@ L;M`=N#  +3267736673##Bf% Ía‚y_ÛL1ua*&þŠ,,výš7=ÿÿ6ÿL"&§kbÿÿ6ÿL"&§nXÿÿ6ÿL" &§hXÿÿ6ÿ+"&&§xøÿÿ6ÿL"&§jNÿÿ6ÿL"9&§tXÿÿ6ÿL"é&§sXÿÿ6ÿL" &§rXZÿöü&LµLK°PX@;Ma9N@;M9Ma?NY@ #$ +#5##"&533265üZL?RcZ?68A&ýÚi7M9N  +2#4&#"3###53546uSfX6++7ááZ––häbT/77/�Rþ³MR�TbA Ú7@4_8M_;M_ 9N!# +353#5354633#"3#3A›››RH““@ÓÓÓR„P*AIP:*Pþ|R7Ú/@,_8M_;M9N!# +3#5354633#"3#×  RH¡¡@ááÔR(AKR:(Rþ,¯Â¤ä%�µLK°.PX@,€ig Y aQ@3€€ig Y aQY@" %%  +"&5463354&#"#6632#5#'2655#"-681Z#$2=15>/ 3',Z7"Â/''.&*0*Ã7 &$-¹½Ÿß 1@.iYaQ   +"&554632'26554&#",4??44??4$$$$½:/P/::/P/:($P$$P$ÿÿ2&Ú^Ú 1@.g_M_N !+3!!32#'32654&##^–þÄyhyyhyy>FF>yÚRØvbawRI=>Hÿÿ]Ú‚+Ú@_MN+3!!‚©þ±ÚRýxÿÿ‚+¶&Ë‘v‚+9GK° PX@p_MN@…_MNY@ +3!53!‚TUþ±Ú_±ýxÿt?Ú3@0S_M_N +53667!3#5!73#-$vFPþz;ûÆ ŒÙyF°ýsÙŒŒÙ=þ MvÿÿdÚ%ÿÿd±&%ŽbRÚ6@3 LgM N +333333####†|^j.L0h^}‡]u.L0t{_þÁ?þÁ?þ þ†Wþ©Wþ©4ÿöä-N@K&L€€gaMa N  -- +"&&'332654&##532654&#"#46632#Fk=ZSACSSCVW9GF8;JZ9dB@a7A4>N=n 5_>:HK<^5ZþÚ$@!LMN+333#4667ZWÞxWßÚþf$QIqý&š%QIý�ÿÿZþ¶&Ó•Xÿÿ\0ÚQÿÿ\0¶&Q‘bÿûúÚMK°.PX@_MaN@_MMa"NY@ !+53267!###,'xZÅQVTO`Üý&ˆþv†}ÿÿHÚYÿÿ]ûÚ@ÿÿXÿöä`^úÚ!@_MN+3!##^œZèÚý&ˆýxÿÿ\&Úzÿÿ\ÿö äÿÿ7!Ú‰2&Ú "@LMN +3736673¿J×bƒ  sbþù½þ›"=="eý&ÿÿ2&¶&ß•X.ÿç*'²K°PX@,p q j Y aQK°PX@+p † j Y aQ@*… † j Y aQYY@'&!  +5"&&554663532#'"326554&#ÿ<^76_UwJvTÚýtŒýtŒý&<ÿtSÚ-@*TM`N +5!333333þ9QxFxQ?ŒŒÚýtŒýtŒýtÚ^ÿƒúÚ MK° PX@qM`N@†M`NY@ +5#333#ÿ¡ZèZ¡}}Úýxˆý&}^&Ú +@(gM`N !+3332#'32654&##^Z’Bc77cB’�;II;�ÚþÔ6`A@a6RI<þÔUFxFU�þ3h_P,$x$,5DÚ3@0iM` N%! +333332###7326554&##5P“PCC>oR‰>CC>aqNÿöüä;@8€€gaMa N%"#"+7332655#5354&#"#4632#"&NZB:;CßßC;:BZtbdttdbtÈ>CC>‰Ro>CC>aqpbþ¶bpqÿÿiïÚCÿÿiï±&CŽXÿÿ-ÿöïÚOÚ4@1Li_MN"#+3#5!#7632#4#"nn@xLWGUZW1:3‹OOúRaRþ¿-w=6þÏ<ÿö:ä#sK°PX@!gaM a N@)gMaMM a NY@##  +"&55##3354632'2654&#"�KX^SS^XKN\\N)..)).. dU¢þ¯ÚþÇŠVccVþ„UdJ:5|5::5þ„5:8ùÚ8@5Lg_MN'+3&&546633##3#"8–BL6bAàZt‹y††7ED@jJ?^5ý&6þʆG;:HÿLÚ>@; Li_MMaN#$! +532654#"##5!#7632#F5>W1:3Zn@xLWGUp]´R=4w=6þÏ‹OOúRaRþÎXk+Ú -@*g_MN +3#53!!3#‚dd©þ±  FPDRòPþºQÿtIÚ6@3LgcMN +33333#5##QZl¢bµ—LP;ªiÚþÆ:þ þÖÜŒQþ¯Yÿt&Ú0@-gcMN +33333#5##YZêZ/P9êÚþÈ8ývÜŒPþ°ÿÿ#5Ú¨#5Ú/@,LhMN+753366733##5}‚Ü`Ž  Ž]Ü‚‚ZÆKÉþÔ##,þ7KÆÆAÿtÚ.@+gcMN#!+!#"&533333#5•Œ^jZ?9‚Z/P`Tþé04{ývÜŒ_ Ú%@"gMN#!+32#4&###¹Œ^jZ?9‚ZÚþñ`Tþé04þ…ÚTÿöþäC@@€gaMa N  +"&55!54&#"#4632'2655#)bsPB99BZsbbssb9BöB qaÑz;FF;;>y;>ò? qbIbppbþ·ar¨t@CC@þ3D@……@DÿÿKù±&ãŽX NÚ 8@5 L8M9N       +!3!333ñ‹‹Sˆ’ý¼’ˆTŠ‹ŸL|^þ¢þ„~\þ¢þ„Úý&ÿÿ]0Úºÿÿ]0¶'‘bºXÿtGÚ 4@1Lc8M9N   " +!353#5!3ºùùgðÆPPþaZ|^þ¢þÓÜŒÚý&2&Ú(@% L8M`9N! +35327736673#Bj3×bƒ  sbÚM1S73þ›"=="eýš7=ÿÿ2&¶& •XþÔXüwK°PX@$ii c_;N@+igi Y _OY@  +!265##"&5463234&#"XþÜbtZA;;CC;;AZtbdttþÔ(úØ"qa>CC>J>CC>aqpbþ¶bpÿÿCÿöü0½Vÿöä$6@3 L Jia N$$+"&5546776632'26554&#",csmj¶¨š Q>_gsc:BB::BB tcýy† Y¤-07tabctPI>b>II>b>I\ &!9@6Lg_M_N!!+332#32654&##32654&##\ñS`?277!3#5!73#* mKPþ�4ö¾ŒÜ 1XHùþ*ÜŒŒÜˆ­GX1ÿÿTÿö0áÿÿTÿö &áhXI&6@3 LgM N +33353373#'##5#{sVe5J3hUs{Yi6J6j ííííþùþáûûûûFÿù --N@K&L€€ga!Ma"N! -, +"&53332654&##532654&##"#66332# ZjZ9154<<4xu/76//,5ZfU/Zi?2À—U\ü& '@$gMN +33353#5#\ZìZZì&ããýÚññÿÿTÿø."\ü&!@_MN+3!##\ Zì&ýÚÔþ,ÿÿ\ÿL0=ÿÿXÿö 0×7!&!@_MN+3#5!#ÿÈêÈÔRRþ,ÿÿ6ÿL"&pÿÿ6ÿL"&ppX0ÿL(Ú'B@?M aM aM N'&!  +5.55466753'"326554&#ÿ=^44^=Z>]44]>SUwJvT&þ&Úþ&ÚýÚ<ÿtS&-@*TM`N +5!333333þ9QvFvQCŒŒ&þ&Úþ&Úþ&Ø\ÿƒü& MK° PX@qM`N@†M`NY@ +5#333#ÿ£ZìZ£}}&þ,ÔýÚ}i(& +@(gM`N !+3332#'32654&##iZ�]kl\��4774�&Ê]QP^R/--/:& 1@.g_M_N !+3#5332#'32654&##¥Œæs]kl\ss4774sÖPÊ]QP^R/--/<& 6@3iM`N    ! +3332#!3%32654&##HXXH‹qMAP>$''$>U>4dÈUE*EUÙþé[lO,$*$,>B&3@0iM` N%! +3335332###7326554&##>S‹I=HXXH†‹Ô=$))$=&ÈÈÈUF(FUþíK,$($,ÿÿUÿø.DWÿö0H@E€€ga!Ma N  +"&554632#&&#"3#326732dwwd_tZA8;F··F;8AZt pb–bpeT18D>P)=D91UePÿö0H@E€€ga!Ma N  +"&'332655#5354&#"#6632&_tZB7;F··F;7BZt_dww eU19D=)P>D81Tepb–bpÿÿU+ &igÿÿU+ &hgÿÿUÿLà &i¨þÚ9@6 L giMN#$ +53533#36632#4&#"#\Z¨¨L?SbZ?68AZ:KUUK¹7E=68?Z^^Z¦¦K?S`xe´SC= ;AF@þÞ:KUUK¹7@;€ga!Ma N +2#"&&55!54&#"#66!3265,bvvbAa6XE;2AZ t×ÿC==C0ug‚gu4_?b4=G'!EQþ´AGGAÿÿI &hXÿÿFÿù  &hXÿÿ\ü &hXÿÿTÿø &"hXZÿöþ0 9@6ga!Ma N  +"&554632354&#"2655#,aqqa`rrÚô?;:@z;?ô@ ra•bpr_–arE#?DD?þçD@''@DÿÿNô &'hXÿÿZÿBþ &‘iã N& 8@5 L;M9N       +!3!333÷—‡S†šý¼š†S‡—¥L þõþå þôþæ&ýÚd7& +@(L;M9N   +!3!3Âöæqåùþ-Z þõþå&ýÚÿÿd7&Kkbdÿt:& 4@1Lc;M9N  +!33#5!3Âöæqå³IPþzZ þõËÜŒ&ýÚÿÿ6ÿL"&§ÿÿ6ÿL"&§pXþÔXüH@Eigi Y _O  +!267##"&5546323&&#"XþÜ_uZB8;GG;8BZu_dxxþÔ(úØ"fX4:D>—>C95Xfpb–bpÿÿ2&Úÿÿ]Úÿÿ‚+ÚË2&Ú &@# L(M`)N+33!&&'2¾y½þâfg Úý&ðþ`Ÿ4[ZÿÿdÚ%ÿÿUÚ±ÿÿ]ûÚ@Xÿöä >@;ga.Ma/N  +"&54632'2654&#"'53,brrbbrrb;??;:@@ ´ pbJbpobþµbpQC>J>CC>þ¶>CþRRÿÿiïÚCÿÿ\0ÚQ2&Ú @(M)N +33#&&102¾y½[{zÚý&ïG^]GþÿÿHÚYÿÿZþÚZPÚ =@:g_(M_)N   +5!5!5!P¸þf|þf¸ˆRRþÁRRþ·RRÿÿXÿöä`ÿÿ^úÚÛÿÿ\&ÚzK&Ú 4@1LK_(M_)N +355!!!KèèÛþ�ëìrP#PPþíþÙPÿÿ7!Ú‰ÿÿ#5Ú¨ÿÿ.ÿç*áÿÿ(0Ú§6"Ú+@(j(M)N +35"&&53332653#ÿII>þã9Inÿÿ &Ú&±ÿ)ÿÿÿ�Ú&%±þ¬ÿÿÿ�ûÚ'±þ¬@ÿÿÿ�ïÚ'±þ¬Cÿÿÿ°ÿöä'±þÏ`ÿÿÿƒ5Ú'±þ¢¨ÿÿÿ°'ä&h±þÏÿÿiï±'ŽXCÿÿ#5±'ŽX¨\ÿLDÚB@?L€g(M )Ma-N!# +33333##53265##\Zl¢bµ›8_\-8%ªiÚþÆ:þ þÍGX\O7.Qþ¯ÿÿ]0Úº]ÿLDÚ@@= L€8M9Ma=N! +53265#33#%3l-8/ùùgðËC_\þÔZ´O7.|^þ¢þËGX\´Úý&Uÿöü0!g¶ LK°PX@a1Ma/N@!+Ma1M)Ma/NY@!! +"&5546323'3#5#'26554&#" RedS>PZZP 8@@89BB n^¡_n>5iýÚi6=NF>–>FD@–@D\ÿLä1H@E Lia.Ma/M-N,*&$#!11.$ +46632#"&'#72654&##532654&#"\4^==[4@3-C&5`?B@}}@B7&& (@%_+M_)N   +!"&5#5!33šIWÃ& ŒUF9Rþu"'Rÿÿg5&2&Ú "@ L(M)N +3'3#&&'2ÌJ``ƒ  ~½ý&e#66#þ›]ÿLû&WµLK°PX@+Ma)M-N@+M)Ma/M-NY@$#+332653#5##"&'#]Z<78?ZX6>>0´Úþ¢>FF>^ýÚi5>>5} ÿÿ6"&iUÿGä.:@7LI€ca.N,+(& ..+"33#"'76&''&&54675&&546632#&&E7DD7’ŽBSt�J*)F+ ‹^[N>4A7b@@^6Z@’B219PF8N#,eDB'F$ ,^EB`  Q95S/-N3)3ÿÿTÿø."ÿû+&YK°.PX@_+Ma2N@_+M)Ma2NY@ +"&5###5!#33L[­WTc)#`O,þ*ÖPPþÎ),T^ÿLþ08@5La1Ma/M-N%#+4632#"&'#726554&#"^paan_S>Nv9==99=?´_mm_¡_n>5} øD@–@DD@–>FZÿG 0@I†a1N"++76&''&&554632#&&#"Y+ vJRwd_tZA8;F1+zJ*)’F$ %cD‚bpfX59C>ƒ%:&eDBUÿö:&"0@-_+Ma/N"" +"&&554663!#'26554&#")@_55_@©2:5_@9AA99AA 5^?Œ?_4RC6Œ?^5PF<Œ(F8P<[43Z<8EB5´´4^=’4V9_;&œ:Iß2X;’=^4´ûI:œ6Dÿÿ2&&o6ÿL"&-@*+Mb)M-N +5"&53332653#ÿ\mT>=N=>Tm\´´l^\þ¤=DÝþ#D=\þ¤^l´6ÿö"0-4@1*L J…a/N(&--+"&55467326553326554&'5#"&'#µ:ELA" N !!DND;1A@ \O»Ws _<.Ç)00)¾¾)00)Ç+9_ pU»O\?55?ÿÿ7&&}°ÿÿ7& &}hSÿÿ7&„&}²ÿÿZÿöþ&Q°ÿÿZÿöþ &QhXÿÿZÿöþ„&Q²ÿÿTÿø&"°ÿÿ6ÿö"&�°Uÿöü%„¶LK°PX@$……a1M a /N@,……+Ma1M)M a /NY@ %%  +73"&5546323'3#5#'26554&#"êjdo=RedS>PZZP 8@@89BB…ŒŒýqn^¡_n>5iýÚi6=NF>–>FD@–@DKÿù-1CK°PX@@ …   …r€€ga1Mb 2NK°PX@A …   …€€€ga1Mb 2NK°PX@@ …   …r€€ga1Mb 2N@A …   …€€€ga1Mb 2NYYY@!...1.10/+*(%! -- +#"&54675&&546332#&&##"33#"33265373N5_oB<2?iZ/VfZ6,/.77/ux4<<4519Zj¸jdoYK>!J!==Æ= VK¼.BRRB.¼KV9229L,(ÃÃ(,TêTTêTÿÿd7&KÿL!*)@&La;M=N!# +5&##5326673 ‹5:QN  t\¾´´§1R65þú"55"mýÚ´/ÿûDßY¶ LK°.PX@_8MaBN@_8M9MaBNY@  +"&''&&'#'&##53233:PH  }aÊ#0˜=ŠÁC  Úý&ÕÕ(ŠþK)7F I6KÚ#+2M@J#2,('Lg_8M_9N+)&$ ! +332#'3#3267&&##6654&'327&##6654&'Kò\l<5>EtcË<Ma?N*)  +"&54632#4&#"327#53'6655#,g{{giy*bV.$$..$Pàzä < we6ewweSaý€( ewOPG.þÊ.GG.xK Ú ?@< ggW_ O  +3333##'3#3#K�¢��¢f<<2<<ÚþµKý&gþ™(ŠývŠPÚ /@,_8M_9N  +353#5!#3'3#P••¸““ù<<(Š((ýv((ŠÿöIÚ?@< L€_8Ma?N  +"&53327#5!#7665#ÿi{*eU0$¡—f{< weSa…((þ ewPG.àKEÚ C@@Lg_8M` 9N  +3333##'3#3K�:ã3¡» ~Lf<<PB™)Úþ­Sðþ_þ¡(Šýv˜=d&Ú )@&_8M_9N  +33!%3#d�2þh<<ÚýN((Š2&ÚC@@ L€_8M_9N +3373#4667#7'#3#2­PO¨�ˆ2‹Ÿ W@<<<Úßßý&¸3eVþ„|Ve3þHhYñývŠ_ùÚ5@2 LgW_O+33&&53#%3#_|ù*~÷CþäBÚýÇ P®ý&:!OþR'ŒJÿöä ':@7' La>Ma?N   +"&54632'27&#"'6654&',hzzhhzzh.$$..$$N  we6ewweþÊew(€ý€'PH.þÊ.HH.6.HK&Ú A@>LggW_O $!+3!2##'3#327&##654'K `rs_yf<qÒ.$$..$$N ´­we6ewweþÊKjºÒ€ý€(NG.þÊ.GG.6.GK:Ú  &N@KLg iW_ O&$"! ! +3!2##'3#327&##4&'663##K`rND«§žf<Ma?N+"+" +7332654&''&&54632#4&#"#"&6654&''&&5467A*aR:D1+m>I�m\k*WJ7@2+nAL†sfw5;3m6?#19?5l8A' /7ÀJWL@$@1g=`qeVDO?691rFgymµ1U2S/+J^>:_0N*)= T2&Ú +@(_8M_9N  +3#5!#'3#å³ô±f<<²((ýN(ŠJÿöÚ2@/L_8Ma?N  +"&5332653'#,g{�$.Vb*zä< weýSaSýøewOmþ .G.*Ú /@,L_8M_9N  +336673'3#ݯ˜  ,¯{=š>Úýä7BC6ý&(ŠXÚ#-:@7-)L_8M`9N%$#"!  +3366736673#'&&5#'3#3&&'YY’EV8_@*]Ž(  0iY  Úýä%""%ýä%""%ý&Õ.e!(f&Õ'Œýtë'FH';:Ú 4@1 L_8M`9N  +333#%3#"ËÏ©…¢1½Ø©Ž±\Fþ¶EC—þûþÏþWþé(ŠDÚ3@0 L_8M_9N +336673'35#æÒ¢’  ’/Îf<´BºÖþº* ,CþEþá(÷“þ`FÚ <@9LgW_O +35!5!!%#F.þܽþÒ3þ 0AþÐ,†(,ýz((Šýv6ÿö0#-2²K°PX@ /.+,L@ /.+,LYK°PX@)€gaAM a ?N@1€gaAM_9M a ?NY@%$*($-%-  +"&5463354&#"#6632#5734&'2655#"'5çR_^RšD;9I*hgsy�PŠN Q5þ§J?póØ JNKÿöÚ#*žK°PX@*$L@*$LYK°PX@#_8MaAM a?N@+_8MaAM_9M a?NY@##  +"&'#36632%3#267&&#"76554&'n7L��L7N[[þ¹<<ï  ?JJŒ< 0*PÚþü*0l\«[l2ŠýlâVJ«IV)`«/GKÿö 0!G@DL€~aAMa?N  +"&554632#4&#"32653'/i{{ifx*aS/%%/Sa*xä q`—aqqaN\þ2[N`qMŸC+—+BAÿö Ú#*žK°PX@%$  !L@%$  !LYK°PX@#_8MaAM a?N@+_8MaAM_9M a?NY@##  +"&5546323#573#26554&#"'êN[[N7L��L†<<³?JJ? D l[«\l0*ý&P*02ŠýlVI«JVþ¾G/«`Fÿö0"*O@L$"# L€gaAMa?N  +"&554632!3267335&#"354&'.k}}ki{þÄ&2Sd*{¾¬%/2&Ö<ÿ q`—aqqaZ×VI[l6ÎÍ2+Cþb�B+—+BAÚ@@=L_8M_;M _ 9N# +353#5354633#3#3%3A���==Ê´´´´þæ<(Ö(7;B(Œ(þ*((‰/!AÿL 0%*2ŸK°PX@,+$#&L@#,+$&LYK°PX@#aAM a?M_=N@+aAM_;M a?M_=NY@*)" %%%$1 +532275#"&55463253#'26554&#"65#mý J7O\\O7J�XKt@GG@Æ<<ÿ ´(Ø).l[«\l.)MýËLYÒVI«JVþœQ þ7¼F/«/EKÚ@@= L_8MaAM_9N"# +336632#&#"'3#34'K�H4M[�=Ff<<5<<Úþþ*.l\þ˜VJþ˜(Šýv@`)A& !%‹K°PX@-  ia@M _;M _ 9N@+i  i _;M _ 9NY@% %$#"!!      +"&54632'2654&#"53#5!3%3#;)11))11)㳚*¢þø<<}*$$**$$*#ý`(Ö(þ((ÖKÿL½ $)‹¶%LK°PX@+  ia@M_;M_ =N@)i  i_;M_ =NY@! )($#     +"&54632'2654&#"5327#5!#765#c)11))11)þÿŸ½Mf\\<<}*$$**$$*#ü¬(„(ýäYe@&XôK2Ú G@DLg_8M;M` 9N  +33373##'3#3K�7Ö>™¥¨gHf<<6D‚*ÚþQû¯þ‰þý(Šýv*/2&Ú 1@. L_8M_9N    +!"&5#5!3'#jCI¬=·á”?&þŽ5H I4rýÚ(ÖX&!%09@60+L_;M`9N'&%$#"!! +33>7366&673#'&&''3#3&&'#bb’IL4_D.a˜$   u=U=P=P   &þq!�þp  �ýÚ¢AC¢(Öþ*_CC::& 4@1 L_;M`9N  +37373#'%3#:²Î²~‹5©Õ²„”0JþÌHí9¿¿ãþ½ÈÈ(Ö-ÿL+&1@. L_;Ma=N! +53267733#7667#O+/=ꟙ˜.þñT6´ žBŽ´(1+Dþ¥[ý›6?ù ,iþ·,'F& 2@/L_;M_9N  +35!5!!%3#Fþë¶þä)þbGF)Õ(*þ,((ÖPÿöä(>@;ia>Ma?N$"(( +"&54632'2654&#"7"&54632,ewweew6cCM_9N"' +356654&#"#6632!Vó5,E;=GZxcew9EÅLS8X*ctrb4tHÎRFÿöþÚC@@L€~_8Ma?N  +"&53326554&##57!5!!evZF<@;€g_8Ma?N  +"&53326554&##!!32&evZF<Ma?N+*1/*5+5%#)) +"&&54675&&5466322654&#"2654&#",Ej;OB9D6a?@`6D9BO;iF8DD87EE7@PP@@PP 6a?Ed  Y:9W11W9:Y  dE?a6°B55BB55Bþ¡K<=KK=M9N!!&$ +3'#"&&5466322654&#"ô 6 ?_6Ma?N +"&54632&&#"265,ewweew6cÈ D1M_9N""#+ +35466776654&#"#>32!Y+J-d(/H::HZ9b?Bd8J@f+D`€4WB+H)Ma?N$"))  +"&54632#&&#"6632'26554&#"4gxve[rZC3;E O=^mwg=GG==GG tc@ctYG".I>¥07tc+ctPI>+>II>+>IIÿöä)I@F L€ia>Ma?N$"))  +"&'332655#"&55463226554&#"([rZC3;E N>^lvfgwvg=FF==FF [J%0I>¸29tccttcþÀcttI>>II>>IBÿöå)76@31La>Ma?N+**7+7%#  +"&&5467&&54663276654&#"2654&'',Fj:OBA@9b??c8@ABO:id/:H::H8JBP61+.04P 1W9>k Y37T00T72Y!k>9W1µ C(1=>0)BþŠE8,GG+8EUÿöÚ M@JL€~i_8Ma?N   +"&'3326554&#"#!!6636*[sZC4:DD:'9 Z…þÏ H5[du \N)1F )@&LPM`QN  +535733–��t`s~ADUIGþ�A“~ÉC4@1L€aRM_QN#' +576654&#"#>323œ·/#"1G*E),E)*$ŒÜ~Mž%#+,$+@%#?*$>wA‹yÎ>C@@L€~_PMaSN  +"&5332654&##57#5!,GZG2((22()sÕu 0@-LhPM_QN  +5#573353vç®P¸¡G~i]úþö rþå�yÏ>>@;€g_PMaSN  +"&5332654&##5!#32/IYF2*(00(‹×HJVXyPD(,/%&.Ý?bNBBR†yÒ>8@5LjPMaSN  +"&547733632'2654&#"-K\$~M�1@N[K*44*)54yUC29ÂÅ%N?CU@1''11''1”~Î>RµLK°PX@r_PMQN@€_PMQNY@  +##5!ر¯F:¨~€NŽLþŒ‡yÑC%1E@BLiaRMaSN'&-+&1'1!%%  +"&54675&&546322654&#"2654&#",I\:.*3UEFV4,/:[J'00'&//&*66**66yI:.=4"5AA5"4=.:I $%%$Î)!!))!!)‹~ÍC6@3LiaRMQN$$ +7##"&54632'2654&#"ç~ &?JWIJXm&30))00~ÅO>DTTD!<#­Õ1''11''1ÿÿšÿ{Î@ýý ±¸ýý°5+ÿÿ�ÿvÔ@ýý ±¸ýý°5+ÿÿ„ÿvÈ@ýý ±¸ýý°5+ÿÿšÎÅþ‚ ±¸þ‚°5+ÿÿ�ÿûÔÅþ‚ ±¸þ‚°5+ÿÿ„ÿûÈÅþ‚ ±¸þ‚°5+ÿÿšÎßœ ±¸ÿœ°5+ÿÿ�Ôßœ ±¸ÿœ°5+ÿÿ„Èßœ ±¸ÿœ°5+š~ÎC1@.€iW_O"* +54>54&#"#46323 !5:5!-#&.HVFCU"4<4"ç~9/;&$ '-#@PJ=)4"( A�yÔC&M@JL€iiYaQ" &&  +"&554632#&&#"3632'2654&#"2IYVLDVE1$+2TASYI)22**23yTC”JUE7#4-PLOACT?1''11''1„yÈC&L@I L€iiYaQ" &&  +"&'3326551#"&54632'2654&#"&CWE0$,1UASYIIYVK*23*)22yD4!4,ULN@BRRB—IVà/'&00&&0ÿÿ‡ÿlÑ6ýó ±¸ýó°5+ÿÿ‡ÿûÑÅþ‚ ±¸þ‚°5+ÿÿ‡ÑÚ— ±¸ÿ—°5+‡yÑC)7:@71LiYaQ+**7+7%#  +"&54677'&&5463276654&#"2654&'',I\( &*VDDV% "'[r*+/&%0;+5155yI:- /6CC6. -:I##ä% &ÿÿŠÿvÌ;ýý ±¸ýý°5+ÿÿŠÌÚœ ±¸ÿœ°5+ÿÿŠÌÕ— ±¸ÿ—°5+ŠyÌ>P@ML€~giYaQ  +"&'332654&#"#!#6632*@YH1"(22() AÙ 4">NZyC53%&2@ˆS@BVSÚ@8M9N +33ùUþÚý&SÚ.j±dD@_ ( ) L…  €hi  W _  O..-+"  +±D3#53557333357654&#"#66326633ÿv >FUkÃUþáxF$$<E68E-)] *m•2ì 6F=þíý&@E(+##4>>2<4 2SÚj±dD@_  L…  €h  Wh _  O +±D3#53557333!5#573353ÿv >FUaÍUþ†¯~E‡s<•2ì 6F=þí(ý&FP¯½YÑSÚ*Ó±dD@ %" LK° PX@Br €gW  i  W  h `  P@C€ €gW  i  W  h `  PY@)**)('&$#!   +±D"&5332654&##57#533!5#573353š:F<%%%Qœ×U-8FÎùUþ†¯~E‡s<�:/9?27B8*/:þpÚý&FP¯½YÑÿÿ‰ÿvÏ@ýý ±¸ýý°5+ÿÿ‰yÏCÿÿ‰ÿäÏ®þk ±¸þk°5+‘‹ÇH 1@.iYaQ  +"&554632'26554&#",HSSHHSSH(--((--‹OF”EOOE”FO?.(”(--(”(.Lÿö Š"2@/ L…YaQ +"&&54677'373'32654'',Cc6+"[¬hyyf¬]#(6bÆF<kl8T7lk>. AEA " " g1]4(O(7}}7(O(5]1^<;Íÿ’Â> 2@/ggW_O  +3#3#3Íõ›››–n¬Pþ±Pþ“P–ÿ’‹> ,@)ggW_O +#53#53#53‹ð–›››õnPmPOP}ÿ’Û>"@…v +333}ZªZn¬üT¬üTÿÿiÿûïÚ&.ˆ.x‡ÿûêÚ$?@<L_8M_;MaBN$#!' +7'536654&##532"&546332#ß Z07KA}}Fg9j[/"""Íõdd> C2;GU5`BWnjÒ""!##5ÚG@Dh   g8M  9 N +37#537#53733733#3##7#37#S'Wb"al'F' 'F'Wb"al'F' '2 " ÒA´AÒÒÒÒA´AÒÒÒ´ÿÿÚÿö~˜)ÿöîb>&±dD@W_O +±D5! lîPPKÿ’ >@…v +3Kc_þ�n¬üTKÿ’ >@…v +3®þ�_cn¬üT ÿLN$@!…_=N  +"&53332653#´N\Z1)Ü)1Z\N´aS.66.SaÙF€ 0@-iYaQ      +"&54632"&54632,%..%&--&%..%&--ê)""))"")þ\)""))"")ÿÿÿ ÿ¾«)þ@ ±¸°5+ÿÿÿy «)þŸ ±¸°5+¹ÿˆåH³2+&&55467å����@_33_@x Ìš´šÌ WT}O´N~TsÿˆŸH³ 2+5>554&&'5sA^33^A���xWT~N´O}TW Ìš´šÌKÿ’ù>$=@:LigYaQ#! $$ +"&776&##5326''&633#"33ÌXh(AssA(hX--/4BKKB4/-nWO¤5/P/5¤OWP++¤;GN:¤++P_ÿ’ >&8@5 LigYaQ&%!&!,! +5326''&67&&776&##53233#"#_-/7 :33: 7/--;Y-+A}}@,-Y;nP++¤9O F9¤++P'J5¤5/P/5¤4K'Íÿ’Â>(@%gW_O +3#3Íõ››n¬PüôP–ÿ’‹>(@%gW_O +53#53–››õnP PüTÿÿKÿ’ù>Eÿÿ_ÿ’ >FnïÚ@L…v+33ó……ü……koþ“þ“–ÅÚ@L…v+!3‡‡¨‡‡koþ“þ“iêÚ@L…v+!#3eü……ü…mmþ‘“ÂÚ@L…v+!#3;¨‡‡¨‡mmþ‘Íÿ’Â>$@!†W_O+3#Íõ›n¬Pü¤Íÿ’Â>$@!…W_O+33ÍZ›n¬ü¤P‡ÿ’êH&\K°PX@ riW_O@!€iW_OY@ &&,!+#+5463233#"&5466776654&#"¹TFER"y6$A7‡‡_s !%…!$œBONA+S!ÊZn%$@!†W_O+#531›õn\PüT–ÿ’‹>$@!…W_O+533–›ZnP\üTxÿ’ÛH&TK°PX@riW_O@ €iW_OY·+!,#+#54&#"##532654&''&&54632©Z#!…%! s_‡‡7A$6y"REFTœ$'I5Ö;aC_pPE<%nZÊ!S+ANOB ÿˆåH µ 2+.554667åb“PP“bUFPPxk¥f´g¤kü³Þ$’a´_‘sÿˆ¸H µ 2+'66554&'sc’PP’FPPFxÀk¤g´f¥kc#‘_´a’$Œ"Ìr@W_O +5!Œ@"PPÿÿŒ"ÌrWP"r@W_O +5!P¸"PP"Xr@W_O +5!X"PPÿÿŒ"ÌrW<ÿœÿç&±dD@W_O +±D5!<àdKKÜÿ`†‘5K°PX@ _=N@W_OY@  +76654&'3Ü8 e - {*988cÿÿiÿ`‘&]�]i©íÚ$@!_8N +#&&54677##&&54677í8 e -v8 e -Ú{+998c{+998cÿÿi¯ïà']ÿ�O]iO±¸O°5+±¸O°5+Ò©|Ú@_8N +#&&54677|8 e -Ú{+998cÿÿÜ©†Ú]I ±¸I°5+Ò©|Ú@_8N +#'&&54673|d- e ©c889*i©ïÚ@_8N +#'&&54673#'&&54673ïd- e ¤d- e ©c889*{c889*(3 3@0 LW_O   +%'73!'73ÌÀ¿hÄÄþ«À¿jÄÄ(ððîòððîò%(: 3@0 LW_O   +%7'3!7'3ÀÁiÀ¿þ«ÀÁgÀ¿(ñïððñïðð“(Æ%@"LW_O +%'73]ÊÊfÌÏ(ððîò“(Æ%@"LW_O +77'3–ÌÏiÊÊ(îòððÿÿ£DÕ'*ÿBC'* C*ÏC±¸C°5+±¸C°5+±¸C°5+ÿÿ�®ÉÚ&k–kjù®_Ú@_8N +3f®,þÔþ4"Ìr*@'W_O +5!!5!-ŸühŸ"PPPPûÜ"Ìr 6@3W_O   +5!!5!35!½ú½_¸"PPPPPPùMÿtô )P„µ3LK°PX@$  g e a @N@+  i  gYa QY@ ***P*OIGFD><;9-+)(!&!&! +5326''&67!5!&&776&##53233#"#!5326''&67&&776&##53233#"#þ4-/7 ú�u7/--;Y-+A}}@,-Y;å-/7 :33: 7/--;Y-+A}}@,-Y;ŒP++¤3P3 ¤++P'J5¤5/P/5¤4K'P++¤9O F9¤++P'J5¤5/P/5¤4K'û¦# q *@'L…†W`P +3#767!5!&'¼jçèi¾úä qþÙþÙï P þ\ÿ«YîGK°PX@g_8N@Wg_OY@  +!5!3ÿý]£ZUwP|ü½ýý# q*@'L…†W`P# +3#7667!5!&&'¼jçèi¾üvŠqþÙþÙïP û¥# q<@9 LWh_O# +'7667!5!&&''337667&&''3p¾ûJ¶ºjçèþºjçè#ïP ëþÙþÙïëþÙþÙýý#ôq .@+LWg_O  +%'!5!73ŠÈý;ÅÉi¾.2º#ÿPÿï7=ëû¥#ôq <@9 LWg_O    +7'!5!7333^ÈüñÉi¾.2ºÂçèi¾.2º#ÿPÿï7=ë''ï7=ëþÜï¸nK°PX@"iYgaQ@)€iYgaQY@  +7"'!5!32>32#54&#"db'þ6 ''#)9*FUU& '$)8ÜFP"$+,PA<< &+,ÿÿþ ÿ’Ì>'EýÁEÓùÿt $JO�·NMLK°PX@$  g e a @N@+  i  g Y aQY@'&%IGBA@?:8750.-+%J&J#! $$ +"&776&##5326''&633#"33!"&776&##5326''&633#"!!335ûXh(AssA(hX--/4BKKB4/-èXh(AssA(hX--/4'_ú£%4/-þûŒWO¤5/P/5¤OWP++¤;GN:¤++PWO¤5/P/5¤OWP++¤A#P%?¤++PÙùÿt %)-2@¯¶0.LK°PX@6   gea@M _8M a B N@4i   ge _8M a B NY@/43**&&;83@4?*-*-,+&)&)('$" %% +"&776&##5326''&633#"!!33375!%5"&546332#ûXh(AssA(hX--/4'%þÝ%4/-( j �¿ø% 9"""ŒWO¤5/P/5¤OWP++¤A#P%?¤++PcýýKPP+þ¬""!#ÿÿü ÿ’@>'Eû¾'.ýó.ÉþCÿ’E>$(H@ELggW_ O%%%(%('&#! $$ +"&776&##5326''&633#"3333'FýÕFçþ»ÿ’E> 3@0gW_O   +!!!33þ»�þÙ'¯Zn¬PüôP¬üTÿÿþŽÿ’Ÿ>'GýÁœ±°°5+þ>ÿ’5>#'^@[g   h   gc8M 9 N'&%$#"!  +37!#53#53!733733#3##7#!!337#S'þ¹õ››õ'F' 'F'Wb"al'F' 'þŒRF " ÒþÀP PþÊÒÒÒÒA´AÒÒÒÇ´´ÿÿþÔÿö.˜')ýú)°ÿÿü�ÿö˜')û¶')ý©)œÿÿüqÿöES'ÿB')û—)ýMÿÿþ‚ÿö�Ú')ý¨0œÿÿþ\ªê'3ý¨ÿÝ ±¸ÿݰ5+ÿÿþÑÿö/0'+ýø+°ÿÿüÉÿöß0'+ûð'+ý¨+ÿ`ÿÿüD-�g'+ûk7'+ý/7ÿ~±°7°5+±°7°5+ÿÿþ³ÿö�Ú&0œ+ýÚü,ÿö®Ú!/=K;K°.PX@ ! L@ ! LYK° PX@@ ri_8M aAMa ?M a ?NK°.PX@A €i_8M aAMa ?M a ?N@= €i_8M aAM a BMa ?NYY@%?>10#"FC>K?J850=1<*'"/#.!$! +%532654&##5325%667&&'%5%"&546332#"&546332#%"&546332#þ 2@KKA}}Fg90U8�6! "þÊ®úÉ!*+  +*!!*+  +*!›"""תG;;GU5`B9[6_–W˜  ™Z×d‚*! ++ !*þ\*! ++ !*""!#þRdÖ0 {K°PX@$W W e aAN@& g g eaANY@#      +"&5463275!"&5463275!þ¢$,,$$,,ê&üÌ$,,$$,,ê&�+%$,,$%+ PPþÊ,%$++$%,FPPÿÿþ�-Ÿg&œ+ý¨7±°7°5+ÿÿþ�-wg'+ý¨7ÿt±°7°5+ÿÿþÅÿ`10',ýø,°ÿÿü½ÿ`á0',ý¨',ÿ`,ûðÿÿþÅÿû;Ú'.ýä.Äÿÿühÿ’Ÿ>'.û‡'.ý]F’ýø™5@2…h g  9 N +#7!5!7!5!73!!!!˜>þRÌ:ýú$@F@¦þ<:þýä>ªP P¯¯P Pªû¥ÿ’>O@L… †h  g W _ O +7!5!7!5!7!5!73!!!!!!þDýBÚ4üò)4ü£yZFZŸýE4ïüö4>ü¦DnºLŒLŒLööLŒLŒLºÿÿþ�ÿö-Ú'0þ)¯ÿÿþ�ÿöMÚ'0þ+Îÿÿþ\ÿû¸Ú'0ýÚ0Óÿÿûúÿû½Ú'0ûx'0ý¨0ØþRÿûÌÚ,¥µLK°PX@2 gi   g_8M a B N@9 € gi  g_8M a B NY@% '$, +!$! +%532654&##532%5!567!"&546332#þž2@KKA}}Fg90U8¸ý¨' (üï"""תG;;GU5`B9[6_æPPð$PÒ""!#ÿÿûœg  '4ûx'4ý¨ 4ر° °5+ÿÿýåAl&4ýÁÿÿýÌÿ’ >'4ý¨ÿ°= ±¸ÿ°°5+ýËÿˆåH'-1L@IJ'I  h g 8M9N10/.-*)( +&&'!#7##7#537#5373373!667!545!37#å�™þ’'F' 'F'Wb"al'F' 'F'8™~@_33_@ýt`þÂþø " x¬�ÒÒÒÒA´AÒÒÒÒ}§WT}O´N~T4¯´´ýËÿ’>3?CÓµ&LK°PX@Dr  i hgge  8M9N@E€  i hgge  8M9NY@5CBA@?><:975420)(#!  33 +"&77!#7##7#537#5373373!'&633#"33!&&##53267!37#ÖXe þ('F' 'F'Wb"al'F' 'F'  fX--/3 <;<: 2/-ýVË,/KK.-þWþø " nWOšÒÒÒÒA´AÒÒÒÒ�OWP++Ÿ7OR7©++P�P´´ýËÿ’Â>#'^@[  g hgc 8M9N'&%$#"!  +!#7##7#537#5373373!3#3!5!37#Íþ�'F' 'F'Wb"al'F' 'F'Gõ››ý—tþ®þø " n@ÒÒÒÒA´AÒÒÒÒ6PüôP�´´´ýË|Ú'+7«K°PX@7hi W  i8M  9 N@8hi  g i8M  9 NY@.-,31,7-7+*)(#!'' +!7#537#53733733#3##7#"&5463237#"&54632ýû'Wb"al'F' 'F'Wb"al'F' 'ë$,,$$,,ý# " —$,,$$,,ÒA´AÒÒÒÒA´AÒÒÒ®+%$,,$%+›´þ»,%$++$%,ýËÿû‹Ú#1¯K°.PX@0  h  g8M _ 9 N@;€  h  g8M 9MaBNY@6%$,)$1%0#"!   +737#537#53733733#3##7#37#"&766332#ÉXjpüà'Wb"al'F' 'F'Wb"al'F' '2 " #()×ýý×ÒA´AÒÒÒÒA´AÒÒÒ´þ4""!#ýËÿûä48FK°PX@<  h  i g _8M_9NK°.PX@@  h  i g8M a>M_9N@K  €  h  i g8M a>M9MaBNYY@0:9A>9F:E8765443210/.-,+*'%!$ +!7#537#53733733546632#532654&#"!3##7#37#"&546332#ýû'Wb"al'F' 'F'¢=lGIl;gVZ2AHPDEQþù"al'F' '2 " ~$$$$ÒA´AÒÒÒÒAc76cC[vd¯JBAKKAA´AÒÒÒ´þ4"" ýéÚ+/37k@h  h g 8M9N76543210/.-,++*)('&%$#"!  +!7#537#53733733733733#3##7##7##7#37#37#37#þ'Wb"al'F' 'F'ð'F' 'F'Wb"al'F' 'F'ð'F' '2 " Äð"ð " ÒA´AÒÒÒÒÒÒÒÒA´AÒÒÒÒÒÒÒ´´´´´û‘Ú;?CGKO�@Œ '%#!h&$" g 8M(9NONMLKJIHGFEDCBA@?>=<;;:9876543210/.-,+*)('&%$#"! ) +!7#537#5373373!73373!733733#3##7##7!#7##7!#7#37#!7!37#!7!37#ûÁ'Wb"al'F' 'F''F' 'F''F' 'F'Wb"al'F' 'F'þò'F' 'F'þò'F' '2 " Ä"þò2 " Ä"þò2 " ÒA´AÒÒÒÒÒÒÒÒÒÒÒÒA´AÒÒÒÒÒÒÒÒÒÒÒ´´´´´´´´´ù9ÚKOSW[_cg³@° 31/-+)'h20.,*(&$" g 8M4%#!9Ngfedcba`_^]\[ZYXWVUTSRQPONMLKKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! 5 +!7#537#5373373!73373!73373!733733#3##7##7!#7##7!#7##7!#7#37#!7!37#!7!37#!7!37#ùi'Wb"al'F' 'F''F' 'F''F' 'F''F' 'F'Wb"al'F' 'F'þè'F' 'F'þè'F' 'F'þè'F' '2 " Ä"þè< " Ä"þè< " Ä"þè< " ÒA´AÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒA´AÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒ´´´´´´´´´´´´´ýËÚ#'ßK°PX@,h   g8M  9 NK°.PX@6Wh W  g8M  9 N@8hg  g g8M  9 NYY@.$$$'$'&%#"!  +!7#537#53733733#3##7#5!37#5!ýû'Wb"al'F' 'F'Wb"al'F' '¸ük " »¸ÒA´AÒÒÒÒA´AÒÒÒÂPP¯´ÿPPýËÿœÚ!O@L  h  g  c8M9N!  +##7#537#53733733#3#!37#þÎ: 'F'Wb"al'F' 'F'Wb"al,úüW " d6ÒÒA´AÒÒÒÒA´AëKw´ûsÿœÛC/3Y@V. K%$J  h  g  c8M9N3210// +##7#537#53733733#3#!&&55466737#üv: 'F'Wb"al'F' 'F'Wb"al,sBLI‡\@^42]?úD " d6ÒÒA´AÒÒÒÒA´Aë*ŸcªbŸnUU~OªL|TKw´ÿÿýóÿ’4>'=ý¨4‚±°‚°5+ÿÿû›ÿ’4>'=ûP'4ý¨‚4‚±°‚°5+±°‚°5+þÿ’ê> 4@1…†hW_O  +3!!!!þc_€—ýJ<òüðjn¬þ¬P Pþèû ÿ’ê> 4@1…†hW_O  +3!!!!û c_€úÙ<cújn¬þ¬P Pþèþÿ’Ö>#@  L…v +35%667&&'%þc_A?þR6! !þþún¬­þëd×Z—  éýKÿÿþ>ÿ’Â>&=µ=ýóûúÿ’Ö> ?@<… †hW_O    +3!!!!!3ý½c_€×ý <2ü°jýÞc_þ�n¬þ¬P Pþè¬üTÿÿüÿ’•>'=ûÈ'=ý¨=ˆþfÿ’š>@L…v +3#'þfcnc_þÜþÜn¬üT DDüöþfÿ’š>@L…v +3737þ�_$$`þ�n¬üöDD üTü"ÿœ†îAK°PX@c8N@…W_OY@  +5!3!ü"…Z…dKüùKýäÿœÿç@W_O +5!ýä8dKKþ\ÿû�Ú N@K g g_8Ma BN      +%375!5!"&546332#þ~ j Ìôþ ôý"""×ýýÃPPðPP¯""!#üÿû�Ú !d@a g  g _8M a B N !       +%375!35!5!35!"&546332#ü0 j Ìåxåû¾åxåúº"""×ýýÃPPPPðPPPP¯""!#}ÿ�å/@L…v+53yüüfþès•z“þ-þ1dÿ’*> -@* L…v  +53353uþï7þâGþï7þân¼3½þ*þ*¼3½þ*þ* ÿ’ï> -@*gW_O  +!!#33ïþ±O¯¯þã @ L…v+#3#3ã7þâ7þq7þâ7nÖÖþC3þDÖÖþC3iÿ’¸> /@,gW_O +53#5!#3i¯¯O2<55>ýÈC:/U>S!"V?X0;?0T=SUþÿ8JJ8%<##T1?@1V?XT=S2=9U@L99L#<&&<#Hÿtf#*2:@7(2' +"L………v## +5&&'3'&&546753#4&'56654&''^kZ;6KQcTlIPh„ƒhR/;ø nJRl ƒ¶-Bå6ýó<0,AZÿ°XÚ*.š¶  LK°PX@.g  i Y  c _8N@/g  i   i  c_8NY@'+++.+.-,%#**  +%"&5546323'5#53533##5#'26554&#"5! R`_S>NttZ^^ZN 8>>89==—¤2n^)_n>5}>FD@@DÐPPÿö ä+`@]€   € g   ga>M a?N)(&$!  ++ +"&55#535#5354632#4&#"3#3#326534dtIIIItdbtZA;;C­­­­C;;AZt pb-AdA7bpqa>CC>7AdA->CC>aqÿLÚ3@0g_8M_=N!#! +53265#5354633#"3##i5>  QI¡¡@ááp]´R=4*RÄBIP<ÃRþÖXk2ÿö&ä1Z@W€  € g  ga>M a ? N11-+)(&$"& +5!76654&#"#663235!!32653#"&5472%818AYnaYi% {þ ôþÒ;18DYraYl3ŽF +&'51U_NH"5F’FF -%2?1UiXH;+&Ú!=@: gg _8M 9N!&! +35#535#5332##3#32654&##nPPPPßBa66aB…ææ…9CC9…›PUPJ3\>=]3UP›�D99DKä*B@?L€ga>M_ 9N**"& +35>54'#53.54632#4&#"3#!K2#hKtbcs_B7:@"¹£#3rd59P19&UdeY2<95#30P+I5P-+Ú6@3L_8M9N +!5575575#5!#77°°°°ÓþÓ°°°°·0K0d0K0ÚOOÂ0K0d0K0Ï#5Ú>@; Lh  g8M 9 N +7535#53366733#3##5<Ãà¹`Ž  Ž]¹ ÃÃÃZxKKK�þÔ##,þKKKxxXÿL Ú!B@?  L€~_8M_=N!!%" +5&&5546753#&&#"32673N\\NZN^ZB8;GG;8BZ^N´® lU–Ul ®­ cN59C>—>D:4Nc ­HÿL„-:@7-L€~i_=N"" +3#4&#"#5&&5332654&''&&5467ZGVZD55B+'rIQ_RZWfZN@>J/,oEO^M„¥eH2??2(9 oLTn ®­ lX=EH:,A gFNh Fª9†K° PX@0rrijW_ O@2€€ijW_ OY@$#$# +5463232553#".#"5!FH:%2"/UG;%2"/UÌqF;G''7FF:H''7FÇPPÿö;0 #;@8iYaQ ##    +"&54632!"&54632"&54632d!&&!!&&o!&&!!&&é!&&!!&&°"##""##"þF"##"žÿÉÆ]!/µ,% 2+567&&55467&'567&'66554&'¨4)8//8)4P::P4)8//8)4P::(+77++77+7- -~KK~- -- -~KK~- -2Cq((qCCq((qC2X› · 2+57',,þÓûÖþâÕÕ2iþïý— †ÃÅÄÂÿÿÚð~’)ú±°ú°5+dX0 R@O giY ga Q      +"&5463275!"&5463275!P$,,$$,,†^ýø$,,$$,,†^�+%$,,$%+ PPþÊ,$%++%$,FPP›ÿöÇ0oK° PX@&rpiYbR@(€~iYbRY@ +"&54632#54&#"3265531DRRDDRZ!!!!ZR RDDRRD(2!!þÞ!!2(DRFLž# K° PX@9r rij g W _   O@;€ €ij g W _   OY@  # #"!$#$# +5463232553#".#"5!5!FH:%2"/UG;%2"/UÌþ4ÌÖF;G''7FF:H''7F²LLØLL(ÿL0Ú ,@)…W_O +533333(AZÒZA´R<üÄ<üÄRÿþÔYü@…v+3ÿZþÔ(úØ<*@ Jv+#54&&'5>7iiYaQ ##    +"&54632"&54632"&54632= '' &&Ð '' &&Ï '' &&÷' && 'ï' && 'ï' && '#F:Š7@4ggW_O +%"&&554663!!"!!3! >i??i>1þÏ'@%½þC%@'1F9c>�>c9P'@%P%@'P¥¶½â7@4ggW_O +%"&554633#"3#336??6££$ææ$£¶?6B6?-$*$-æsƒ #A@>iiYaQ ##    +"&54632"&54632"&54632- '' && '' && '' &&÷' && 'ï' && 'ï' && 'xàþ@…v+3!xhþþ—ÒIJ/@,gW_O +5!5!—-þÓ-z88¨88ULH @@=ggW_O   +5!5!5!U®þR®þR®üLLØLLØLL-s+!D@A… †gW_O  +"&53332653#46332#4&##"õ\lZ;3n3;Zl\þÊl\n\lZ;3n3;w\N)11)N\þüN\\N)11)iX+ A@>igYaQ      +"&546325!"&54632$,,$$,,ýÔ^ª$,,$$,,•)""))"")sPP¹)""))"")PôÚ 2@/ggW_O +35!!5!5!5!PJþÙ'þ¶¤RRâRý&2&Ú *@'L†W_O  +!#6672ô½{Li  eÚý&Šþ_4XY4 PÿûÐ (}@ JK°PX@'rriYbR@)€€iYbRY@ ( (%# +75%667&&'%554632326553#".#"U6! "þÊ®þMG;#0&#UG;#1%$¾W˜ ™Z×dþk;G ;G #µ4ß%+@(iYaQ$$$$+7"&54632326544#"&''&#"3±CKJC5M6 "# DJID7P3## µNFGO94==+(&*DMGGO:4B8,(&*ÿ°q¨$*@'…†W`P+%7!73!½ýté@½ŒéqÃðÃð ëD©4@1igYaQ$"+!#"&54632!2654&#"Dþ‚3#(77(#3~þ%5!)7()6)!Lÿÿ’åü &@#…YaQ   +"&5333¸XaZ_-nWOÄü $@!†YaQ !#+4633#"ÿaX--_þÔÄOWPVü<2X› µ 2+%%%7'X"þõþÕ, !þøþâÕÕu&öþíiþïò$ðÅÄÂÿþÔYü@…v+3ÿZþÔ(úØÿÿ’ôü$@!…W_O+33ÿZ›njûæPÿþÔô>$@!†W_O+3#ÿõ›þÔjPûæAÐ (;@8 JYibR ( (%# +%%5%54632326553#".#"þR®þÊ! "6þ>G;#92,UG;#:1-¾×d×W˜  ™þè;G;Gÿöb” #7@4YaQ ##    +"&546323"&546323"&54632= '' &&Ð '' &&Ï '' &&' && '' && '' && 'Aÿì&/@,†gW_O+!#3##5#535#F̺¿¿X¿¿º&FáPÃÃPáAXS µ 2+%57667&&''557667&&''5Ò! !ÒJý¨Ò! !ÒJAS–  �VàNäS–  �VàNAXS µ 2+%%5%%5%Xþ¶JÒ" !Òþòþ¶JÒ" !ÒAäNàV�  –SäNàV�  –ëN©:@7igYaQ$"+5!6632#"&'2654&#"~3#)66)#3]5*!)6)(7)!"FÚC@@……   € gYaQ33 +3332653##"&55#53533#F2QJ2JQ2hc6chÒxx(xxÚýîJQQJýîaggasy&yy&yÿö2bž+B@?iiYaQ! '% +!+  +%"&&546632'26654&&#"7"&54632,X�QQ�XYŒQQŒYJvDDvJJvDDvJ  2Q�XYŒQQŒYX�Q2DvJJvDDvJJvDÌ   +-Ú @†W_O+!#!#+Zþ²ZÚý&ˆýx+-Ú&@#…W_O+33!3+ZNZÚýxˆý&-P+ð<@9 L€„W_O+5!3#&&'-þþ³z³\u  r¥KKý«ôþ @ ?? þÀ+-Ú&@#†YaQ33+346332#4&##"+uo:ouZHD6DHþkqqkþþDHHDþ+-Ú @…YaQ33+3332653##"&5+ZHD6DHZuo:ouÚþDHHDþþkqqkFÿœ /Æ@ LK° PX@F…r r †i  j  g  W  _ O@H…€  € †i  j  g  W  _ OY@//.-,+*)('&%#!#$+7537#537.#"#54632736553#"'3#!!#7F‡/¶Ð)"!/UG;+5#G?Q.UG; !½×/þà;?;LLŒLz1%7FF;G!/Ñð6FF:HcLŒL°°#ÿ’:>&Ì@ !LK° PX@2p  q hgW_ OK° PX@1…  q hgW_ O@0…  † hgW_ OYY@$"( +7#537&&5546633733#3!!!#"f(\z-Sc:gE7F7lŠtþþä,Hþš(/?:taCInnRz sV,Bb6––RþÄRvRn=G;HBÿ’5>!)‘@ $LK° PX@1…  qg iW_ O@0…  †g iW_ OY@'%!! (!" +3537#53&#!5!273##!!#74'3265Ž,ºØs þÏ19F@4<:gE1,4þ®(F(M4kCIRvR:R›°cC,Ac6vRnnÌO#þÜHB-P+ð<@9 L€„W_O+5!36673-þþij\u  r[³¥KKý«ôþÀ >> @þ UÐ (@% JW_O  +%%5%5!þR®Lê! "x®¾×d×þor þOPPFÿÄ ?ä@&' 7 LK° PX@O…rr  r  r †ij  i Y b  R@S…€€ €   € †ij  i Y b  RY@??=;9842/.&###$#+7546327&&#"#54632332553#"&'32553#"&&'#&#"FH:%#/UH:,6e?x /UG;! #/UG;$0!V?g /nF;Gj.7FF;G%þ­ 7FF:H a)7FF:H%ô"7F#ÿÄ: "*’@  LK° PX@1…qg  g W _ O@0…†g  g W _ OY@'%$#"!(!! +7537#537#!5!273###74&'3#32665#Ÿ<Ûø<þÏ1/?4>P?h?o.?.:,#7†£c9‚‚h(EœPª'@%#ÿÄ: %+�@ )LK° PX@0p † h  gW_O@/… † h  gW_OY@+*" !1( +7&&5546633733#3#23!!"'37#"7#x4j.?.ˆ¤<àý<1þÏ/:žc9‚‚PªPªP…̪'@%Œ'Cš-+™)W@T& L……   € „i Y a Q))%$#!""" +746337#"&5333736653##32#4&###7-l\!%\lZ;3BMFL',Zl\!$\lZ;3BKFK(,sN\Z\N)1ÒÐ.$N\Z\N)1ÍË.$UÿºÚ#@   L…v+7577'573#77'7667&&U‡AÈâV?_–ÿM?@Ó8+c! "AWB¼cZqøþíKd߸î}1 Uÿ’  m@  LK° PX@…qW_O@…†W_OY@+3537577'573!!#7'7667&&Uc@£Å-ò @?IlÀL þÙ%?%î&! "R¾QW`‰xZ†ÁÜ6d`äRnnÞJ UÿÄÙÊK° PX@4p qh g  W  _  OK° PX@3… qh g  W  _  O@2… †h g  W  _  OYY@+7537#537#5!733#3#3!#7U|.ªÂ.ð /?/f.­Å.óþô,?,LLŒLŒL‘‘LŒLŒLˆˆUÿºÚ)@&  L…v+'57737'7xb…çQ?D{Ÿ:ÙóY'$K! "FCdsëÅ>WN¨kZzþÿzh%  Uÿ’  m@  LK° PX@…qW_O@…†W_OY@+3537'5%737'!!#77UcN± ,?BdI­ÇE þÙ%?%0S3†! "RêYd�ƒ]!W1ÚVZcÏRnn±)›B  #ÿ’:>ÊK° PX@4p q h g W _  OK° PX@3… q h g W _  O@2… † h g W _  OYY@+3537#!733#3!!!#73##ˆ,´d7F7m‹tÿþã,Iþ™(F(xtìRvà––RþÄRvRnn<#ÿÄ: C@@L…†iW_O!( +7&&5546633733#!!"'#"xCFR:gEX@?@š·o&þÏ @:Zm;CI<¾nN,Bb6´´RþÄRµ�k6HBÿÄ5 D@A L…†gY_O(! +753!5!273###74'3265·oþÚ1 @?CFR:gEX@?@#Zm;CIxRigYaQ      +"&546325!"&54632,%..%&--î�È%..%&--Ì)""))"")¥KKð)""))"")Uªê/@,gW_O +5!5!U®þR®šPPðPPUÿÄ =@:…  †gW_O +7#537#5333#3#xQt‘8Éåg?gЦ8ÞûQ<æP P"þÞP PæUAS ³ 2+75%667&&'%5U6! "þÊ®AW˜ ™Z×dUAS ³2+%%5%þR®þÊ! "6A×d×W˜  ™UÐ (@% JW_O  +75%667&&'%55!U6! "þÊ®þR®¾W˜ ™Z×dþkPPUÐ (@% JW_O  +%%5%5!þR®þÊ! "6þR®¾×d×W˜  ™þèPPA:VK°PX@g;M`9N@…g`9NY@ +3535#53533#3Fº¿¿X¿¿ºFáPÃÃPáFÿÿFi+&"d"ÿo±°d°5+±¸ÿo°5+d¹ô‹FK° PX@qW_O@†W_OY@  +%5!5!ŸþÅ�¹‚PÒFúÇh±dDK°.PX@iYbR@)€€iYbRY@$#$# +±D75463232553#".#"FH:%2"/UG;%2"/ÿF;G''7FF:H''7FPTÚ '±dD@L…v  +±D3#&&'P³T±Qp  sT†þz% %þþ# 5ù*9K@H Li  Y  aQ,+31+9,9%#**  +7"&5546323>32#"'#'2>7'&#"!26554&#"¦;HL=f$3$;HK>f$2$ ,'' && %  J=K=Jc- J=K=Jc. < T4)"K"))"K") T4ÿöbÚ",O@L +*L…†iYaQ$##,$, ''+37&&54663273#"&'&#"26654&'P3;Q�XOC?GT5=QŒY*L!: $ ü.6?c:Ü?c:'!ý0w*}JYŒQ"^~*~LX�QWh3Wx> @þ +-Ú&@#†YaQ33+346332#4&##"+uo:ouZHD6DHþkqqkþþDHHDþ+-Ú @…YaQ33+3332653##"&5+ZHD6DHZuo:ouÚþDHHDþþkqqkÿLÚ(@%gW_O!%!+532654633#"#i5>QI¡¡@p]´R=4@BIP<ýÁXkÿÿ2&ÚT(ÿL0Ú *@'†W_O +#5!###nFFZÈ´K1NZ*‡+@@+pb:>=;:>> sdPbp726bR>6Ng?ÈdsPFAPBEFAPAFÿÿ]ÿLû&€›½Ú"@…v+!3!3cZþÞZÚý&Úý&ÿþÔYü@…v+3ÿZþÔ(úØÿÿˆ+ü @ Iv+.53+]†IZqaxn aîýu¢ÿþÔ+H @Jv +4667ÿI†]aqþÔîbŸnX¢uýÿÿÿþÔYü2-ÿˆYü @ Iv+56653-bpZH‡xX¢uîýa n-þÔYH @ Jv+#4&'5YZpb]‡HþÔîu¢XnŸbÿûJß -;™K°.PX@,  i  ia8Ma  9N@4  i  i8Ma8M 9Ma BNY@+/.! 64.;/;(& -!-   +"&75&632326554&#""&55&632'26554&#"™@KK@@KKÌòJþB####B@KL@@KK@####�I>A>II>A>IþpÚý&Ô$A$$A$þ'I>A>II>A>IE#A$$A#ÿûÿûrß 9GU·¶7* LK°.PX@1i   ja8M  a 9N@9i   j8Ma8M9M  a BNY@7IH;:! PNHUIUB@:G;G53.,(& 9!9   +"&'5&63232655&&#""&7546326632#"&''26754&#"326754&#"}7@A77A@º¶CþJ?ö2;;1&./%2::2&./»¸>5A5>>5A5>þHÚý&óAAþ@788@& &@887@& &5#8$$8##8$$8#xàe /@,…†W_O +!5#53533#��J��“@’’@“ 1¸I ,@)Wg_O  +5#53533#ddPdd1iFiiFi77X3@0…€†YaQ+%.#526673®c£ii£cZ V�\\�V 7Ee7d6cCLsEHzO7ÕG@D…€€iW_O +%.#5266735!®c£ii£cZ V�\\�V þ/Ì´Ee7d6cCLsEHzO´PP7ÿö þ #/G@D iYa  Q%$ +)$/%/##    +"&54632!"&54632"&54632!"&54632Î$..$$..þ—$..$$..$$..$$..!$..$$..\-$$--$$--$$--$$-þš-$$--$$--$$--$$-UL#'ªK°$PX@; rgi i  g W _ O@< €gi i  g W _ OY@%$$ $'$'&% # #"!$!$!+532654&##532##"&546325!5!ÿI†‡3==3×®þR®!U7:2/8#sŠLLØLLÿÿÙÿö0+#:¨<@9ggW_O +%"&&554663!!"3!5! Eg::gE1þÏCIIC1ýøÈ6cA,Bb6RHB(BHRÈRR5¨9@6ggW_O!%!+75!26554&#!5!2#5!1CIICþÏ1Eg::gEþÏÈRHB(BHR6bB,Ac6ÈRRÿ°K¨Û1L@I ,!+ L… †YbR11''!! +'7'3325&&''3325&&''3#76675###76675##PŸŸj}ˆ(  Wj}(  WjœœjW  (}jW  (ˆ}KÈÈ  m  mÈÈn   n   sÿ’Yü &@#…YaQ  +#53253 --_Z`nPVÄü @†YaQ!"+#4##532YZ_--Y`þÔÄVPWO2X› µ 2+7'%# ,þÓþ÷"ÖX%óý—ñ#ð†ÃÿÿÿþÔYüôdÿ’Yü@…W_O+#533Yõ›ZnPdþÔY>@†W_O+##53YZ›õþÔPXX*@'…†W_O+13!!ZþþXÿPþ÷ULÑ R@Oi i gW_ O     +"&54632'2654&#"5!5!,6BB66BB6!!!!¼®þR®í?33??33?5!""!þLLØLL´Ò¤ 1@.iYaQ     +%"&54632'2654&#",4DD45CC5#--##--ÒD45CC54D(-##--##-ÿÿFúÇ"<&@#†W_O+3!#!<àZþÔýéÅþ;< @…W_O+3!3!7.'33"P V�\\�V Z b£ii£b 7OzHEsLCc6d7eE#F:Š2@/ggW_O!$!+75!26655!5!54&&#!5!2##1(?%þC½%?(þÏ1?h??h?FP'@%P%@'P9c>�>c97ÿLÚ :@7LgW_O +55!!!%3#7úúåþ´úúLþFAýýAü´2”–2.þbþl..˜šþfx5X(@%gW_O!%!+75!26554&#!5!2#1CIICþÏ1Eg::gExRHB(BHR6bB,Ac6XX&@#†W_O+3#5!#ÿÿXÿPPýøXX$@!…†W_O+!#!5!53XZþþZ PÿCÿ’ô>–µLK° PX@3…qg  g W _ O@2…†g  g W _ OY@+353#537!5!733!#75#3P9_u“Sþ÷'%F%7þ½(F(/NNl_ËRRâRddý&nn¦ÔÔRþþÿö;0 #<@9iYaQ ##    +"&54632"&54632!"&54632,!&&!!&&é!&&!!&&o!&&!!&&°#""#þF#""##""#A&o7S K°PX@err r  r  r rij  i  j  i  Y b R@k€€  €   €  €  €ij  i  j  i  Y b RY@.888S8SPNKIFEB@=;7742/-*)&$!####+54632326553#".#"54632326553#".#"54632326553#".#"AF<&9.+UF<&9/+UF<&9.+UF<&9/+UF<&9.+UF<&9/+Ù>I >I ×>I >I ×>I >I 2&Ú3@0 L…†W_O+33373'6677#ï½[2Ù2\¾`  6´ÚÊÊý&ë4ZY4Úÿöbƒ #A@>iiYaQ ##    +"&54632"&54632"&54632 '' &&þñ '' &&þð '' &&÷' && 'ï' && 'ï' && 'XX!@…W_O+33!53ÿZÿý¨ÿXýøPP<¼ 9@6L……W_O   +7366735!ï³\u  r[³þì®ÈôþÀ >> @þ ÈPPÿöb€%2?K@@=JFB>:60,'%"L…YaQA@@KAK +%"&&546632&&55%6677&&'6654'%7667&&''27'&&',X�QQ�XYŒQQŒÙ8<` 7b`.þ‰'#; ->b?6; " " ;6Q�XYŒQQŒYX�Q–7k B27$2B þ›U#_7%5S7_#U4%þáV<;Vÿöb€!B@?igYaQ!!  +%"&&546632"!.2667!,X�QQ�XYŒQQŒYCnG  GnCCnG ýþ GnQ�XYŒQQŒYX�Q:9c@@c9ýø9c@@c9ÿöb€ 'N@K igg Y aQ"!%$!'"'  +%"&&546632"!&&!654'!267!,X�QQ�XYŒQQŒYKx Æ xþ±þKx þ: xQ�XYŒQQŒYX�Q:G;;GþüþâG;;Gÿöb€#:@7"!LiYaQ## +%"&&546632&#"26654&',X�QQ�XYŒQQŒþ£/(!6>JvDJvD3+þÞ9Q�XYŒQQŒYX�Q67!#,X�QQ�XYŒQQŒ-Õ:[8X8[:-8[:þÓÕ:[8Q�XYŒQQŒYX�Q^9[< ÙÙ <[9PÙ <[99[< (0ä@ Jv+'&&'#5%0´P¶™ ý–j  ¢kâá/íÚ&@# IW_O +7!467'#LO�Sþ•9n $‹Oþ{S" þ”9n2Nb 0@- L…†W_O +%767!5!&&''3 žþ8à  žiÛÜ2É"P Êþéþç/í @ JW_O0+7!27&&5!L$ þ’9kSþOn9þ” "Sþ{(ÿö0Ú@ Iv+%536670þûþý¶PAjáâk¢  jý–<)í'@$ JW_O +%!7663 OþSk9þ’ #OO…Sþæ" l9þ’ 2Db *@'L…†W_O+%#3!!NhÜÛiž  Ãþ82Ê P"<í)Ú @ IW_O0+!"&''! þñ# n9þ•S�‹þ’9l "þæS…ÿ°2¨b5@2L…†W_O+#3!&&''3#767"žhÜÛiž    žiÛÜhž""ÉÊ  ÊþéþçÉ"(ÿV0„³ 2+755%'&&'6677(¶¶´´þû8k¢  :  ¢kâáj üÆ já  N½!}@ LK° PX@)rgiYaQ@*€giYaQY@!!$#$# +7546323277#53#5#".#" L:#,UŒÍFPM3G",¥1=K!!!`NFס`A!! 1 _NÇ%@ LK° PX@)… qiYbR@(… †iYbRY@%%##!##! +7'57332>3233'3#7#".#"##�ƒƒ^˜4"++"G˜iyyhn$+)# n_‘F‘¥ + + ¥‘F‘t ) ) t _NÇh¶LK° PX@"pqW`P@ …†W`PY@ +7#'573373!!#'i‚^ƒƒ_ƒ��aˆ þõˆ`�댑F‘ŒŒŒPŒŒ _NÇa¶LK° PX@!pqW`P@…†W`PY@ +%##7!5!'33'3#ï��`ˆþõ ˆa��ƒ_ƒƒ^댌PŒŒŒ‘F‘ _NÇa· LK° PX@pqW`P@…†W`PY@+7#'573!73#'i‚^ƒƒ_ƒ}hœœg}댑F‘ŒŒ³µŒ _NÇZ· LK° PX@pqW`P@…†W`PY@ +%!#7'3!'3#ïþÿ}gœœh}ƒ_ƒƒ^댵³ŒŒ‘F‘nê& 2@/ L…W_O +353573'3n’’œFš’’Pj„e‹Šfƒþ—P _NÇ `¶LK° PX@pqW`P@…†W`PY@ +73!'3#7! R“ƒ_ƒƒ^‚þm_hŒŒ‘F‘ŒŒnê& +@( L†W_O+!#7#'5#n|’’šFœ’’&Pþ—ƒfŠ‹e„j‚D.@+ L…†W`P+%#3!&&''3#7667!DUUý¼W ea  afþ©‚�  }ÈÈ€  nNÚ=@:L€†iW`P&!$3+7'7332654&##532##ª  ae ËK]]KMtAAtMËfnÈÈ} PFEQP?i>Fh8 € nNÚ7@4L€†iW`P$!&$+%#7667#"&&546633#"33&&''3®afËLuAAuLK]]KË ea n€ 8hF>i?PQEFP }ÈÿÿLôG@Jv+'ÿõôûîA½üw ÿÙNRw@ LK° PX@%pqhW_O@#…†hW_OY@+7!5!'7!5!'3‹bþãbbþãbbaaaa'wPwtPw}Dz}D}ÿöÿLbG $@! Jv  +'#57mõÃæÃõ´ûîA½üw‰½Aîü#Xq l¶ LK° PX@%pqhW_O@#…†hW_OY@ +%7!5!7'!5!'3jþ�°??þPqjièç#‡PPPP‡þÙþÙÿöÿBb= @ Iv+373'5m2Ãõ´2õÃ=üw½AîûüîA½#Xq e¶ LK° PX@$pqhW_O@"…†hW_OY@ +%#3!!!!QjçèijqþP??°þ�#''‡PPPPÿ°#¨q w@ LK° PX@'pqhW_O@%…†hW_OY@  +73!'3#7!'!7'!—çèij*jièçjjþÖj©¨??þX?#''‡‡þÙþÙ‡‡×PPP#Xq}µ LK°PX@-pqhgW_O@+…†hgW_OY@ +55!7!5!'!5!'3#7‡Iþ0ÐIþyJCièçjCxN]N]NUþÙþÙUD 1@. JgW_O  3+###"&5#'33D›!‚!›À¿¿pœåþW!!©1þôÏÏþ!ß2Xl 3@0 L J IgW_O%!+%5#"&55463357'!!'ë!!ë1þûÇÇþÜ$2¤!z!¤þã»»ºlœ ÿöNV³2+%5%+þß' öiùúiÿö®bÚ >@; L J†W_O  +53!#53#' ´¸´´ýÕõõ_––ŠPPPþÔ,þÔ¹¹ xN/@,LK…†W_O1'+%#76675#!5!25&&''3ž•V  & þ»A&W‘°xhniÒdN0'9@6%L K…†W_O#! ''+%"&54776675#!"&5463!25&&''&54632u"&(þõ##* # "®­d" '   # ÍÏ iN+&@#LJIW_O+%5!5!5�þ{…¿i¾F¾á iN+&@#LJIW_O+%5!5!5�þ{…¿iªnªáÿØK€I:@7L…†W_O!6+7'73663!!"&'§ÏÎg†  )àþ )  ‰Kÿÿ¥  P ¤ÿØK€I:@7L…†W_O!'+%76675#!5!25&&''3K†  (þ à(  ‰iÏÎK¥  P ¤ÿÿÿ°K¨I)C@@$%L…†W_O))7F+7'73663!25&&''3#76675#!"&'ÏÎg†  )h(  ‰iÏÎg†  (þ˜)  ‰Kÿÿ¥   ¤ÿÿ¥   ¤þÔXÿy@W_O+5!XþÔ¥¥þÔX@…v+!XþÔJþ¶þÔXÃ@…v+!XþÔïþþÔXh@…v+!XþÔ”ýlþÔX @…v+!XþÔ9üÇþÔX²@…v+!XþÔÞü"þÔXW@…v+!XþÔƒû}þÔXü@…v+!XþÔ(úØhXü@…v+!Xh”ýlWXü@W_O+5!XW¥¥þÔKü@…v+3KþÔ(úØþÔ–ü@…v+3–þÔ(úØþÔÈü@…v+3ÈþÔ(úØþÔ,ü@…v+!,þÔ(úØþÔwü@…v+!wþÔ(úØþÔÂü@…v+!ÂþÔ(úØþÔ ü@…v+! þÔ(úØ,þÔXü@…v+!,,þÔ(úØ þÔXü@…v+3 KþÔ(úØþÔ,h@…v+!,þÔ”ýl,þÔXh@…v+!,,þÔ”ýlh,ü@…v+!,h”ýlþÔXü@……v+!!,,þÔ(ýlýlþÔXü*@'………v+!!,,h”ýlýl”ýlþÔXü@……v+!!XþÔþÔ(ýlýlÿöþÔXü@……v+!!,þÊbþÔ””úØ,hXü@…v+!,,h”ýlþÔXü*@'………v+!!,,ý¨,h”ýlýl”ýlþÔXü@……v+!!,,þÔ””úØ7<ÿXü #'+/37;?CGKOSW[_cgkosw{ƒ‡‹�“—›Ÿ£§«¯³·»¿ÃÇËÏÓ×Û53!5335335335353!5335335335353!5335335335353!5335335335353!5335335335353!5335335335353!5335335335353!5335335335353!5335335335353!5335335335353!53353353353<ýä<<<<<<<<<ýä<<<<<<<<<ýä<<<<<<<<<ýä<<<<<<<<<ýä<<<<<<<<<ýä<<<<<<<<<ýä<<<<<<<<<ýä<<<<<<<<<ýä<<<<<<<<<ýä<<<<<<<<<ýä<<<<<<<À<<<<<<<<<@;L†iW_O## +%"&&546632!.#">7,X�QQ�XYŒQQŒþ£=jDFqFJvD@e?2Q�XYŒQQŒYX�Q6FqFDj=Dvcê?e@ÿö2bž #/5;GH@EC=9831/+*"! D;4LiYaQGEA?$!+632&&#"67%7&47&6654&'77&%6773267#"Û%,,% "!Ë)J=#fJ),#þ 00 20 ýÅ,#=Ji=#,)Jí !" %,,” 0`J),#=`,)J=À,% "! %!" %,,%K=#,)#=J)00 ÿö2bž/I@F€~iYaQ! )' /!/  +%"&&546632'26654&&#"7"&&546632,X�QQ�XYŒQQŒYJvDDvJJvDDvJ7Y55Y79Y35Y2Q�XYŒQQŒYX�Q2DvJJvDDvJJvD?5Y77Y53Y97Y5ÿö2bž/?S@Pii  i Y aQ10! 970?1?)' /!/  +%"&&546632'26654&&#"7"&&546632'26654&&#",X�QQ�XYŒQQŒYJvDDvJJvDDvJ7Y55Y79Y35Y7+D''D++D''D2Q�XYŒQQŒYX�Q2DvJJvDDvJJvD?5Y77Y53Y97Y5/'D++D''D++D'´õ¤å 1@.iYaQ     +%"&54632'2654&#",4DD45CC5#--##--õD45CC54D(-##--##-ÿö2bŸ³2+% ,þÊ66267þÉÿö2bŸµ2+% 7',þÊ66þÊèèè267þÉèèééÿö2bŸ · 2+% 7''7,þÊ66þÊèèèè���267þÉèèéé����<Ð%@"  L…v+353'366775'&&'#ð´´~®®CbbccDGEþ»Gþ¼<6»¼66¼»5<X”@…v+5!X<Xý¨<X”*@'gW_O+5!%!!XýÚôþ <Xý¨2ô–ÒÂþ@…v+7!–,Ò,þÔ–ÒÂþ*@'gW_O+7!'35#–,úÈÈÒ,þÔ2È<X”)@&gW_O+%!!!Xý¨X2þü<XýÚôþ <X”*@'gW_O+5!%!!XýÚþü<Xý¨2ô<X”+@(L…W_O+5!%!XýÚô<Xý¨2ô<X”,@)L†W_O+!!Xý¨&þ ”ý¨X2þ <X” 1@.gW_O +5!%3#!#3XýÚááôáá<Xý¨2ôþ ÿö<bž@Jv+' 66<býž2bž³2+5b2lþÊÿö2b” ·v+%!,þÊl2bÿö1Xž³2+%Xýžb176ÿö<bž$@!JW_O+'%! 66ýçÆã<býž2¿2bžµ2+5%%býÐÀþ@2lþÊãããÿö2b”@W_O+%!!,þÊlþÊãþ:2bþ¿ÿö2Xžµ2+%Xýžb2þ@266ýçÆãÒbþ³2+5bÒ,–ÿöÒXþ³2+-XýžbÒ––Òbþµ2+5%%býÐŽþrÒ,–VVVÿöÒXþµ2+-5Xýžb2þrÒ––ì¬V–ÒÂ@Jv+7–––Ò6þÊ–ÒÌþ³2+7–6Ò,––ÈÂþ@ Iv+!–,–þþÊŒÒÂþ³2+%ÂþÊþþÔ––ÒÂ$@!JW_O+7'3'–––ì¬VÒ6þÊ(²–ÒÌþµ2+77'–6þò²²Ò,–VVV–ÈÂþ@W_O+%!7#,–,–V¬È6Ú²ŒÒÂþµ2+-5ÂþÊ6(²Ò––ì¬Vÿìþpl E@B  †gW_O       +5!!#!#5!€þòªþÔª¤ddüÌÐdý”ldý0ÿìþp 8@5†gW_O  +!5!!#5!^þŽÖþÔªþp4dühldý0–þpl 8@5†gW_O  +!!3!#–ÖþŽdªþp˜düÌÐdý”ÿìÜl/@,gW_O+5!5!€ý€€¤ddÈddÿìÜl` C@@… gW_ O       +33!5335!^dªý€ªdþò€¤¼ý¨ddXýDÈddÿìÜÂ` 8@5…gW_O  +'5!3%533rdþ*ªdÜd ü|ÈdXýD–Ül` 8@5…gW_O  +73!%33–drþòdªÜ„üàdȼý¨d–þpÂ`"@…v+3!3^dþÔdþpðúðúÿìþpl` Y@V… †  g W _ O      +533333!#!#5!ªdddªþòªþÔª¤dXýD¼ý¨düÌÐdý”ldý0ÿìþpÂ` H@E… † gW_O       +3533#5!^dþ*ªddªþpðú4dXýDüÌldý0–þpl` H@E… † gW_O       +333!#–dddªþòªþpðú4¼ý¨düÌÐdý”ÿìþpl¤ *@'†W_O +#5!###–ª€ªddþpÐddý0Ðý0ÿìþp¤ (@%†W_O +#5!##–ªÖddþpÐdüÌÐý0–þpl¤ (@%†W_O +!###–Öªddþp4dý0Ðý0ÿìþpl¤&@#†W_O+#5!#ÈÜ€ÜþpÐddý0ÿìþp�¤$@!†W_O+#5!ÈܤþpÐdüÌÿìþp�ü -@*…†W_O +#5!33ÈÜd2þpÐdXý¨üÌÈþpl¤$@!†W_O+!#ȤÜþp4dý0Èþpl` -@*…†W_O +33!#È2dÜþp4¼ýDdý0ÿìþpl` /@,…†W_O +#5!3!#ÈÜdÜþpÐd¼ýDdý0ÿìþplÖ&@#†W_O+!5!!úþò€þòþpžÈÈýbÿìþp^Ö$@!†W_O+!5!úþòrþpžÈüšÿìþp�` ,@)…†W_O +!533#úþòÜÈ2þpžÈŠü®ýbúþplÖ$@!†W_O+!!úrþòþpfÈýbÈþpl` ,@)…†W_O +#33!ú2ÈÜþòþpžRývÈýbÿìþpl` /@,…†W_O +!5333!úþòÜÈÜþòþpžÈŠývÈýbÿìþpl 9@6†gW_O  +5!!5!!€þŽþò€þò¤ddüÌlddý”ÿìþp^ .@+†gW_O +!5!5!5!úþòþòrþpldddühúþpl .@+†gW_O +!!!!úrþòþòþp˜dddý”K Ö*@'W_O+53!53w–þ>–ÈÈÈÈÈÿo�i*@'………v+33ÈÈÈÈÌ�þcý£ŸþaÈþp�¤@…v+3ÈÈþp4üÌÿìþplÖ&@#†W_O+#5!#ÈÜ€ÜþpžÈÈýbÿìþp�Ö$@!†W_O+#5!ÈܤþpžÈüšÈþplÖ$@!†W_O+!#ȤÜþpfÈýbÿìlÖ@W_O+5!€ÈÈÿì^Ö@W_O+5!rÈÈÿìlÖ(@%Wg_O+5!!!rþòÈ2d2?Ö B@?W_   O       +53!53353353ÛdýÚd2d2dÈÈÈÈÈÈÈÈÈÿ=�§ Q@Ng g gW_ O       +53535353ÈÈÈÈÈÈÈÈÐ××þÏ××þÏ××þÏ××úlÖ@W_O+5!úrÈÈ%3Ö 6@3W_O   +53!53353µ~ýò~J~ÈÈÈÈÈÈÈÿ%�ª =@:……………v   +333ÈÈÈÈÈÈdFþºþReþ›þoFþºÈ@�`@…v+3ÈÈ@ üàÿìl`'@$…W_O+5333ÜÈÜÈŠývÈÿì�`$@!…W_O+533ÜÈÈŠü®Èþp�`@……v+#3#ú2È2þpÐ üàý0Èl`$@!…W_O+33ÈÈÜRývÈÈþp�`@…v+3ÈÈþpðúÿìþpl` /@,…†W_O +#5333#ÈÜÜÈÜÜþpžÈŠývÈýbÿìþp�`*@'…†W_O+#533ÈÜÜÈþpžÈŠúÈþpl`*@'…†W_O+33#ÈÈÜÜþpðývÈýbÿìþpl` 7@4…†Wg_O +#5!333#ÈÜd2ÜÜþpžÈŠýv2dý0ÿìþplÖ .@+†Wg_O +!5!!!úþòrþòþpžÈ2dý0ÿìl` .@+…Wg_O +5!3!!dþòÈŠýDd2ÿìþpl` 4@1…†Wg_O +!5!3!!úþòdþòþpžÈŠýDdý0ÿìþplÖ .@+†Wg_O +#535!#ÈÜܤÜþpÐd2Èýbÿìl` .@+…Wg_O +5#5333ÈÜÜÈÜ2d¼ývÈÿìþpl` 4@1…†Wg_O +#5333#ÈÜÜÈÜÜþpÐd¼ývÈýbÿìþpl` 6@3…†Wg_O +!5333##úþòÜÈÜÜ2þpžÈŠýDd2ýbÿìþp^¤ $@!†YaQ !$+4&&##532ú:iH##f–SþpàIl;dT™gþ úþpl¤ $@!†YaQ !$+46633#"úS—e##Gj:þpàg™Td;lIþ ÿì@^` $@!…YaQ !+5326653##Hi:dS–f@d;lIÌþ4g™Tú@l` &@#…YaQ   +"&&5333Ie—Sd:jG#@T™gÌþ4Il;dÿìÿ`lp(@% L…v+5533# þóPððPþó Pðð (àà(þW©(þ þ (©þWÿìÿ`lp@L…v+53ýÐP0 è(ü(ÿìÿ`lp@L…v+530PýР(è(üF@¤*@'W_O+53!53r þ4 @ddddúÿ[^}*@'………v+33úddd¸Åþ;ý£Çþ9úþp^¤@…v+3údþp4üÌÿìþpl¤&@#†W_O+!5!!úþò€þòþpÐddý0ÿìþp^¤$@!†W_O+!5!úþòrþpÐdüÌúþpl¤$@!†W_O+!!úrþòþp4dý0ÿì@l¤@W_O+5!€@ddÿì@^¤@W_O+5!r@ddÿìlÖ(@%Wg_O+5!5!5!úþòr2d2È@?¤ B@?W_   O       +53!53353353ÛdýÚd2d2d@ddddddddúÿ=^§ Q@Ng g gW_ O       +53535353údddddddÐ××þÏ××þÏ××þÏ××ú@l¤@W_O+5!úr@dd%@3¤ 6@3W_O   +53!53353µ~ýò~J~@ddddddúÿ%^ª =@:……………v   +333údddddXRþ®þiNþ²þdQþ¯ú@^`@…v+3úd@ üàÈþp�`@……v+333È2d2þp4¼ýDüÌÿì@l`'@$…W_O+5!3!d@d¼ýDdÿì@^`$@!…W_O+5!3d@d¼üàú@l`$@!…W_O+3!úd@ ýDdúþp^`@…v+3údþpðúÿìþpl` /@,…†W_O +!5!3!!úþòdþòþpÐd¼ýDdý0ÿìþp^`*@'…†W_O+!5!3úþòdþpÐd¼úúþpl`*@'…†W_O+3!!údþòþpðýDdý0ÿìþpl` 7@4…†Wg_O +#53533!#ÈÜÜ2dÜþpÐd2ŠývÈýbÿìþplÖ .@+†Wg_O +!5!5!!úþòrþòþpÐd2Èýbÿìl` .@+…Wg_O +5!5!3!úþòd2d¼ývÈÿìþpl` 4@1…†Wg_O +!5!3!!úþòdþòþpÐd¼ývÈýbÿìþplÖ .@+†Wg_O +#5!3#ÈܤÜÜþpžÈ2dý0ÿìl` .@+…Wg_O +5333#ÜÈÜÜÈŠýDd2ÿìþpl` 4@1…†Wg_O +#5333#ÈÜÜÈÜÜþpžÈŠýDdý0ÿìþpl` 6@3…†Wg_O +#5#5333!ú2ÜÜÈÜþòþpž2d¼ývÈýbÿì@l` ,@)…W_O +533333ªdddª@d¼ýD¼ýDdÿì@Â` )@&…W_O +53333ªddd@d¼ýD¼üà–@l` )@&…W_O +3333–dddª@ ýD¼ýDdÿìþpl` /@,…†W_O +!5333!úþòÜÈÜþòþpÐd¼ýDdý0ÿì@l`'@$…W_O+5333ÜÈÜ@d¼ýDdÿìþp�` ,@)…†W_O +!533#úþòÜÈ2þpÐd¼üàý0ÿì@�`$@!…W_O+533ÜÈ@d¼üàÈþpl` ,@)…†W_O +#33!ú2ÈÜþòþpÐ ýDdý0È@l`$@!…W_O+33ÈÈÜ@ ýDdÿìþpl` /@,…†W_O +#5!3!#ÈÜdÜþpžÈŠývÈýbÿìl`'@$…W_O+5!3!dÈŠývÈÿìþp�` -@*…†W_O +#5!33ÈÜd2þpžÈŠývüšÿì^`$@!…W_O+5!3dÈŠü®Èþpl` -@*…†W_O +33!#È2dÜþpfŠývÈýbúl`$@!…W_O+3!údRývÈÿìÜl` 7@4…gW_O  +5!3!5!dý€€¤dXý¨dÈddÿìÜ^` .@+…gW_O +'5!5!5!3þòdÜdddXü|úÜl` .@+…gW_O +73!!!údþòÜ„ý¨dddÿìþpl`8@5… †W_O +#533333###–ªªdddªªddþpÐd¼ýD¼ýDdý0Ðý0ÿìþpÂ` 5@2…†W_O  +#53333–ªªdddþpÐd¼úðú–þpl` 5@2…†W_O  +33#!3^dªªþÔdþpðýDdý0ðúÿìþpl` /@,…†W_O +#5333#ÈÜÜÈÜÜþpÐd¼ýDdý0ÿìþp�`*@'…†W_O+#533ÈÜÜÈþpÐd¼úÈþpl`*@'…†W_O+33#ÈÈÜÜþpðýDdý0ÿìþpl` /@,…†W_O +!5!3!!úþòdþòþpžÈŠývÈýbÿìþp^`*@'…†W_O+!5!3úþòdþpžÈŠúúþpl`*@'…†W_O+3!!údþòþpðývÈýbÿìþpl`=@:…  †gW_O +!5!5!5!3!!!!úþòþòdþòþòþpldddXý¨dddý”ÿìþp^` 4@1…†gW_O +!5!5!5!3úþòþòdþpldddXúúþpl` 4@1…†gW_O +3!!!!údþòþòþpðý¨dddý”XÚ -@*gW_O +15!!5!!!þíXþí-€--ý€-Dÿõ.0"M@J L€€iYaQ"" +"&554632373#'#'26554&#"ùPeePEY6SelU<Y?,44,,44 gW¿WgXH–þõþå¦PaN<4¿4<<4¿4<Dÿ[.0"&]@Z L€€i iW_ O###&#&%$""  +"&554632373#'#'26554&#"5!ùPeePEY6SelU<Y?,44,,44‡à gW¿WgXH–þõþå¦PaN<4¿4<<4¿4<èKK<ÿ’> /@,…†W_O +5333##<½®_®Ä¦—_—"PÌþ4Pþp�ÿÿÿöÿ’b>&>»ÿö2b± '7M@J ii Y a Q)( 1/(7)7!''    +"&54632#"&54632"&&546632'26654&&#"›####û####RX�QQ�XYŒQQŒYJvDDvJJvDDv1"##""##"ýQ�XYŒQQŒYX�Q2DvJJvDDvJJvDÿö2bž+7S@Pii  i Y aQ-,! 31,7-7'% +!+  +%"&&546632'26654&&#"7"&54632'2654&#",X�QQ�XYŒQQŒYJvDDvJJvDDvJ6II66II6#..#"//2Q�XYŒQQŒYX�Q2DvJJvDDvJJvD…I66II66I./"#..#"/ÿö2bž)K@H$)('!L€iYaQ&%#" +%"&&546632'26654&&#"77'373',X�QQ�XYŒQQŒYJvDDvJJvDDvM[[MI2Q�XYŒQQŒYX�Q2DvJJvDDvJJvD•c6]]6cCÿöÿ’b>'$@!$# L…v+5.54667534&&'>R�JJ�R2R�JJ�Rþã=jDDj==jDDj=n¡SˆTTˆS¡¡SˆTTˆS¡ÖFqFFqFFqFýúFqÿöÿ[bž#A@>iiW_O  # #"!  +%"&&546632'26654&&#"5!,X�QQ�XYŒQQŒYJvDDvJJvDDvÎ02Q�XYŒQQŒYX�Q2DvJJvDDvJJvDþ÷KKŒhÌ&3@0€„W_O+5!3Œ@þÙP‚‚ÛKKþ�7þÉ2&± $B@? †iW_O !     +"&546323"&54632!'667!½####Á####ʼô½< eþìi 1"##""##"üÏÚý&FY4 þ_4X2ÿ’&> B@? L…€„W_O  +5#3533###%¼á2á½$-r¢rrnnÚddý&n!×þ)×2ÿ’&> @@=L……†W_O  +5#3533#'33á¾#2$½á£r0ssnnÚddý&n¾Óþ-Ò-ÿ[+Ú <@9 L…gW_O  +33%!&&'5!2¾y½þ|g  ÛþÚý&PŸ4ZZ4ýkKK2&±&—K°PX@5rr †i jW_O@7€€ †i jW_OY@#"  +".#"#5463232553!'667!r&A2(&A1­¼ô½< eþìi /#-2#-2üÑÚý&FY4 þ_4Xÿöÿ[bŸ '@$JW_O  +% 7'5!,þÊ66þÊèèè00267þÉèèééýóKKÿÿ<2 'rX'Pÿ’>(@% L……v+5&&5336653Zi2NC2CN2iZnÉu^@þ»GZ¶ýJZGEþÀ^uÉXX"+K@H…  i   iW_O$#)(#+$+ ""!!+332##3!535#"&54633"3352654&##ÿZ5CC5ÿý¨ÿ4DD4#--#_#--#X‘C54D‡PP‡D45C(-##-  -##- ÿ[XX 7@4…gW_O  +153335!ÿZÿý¨XPýøP¥KKÿöXÚ+@(…†W_O+'35#5333#3-É›ÿÿZÿÿ› ©¦PEþ»P¦Pÿ[-,0b@_L€€ig i W _   O---0-0/.*)'$  ,, +#"&54675&&546332#&&##"33#"3326735!K4[lAF:;dX.Sk _8+.]0.{ƒ35714.;_ mþžXI>G:1GOLB!K$*N0(%0@IžKKÿÿUA &hXÿÿ7&&}7ÿ[&& <@9ggW_O   +!"&5#5!335!ŸIWÈ"& ‡þêUF9Rþu"'R¥KK}ÒÛ¯ #/M@J ii Y a Q%$ +)$/%/##    +"&54632#"&54632"&54632'2654&#"›####û####R4DD45CC5#--##--/"##""##"þ£D45CC54D(-##--##-Œÿ[Ì A@>iiW_O     +%"&54632'2654&#"5!,4DD45CC5#--##--}@ÒD45CC54D(-##--##-þaKKÿ’:>E@B… † i Y aQ$! +#"&54633533#3#3#"*0ewwe02ÞÞÞÞg55LYYnubbuúú-þ¬-þü1T\NN\ÿìXÚ7@4L…†W_O+!##'7333#YZwœœwZÿÿE ÈÈ Eþ»P7ÿö!0*:@7(LJ…YaQ&$ **+"&5546732655332554&'5#"&'µ:DKA=!J!=DMC;1?? VKÏSm _:,ÐT,(ÃÃ(,TÐ)7_ jQÏKV92297ÿ[!0*.J@G(LJ…iW_O+++.+.-,&$ ** +"&5546732655332554&'5#"&'5!µ:DKA=!J!=DMC;1??¯ê VKÏSm _:,ÐT,(ÃÃ(,TÐ)7_ jQÏKV9229›KKÿ‘X>*@'gW_O+!%!!XýÚôþ o­üS-Sÿ‘X> 1@. LgW_O+!!!X2þ*Öþ Øþ(o­üS€üÚ-)ÿ‘X> %U@R% Lg i iW_O #!     +!25!6626654&&#"!5#"&'XþÔPƒ'þ (‚PHqAAqHGqBBq³ô'ƒPP‚(o­üSF;ýýL@Ig i iW_O    +!%!!"&54632"&54632XýÚôþ ú%..%&--&%..%&--o­üS-SþÞ)""))"")þ\)""))"")ÿ‘X> L@I L€ggW_O  +!!5!#667!XýÚôþ ô½y¾þpþÙoo­üS€77ü­÷ýK¶ý�Z4Ÿþ`4Yÿ‘X> P@ML€ggW_O    +!3!&&'!5!XýÚ¾y½þs'p Öôþ o­üS€ýµýKìý?Ÿ4[Z4ýÎBÿ‘X> 7@4 LgW_O +!!7'!'XþÔúþ úèèèôúúo­üSûmþ“þÜèééþVnúúÿ‘X>#]@Z g i g  iW_ O ##  +!!"&54632!!"&54632XýÚôú%..%&--þàôþ ú%..%&--o­üS€þ|„þÔ)""))"")ýÙ„ò)""))"")ÿ‘X>G@DL€gW`P +!%!#36677'53&&5#XýÚôÍ `ÇÉ_ Ío­üS-SýÁ- Qi©©iP -?ÿ‘X>>@; L€gW_O +!%6675!!#Xþ´  ×þ ôÛ>Ûo­üSð:;IG<üé�ý¨Xÿ‘X> G@D gggW_O  +!!!5!!!XýÚôþ ôþ ôþ o­üS€þ÷ þ þ ÿ‘X>;@8 LgW_O+!%%667&&!XýÚôxþ„|! "þsôþ o­üS€|úvþn¼þY» þGyúÿÿÿ‘X>&M(…±°(°5+ÿ‘X>Z@W  L€€ghW_O +!%!#"&'#'736633!XýÚôô)  WjœœjW  )ôþ o­üS-‚  nÈÈm �ÿ‘X>;@8 LgW_O+!%5!5%XýÚôþ„|þ„! "gôþ o­üS€þ‰ú}þA¼§» þd~úÿ‘X> g@d€ €g g   g  W _ O   +!3!!737#35#!!#7#XŽ@œþ @þ®º:ôôºþÆôþî>F>œo­üS&¯ þ÷¯þa   þ ªªÿ‘X>*§K° PX@:  rggi   iW_ O@;   €ggi   iW_ OY@$%"*) +!%!!532654&##532"&546332#XýÚôþ •2@KKA}}Fg90U8="""o­üS-Sý¼´G;;GU5`B9[6iÒ""!#ÿ‘X>Z@W  L€€ghW_O  +!%!!325&&''3#76675##XýÚôþ ô(  WjœœjW  (ôo­üS-Sþ mÈÈn  ÿ‘X> <@9LgW_O  +!XýÚØþ(o­üS€üÖ*ü­)ü×ÿ‘X>H@EL€gW_O +!%3467#57'&&'#3!XýÚÍ _ÉÇ` Íþ o­üS-@- Pi©©iQ -ýÀSÿ‘X> C@@ L€gW_O   +!!!5&&'XþóÛþ ÛÛôÙ  Øo­üSIý¨�ýqXüäBN;:ý²ÿ‘X> I@F L€~gW_O  +!%!!'53XýÚôþ Ö ` o­üS-Sþ�––––Œÿ[ÌÚ 8@5L……W_O  +'535! ` Å@®––––ý­KK^ÿLþ0<@9L†iYaQ%#+4632#"&'#726554&#"^paan_S>Nv9==99=?´_mm_¡_n>5} øD@–@DD@–>FlÚ=@:   L…†W_O+3#533355#ÿÿÿZwœœwEPEþ» ÈÈ þ»Œÿ[Ìä H@E€~iW_O  +"&546332#35!"!*+  +*!ŒP‚‚n@N*! ++ !*ýÆ7þɹKK<ÿ’> /@,…†W_O +#5333#K—¦Ä®_®½Û—n�PÌþ4Pþpªÿ‘®>*@'gW_O+!'3#ªÒ  o­üS-S}ÚÛ¯ !B@?L! I†YaQ     +"&54632#"&546327'373'›####û#### M[[MI/"##""##"þ«c6]]6cCAÿ’>#�@ LK°PX@1…rr†iYbR@3…€€†iYbRY@###### +546323326553#"&'#&&#"AF<(2%UF<(2&>I ¹þ* >I þƒš ÿÿFú¯&"hXÿ¦ ±¸ÿ¦°5+ÿÿ<2 'rX&P0)I@F†ii Y a Q%#))## +34632#4&#"7"&54632'2654&#"Pweew2\NN\ª4DD45CC5#--##--Tewweþ¬YN\\Nþ§æD45CC54D(-##--##-X E@B † iW_O     +"&54632#"&54632#5!#›####û####%ÿXÿ‰"##""##"ýwPPýøXX"+R@O †g  i  Y  a Q###+#+'%""!!+35#"&546335#5!#32##'35#"7#32654&ÿ4DD4ÿXÿ5CC5_#--‡#--‘D45C‡PP‡C54D‘¹ -##-  -##-Xý *@'†gW_O+!###5!!XÿZÿXý¨XPýøõKXä+@(…†W_O+#3###535#-Ç›ÿÿZÿÿ›䩦Pþ»EP¦Xÿöä /X@U#Li ii Y aQ +)&$/ /  +"&54632232554&#"62655#".#",brrbbrrš#(?;:@l;?4#(@ rj6jrriþÉjrÓ%-{>CC>ŒCþ~C>šC%-‰>Cÿö2bž+7M@Ji  i Y aQ-,! 31,7-7'% +!+  +%"&&546632'26654&&#"7"&54632!"&54632,X�QQ�XYŒQQŒYJvDDvJJvDDvÚ  þÈ  2Q�XYŒQQŒYX�Q2DvJJvDDvJJvDÑ     ÿöbä=@:giY_O +3"547632#%35#254#";Eò!!ñEþö1 D!,,,8.>&&ýÂ.8ÈGGþ^****ÿ’DH@IW_O+!!Ö´"ýîõþíHþpýÚ¤%s4n³2+7%?�ûEþÉHBŽr0þ5Bd8 ³ 2+7'7'77'{8°±:±°8°±:±e8°±:±°8°±:±[9u ³ 2+7'7'77'Y9ÓÔ:ÔÒ9ÓÔ:Ô\9ÒÔ:ÔÓ9ÒÔ:Ô'<0” ³ 2+77'77'''«ª×-,ת«×--Ò––IßÞH––Ißß:Úa@^  L… €~  †g W _  O +'##3'&&'33373#'#<°F”J”ž"}BO`Jq{NfO‹AAOþ±Î* *RýùO††¡®��-ÿü/Ú Kl@iL  € ~gg  g iYa Q! ?<:974)&$# K!J !+32#'32654&##32654&##"&'3332654&''&&546332#&&##"#-Â3?7!'@4��‚ŒŒ@RB.$%+X19J?=NB+!!&X3;ND‹O.&9+)4¿Ûýá:1 2%-53, 4&19-ÿL0ä'5K@HLi ia>M_=N)(0.(5)5&$ '' +"&&54632#"&554632354&#"3326554&#"EU~E�~rƒVJIWF@)6 UPZdk]n#&**&&**´GƒXT‡›ƒrþñN[XGtJQ FUZthþ¬dsK.1+u,/0,t+1ÿ÷gä$0›@ (!LK°PX@4€ia>Ma ?M a ?N@1€ia>M_9M a ?NY@&%+)%0&0  $$ +"&55467'&54632#4&#"73#''277'#"×XfZL6`M7S/X5,%/Ã[d�‘ca+"S&9(4}/7; gX9P`$G7GX0U92?.&'%ür°½€6*)Q3B ;393;AÿLùÚ *@'_8M=N   % +"&55463333ÿUiiUPZP´ê^LPM]ürŽürMÿf ä;IG@DL€~~ea>N32'$"! ;: +"&53332654&''.54675&&546332#&&##"#654&''&[k_8/22932\.D&;448fW2Of_2'2.5$ xGQD/7*j\,8,#J,8+"šSG"(.($34J(:H L8JWNC#,&!. b=:E!A3N[UB5#6 @3&8-n+ä#?i±dD@^  €  ~ii i Y b R%$=<:831/.,*$?%?##  +±D%"&&5546632'266554&&#"7"&554632#4&#"32653,Ls@@sLMr@@rM3 gh 2>Ý–ÂÂä 9±dD@.iYaQ      +±D"&54632'2654&#",CSSCCSSC&//&%00ÂQ@APPA@Q81((22((1ÿÿÒ£uÕ*C ±¸C°5+ÿÿi¤ïÖ'*ÿ—D*zD±¸D°5+±¸D°5+ÿÿ’Y>@…v +3ÿZn¬üTÿÿ’Y>/@,gW_O +33ÿZZZÂ|þ„ýÐ|þ„Pÿ’> /@,…†W_O  +#53533#ÿ¯¯Z¯¯nvPææPýŠFôä(8@5 LiYaQ'% +!"&55'74632326776554#"QMZFdXHIWOFQ)$"2 D -Bx5WF!%WIJQ%FUTGUCll%)**/!Iã!ZUI&Pÿ’>=@:…  †gW_O +5#53#53533#3#ÿ¯¯¯¯Z¯¯¯¯núP"PððPþÞPúXä '5y@ "LK°PX@ i_8M 9N@" i8Ma>M 9NY@)(0.(5)5''  +"&5546323.53#.'26554&#"ù(77()66ýü_uF_r• ,:/æ/::/æ/:þÔÚþ;DJLK¸ý&ÆDIKKþHcúú<ÿöä#L@IL€igYaQ"  +"&&5546632!32673!5&&#",Gm<2A21A1?þzOþ÷&0,iþ± &1-i ?ß)2k@h$ L€~ †i i  h  W _ O20,*))('&% +"&&546632#&&#"3267332#'#532654&##Ï2O..O29ZD 5.==.5 DZÆ8D4+gPdT…††-N12N->2A21A1?þzO=/(2ƒ��³#Ö5ä@Jv+#'#  nšžÖþò¢¢Ãÿ’ï¾@…W_O+733!ÃZÒþÔ¾ÜPiÿ’•¾$@!…W_O+%!535•þÔÒ¾þÔPÜi•>@†W_O+#5#5!•ZÒ,ÜPÃï>$@!†W_O+!#Ã,Ò,PÜ-&Ú T@Qg gg g   W  _ O ! +32#'32654&##!!#3#-–2O..O2TT->>-T·þÖ*èÊÊ‹O+K21K+9=11=ýš:O:V/V-:Ú E@B€ggW_O ! +32#'32654&##33-–2O..O2TT->>-T«BÞ‹O+K21K+9=11=ý`Oþí<-Ú X@UL€g gWg_ O ! +32#'32654&##5#573353-–2O..O2TT->>-T_Í£N²Ž@‹O+K21K+9=11=ý`BY´Ç cá-0Ú Q@NL€ggW_ O ! +32#'32654&##5355733-–2O..O2TT->>-T”ƒza[h‹O+K21K+9=11=ý`<ØWKGþí<-ÿûÚ .¦·)(#LK° PX@8r~g  g  gYa Q@9€~g  g  gYa QY@'&%$" .. ! +32#'32654&##"&5332654&##57#53-–2O..O2TT->>-TBRB-%%.-%VºúL/9S‹O+K21K+9=11=ý[J:!) 59>-T›š&#%,BP@AJ,$T­‹O+K21K+9=11=ý`>[ #*$?JB8#:-<ÿö2bž&-@@=,+#"L†iW_O +%"&&546632"!&&6677!%4'>%,X�QQ�XYŒQQŒYEp#°#pE  ˆþ‰ˆ ÖCj=ýø  r  †gg g i  Y b  R@?   €  †gg g i  Y b  RY@ -,+*(&"  / / +!!#3#"&&546632'6654&#"327'3#'^þÖ*èÊÊ2O..O22O.!->-->>- 6KŽK0Å:O:V/Vþ6-N12N--N2:.6  1AA11AF·> 4ÿû:Ú 'b@_  € ~gg g  i  Y a  Q %$"  ' ' +!!#3#"&&546632#&&#"32673^þÖ*èÊÊ!2O..O29ZD 5.==.5 DZÅ:O:V/Vþ6-N12N->2A21A1?>ÿü/Ú 5a@^ €  € ~gg  iYa Q )&$#! 5 4  +!#3#"&'3332654&''&&546332#&&##"#>*èÊÊ@RB.$%+X19J?=NB+!!&X3;ND‹O:V:…þq:1 2%-53, 4&19>0Ú U@R €   †gggW_O    +!#3#!#3#>*èÊʆ*èÊÊ‹O:V:…þuO:V:… ÿü/ßKe@b€  €  ~ig i i  Y a  Q! ?<:974)&$# K!J$$"#+46632#&&#"3267#53#"&&"&'3332654&''&&546332#&&##"# .O29YD 4.==. 6 c§,K02O.d@RB.$%+X19J?=NB+!!&X3;ND22N-=-A21A '93M,-Nýû:1 2%-53, 4&19-IÚ L@I… €   †gW_O    +3353#5##5!#-B²BB²˜r˜‹O„„þ±��þu<<þíÿö2bž!'-P@M,#L†iW_  O((""(-(-"'"'!!  +%"&&546632"366773.>7!',X�QQ�XYŒQQŒYFqGwY  YvGq`Œ@f>ýú=d?‹2Q�XYŒQQŒYX�Q:>kD—//—Dk>þæí@g@@f@ìQ0 (@% JW_O+37%!'QÛÛþ|R©©[ÕÕþ¥2¥¥D S@PJ gg    gW_O   +##5#'335##"&5535D›ú›ºººlœ/!‚!/œåÖÖ1þõÍÍÖÖþ´ƒ!!ƒ&qqÿ[A�£ )@&  L…v  +%!!2''7''7.þ\þÑ3 ,55ž›C›šHœ™E˜›A,66,þb+7–œœC››Gœ™D™›ÿÉAý£ )@& L…v  +7"&5463!%77'7''*+66+ 3þÑþGH›˜E™œHš›C›A7+ž,6þÊþÔ–G›™D™œG››Cœ ÿ©A¯£!%)-1d@a g   g gW`P10/.-,+*)('&%$#"!  +7"&5463!2#35#35#3#3#35#35#35#35#!5!/<6+D,55,ýŸll˜llzl¶Jâllæll˜ll˜llþ†æþA:8750_1_.,(& $$$!+32654&#"35#'354&#"#32654&5#"326"&546335#"&54632354632##32#"&55#œA%%%¦ll{A%%%~A%%%þÃA%%%A4GG4AA4GG45FlG45FF5AA5FF54GlF$A%%%þøt7A%%%âA%%%AA%%%\D44DtD44DD4AA4DD44DtD44DD4AA4Dÿì2gÚ=@:LIggW_O%3+%3546332#!5!##5þÏ1L!†!!þò,G §Å2¥×!!þv!@kªþîl¸R0ÚH@E… †ggW_O  +33!#3#RBÞl*èÊÊ‹Oþí<þuO:V:…-:ÚT@Q L… …… †W_O +3.553#3373#'#-P²AP²‡BO`Jq{NfO‹Oþ÷%1,iþ± &1-iþuO††¡®��-:ÚC@@ L………W_O +3.553#33-P²AP²¬BÞ‹Oþ÷%1,iþ± &1-iþuOþí<-ÿö+Ú#F@C L………Ya Q ## +3.553#"&553326553-P²AP²"EVB1((1BV‹Oþ÷%1,iþ± &1-iþkSG¿¿,22,¿¿GSÿìÿölÕ 72@/……YaQ$"77  +%"&54632".546766326654&'&&76,!! CtX12*34]<<]42+11Xtá#|##þ„#ë0WrBAr+0K,=_66_=,K0*sABrW0ÿìÿöll#1I@F€~iYaQ%$,*$1%1##  +".54>32'26654&&#"7"&554632,CtX11XtCCtX11XtC32'26654&&#",CtX11XtCCtX11XtC5??!!!  *##$" ++þõ$##þý* 58-2:2 #Å  %.Þ+7b@_€~i i g  W  _   O,,,7,76543210/.- +*+"&'3332654&''&&546332#&&##"#535#5!#3¼@RB.$%+X19J?=NB+!!&X3;ND}}<}}‡:1 2%-53, 4&19þy<×<<×<%ÿû?Þ+;Ga@^€~i i  i Y a Q=<-,CA>-->>‡:1 2%-53, 4&19þt-N12N--N21N-:A11BB11A%:Þ+6?b@_€~ †i i  g  W _ O,,?=97,6,653/- +* +"&'3332654&''&&546332#&&##"#32##532654&##¼@RB.$%+X19J?=NB+!!&X3;ND*¿8DD8}~‡:1 2%-53, 4&19þyO?/.>u¯%+Þ+7f@c€~€  †i i W _  O,,,7,76543210/.- +*+"&'3332654&''&&546332#&&##"#3353#5#¼@RB.$%+X19J?=NB+!!&X3;ND B²BB²‡:1 2%-53, 4&19þyO„„þ±��%:Þ+Cb@_?93-L€~€ „iYa Q,,,C,C;:87/. +* +"&'3332654&''&&546332#&&##"#7'366773#'&&'¼@RB.$%+X19J?=NB+!!&X3;ND~}NB  @M}}OA  B‡:1 2%-53, 4&19þy©¦VV¨§U V%:Þ+9BKm@j3 L€~i i  g  g  W _  O,,KIECB@<:,9,8/- +*+"&'3332654&''&&546332#&&##"#32#'32654&##32654&##¼@RB.$%+X19J?=NB+!!&X3;ND Â3?7!'@4��‚ŒŒ‡:1 2%-53, 4&19þyO.&9+)4¿Û%+Þ+=`@]8/L€~€ „iYa Q,,,=,=7654.- +* +"&'3332654&''&&546332#&&##"#3.553#¼@RB.$%+X19J?=NB+!!&X3;ND P²AP²‡:1 2%-53, 4&19þyOþ÷&0,iþ± &1-iZäC@@L€~a>M`9N  +2#4&#"33!!57&&55467evZF<ctsa5sHÎR-ÿü/Ú=Y@V…  € ~ i  iYa Q1.,+)&=<  +"&553326553"&'3332654&''&&546332#&&##"#ÈEVB1((1BVw@RB.$%+X19J?=NB+!!&X3;ND�SG¿¿,22,¿¿GSþ{:1 2%-53, 4&19IÚ :@7L……†W_O  +66773#3#5!#­WH”J”E˜r˜ ))Îþ±Oý&<<þí7SÚ#B@?Lg_8M_9N##  +!"&54675&&54633#"3!#'3#"gyQ@9Go^­­5>?6Pþ¬RF;;Fÿÿ´ÿ¤ÿÎyXŒÿ.Ìÿ°m±dDK°.PX@iYbR@)€€iYbRY@  +±D".#"#5463232553r&A2(&A1Ò#-2#-2þÿLù„6A@>6 "L€i_=N*(&%!  +35%667&&'&#"#5&&5332654&''&&5467þÐZ@ANþa'  !þLI5B+'rGS_RZWfZN@>J1*oEO^M„¤ #þÊd×Z—   *?2(9 qMRm ®­ lX=EG8-C gFNh þÿL„6H@E! 5L€iaBM=N66". +5&'%5%32654&''&&546753#4&#"öm�þ®þÊ! !›ŽeHT1*oEO^MZGVZD55B+'rGS^S´«?Üd×W˜  ³>E:-C gFNh ¢¥eH2??2(9 qMPj°ûÈÿLà„@B@?!+'%$  ?&LiaBM=N@@31. +5&'%5%32654&''&&5467535%667&&'&&#"þ·m�þ®þÊ! !›ŽeMO1*oEO^MZ?BNþa'  !þ&L#5B+'rGS\U´«?Üd×W˜  ³>G8-C gFNh ¢¥ #þÊd×Z—   ?2(9 qMOk°ýÚbÚ2;D\@YL  g_8M  _9N=<43@>A4Í $o^´´5>A4Ptü˃ƒ'YcP;86=Pþ¬PD>>DD>>Dû‚bÚJS\ev@sL g _ 8M_9N^]UTLKa_]e^eXVT\U\OMKSLSIHGEA?><751/.,'%! JJ +!"&547##"&547##"&54675&&54633#"3!&&54633#"3!&&54633#"3!#%3#"!3#"!3#"gy@ÜÜgy@ÜÜgyQ@9Go^ªª5>A4Í $o^´´5>A4Í $o^´´5>A4Ptúsƒƒ'YcP;86=>'YcP;86=Pþ¬PD>>DD>>DD>>DýßÚ#'S@PLg g_8M _ 9N$$$'$'&%##  +!"&54675&&54633#"3!!'3#"%5!þ¿gyQ@9Go^­­5>?6Iý€ÊppPþ¬RF;;FPPýÕÿœä'1zµLK°!PX@& ica>Ma;N@$i ica>NY@)(.,(1)1&$ '' +"&&54632#"&554632354&#"3!2554#"þíU~E�~u€VJIWF@)6 VOZdk]/ýPPPdGƒX‡›}sâN[VItJQ #MSthþüdsK\u[\t\ýÆÿ÷bä$EQ]Ì@ UIB! LK°PX@A € i a >Ma ?M a ?N@; € i a >M_ 9M a?NY@5SRGF&%XVR]S]LJFQGQA@;97631,+%E&E  $$ +"&55467'&54632#4&#"73#'!"&55467'&54632#4&#"#'%277'#"!277'#"ÒXfZL6`M7S/X5,%/Ã[d�‘ca+"Sý†XfZL6`M7S/X5,%/„ca+"S(9(4}/7;ýã9(4}/7; gX9P`$G7GX0U92?.&'%ür°½€6*)gX9P`$G7GX0U92?.&'%þ €6*)Q3B ;393;3B ;393;ûsÿ÷]ä$Efr~Šý@ ‚vjcB!LK°PX@N €i a >Ma ?Ma ?N@E €i a >M_ 9Ma ?NY@M€tshgGF&%…ƒŠ€Šyws~t~mkgrhrba\ZXWTRMLFfGfA@;97631,+%E&E  $$ +"&55467'&54632#4&#"73#'!"&55467'&54632#4&#"#'!"&55467'&54632#4&#"#'%277'#"!277'#"!277'#"ÍXfZL6`M7S/X5,%/Ã[d�‘ca+"Sû8XfZL6`M7S/X5,%/„ca+"S"XfZL6`M7S/X5,%/„ca+"SýŒ9(4}/7;9(4}/7;9(4}/7; gX9P`$G7GX0U92?.&'%ür°½€6*)gX9P`$G7GX0U92?.&'%þ €6*)gX9P`$G7GX0U92?.&'%þ €6*)Q3B ;393;3B ;393;3B ;393;ýÕÿ÷ä&26¼@ *  # LK°PX@9€ g  i   ga>M a ?N@=€ g  i   ga>M9M a ?NY@'33('363654-+'2(2"! && +"&55467'&54632#4&#"7!!#''277'#"%5!þ“XfZL6`M7S/X5,%/ÿûþ*´‘ca+"S&9(4}/7;ÙÛ gX9P`$G7GX0U92?.&'%üïPݽ€6*)Q3B ;393;bPPþ§ÿ«¤îGK°PX@g_8N@Wg_OY@  +3!!þ§Z£ý]UCþ„Pþ‰ûÒ# q3@0 LWh_O# +%3!&&''3#7667!ûÒZ[ºjçèi¾ú¥#Nÿ ëþÙþÙïÿþ»ÿ’½>$(C@@ LggW_ O%%%(%('&$#!%!,! +5326''&67&&776&##53233#"#!37s/2 6125 2/ssYe &Ann@' eYþZnP++¤9J J9¤++PWO¤5/P/5¤OW¬üTþ»ÿ’E> 3@0gW_O   +5!!5!!3<'þÙ�ývZnP PüT¬üTÿÿþãÿ’>&¾Ä¾ýäü¤ÿ«rî VK°PX@g_8N@Wg_OY@   +3!!!3þRZÆý:ýøZUCþ„Pþ‰Cü½üÇÿ’á> -@*…v   +3!3!3‡ZûæZ†Zn¬üT¬üT¬üTúÉÿ«Òî _@  LK°PX@_8N@W_OY@   +3!3!35667&&'üwZýøZZSý­½' 'þCUCü½Cü½CþŽdþ“h ü¤ÿ«rî hK°PX@gg _8N@%Wgg_ OY@    +3!!!!!3þRZÆý:Æý:ýøZUCþüP PÿCü½üÖÿ«1î P@  LK°PX@_8N@W_OY@   +3!35667&&'üÖZTZSý­½' 'þCUCü½CþŽdþ“h þ§ÿ«¤î YK°PX@gg_8N@!Wgg_OY@  +3!!!!þ§Z£ý]£ý]UCþüP PÿûÒ# q @@=LWhg_O  +%3!'3#7!5!7667&&''!ûÒZûkjçèikû;úÆ#N‡‡þÙþÙ‡‡×þ»ÿ«hîA@  LK°PX@ _8N@W_OY@  +35667&&'þ»ZSý­½' 'þCUCþŽdþ“h þÿtùf-4<6@3<21%$ 5,L……v-- +5&&'3'&&5467535%667&&'&&'56654&''þÞ^kZ;6KQcTlIPh„„(þÊd×Z—  ø nJRl ƒ¶-Bå6ýó<0,B þ _à5ZK°!PX@g _;N@ Wg_ OY@ +%5#5353!533##5!þß¿¿X’X¿¿Xþn_ÃPÃÃÃÃPÃÃÃûÿ_©5kK°!PX@  g  _; N@% W  g _   OY@ +%5#5353!53!533##5!#5!ü¾¿¿X’X’X¿¿XþnXþn_ÃPÃÃÃÃÃÃPÃÃÃÃÃýÚ-g >@; LWg_O  +%5#53533#%5%667&&'%5þËññXññA6! "þÊ®-õPõõPõW˜ ™Z×dþ*d®0 oK°PX@"WW eaAN@$gg eaANY@   +"&54632%!5!"&54632%!5!^$,,$$,,þÎýÚ&$,,$$,,þÎýÚ&�+%$,,$%+ Pþz,%$++$%,FPû d0 #'—K°PX@*W   W e  aAN@, g    ge aANY@3$$  $'$'&% # #"!      +"&5463275!!5!"&54632%5!!5!þÔ$,,$$,,ï!ù˜!$,,$$,,ü¨!&!�+%$,,$%+ PPPPþÊ,$%++%$,FPPPPû ÿûÚ !d@a g  g _8M a B N !       +%375!!5!5!!5!"&546332#þ« j ê!ù˜!ýß!&!ü½"""×ýýÃPPPPðPPPP¯""!#ýøªê/@,gW_O +5!5!ýøûðšPPðPPû¥LH @@=ggW_O   +5!5!5!û¥^ù¢^ù¢^üLLØLLØLLû¥# ql¶LK° PX@%pqhW_O@#…†hW_OY@ +77!5!7667&&''!5!'3¼kú~Âú?‚kjçè#‡PP‡þÙþÙýý# ql¶LK° PX@%pqhW_O@#…†hW_OY@ +77!5!7667&&''!5!'3¼küÖjü—*kjçè#‡PP‡þÙþÙû¥# qG@DLWhg_ O +'7!5!7667&&''!5!'337667&&''3pkûª–ûkVkjçèþºjçè#‡PP‡þÙþÙïëþÙþÙû¥#ôqG@D LWgg_ O +7'!5!'7!5!7333rjû�%??ûÛdji¾.2º®çèi¾.2º#‡PPPP‡ï7=ë''ï7=ëû¡ ™5@2…h g  9 N +!7!5!7!5!73!!!!þS>ý:ü¸f@H@ºý(:üÐ>ªP P¯¯P Pªþ #q.@+LWg_O +%7667&&''3!!þ ¾ºjÈÅý;É#ïëÿPÿû³# q4@1LWh_O# +%7667&&''3!&&''3#7667!û³¾ºjÈ¡ºjçèi¾û^É#ïëÿ ëþÙþÙïÿÿÿþaÿ’Y>'þ Hα°°5+ÿÿþ‰-g'þ4+7±°7°5+þÏÿ¶1¼ µ 2+%5%6675&&'%55%þÏêþbýžb–Z¨«Xádþ?ZáZû³# q B@?LWhg_O  +%3!'3#7!7!7667&&''!û³ëëjj kjçèikû_j©¢û_?#&(‡‡þÙþÙ‡‡×Pÿÿþ*@×S&ÔýÕÿÿ ±¸ÿÿ°5+û³#q<@9 LWg_O    +%3!!!3üßëëjÈòüÉþkëëjçè#&(ÿPÿ&(þÙþÙû³#q G@DLWgg_ O  +%3!!!!!3üßëëjjPûî??û¯jþkëëjçè#&(‡PPPP‡&(þÙþÙÿÿümAS'ü'þ ýó#ôq0@-L…†W`P# +%3!!þÚçèi¾{ü†º#''ïP ëû›#q0@-L…†W`P# +%3!!ü‚çèi¾âú º#''ïK ëû›#Öq 3@0 LWh_O  +53#5!#3|ZZú¦ÊjçèiËrÿý²ÿÿ''ÿû›# q 5@2L…†W`P  +%3!'3#7!ü‚çèiËfËjçèiËú›Ê#''ÿÿþÙþÙÿÿû›#ôq 4@1LWh_O  +%3!73#'!ü‚çèiË¡ÉiççjÈû`Ê#''ÿÿþÚþØÿÿÿÿþ‰-g'þ4+7±°7°5+ÿÿûÍ-©g'ûx'+ý¨7¦±°7°5+ùCÿûÚ"b@_L€   € h _8M a BN"!  +%33!!%5!"&546332#üS j ý…çèi¾ëþº°¿új"""×ýý´''ïP ëÿPPþÙ""!#ÿÿýîA l'ý™4ìÿÿû´Aôl'û_&ñ4ý¨þ˜ÿ«EîA@ LK°PX@ _8N@W_OY@  +53'ëý­SZZþC' 'Umdrü½hpþî üwÿ«Òî P@  LK°PX@_8N@W_OY@   +3!53'xZýøý­SZZþC' 'UCü½mdrü½hpþî ú~ÿ«‡î _@  LK°PX@_8N@W_OY@   +3!3!53'-ZýøZýøý­SZZþC' 'UCü½Cü½mdrü½hpþî ûæÿ’ *@' L…v +375667&&'55þ§Zn½' 'þCSüwý­SþC& &½nzü†k  gþŽdþ‘odrkþë  þîþÿtf-4<I@F2$<1% ,L5K……†aBN-- +5&'%5%'&&546753#4&'56654&''yiýå®þÊ! !Å,]7JRcTFH@EF<;/.($"! #6L?K…†aBN77 +5&'%5%'&&5467535%667&&'&'56654&''þ»yiýå®þÊ! !Å,]7JRcT<#P%[þR6! "ýø?4(IPiX™0-,1™160+ Œƒ/îd×W˜  ÄlJPg……þËd×W˜   ø mKRl ƒ¶-Bå6ýó<0,AùCÚ$(,}@zL€  €hh  g8M  9 N))),),+*('&%$$#"!  +!7#537#53733733#3##7#%3!!%37#5!û£'Wb"al'F' 'F'Wb"al'F' 'þAçèiËiþ˜Ê‡ " “3ÒA´AÒÒÒÒA´AÒÒÒ#''ÿPÿð´¥PPýî-&g >@; LWg_O  +75#53533#%%5%ÝññXññþgþR®þÊ! "6-õPõõPõ×d×W˜  ™û´-ôg %E@B$#"% LWg_O  +%5#53533#%%5%5%667&&'%5þ¨ññXññþbþR®þÊ! "6ä6! "þÊ®-õPõõPõ×d×W˜  ™ZW˜ ™Z×dþÏÿ¶1¼ µ2+%%5%2%51ýžbþêýžb–ádáZ¨«þÇâXâû›#Öq @@=LWhg_O  +%3!53#5!'!5!ü‚çèikûZZûkª:úÅ=#''‡‡ý²‡‡× Oû›#q l¶LK° PX@%pqhW_O@#…†hW_OY@  +%3!!!!ü‚çèik‚ú>=>Áú~k#''‡POQP‡ùC# q w@ LK° PX@'pqhW_O@%…†hW_OY@  +%3!'3#7!'!7'!ú*çèikþkjçèikùkª}ABøƒ=#''‡‡þÙþÙ‡‡×OQOû›# q w@ LK° PX@'pqhW_O@%…†hW_OY@  +%3!'3#7!'!7'!ü‚çèik¦kjçèikûZkª%ABúÛ>#''‡‡þÙþÙ‡‡×OQOû›#ôq B@?LWhg_O  +%3!73#'!'!'7!ü‚çèik jièèjjûakª ??û_=#''‡‡þÚþ؇‡×PPOþ4(Ìlµ2+5%5%%667&&'%þ4ÌÌþ8Nþ«þ·% %(ðdððd‘ª  °¬ÿÿþGAÖS'ýòÓû›#q<@9 LWh_O    +%3!!!3ý®çèi˶ûFÏþjçèiêê#''ÿKþü''þÚþØû›#Ûq G@DLWhg_ O  +%3!!!!!3ý®çèik.û’?@mûÒkþjçèiéé#''‡POQP‡''þÚþØÿÿûõA½S'û 'ý­ºû›#qLR¦@ QNK LK° PX@4 rW   j j_O@5  €W   j j_OY@$MMMRMRPOLLJHDB><8620#$$$$$! +%33232>3232>3232553#".#"#".#"#".##!3ý®çèi˜&1""2%%4$$3%%2"/UG;%2!$3&%3$"1&&1"Zêþjçèiéé#''¿''''''''''7((:H''''''''''þØ''þÚþØýó#q= @ <LKK° PX@7…r€   † jYb R@8…€€   † jYb RY@==8620$#$$$$! +%332>3232>3232553#".#"#".#"þÚçèië "2%%4$$3%%2"/UG;%2!$3&%3$" )¶#''þÙ''''''8((:I''''''!æû´AôS M¤@LJ IK° PX@,rr iYb R@.€€ iYb RY@IGCA>=;953/-)'$#!MM +%%5%5%667&&'%5".#"#5463232>3232553#".#"ýbþR®þÊ! "6ä6! "þÊ®ü�%2"/UH:%1"!2%%2"/UG;%2!!1A×d×W˜  ™ZW˜ ™Z×d3''7((;G''''''7((:H''''û›#qf³@   LK° PX@7…   r†  i Y b R@8…   €†  i Y b RY@)b`\ZVTPNJHDB?><:640.*($" ff +%".'#332>3232>3232>3232553#".#"#".#"#".#"üÖ$0" ºjçèi¢#"2%&1""2%%4$$3%%2"/UG;%2!$3&%3$"1&&1""1å$& ë''Ì ''''''''''''''7((:H''''''''''''þ*ÿ’ê>#@ L…v +75%3(+ý×®þÊÍ_þ�nqd×Z—  æðüTûõÿ’³>*@' L…v +75%35%667&&'%ýó+ý×®þÊÍ_=;þR6! "þ þ÷nqd×Z—  æð£þád×W˜  ðýBþÜô¸nK°PX@"iYgaQ@)€iYgaQY@  +'".#"#5463232655!!d)8)$''UUF*9)#' &þ/FÜ+,& <M _ = N@?€  ii  i  ia>M _ = NY@%FEMKERFR><;942,*%# DD +'".#"#546632326754632#"&554632354&#"33#"&&5526554&#"b1E2)*(U(F+,<.*3$9L �~rƒVJIWF@)6 UPZdk]nnU~EIÅ&**&&**ú''%<<(?%''>3 ‡›ƒrþñN[XGtJQ FUZthþ¬dsKGƒXÏ #€1+u,/0,t+1ýî# q= @ L< KK° PX@7  …r  €   † jYbR@8  …€  €   † jYbRY@==;:97$$$"$$$% +77.#"#".#"#"&55332>3232>32333¼¶) "$2&%4$!1&:HU/"2%%3$$4%&1"îjçè#å"''''''H:((7'''''''þÙþÙþW殳3ƒK° PX@,rr iYb R@.€€ iYb RY@/-)'$#! 33 +'".#"#5463232>3232553#".#"_%2"/UH:%1"!2%%2"/UG;%2!!1æ''7((;G''''''7((:H''''û–# qa÷@ ] ` LK° PX@8 … r†   i   Y  b RK°PX@9 … €†   i   Y  b R@@ …  €  €†   i   Y  b RYY@"aa_^YWSQMKGEA?;953$$$$$$$ +7'#".#"#".#"#".#"#"&55332>3232>3232>3232>7'3¼î"2%%2""1&%2"$2&%4$!1&:HU/"2%&2$$4%&1""2%&1"$§jçè#&$#''''''''''''H:((7''''''''''''%% ÓþÙþÙþ9ªŸø=@: L…gW_O +3!!'&&'5!þ9ÈT›¯þw  |$åš^þòPááðPPýøªê F@C gW_  O       +5!35!5!35!ýøÌxÌûðÌxÌšPPPPðPPPPû ªê ]@Z  g W _  O       +5!!5!35!5!35!35!<Ìù˜ÌŒÌûÜÌŒÌxÌšPPPPPPðPPPPPPŒÿöÌÚ$@!I…YaQ.$+336632'766554&#"ŒZ6):FOFQ5).%!!% äþÀ'/TGUCl:@+U#&&#AÚ@@= L………v+7575575375377#5#575Aiii<Œ ¼I  ! </ ,k T— *ë b w J‰ 2Ó 2 "7 6Y (� &· .Ý  Classic constructionClosed constructionBroken equals ligaturesRased bar fCopyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)JetBrains MonoRegular2.304;JB;JetBrainsMono-RegularJetBrains Mono RegularVersion 2.304; ttfautohint (v1.8.4.7-5d5b)JetBrainsMono-RegularJetBrains Mono is a trademark of JetBrains s.r.o.JetBrainsPhilipp Nurullin, Konstantin Bulenkovhttps://www.jetbrains.comhttps://www.jetbrains.comThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFLhttps://scripts.sil.org/OFLClassic constructionClosed constructionBroken equals ligaturesRased bar fÿe2Ï$ÉÇ     b­c®�%&ýÿd'é(eÈÊË !"#$)*%ø&'()+*+,Ì,ÍÎú-Ï./01-2.3/4567â0189:;f2Ð<Ñ=>?@AgBÓCDEFGHIJKL‘M¯°3í45NOP6QäûRSTU7VWXY8ÔZÕh[Ö\]^_`abcdefg9:hijk;<ël»mnopq=ræstuvwxyz{Di|}~€�‚kƒ„…†‡lˆj‰Š‹nm ŒEFþo�ŽGê�Hp�‘r’“”•–s—˜q™š›œ�IJžùŸ ¡¢K£¤L×t¥¦vw§¨u©ª«¬M­®N¯°O±²³´µãPQ¶·¸¹ºxRy»¼{½¾¿ÀÁ|ÂzÃÄÅÆÇÈÉÊËÌ¡Í}±SîTUÎÏÐVÑåüÒÓ‰ÔWÕÖרX~ÙÚ€�ÛÜÝÞßàáâãäåæçèéêëYZìíîï[\ìðºñòóôõ]öç÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@�žABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûü›ýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�¼ôõöŽ��‘’«£"¢Ã‡ “”•–—˜™?š›œ� ^`>@žŸ ¡¢£¤¥¦§¨©ª«¬²³­BÄÅ´µ¶·®¯©ª¾¿° ±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ„½¦  … –   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRïð¸ �!•”“§¤aA’STUVWœXš™¥˜YZ[\]^_`Æabcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìí¹îïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙ# ˆ†‹ŠŒƒÚÛ_è‚ÜÂÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™ŽÜC�ߨáÛÝÙÚÞàš›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛAbreveuni1EAEuni1EB6uni1EB0uni1EB2uni1EB4uni01CDuni1EA4uni1EACuni1EA6uni1EA8uni1EAAuni1EA0uni1EA2AmacronAogonekAEacute Ccircumflex CdotaccentDcaronDcroatEbreveEcaronuni1EBEuni1EC6uni1EC0uni1EC2uni1EC4 Edotaccentuni1EB8uni1EBAEmacronEogonekuni0190uni1EBCuni01F4Gcaron Gcircumflexuni0122 GdotaccentHbar HcircumflexIbreveuni1ECAuni1EC8ImacronIogonekItilde Jcircumflexuni0136LacuteLcaronuni013BLdotNacuteNcaronuni0145EngObreveuni1ED0uni1ED8uni1ED2uni1ED4uni1ED6uni1ECCuni1ECEOhornuni1EDAuni1EE2uni1EDCuni1EDEuni1EE0 OhungarumlautOmacronuni01EA OslashacuteRacuteRcaronuni0156Sacute Scircumflexuni0218uni1E9Euni018FTbarTcaronuni0162uni021AUbreveuni1EE4uni1EE6Uhornuni1EE8uni1EF0uni1EEAuni1EECuni1EEE UhungarumlautUmacronUogonekUringUtildeWacute Wcircumflex WdieresisWgrave Ycircumflexuni1EF4Ygraveuni1EF6uni0232uni1EF8Zacute ZdotaccentW.cv07 Wacute.cv07Wcircumflex.cv07Wdieresis.cv07 Wgrave.cv07K.cv08 uni0136.cv08Q.cv16abreveuni1EAFuni1EB7uni1EB1uni1EB3uni1EB5uni01CEuni1EA5uni1EADuni1EA7uni1EA9uni1EABuni1EA1uni1EA3amacronaogonekaeacute ccircumflex cdotaccentdcaronebreveecaronuni1EBFuni1EC7uni1EC1uni1EC3uni1EC5 edotaccentuni1EB9uni1EBBemacroneogonekuni1EBDuni0259uni01F5gcaron gcircumflexuni0123 gdotaccenthbar hcircumflexibreveuni01D0 i.loclTRKuni1ECBuni1EC9imacroniogonekitildeuni0237 jcircumflexuni0137 kgreenlandiclacuteuni019Blcaronuni013Cldotnacute napostrophencaronuni0146engobreveuni01D2uni1ED1uni1ED9uni1ED3uni1ED5uni1ED7uni1ECDuni1ECFohornuni1EDBuni1EE3uni1EDDuni1EDFuni1EE1 ohungarumlautomacronuni01EB oslashacuteracutercaronuni0157sacute scircumflexuni0219longstbartcaronuni0163uni021Bubreveuni01D4uni01D8uni01DAuni01DCuni01D6uni1EE5uni1EE7uhornuni1EE9uni1EF1uni1EEBuni1EEDuni1EEF uhungarumlautumacronuogonekuringutildewacute wcircumflex wdieresiswgrave ycircumflexuni1EF5ygraveuni1EF7uni0233uni1EF9zacute zdotaccentgermandbls.caltl.cv01 lacute.cv01 lcaron.cv01 uni013C.cv01 ldot.cv01 lslash.cv01t.cv02 tbar.cv02 tcaron.cv02 uni0163.cv02 uni021B.cv02g.cv03 uni01F5.cv03 gbreve.cv03 gcaron.cv03gcircumflex.cv03 uni0123.cv03gdotaccent.cv03j.cv04 uni0237.cv04jcircumflex.cv04l.cv05 lacute.cv05 lcaron.cv05 uni013C.cv05 ldot.cv05 lslash.cv05m.cv06w.cv07 wacute.cv07wcircumflex.cv07wdieresis.cv07 wgrave.cv07k.cv08 uni0137.cv08kgreenlandic.cv08f.cv09r.cv10 racute.cv10 rcaron.cv10 uni0157.cv10y.cv11 yacute.cv11ycircumflex.cv11ydieresis.cv11 uni1EF5.cv11 ygrave.cv11 uni1EF7.cv11 uni0233.cv11 uni1EF9.cv11u.cv12 uacute.cv12 ubreve.cv12ucircumflex.cv12udieresis.cv12 uni1EE5.cv12 ugrave.cv12 uni1EE7.cv12 uhorn.cv12 uni1EE9.cv12 uni1EF1.cv12 uni1EEB.cv12 uni1EED.cv12 uni1EEF.cv12uhungarumlaut.cv12 umacron.cv12 uogonek.cv12 uring.cv12 utilde.cv12f.cv17 f.cv09.ss20f.ss20uni0410uni0411uni0412uni0413uni0403uni0490uni0414uni0415uni0401uni0416uni0417uni0418uni0419uni041Auni040Cuni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni040Euni0424uni0425uni0427uni0426uni0428uni0429uni040Funi042Cuni042Auni042Buni0409uni040Auni0405uni0404uni042Duni0406uni0407uni0408uni040Buni042Euni042Funi0402uni0492uni049Auni04A2uni04AEuni04B0uni04B6uni04BAuni04D8uni04DCuni04DEuni04E4uni04E6uni04E8uni04F4 uni0416.cv08 uni041A.cv08 uni040C.cv08 uni049A.cv08 uni0423.cv11 uni040E.cv11 uni0421.cv99uni0430uni0431uni0432uni0433uni0453uni0491uni0434uni0435uni0451uni0436uni0437uni0438uni0439uni043Auni045Cuni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni045Euni0444uni0445uni0447uni0446uni0448uni0449uni045Funi044Cuni044Auni044Buni0459uni045Auni0455uni0454uni044Duni0456uni0457uni0458uni045Buni044Euni044Funi0452uni0493uni049Buni04A3uni04AFuni04B1uni04B7uni04BBuni04D9uni04DDuni04DFuni04E5uni04E7uni04E9uni04F5 uni0458.cv04 uni0436.cv08 uni043A.cv08 uni045C.cv08 uni049B.cv08 uni0443.cv11 uni045E.cv11 uni0441.cv99AlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsiuni03A9 Alphatonos EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos Omegatonos IotadieresisUpsilondieresisuni03CF Kappa.cv08 uni03CF.cv08alphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhouni03C2sigmatauupsilonphichipsiomega iotatonos iotadieresisiotadieresistonos upsilontonosupsilondieresisupsilondieresistonos omicrontonos omegatonos alphatonos epsilontonosetatonosuni03D7uni03D5uni03D6 kappa.cv08 gamma.cv11 lambda.cv11u16910u1D538u1D539uni2102u1D53Bu1D53Cu1D53Du1D53Euni210Du1D540u1D541u1D542u1D543u1D544uni2115u1D546uni2119uni211Auni211Du1D54Au1D54Bu1D54Cu1D54Du1D54Eu1D54Fu1D550uni2124u1D552u1D553u1D554u1D555u1D556u1D557u1D558u1D559u1D55Au1D55Bu1D55Cu1D55Du1D55Eu1D55Fu1D560u1D561u1D562u1D563u1D564u1D565u1D566u1D567u1D568u1D569u1D56Au1D56B zero.zerotwo.cv18six.cv18 nine.cv18 eight.cv19 five.cv20uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089 zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numruni2070uni00B9uni00B2uni00B3uni2074uni2075uni2076uni2077uni2078uni2079 uni2082.cv18 uni2086.cv18 uni2089.cv18 two.dnom.cv18 six.dnom.cv18nine.dnom.cv18 two.numr.cv18 six.numr.cv18nine.numr.cv18 uni00B2.cv18 uni2076.cv18 uni2079.cv18 uni2088.cv19eight.dnom.cv19eight.numr.cv19 uni2078.cv19 uni2085.cv20five.dnom.cv20five.numr.cv20 uni2075.cv20 uni2080.zerozero.dnom.zerozero.numr.zero uni2070.zerouni0AEAuni2045uni2046uni2016 exclamdbluni203Donedotenleaderuni203Euni203F colon.caseperiodcentered.loclCAT.caseperiodcentered.loclCATuniFF5BuniFF5Duni2770uni276Euni2771uni276Funi2308uni230Auni27C5uni2309uni230Buni27C6uni2987uni2988uni00ADuni2010 quotereverseduni201Funi2034hyphen_hyphen.ligahyphen_hyphen_hyphen.liga(hyphen_hyphen_braceright_braceright.ligahyphen_hyphen_greater.ligahyphen_bar.ligahyphen_greater.ligahyphen_greater_greater.ligahyphen_less.ligahyphen_less_less.ligahyphen_asciitilde.ligabraceleft_braceleft.liga&braceleft_braceleft_hyphen_hyphen.liga#braceleft_exclam_hyphen_hyphen.ligabraceleft_exclam_exclam.ligabraceleft_bar.ligabraceright_braceright.ligabracketleft_bar.ligabracketleft_less.ligabracketright_numbersign.ligaperiod_period.ligaperiod_period_period.ligaperiod_period_less.ligaperiod_question.ligaperiod_equal.ligacolon_colon.ligacolon_colon_colon.ligacolon_colon_equal.ligacolon_question.ligacolon_question_greater.ligacolon_equal.ligacolon_greater.ligacolon_less.ligasemicolon_semicolon.liga"semicolon_semicolon_semicolon.ligaexclam_exclam.ligaexclam_exclam_braceright.ligaexclam_equal.ligaexclam_equal_equal.ligaquestion_period.ligaquestion_colon.ligaquestion_question.ligaquestion_question_question.ligaquestion_equal.ligaasterisk_asterisk_asterisk.ligaasterisk_greater.ligaasterisk_slash.liganumbersign_parenleft.liganumbersign_braceleft.liganumbersign_bracketleft.liganumbersign_colon.liganumbersign_exclam.liganumbersign_question.liganumbersign_numbersign.liga%numbersign_numbersign_numbersign.liga0numbersign_numbersign_numbersign_numbersign.liganumbersign_equal.liganumbersign_underscore.liga$numbersign_underscore_parenleft.ligaslash_asterisk.ligaslash_asterisk_asterisk.ligaslash_equal.ligaslash_equal_equal.ligaslash_greater.ligaslash_slash.ligaslash_slash_equal.ligaslash_slash_slash.ligaslash_backslash.ligabackslash_slash.ligaunderscore_bar_underscore.ligaunderscore_underscore.ligaexclam_equal.liga.ss19exclam_equal_equal.liga.ss19uni27E8uni27EAuni27E6uni27E9uni27EBuni27E7 anoteleiauni037EEMquadZEROWIDTHSPACEuni00A0CRuniFEFFuni20BFdongEurouni20B4uni20BDuni20AE cent.cv14 dollar.cv14uni2243uni2235uni226Cuni22C8uni2219uni2254uni2201 congruentuni2210uni23AAuni22CEuni22C4uni2223uni2215uni2224uni2238uni22D0uni22F1elementuni220Auni22EEuni220Euni207C equivalenceuni224Duni2239 existentialgradientuni2273uni223Euni294Auni27DCuni23A9uni23A8uni23A7uni22C9uni23A2uni23A3uni23A1uni2272uni22EFuni2213uni226Buni226Auni22B8uni228Euni2A00uni2A05uni2A06uni22BCuni22C2uni22C3uni2247uni2288uni2289uni22BDuni22B4uni2249uni220C notelementuni226Duni226Funi2271uni2262uni226Euni2270uni22E2 notsubsetuni2285emptyset logicaland logicalor intersectionunionuni2206uni00B5uni2225uni239Cuni239Duni239Buni239Funi23A0uni239EuniFE62uni207Auni227Auni227Cuni2237uni225Funi2236 reflexsubsetreflexsupersetuni2916uni23ADuni23ACuni23ABuni22CAuni23A5uni23A6uni23A4uni22A2uni2257uni2218similaruni2293uni2294uni22A1uni229Funi229Euni22A0uni228Funi2291uni2290uni2292uni22C6uni2263 propersubsetuni227Bsuchthatuni2140propersupersetuni22A4uni22A3uni2204 thereforeuni224B universaluni22F0uni22A5uni22BBuni229Buni229Duni229Cuni2298uni2296circlemultiplyuni2299 circleplusarrowupuni2197 arrowrightuni2198 arrowdownuni2199 arrowleftuni2196 arrowboth arrowupdnuni219Duni21ADuni219Euni21A0uni21A2uni21A3uni21A5uni21A6uni21A7uni21E5uni21A9uni21AAuni21BEuni21C9 arrowdblup arrowdblright arrowdbldown arrowdblleft arrowdblbothuni21DBuni21E7uni21E8uni2304uni2324uni2794uni279Cuni279Duni279Euni27F5uni27F6uni27F7uni2581uni2582uni2583dnblockuni2585uni2586uni2587blockupblockuni2594uni258Funi258Euni258Dlfblockuni258Buni258Auni2589rtblockuni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259Fltshadeshadedkshadeuni25CFcircleuni25EFuni25D4uni25D5uni25F6uni25CCuni25C9uni25CE openbulletuni25C6uni25C7uni25C8 filledboxuni25A1uni25AAuni25ABuni25E7uni25E8uni25E9uni25EAuni25EBtriagupuni25B6triagdnuni25C0uni25B3uni25B7uni25BDuni25C1triagrttriaglfuni25BBuni25C5uni25B4uni25B8uni25BEuni25C2uni25B5uni25B9uni25BFuni25C3uni2566uni2557uni2554uni2550uni2569uni255Duni255Auni2551uni256Cuni2563uni2560uni2565uni2556uni2553uni2530uni2512uni2527uni250Euni251Funi2541uni252Funi2511uni2529uni250Duni2521uni2547uni2564uni2555uni2552uni254Duni254Funi257Buni2533uni2513uni250Funi2501uni2578uni257Euni2509uni250Buni257Auni2505uni2507uni2579uni253Buni251Buni257Funi2517uni2503uni254Buni252Buni2523uni2545uni252Duni2535uni253Duni2532uni253Auni254Auni2543uni256Euni256Duni256Funi2570uni2573uni2572uni2571uni254Cuni254Euni2577uni252Cuni2510uni250Cuni2500uni2574uni257Cuni2508uni250Auni2576uni2504uni2506uni2575uni257Duni2534uni2518uni2514uni2502uni253Cuni2524uni251Cuni2546uni252Euni2536uni253Euni2531uni2539uni2549uni2544uni2568uni255Cuni2559uni2540uni2538uni2526uni251Auni251Euni2516uni2548uni2537uni252Auni2519uni2522uni2515uni2567uni255Buni2558uni256Buni2562uni255Funi2542uni2528uni2520uni253Funi2525uni251Duni256Auni2561uni255Euni2336uni237Auni2376uni2340uni2349uni2365uni233Euni235Funi233Duni235Cuni236Auni2362uni2352uni234Buni2359uni236Buni235Auni2371uni2366uni234Euni234Auni2356uni2377uni2369uni2373uni2378uni2364uni235Buni2367uni2345uni2375uni2379uni2395uni2342uni233Cuni2360uni2354uni234Duni233Auni2339uni2357uni234Cuni2338uni2344uni233Buni2347uni2343uni236Funi2370uni2348uni2341uni2350uni2353uni235Euni2358uni2374uni2346uni236Euni233Funi2337uni2363uni236Duni2368uni2372uni235Duni2361uni2355uni2351uni234Funi236Cuni2687uni26A0uni26A1uni2713uni2715uni2717uni2736acknowledgecontrolbackspacecontrolminuteseconduni2113uni2116 estimated bellcontroluni2423uni238B cancelcontrolcarriageReturncontroluni2303uni231Euni231Funi231Duni231CdataLinkEscapecontrol deletecontroldeviceControlFourcontroldeviceControlOnecontroldeviceControlThreecontroldeviceControlTwocontroluni238AendOfMediumcontrolendOfTextcontrolendOfTransmissioncontrolendOfTransmissionBlockcontrolenquirycontrol escapecontrolfileSeparatorcontrolformFeedcontrolgroupSeparatorcontrolhorizontalTabulationcontroluni2389houseuni21EAuni232Buni2326uni2328uni2325uni21DFuni21DEuni2318uni23CElineFeedcontrolnegativeAcknowledgecontrolnewlinecontrol nullcontroluni23FBuni23FCuni2B58uni23FDuni23FEuni2305recordSeparatorcontrol replacementshiftIncontrolshiftOutcontrol spacecontrolstartOfHeadingcontrolstartOfTextcontrolsubstitutecontrolsynchronousIdlecontroluni218Buni218AunitSeparatorcontrolverticalTabulationcontrolampersand.cv15uni02F3uni02F7dollar_greater.liga.cv14less_dollar.liga.cv14less_dollar_greater.liga.cv14ampersand_ampersand.liga.cv15'ampersand_ampersand_ampersand.liga.cv15ampersand_equal.liga.cv15at_underscore.ligaampersand_ampersand.liga"ampersand_ampersand_ampersand.ligaampersand_equal.ligabar_hyphen.ligabar_hyphen_greater.ligabar_braceright.ligabar_bracketright.liga bar_bar.ligabar_bar_hyphen.ligabar_bar_bar.ligabar_bar_bar_greater.ligabar_bar_equal.ligabar_bar_greater.ligabar_equal.ligabar_equal_greater.ligabar_greater.ligadollar_greater.ligaplus_plus.ligaplus_plus_plus.ligaplus_greater.ligaequal_colon.ligaequal_colon_equal.ligaequal_exclam_equal.ligaequal_equal.ligaequal_equal_equal.ligaequal_equal_greater.ligaequal_greater.ligaequal_greater_greater.ligaequal_less_less.ligaequal_slash_equal.ligagreater_hyphen.ligagreater_hyphen_greater.ligagreater_bracketright.ligagreater_colon.ligagreater_equal.ligagreater_equal_greater.ligagreater_greater.ligagreater_greater_hyphen.ligagreater_greater_equal.ligagreater_greater_greater.ligaless_hyphen.ligaless_hyphen_hyphen.ligaless_hyphen_bar.ligaless_hyphen_greater.ligaless_hyphen_less.ligaless_colon.ligaless_colon_less.ligaless_exclam_hyphen_hyphen.ligaless_asterisk.ligaless_asterisk_greater.liga less_bar.ligaless_bar_bar.ligaless_bar_bar_bar.ligaless_bar_greater.ligaless_dollar.ligaless_dollar_greater.liga"less_numbersign_hyphen_hyphen.ligaless_plus.ligaless_plus_greater.ligaless_equal.ligaless_equal_bar.ligaless_equal_equal.ligaless_equal_equal_greater.ligaless_equal_greater.ligaless_equal_less.ligaless_greater.ligaless_less.ligaless_less_hyphen.ligaless_less_equal.ligaless_less_less.ligaless_less_asciitilde.ligaless_asciitilde.ligaless_asciitilde_greater.ligaless_asciitilde_asciitilde.ligaless_slash.ligaless_slash_greater.ligaasciitilde_hyphen.ligaasciitilde_at.ligaasciitilde_greater.ligaasciitilde_asciitilde.liga"asciitilde_asciitilde_greater.ligaasciicircum_equal.ligaequal_equal.liga.ss19equal_equal_equal.liga.ss19uni266Duni266Funi0374uni0375uni02BCuni02BAuni02C9uni02B9uni0308uni0307 gravecomb acutecombuni030B uni030C.altuni0302uni030Cuni0306uni030A tildecombuni0304 hookabovecombuni030Funi0312uni031B dotbelowcombuni0325uni0326uni0327uni0328uni0336uni0337uni0338 uni0326.alt uni0308.case uni0307.casegravecomb.caseacutecomb.case uni030B.case uni0302.case uni030C.case uni0306.case uni030A.casetildecomb.case uni0304.casehookabovecomb.case uni030F.case uni0311.case uni0312.case uni031B.casedotbelowcomb.case uni0324.case uni0326.case uni0327.case uni0328.case uni032E.case uni0331.case dieresis.casedotaccent.case grave.case acute.casehungarumlaut.casecircumflex.case caron.case breve.case ring.case tilde.case macron.casetonos tonos.case dieresistonos brevecombcy uni03060301 uni03060300 uni03060309 uni03060303 uni03020301 uni03020300 uni03020309 uni03020303uni03060301.caseuni03060300.caseuni03060309.caseuni03060303.caseuni03020301.caseuni03020300.caseuni03020309.caseuni03020303.caseuniE0A0uniE0A1uniE0A2uniE0B0uniE0B1uniE0B2uniE0B3iogonekdotlessidotbelowdotlessNULLSPCÿÿàM]_xzz|†‰Ýáòôüþ!;=IL|~ÂÄÅÈÈÊÌÏÖØÚÜàâãéêíòôõ÷ýÿ    $&'..1689;;==@FHIKOQSUWYZ\]__aacdffinpuyy{{}~��ƒƒ‰‰‹‹Ž”–™œœ°°ÌÌÃÃÇÇÍÏ}~ªªÅÅÐÐëëííh�¤³ÃËÌ*@ xyz{�žŸ ¡£¤hvŽœ³Ãmw�$ ,4<FPDFLTlatn`mark@mkmkHx~‚†ˆŠ4AZE 4CAT 4CRT 4KAZ 4MOL 4ROM 4TAT 4TRK 4ÿÿBfTÊVÆÀhŽŽÄvTœèæ$ $mw�w�h�¤³Ã0hvŽœ³Ã ðêöüöððöü xyz{�žŸ ¡£¤hlnvŽœ´Ã ÆÆÆÆÀÆÆÆÆÆÆ-žž¤ª°¶¶¶¼ÂÈÎÔÚþàæìòøþ ""(@.4:@XXXXFLRX`txxŽ�Ÿ &¼¼(ÝÝ)"7*;;@L]AdeSghU„ˆW°Â\ÚÚopqFFr__smmtƒƒu‰‰v‘”wªª{ÅÅ|ÐÐ}ëë~íí/zz\bzhzzzzzzzzz€€nt€€€€€€€€€€€zzzzzzzzz€€€€€€€€€ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÈÈÈÈÈÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÈÈÈÈÈÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÔÔÎÎÔÔÎÎÎÎÎÎÔààÚàAººœ¢º¨ºººººººººäÖÖÖÖÖêðöÐÀÀ®´ÀÀÀÀÀÀÀÀÀÀÀÀÖÖÖÖÖÖÖºººººººººÀÀÀÀÀÀÀÀE]_x]zzw|†x‰ÝƒáòØôüêþó !;=I/L|<~ÂmÄŲÈÈ´Ê̵ÏÖ¸ØÚÀÜàÃâãÈéêÊíòÌôõÒ÷ýÔÿÛß à  åæèð !ñ#$ó&'õ..÷16ø89þ;;@FHIKO QSUWYZ\]__aacdffinpu$yy*{{+}~,��.ƒƒ/‰‰0‹‹1Ž”2–™9œœ=°°>ÌÌ?ÃÃ@ÇÇAÍÏB}~EªªGËÌHJ8DºTDºfDºäDºfèºäDºäDºäDºfDºfDºÒDºfèºØDºÞDºäDºØDº8èº&DºDºDº8DºDºØDº8DTD8DTZZ`8DP8DPfDP8DPÀÆÌfÆÌrÆÌrÆÌrÆÌlÆÌr�ÌxÆÌ~ÆÌ„ÆÌ*ÆÌŠÆÌÀ�Ì–ÆÌœÆÌ¢ÆÌÀÆÌ8D*ÆÌ8D8®T®f®f®f®8¨ ®8DP8DPfDP8DÒTDÒfDÒfDÒØDÒ DÒ8èÒ&DÒDÒDÒ8DÒØDÒ0D´D8D8¾ÆÌPºÌPÆÌPÆÀPÆÌPÆÌP8D8DTDfD8¾ØD8>DJPT>DJPf>DJPf>DJPÒ>DJPf>èJPØ>DJPÞ>DJPä>DJPØ>DJP8>èJP&>DJP>DJPN>DJPê>DJPN>èJPð>DJPö>DJPü>DJP>DJP>DJP8>8´DT´DØ>DJP8D8D8DTDfD8¾8DTDfD8DfD8¾8DP8DPfDP8DP8¾P8DJTDJfDJfDJØDJ8èJ&DJDJ8DJTDJ8èJ&DJDJØDJDJDJ8DJØDJ8D8DTDfDØD&D8D8DTDfDØD8è&DDDØD8DPTDPfDP DP8DTDfDØD&D8D8¾8>DJPlþl l,l Vl,l2lJl l l8l Vl>lDlJlPlVl\lblhllnll2¨8D &t&z& &z&€&8Dü2DJ¨DJ®DJ®DJ®DJDJ®èJDJ"DJ(DJêDJêDJ2èJôDJúDJ DJ2DJ8D†šŒš’š’š’š˜šžš¤DPªDP„Dh\Vh°Vh¶Vh¶Vh¶Vh„Vh„Vh„bh¼VhÂVhÈVh„VhÎVhŠ¢Ô¢Ú¢8D8¾ÞøÒPàÒPøÒPøæPìDòøÒP2DDþD D¾D2öDJü¨öDJü®öDJü®öDJü®öDJüöDJü®öèJüöDJü"öDJü(öDJüêöDJü2öèJüôöDJüúöDJü4öDJü.öDJü4öèJü:öDJü@öDJüFöDJüöDJü öDJü2ö2öD¨öDöDJü2DZ`2DÖLÄLÊLÖR2D¨D®D2D®D2¾X‚üX‚üX‚üX‚üXˆü2ðDJ¨ðDJ®ðDJ®ðDJ®ðDJêðDJ^ðDJdðDJjðDJpðDJ2ðèJôðDJúðDJ2¨2îôúðDJ ðDJ2ððDJðDJ2D2D¨D®DêDôD2D2D¨D®DêD2âôDúD DD2Dü¨Dü®DüêDü|ÆvÆ|Æ|²|Æ|Æ‚Ž‚Ž‚Ž‚ŽˆŽ2š¨š®š®š®š”šêšœ¢ ¢¦¢¸Ò¬Ò¸Ò¸²¸Ò¸Ò2D2D¨D®DêDôD8D8¾28DÖÐÄÐÊÐÖÜ2D¨D®DêD2âôDúD DD2ðD¨ðD®ðD®ðDêðD2ðèôðDúðD2ðJ¨ðJ2ðîJôðJúðJðJðD ðD2ðDðDðD8D8D8Dº8D´$ÀÆÌ*ÆÌ88D8f8DTD8D8DP8>DJP8D8DP8f8D8888DZ`8DÒØDÒ0D88´6<BH8D8DNDØØDØØ>DJPØ8DTDZ`8flrx2DJêDJ22D2®Þ~2öDJü2D &2D®D2D222D22„Vh„VhŠ¢22�,DD2–êêDêêöDJüꜢ2¨22D®D8Dº8D´ÀÆÌ8DP8DP8DÒ8D8D8D8>DJP8D8DP8D8D8DºÀÆÌ8DP8DÒ8>DJP8DØDÒØD8D8D8D2D2DD,Þ2D2öDJü2ðDJ2D,ä,2ðDJêðDJ2ðDJ2öDJü2D2DD228 &8D &8D,28>DJP\Vh\bhÿ´”ÿºHÿQ&ÿ&ÿÚþÔÿþÔÿ+þÊÿþÛÿ5þÔÿþÔÿ=þÊþÔþÔ þ³þõþùþÔþÔDþÔ þÔéþÙ9þ®þàpþÔ°þ³¶þõ¶þù¶þÔâþÔ±þÔ“þÖÔþ®¶þÔ¶þÙüþÔzþÔ¢ÿ„þô„þ÷¢þÔ ÿüþòüþ÷üþÔüþÞ&þÊ&þ¶ÚþÞÚþÊÚþÔ&þÔÚcmD&DÚDe Úþì&þÔEþÔþÔ\¶1¶1°a¶yü6¶TüYü6ü6°6ÿ+ ¶8Ô6“&ÿ0¶ڶJÿ¯ÚToüJüOü,üM¶÷¶$Ô"±Q¶,â�Ú.Ô,“,°¶1z1¢y„Q„T¢1 1 1ÿ+691é1D_44 )&T)5p) ‰Ú‰Åf;@9;é; |&|¶6ÿÜÚmðÚ\Z…11 t„L„O¢, M"&÷'9" ‘‡ÿúÁWô,ôô,ÌH¶Úh^ÿ8p,þò·&·%¶'ÿúÚ"ÿk@õ@&æÿÌÿ+,ÿ++ÿ+19+Q,é,D, Ík¶6±ÂÚ!Ú!(Ú(m"ÚW¶'Ú',¶ÑJ&uZ; | O&ú&· 'þòW,@Úô6Ú6¸@,±/&' , ¤&L&,1&(&(1Ú14&4'&,&,Ú@¼,^,m;;&;ÿ+J DFLT¬latn°+aalt´caltäcaseÖccmpÄccmpØcv01Ücv02âcv03ècv04îcv05ôcv06úcv07cv08cv09 cv10cv11cv12cv14$cv15*cv160cv176cv18ACFHJMPRTVX[]`bdfhjlnprtvxz|~€‚„†ˆŠŒŽ�’ Ìöº`°:¦¤*š˜ "$&(*,ÌÐ "$š’Š ú øîðòôöøúüþ Ž „æèêì bæèêìîðòô¢  ’ Š  ¶¸j æb Üšœ Ê †ˆ(‚ôøtvxz|~ Ò P Ê F`bœ ¤¨DFHJLNPRTVXZ\^ " œ  ’@BDFHJLNPRTV¼ÀHJLN ‚ ø ö8:<>@B B ¼ : ²$&(*,.02 ò h ê ^ â T R Ò Hìàâ ÜÞàâäæèêìîðòôö " œ š  �ÐÒ ú v t ê j â ` ^”–˜šœž ¢ $�’ Š  |~ jîìhjlnprìðdfš`bdfhjlnprtv8pr ŠTXTVXZ\^Ü$(,048<@ "j "$&(*ÌÐ "´¸œ  „ˆ   "$&(*ìðØ@̨Êò–”’†ˆ†„�²j¬Bnxê@>TÜ,ÈRòXHöôæ08 âÊàìn€ˆšúJ ÿÿ" "#$%&'()*ÿÿ" "#$%&'()*ÿÿ# "#$%&'()*ÿÿ# "#$%&'()*ÿÿ# "#$%&'()*ÿÿ# "#$%&'()*ÿÿ# "#$%&'()*ÿÿ# "#$%&'()*ÿÿ#  "#$%&'()*ÿÿ# !"#$%&'()*B63À1º‰º5´ˆ´f®g¨h¢” np‘�cŠšŠ„ ~¹~VxWr¥r2l5lff`` ` Z ”YT`NaH¢|Zv£<U660*w*d$ežWXU râµÐ³9¾²ô¬pîèPòÿãD$4ÿöL 084”@F®,c4@4Ï420(v îˆr€vz ðvzú~øðzî æväœâJÚübКÈ^úb¾r¼"´p²tªF¨n BžhœNšb!Иl\dbÎwXÎÎVöLnÎBÎÎHÞ@>yÎ<àV2Î�FÖþ Î$6 Î &΀ Î|rþÎü(öòÎ}øðæîÎzì¯ÎâήÐ@ÂÆÎ¨¼,²²Î¬¨¸žÎ©¬Ž¢¢¦Î˜ÞœŽ§Î„–jzΙ8xZ.΂l¾JbÎ�Ð:´ÆOμ4ÎJ B@MÎŽŒ„9Îz‚pÎ:þx ðôÎR Î@þZôÎ?êP ¸àÎ>6F ¨,Îp‚ÊÜxÎrnÚ „dÎoZ tPÎq> d¾4.Ϊ T‚ -Îv D<l,Î 42GÎ $°üPÎòBfèIÎ.’ $°Î"ð ðÎ�6 Αú Ì.ðÎ"vÐ ¼lÎ&ò ¬èÎ!Þ$ œÔΉº² Œ°ÎŠ® |¤Î‹Òü lÈ·Žò \„Î†Š L¦€Îv <žlÎb ,ZXÎV ¬LÎJ ¢@Î. ü˜$Î" ìŽÎö Òì5Î  Èp“Îþn ¸ôΖú ¨òð’Îî ˜>äÎêâ ˆàÎƒÞ xºÔÎ)j h `Î8Ö XžÌÎLªl H Î%–Ú ŒÎ'‚ $ÐxÎ/n Æd2Îb ¼X1ÎN ô2D*Î: äž0Î+>” Ô4ÎS¢ ĘÎsŽ v„Ît úb h ðÎ( îX Z äÎU úN x ðÎu Ö hD Ì\Î Â X º ¸ZÎ ¾ H ¶ ´XÎ º ² 8 °ÎY ¶ ( ® ¬]Î ²  ª ¨BÎ ® ¦  ¤Î ª ø ¢  EÎ ¦ ž è œÎ ¢ Ø š ˜<Î ž – È ”Θ š ¸ ’ �VÎ – Ž ¨ ŒÎª ’ Š ˜ ˆÎ› Ž † ˆ „Μ Š ‚ x €Îš † h ~ |ŸÎ zú X pΤ v H n lžÎ r 8 j h�Î n f ( dΣ j  b `~Î ^ÅÄ \ PÞ lŒ ZÒÎÎxÚ X HÐÎÎ;ÎÌ D 6dÀÎDÎð 0 4¾äÎKΰ $<¤Î7΢ , –AÎΔ ˆÎΈ� Äð†„ÎJ΂ÜôàvTÎÎtÌäÐhÎÎ6p¼fÀdÎÎHb¬°¼VÎÎTœ ¬HÎÎFŒ�œ:ÎCÎ8|€Œ,ÎFÎ*lp|Î=Î\`lÎWÎ\LPΥΠv€Š”î†�IPìÆÇÆÇê²³^_è�‘’Iæ  ŽLJL v¬´ŒdŒ f¢$ÎÏ"â ã 4DÚ &dhB~€�‚ƒ0“”•–—˜ŽŽJN­Â<®4b°"X°–æ¸æ7І¢Ð7jºpº9¤vZ¤9Ìœ•xx•Žf–v µ¶·¸¹š›œ�ž|lL–|    ;ž§¨©ª«¬­®¯  NO�žœßàá  šº»Ÿ ¡JKLMstœ°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÖ$ø�˜ ¨°¸ÀÈÐ~Ø Rl"nrxà.~èÂ:„FâJ¨`Šð’B&µ¶·¸¹Ã“”•–—˜™„…†‡ˆš›œ�ž§¨©ª«¬­®¯  NO�žÐ'Ž��‘’“”•–—˜™šœ�ž ¡¢¥¦§¨©ª«¬­®¯±¼½¾¿ÀÁÂÃ")@AŽ��‘’“”•–—˜™šœ�ž ¡¢¥¦§¨©ª«¬­®¯±¼½¾¿ÀÁÂÃÖ/ÌË‘‘Ž��‘’“”•–—˜™šœ�ž ¡¢¥¦§¨©ª«¬­®¯±¼½¾¿ÀÁÂÃÊ;º»¢Ÿ ¡~€�‚ƒ£¤¥¦°±²³´µ¶·¸¹º»¼½¾¿ÀÁ§¨©ª«¬­®¯  JKLNOM�œžÄ=Ædž�ÆÇI}Pîïðñòóôõö÷AÎŽ��‘’“”•–—˜™šœ�ž ¡¢¥¦§¨©ª«¬­®¯±¼½¾¿ÀÁÂÃÿÔ|ôEF:4).,¾W0µ\"20J+=ˆ$.8BLV`jtpz„t€†�„�’œ”¢¬¶ÀÊÔˆÚ�à˜æðú”Äœ¤°",6@ ¬¸ÄÐÜè.ð4>HðNXblv€Š”ž¨²¼ÆÐÚäîø LPõû@C à òú ö~ü†"2<LVfp€Šš¤´¾ÎØèò  ª ¸ Æ&2>JVbnz†’žª¶ÂÎÚæòþ ".:FR^jøÔݸÄbpÆÒt‚Ô̆”Ö˜¦Øäª¸æÆ¼ÊèôÎÜöÊàîü  , 2&¤&¶ :&À&ÒEWFWÈÖ 2.E.F¶~Ì\´²¾ÊF¾G¾H¾G¢^°E¾=>¦öÚ4=†¤)‚ò¢ºÊ&4&>&P&b¾ˆÂ^ÒŽH\¾.J¢|+++v‚j¾W¾¾XØj+00þBN)0µòD)=W*N""¾ò "º"W"¶Â"´¾ª#ºÆÅ¢žÊ^‚¶¾4²b4®ª =B =š¦:E¢®:Gª¶:C²0::\¦ø.:¢êö+:ž²ô:š¦ò:Hô¢Ý!$4$F$R$d$p$‚$Ž$ W ®$¢$²$Â,IJ°¾ÀÎ$º$Ê$Ú##*$Þ$î$þÄÒ%%%"Ž4šÔâäò%%*%:ôh%>%N%^öN%b%r%‚v*ø%z%Š%š&%ž%®%¾(6%Â%Ò%â8F%æ%ö&& &+ú, >L& &02ÌÚP4~šTXf&"&2jx&8&H".¤|€Ž&D&T’ &Z&j¤À²&p*¶Ä –ÈÌÚ&b&rÞì&x&ˆ,ð,ô4øü! &p&€&†&–&¦&¬&¼&ÌH°²æ Òž&&ª&º*&À &Ð.!È&Ö&æ2@&ì&üDR''V!''((4@Z^'$Þ'4bp~':Ø"‚†Ú'6'FÐŽÜŠ'B)f*¶'J'Z*À~ ¸'b Ø æ'j|Š'r�ž'z¤²'‚¸!,'о ˆ'’ÄÒ'šØæ'¢ìú'ª '²  "'º*j*z-Þ-ð.. '´*|'Â'Ð  ü $'Ð'Þ*p'ÞD*€*�*  DP\'Þ'ì'ì(\(j*”*¤)'î *¨*¸ ‚N ~'ð)œ- r)ª*°'æ--°f*´'è*¸'ö*È*Ø'ø*Üä*ì*ü++-ž-°-Â'îÚè++$'ð+('þ+8+H(+L(+\+lÒnÖÞ( úÞ(.EW+N-‚( -”.W:W'ü,ˆê+@W¾+0+(-`+8-r"W¾'º+ 'È+0¾¾W¾Å4=:C\*æ'|'„'’'š-+rè*æ*ô'”.'¢'®d*ò+'ª'¶`'Â'Î*þ*þÎÜ+ +,Ä'¾¸'ÊP'Ö+Î'Ô'à+(Ò+'Þ+,ª¨Ä+(28>D@FLRNTZ`\bhnJvŽ*ø�+H+,|,Š+ZŒ+f*þ+N\,†,”,�*ø'ˆ^'–-j-z-Š+*ö+6\hD,Œ,Š,˜-Ð*òT-x-ˆ„ŒGO`½"�‘#$ 6µ   ,Tø,`,l,x,„*°-F,~,Š,–,¢,®,º -B,´Ê-l-|-Œ-œ->-L½`" *v*‚*Ž´-¦-Š*šÀ-˜ÃÅBCÜìö Ùéóýî÷Î>ÎÎWW -2->-n-Š-š-J-V-b-|)23¾Æhlnv¢¦jnwy{ÿ  �46IÔÝ ÔÞWW¾¾¼Èþ Qt ¹hlnxz|€Š°°´»Žšœž ¢¥¯±±¼Ãhlnxz|€Š°°´»¼Èþ¼ó ôQtú ¹¼Èþ¼ó ôQtú ¹ÔÞ8QSUV[hpqrstuvwxßà#$wÖÚÝæêíðô÷úþ QRÑÕÖø<Zr~AB®Îš¥œÎBÎYÎåùæúçûèüéýêþëÿ ì í Œ�Îv›Î,Î  ÎÞäø€’ÎyŽžÎ—¦§<Î~ ¡¢În{�Τ°± Î;E΂‡”•ŸÎuRSU[Î ™«­¯VÎ @„…“� -9Î pz|6>?@HÎ st}�‹(8:LNQÎlmwx*145;DOX΃†‰�‘–£¨©¬!"#$).2GIP]Î++BBhlnxz|€Š°° ´»!"oqrˆŠ˜ª%&'+/037=ACFJKMTWZ\Î ¢¦ôôLP jnpxßà #$"ww$%$ÔÕÖרÙÚÛÜÝ)+,.024:=>CEFGHW\Å"´µ¾ÿÿ    ��4466IIhlnx z|€Š°°&´»'QRôô@C QSUV[hpx#ÑÑ,ÕÖ-ßà/øø123#$5<<7ww8~9``„„ŒŒ½½ÿÿ""GGJJOO ø BB##hlnxz|&€Š)°°4´»5Ã")ZÎÎÎ-Î/Î1Î3Î5ÎBÎJÎOÎ\ÎsÎuÎ�ΑΙ΢ΤΦΨΪεÎÀÎÌÎÎÎÐÎàÎîÎöÎøÎÎÎÎÎÎ=ÎBÎIÎ\ÎaÎcÎeÎgÎkÎmÎqÎsÎwÎyÎ}ÎÎ�΃΅·Ή΋Î�Î�ΓG¾HHÎÎÎÎDÎÎeÎÎkÎwÎÎ�ÎΖÎ\²Î½ÎÉÎÎäÎÎëÎÎðÎÎóÎ"Î%Î(ÎÎ.Î4ÎÎ7ÎÎ:Î?ÎÎ^¾/H1EEEWFFWF::,,,,00µµµµ\\´\¾F¾FE¾)0++0))""W"´´´#ÅÅÅÅ44=:EEE:GGG:CCC:0:.:+:H:::))00++\\..¾¾WW44==¸k¹jºt»r´kµj¶t·rÀ‘Á�™×¼‘½�¾™¿—np“•=¾ÎÎÎçÎÎÎ.ÎÎGÎHÎÎLÎ4MÎΌξ�ÎΓΔÎέήÎκλÎÎÎWÎÎ1Î2ÎÎKÎLÎÎNÎOÎÎYÎ"Z΄Î΄ΆÎΆÎΰΰÎâÎÎâÎÎ+ÎÎGÎGξQÎÎQξSÎÎSÎUÎÎUÎWÎÎWÎiÎÎiÎoÎÎoÎuÎÎuÎ{ÎÎ{ÎΑÎC‘ÎE Î F Î!:"ÎUVÎÕ,ÖÎ0εÎ\ E.....\F-¾5=0\sW+¤ÎîWW)WaWc´egÅkmqs4wy=}E�GƒC…0‡.‹+��:“=)))+++=++¾W¾¾+++00¾W¾0++µW":\\CWWW""""W==ÎÎÎÎÎFÎWWÎWWhÎWWp£SS¤~~¥““¦EEWWWEEW..G¾¾¾¾¾¾¾“WWK::::::Î;=<======Î^)_))))))ÎÒ+Ó,,,,,,++++++000000µµµµµµ.FF..F+B)))WWW+u++"""¾¾¾¾¾¾¾¾�¾‘\¾\¾\\ÌÐ0à++¾¾W¾¾Wöø+WWWWWW"B""""""""\""\‰W+00""W¾W¾¾¾¾WÅÅ44==:\C\CC..¾¾¾H""W+¾¾WW444444WÎWWEWWÎÎÎÎÎW¾¾¾ˆÎÎΈÎξ‰Î¾¾ŠÎÎÎÎÎWÎÎÎhÎÎWiÎÎÎpÎÎWqÎÎ+Î,ÎÎ$Î:%::&ÎÎ>Î=?==@ÎÎQÎ4R44SÎÎXÎYZÎÎaÎ)b))cÎÎ}Î~ÎΞΟ ÎÎØÎ,Ù,,ÚÎÎÜÎ+Ý++ÞÎÎ Î0 00 ÎÎεµµWWFFWFFFÎF.FÎe)fÎWkWlÎÎw+xÎ"�"‚¾¾ŒÎª«Îβ¾\³Îä+å¾¾WWÎWð¾Wñ¾¾Îó¾ôÎÎ%W&0C1ÎÎ45Î78ÎW:W;ÎÎ?W@0CN""YÎ^"_E.WW:WW:WWWW†¾°0â"GW¾QUWWÅio4u={\C‘0C.η.¸Îú¾ûWWWÎD"E==WW¢...+¾¾==W=I.WWW¾¾¾˜™nGWWWW=4444=4)4=)==4¾.ÎFFWFF.WW:WWp::::::::0C.GWWÎÎÎWWWÎD=EΖW—­º0C.Îν.¾0C+ÎÎÉ+ʾ¾¾¾¾Îë¾ì0C=ÎÎ"=#0CÎÎ().WW„0C¾¾SÎÂÃÎýWþ4J=4444=44)=O¨0Cµ"W0CW0CGÎÎÎ(ÎÎ:)Î::*:::+0CÎÎçξ达é0C.WW.WWh0C+44L0CÎz{Λœ™GG4Å=HH4HÅH=HH0.0CWÎÎÅÎÆÇÎ./3H¦C0CC+C.CC=0CÀ0CnÊËbloomjÔƒ«BTSR ##]€¼$ <5]™5œ5Oë5n YR]¶R}! 3t]�t«;uô /”]jvsfs_setupfs_down fs_blur_x fs_blur_y vsvsfs_setupfs_setupfs_downfs_down fs_blur_x fs_blur_x fs_blur_y fs_blur_y¿struct Params { a: vec4, b: vec4, } struct VsOut { @builtin(position) position: vec4, @location(0) uv: vec2, } @group(0) @binding(0) var src: texture_2d; @group(0) @binding(1) var smp: sampler; @group(0) @binding(2) var params: Params; @group(0) @binding(3) var smaller: texture_2d; fn luma(c: vec3) -> f32 { return dot(c, vec3(0.2126f, 0.7152f, 0.0722f)); } fn tap(uv: vec2, o_1: vec2) -> vec3 { let _e6 = textureSampleLevel(src, smp, (uv + o_1), 0f); return _e6.xyz; } fn gaussian(uv_1: vec2) -> vec3 { var sum: vec3; var total: f32 = 1f; var i_1: i32 = 1i; let _e3 = params.a; let axis = _e3.xy; let _e8 = params.a.z; let _e12 = params.a.z; let inv = (1f / (_e8 * _e12)); let _e19 = params.a.w; let taps = i32(_e19); let _e24 = textureSampleLevel(src, smp, uv_1, 0f); sum = _e24.xyz; loop { let _e31 = i_1; if (_e31 <= taps) { } else { break; } { let _e33 = i_1; let x0_ = f32(_e33); let x1_ = (x0_ + 1f); let w0_ = exp(((-(x0_) * x0_) * inv)); let w1_ = exp(((-(x1_) * x1_) * inv)); let w = (w0_ + w1_); let o_2 = (axis * (((x0_ * w0_) + (x1_ * w1_)) / w)); let _e51 = sum; let _e56 = textureSampleLevel(src, smp, (uv_1 + o_2), 0f); let _e62 = textureSampleLevel(src, smp, (uv_1 - o_2), 0f); sum = (_e51 + ((_e56.xyz + _e62.xyz) * w)); let _e67 = total; total = (_e67 + (2f * w)); } continuing { let _e71 = i_1; i_1 = (_e71 + 2i); } } let _e74 = sum; let _e75 = total; return (_e74 / vec3(_e75)); } @vertex fn vs(@builtin(vertex_index) i: u32) -> VsOut { var p: array, 3> = array, 3>(vec2(-1f, -1f), vec2(3f, -1f), vec2(-1f, 3f)); var o: VsOut; let _e15 = p[i]; o.position = vec4(_e15, 0f, 1f); let _e22 = p[i].x; let _e27 = p[i].y; o.uv = (vec2((_e22 + 1f), (1f - _e27)) * 0.5f); let _e33 = o; return _e33; } @fragment fn fs_setup(in: VsOut) -> @location(0) vec4 { let _e2 = textureDimensions(src); let o_3 = (vec2(1f) / vec2(_e2)); let _e13 = tap(in.uv, vec2(-(o_3.x), -(o_3.y))); let _e19 = tap(in.uv, vec2(o_3.x, -(o_3.y))); let _e25 = tap(in.uv, vec2(-(o_3.x), o_3.y)); let _e30 = tap(in.uv, vec2(o_3.x, o_3.y)); let _e31 = luma(_e13); let wa = (1f / (1f + _e31)); let _e36 = luma(_e19); let wb = (1f / (1f + _e36)); let _e41 = luma(_e25); let wc = (1f / (1f + _e41)); let _e46 = luma(_e30); let wd = (1f / (1f + _e46)); let color = (((((_e13 * wa) + (_e19 * wb)) + (_e25 * wc)) + (_e30 * wd)) / vec3((((wa + wb) + wc) + wd))); let _e63 = luma(color); let _e67 = params.a.x; let amount = clamp(((_e63 - _e67) * 0.5f), 0f, 1f); return vec4((color * amount), 1f); } @fragment fn fs_down(in_1: VsOut) -> @location(0) vec4 { let _e2 = textureDimensions(src); let o_4 = (vec2(1f) / vec2(_e2)); let _e13 = tap(in_1.uv, vec2(-(o_4.x), -(o_4.y))); let _e19 = tap(in_1.uv, vec2(o_4.x, -(o_4.y))); let _e26 = tap(in_1.uv, vec2(-(o_4.x), o_4.y)); let _e32 = tap(in_1.uv, vec2(o_4.x, o_4.y)); let c_1 = (((_e13 + _e19) + _e26) + _e32); return vec4((c_1 * 0.25f), 1f); } @fragment fn fs_blur_x(in_2: VsOut) -> @location(0) vec4 { let _e2 = gaussian(in_2.uv); return vec4(_e2, 1f); } @fragment fn fs_blur_y(in_3: VsOut) -> @location(0) vec4 { let _e2 = gaussian(in_3.uv); let _e5 = params.b; let level = (_e2 * _e5.xyz); let _e12 = textureSampleLevel(smaller, smp, in_3.uv, 0f); let _e17 = params.b.w; let below = (_e12.xyz * _e17); return vec4((level + below), 1f); }   `¶A#GÓ¦vsmain#version 300 es precision highp float; precision highp int; struct Params { vec4 a; vec4 b; }; struct VsOut { vec4 position; vec2 uv; }; smooth out vec2 _vs2fs_location0; float luma(vec3 c) { return dot(c, vec3(0.2126, 0.7152, 0.0722)); } void main() { uint i = uint(gl_VertexID); vec2 p[3] = vec2[3](vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0)); VsOut o = VsOut(vec4(0.0), vec2(0.0)); vec2 _e15 = p[i]; o.position = vec4(_e15, 0.0, 1.0); float _e22 = p[i].x; float _e27 = p[i].y; o.uv = (vec2((_e22 + 1.0), (1.0 - _e27)) * 0.5); VsOut _e33 = o; gl_Position = _e33.position; _vs2fs_location0 = _e33.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_setupmain„ #version 300 es precision highp float; precision highp int; struct Params { vec4 a; vec4 b; }; struct VsOut { vec4 position; vec2 uv; }; uniform highp sampler2D _group_0_binding_0_fs; layout(std140) uniform Params_block_0Fragment { Params _group_0_binding_2_fs; }; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float luma(vec3 c) { return dot(c, vec3(0.2126, 0.7152, 0.0722)); } vec3 tap(vec2 uv, vec2 o_1) { vec4 _e6 = textureLod(_group_0_binding_0_fs, vec2((uv + o_1)), 0.0); return _e6.xyz; } vec3 gaussian(vec2 uv_1) { vec3 sum = vec3(0.0); float total = 1.0; int i_1 = 1; vec4 _e3 = _group_0_binding_2_fs.a; vec2 axis = _e3.xy; float _e8 = _group_0_binding_2_fs.a.z; float _e12 = _group_0_binding_2_fs.a.z; float inv = (1.0 / (_e8 * _e12)); float _e19 = _group_0_binding_2_fs.a.w; int taps = int(_e19); vec4 _e24 = textureLod(_group_0_binding_0_fs, vec2(uv_1), 0.0); sum = _e24.xyz; bool loop_init = true; while(true) { if (!loop_init) { int _e71 = i_1; i_1 = (_e71 + 2); } loop_init = false; int _e31 = i_1; if ((_e31 <= taps)) { } else { break; } { int _e33 = i_1; float x0_ = float(_e33); float x1_ = (x0_ + 1.0); float w0_ = exp(((-(x0_) * x0_) * inv)); float w1_ = exp(((-(x1_) * x1_) * inv)); float w = (w0_ + w1_); vec2 o_2 = (axis * (((x0_ * w0_) + (x1_ * w1_)) / w)); vec3 _e51 = sum; vec4 _e56 = textureLod(_group_0_binding_0_fs, vec2((uv_1 + o_2)), 0.0); vec4 _e62 = textureLod(_group_0_binding_0_fs, vec2((uv_1 - o_2)), 0.0); sum = (_e51 + ((_e56.xyz + _e62.xyz) * w)); float _e67 = total; total = (_e67 + (2.0 * w)); } } vec3 _e74 = sum; float _e75 = total; return (_e74 / vec3(_e75)); } void main() { VsOut in_ = VsOut(gl_FragCoord, _vs2fs_location0); vec2 o_3 = (vec2(1.0) / vec2(uvec2(textureSize(_group_0_binding_0_fs, 0).xy))); vec3 _e13 = tap(in_.uv, vec2(-(o_3.x), -(o_3.y))); vec3 _e19 = tap(in_.uv, vec2(o_3.x, -(o_3.y))); vec3 _e25 = tap(in_.uv, vec2(-(o_3.x), o_3.y)); vec3 _e30 = tap(in_.uv, vec2(o_3.x, o_3.y)); float _e31 = luma(_e13); float wa = (1.0 / (1.0 + _e31)); float _e36 = luma(_e19); float wb = (1.0 / (1.0 + _e36)); float _e41 = luma(_e25); float wc = (1.0 / (1.0 + _e41)); float _e46 = luma(_e30); float wd = (1.0 / (1.0 + _e46)); vec3 color = (((((_e13 * wa) + (_e19 * wb)) + (_e25 * wc)) + (_e30 * wd)) / vec3((((wa + wb) + wc) + wd))); float _e63 = luma(color); float _e67 = _group_0_binding_2_fs.a.x; float amount = clamp(((_e63 - _e67) * 0.5), 0.0, 1.0); _fs2p_location0 = vec4((color * amount), 1.0); return; } fs_downmain¿#version 300 es precision highp float; precision highp int; struct Params { vec4 a; vec4 b; }; struct VsOut { vec4 position; vec2 uv; }; uniform highp sampler2D _group_0_binding_0_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float luma(vec3 c) { return dot(c, vec3(0.2126, 0.7152, 0.0722)); } vec3 tap(vec2 uv, vec2 o_1) { vec4 _e6 = textureLod(_group_0_binding_0_fs, vec2((uv + o_1)), 0.0); return _e6.xyz; } void main() { VsOut in_1 = VsOut(gl_FragCoord, _vs2fs_location0); vec2 o_2 = (vec2(1.0) / vec2(uvec2(textureSize(_group_0_binding_0_fs, 0).xy))); vec3 _e13 = tap(in_1.uv, vec2(-(o_2.x), -(o_2.y))); vec3 _e19 = tap(in_1.uv, vec2(o_2.x, -(o_2.y))); vec3 _e26 = tap(in_1.uv, vec2(-(o_2.x), o_2.y)); vec3 _e32 = tap(in_1.uv, vec2(o_2.x, o_2.y)); vec3 c_1 = (((_e13 + _e19) + _e26) + _e32); _fs2p_location0 = vec4((c_1 * 0.25), 1.0); return; }  fs_blur_xmainy#version 300 es precision highp float; precision highp int; struct Params { vec4 a; vec4 b; }; struct VsOut { vec4 position; vec2 uv; }; uniform highp sampler2D _group_0_binding_0_fs; layout(std140) uniform Params_block_0Fragment { Params _group_0_binding_2_fs; }; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float luma(vec3 c) { return dot(c, vec3(0.2126, 0.7152, 0.0722)); } vec3 tap(vec2 uv, vec2 o_1) { vec4 _e6 = textureLod(_group_0_binding_0_fs, vec2((uv + o_1)), 0.0); return _e6.xyz; } vec3 gaussian(vec2 uv_1) { vec3 sum = vec3(0.0); float total = 1.0; int i_1 = 1; vec4 _e3 = _group_0_binding_2_fs.a; vec2 axis = _e3.xy; float _e8 = _group_0_binding_2_fs.a.z; float _e12 = _group_0_binding_2_fs.a.z; float inv = (1.0 / (_e8 * _e12)); float _e19 = _group_0_binding_2_fs.a.w; int taps = int(_e19); vec4 _e24 = textureLod(_group_0_binding_0_fs, vec2(uv_1), 0.0); sum = _e24.xyz; bool loop_init = true; while(true) { if (!loop_init) { int _e71 = i_1; i_1 = (_e71 + 2); } loop_init = false; int _e31 = i_1; if ((_e31 <= taps)) { } else { break; } { int _e33 = i_1; float x0_ = float(_e33); float x1_ = (x0_ + 1.0); float w0_ = exp(((-(x0_) * x0_) * inv)); float w1_ = exp(((-(x1_) * x1_) * inv)); float w = (w0_ + w1_); vec2 o_2 = (axis * (((x0_ * w0_) + (x1_ * w1_)) / w)); vec3 _e51 = sum; vec4 _e56 = textureLod(_group_0_binding_0_fs, vec2((uv_1 + o_2)), 0.0); vec4 _e62 = textureLod(_group_0_binding_0_fs, vec2((uv_1 - o_2)), 0.0); sum = (_e51 + ((_e56.xyz + _e62.xyz) * w)); float _e67 = total; total = (_e67 + (2.0 * w)); } } vec3 _e74 = sum; float _e75 = total; return (_e74 / vec3(_e75)); } void main() { VsOut in_2 = VsOut(gl_FragCoord, _vs2fs_location0); vec3 _e2 = gaussian(in_2.uv); _fs2p_location0 = vec4(_e2, 1.0); return; }  fs_blur_ymain– #version 300 es precision highp float; precision highp int; struct Params { vec4 a; vec4 b; }; struct VsOut { vec4 position; vec2 uv; }; uniform highp sampler2D _group_0_binding_0_fs; layout(std140) uniform Params_block_0Fragment { Params _group_0_binding_2_fs; }; uniform highp sampler2D _group_0_binding_3_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float luma(vec3 c) { return dot(c, vec3(0.2126, 0.7152, 0.0722)); } vec3 tap(vec2 uv, vec2 o_1) { vec4 _e6 = textureLod(_group_0_binding_0_fs, vec2((uv + o_1)), 0.0); return _e6.xyz; } vec3 gaussian(vec2 uv_1) { vec3 sum = vec3(0.0); float total = 1.0; int i_1 = 1; vec4 _e3 = _group_0_binding_2_fs.a; vec2 axis = _e3.xy; float _e8 = _group_0_binding_2_fs.a.z; float _e12 = _group_0_binding_2_fs.a.z; float inv = (1.0 / (_e8 * _e12)); float _e19 = _group_0_binding_2_fs.a.w; int taps = int(_e19); vec4 _e24 = textureLod(_group_0_binding_0_fs, vec2(uv_1), 0.0); sum = _e24.xyz; bool loop_init = true; while(true) { if (!loop_init) { int _e71 = i_1; i_1 = (_e71 + 2); } loop_init = false; int _e31 = i_1; if ((_e31 <= taps)) { } else { break; } { int _e33 = i_1; float x0_ = float(_e33); float x1_ = (x0_ + 1.0); float w0_ = exp(((-(x0_) * x0_) * inv)); float w1_ = exp(((-(x1_) * x1_) * inv)); float w = (w0_ + w1_); vec2 o_2 = (axis * (((x0_ * w0_) + (x1_ * w1_)) / w)); vec3 _e51 = sum; vec4 _e56 = textureLod(_group_0_binding_0_fs, vec2((uv_1 + o_2)), 0.0); vec4 _e62 = textureLod(_group_0_binding_0_fs, vec2((uv_1 - o_2)), 0.0); sum = (_e51 + ((_e56.xyz + _e62.xyz) * w)); float _e67 = total; total = (_e67 + (2.0 * w)); } } vec3 _e74 = sum; float _e75 = total; return (_e74 / vec3(_e75)); } void main() { VsOut in_3 = VsOut(gl_FragCoord, _vs2fs_location0); vec3 _e2 = gaussian(in_3.uv); vec4 _e5 = _group_0_binding_2_fs.b; vec3 level = (_e2 * _e5.xyz); vec4 _e12 = textureLod(_group_0_binding_3_fs, vec2(in_3.uv), 0.0); float _e17 = _group_0_binding_2_fs.b.w; vec3 below = (_e12.xyz * _e17); _fs2p_location0 = vec4((level + below), 1.0); return; }   sës×£Ÿ)Params_block_0Fragment_group_0_binding_0_fs_group_0_binding_3_fsvsvsfs_setupfs_setupfs_downfs_down fs_blur_x fs_blur_x fs_blur_y fs_blur_y // language: metal2.2 #include #include using metal::uint; struct Params { metal::float4 a; metal::float4 b; }; struct VsOut { metal::float4 position; metal::float2 uv; char _pad2[8]; }; struct type_6 { metal::float2 inner[3]; }; float luma( metal::float3 c ) { return metal::dot(c, metal::float3(0.2126, 0.7152, 0.0722)); } metal::float3 tap( metal::float2 uv, metal::float2 o_1, metal::texture2d src, metal::sampler smp ) { metal::float4 _e6 = src.sample(smp, uv + o_1, metal::level(0.0)); return _e6.xyz; } int naga_f2i32(float value) { return static_cast(metal::clamp(value, -2147483600.0, 2147483500.0)); } metal::float3 gaussian( metal::float2 uv_1, metal::texture2d src, metal::sampler smp, constant Params& params ) { metal::float3 sum = {}; float total = 1.0; int i_1 = 1; metal::float4 _e3 = params.a; metal::float2 axis = _e3.xy; float _e8 = params.a.z; float _e12 = params.a.z; float inv = 1.0 / (_e8 * _e12); float _e19 = params.a.w; int taps = naga_f2i32(_e19); metal::float4 _e24 = src.sample(smp, uv_1, metal::level(0.0)); sum = _e24.xyz; uint2 loop_bound = uint2(4294967295u); bool loop_init = true; while(true) { if (metal::all(loop_bound == uint2(0u))) { break; } loop_bound -= uint2(loop_bound.y == 0u, 1u); if (!loop_init) { int _e71 = i_1; i_1 = as_type(as_type(_e71) + as_type(2)); } loop_init = false; int _e31 = i_1; if (_e31 <= taps) { } else { break; } { int _e33 = i_1; float x0_ = static_cast(_e33); float x1_ = x0_ + 1.0; float w0_ = metal::exp((-(x0_) * x0_) * inv); float w1_ = metal::exp((-(x1_) * x1_) * inv); float w = w0_ + w1_; metal::float2 o_2 = axis * (((x0_ * w0_) + (x1_ * w1_)) / w); metal::float3 _e51 = sum; metal::float4 _e56 = src.sample(smp, uv_1 + o_2, metal::level(0.0)); metal::float4 _e62 = src.sample(smp, uv_1 - o_2, metal::level(0.0)); sum = _e51 + ((_e56.xyz + _e62.xyz) * w); float _e67 = total; total = _e67 + (2.0 * w); } } metal::float3 _e74 = sum; float _e75 = total; return _e74 / metal::float3(_e75); } struct vsInput { }; struct vsOutput { metal::float4 position [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vsOutput vs( uint i [[vertex_id]] ) { type_6 p = type_6 {{metal::float2(-1.0, -1.0), metal::float2(3.0, -1.0), metal::float2(-1.0, 3.0)}}; VsOut o = {}; metal::float2 _e15 = p.inner[metal::min(unsigned(i), 2u)]; o.position = metal::float4(_e15, 0.0, 1.0); float _e22 = p.inner[metal::min(unsigned(i), 2u)].x; float _e27 = p.inner[metal::min(unsigned(i), 2u)].y; o.uv = metal::float2(_e22 + 1.0, 1.0 - _e27) * 0.5; VsOut _e33 = o; const auto _tmp = _e33; return vsOutput { _tmp.position, _tmp.uv }; } struct fs_setupInput { metal::float2 uv_2 [[user(loc0), center_perspective]]; }; struct fs_setupOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_setupOutput fs_setup( fs_setupInput varyings_1 [[stage_in]] , metal::float4 position [[position]] , metal::texture2d src [[texture(0)]] , metal::sampler smp [[sampler(0)]] , constant Params& params [[buffer(0)]] ) { const VsOut in = { position, varyings_1.uv_2 }; metal::float2 o_3 = metal::float2(1.0) / static_cast(metal::uint2(src.get_width(), src.get_height())); metal::float3 _e13 = tap(in.uv, metal::float2(-(o_3.x), -(o_3.y)), src, smp); metal::float3 _e19 = tap(in.uv, metal::float2(o_3.x, -(o_3.y)), src, smp); metal::float3 _e25 = tap(in.uv, metal::float2(-(o_3.x), o_3.y), src, smp); metal::float3 _e30 = tap(in.uv, metal::float2(o_3.x, o_3.y), src, smp); float _e31 = luma(_e13); float wa = 1.0 / (1.0 + _e31); float _e36 = luma(_e19); float wb = 1.0 / (1.0 + _e36); float _e41 = luma(_e25); float wc = 1.0 / (1.0 + _e41); float _e46 = luma(_e30); float wd = 1.0 / (1.0 + _e46); metal::float3 color = ((((_e13 * wa) + (_e19 * wb)) + (_e25 * wc)) + (_e30 * wd)) / metal::float3(((wa + wb) + wc) + wd); float _e63 = luma(color); float _e67 = params.a.x; float amount = metal::clamp((_e63 - _e67) * 0.5, 0.0, 1.0); return fs_setupOutput { metal::float4(color * amount, 1.0) }; } struct fs_downInput { metal::float2 uv_2 [[user(loc0), center_perspective]]; }; struct fs_downOutput { metal::float4 member_2 [[color(0)]]; }; fragment fs_downOutput fs_down( fs_downInput varyings_2 [[stage_in]] , metal::float4 position_1 [[position]] , metal::texture2d src [[texture(0)]] , metal::sampler smp [[sampler(0)]] ) { const VsOut in_1 = { position_1, varyings_2.uv_2 }; metal::float2 o_4 = metal::float2(1.0) / static_cast(metal::uint2(src.get_width(), src.get_height())); metal::float3 _e13 = tap(in_1.uv, metal::float2(-(o_4.x), -(o_4.y)), src, smp); metal::float3 _e19 = tap(in_1.uv, metal::float2(o_4.x, -(o_4.y)), src, smp); metal::float3 _e26 = tap(in_1.uv, metal::float2(-(o_4.x), o_4.y), src, smp); metal::float3 _e32 = tap(in_1.uv, metal::float2(o_4.x, o_4.y), src, smp); metal::float3 c_1 = ((_e13 + _e19) + _e26) + _e32; return fs_downOutput { metal::float4(c_1 * 0.25, 1.0) }; } struct fs_blur_xInput { metal::float2 uv_2 [[user(loc0), center_perspective]]; }; struct fs_blur_xOutput { metal::float4 member_3 [[color(0)]]; }; fragment fs_blur_xOutput fs_blur_x( fs_blur_xInput varyings_3 [[stage_in]] , metal::float4 position_2 [[position]] , metal::texture2d src [[texture(0)]] , metal::sampler smp [[sampler(0)]] , constant Params& params [[buffer(0)]] ) { const VsOut in_2 = { position_2, varyings_3.uv_2 }; metal::float3 _e2 = gaussian(in_2.uv, src, smp, params); return fs_blur_xOutput { metal::float4(_e2, 1.0) }; } struct fs_blur_yInput { metal::float2 uv_2 [[user(loc0), center_perspective]]; }; struct fs_blur_yOutput { metal::float4 member_4 [[color(0)]]; }; fragment fs_blur_yOutput fs_blur_y( fs_blur_yInput varyings_4 [[stage_in]] , metal::float4 position_3 [[position]] , metal::texture2d src [[texture(0)]] , metal::sampler smp [[sampler(0)]] , constant Params& params [[buffer(0)]] , metal::texture2d smaller [[texture(1)]] ) { const VsOut in_3 = { position_3, varyings_4.uv_2 }; metal::float3 _e2 = gaussian(in_3.uv, src, smp, params); metal::float4 _e5 = params.b; metal::float3 level = _e2 * _e5.xyz; metal::float4 _e12 = smaller.sample(smp, in_3.uv, metal::level(0.0)); float _e17 = params.b.w; metal::float3 below = _e12.xyz * _e17; return fs_blur_yOutput { metal::float4(level + below, 1.0) }; }   sës×£Ÿ)vsmain#struct Params { float4 a; float4 b; }; struct VsOut { float4 position; float2 uv; }; static const float2 _40[3] = { float2(-1.0f, -1.0f), float2(3.0f, -1.0f), float2(-1.0f, 3.0f) }; static const VsOut _48 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 uv; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 uv : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { VsOut o = _48; o.position = float4(_40[min(uint(gl_VertexIndex), 2u)], 0.0f, 1.0f); o.uv = float2(_40[min(uint(gl_VertexIndex), 2u)].x + 1.0f, 1.0f - _40[min(uint(gl_VertexIndex), 2u)].y) * 0.5f; gl_Position = o.position; uv = o.uv; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.uv = uv; return stage_output; } fs_setupmainÀstruct Params { float4 a; float4 b; }; struct VsOut { float4 position; float2 uv; }; cbuffer params : register(b0) { Params params_1_m0 : packoffset(c0); }; Texture2D src : register(t0); SamplerState smp : register(s0); static float4 gl_FragCoord; static float2 uv; static float4 _163; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _163 : SV_Target0; }; uint2 spvTextureSize(Texture2D Tex, uint Level, out uint Param) { uint2 ret; Tex.GetDimensions(Level, ret.x, ret.y, Param); return ret; } float3 tap(float2 uv_1, float2 o) { return src.SampleLevel(smp, uv_1 + o, 0.0f).xyz; } float luma(float3 c) { return dot(c, float3(0.2125999927520751953125f, 0.715200006961822509765625f, 0.072200000286102294921875f)); } void frag_main() { VsOut _156 = { gl_FragCoord, uv }; uint _173_dummy_parameter; float2 _175 = float2(1.0f, 1.0f) / float2(spvTextureSize(src, 0u, _173_dummy_parameter)); float3 _182 = tap(_156.uv, float2(-_175.x, -_175.y)); float3 _188 = tap(_156.uv, float2(_175.x, -_175.y)); float3 _194 = tap(_156.uv, float2(-_175.x, _175.y)); float3 _199 = tap(_156.uv, float2(_175)); float _202 = 1.0f / (1.0f + luma(_182)); float _205 = 1.0f / (1.0f + luma(_188)); float _208 = 1.0f / (1.0f + luma(_194)); float _211 = 1.0f / (1.0f + luma(_199)); float _221 = ((_202 + _205) + _208) + _211; float3 _223 = ((((_182 * _202) + (_188 * _205)) + (_194 * _208)) + (_199 * _211)) / float3(_221, _221, _221); _163 = float4(_223 * clamp((luma(_223) - params_1_m0.a.x) * 0.5f, 0.0f, 1.0f), 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._163 = _163; return stage_output; } fs_downmainstruct Params { float4 a; float4 b; }; struct VsOut { float4 position; float2 uv; }; Texture2D src : register(t0); SamplerState smp : register(s0); static float4 gl_FragCoord; static float2 uv; static float4 _51; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _51 : SV_Target0; }; uint2 spvTextureSize(Texture2D Tex, uint Level, out uint Param) { uint2 ret; Tex.GetDimensions(Level, ret.x, ret.y, Param); return ret; } float3 tap(float2 uv_1, float2 o) { return src.SampleLevel(smp, uv_1 + o, 0.0f).xyz; } void frag_main() { VsOut _44 = { gl_FragCoord, uv }; uint _63_dummy_parameter; float2 _65 = float2(1.0f, 1.0f) / float2(spvTextureSize(src, 0u, _63_dummy_parameter)); _51 = float4((((tap(_44.uv, float2(-_65.x, -_65.y)) + tap(_44.uv, float2(_65.x, -_65.y))) + tap(_44.uv, float2(-_65.x, _65.y))) + tap(_44.uv, float2(_65))) * 0.25f, 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._51 = _51; return stage_output; }  fs_blur_xmainÖstruct Params { float4 a; float4 b; }; struct VsOut { float4 position; float2 uv; }; cbuffer params : register(b0) { Params params_1_m0 : packoffset(c0); }; Texture2D src : register(t0); SamplerState smp : register(s0); static float4 gl_FragCoord; static float2 uv; static float4 _163; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _163 : SV_Target0; }; float3 gaussian(float2 uv_1) { float3 sum = float3(0.0f, 0.0f, 0.0f); float total = 1.0f; int i = 1; uint2 loop_bound = uint2(4294967295u, 4294967295u); float _78 = 1.0f / (params_1_m0.a.z * params_1_m0.a.z); int _84 = int(clamp(params_1_m0.a.w, -2147483648.0f, 2147483520.0f)); sum = src.SampleLevel(smp, uv_1, 0.0f).xyz; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i <= _84)) { break; } float _118 = float(i); float _119 = _118 + 1.0f; float _123 = exp(((-_118) * _118) * _78); float _127 = exp(((-_119) * _119) * _78); float _128 = _123 + _127; float2 _133 = params_1_m0.a.xy * (((_118 * _123) + (_119 * _127)) / _128); sum += ((src.SampleLevel(smp, uv_1 + _133, 0.0f).xyz + src.SampleLevel(smp, uv_1 - _133, 0.0f).xyz) * _128); total += (2.0f * _128); i += 2; continue; } return sum / float3(total, total, total); } void frag_main() { VsOut _156 = { gl_FragCoord, uv }; _163 = float4(gaussian(_156.uv), 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._163 = _163; return stage_output; }  fs_blur_ymainXstruct Params { float4 a; float4 b; }; struct VsOut { float4 position; float2 uv; }; cbuffer params : register(b0) { Params params_1_m0 : packoffset(c0); }; Texture2D src : register(t0); SamplerState smp : register(s0); Texture2D smaller : register(t1); static float4 gl_FragCoord; static float2 uv; static float4 _164; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _164 : SV_Target0; }; float3 gaussian(float2 uv_1) { float3 sum = float3(0.0f, 0.0f, 0.0f); float total = 1.0f; int i = 1; uint2 loop_bound = uint2(4294967295u, 4294967295u); float _79 = 1.0f / (params_1_m0.a.z * params_1_m0.a.z); int _85 = int(clamp(params_1_m0.a.w, -2147483648.0f, 2147483520.0f)); sum = src.SampleLevel(smp, uv_1, 0.0f).xyz; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i <= _85)) { break; } float _119 = float(i); float _120 = _119 + 1.0f; float _124 = exp(((-_119) * _119) * _79); float _128 = exp(((-_120) * _120) * _79); float _129 = _124 + _128; float2 _134 = params_1_m0.a.xy * (((_119 * _124) + (_120 * _128)) / _129); sum += ((src.SampleLevel(smp, uv_1 + _134, 0.0f).xyz + src.SampleLevel(smp, uv_1 - _134, 0.0f).xyz) * _129); total += (2.0f * _129); i += 2; continue; } return sum / float3(total, total, total); } void frag_main() { VsOut _157 = { gl_FragCoord, uv }; _164 = float4((gaussian(_157.uv) * params_1_m0.b.xyz) + (smaller.SampleLevel(smp, _157.uv, 0.0f).xyz * params_1_m0.b.w), 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._164 = _164; return stage_output; }   sës×£Ÿ)HSLTParams aÿÿÿÿbÿÿÿÿ params_block paramssrcÿÿÿÿsmpÿÿÿÿvsvsfs_setupfs_setupfs_downfs_down fs_blur_x fs_blur_x fs_blur_y fs_blur_y�#m2 GLSL.std.450¤vs� ¢ Õfs_setupÎÑÔfs_down Ifs_blur_xDFH Xfs_blur_ySUWÕIXH#H#H #H #G G"G!G"G!G"G!GH#G"G!G� *G  G¢GÎ GÑGÔG GGGD GFGHGS GUGW    +      ; ; ;;! +гY>+Y7?+˜Ý“=, !% +(+!2  5+ 6+8€?+9+:@+; = . > @ B D H+ I+RÏ+SÿÿÿN]  ^]_`_,]a66+ b+ cÿÿÿÿ,]dcc ž ;ž� ¡;¡  £;£¢!¥+¦€¿,§¦¦+¨@@,©¨¦,ª¦¨, «§©ª+¬? ® ° . ± ³ ´ Ç Ï;ÏÎ Ò;ÒÑ;¡Ô,Ù88;Ï;Ò;¡+ €>;ÏD;ÒF;¡H;ÏS;ÒU;¡W67 øùø” þ 86 $%7"7#ø!=&='ù)ø)�*"#V+,&'X-,*(O .--þ.86 1270ø/;=<>;@?8;BA9;^ed=3=4A576ùCøCADE76=FEOGFFAHJ76I=KJAHL76I=ML…NKMˆO8NAHP76 =QP T+QRSnUTV+V34XWV0(O XWW><XùYøYöZ\ùføf=]geª`hag›_ih÷júiZjøjQ kgª_lk6© mlb6P]nmb‚]ogn>eoù[ø[=pA³_qpU÷rúqrsøsùZørùtøt=vAowv�xw8yw…zyw…{zO |{}x…~}x…~O €��|€…‚w|…ƒx€�„‚ƒˆ…„�ކG…= ‡<�ˆ0†V+‰34XЉˆ(O ‹ŠŠƒŒ0†V+�34XŽ�Œ(O �ŽŽ� �‹�Ž ‘��� ’‡‘><’=“?…”:��•“”>?•ùuøuù\ø\=–A€—–;>A—ùYøZ= ˜<=™?P š™™™ˆ ›˜šþ›86¤¥øœ;®­«;°¯±= Ÿ�ù²ø²  µ&ŸIA´¶­µ=·¶P¸·(8A³¹¯6>¹¸  º&ŸIA@»­º6=¼»�½¼8  ¾&ŸIA@¿­¾b=À¿ƒÁ8ÀP½ÁŽìA´Ä¯b>ÄÃ= ůQÆÅ> ÆAÇÈ b=ÉÈÊÉ>ÈÊQËÅ>¢Ëý86Õ¥øÌ=ÐÎ=ÓÑP ÍÐÓ=Ö=×A5Ø6ùÚøÚg]ÛÖ6pÜÛˆÝÙÜQÞÍQßÝàßQáÝâáPãàâ9 ä$ÞãQåÍQæÝQçÝèçPéæè9 ê$åéQëÍQìÝíìQîÝPïíî9 ð$ëïQñÍQòÝQóÝPôòó9 õ$ñô9öä�÷8öˆø8÷9ùê�ú8ùˆû8ú9üð�ý8üˆþ8ý9ÿõ�8ÿˆ8Ž äøŽ êû� Ž ðþ� Ž õ� � øû�  þ�  P    ˆ  9 AHØ66=ƒ…¬ +(8Ž  P8>Ôý86¥ø==P ==ù!ø!g]"6p#"ˆ$Ù#Q%Q&$'&Q($)(P*')9 +$%*Q,Q-$Q.$/.P0-/9 1$,0� 2+1Q3Q4$54Q6$P7569 8$37� 928Q:Q;$Q<$P=;<9 >$:=� ?9>Ž @? PA@8>Aý86I¥øB=ED=GFP CEG=J=KA5L6ùMøMQNC9 O1NPPO8>HPý86X¥øQ=TS=VUP RTV=Y=ZA5[6=\ù]ø]Q^R9 _1^AD`[b=a`O baa… c_bQdRV+e\ZXfed(O gffAHh[b =ihŽ jgi� kcjPlk8>Wlý8  `¶A#GÓ¦ÊËdebrisjÔÉÂBTSR H%H%'o%+w šœ'ÁœÛœ÷œ<0 3Í'ZÍ S g 'Ž ÈV" > c`'>vs_shardfs_shard vs_shadow fs_shadowvs_shardvs_shardfs_shardfs_shard vs_shadow vs_shadow fs_shadow fs_shadowë$struct Scene { view: vec4, frame: vec4, wall: vec4, light: vec4, build: vec4, hits: vec4, strike: vec4, albedo: vec4, glow: vec4, deep: vec4, camera: vec4, shard: vec4, } struct Chunk { center: vec3, axis: vec3, angle: f32, size: f32, key: u32, scale: f32, } struct Face { a: vec3, b: vec3, c: vec3, } struct Placed { world: vec3, normal: vec3, gone: bool, } struct ShardOut { @builtin(position) position: vec4, @location(0) normal: vec3, @location(1) tint: f32, } struct ShadowOut { @builtin(position) position: vec4, @location(0) height: f32, } const BREACH: u32 = 96u; const STRIKE: u32 = 32u; const SIDES: u32 = 6u; const VERTICES: u32 = 60u; @group(0) @binding(0) var scene: Scene; fn pcg(v: u32) -> u32 { let s = ((v * 747796405u) + 2891336453u); let w = (((s >> ((s >> 28u) + 4u)) ^ s) * 277803737u); return ((w >> 22u) ^ w); } fn unit(h: u32) -> f32 { return (f32((h >> 8u)) / 16777216f); } fn rand(key: u32, channel: u32) -> f32 { let _e5 = pcg((key + (channel * 2654435769u))); let _e6 = unit(_e5); return _e6; } fn tumble(key_1: u32, age: f32, c: ptr) { let _e4 = rand(key_1, 10u); let z_1 = ((_e4 * 2f) - 1f); let _e10 = rand(key_1, 11u); let a = (_e10 * 6.2831855f); let s_1 = sqrt(max((1f - (z_1 * z_1)), 0f)); (*c).axis = vec3((s_1 * cos(a)), (s_1 * sin(a)), z_1); let _e27 = rand(key_1, 12u); let _e31 = rand(key_1, 13u); let _e37 = rand(key_1, 14u); (*c).angle = ((_e27 * 6.2831855f) + ((age * mix(1.5f, 6f, _e31)) * select(-1f, 1f, (_e37 < 0.5f)))); (*c).key = key_1; return; } fn breach(slot: u32) -> Chunk { var c_1: Chunk; let age_1 = scene.hits.x; let _e9 = scene.strike.z; let _e13 = pcg((u32(_e9) + 2135587861u)); let _e15 = pcg((slot + _e13)); let _e19 = scene.wall.x; let _e23 = scene.build.z; let hole = (_e19 * max(_e23, 0.4f)); let _e29 = rand(_e15, 3u); let a_1 = (((f32(slot) + _e29) / 96f) * 6.2831855f); let out = vec2(cos(a_1), sin(a_1)); let _e39 = rand(_e15, 4u); let r0_ = (hole * mix(0.6f, 1.15f, _e39)); let _e45 = rand(_e15, 5u); let climb = mix(0.05f, 0.6f, pow(_e45, 1.5f)); let _e52 = rand(_e15, 6u); let spread = mix(0.3f, 1.1f, _e52); let t_1 = ((1f - exp((-(age_1) * 2.2f))) / 2.2f); c_1.center = vec3((out * (r0_ + (spread * t_1))), ((climb * age_1) + ((0.15f * age_1) * age_1))); let _e76 = rand(_e15, 7u); c_1.size = mix(0.014f, 0.06f, pow(_e76, 1.5f)); let _e92 = scene.strike.z; c_1.scale = ((smoothstep(0f, 0.05f, age_1) * step(age_1, 10f)) * step(0.5f, _e92)); tumble(_e15, age_1, (&c_1)); let _e96 = c_1; return _e96; } fn strike(slot_1: u32) -> Chunk { var c_2: Chunk; let age_2 = scene.hits.z; let _e9 = scene.strike.w; let _e13 = pcg((u32(_e9) + 625341585u)); let _e15 = pcg((slot_1 + _e13)); let _e17 = rand(_e15, 3u); let a_2 = (_e17 * 6.2831855f); let out_1 = vec2(cos(a_2), sin(a_2)); let _e24 = rand(_e15, 5u); let climb_1 = mix(0.03f, 0.35f, pow(_e24, 1.5f)); let _e31 = rand(_e15, 6u); let spread_1 = mix(0.08f, 0.5f, _e31); let t_2 = ((1f - exp((-(age_2) * 2.5f))) / 2.5f); let _e46 = scene.strike; let _e49 = rand(_e15, 4u); c_2.center = vec3((_e46.xy + (out_1 * ((0.015f * _e49) + (spread_1 * t_2)))), ((climb_1 * age_2) + ((0.15f * age_2) * age_2))); let _e64 = rand(_e15, 7u); c_2.size = mix(0.008f, 0.03f, pow(_e64, 1.5f)); let _e80 = scene.strike.w; c_2.scale = ((smoothstep(0f, 0.04f, age_2) * step(age_2, 10f)) * step(0.5f, _e80)); tumble(_e15, age_2, (&c_2)); let _e84 = c_2; return _e84; } fn chunkAt(instance: u32) -> Chunk { if (instance < BREACH) { let _e3 = breach(instance); return _e3; } let _e6 = strike((instance - BREACH)); return _e6; } fn corner(c_3: Chunk, k: u32, top: bool) -> vec3 { var r: f32; var z: f32 = 0.5f; var twist: f32 = 0f; let i = (k % SIDES); let _e9 = rand(c_3.key, (20u + i)); let a_3 = (((f32(i) + (0.8f * (_e9 - 0.5f))) / 6f) * 6.2831855f); let _e22 = rand(c_3.key, (30u + i)); r = mix(0.55f, 1f, _e22); if !(top) { let _e32 = r; let _e36 = rand(c_3.key, (40u + i)); r = (_e32 * mix(0.7f, 0.95f, _e36)); z = -0.5f; let _e44 = rand(c_3.key, 50u); twist = (0.25f * (_e44 - 0.5f)); } let _e51 = rand(c_3.key, 15u); let thick = mix(0.5f, 1.1f, _e51); let _e55 = twist; let _e58 = r; let _e60 = twist; let _e63 = r; let _e65 = z; return ((vec3((cos((a_3 + _e55)) * _e58), (sin((a_3 + _e60)) * _e63), (_e65 * thick)) * c_3.size) * c_3.scale); } fn rotate(v_1: vec3, axis: vec3, angle: f32) -> vec3 { let s_2 = sin(angle); let k_1 = cos(angle); return (((v_1 * k_1) + (cross(axis, v_1) * s_2)) + ((axis * dot(axis, v_1)) * (1f - k_1))); } fn face(c_4: Chunk, t: u32) -> Face { var f: Face; if (t < 4u) { let _e8 = corner(c_4, 0u, true); f.a = _e8; let _e13 = corner(c_4, (t + 1u), true); f.b = _e13; let _e18 = corner(c_4, (t + 2u), true); f.c = _e18; } else { if (t < 8u) { let k_2 = (t - 4u); let _e26 = corner(c_4, 0u, false); f.a = _e26; let _e31 = corner(c_4, (k_2 + 2u), false); f.b = _e31; let _e36 = corner(c_4, (k_2 + 1u), false); f.c = _e36; } else { let s_3 = ((t - 8u) / 2u); if (((t - 8u) & 1u) == 0u) { let _e49 = corner(c_4, s_3, true); f.a = _e49; let _e54 = corner(c_4, (s_3 + 1u), true); f.b = _e54; let _e59 = corner(c_4, (s_3 + 1u), false); f.c = _e59; } else { let _e62 = corner(c_4, s_3, true); f.a = _e62; let _e67 = corner(c_4, (s_3 + 1u), false); f.b = _e67; let _e70 = corner(c_4, s_3, false); f.c = _e70; } } } let _e71 = f; return _e71; } fn place(index_2: u32) -> Placed { var p: Placed; var local: bool; var n: vec3; var corners: array, 3>; let vi = (index_2 % VERTICES); let _e5 = chunkAt((index_2 / VERTICES)); if !((_e5.scale <= 0f)) { let _e19 = scene.camera.x; local = (_e5.center.z > (_e19 - (2f * _e5.size))); } else { local = true; } let _e26 = local; p.gone = _e26; let _e29 = face(_e5, (vi / 3u)); let _e33 = rotate(_e29.a, _e5.axis, _e5.angle); let _e37 = rotate(_e29.b, _e5.axis, _e5.angle); let _e41 = rotate(_e29.c, _e5.axis, _e5.angle); n = normalize((cross((_e37 - _e33), (_e41 - _e33)) + vec3(0f, 0f, 0.0000001f))); let _e52 = n; if (dot(_e52, ((_e33 + _e37) + _e41)) < 0f) { let _e58 = n; n = -(_e58); } corners = array, 3>(_e33, _e37, _e41); let _e67 = corners[(vi % 3u)]; p.world = (_e5.center + _e67); let _e70 = n; p.normal = _e70; let _e71 = p; return _e71; } fn toClip(px: vec2, depth: f32) -> vec4 { let _e6 = scene.view.x; let _e16 = scene.view.y; return vec4((((px.x / _e6) * 2f) - 1f), (1f - ((px.y / _e16) * 2f)), depth, 1f); } @vertex fn vs_shard(@builtin(vertex_index) index: u32) -> ShardOut { var o: ShardOut; let _e1 = place(index); let d = scene.camera.x; let toCamera = max((d - _e1.world.z), (d * 0.01f)); let _e15 = scene.frame; let _e24 = scene.view.z; let px_1 = (_e15.xy + ((_e1.world.xy * (d / toCamera)) * _e24)); let _e34 = toClip(px_1, (clamp((toCamera / d), 0f, 1f) * 0.999f)); o.position = select(_e34, vec4(2f, 2f, 2f, 1f), _e1.gone); o.normal = _e1.normal; let _e49 = pcg(((index / VERTICES) + 99u)); let _e51 = rand(_e49, 0u); o.tint = _e51; let _e52 = o; return _e52; } @fragment fn fs_shard(in: ShardOut) -> @location(0) vec4 { let n_1 = normalize(in.normal); let _e5 = scene.light; let l = _e5.xyz; let _e13 = scene.camera.w; let sun = (max(dot(n_1, l), 0f) * _e13); let sky = (0.3f * (0.6f + (0.4f * max(n_1.z, -0.5f)))); let _e26 = scene.shard; let color = ((_e26.xyz * (0.92f + (0.08f * in.tint))) * (sky + sun)); return vec4(color, 1f); } @vertex fn vs_shadow(@builtin(vertex_index) index_1: u32) -> ShadowOut { var o_1: ShadowOut; let _e1 = place(index_1); let _e4 = scene.light; let l_1 = _e4.xyz; let onWall = (_e1.world.xy - (l_1.xy * (max(_e1.world.z, 0f) / max(l_1.z, 0.05f)))); let _e21 = scene.frame; let _e26 = scene.view.z; let px_2 = (_e21.xy + (onWall * _e26)); let _e32 = toClip(px_2, 0.5f); o_1.position = select(_e32, vec4(2f, 2f, 2f, 1f), _e1.gone); let _e46 = scene.camera.x; o_1.height = clamp((_e1.world.z / _e46), 0f, 1f); let _e51 = o_1; return _e51; } @fragment fn fs_shadow(in_1: ShadowOut) -> @location(0) vec4 { return vec4(1f, (1f - in_1.height), 0f, 1f); }  ÀðЂ�‘Íà?vs_shardmain£"#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Chunk { vec3 center; vec3 axis; float angle; float size; uint key; float scale; }; struct Face { vec3 a; vec3 b; vec3 c; }; struct Placed { vec3 world; vec3 normal; bool gone; }; struct ShardOut { vec4 position; vec3 normal; float tint; }; struct ShadowOut { vec4 position; float height; }; const uint BREACH = 96u; const uint STRIKE = 32u; const uint SIDES = 6u; const uint VERTICES = 60u; layout(std140) uniform Scene_block_0Vertex { Scene _group_0_binding_0_vs; }; smooth out vec3 _vs2fs_location0; smooth out float _vs2fs_location1; uint pcg(uint v) { uint s = ((v * 747796405u) + 2891336453u); uint w = (((s >> ((s >> 28u) + 4u)) ^ s) * 277803737u); return ((w >> 22u) ^ w); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } void tumble(uint key_1, float age, inout Chunk c) { float _e4 = rand(key_1, 10u); float z_1 = ((_e4 * 2.0) - 1.0); float _e10 = rand(key_1, 11u); float a = (_e10 * 6.2831855); float s_1 = sqrt(max((1.0 - (z_1 * z_1)), 0.0)); c.axis = vec3((s_1 * cos(a)), (s_1 * sin(a)), z_1); float _e27 = rand(key_1, 12u); float _e31 = rand(key_1, 13u); float _e37 = rand(key_1, 14u); c.angle = ((_e27 * 6.2831855) + ((age * mix(1.5, 6.0, _e31)) * ((_e37 < 0.5) ? 1.0 : -1.0))); c.key = key_1; return; } Chunk breach(uint slot) { Chunk c_1 = Chunk(vec3(0.0), vec3(0.0), 0.0, 0.0, 0u, 0.0); float age_1 = _group_0_binding_0_vs.hits.x; float _e9 = _group_0_binding_0_vs.strike.z; uint _e13 = pcg((uint(_e9) + 2135587861u)); uint _e15 = pcg((slot + _e13)); float _e19 = _group_0_binding_0_vs.wall.x; float _e23 = _group_0_binding_0_vs.build.z; float hole = (_e19 * max(_e23, 0.4)); float _e29 = rand(_e15, 3u); float a_1 = (((float(slot) + _e29) / 96.0) * 6.2831855); vec2 out_ = vec2(cos(a_1), sin(a_1)); float _e39 = rand(_e15, 4u); float r0_ = (hole * mix(0.6, 1.15, _e39)); float _e45 = rand(_e15, 5u); float climb = mix(0.05, 0.6, pow(_e45, 1.5)); float _e52 = rand(_e15, 6u); float spread = mix(0.3, 1.1, _e52); float t_1 = ((1.0 - exp((-(age_1) * 2.2))) / 2.2); c_1.center = vec3((out_ * (r0_ + (spread * t_1))), ((climb * age_1) + ((0.15 * age_1) * age_1))); float _e76 = rand(_e15, 7u); c_1.size = mix(0.014, 0.06, pow(_e76, 1.5)); float _e92 = _group_0_binding_0_vs.strike.z; c_1.scale = ((smoothstep(0.0, 0.05, age_1) * step(age_1, 10.0)) * step(0.5, _e92)); tumble(_e15, age_1, c_1); Chunk _e96 = c_1; return _e96; } Chunk strike(uint slot_1) { Chunk c_2 = Chunk(vec3(0.0), vec3(0.0), 0.0, 0.0, 0u, 0.0); float age_2 = _group_0_binding_0_vs.hits.z; float _e9 = _group_0_binding_0_vs.strike.w; uint _e13 = pcg((uint(_e9) + 625341585u)); uint _e15 = pcg((slot_1 + _e13)); float _e17 = rand(_e15, 3u); float a_2 = (_e17 * 6.2831855); vec2 out_1 = vec2(cos(a_2), sin(a_2)); float _e24 = rand(_e15, 5u); float climb_1 = mix(0.03, 0.35, pow(_e24, 1.5)); float _e31 = rand(_e15, 6u); float spread_1 = mix(0.08, 0.5, _e31); float t_2 = ((1.0 - exp((-(age_2) * 2.5))) / 2.5); vec4 _e46 = _group_0_binding_0_vs.strike; float _e49 = rand(_e15, 4u); c_2.center = vec3((_e46.xy + (out_1 * ((0.015 * _e49) + (spread_1 * t_2)))), ((climb_1 * age_2) + ((0.15 * age_2) * age_2))); float _e64 = rand(_e15, 7u); c_2.size = mix(0.008, 0.03, pow(_e64, 1.5)); float _e80 = _group_0_binding_0_vs.strike.w; c_2.scale = ((smoothstep(0.0, 0.04, age_2) * step(age_2, 10.0)) * step(0.5, _e80)); tumble(_e15, age_2, c_2); Chunk _e84 = c_2; return _e84; } Chunk chunkAt(uint instance) { if ((instance < BREACH)) { Chunk _e3 = breach(instance); return _e3; } Chunk _e6 = strike((instance - BREACH)); return _e6; } vec3 corner(Chunk c_3, uint k, bool top) { float r = 0.0; float z = 0.5; float twist = 0.0; uint i = (k % SIDES); float _e9 = rand(c_3.key, (20u + i)); float a_3 = (((float(i) + (0.8 * (_e9 - 0.5))) / 6.0) * 6.2831855); float _e22 = rand(c_3.key, (30u + i)); r = mix(0.55, 1.0, _e22); if (!(top)) { float _e32 = r; float _e36 = rand(c_3.key, (40u + i)); r = (_e32 * mix(0.7, 0.95, _e36)); z = -0.5; float _e44 = rand(c_3.key, 50u); twist = (0.25 * (_e44 - 0.5)); } float _e51 = rand(c_3.key, 15u); float thick = mix(0.5, 1.1, _e51); float _e55 = twist; float _e58 = r; float _e60 = twist; float _e63 = r; float _e65 = z; return ((vec3((cos((a_3 + _e55)) * _e58), (sin((a_3 + _e60)) * _e63), (_e65 * thick)) * c_3.size) * c_3.scale); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_2 = sin(angle); float k_1 = cos(angle); return (((v_1 * k_1) + (cross(axis, v_1) * s_2)) + ((axis * dot(axis, v_1)) * (1.0 - k_1))); } Face face(Chunk c_4, uint t) { Face f = Face(vec3(0.0), vec3(0.0), vec3(0.0)); if ((t < 4u)) { vec3 _e8 = corner(c_4, 0u, true); f.a = _e8; vec3 _e13 = corner(c_4, (t + 1u), true); f.b = _e13; vec3 _e18 = corner(c_4, (t + 2u), true); f.c = _e18; } else { if ((t < 8u)) { uint k_2 = (t - 4u); vec3 _e26 = corner(c_4, 0u, false); f.a = _e26; vec3 _e31 = corner(c_4, (k_2 + 2u), false); f.b = _e31; vec3 _e36 = corner(c_4, (k_2 + 1u), false); f.c = _e36; } else { uint s_3 = ((t - 8u) / 2u); if ((((t - 8u) & 1u) == 0u)) { vec3 _e49 = corner(c_4, s_3, true); f.a = _e49; vec3 _e54 = corner(c_4, (s_3 + 1u), true); f.b = _e54; vec3 _e59 = corner(c_4, (s_3 + 1u), false); f.c = _e59; } else { vec3 _e62 = corner(c_4, s_3, true); f.a = _e62; vec3 _e67 = corner(c_4, (s_3 + 1u), false); f.b = _e67; vec3 _e70 = corner(c_4, s_3, false); f.c = _e70; } } } Face _e71 = f; return _e71; } Placed place(uint index_2) { Placed p = Placed(vec3(0.0), vec3(0.0), false); bool local = false; vec3 n = vec3(0.0); vec3 corners[3] = vec3[3](vec3(0.0), vec3(0.0), vec3(0.0)); uint vi = (index_2 % VERTICES); Chunk _e5 = chunkAt((index_2 / VERTICES)); if (!((_e5.scale <= 0.0))) { float _e19 = _group_0_binding_0_vs.camera.x; local = (_e5.center.z > (_e19 - (2.0 * _e5.size))); } else { local = true; } bool _e26 = local; p.gone = _e26; Face _e29 = face(_e5, (vi / 3u)); vec3 _e33 = rotate(_e29.a, _e5.axis, _e5.angle); vec3 _e37 = rotate(_e29.b, _e5.axis, _e5.angle); vec3 _e41 = rotate(_e29.c, _e5.axis, _e5.angle); n = normalize((cross((_e37 - _e33), (_e41 - _e33)) + vec3(0.0, 0.0, 1e-7))); vec3 _e52 = n; if ((dot(_e52, ((_e33 + _e37) + _e41)) < 0.0)) { vec3 _e58 = n; n = -(_e58); } corners = vec3[3](_e33, _e37, _e41); vec3 _e67 = corners[(vi % 3u)]; p.world = (_e5.center + _e67); vec3 _e70 = n; p.normal = _e70; Placed _e71 = p; return _e71; } vec4 toClip(vec2 px, float depth) { float _e6 = _group_0_binding_0_vs.view.x; float _e16 = _group_0_binding_0_vs.view.y; return vec4((((px.x / _e6) * 2.0) - 1.0), (1.0 - ((px.y / _e16) * 2.0)), depth, 1.0); } void main() { uint index = uint(gl_VertexID); ShardOut o = ShardOut(vec4(0.0), vec3(0.0), 0.0); Placed _e1 = place(index); float d = _group_0_binding_0_vs.camera.x; float toCamera = max((d - _e1.world.z), (d * 0.01)); vec4 _e15 = _group_0_binding_0_vs.frame; float _e24 = _group_0_binding_0_vs.view.z; vec2 px_1 = (_e15.xy + ((_e1.world.xy * (d / toCamera)) * _e24)); vec4 _e34 = toClip(px_1, (clamp((toCamera / d), 0.0, 1.0) * 0.999)); o.position = (_e1.gone ? vec4(2.0, 2.0, 2.0, 1.0) : _e34); o.normal = _e1.normal; uint _e49 = pcg(((index / VERTICES) + 99u)); float _e51 = rand(_e49, 0u); o.tint = _e51; ShardOut _e52 = o; gl_Position = _e52.position; _vs2fs_location0 = _e52.normal; _vs2fs_location1 = _e52.tint; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_shardmaink!#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Chunk { vec3 center; vec3 axis; float angle; float size; uint key; float scale; }; struct Face { vec3 a; vec3 b; vec3 c; }; struct Placed { vec3 world; vec3 normal; bool gone; }; struct ShardOut { vec4 position; vec3 normal; float tint; }; struct ShadowOut { vec4 position; float height; }; const uint BREACH = 96u; const uint STRIKE = 32u; const uint SIDES = 6u; const uint VERTICES = 60u; layout(std140) uniform Scene_block_0Fragment { Scene _group_0_binding_0_fs; }; smooth in vec3 _vs2fs_location0; smooth in float _vs2fs_location1; layout(location = 0) out vec4 _fs2p_location0; uint pcg(uint v) { uint s = ((v * 747796405u) + 2891336453u); uint w = (((s >> ((s >> 28u) + 4u)) ^ s) * 277803737u); return ((w >> 22u) ^ w); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } void tumble(uint key_1, float age, inout Chunk c) { float _e4 = rand(key_1, 10u); float z_1 = ((_e4 * 2.0) - 1.0); float _e10 = rand(key_1, 11u); float a = (_e10 * 6.2831855); float s_1 = sqrt(max((1.0 - (z_1 * z_1)), 0.0)); c.axis = vec3((s_1 * cos(a)), (s_1 * sin(a)), z_1); float _e27 = rand(key_1, 12u); float _e31 = rand(key_1, 13u); float _e37 = rand(key_1, 14u); c.angle = ((_e27 * 6.2831855) + ((age * mix(1.5, 6.0, _e31)) * ((_e37 < 0.5) ? 1.0 : -1.0))); c.key = key_1; return; } Chunk breach(uint slot) { Chunk c_1 = Chunk(vec3(0.0), vec3(0.0), 0.0, 0.0, 0u, 0.0); float age_1 = _group_0_binding_0_fs.hits.x; float _e9 = _group_0_binding_0_fs.strike.z; uint _e13 = pcg((uint(_e9) + 2135587861u)); uint _e15 = pcg((slot + _e13)); float _e19 = _group_0_binding_0_fs.wall.x; float _e23 = _group_0_binding_0_fs.build.z; float hole = (_e19 * max(_e23, 0.4)); float _e29 = rand(_e15, 3u); float a_1 = (((float(slot) + _e29) / 96.0) * 6.2831855); vec2 out_ = vec2(cos(a_1), sin(a_1)); float _e39 = rand(_e15, 4u); float r0_ = (hole * mix(0.6, 1.15, _e39)); float _e45 = rand(_e15, 5u); float climb = mix(0.05, 0.6, pow(_e45, 1.5)); float _e52 = rand(_e15, 6u); float spread = mix(0.3, 1.1, _e52); float t_1 = ((1.0 - exp((-(age_1) * 2.2))) / 2.2); c_1.center = vec3((out_ * (r0_ + (spread * t_1))), ((climb * age_1) + ((0.15 * age_1) * age_1))); float _e76 = rand(_e15, 7u); c_1.size = mix(0.014, 0.06, pow(_e76, 1.5)); float _e92 = _group_0_binding_0_fs.strike.z; c_1.scale = ((smoothstep(0.0, 0.05, age_1) * step(age_1, 10.0)) * step(0.5, _e92)); tumble(_e15, age_1, c_1); Chunk _e96 = c_1; return _e96; } Chunk strike(uint slot_1) { Chunk c_2 = Chunk(vec3(0.0), vec3(0.0), 0.0, 0.0, 0u, 0.0); float age_2 = _group_0_binding_0_fs.hits.z; float _e9 = _group_0_binding_0_fs.strike.w; uint _e13 = pcg((uint(_e9) + 625341585u)); uint _e15 = pcg((slot_1 + _e13)); float _e17 = rand(_e15, 3u); float a_2 = (_e17 * 6.2831855); vec2 out_1 = vec2(cos(a_2), sin(a_2)); float _e24 = rand(_e15, 5u); float climb_1 = mix(0.03, 0.35, pow(_e24, 1.5)); float _e31 = rand(_e15, 6u); float spread_1 = mix(0.08, 0.5, _e31); float t_2 = ((1.0 - exp((-(age_2) * 2.5))) / 2.5); vec4 _e46 = _group_0_binding_0_fs.strike; float _e49 = rand(_e15, 4u); c_2.center = vec3((_e46.xy + (out_1 * ((0.015 * _e49) + (spread_1 * t_2)))), ((climb_1 * age_2) + ((0.15 * age_2) * age_2))); float _e64 = rand(_e15, 7u); c_2.size = mix(0.008, 0.03, pow(_e64, 1.5)); float _e80 = _group_0_binding_0_fs.strike.w; c_2.scale = ((smoothstep(0.0, 0.04, age_2) * step(age_2, 10.0)) * step(0.5, _e80)); tumble(_e15, age_2, c_2); Chunk _e84 = c_2; return _e84; } Chunk chunkAt(uint instance) { if ((instance < BREACH)) { Chunk _e3 = breach(instance); return _e3; } Chunk _e6 = strike((instance - BREACH)); return _e6; } vec3 corner(Chunk c_3, uint k, bool top) { float r = 0.0; float z = 0.5; float twist = 0.0; uint i = (k % SIDES); float _e9 = rand(c_3.key, (20u + i)); float a_3 = (((float(i) + (0.8 * (_e9 - 0.5))) / 6.0) * 6.2831855); float _e22 = rand(c_3.key, (30u + i)); r = mix(0.55, 1.0, _e22); if (!(top)) { float _e32 = r; float _e36 = rand(c_3.key, (40u + i)); r = (_e32 * mix(0.7, 0.95, _e36)); z = -0.5; float _e44 = rand(c_3.key, 50u); twist = (0.25 * (_e44 - 0.5)); } float _e51 = rand(c_3.key, 15u); float thick = mix(0.5, 1.1, _e51); float _e55 = twist; float _e58 = r; float _e60 = twist; float _e63 = r; float _e65 = z; return ((vec3((cos((a_3 + _e55)) * _e58), (sin((a_3 + _e60)) * _e63), (_e65 * thick)) * c_3.size) * c_3.scale); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_2 = sin(angle); float k_1 = cos(angle); return (((v_1 * k_1) + (cross(axis, v_1) * s_2)) + ((axis * dot(axis, v_1)) * (1.0 - k_1))); } Face face(Chunk c_4, uint t) { Face f = Face(vec3(0.0), vec3(0.0), vec3(0.0)); if ((t < 4u)) { vec3 _e8 = corner(c_4, 0u, true); f.a = _e8; vec3 _e13 = corner(c_4, (t + 1u), true); f.b = _e13; vec3 _e18 = corner(c_4, (t + 2u), true); f.c = _e18; } else { if ((t < 8u)) { uint k_2 = (t - 4u); vec3 _e26 = corner(c_4, 0u, false); f.a = _e26; vec3 _e31 = corner(c_4, (k_2 + 2u), false); f.b = _e31; vec3 _e36 = corner(c_4, (k_2 + 1u), false); f.c = _e36; } else { uint s_3 = ((t - 8u) / 2u); if ((((t - 8u) & 1u) == 0u)) { vec3 _e49 = corner(c_4, s_3, true); f.a = _e49; vec3 _e54 = corner(c_4, (s_3 + 1u), true); f.b = _e54; vec3 _e59 = corner(c_4, (s_3 + 1u), false); f.c = _e59; } else { vec3 _e62 = corner(c_4, s_3, true); f.a = _e62; vec3 _e67 = corner(c_4, (s_3 + 1u), false); f.b = _e67; vec3 _e70 = corner(c_4, s_3, false); f.c = _e70; } } } Face _e71 = f; return _e71; } Placed place(uint index_2) { Placed p = Placed(vec3(0.0), vec3(0.0), false); bool local = false; vec3 n = vec3(0.0); vec3 corners[3] = vec3[3](vec3(0.0), vec3(0.0), vec3(0.0)); uint vi = (index_2 % VERTICES); Chunk _e5 = chunkAt((index_2 / VERTICES)); if (!((_e5.scale <= 0.0))) { float _e19 = _group_0_binding_0_fs.camera.x; local = (_e5.center.z > (_e19 - (2.0 * _e5.size))); } else { local = true; } bool _e26 = local; p.gone = _e26; Face _e29 = face(_e5, (vi / 3u)); vec3 _e33 = rotate(_e29.a, _e5.axis, _e5.angle); vec3 _e37 = rotate(_e29.b, _e5.axis, _e5.angle); vec3 _e41 = rotate(_e29.c, _e5.axis, _e5.angle); n = normalize((cross((_e37 - _e33), (_e41 - _e33)) + vec3(0.0, 0.0, 1e-7))); vec3 _e52 = n; if ((dot(_e52, ((_e33 + _e37) + _e41)) < 0.0)) { vec3 _e58 = n; n = -(_e58); } corners = vec3[3](_e33, _e37, _e41); vec3 _e67 = corners[(vi % 3u)]; p.world = (_e5.center + _e67); vec3 _e70 = n; p.normal = _e70; Placed _e71 = p; return _e71; } vec4 toClip(vec2 px, float depth) { float _e6 = _group_0_binding_0_fs.view.x; float _e16 = _group_0_binding_0_fs.view.y; return vec4((((px.x / _e6) * 2.0) - 1.0), (1.0 - ((px.y / _e16) * 2.0)), depth, 1.0); } void main() { ShardOut in_ = ShardOut(gl_FragCoord, _vs2fs_location0, _vs2fs_location1); vec3 n_1 = normalize(in_.normal); vec4 _e5 = _group_0_binding_0_fs.light; vec3 l = _e5.xyz; float _e13 = _group_0_binding_0_fs.camera.w; float sun = (max(dot(n_1, l), 0.0) * _e13); float sky = (0.3 * (0.6 + (0.4 * max(n_1.z, -0.5)))); vec4 _e26 = _group_0_binding_0_fs.shard; vec3 color = ((_e26.xyz * (0.92 + (0.08 * in_.tint))) * (sky + sun)); _fs2p_location0 = vec4(color, 1.0); return; } vs_shadowmain<"#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Chunk { vec3 center; vec3 axis; float angle; float size; uint key; float scale; }; struct Face { vec3 a; vec3 b; vec3 c; }; struct Placed { vec3 world; vec3 normal; bool gone; }; struct ShardOut { vec4 position; vec3 normal; float tint; }; struct ShadowOut { vec4 position; float height; }; const uint BREACH = 96u; const uint STRIKE = 32u; const uint SIDES = 6u; const uint VERTICES = 60u; layout(std140) uniform Scene_block_0Vertex { Scene _group_0_binding_0_vs; }; smooth out float _vs2fs_location0; uint pcg(uint v) { uint s = ((v * 747796405u) + 2891336453u); uint w = (((s >> ((s >> 28u) + 4u)) ^ s) * 277803737u); return ((w >> 22u) ^ w); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } void tumble(uint key_1, float age, inout Chunk c) { float _e4 = rand(key_1, 10u); float z_1 = ((_e4 * 2.0) - 1.0); float _e10 = rand(key_1, 11u); float a = (_e10 * 6.2831855); float s_1 = sqrt(max((1.0 - (z_1 * z_1)), 0.0)); c.axis = vec3((s_1 * cos(a)), (s_1 * sin(a)), z_1); float _e27 = rand(key_1, 12u); float _e31 = rand(key_1, 13u); float _e37 = rand(key_1, 14u); c.angle = ((_e27 * 6.2831855) + ((age * mix(1.5, 6.0, _e31)) * ((_e37 < 0.5) ? 1.0 : -1.0))); c.key = key_1; return; } Chunk breach(uint slot) { Chunk c_1 = Chunk(vec3(0.0), vec3(0.0), 0.0, 0.0, 0u, 0.0); float age_1 = _group_0_binding_0_vs.hits.x; float _e9 = _group_0_binding_0_vs.strike.z; uint _e13 = pcg((uint(_e9) + 2135587861u)); uint _e15 = pcg((slot + _e13)); float _e19 = _group_0_binding_0_vs.wall.x; float _e23 = _group_0_binding_0_vs.build.z; float hole = (_e19 * max(_e23, 0.4)); float _e29 = rand(_e15, 3u); float a_1 = (((float(slot) + _e29) / 96.0) * 6.2831855); vec2 out_ = vec2(cos(a_1), sin(a_1)); float _e39 = rand(_e15, 4u); float r0_ = (hole * mix(0.6, 1.15, _e39)); float _e45 = rand(_e15, 5u); float climb = mix(0.05, 0.6, pow(_e45, 1.5)); float _e52 = rand(_e15, 6u); float spread = mix(0.3, 1.1, _e52); float t_1 = ((1.0 - exp((-(age_1) * 2.2))) / 2.2); c_1.center = vec3((out_ * (r0_ + (spread * t_1))), ((climb * age_1) + ((0.15 * age_1) * age_1))); float _e76 = rand(_e15, 7u); c_1.size = mix(0.014, 0.06, pow(_e76, 1.5)); float _e92 = _group_0_binding_0_vs.strike.z; c_1.scale = ((smoothstep(0.0, 0.05, age_1) * step(age_1, 10.0)) * step(0.5, _e92)); tumble(_e15, age_1, c_1); Chunk _e96 = c_1; return _e96; } Chunk strike(uint slot_1) { Chunk c_2 = Chunk(vec3(0.0), vec3(0.0), 0.0, 0.0, 0u, 0.0); float age_2 = _group_0_binding_0_vs.hits.z; float _e9 = _group_0_binding_0_vs.strike.w; uint _e13 = pcg((uint(_e9) + 625341585u)); uint _e15 = pcg((slot_1 + _e13)); float _e17 = rand(_e15, 3u); float a_2 = (_e17 * 6.2831855); vec2 out_1 = vec2(cos(a_2), sin(a_2)); float _e24 = rand(_e15, 5u); float climb_1 = mix(0.03, 0.35, pow(_e24, 1.5)); float _e31 = rand(_e15, 6u); float spread_1 = mix(0.08, 0.5, _e31); float t_2 = ((1.0 - exp((-(age_2) * 2.5))) / 2.5); vec4 _e46 = _group_0_binding_0_vs.strike; float _e49 = rand(_e15, 4u); c_2.center = vec3((_e46.xy + (out_1 * ((0.015 * _e49) + (spread_1 * t_2)))), ((climb_1 * age_2) + ((0.15 * age_2) * age_2))); float _e64 = rand(_e15, 7u); c_2.size = mix(0.008, 0.03, pow(_e64, 1.5)); float _e80 = _group_0_binding_0_vs.strike.w; c_2.scale = ((smoothstep(0.0, 0.04, age_2) * step(age_2, 10.0)) * step(0.5, _e80)); tumble(_e15, age_2, c_2); Chunk _e84 = c_2; return _e84; } Chunk chunkAt(uint instance) { if ((instance < BREACH)) { Chunk _e3 = breach(instance); return _e3; } Chunk _e6 = strike((instance - BREACH)); return _e6; } vec3 corner(Chunk c_3, uint k, bool top) { float r = 0.0; float z = 0.5; float twist = 0.0; uint i = (k % SIDES); float _e9 = rand(c_3.key, (20u + i)); float a_3 = (((float(i) + (0.8 * (_e9 - 0.5))) / 6.0) * 6.2831855); float _e22 = rand(c_3.key, (30u + i)); r = mix(0.55, 1.0, _e22); if (!(top)) { float _e32 = r; float _e36 = rand(c_3.key, (40u + i)); r = (_e32 * mix(0.7, 0.95, _e36)); z = -0.5; float _e44 = rand(c_3.key, 50u); twist = (0.25 * (_e44 - 0.5)); } float _e51 = rand(c_3.key, 15u); float thick = mix(0.5, 1.1, _e51); float _e55 = twist; float _e58 = r; float _e60 = twist; float _e63 = r; float _e65 = z; return ((vec3((cos((a_3 + _e55)) * _e58), (sin((a_3 + _e60)) * _e63), (_e65 * thick)) * c_3.size) * c_3.scale); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_2 = sin(angle); float k_1 = cos(angle); return (((v_1 * k_1) + (cross(axis, v_1) * s_2)) + ((axis * dot(axis, v_1)) * (1.0 - k_1))); } Face face(Chunk c_4, uint t) { Face f = Face(vec3(0.0), vec3(0.0), vec3(0.0)); if ((t < 4u)) { vec3 _e8 = corner(c_4, 0u, true); f.a = _e8; vec3 _e13 = corner(c_4, (t + 1u), true); f.b = _e13; vec3 _e18 = corner(c_4, (t + 2u), true); f.c = _e18; } else { if ((t < 8u)) { uint k_2 = (t - 4u); vec3 _e26 = corner(c_4, 0u, false); f.a = _e26; vec3 _e31 = corner(c_4, (k_2 + 2u), false); f.b = _e31; vec3 _e36 = corner(c_4, (k_2 + 1u), false); f.c = _e36; } else { uint s_3 = ((t - 8u) / 2u); if ((((t - 8u) & 1u) == 0u)) { vec3 _e49 = corner(c_4, s_3, true); f.a = _e49; vec3 _e54 = corner(c_4, (s_3 + 1u), true); f.b = _e54; vec3 _e59 = corner(c_4, (s_3 + 1u), false); f.c = _e59; } else { vec3 _e62 = corner(c_4, s_3, true); f.a = _e62; vec3 _e67 = corner(c_4, (s_3 + 1u), false); f.b = _e67; vec3 _e70 = corner(c_4, s_3, false); f.c = _e70; } } } Face _e71 = f; return _e71; } Placed place(uint index_2) { Placed p = Placed(vec3(0.0), vec3(0.0), false); bool local = false; vec3 n = vec3(0.0); vec3 corners[3] = vec3[3](vec3(0.0), vec3(0.0), vec3(0.0)); uint vi = (index_2 % VERTICES); Chunk _e5 = chunkAt((index_2 / VERTICES)); if (!((_e5.scale <= 0.0))) { float _e19 = _group_0_binding_0_vs.camera.x; local = (_e5.center.z > (_e19 - (2.0 * _e5.size))); } else { local = true; } bool _e26 = local; p.gone = _e26; Face _e29 = face(_e5, (vi / 3u)); vec3 _e33 = rotate(_e29.a, _e5.axis, _e5.angle); vec3 _e37 = rotate(_e29.b, _e5.axis, _e5.angle); vec3 _e41 = rotate(_e29.c, _e5.axis, _e5.angle); n = normalize((cross((_e37 - _e33), (_e41 - _e33)) + vec3(0.0, 0.0, 1e-7))); vec3 _e52 = n; if ((dot(_e52, ((_e33 + _e37) + _e41)) < 0.0)) { vec3 _e58 = n; n = -(_e58); } corners = vec3[3](_e33, _e37, _e41); vec3 _e67 = corners[(vi % 3u)]; p.world = (_e5.center + _e67); vec3 _e70 = n; p.normal = _e70; Placed _e71 = p; return _e71; } vec4 toClip(vec2 px, float depth) { float _e6 = _group_0_binding_0_vs.view.x; float _e16 = _group_0_binding_0_vs.view.y; return vec4((((px.x / _e6) * 2.0) - 1.0), (1.0 - ((px.y / _e16) * 2.0)), depth, 1.0); } void main() { uint index_1 = uint(gl_VertexID); ShadowOut o_1 = ShadowOut(vec4(0.0), 0.0); Placed _e1 = place(index_1); vec4 _e4 = _group_0_binding_0_vs.light; vec3 l = _e4.xyz; vec2 onWall = (_e1.world.xy - (l.xy * (max(_e1.world.z, 0.0) / max(l.z, 0.05)))); vec4 _e21 = _group_0_binding_0_vs.frame; float _e26 = _group_0_binding_0_vs.view.z; vec2 px_1 = (_e21.xy + (onWall * _e26)); vec4 _e32 = toClip(px_1, 0.5); o_1.position = (_e1.gone ? vec4(2.0, 2.0, 2.0, 1.0) : _e32); float _e46 = _group_0_binding_0_vs.camera.x; o_1.height = clamp((_e1.world.z / _e46), 0.0, 1.0); ShadowOut _e51 = o_1; gl_Position = _e51.position; _vs2fs_location0 = _e51.height; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; }  fs_shadowmainŠ#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Chunk { vec3 center; vec3 axis; float angle; float size; uint key; float scale; }; struct Face { vec3 a; vec3 b; vec3 c; }; struct Placed { vec3 world; vec3 normal; bool gone; }; struct ShardOut { vec4 position; vec3 normal; float tint; }; struct ShadowOut { vec4 position; float height; }; const uint BREACH = 96u; const uint STRIKE = 32u; const uint SIDES = 6u; const uint VERTICES = 60u; smooth in float _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; uint pcg(uint v) { uint s = ((v * 747796405u) + 2891336453u); uint w = (((s >> ((s >> 28u) + 4u)) ^ s) * 277803737u); return ((w >> 22u) ^ w); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } void tumble(uint key_1, float age, inout Chunk c) { float _e4 = rand(key_1, 10u); float z_1 = ((_e4 * 2.0) - 1.0); float _e10 = rand(key_1, 11u); float a = (_e10 * 6.2831855); float s_1 = sqrt(max((1.0 - (z_1 * z_1)), 0.0)); c.axis = vec3((s_1 * cos(a)), (s_1 * sin(a)), z_1); float _e27 = rand(key_1, 12u); float _e31 = rand(key_1, 13u); float _e37 = rand(key_1, 14u); c.angle = ((_e27 * 6.2831855) + ((age * mix(1.5, 6.0, _e31)) * ((_e37 < 0.5) ? 1.0 : -1.0))); c.key = key_1; return; } vec3 corner(Chunk c_3, uint k, bool top) { float r = 0.0; float z = 0.5; float twist = 0.0; uint i = (k % SIDES); float _e9 = rand(c_3.key, (20u + i)); float a_1 = (((float(i) + (0.8 * (_e9 - 0.5))) / 6.0) * 6.2831855); float _e22 = rand(c_3.key, (30u + i)); r = mix(0.55, 1.0, _e22); if (!(top)) { float _e32 = r; float _e36 = rand(c_3.key, (40u + i)); r = (_e32 * mix(0.7, 0.95, _e36)); z = -0.5; float _e44 = rand(c_3.key, 50u); twist = (0.25 * (_e44 - 0.5)); } float _e51 = rand(c_3.key, 15u); float thick = mix(0.5, 1.1, _e51); float _e55 = twist; float _e58 = r; float _e60 = twist; float _e63 = r; float _e65 = z; return ((vec3((cos((a_1 + _e55)) * _e58), (sin((a_1 + _e60)) * _e63), (_e65 * thick)) * c_3.size) * c_3.scale); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_2 = sin(angle); float k_1 = cos(angle); return (((v_1 * k_1) + (cross(axis, v_1) * s_2)) + ((axis * dot(axis, v_1)) * (1.0 - k_1))); } Face face(Chunk c_4, uint t) { Face f = Face(vec3(0.0), vec3(0.0), vec3(0.0)); if ((t < 4u)) { vec3 _e8 = corner(c_4, 0u, true); f.a = _e8; vec3 _e13 = corner(c_4, (t + 1u), true); f.b = _e13; vec3 _e18 = corner(c_4, (t + 2u), true); f.c = _e18; } else { if ((t < 8u)) { uint k_2 = (t - 4u); vec3 _e26 = corner(c_4, 0u, false); f.a = _e26; vec3 _e31 = corner(c_4, (k_2 + 2u), false); f.b = _e31; vec3 _e36 = corner(c_4, (k_2 + 1u), false); f.c = _e36; } else { uint s_3 = ((t - 8u) / 2u); if ((((t - 8u) & 1u) == 0u)) { vec3 _e49 = corner(c_4, s_3, true); f.a = _e49; vec3 _e54 = corner(c_4, (s_3 + 1u), true); f.b = _e54; vec3 _e59 = corner(c_4, (s_3 + 1u), false); f.c = _e59; } else { vec3 _e62 = corner(c_4, s_3, true); f.a = _e62; vec3 _e67 = corner(c_4, (s_3 + 1u), false); f.b = _e67; vec3 _e70 = corner(c_4, s_3, false); f.c = _e70; } } } Face _e71 = f; return _e71; } void main() { ShadowOut in_1 = ShadowOut(gl_FragCoord, _vs2fs_location0); _fs2p_location0 = vec4(1.0, (1.0 - in_1.height), 0.0, 1.0); return; }  ÀðЂ�‘Íà?Scene_block_0VertexScene_block_0Fragmentvs_shardvs_shardfs_shardfs_shard vs_shadow vs_shadow fs_shadow fs_shadowß/// language: metal2.2 #include #include using metal::uint; struct Scene { metal::float4 view; metal::float4 frame; metal::float4 wall; metal::float4 light; metal::float4 build; metal::float4 hits; metal::float4 strike; metal::float4 albedo; metal::float4 glow; metal::float4 deep; metal::float4 camera; metal::float4 shard; }; struct Chunk { metal::float3 center; metal::packed_float3 axis; float angle; float size; uint key; float scale; char _pad6[4]; }; struct Face { metal::float3 a; metal::float3 b; metal::float3 c; }; struct Placed { metal::float3 world; metal::packed_float3 normal; bool gone; char _pad3[3]; }; struct type_7 { metal::float3 inner[3]; }; struct ShardOut { metal::float4 position; metal::packed_float3 normal; float tint; }; struct ShadowOut { metal::float4 position; float height; char _pad2[12]; }; constant uint BREACH = 96u; constant uint STRIKE = 32u; constant uint SIDES = 6u; constant uint VERTICES = 60u; uint pcg( uint v ) { uint s = (v * 747796405u) + 2891336453u; uint w = ((s >> ((s >> 28u) + 4u)) ^ s) * 277803737u; return (w >> 22u) ^ w; } float unit( uint h ) { return static_cast(h >> 8u) / 16777216.0; } float rand( uint key, uint channel ) { uint _e5 = pcg(key + (channel * 2654435769u)); float _e6 = unit(_e5); return _e6; } void tumble( uint key_1, float age, thread Chunk& c ) { float _e4 = rand(key_1, 10u); float z_1 = (_e4 * 2.0) - 1.0; float _e10 = rand(key_1, 11u); float a = _e10 * 6.2831855; float s_1 = metal::sqrt(metal::max(1.0 - (z_1 * z_1), 0.0)); c.axis = metal::float3(s_1 * metal::cos(a), s_1 * metal::sin(a), z_1); float _e27 = rand(key_1, 12u); float _e31 = rand(key_1, 13u); float _e37 = rand(key_1, 14u); c.angle = (_e27 * 6.2831855) + ((age * metal::mix(1.5, 6.0, _e31)) * ((_e37 < 0.5) ? 1.0 : -1.0)); c.key = key_1; return; } uint naga_f2u32(float value) { return static_cast(metal::clamp(value, 0.0, 4294967000.0)); } Chunk breach( uint slot, constant Scene& scene ) { Chunk c_1 = {}; float age_1 = scene.hits.x; float _e9 = scene.strike.z; uint _e13 = pcg(naga_f2u32(_e9) + 2135587861u); uint _e15 = pcg(slot + _e13); float _e19 = scene.wall.x; float _e23 = scene.build.z; float hole = _e19 * metal::max(_e23, 0.4); float _e29 = rand(_e15, 3u); float a_1 = ((static_cast(slot) + _e29) / 96.0) * 6.2831855; metal::float2 out = metal::float2(metal::cos(a_1), metal::sin(a_1)); float _e39 = rand(_e15, 4u); float r0_ = hole * metal::mix(0.6, 1.15, _e39); float _e45 = rand(_e15, 5u); float climb = metal::mix(0.05, 0.6, metal::pow(_e45, 1.5)); float _e52 = rand(_e15, 6u); float spread = metal::mix(0.3, 1.1, _e52); float t_1 = (1.0 - metal::exp(-(age_1) * 2.2)) / 2.2; c_1.center = metal::float3(out * (r0_ + (spread * t_1)), (climb * age_1) + ((0.15 * age_1) * age_1)); float _e76 = rand(_e15, 7u); c_1.size = metal::mix(0.014, 0.06, metal::pow(_e76, 1.5)); float _e92 = scene.strike.z; c_1.scale = (metal::smoothstep(0.0, 0.05, age_1) * metal::step(age_1, 10.0)) * metal::step(0.5, _e92); tumble(_e15, age_1, c_1); Chunk _e96 = c_1; return _e96; } Chunk strike( uint slot_1, constant Scene& scene ) { Chunk c_2 = {}; float age_2 = scene.hits.z; float _e9 = scene.strike.w; uint _e13 = pcg(naga_f2u32(_e9) + 625341585u); uint _e15 = pcg(slot_1 + _e13); float _e17 = rand(_e15, 3u); float a_2 = _e17 * 6.2831855; metal::float2 out_1 = metal::float2(metal::cos(a_2), metal::sin(a_2)); float _e24 = rand(_e15, 5u); float climb_1 = metal::mix(0.03, 0.35, metal::pow(_e24, 1.5)); float _e31 = rand(_e15, 6u); float spread_1 = metal::mix(0.08, 0.5, _e31); float t_2 = (1.0 - metal::exp(-(age_2) * 2.5)) / 2.5; metal::float4 _e46 = scene.strike; float _e49 = rand(_e15, 4u); c_2.center = metal::float3(_e46.xy + (out_1 * ((0.015 * _e49) + (spread_1 * t_2))), (climb_1 * age_2) + ((0.15 * age_2) * age_2)); float _e64 = rand(_e15, 7u); c_2.size = metal::mix(0.008, 0.03, metal::pow(_e64, 1.5)); float _e80 = scene.strike.w; c_2.scale = (metal::smoothstep(0.0, 0.04, age_2) * metal::step(age_2, 10.0)) * metal::step(0.5, _e80); tumble(_e15, age_2, c_2); Chunk _e84 = c_2; return _e84; } Chunk chunkAt( uint instance, constant Scene& scene ) { if (instance < BREACH) { Chunk _e3 = breach(instance, scene); return _e3; } Chunk _e6 = strike(instance - BREACH, scene); return _e6; } uint naga_mod(uint lhs, uint rhs) { return lhs % metal::select(rhs, 1u, rhs == 0u); } metal::float3 corner( Chunk c_3, uint k, bool top ) { float r = {}; float z = 0.5; float twist = 0.0; uint i = naga_mod(k, SIDES); float _e9 = rand(c_3.key, 20u + i); float a_3 = ((static_cast(i) + (0.8 * (_e9 - 0.5))) / 6.0) * 6.2831855; float _e22 = rand(c_3.key, 30u + i); r = metal::mix(0.55, 1.0, _e22); if (!(top)) { float _e32 = r; float _e36 = rand(c_3.key, 40u + i); r = _e32 * metal::mix(0.7, 0.95, _e36); z = -0.5; float _e44 = rand(c_3.key, 50u); twist = 0.25 * (_e44 - 0.5); } float _e51 = rand(c_3.key, 15u); float thick = metal::mix(0.5, 1.1, _e51); float _e55 = twist; float _e58 = r; float _e60 = twist; float _e63 = r; float _e65 = z; return (metal::float3(metal::cos(a_3 + _e55) * _e58, metal::sin(a_3 + _e60) * _e63, _e65 * thick) * c_3.size) * c_3.scale; } metal::float3 rotate( metal::float3 v_1, metal::float3 axis, float angle ) { float s_2 = metal::sin(angle); float k_1 = metal::cos(angle); return ((v_1 * k_1) + (metal::cross(axis, v_1) * s_2)) + ((axis * metal::dot(axis, v_1)) * (1.0 - k_1)); } uint naga_div(uint lhs, uint rhs) { return lhs / metal::select(rhs, 1u, rhs == 0u); } Face face( Chunk c_4, uint t ) { Face f = {}; if (t < 4u) { metal::float3 _e8 = corner(c_4, 0u, true); f.a = _e8; metal::float3 _e13 = corner(c_4, t + 1u, true); f.b = _e13; metal::float3 _e18 = corner(c_4, t + 2u, true); f.c = _e18; } else { if (t < 8u) { uint k_2 = t - 4u; metal::float3 _e26 = corner(c_4, 0u, false); f.a = _e26; metal::float3 _e31 = corner(c_4, k_2 + 2u, false); f.b = _e31; metal::float3 _e36 = corner(c_4, k_2 + 1u, false); f.c = _e36; } else { uint s_3 = naga_div(t - 8u, 2u); if (((t - 8u) & 1u) == 0u) { metal::float3 _e49 = corner(c_4, s_3, true); f.a = _e49; metal::float3 _e54 = corner(c_4, s_3 + 1u, true); f.b = _e54; metal::float3 _e59 = corner(c_4, s_3 + 1u, false); f.c = _e59; } else { metal::float3 _e62 = corner(c_4, s_3, true); f.a = _e62; metal::float3 _e67 = corner(c_4, s_3 + 1u, false); f.b = _e67; metal::float3 _e70 = corner(c_4, s_3, false); f.c = _e70; } } } Face _e71 = f; return _e71; } Placed place( uint index_2, constant Scene& scene ) { Placed p = {}; bool local = {}; metal::float3 n = {}; type_7 corners = {}; uint vi = naga_mod(index_2, VERTICES); Chunk _e5 = chunkAt(naga_div(index_2, VERTICES), scene); if (!((_e5.scale <= 0.0))) { float _e19 = scene.camera.x; local = _e5.center.z > (_e19 - (2.0 * _e5.size)); } else { local = true; } bool _e26 = local; p.gone = _e26; Face _e29 = face(_e5, naga_div(vi, 3u)); metal::float3 _e33 = rotate(_e29.a, _e5.axis, _e5.angle); metal::float3 _e37 = rotate(_e29.b, _e5.axis, _e5.angle); metal::float3 _e41 = rotate(_e29.c, _e5.axis, _e5.angle); n = metal::normalize(metal::cross(_e37 - _e33, _e41 - _e33) + metal::float3(0.0, 0.0, 0.0000001)); metal::float3 _e52 = n; if (metal::dot(_e52, (_e33 + _e37) + _e41) < 0.0) { metal::float3 _e58 = n; n = -(_e58); } corners = type_7 {{_e33, _e37, _e41}}; metal::float3 _e67 = corners.inner[metal::min(unsigned(naga_mod(vi, 3u)), 2u)]; p.world = _e5.center + _e67; metal::float3 _e70 = n; p.normal = _e70; Placed _e71 = p; return _e71; } metal::float4 toClip( metal::float2 px, float depth, constant Scene& scene ) { float _e6 = scene.view.x; float _e16 = scene.view.y; return metal::float4(((px.x / _e6) * 2.0) - 1.0, 1.0 - ((px.y / _e16) * 2.0), depth, 1.0); } struct vs_shardInput { }; struct vs_shardOutput { metal::float4 position [[position]]; metal::float3 normal [[user(loc0), center_perspective]]; float tint [[user(loc1), center_perspective]]; }; vertex vs_shardOutput vs_shard( uint index [[vertex_id]] , constant Scene& scene [[buffer(0)]] ) { ShardOut o = {}; Placed _e1 = place(index, scene); float d = scene.camera.x; float toCamera = metal::max(d - _e1.world.z, d * 0.01); metal::float4 _e15 = scene.frame; float _e24 = scene.view.z; metal::float2 px_1 = _e15.xy + ((_e1.world.xy * (d / toCamera)) * _e24); metal::float4 _e34 = toClip(px_1, metal::clamp(toCamera / d, 0.0, 1.0) * 0.999, scene); o.position = _e1.gone ? metal::float4(2.0, 2.0, 2.0, 1.0) : _e34; o.normal = _e1.normal; uint _e49 = pcg(naga_div(index, VERTICES) + 99u); float _e51 = rand(_e49, 0u); o.tint = _e51; ShardOut _e52 = o; const auto _tmp = _e52; return vs_shardOutput { _tmp.position, _tmp.normal, _tmp.tint }; } struct fs_shardInput { metal::float3 normal [[user(loc0), center_perspective]]; float tint [[user(loc1), center_perspective]]; }; struct fs_shardOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_shardOutput fs_shard( fs_shardInput varyings_1 [[stage_in]] , metal::float4 position [[position]] , constant Scene& scene [[buffer(0)]] ) { const ShardOut in = { position, varyings_1.normal, varyings_1.tint }; metal::float3 n_1 = metal::normalize(in.normal); metal::float4 _e5 = scene.light; metal::float3 l = _e5.xyz; float _e13 = scene.camera.w; float sun = metal::max(metal::dot(n_1, l), 0.0) * _e13; float sky = 0.3 * (0.6 + (0.4 * metal::max(n_1.z, -0.5))); metal::float4 _e26 = scene.shard; metal::float3 color = (_e26.xyz * (0.92 + (0.08 * in.tint))) * (sky + sun); return fs_shardOutput { metal::float4(color, 1.0) }; } struct vs_shadowInput { }; struct vs_shadowOutput { metal::float4 position [[position]]; float height [[user(loc0), center_perspective]]; }; vertex vs_shadowOutput vs_shadow( uint index_1 [[vertex_id]] , constant Scene& scene [[buffer(0)]] ) { ShadowOut o_1 = {}; Placed _e1 = place(index_1, scene); metal::float4 _e4 = scene.light; metal::float3 l_1 = _e4.xyz; metal::float2 onWall = _e1.world.xy - (l_1.xy * (metal::max(_e1.world.z, 0.0) / metal::max(l_1.z, 0.05))); metal::float4 _e21 = scene.frame; float _e26 = scene.view.z; metal::float2 px_2 = _e21.xy + (onWall * _e26); metal::float4 _e32 = toClip(px_2, 0.5, scene); o_1.position = _e1.gone ? metal::float4(2.0, 2.0, 2.0, 1.0) : _e32; float _e46 = scene.camera.x; o_1.height = metal::clamp(_e1.world.z / _e46, 0.0, 1.0); ShadowOut _e51 = o_1; const auto _tmp_1 = _e51; return vs_shadowOutput { _tmp_1.position, _tmp_1.height }; } struct fs_shadowInput { float height [[user(loc0), center_perspective]]; }; struct fs_shadowOutput { metal::float4 member_3 [[color(0)]]; }; fragment fs_shadowOutput fs_shadow( fs_shadowInput varyings_3 [[stage_in]] , metal::float4 position_1 [[position]] ) { const ShadowOut in_1 = { position_1, varyings_3.height }; return fs_shadowOutput { metal::float4(1.0, 1.0 - in_1.height, 0.0, 1.0) }; }  ÀðЂ�‘Íà?vs_shardmainÂ"struct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Chunk { float3 center; float3 axis; float angle; float size; uint key; float scale; }; struct Face { float3 a; float3 b; float3 c; }; struct Placed { float3 world; float3 normal; bool gone; }; struct ShardOut { float4 position; float3 normal; float tint; }; struct ShadowOut { float4 position; float height; }; static const Chunk _141 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0u, 0.0f }; static const Chunk _219 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0u, 0.0f }; static const Face _397 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; static const Placed _457 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), false }; static const float3 _465[3] = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; static const ShardOut _564 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f }; cbuffer scene : register(b0) { Scene scene_1_m0 : packoffset(c0); }; static float4 gl_Position; static int gl_VertexIndex; static float3 normal; static float tint; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float3 normal : TEXCOORD0; float tint : TEXCOORD1; float4 gl_Position : SV_Position; }; uint naga_mod(uint lhs, uint rhs) { return lhs % ((rhs == 0u) ? 1u : rhs); } uint naga_div(uint lhs, uint rhs) { return lhs / ((rhs == 0u) ? 1u : rhs); } uint pcg(uint v) { uint _37 = (v * 747796405u) + 2891336453u; uint _42 = ((_37 >> ((_37 >> 28u) + 4u)) ^ _37) * 277803737u; return (_42 >> 22u) ^ _42; } float unit(uint h) { return float(h >> 8u) / 16777216.0f; } float rand(uint key, uint channel) { return unit(pcg(key + (channel * 2654435769u))); } void tumble(uint key, float age, inout Chunk c) { float _88 = (rand(key, 10u) * 2.0f) - 1.0f; float _90 = rand(key, 11u) * 6.283185482025146484375f; float _94 = sqrt(max(1.0f - (_88 * _88), 0.0f)); c.axis = float3(_94 * cos(_90), _94 * sin(_90), _88); c.angle = (rand(key, 12u) * 6.283185482025146484375f) + ((age * lerp(1.5f, 6.0f, rand(key, 13u))) * ((rand(key, 14u) < 0.5f) ? 1.0f : (-1.0f))); c.key = key; } Chunk breach(uint slot) { Chunk c = _141; uint _155 = pcg(slot + pcg(uint(clamp(scene_1_m0.strike.z, 0.0f, 4294967040.0f)) + 2135587861u)); float _166 = ((float(slot) + rand(_155, 3u)) / 96.0f) * 6.283185482025146484375f; c.center = float3(float2(cos(_166), sin(_166)) * (((scene_1_m0.wall.x * max(scene_1_m0.build.z, 0.4000000059604644775390625f)) * lerp(0.60000002384185791015625f, 1.14999997615814208984375f, rand(_155, 4u))) + (lerp(0.300000011920928955078125f, 1.10000002384185791015625f, rand(_155, 6u)) * ((1.0f - exp((-scene_1_m0.hits.x) * 2.2000000476837158203125f)) / 2.2000000476837158203125f))), (lerp(0.0500000007450580596923828125f, 0.60000002384185791015625f, pow(rand(_155, 5u), 1.5f)) * scene_1_m0.hits.x) + ((0.1500000059604644775390625f * scene_1_m0.hits.x) * scene_1_m0.hits.x)); c.size = lerp(0.01400000043213367462158203125f, 0.0599999986588954925537109375f, pow(rand(_155, 7u), 1.5f)); c.scale = (smoothstep(0.0f, 0.0500000007450580596923828125f, scene_1_m0.hits.x) * step(scene_1_m0.hits.x, 10.0f)) * step(0.5f, scene_1_m0.strike.z); tumble(_155, scene_1_m0.hits.x, c); return c; } Chunk strike(uint slot) { Chunk c = _219; uint _230 = pcg(slot + pcg(uint(clamp(scene_1_m0.strike.w, 0.0f, 4294967040.0f)) + 625341585u)); float _232 = rand(_230, 3u) * 6.283185482025146484375f; c.center = float3(scene_1_m0.strike.xy + (float2(cos(_232), sin(_232)) * ((0.014999999664723873138427734375f * rand(_230, 4u)) + (lerp(0.07999999821186065673828125f, 0.5f, rand(_230, 6u)) * ((1.0f - exp((-scene_1_m0.hits.z) * 2.5f)) / 2.5f)))), (lerp(0.02999999932944774627685546875f, 0.3499999940395355224609375f, pow(rand(_230, 5u), 1.5f)) * scene_1_m0.hits.z) + ((0.1500000059604644775390625f * scene_1_m0.hits.z) * scene_1_m0.hits.z)); c.size = lerp(0.008000000379979610443115234375f, 0.02999999932944774627685546875f, pow(rand(_230, 7u), 1.5f)); c.scale = (smoothstep(0.0f, 0.039999999105930328369140625f, scene_1_m0.hits.z) * step(scene_1_m0.hits.z, 10.0f)) * step(0.5f, scene_1_m0.strike.w); tumble(_230, scene_1_m0.hits.z, c); return c; } Chunk chunkAt(uint instance) { if (instance < 96u) { return breach(instance); } return strike(instance - 96u); } float3 corner(Chunk c, uint k, bool top) { float r = 0.0f; float z = 0.5f; float twist = 0.0f; uint _316 = naga_mod(k, 6u); float _325 = ((float(_316) + (0.800000011920928955078125f * (rand(c.key, 20u + _316) - 0.5f))) / 6.0f) * 6.283185482025146484375f; r = lerp(0.550000011920928955078125f, 1.0f, rand(c.key, 30u + _316)); if (!top) { r *= lerp(0.699999988079071044921875f, 0.949999988079071044921875f, rand(c.key, 40u + _316)); z = -0.5f; twist = 0.25f * (rand(c.key, 50u) - 0.5f); } return (float3(cos(_325 + twist) * r, sin(_325 + twist) * r, z * lerp(0.5f, 1.10000002384185791015625f, rand(c.key, 15u))) * c.size) * c.scale; } Face face(Chunk c, uint t) { Face f = _397; if (t < 4u) { f.a = corner(c, 0u, true); f.b = corner(c, t + 1u, true); f.c = corner(c, t + 2u, true); } else { if (t < 8u) { uint _415 = t - 4u; f.a = corner(c, 0u, false); f.b = corner(c, _415 + 2u, false); f.c = corner(c, _415 + 1u, false); } else { uint _425 = naga_div(t - 8u, 2u); if (((t - 8u) & 1u) == 0u) { f.a = corner(c, _425, true); f.b = corner(c, _425 + 1u, true); f.c = corner(c, _425 + 1u, false); } else { f.a = corner(c, _425, true); f.b = corner(c, _425 + 1u, false); f.c = corner(c, _425, false); } } } return f; } float3 rotate(float3 v, float3 axis, float angle) { float _371 = cos(angle); return ((v * _371) + (cross(axis, v) * sin(angle))) + ((axis * dot(axis, v)) * (1.0f - _371)); } Placed place(uint index) { bool _458 = false; float3 corners[3] = _465; Placed p = _457; float3 n = float3(0.0f, 0.0f, 0.0f); uint _467 = naga_mod(index, 60u); Chunk _469 = chunkAt(naga_div(index, 60u)); if (!(_469.scale <= 0.0f)) { _458 = _469.center.z > (scene_1_m0.camera.x - (2.0f * _469.size)); } else { _458 = true; } p.gone = _458; Face _487 = face(_469, naga_div(_467, 3u)); float3 _491 = rotate(_487.a, _469.axis, _469.angle); float3 _495 = rotate(_487.b, _469.axis, _469.angle); float3 _499 = rotate(_487.c, _469.axis, _469.angle); n = normalize(cross(_495 - _491, _499 - _491) + float3(0.0f, 0.0f, 1.0000000116860974230803549289703e-07f)); if (dot(n, (_491 + _495) + _499) < 0.0f) { n = -n; } float3 _514[3] = { _491, _495, _499 }; corners = _514; p.world = _469.center + corners[min(naga_mod(_467, 3u), 2u)]; p.normal = n; return p; } float4 toClip(float2 px, float depth) { return float4(((px.x / scene_1_m0.view.x) * 2.0f) - 1.0f, 1.0f - ((px.y / scene_1_m0.view.y) * 2.0f), depth, 1.0f); } void vert_main() { ShardOut o = _564; Placed _566 = place(uint(gl_VertexIndex)); float _573 = max(scene_1_m0.camera.x - _566.world.z, scene_1_m0.camera.x * 0.00999999977648258209228515625f); float4 _589 = toClip(scene_1_m0.frame.xy + ((_566.world.xy * (scene_1_m0.camera.x / _573)) * scene_1_m0.view.z), clamp(_573 / scene_1_m0.camera.x, 0.0f, 1.0f) * 0.999000012874603271484375f); bool _590 = _566.gone; bool4 _593 = bool4(_590, _590, _590, _590); o.position = float4(_593.x ? float4(2.0f, 2.0f, 2.0f, 1.0f).x : _589.x, _593.y ? float4(2.0f, 2.0f, 2.0f, 1.0f).y : _589.y, _593.z ? float4(2.0f, 2.0f, 2.0f, 1.0f).z : _589.z, _593.w ? float4(2.0f, 2.0f, 2.0f, 1.0f).w : _589.w); o.normal = _566.normal; o.tint = rand(pcg(naga_div(uint(gl_VertexIndex), 60u) + 99u), 0u); gl_Position = o.position; normal = o.normal; tint = o.tint; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.normal = normal; stage_output.tint = tint; return stage_output; } fs_shardmainÇstruct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Chunk { float3 center; float3 axis; float angle; float size; uint key; float scale; }; struct Face { float3 a; float3 b; float3 c; }; struct Placed { float3 world; float3 normal; bool gone; }; struct ShardOut { float4 position; float3 normal; float tint; }; struct ShadowOut { float4 position; float height; }; static const Chunk _141 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0u, 0.0f }; static const Chunk _219 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0u, 0.0f }; static const Face _397 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; static const Placed _457 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), false }; static const float3 _465[3] = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; cbuffer scene : register(b0) { Scene scene_1_m0 : packoffset(c0); }; static float4 gl_FragCoord; static float3 normal; static float tint; static float4 _556; struct SPIRV_Cross_Input { float3 normal : TEXCOORD0; float tint : TEXCOORD1; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _556 : SV_Target0; }; void frag_main() { ShardOut _546 = { gl_FragCoord, normal, tint }; float3 _564 = normalize(_546.normal); _556 = float4((scene_1_m0.shard.xyz * (0.920000016689300537109375f + (0.07999999821186065673828125f * _546.tint))) * ((0.300000011920928955078125f * (0.60000002384185791015625f + (0.4000000059604644775390625f * max(_564.z, -0.5f)))) + (max(dot(_564, scene_1_m0.light.xyz), 0.0f) * scene_1_m0.camera.w)), 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; normal = stage_input.normal; tint = stage_input.tint; frag_main(); SPIRV_Cross_Output stage_output; stage_output._556 = _556; return stage_output; } vs_shadowmainÊ!struct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Chunk { float3 center; float3 axis; float angle; float size; uint key; float scale; }; struct Face { float3 a; float3 b; float3 c; }; struct Placed { float3 world; float3 normal; bool gone; }; struct ShardOut { float4 position; float3 normal; float tint; }; struct ShadowOut { float4 position; float height; }; static const Chunk _141 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0u, 0.0f }; static const Chunk _219 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0u, 0.0f }; static const Face _397 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; static const Placed _457 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), false }; static const float3 _465[3] = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; static const ShadowOut _559 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; cbuffer scene : register(b0) { Scene scene_1_m0 : packoffset(c0); }; static float4 gl_Position; static int gl_VertexIndex; static float height; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float height : TEXCOORD0; float4 gl_Position : SV_Position; }; uint naga_mod(uint lhs, uint rhs) { return lhs % ((rhs == 0u) ? 1u : rhs); } uint naga_div(uint lhs, uint rhs) { return lhs / ((rhs == 0u) ? 1u : rhs); } uint pcg(uint v) { uint _37 = (v * 747796405u) + 2891336453u; uint _42 = ((_37 >> ((_37 >> 28u) + 4u)) ^ _37) * 277803737u; return (_42 >> 22u) ^ _42; } float unit(uint h) { return float(h >> 8u) / 16777216.0f; } float rand(uint key, uint channel) { return unit(pcg(key + (channel * 2654435769u))); } void tumble(uint key, float age, inout Chunk c) { float _88 = (rand(key, 10u) * 2.0f) - 1.0f; float _90 = rand(key, 11u) * 6.283185482025146484375f; float _94 = sqrt(max(1.0f - (_88 * _88), 0.0f)); c.axis = float3(_94 * cos(_90), _94 * sin(_90), _88); c.angle = (rand(key, 12u) * 6.283185482025146484375f) + ((age * lerp(1.5f, 6.0f, rand(key, 13u))) * ((rand(key, 14u) < 0.5f) ? 1.0f : (-1.0f))); c.key = key; } Chunk breach(uint slot) { Chunk c = _141; uint _155 = pcg(slot + pcg(uint(clamp(scene_1_m0.strike.z, 0.0f, 4294967040.0f)) + 2135587861u)); float _166 = ((float(slot) + rand(_155, 3u)) / 96.0f) * 6.283185482025146484375f; c.center = float3(float2(cos(_166), sin(_166)) * (((scene_1_m0.wall.x * max(scene_1_m0.build.z, 0.4000000059604644775390625f)) * lerp(0.60000002384185791015625f, 1.14999997615814208984375f, rand(_155, 4u))) + (lerp(0.300000011920928955078125f, 1.10000002384185791015625f, rand(_155, 6u)) * ((1.0f - exp((-scene_1_m0.hits.x) * 2.2000000476837158203125f)) / 2.2000000476837158203125f))), (lerp(0.0500000007450580596923828125f, 0.60000002384185791015625f, pow(rand(_155, 5u), 1.5f)) * scene_1_m0.hits.x) + ((0.1500000059604644775390625f * scene_1_m0.hits.x) * scene_1_m0.hits.x)); c.size = lerp(0.01400000043213367462158203125f, 0.0599999986588954925537109375f, pow(rand(_155, 7u), 1.5f)); c.scale = (smoothstep(0.0f, 0.0500000007450580596923828125f, scene_1_m0.hits.x) * step(scene_1_m0.hits.x, 10.0f)) * step(0.5f, scene_1_m0.strike.z); tumble(_155, scene_1_m0.hits.x, c); return c; } Chunk strike(uint slot) { Chunk c = _219; uint _230 = pcg(slot + pcg(uint(clamp(scene_1_m0.strike.w, 0.0f, 4294967040.0f)) + 625341585u)); float _232 = rand(_230, 3u) * 6.283185482025146484375f; c.center = float3(scene_1_m0.strike.xy + (float2(cos(_232), sin(_232)) * ((0.014999999664723873138427734375f * rand(_230, 4u)) + (lerp(0.07999999821186065673828125f, 0.5f, rand(_230, 6u)) * ((1.0f - exp((-scene_1_m0.hits.z) * 2.5f)) / 2.5f)))), (lerp(0.02999999932944774627685546875f, 0.3499999940395355224609375f, pow(rand(_230, 5u), 1.5f)) * scene_1_m0.hits.z) + ((0.1500000059604644775390625f * scene_1_m0.hits.z) * scene_1_m0.hits.z)); c.size = lerp(0.008000000379979610443115234375f, 0.02999999932944774627685546875f, pow(rand(_230, 7u), 1.5f)); c.scale = (smoothstep(0.0f, 0.039999999105930328369140625f, scene_1_m0.hits.z) * step(scene_1_m0.hits.z, 10.0f)) * step(0.5f, scene_1_m0.strike.w); tumble(_230, scene_1_m0.hits.z, c); return c; } Chunk chunkAt(uint instance) { if (instance < 96u) { return breach(instance); } return strike(instance - 96u); } float3 corner(Chunk c, uint k, bool top) { float r = 0.0f; float z = 0.5f; float twist = 0.0f; uint _316 = naga_mod(k, 6u); float _325 = ((float(_316) + (0.800000011920928955078125f * (rand(c.key, 20u + _316) - 0.5f))) / 6.0f) * 6.283185482025146484375f; r = lerp(0.550000011920928955078125f, 1.0f, rand(c.key, 30u + _316)); if (!top) { r *= lerp(0.699999988079071044921875f, 0.949999988079071044921875f, rand(c.key, 40u + _316)); z = -0.5f; twist = 0.25f * (rand(c.key, 50u) - 0.5f); } return (float3(cos(_325 + twist) * r, sin(_325 + twist) * r, z * lerp(0.5f, 1.10000002384185791015625f, rand(c.key, 15u))) * c.size) * c.scale; } Face face(Chunk c, uint t) { Face f = _397; if (t < 4u) { f.a = corner(c, 0u, true); f.b = corner(c, t + 1u, true); f.c = corner(c, t + 2u, true); } else { if (t < 8u) { uint _415 = t - 4u; f.a = corner(c, 0u, false); f.b = corner(c, _415 + 2u, false); f.c = corner(c, _415 + 1u, false); } else { uint _425 = naga_div(t - 8u, 2u); if (((t - 8u) & 1u) == 0u) { f.a = corner(c, _425, true); f.b = corner(c, _425 + 1u, true); f.c = corner(c, _425 + 1u, false); } else { f.a = corner(c, _425, true); f.b = corner(c, _425 + 1u, false); f.c = corner(c, _425, false); } } } return f; } float3 rotate(float3 v, float3 axis, float angle) { float _371 = cos(angle); return ((v * _371) + (cross(axis, v) * sin(angle))) + ((axis * dot(axis, v)) * (1.0f - _371)); } Placed place(uint index) { bool _458 = false; float3 corners[3] = _465; Placed p = _457; float3 n = float3(0.0f, 0.0f, 0.0f); uint _467 = naga_mod(index, 60u); Chunk _469 = chunkAt(naga_div(index, 60u)); if (!(_469.scale <= 0.0f)) { _458 = _469.center.z > (scene_1_m0.camera.x - (2.0f * _469.size)); } else { _458 = true; } p.gone = _458; Face _487 = face(_469, naga_div(_467, 3u)); float3 _491 = rotate(_487.a, _469.axis, _469.angle); float3 _495 = rotate(_487.b, _469.axis, _469.angle); float3 _499 = rotate(_487.c, _469.axis, _469.angle); n = normalize(cross(_495 - _491, _499 - _491) + float3(0.0f, 0.0f, 1.0000000116860974230803549289703e-07f)); if (dot(n, (_491 + _495) + _499) < 0.0f) { n = -n; } float3 _514[3] = { _491, _495, _499 }; corners = _514; p.world = _469.center + corners[min(naga_mod(_467, 3u), 2u)]; p.normal = n; return p; } float4 toClip(float2 px, float depth) { return float4(((px.x / scene_1_m0.view.x) * 2.0f) - 1.0f, 1.0f - ((px.y / scene_1_m0.view.y) * 2.0f), depth, 1.0f); } void vert_main() { ShadowOut o = _559; Placed _561 = place(uint(gl_VertexIndex)); float4 _584 = toClip(scene_1_m0.frame.xy + ((_561.world.xy - (scene_1_m0.light.xyz.xy * (max(_561.world.z, 0.0f) / max(scene_1_m0.light.xyz.z, 0.0500000007450580596923828125f)))) * scene_1_m0.view.z), 0.5f); bool _585 = _561.gone; bool4 _588 = bool4(_585, _585, _585, _585); o.position = float4(_588.x ? float4(2.0f, 2.0f, 2.0f, 1.0f).x : _584.x, _588.y ? float4(2.0f, 2.0f, 2.0f, 1.0f).y : _584.y, _588.z ? float4(2.0f, 2.0f, 2.0f, 1.0f).z : _584.z, _588.w ? float4(2.0f, 2.0f, 2.0f, 1.0f).w : _584.w); o.height = clamp(_561.world.z / scene_1_m0.camera.x, 0.0f, 1.0f); gl_Position = o.position; height = o.height; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.height = height; return stage_output; }  fs_shadowmaincstruct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Chunk { float3 center; float3 axis; float angle; float size; uint key; float scale; }; struct Face { float3 a; float3 b; float3 c; }; struct Placed { float3 world; float3 normal; bool gone; }; struct ShardOut { float4 position; float3 normal; float tint; }; struct ShadowOut { float4 position; float height; }; static const Face _228 = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; static float4 gl_FragCoord; static float height; static float4 _287; struct SPIRV_Cross_Input { float height : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _287 : SV_Target0; }; void frag_main() { ShadowOut _280 = { gl_FragCoord, height }; _287 = float4(1.0f, 1.0f - _280.height, 0.0f, 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; height = stage_input.height; frag_main(); SPIRV_Cross_Output stage_output; stage_output._287 = _287; return stage_output; }  ÀðЂ�‘Íà?HSLTSceneÀ viewÿÿÿÿframeÿÿÿÿwall ÿÿÿÿlight0ÿÿÿÿbuild@ÿÿÿÿhitsPÿÿÿÿstrike`ÿÿÿÿalbedopÿÿÿÿglow€ÿÿÿÿdeep�ÿÿÿÿcamera ÿÿÿÿshard°ÿÿÿÿ scene_blockÀscenevs_shardvs_shardfs_shardfs_shard vs_shadow vs_shadow fs_shadow fs_shadow°=#É GLSL.std.450 +vs_shard"%') mfs_shardcfil �vs_shadow‹�Ž Äfs_shadow¿ÁÃmÄH#H#H# H#0H#@H#PH#`H#pH#€H #�H # H #°H#H#H#H# H#$H#(H #H #H # H #H #H #GH#H#H#H#H#G"G!GH#G" *G% G'G)Gc GfGiGlG‹ *G� GŽG¿ GÁGà         ++`+ ++< ;!+µw’,+KV¬++ +!ÙòŽ+"!0+1+2€K!;+<¹y7ž!G +H +I@+J€?+K +LÛÉ@+M+N +O +PÀ?+QÀ@+R+S?+T€¿ _+e g+r t!y z+{+}|J+~ÍÌÌ>+ÀB+€š™?+�33“?+‚+ƒÍÌL=+„š™™>+…ÍÌŒ?+†ÍÌ @+‡š™>+ˆ+‰B`e<+Š�Âu=+‹ A.� � �+•ÿÿO+Ò‘ôE%+Ó�Âõ<+Ô33³>+Õ ×£=+Ö @+×�Âu<+Øo<+Ù ×#=.Û!!+ +,+-ÍÌL?+.+/ÍÌ ?+0(+1333?+233s?+3¿+42+5€>+6.8!p!ˆ ) ‰* Š Œ . �!à +Å•¿Ö3,ÆMMÅ È . É Ë . Ì.Î Ð.Ñ!  #;#" &;&% (;(' *;*)!,+. ×#<+/w¾?,0IIIJ+1c 3.4 IP  d;dc g;gf j;ji;&l+o…k?;#‹;&�;*Ž ’.“;d¿;jÁ;&Ã67øù#ø#„$€%$Â&%€'& Â(%'Æ)(%„*)!Â+*"Æ,+*þ,86/07.ø-ù3ø3Â4.1p54ˆ652þ686:;7879ø7ù=ø=„>9<€?8>9@?9A/@þA86FG7C7D7 EøBùUøU9V:CH…WVIƒXWJ9Y:CK…ZYL…[XXƒ\J[ ](\M ^] `Z…a^` b Z…c^bPdacXA_fEe>fd9h:CN…ihL9j:CO k.PQj…lDk9m:CR¸ nmS©onJT…plo�qipAgsEr>sqAtuE >uCý86xy7wøv; Œ�Az|{ùŽøŽA�‘|‚{=’‘A�“|r=”“ –+”M•m—–€˜—}9™˜€šw™9›šA�œ|r{=�œA�ž| r=Ÿž  (Ÿ~…¡� p¢w9£:›�¤¢£ˆ¥¤…¦¥L §¦ ¨ ¦P ©§¨9ª:› «.€�ª…¬¡«9­:›‚ ®­P ¯.ƒ€®9°:› ±.„…°²’…³²† ´³ƒµJ´ˆ¶µ†…·±¶�¸¬·Ž ¹©¸…º¯’…»‡’…¼»’�½º¼P¾¹½A_¿Œ{>¿¾9À:›ˆ ÁÀP Â.‰ŠÁAgÃŒ>àÄ1Mƒ’ Å0’‹…ÆÄÅA�Ç|r=ÈÇ É0SÈ…ÊÆÉAgËŒ‚>ËÊ9ÌF›’Œ=ÍŒþÍ86Ðy7ÏøÎ; ÚÛAzÑ{ùÜøÜA�ÝÑ‚r=ÞÝA�ßÑ=àß á+àM•mâá€ãâÒ9äã€åÏä9æå9ç:æ…èçL éè ê èP ëéê9ì:æ‚ íìP î.ÓÔí9ï:æ ð.ÕSïñÞ…òñÖ óòƒôJóˆõôÖA�öÑ=÷öO ø÷÷9ù:æ …ú×ù…ûðõ�üúûŽ ýëü� þøý…ÿîÞ…‡Þ…Þ�ÿPþA_Ú{>9:æˆ P .ØÓAgÚ>  1MÙÞ  0Þ‹…   A� Ñ=   0S … AgÚ‚>9FæÞÚ=Úþ86y7øAz{ùø° ÷úø9xþø‚9Ðþ867 7!ø"ª #!{©$#e!‰% $þ%86*+7'7(7 )ø&;g78;g9S;g:Mù;ø;9<(p=<Q>'€?,<9@:>?ƒA@S…B-A�C=BˆDCQ…EDLQF'€G.<9H:FG I./JH>7I¨ J)÷KúJLKøL=M7QN'€O0<9P:NO Q.12P…RMQ>7R>93QS'9T:S4ƒUTS…V5U>:VùKøKQW'9X:W6 Y.S…X=Z:�[EZ \[=]7…^\]=_:�`E_ a `=b7…cab=d9…edYPf^ceQg'ŽhfgQi'Žjhiþj86op7l7m7nøkùqøq r n snŽtls uDmlŽvur�wtv”xmlŽymxƒzJsŽ{yz�|w{þ|86}7~7ø€ª �{©‚�e†ƒ~‚þƒ86 ‡ˆ7…7†ø„;Œ‹�ù޸ް �† ÷�ú�‘’ø‘9“*…{‰A_”‹{>”“€•†e9–*…•‰A_—‹e>—–€˜†r9™*…˜‰A_š‹r>š™ù�ø’° ›†1÷œú›�žø�‚Ÿ† 9 *…{ŠA_¡‹{>¡ €¢Ÿr9£*…¢ŠA_¤‹e>¤£€¥Ÿe9¦*…¥ŠA_§‹r>§¦ùœøž‚¨†19©}¨r‚ª†1Ç«ªeª ¬«{÷­ú¬®¯ø®9°*…©‰A_±‹{>±°€²©e9³*…²‰A_´‹e>´³€µ©e9¶*…µŠA_·‹r>·¶ù­ø¯9¸*…©‰A_¹‹{>¹¸€º©e9»*…ºŠA_¼‹e>¼»9½*…©ŠA_¾‹r>¾½ù­ø­ùœøœù�ø�= ¿‹þ¿86 ÂÃ7ÁøÀ;ËÊÌ;ÐÏÑ;ÈÇÉ;_ÍÎAzÄ{ùÒøÒ9ÓÁ9Ô}Á9ÕÔQÖÕ¼ ×ÖM¨ Ø×÷ÙúØÚÛøÚQÜÕQÝÜA�ÞÄH{=ßÞQàÕ…áIàƒâßẠãÝâ>ÊãùÙøÛ>ʉùÙøÙ= äÊAËåÇr>åä9æ}Ó9 ç‡ÕæQèçQéÕQêÕ9ëoèéêQìçQíÕQîÕ9ïoìíîQðçQñÕQòÕ9óoðñòƒôïëƒõóë öDôõ�÷öÆ øE÷>Íø=ùÍ�úëï�ûúó”üùû¸ ýüM÷þúýÿþøÿ=Í>ÍùþøþPëïó>ÏQÕ9Ó &rA_Ï=�A_ Ç{> = ÍA_ Çe>  = Çþ 867 7ø Az{ùøQA�{{=ˆ…IƒJQA�{e=ˆ…IƒJP Jþ 86+,ø!;324=$"Az-{ù5ø59 6Â$A�7-H{=87Q96Q:9ƒ;8:…<8. =(;<A�>-e=?>O @??QA6O BAAˆC8=Ž DBCA�E-{r=FEŽ GDF� H@GˆJ=8 K+JMJ…LK/9MHLQ N6PPQNNNN©OQ0MAIR2{>ROQS6A_T2e>TS9U}$€VU19WV9X:W{AgY2r>YX=Z2Q[Z>%[A*\%e=]\^]>\^Q_Z>'_Q`Z>)`ý86m,øa=ec=hf=kiPbehkAzn{ùpøpQqb rEqA�sn=tsOutt”vru w(vMA�xnH=yx…zwyQ{r |({3…}~|�~€}…„~A�€nK=�€O‚��Qƒb…„Õƒ�…o„ކ‚…�‡zŽˆ†‡P‰ˆJ>l‰ý86�,øŠ;’‘“=Œ‹Az�{ù”ø”9 •ÂŒA�–�=—–O˜——Q™•O š™™O ›˜˜Qœ•Q�œ ž(�MQŸ˜  (Ÿƒˆ¡ž Ž ¢›¡ƒ £š¢A�¤�e=¥¤O ¦¥¥A�§�{r=¨§Ž ©£¨� ª¦©9«ªSQ ¬•PP®¬¬¬¬©­®0«AI¯‘{>¯­Q°•Q±°A�²�H{=³²ˆ´±³ µ+´MJAg¶‘e>¶µ=·‘Q¸·>�¸A*¹�e=º¹»º>¹»Q¼·>޼ý86Ä,ø½=À¿=ÂÁP¾ÀÂùÅøÅQƾƒÇJÆPÈJÇMJ>ÃÈý8 ÀðЂ�‘Íà?ÊËfinaljÔ šBTSR ]sZ Í,]*---N{-( £J]Kà Ãf] gÓóg#$ Œ] vsfs vsvsfsfsÿstruct Grade { a: vec4, b: vec4, c: vec4, } struct VsOut { @builtin(position) position: vec4, @location(0) uv: vec2, } @group(0) @binding(0) var hdr: texture_2d; @group(0) @binding(1) var bloom: texture_2d; @group(0) @binding(2) var smp: sampler; @group(0) @binding(3) var grade: Grade; fn sharpened(uv: vec2) -> vec3 { let _e2 = textureDimensions(hdr); let o_2 = (vec2(1f) / vec2(_e2)); let _e10 = textureSampleLevel(hdr, smp, uv, 0f); let c_2 = _e10.xyz; let _e19 = textureSampleLevel(hdr, smp, (uv - vec2(0f, o_2.y)), 0f); let n = _e19.xyz; let _e28 = textureSampleLevel(hdr, smp, (uv + vec2(0f, o_2.y)), 0f); let s = _e28.xyz; let _e37 = textureSampleLevel(hdr, smp, (uv + vec2(o_2.x, 0f)), 0f); let e = _e37.xyz; let _e46 = textureSampleLevel(hdr, smp, (uv - vec2(o_2.x, 0f)), 0f); let w = _e46.xyz; let low = min(c_2, min(min(n, s), min(e, w))); let high = max(c_2, max(max(n, s), max(e, w))); return clamp((c_2 + ((c_2 - ((((n + s) + e) + w) * 0.25f)) * 0.8f)), low, high); } fn fringedGlow(uv_1: vec2) -> vec3 { var sum: vec3 = vec3(0f); var weight: vec3 = vec3(0f); var i_1: i32 = 0i; let _e7 = grade.b.w; let spread = ((uv_1 - vec2(0.5f)) * _e7); loop { let _e17 = i_1; if (_e17 < 6i) { } else { break; } { let _e20 = i_1; let t = (f32(_e20) / 5f); let w_1 = clamp(vec3((1.5f - (2f * t)), (1f - abs(((2f * t) - 1f))), ((2f * t) - 0.5f)), vec3(0f), vec3(1f)); let _e45 = sum; let _e53 = textureSampleLevel(bloom, smp, (uv_1 - (spread * (1f - t))), 0f); sum = (_e45 + (_e53.xyz * w_1)); let _e57 = weight; weight = (_e57 + w_1); } continuing { let _e60 = i_1; i_1 = (_e60 + 1i); } } let _e62 = sum; let _e63 = weight; return (_e62 / _e63); } fn lens(uv_2: vec2, shift: vec2) -> vec3 { let _e6 = textureSampleLevel(hdr, smp, (uv_2 - shift), 0f); let _e14 = textureSampleLevel(hdr, smp, (uv_2 - (shift * 0.5f)), 0f); let _e19 = textureSampleLevel(hdr, smp, uv_2, 0f); let fringed = vec3(_e6.x, _e14.y, _e19.z); let _e23 = textureDimensions(hdr); let shiftPx = length((shift * vec2(_e23))); let _e27 = sharpened(uv_2); let scene = mix(_e27, fringed, smoothstep(0.3f, 1f, shiftPx)); let _e32 = fringedGlow(uv_2); let _e36 = grade.a.x; return (scene + (_e32 * _e36)); } fn aces(x: vec3) -> vec3 { return clamp(((x * ((2.51f * x) + vec3(0.03f))) / ((x * ((2.43f * x) + vec3(0.59f))) + vec3(0.14f))), vec3(0f), vec3(1f)); } fn toSrgb(c_1: vec3) -> vec3 { return select(((1.055f * pow(c_1, vec3(0.41666666f))) - vec3(0.055f)), (c_1 * 12.92f), (c_1 <= vec3(0.0031308f))); } fn hash(p_1: vec2) -> f32 { return fract((sin(dot(p_1, vec2(12.9898f, 78.233f))) * 43758.547f)); } @vertex fn vs(@builtin(vertex_index) i: u32) -> VsOut { var p: array, 3> = array, 3>(vec2(-1f, -1f), vec2(3f, -1f), vec2(-1f, 3f)); var o: VsOut; let _e15 = p[i]; o.position = vec4(_e15, 0f, 1f); let _e22 = p[i].x; let _e27 = p[i].y; o.uv = (vec2((_e22 + 1f), (1f - _e27)) * 0.5f); let _e33 = o; return _e33; } @fragment fn fs(in: VsOut) -> @location(0) vec4 { var c: vec3; var o_1: vec3; let _e2 = textureDimensions(hdr); let dims = vec2(_e2); let aspect = (dims.x / dims.y); let _e10 = grade.c; let toWave = ((in.uv - _e10.xy) * vec2(aspect, 1f)); let dist = length(toWave); let _e20 = grade.c.z; let wave = ((dist - _e20) / 0.04f); let _e35 = grade.c.w; let bend = ((((toWave / vec2(max(dist, 0.0001f))) * exp((-(wave) * wave))) * _e35) * 0.025f); let uv_3 = (in.uv + (bend / vec2(aspect, 1f))); let fromCenter = (uv_3 - vec2(0.5f)); let q = (fromCenter * vec2(aspect, 1f)); let radius = (length(q) / length((vec2(aspect, 1f) * 0.5f))); let _e62 = grade.b.y; let _e67 = grade.b.y; let ramp = mix((0.2f * radius), 1f, clamp(((radius - _e62) / max((1f - _e67), 0.001f)), 0f, 1f)); let _e81 = grade.b.x; let _e84 = lens(uv_3, ((fromCenter * _e81) * ramp)); c = _e84; let _e86 = c; let _e90 = grade.a.y; c = (_e86 * exp2(_e90)); let _e93 = c; let _e101 = grade.a.z; c = (_e93 * mix(1f, smoothstep(1.35f, 0.2f, length(q)), _e101)); let _e105 = c; let _e106 = aces(_e105); let _e107 = toSrgb(_e106); o_1 = _e107; let _e114 = grade.b.z; let _e122 = hash((in.position.xy + vec2((fract((_e114 * 7.13f)) * 91f)))); let _e123 = o_1; let _e129 = grade.a.w; let _e135 = hash((in.position.yx * 1.31f)); o_1 = (_e123 + vec3((((_e122 - 0.5f) * _e129) + ((_e135 - 0.5f) / 255f)))); let _e143 = o_1; return vec4(_e143, 1f); }  0ˆÆ¹êGájvsmainO#version 300 es precision highp float; precision highp int; struct Grade { vec4 a; vec4 b; vec4 c; }; struct VsOut { vec4 position; vec2 uv; }; smooth out vec2 _vs2fs_location0; vec3 aces(vec3 x) { return clamp(((x * ((2.51 * x) + vec3(0.03))) / ((x * ((2.43 * x) + vec3(0.59))) + vec3(0.14))), vec3(0.0), vec3(1.0)); } vec3 toSrgb(vec3 c_1) { return mix(((1.055 * pow(c_1, vec3(0.41666666))) - vec3(0.055)), (c_1 * 12.92), lessThanEqual(c_1, vec3(0.0031308))); } float hash(vec2 p_1) { return fract((sin(dot(p_1, vec2(12.9898, 78.233))) * 43758.547)); } void main() { uint i = uint(gl_VertexID); vec2 p[3] = vec2[3](vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0)); VsOut o = VsOut(vec4(0.0), vec2(0.0)); vec2 _e15 = p[i]; o.position = vec4(_e15, 0.0, 1.0); float _e22 = p[i].x; float _e27 = p[i].y; o.uv = (vec2((_e22 + 1.0), (1.0 - _e27)) * 0.5); VsOut _e33 = o; gl_Position = _e33.position; _vs2fs_location0 = _e33.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fsmainì#version 300 es precision highp float; precision highp int; struct Grade { vec4 a; vec4 b; vec4 c; }; struct VsOut { vec4 position; vec2 uv; }; uniform highp sampler2D _group_0_binding_0_fs; uniform highp sampler2D _group_0_binding_1_fs; layout(std140) uniform Grade_block_0Fragment { Grade _group_0_binding_3_fs; }; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; vec3 sharpened(vec2 uv) { vec2 o_2 = (vec2(1.0) / vec2(uvec2(textureSize(_group_0_binding_0_fs, 0).xy))); vec4 _e10 = textureLod(_group_0_binding_0_fs, vec2(uv), 0.0); vec3 c_2 = _e10.xyz; vec4 _e19 = textureLod(_group_0_binding_0_fs, vec2((uv - vec2(0.0, o_2.y))), 0.0); vec3 n = _e19.xyz; vec4 _e28 = textureLod(_group_0_binding_0_fs, vec2((uv + vec2(0.0, o_2.y))), 0.0); vec3 s = _e28.xyz; vec4 _e37 = textureLod(_group_0_binding_0_fs, vec2((uv + vec2(o_2.x, 0.0))), 0.0); vec3 e = _e37.xyz; vec4 _e46 = textureLod(_group_0_binding_0_fs, vec2((uv - vec2(o_2.x, 0.0))), 0.0); vec3 w = _e46.xyz; vec3 low = min(c_2, min(min(n, s), min(e, w))); vec3 high = max(c_2, max(max(n, s), max(e, w))); return clamp((c_2 + ((c_2 - ((((n + s) + e) + w) * 0.25)) * 0.8)), low, high); } vec3 fringedGlow(vec2 uv_1) { vec3 sum = vec3(0.0); vec3 weight = vec3(0.0); int i_1 = 0; float _e7 = _group_0_binding_3_fs.b.w; vec2 spread = ((uv_1 - vec2(0.5)) * _e7); bool loop_init = true; while(true) { if (!loop_init) { int _e60 = i_1; i_1 = (_e60 + 1); } loop_init = false; int _e17 = i_1; if ((_e17 < 6)) { } else { break; } { int _e20 = i_1; float t = (float(_e20) / 5.0); vec3 w_1 = clamp(vec3((1.5 - (2.0 * t)), (1.0 - abs(((2.0 * t) - 1.0))), ((2.0 * t) - 0.5)), vec3(0.0), vec3(1.0)); vec3 _e45 = sum; vec4 _e53 = textureLod(_group_0_binding_1_fs, vec2((uv_1 - (spread * (1.0 - t)))), 0.0); sum = (_e45 + (_e53.xyz * w_1)); vec3 _e57 = weight; weight = (_e57 + w_1); } } vec3 _e62 = sum; vec3 _e63 = weight; return (_e62 / _e63); } vec3 lens(vec2 uv_2, vec2 shift) { vec4 _e6 = textureLod(_group_0_binding_0_fs, vec2((uv_2 - shift)), 0.0); vec4 _e14 = textureLod(_group_0_binding_0_fs, vec2((uv_2 - (shift * 0.5))), 0.0); vec4 _e19 = textureLod(_group_0_binding_0_fs, vec2(uv_2), 0.0); vec3 fringed = vec3(_e6.x, _e14.y, _e19.z); float shiftPx = length((shift * vec2(uvec2(textureSize(_group_0_binding_0_fs, 0).xy)))); vec3 _e27 = sharpened(uv_2); vec3 scene = mix(_e27, fringed, smoothstep(0.3, 1.0, shiftPx)); vec3 _e32 = fringedGlow(uv_2); float _e36 = _group_0_binding_3_fs.a.x; return (scene + (_e32 * _e36)); } vec3 aces(vec3 x) { return clamp(((x * ((2.51 * x) + vec3(0.03))) / ((x * ((2.43 * x) + vec3(0.59))) + vec3(0.14))), vec3(0.0), vec3(1.0)); } vec3 toSrgb(vec3 c_1) { return mix(((1.055 * pow(c_1, vec3(0.41666666))) - vec3(0.055)), (c_1 * 12.92), lessThanEqual(c_1, vec3(0.0031308))); } float hash(vec2 p_1) { return fract((sin(dot(p_1, vec2(12.9898, 78.233))) * 43758.547)); } void main() { VsOut in_ = VsOut(gl_FragCoord, _vs2fs_location0); vec3 c = vec3(0.0); vec3 o_1 = vec3(0.0); vec2 dims = vec2(uvec2(textureSize(_group_0_binding_0_fs, 0).xy)); float aspect = (dims.x / dims.y); vec4 _e10 = _group_0_binding_3_fs.c; vec2 toWave = ((in_.uv - _e10.xy) * vec2(aspect, 1.0)); float dist = length(toWave); float _e20 = _group_0_binding_3_fs.c.z; float wave = ((dist - _e20) / 0.04); float _e35 = _group_0_binding_3_fs.c.w; vec2 bend = ((((toWave / vec2(max(dist, 0.0001))) * exp((-(wave) * wave))) * _e35) * 0.025); vec2 uv_3 = (in_.uv + (bend / vec2(aspect, 1.0))); vec2 fromCenter = (uv_3 - vec2(0.5)); vec2 q = (fromCenter * vec2(aspect, 1.0)); float radius = (length(q) / length((vec2(aspect, 1.0) * 0.5))); float _e62 = _group_0_binding_3_fs.b.y; float _e67 = _group_0_binding_3_fs.b.y; float ramp = mix((0.2 * radius), 1.0, clamp(((radius - _e62) / max((1.0 - _e67), 0.001)), 0.0, 1.0)); float _e81 = _group_0_binding_3_fs.b.x; vec3 _e84 = lens(uv_3, ((fromCenter * _e81) * ramp)); c = _e84; vec3 _e86 = c; float _e90 = _group_0_binding_3_fs.a.y; c = (_e86 * exp2(_e90)); vec3 _e93 = c; float _e101 = _group_0_binding_3_fs.a.z; c = (_e93 * mix(1.0, smoothstep(1.35, 0.2, length(q)), _e101)); vec3 _e105 = c; vec3 _e106 = aces(_e105); vec3 _e107 = toSrgb(_e106); o_1 = _e107; float _e114 = _group_0_binding_3_fs.b.z; float _e122 = hash((in_.position.xy + vec2((fract((_e114 * 7.13)) * 91.0)))); vec3 _e123 = o_1; float _e129 = _group_0_binding_3_fs.a.w; float _e135 = hash((in_.position.yx * 1.31)); o_1 = (_e123 + vec3((((_e122 - 0.5) * _e129) + ((_e135 - 0.5) / 255.0)))); vec3 _e143 = o_1; _fs2p_location0 = vec4(_e143, 1.0); return; }  03€.+Ý�Grade_block_0Fragment_group_0_binding_0_fs_group_0_binding_1_fsvsvsfsfs// language: metal2.2 #include #include using metal::uint; struct Grade { metal::float4 a; metal::float4 b; metal::float4 c; }; struct VsOut { metal::float4 position; metal::float2 uv; char _pad2[8]; }; struct type_6 { metal::float2 inner[3]; }; metal::float3 sharpened( metal::float2 uv, metal::texture2d hdr, metal::sampler smp ) { metal::float2 o_2 = metal::float2(1.0) / static_cast(metal::uint2(hdr.get_width(), hdr.get_height())); metal::float4 _e10 = hdr.sample(smp, uv, metal::level(0.0)); metal::float3 c_2 = _e10.xyz; metal::float4 _e19 = hdr.sample(smp, uv - metal::float2(0.0, o_2.y), metal::level(0.0)); metal::float3 n = _e19.xyz; metal::float4 _e28 = hdr.sample(smp, uv + metal::float2(0.0, o_2.y), metal::level(0.0)); metal::float3 s = _e28.xyz; metal::float4 _e37 = hdr.sample(smp, uv + metal::float2(o_2.x, 0.0), metal::level(0.0)); metal::float3 e = _e37.xyz; metal::float4 _e46 = hdr.sample(smp, uv - metal::float2(o_2.x, 0.0), metal::level(0.0)); metal::float3 w = _e46.xyz; metal::float3 low = metal::min(c_2, metal::min(metal::min(n, s), metal::min(e, w))); metal::float3 high = metal::max(c_2, metal::max(metal::max(n, s), metal::max(e, w))); return metal::clamp(c_2 + ((c_2 - ((((n + s) + e) + w) * 0.25)) * 0.8), low, high); } metal::float3 fringedGlow( metal::float2 uv_1, metal::texture2d bloom, metal::sampler smp, constant Grade& grade ) { metal::float3 sum = metal::float3(0.0); metal::float3 weight = metal::float3(0.0); int i_1 = 0; float _e7 = grade.b.w; metal::float2 spread = (uv_1 - metal::float2(0.5)) * _e7; uint2 loop_bound = uint2(4294967295u); bool loop_init = true; while(true) { if (metal::all(loop_bound == uint2(0u))) { break; } loop_bound -= uint2(loop_bound.y == 0u, 1u); if (!loop_init) { int _e60 = i_1; i_1 = as_type(as_type(_e60) + as_type(1)); } loop_init = false; int _e17 = i_1; if (_e17 < 6) { } else { break; } { int _e20 = i_1; float t = static_cast(_e20) / 5.0; metal::float3 w_1 = metal::clamp(metal::float3(1.5 - (2.0 * t), 1.0 - metal::abs((2.0 * t) - 1.0), (2.0 * t) - 0.5), metal::float3(0.0), metal::float3(1.0)); metal::float3 _e45 = sum; metal::float4 _e53 = bloom.sample(smp, uv_1 - (spread * (1.0 - t)), metal::level(0.0)); sum = _e45 + (_e53.xyz * w_1); metal::float3 _e57 = weight; weight = _e57 + w_1; } } metal::float3 _e62 = sum; metal::float3 _e63 = weight; return _e62 / _e63; } metal::float3 lens( metal::float2 uv_2, metal::float2 shift, metal::texture2d hdr, metal::texture2d bloom, metal::sampler smp, constant Grade& grade ) { metal::float4 _e6 = hdr.sample(smp, uv_2 - shift, metal::level(0.0)); metal::float4 _e14 = hdr.sample(smp, uv_2 - (shift * 0.5), metal::level(0.0)); metal::float4 _e19 = hdr.sample(smp, uv_2, metal::level(0.0)); metal::float3 fringed = metal::float3(_e6.x, _e14.y, _e19.z); float shiftPx = metal::length(shift * static_cast(metal::uint2(hdr.get_width(), hdr.get_height()))); metal::float3 _e27 = sharpened(uv_2, hdr, smp); metal::float3 scene = metal::mix(_e27, fringed, metal::smoothstep(0.3, 1.0, shiftPx)); metal::float3 _e32 = fringedGlow(uv_2, bloom, smp, grade); float _e36 = grade.a.x; return scene + (_e32 * _e36); } metal::float3 aces( metal::float3 x ) { return metal::clamp((x * ((2.51 * x) + metal::float3(0.03))) / ((x * ((2.43 * x) + metal::float3(0.59))) + metal::float3(0.14)), metal::float3(0.0), metal::float3(1.0)); } metal::float3 toSrgb( metal::float3 c_1 ) { return metal::select((1.055 * metal::pow(c_1, metal::float3(0.41666666))) - metal::float3(0.055), c_1 * 12.92, c_1 <= metal::float3(0.0031308)); } float hash( metal::float2 p_1 ) { return metal::fract(metal::sin(metal::dot(p_1, metal::float2(12.9898, 78.233))) * 43758.547); } struct vsInput { }; struct vsOutput { metal::float4 position [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vsOutput vs( uint i [[vertex_id]] ) { type_6 p = type_6 {{metal::float2(-1.0, -1.0), metal::float2(3.0, -1.0), metal::float2(-1.0, 3.0)}}; VsOut o = {}; metal::float2 _e15 = p.inner[metal::min(unsigned(i), 2u)]; o.position = metal::float4(_e15, 0.0, 1.0); float _e22 = p.inner[metal::min(unsigned(i), 2u)].x; float _e27 = p.inner[metal::min(unsigned(i), 2u)].y; o.uv = metal::float2(_e22 + 1.0, 1.0 - _e27) * 0.5; VsOut _e33 = o; const auto _tmp = _e33; return vsOutput { _tmp.position, _tmp.uv }; } struct fsInput { metal::float2 uv_3 [[user(loc0), center_perspective]]; }; struct fsOutput { metal::float4 member_1 [[color(0)]]; }; fragment fsOutput fs( fsInput varyings_1 [[stage_in]] , metal::float4 position [[position]] , metal::texture2d hdr [[texture(0)]] , metal::texture2d bloom [[texture(1)]] , metal::sampler smp [[sampler(0)]] , constant Grade& grade [[buffer(0)]] ) { const VsOut in = { position, varyings_1.uv_3 }; metal::float3 c = {}; metal::float3 o_1 = {}; metal::float2 dims = static_cast(metal::uint2(hdr.get_width(), hdr.get_height())); float aspect = dims.x / dims.y; metal::float4 _e10 = grade.c; metal::float2 toWave = (in.uv - _e10.xy) * metal::float2(aspect, 1.0); float dist = metal::length(toWave); float _e20 = grade.c.z; float wave = (dist - _e20) / 0.04; float _e35 = grade.c.w; metal::float2 bend = (((toWave / metal::float2(metal::max(dist, 0.0001))) * metal::exp(-(wave) * wave)) * _e35) * 0.025; metal::float2 uv_3 = in.uv + (bend / metal::float2(aspect, 1.0)); metal::float2 fromCenter = uv_3 - metal::float2(0.5); metal::float2 q = fromCenter * metal::float2(aspect, 1.0); float radius = metal::length(q) / metal::length(metal::float2(aspect, 1.0) * 0.5); float _e62 = grade.b.y; float _e67 = grade.b.y; float ramp = metal::mix(0.2 * radius, 1.0, metal::clamp((radius - _e62) / metal::max(1.0 - _e67, 0.001), 0.0, 1.0)); float _e81 = grade.b.x; metal::float3 _e84 = lens(uv_3, (fromCenter * _e81) * ramp, hdr, bloom, smp, grade); c = _e84; metal::float3 _e86 = c; float _e90 = grade.a.y; c = _e86 * metal::exp2(_e90); metal::float3 _e93 = c; float _e101 = grade.a.z; c = _e93 * metal::mix(1.0, metal::smoothstep(1.35, 0.2, metal::length(q)), _e101); metal::float3 _e105 = c; metal::float3 _e106 = aces(_e105); metal::float3 _e107 = toSrgb(_e106); o_1 = _e107; float _e114 = grade.b.z; float _e122 = hash(in.position.xy + metal::float2(metal::fract(_e114 * 7.13) * 91.0)); metal::float3 _e123 = o_1; float _e129 = grade.a.w; float _e135 = hash(in.position.yx * 1.31); o_1 = _e123 + metal::float3(((_e122 - 0.5) * _e129) + ((_e135 - 0.5) / 255.0)); metal::float3 _e143 = o_1; return fsOutput { metal::float4(_e143, 1.0) }; }  03€.+Ý�vsmain0struct Grade { float4 a; float4 b; float4 c; }; struct VsOut { float4 position; float2 uv; }; static const float2 _89[3] = { float2(-1.0f, -1.0f), float2(3.0f, -1.0f), float2(-1.0f, 3.0f) }; static const VsOut _95 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 uv; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 uv : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { VsOut o = _95; o.position = float4(_89[min(uint(gl_VertexIndex), 2u)], 0.0f, 1.0f); o.uv = float2(_89[min(uint(gl_VertexIndex), 2u)].x + 1.0f, 1.0f - _89[min(uint(gl_VertexIndex), 2u)].y) * 0.5f; gl_Position = o.position; uv = o.uv; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.uv = uv; return stage_output; } fsmaintstruct Grade { float4 a; float4 b; float4 c; }; struct VsOut { float4 position; float2 uv; }; cbuffer grade : register(b0) { Grade grade_1_m0 : packoffset(c0); }; Texture2D hdr : register(t0); Texture2D bloom : register(t1); SamplerState smp : register(s0); static float4 gl_FragCoord; static float2 uv; static float4 _269; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _269 : SV_Target0; }; uint2 spvTextureSize(Texture2D Tex, uint Level, out uint Param) { uint2 ret; Tex.GetDimensions(Level, ret.x, ret.y, Param); return ret; } float3 sharpened(float2 uv_1) { uint _37_dummy_parameter; float2 _39 = float2(1.0f, 1.0f) / float2(spvTextureSize(hdr, 0u, _37_dummy_parameter)); float3 _43 = hdr.SampleLevel(smp, uv_1, 0.0f).xyz; float3 _49 = hdr.SampleLevel(smp, uv_1 - float2(0.0f, _39.y), 0.0f).xyz; float3 _55 = hdr.SampleLevel(smp, uv_1 + float2(0.0f, _39.y), 0.0f).xyz; float3 _61 = hdr.SampleLevel(smp, uv_1 + float2(_39.x, 0.0f), 0.0f).xyz; float3 _67 = hdr.SampleLevel(smp, uv_1 - float2(_39.x, 0.0f), 0.0f).xyz; return clamp(_43 + ((_43 - ((((_49 + _55) + _61) + _67) * 0.25f)) * 0.800000011920928955078125f), min(_43, min(min(_49, _55), min(_61, _67))), max(_43, max(max(_49, _55), max(_61, _67)))); } float3 fringedGlow(float2 uv_1) { float3 sum = float3(0.0f, 0.0f, 0.0f); float3 weight = float3(0.0f, 0.0f, 0.0f); int i = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); float2 _113 = (uv_1 - float2(0.5f, 0.5f)) * grade_1_m0.b.w; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < 6)) { break; } float _143 = float(i) / 5.0f; float3 _153 = clamp(float3(1.5f - (2.0f * _143), 1.0f - abs((2.0f * _143) - 1.0f), (2.0f * _143) - 0.5f), float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)); sum += (bloom.SampleLevel(smp, uv_1 - (_113 * (1.0f - _143)), 0.0f).xyz * _153); weight += _153; i++; continue; } return sum / weight; } float3 lens(float2 uv_1, float2 shift) { uint _194_dummy_parameter; float _199 = smoothstep(0.300000011920928955078125f, 1.0f, length(shift * float2(spvTextureSize(hdr, 0u, _194_dummy_parameter)))); return lerp(sharpened(uv_1), float3(hdr.SampleLevel(smp, uv_1 - shift, 0.0f).x, hdr.SampleLevel(smp, uv_1 - (shift * 0.5f), 0.0f).y, hdr.SampleLevel(smp, uv_1, 0.0f).z), float3(_199, _199, _199)) + (fringedGlow(uv_1) * grade_1_m0.a.x); } float3 aces(float3 x) { return clamp((x * ((x * 2.5099999904632568359375f) + float3(0.02999999932944774627685546875f, 0.02999999932944774627685546875f, 0.02999999932944774627685546875f))) / ((x * ((x * 2.4300000667572021484375f) + float3(0.589999973773956298828125f, 0.589999973773956298828125f, 0.589999973773956298828125f))) + float3(0.14000000059604644775390625f, 0.14000000059604644775390625f, 0.14000000059604644775390625f)), float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)); } float3 toSrgb(float3 c) { float3 _243 = (pow(c, float3(0.4166666567325592041015625f, 0.4166666567325592041015625f, 0.4166666567325592041015625f)) * 1.05499994754791259765625f) - float3(0.054999999701976776123046875f, 0.054999999701976776123046875f, 0.054999999701976776123046875f); float3 _244 = c * 12.9200000762939453125f; bool3 _246 = bool3(c.x <= float3(0.003130800090730190277099609375f, 0.003130800090730190277099609375f, 0.003130800090730190277099609375f).x, c.y <= float3(0.003130800090730190277099609375f, 0.003130800090730190277099609375f, 0.003130800090730190277099609375f).y, c.z <= float3(0.003130800090730190277099609375f, 0.003130800090730190277099609375f, 0.003130800090730190277099609375f).z); return float3(_246.x ? _244.x : _243.x, _246.y ? _244.y : _243.y, _246.z ? _244.z : _243.z); } float hash(float2 p) { return frac(sin(dot(p, float2(12.98980045318603515625f, 78.233001708984375f))) * 43758.546875f); } void frag_main() { float3 c = float3(0.0f, 0.0f, 0.0f); float3 o = float3(0.0f, 0.0f, 0.0f); VsOut _262 = { gl_FragCoord, uv }; uint _292_dummy_parameter; float2 _293 = float2(spvTextureSize(hdr, 0u, _292_dummy_parameter)); float _296 = _293.x / _293.y; float2 _304 = (_262.uv - grade_1_m0.c.xy) * float2(_296, 1.0f); float _305 = length(_304); float _309 = (_305 - grade_1_m0.c.z) / 0.039999999105930328369140625f; float _310 = max(_305, 9.9999997473787516355514526367188e-05f); float2 _324 = _262.uv + (((((_304 / float2(_310, _310)) * exp((-_309) * _309)) * grade_1_m0.c.w) * 0.02500000037252902984619140625f) / float2(_296, 1.0f)); float2 _325 = _324 - float2(0.5f, 0.5f); float2 _327 = _325 * float2(_296, 1.0f); float _332 = length(_327) / length(float2(_296, 1.0f) * 0.5f); c = lens(_324, (_325 * grade_1_m0.b.x) * lerp(0.20000000298023223876953125f * _332, 1.0f, clamp((_332 - grade_1_m0.b.y) / max(1.0f - grade_1_m0.b.y, 0.001000000047497451305389404296875f), 0.0f, 1.0f))); c *= exp2(grade_1_m0.a.y); c *= lerp(1.0f, smoothstep(1.35000002384185791015625f, 0.20000000298023223876953125f, length(_327)), grade_1_m0.a.z); o = toSrgb(aces(c)); float _370 = frac(grade_1_m0.b.z * 7.13000011444091796875f) * 91.0f; float _385 = ((hash(_262.position.xy + float2(_370, _370)) - 0.5f) * grade_1_m0.a.w) + ((hash(_262.position.yx * 1.309999942779541015625f) - 0.5f) / 255.0f); o += float3(_385, _385, _385); _269 = float4(o, 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._269 = _269; return stage_output; }  03€.+Ý�HSLTGrade0aÿÿÿÿbÿÿÿÿc ÿÿÿÿ grade_block0gradehdrÿÿÿÿbloomÿÿÿÿsmpÿÿÿÿvsvsfsfs $#´2 GLSL.std.450 vs  ?fs8;>?H#H#H# H #H #G G"G!G"G!G"G!G"G!GH#G *G  G G8 G;G>    +      ;; ; ;! +€?,++ €>+!ÍÌL?# + $( Y+[?,\[[, ]+^+_+` @+a@+bÀ?, c+d f i l m+ n v#wxw,#y$$+ zÿÿÿÿ,#{zz!® +³š™™>!Ò +Ó×£ @+Ô�Âõ<, ÕÔÔÔ+Ö…@+×= ?, Ø×××+Ù)\>, ÚÙÙÙ+èUUÕ>, éèèè+ê= ‡?+ë®Ga=, ìëëë+íR¸NA+î.M;, ïîîîõw!û+ü9ÖOA+ýLwœB,þüý+ÿŒî*G  ;  ;    ;  !+€¿,+@@,,,    .   +  # 1 9;98 <;<;; >+D ×#=+E·Ñ8+FÍÌÌ<+GÍÌL>+Hoƒ:+IÍ̬?+Jö(ä@+K¶B+L®§?+MC. O. Q6 7ø==ù"ø"g#%$p&%ˆ'&V()X*)O +**Q,'P-,ƒ.-V(/X0/.O 100Q2'P32�43V(5X654O 766Q8'P98�:9V(;X<;:O =<<Q>'P?>ƒ@?V(AXBA@O CBB  D%17  E%=C  F%DE  G%+F  H(17  I(=C  J(HI  K(+J� L17� ML=� NMCŽ ON ƒ P+OŽ QP!� R+Q  S+RGKþS86 V7UøT;fe];fg];ih^;v|{=W=XAYZ$ùjøjƒkU\AmoZn =poŽqkpùrørösuù}ø}=#~|ªxy~›w€÷�ú€s�ø�Q ‚~ªwƒ‚$© „ƒn$P#…„n‚#†~…>|†ùtøt=‡h±wˆ‡_÷‰úˆ‰ŠøŠùsø‰ù‹ø‹=�hoŽ�ˆ�Ž`…�a�ƒ‘b�…’a�ƒ“’ ”“ƒ•”…–a�ƒ—–[P ˜‘•—  ™+˜]c= šeƒ›�Žœq›ƒ�UœV(žWXXŸž�O  ŸŸ… ¡ ™� ¢š¡>e¢= £g� ¤£™>g¤ùŒøŒùuøu=¥h€¦¥d>h¦ùrøs= §e= ¨gˆ ©§¨þ©86 ­®7«7¬øª=¯=°=±AY²$ù´ø´ƒµ«¬V(¶¯±X·¶µQ¸·Ž¹¬[ƒº«¹V(»¯±X¼»ºQ½¼V(¾¯±X¿¾«QÀ¿P Á¸½Àg#¯$pÃÂ…Ĭà ÅBÄ9 Æ« Ç1³ÅP ÉÇÇÇ  È.ÆÁÉ9 ÊV«Am˲$$=ÌËŽ ÍÊÌ� ÎÈÍþÎ86 ÑÒ7 ÐøÏùÛøÛŽ ÜÐÓ� ÝÜÕ… ÞÐÝŽ ßÐÖ� àߨ… áÐà� âáÚˆ ãÞâ  ä+ã]cþä86 çÒ7 æøåùðøð  ñæéŽ òñêƒ óòìŽ ôæí¼õöæï© ÷öôóþ÷86úû7ùøøùø”ùþ  …ÿ  þ86 ø;;= ùø  &A= P! A"$>"!  $&A#%$$=&%�'&  (&A#)(n=*)ƒ+*P,'+Ž-,[A.n>.-= /Q0/> 0A12 n=3243>24Q5/> 5ý86?ø6;fNO;fPQ=:8==;P 7:==@=A=BAYC$ùRøRg#S@$pTSQUTQVTˆWUVQX7AlYC=ZYO[ZZƒ\X[P]W…^\] _B^Am`C=a`ƒb_aˆcbD d(_EPeddˆf^egc…hgc ihŽjfiAmkC =lkŽmjlŽnmFQo7PpWˆqnp�roqƒsr\PtW…ust vBuPwWŽxw[ yBxˆzvy…{GzAm|Cnn=}|ƒ~z}AmCnn=€ƒ�€ ‚(�Hˆƒ~‚ „+ƒ ….{„Am†Cn$=‡†Žˆs‡Ž‰ˆ…9 Š­r‰>NŠ= ‹NAmŒC$n=�Œ Ž�Ž �‹Ž>N�= �N ‘Bu ’1IG‘Am“C$=”“ •.’”Ž –�•>N–= —N9 ˜Ñ—9 ™ç˜>P™Qš7O›ššAmœCn=�œ…ž�J Ÿ ž… ŸKP¡  �¢›¡9£ú¢= ¤Pƒ¥£[Am¦C$ =§¦…¨¥§Q©7Oª©©Ž«ªL9¬ú«ƒ­¬[ˆ®­M�¯¨®P °¯¯¯� ±¤°>P±= ²PP³²>>³ý8 0ˆÆ¹êGájÊËshadejÔ‚ýBTSR ff]Ø [<]¸<»<N =»* Äg]!hØ" ùŠ]V‹ûQ�'0 x½] vsfs vsvsfsfsOstruct Scene { view: vec4, frame: vec4, wall: vec4, light: vec4, build: vec4, hits: vec4, strike: vec4, albedo: vec4, glow: vec4, deep: vec4, camera: vec4, shard: vec4, } struct VsOut { @builtin(position) position: vec4, @location(0) uv: vec2, } @group(0) @binding(0) var scene: Scene; @group(0) @binding(1) var relief: texture_2d; @group(0) @binding(2) var shadowMap: texture_2d; @group(0) @binding(3) var smp: sampler; fn heightAt(c: vec2, size: vec2) -> f32 { let _e10 = textureLoad(relief, clamp(c, vec2(0i), (size - vec2(1i))), 0i); return _e10.x; } fn noise(p_1: vec2) -> f32 { return fract((sin(dot(p_1, vec2(12.9898f, 78.233f))) * 43758.547f)); } fn heightNear(p_2: vec2, size_1: vec2) -> f32 { let _e10 = textureSampleLevel(relief, smp, ((p_2 + vec2(0.5f)) / vec2(size_1)), 0f); return _e10.x; } fn lit(c_1: vec2, h: f32, size_2: vec2, jitter: f32) -> f32 { var open: f32 = 1f; var d: f32; var i_1: i32 = 0i; let _e6 = scene.light; let l = _e6.xyz; let flat = max(length(l.xy), 0.001f); let dir = (l.xy / vec2(flat)); let climb = (l.z / flat); let dpr = scene.view.w; d = ((0.7f * dpr) * (0.5f + jitter)); loop { let _e31 = i_1; if (_e31 < 32i) { } else { break; } { let _e35 = d; let _e38 = heightNear((vec2(c_1) + (dir * _e35)), size_2); let _e39 = d; let over = (_e38 - (h + (_e39 * climb))); let _e43 = open; let _e46 = d; open = min(_e43, clamp((1f - (over / ((0.6f * dpr) + (_e46 * 0.1f)))), 0f, 1f)); let _e57 = d; let _e60 = d; d = (_e57 + ((0.7f * dpr) + (_e60 * 0.05f))); } continuing { let _e66 = i_1; i_1 = (_e66 + 1i); } } let _e68 = open; return _e68; } fn spiral(i_2: i32, n: i32, turn: f32) -> vec2 { let r = sqrt(((f32(i_2) + 0.5f) / f32(n))); let a = ((f32(i_2) * 2.3999631f) + (turn * 6.2831855f)); return (r * vec2(cos(a), sin(a))); } fn castShadow(px: vec2) -> f32 { var height: f32 = 0f; var found: f32 = 0f; var i_3: i32 = 0i; var cover: f32 = 0f; var i_4: i32 = 0i; let _e2 = textureDimensions(shadowMap); let size_3 = vec2(_e2); let dpr_1 = scene.view.w; let _e10 = scene.light; let l_1 = _e10.xyz; let along = normalize((l_1.xy + vec2(0.00001f, 0f))); let across = vec2(-(along.y), along.x); let stretch = (1f / max(l_1.z, 0.25f)); let _e27 = noise(px); let search = (18f * dpr_1); loop { let _e36 = i_3; if (_e36 < 12i) { } else { break; } { let _e39 = i_3; let _e41 = spiral(_e39, 12i, _e27); let o_1 = (_e41 * search); let t = textureLoad(shadowMap, clamp(vec2(((px + ((along * o_1.x) * stretch)) + (across * o_1.y))), vec2(0i), (vec2(size_3) - vec2(1i))), 0i); if (t.x > 0.5f) { let _e64 = height; let _e71 = scene.camera.x; height = (_e64 + ((1f - t.y) * _e71)); let _e74 = found; found = (_e74 + 1f); } } continuing { let _e78 = i_3; i_3 = (_e78 + 1i); } } let _e80 = found; if (_e80 == 0f) { return 0f; } let _e84 = height; let _e85 = found; let _e92 = scene.view.z; let radius = max((((_e84 / _e85) * 0.05f) * _e92), (0.75f * dpr_1)); loop { let _e101 = i_4; if (_e101 < 24i) { } else { break; } { let _e104 = i_4; let _e106 = spiral(_e104, 24i, _e27); let o_2 = (_e106 * radius); let _e108 = cover; let _e120 = textureSampleLevel(shadowMap, smp, (((px + ((along * o_2.x) * stretch)) + (across * o_2.y)) / size_3), 0f); cover = (_e108 + _e120.x); } continuing { let _e124 = i_4; i_4 = (_e124 + 1i); } } let _e126 = cover; return (_e126 / 24f); } @vertex fn vs(@builtin(vertex_index) i: u32) -> VsOut { var p: array, 3> = array, 3>(vec2(-1f, -1f), vec2(3f, -1f), vec2(-1f, 3f)); var o: VsOut; let _e15 = p[i]; o.position = vec4(_e15, 1f, 1f); let _e22 = p[i].x; let _e27 = p[i].y; o.uv = (vec2((_e22 + 1f), (1f - _e27)) * 0.5f); let _e33 = o; return _e33; } @fragment fn fs(in: VsOut) -> @location(0) vec4 { var slope: vec2; var color: vec3; let _e2 = textureDimensions(relief); let size_4 = vec2(_e2); let c_2 = vec2(in.position.xy); let t_1 = textureLoad(relief, c_2, 0i); let unitPx = scene.view.z; let _e18 = scene.frame; let q = ((in.position.xy - _e18.xy) / vec2(unitPx)); let r_1 = length(q); let _e28 = heightAt((c_2 + vec2(1i, 0i)), size_4); let _e33 = heightAt((c_2 - vec2(1i, 0i)), size_4); let hx = (_e28 - _e33); let _e39 = heightAt((c_2 + vec2(0i, 1i)), size_4); let _e44 = heightAt((c_2 - vec2(0i, 1i)), size_4); let hy = (_e39 - _e44); slope = (vec2(hx, hy) * 0.5f); let _e50 = slope; let steep = length(_e50); if (steep > 3f) { let _e54 = slope; slope = (_e54 * (3f / steep)); } let _e58 = slope; let n_1 = normalize(vec3(-(_e58), 1f)); let _e65 = scene.light; let l_2 = _e65.xyz; let _e69 = castShadow(in.position.xy); let _e73 = scene.light.w; let shade = (_e69 * _e73); let _e85 = noise((in.position.xy + vec2(31f, 7f))); let _e86 = lit(c_2, t_1.x, size_4, _e85); let sun = (max(dot(n_1, l_2), 0f) * _e86); let _e91 = scene.camera.w; let key = ((_e91 * sun) * (1f - shade)); let sky = ((0.26f * (0.55f + (0.45f * n_1.z))) * (1f - (0.35f * shade))); let tint = (0.93f + (0.07f * t_1.z)); let _e115 = scene.albedo; color = ((_e115.xyz * tint) * (sky + key)); let _e121 = color; color = (_e121 * (1f - (0.92f * t_1.y))); let _e131 = scene.wall.x; let _e135 = scene.build.z; let hole = (_e131 * _e135); let _e144 = scene.deep.w; let heat = exp((-(max((r_1 - hole), 0f)) / max(_e144, 0.001f))); let _e149 = color; let _e152 = scene.glow; let _e157 = scene.glow.w; color = (_e149 + (((_e152.xyz * _e157) * t_1.y) * (0.08f + heat))); let _e167 = scene.deep; let depth = (_e167.xyz * (0.12f + (0.88f * smoothstep((hole * 0.35f), (hole * 1.05f), r_1)))); let _e179 = color; color = mix(depth, _e179, t_1.w); let _e182 = color; return vec4(_e182, 1f); }  À°À—h“õWÊvsmainŠ#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct VsOut { vec4 position; vec2 uv; }; smooth out vec2 _vs2fs_location0; float noise(vec2 p_1) { return fract((sin(dot(p_1, vec2(12.9898, 78.233))) * 43758.547)); } vec2 spiral(int i_2, int n, float turn) { float r = sqrt(((float(i_2) + 0.5) / float(n))); float a = ((float(i_2) * 2.3999631) + (turn * 6.2831855)); return (r * vec2(cos(a), sin(a))); } void main() { uint i = uint(gl_VertexID); vec2 p[3] = vec2[3](vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0)); VsOut o = VsOut(vec4(0.0), vec2(0.0)); vec2 _e15 = p[i]; o.position = vec4(_e15, 1.0, 1.0); float _e22 = p[i].x; float _e27 = p[i].y; o.uv = (vec2((_e22 + 1.0), (1.0 - _e27)) * 0.5); VsOut _e33 = o; gl_Position = _e33.position; _vs2fs_location0 = _e33.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fsmainï#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct VsOut { vec4 position; vec2 uv; }; layout(std140) uniform Scene_block_0Fragment { Scene _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; uniform highp sampler2D _group_0_binding_2_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float heightAt(ivec2 c, ivec2 size) { vec4 _e10 = texelFetch(_group_0_binding_1_fs, min(max(c, ivec2(0)), (size - ivec2(1))), 0); return _e10.x; } float noise(vec2 p_1) { return fract((sin(dot(p_1, vec2(12.9898, 78.233))) * 43758.547)); } float heightNear(vec2 p_2, ivec2 size_1) { vec4 _e10 = textureLod(_group_0_binding_1_fs, vec2(((p_2 + vec2(0.5)) / vec2(size_1))), 0.0); return _e10.x; } float lit(ivec2 c_1, float h, ivec2 size_2, float jitter) { float open = 1.0; float d = 0.0; int i_1 = 0; vec4 _e6 = _group_0_binding_0_fs.light; vec3 l = _e6.xyz; float flat_ = max(length(l.xy), 0.001); vec2 dir = (l.xy / vec2(flat_)); float climb = (l.z / flat_); float dpr = _group_0_binding_0_fs.view.w; d = ((0.7 * dpr) * (0.5 + jitter)); bool loop_init = true; while(true) { if (!loop_init) { int _e66 = i_1; i_1 = (_e66 + 1); } loop_init = false; int _e31 = i_1; if ((_e31 < 32)) { } else { break; } { float _e35 = d; float _e38 = heightNear((vec2(c_1) + (dir * _e35)), size_2); float _e39 = d; float over = (_e38 - (h + (_e39 * climb))); float _e43 = open; float _e46 = d; open = min(_e43, clamp((1.0 - (over / ((0.6 * dpr) + (_e46 * 0.1)))), 0.0, 1.0)); float _e57 = d; float _e60 = d; d = (_e57 + ((0.7 * dpr) + (_e60 * 0.05))); } } float _e68 = open; return _e68; } vec2 spiral(int i_2, int n, float turn) { float r = sqrt(((float(i_2) + 0.5) / float(n))); float a = ((float(i_2) * 2.3999631) + (turn * 6.2831855)); return (r * vec2(cos(a), sin(a))); } float castShadow(vec2 px) { float height = 0.0; float found = 0.0; int i_3 = 0; float cover = 0.0; int i_4 = 0; vec2 size_3 = vec2(uvec2(textureSize(_group_0_binding_2_fs, 0).xy)); float dpr_1 = _group_0_binding_0_fs.view.w; vec4 _e10 = _group_0_binding_0_fs.light; vec3 l_1 = _e10.xyz; vec2 along = normalize((l_1.xy + vec2(1e-5, 0.0))); vec2 across = vec2(-(along.y), along.x); float stretch = (1.0 / max(l_1.z, 0.25)); float _e27 = noise(px); float search = (18.0 * dpr_1); bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e78 = i_3; i_3 = (_e78 + 1); } loop_init_1 = false; int _e36 = i_3; if ((_e36 < 12)) { } else { break; } { int _e39 = i_3; vec2 _e41 = spiral(_e39, 12, _e27); vec2 o_1 = (_e41 * search); vec4 t = texelFetch(_group_0_binding_2_fs, min(max(ivec2(((px + ((along * o_1.x) * stretch)) + (across * o_1.y))), ivec2(0)), (ivec2(size_3) - ivec2(1))), 0); if ((t.x > 0.5)) { float _e64 = height; float _e71 = _group_0_binding_0_fs.camera.x; height = (_e64 + ((1.0 - t.y) * _e71)); float _e74 = found; found = (_e74 + 1.0); } } } float _e80 = found; if ((_e80 == 0.0)) { return 0.0; } float _e84 = height; float _e85 = found; float _e92 = _group_0_binding_0_fs.view.z; float radius = max((((_e84 / _e85) * 0.05) * _e92), (0.75 * dpr_1)); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e124 = i_4; i_4 = (_e124 + 1); } loop_init_2 = false; int _e101 = i_4; if ((_e101 < 24)) { } else { break; } { int _e104 = i_4; vec2 _e106 = spiral(_e104, 24, _e27); vec2 o_2 = (_e106 * radius); float _e108 = cover; vec4 _e120 = textureLod(_group_0_binding_2_fs, vec2((((px + ((along * o_2.x) * stretch)) + (across * o_2.y)) / size_3)), 0.0); cover = (_e108 + _e120.x); } } float _e126 = cover; return (_e126 / 24.0); } void main() { VsOut in_ = VsOut(gl_FragCoord, _vs2fs_location0); vec2 slope = vec2(0.0); vec3 color = vec3(0.0); ivec2 size_4 = ivec2(uvec2(textureSize(_group_0_binding_1_fs, 0).xy)); ivec2 c_2 = ivec2(in_.position.xy); vec4 t_1 = texelFetch(_group_0_binding_1_fs, c_2, 0); float unitPx = _group_0_binding_0_fs.view.z; vec4 _e18 = _group_0_binding_0_fs.frame; vec2 q = ((in_.position.xy - _e18.xy) / vec2(unitPx)); float r_1 = length(q); float _e28 = heightAt((c_2 + ivec2(1, 0)), size_4); float _e33 = heightAt((c_2 - ivec2(1, 0)), size_4); float hx = (_e28 - _e33); float _e39 = heightAt((c_2 + ivec2(0, 1)), size_4); float _e44 = heightAt((c_2 - ivec2(0, 1)), size_4); float hy = (_e39 - _e44); slope = (vec2(hx, hy) * 0.5); vec2 _e50 = slope; float steep = length(_e50); if ((steep > 3.0)) { vec2 _e54 = slope; slope = (_e54 * (3.0 / steep)); } vec2 _e58 = slope; vec3 n_1 = normalize(vec3(-(_e58), 1.0)); vec4 _e65 = _group_0_binding_0_fs.light; vec3 l_2 = _e65.xyz; float _e69 = castShadow(in_.position.xy); float _e73 = _group_0_binding_0_fs.light.w; float shade = (_e69 * _e73); float _e85 = noise((in_.position.xy + vec2(31.0, 7.0))); float _e86 = lit(c_2, t_1.x, size_4, _e85); float sun = (max(dot(n_1, l_2), 0.0) * _e86); float _e91 = _group_0_binding_0_fs.camera.w; float key = ((_e91 * sun) * (1.0 - shade)); float sky = ((0.26 * (0.55 + (0.45 * n_1.z))) * (1.0 - (0.35 * shade))); float tint = (0.93 + (0.07 * t_1.z)); vec4 _e115 = _group_0_binding_0_fs.albedo; color = ((_e115.xyz * tint) * (sky + key)); vec3 _e121 = color; color = (_e121 * (1.0 - (0.92 * t_1.y))); float _e131 = _group_0_binding_0_fs.wall.x; float _e135 = _group_0_binding_0_fs.build.z; float hole = (_e131 * _e135); float _e144 = _group_0_binding_0_fs.deep.w; float heat = exp((-(max((r_1 - hole), 0.0)) / max(_e144, 0.001))); vec3 _e149 = color; vec4 _e152 = _group_0_binding_0_fs.glow; float _e157 = _group_0_binding_0_fs.glow.w; color = (_e149 + (((_e152.xyz * _e157) * t_1.y) * (0.08 + heat))); vec4 _e167 = _group_0_binding_0_fs.deep; vec3 depth = (_e167.xyz * (0.12 + (0.88 * smoothstep((hole * 0.35), (hole * 1.05), r_1)))); vec3 _e179 = color; color = mix(depth, _e179, t_1.w); vec3 _e182 = color; _fs2p_location0 = vec4(_e182, 1.0); return; }  À_f^DÓ dScene_block_0Fragment_group_0_binding_2_fs_group_0_binding_1_fsvsvsfsfs¤*// language: metal2.2 #include #include using metal::uint; struct Scene { metal::float4 view; metal::float4 frame; metal::float4 wall; metal::float4 light; metal::float4 build; metal::float4 hits; metal::float4 strike; metal::float4 albedo; metal::float4 glow; metal::float4 deep; metal::float4 camera; metal::float4 shard; }; struct VsOut { metal::float4 position; metal::float2 uv; char _pad2[8]; }; struct type_6 { metal::float2 inner[3]; }; float heightAt( metal::int2 c, metal::int2 size, metal::texture2d relief ) { uint clamped_lod_e10 = metal::min(uint(0), relief.get_num_mip_levels() - 1); metal::float4 _e10 = relief.read(metal::min(metal::uint2(metal::clamp(c, metal::int2(0), as_type(as_type(size) - as_type(metal::int2(1))))), metal::uint2(relief.get_width(clamped_lod_e10), relief.get_height(clamped_lod_e10)) - 1), clamped_lod_e10); return _e10.x; } float noise( metal::float2 p_1 ) { return metal::fract(metal::sin(metal::dot(p_1, metal::float2(12.9898, 78.233))) * 43758.547); } float heightNear( metal::float2 p_2, metal::int2 size_1, metal::texture2d relief, metal::sampler smp ) { metal::float4 _e10 = relief.sample(smp, (p_2 + metal::float2(0.5)) / static_cast(size_1), metal::level(0.0)); return _e10.x; } float lit( metal::int2 c_1, float h, metal::int2 size_2, float jitter, constant Scene& scene, metal::texture2d relief, metal::sampler smp ) { float open = 1.0; float d = {}; int i_1 = 0; metal::float4 _e6 = scene.light; metal::float3 l = _e6.xyz; float flat = metal::max(metal::length(l.xy), 0.001); metal::float2 dir = l.xy / metal::float2(flat); float climb = l.z / flat; float dpr = scene.view.w; d = (0.7 * dpr) * (0.5 + jitter); uint2 loop_bound = uint2(4294967295u); bool loop_init = true; while(true) { if (metal::all(loop_bound == uint2(0u))) { break; } loop_bound -= uint2(loop_bound.y == 0u, 1u); if (!loop_init) { int _e66 = i_1; i_1 = as_type(as_type(_e66) + as_type(1)); } loop_init = false; int _e31 = i_1; if (_e31 < 32) { } else { break; } { float _e35 = d; float _e38 = heightNear(static_cast(c_1) + (dir * _e35), size_2, relief, smp); float _e39 = d; float over = _e38 - (h + (_e39 * climb)); float _e43 = open; float _e46 = d; open = metal::min(_e43, metal::clamp(1.0 - (over / ((0.6 * dpr) + (_e46 * 0.1))), 0.0, 1.0)); float _e57 = d; float _e60 = d; d = _e57 + ((0.7 * dpr) + (_e60 * 0.05)); } } float _e68 = open; return _e68; } metal::float2 spiral( int i_2, int n, float turn ) { float r = metal::sqrt((static_cast(i_2) + 0.5) / static_cast(n)); float a = (static_cast(i_2) * 2.3999631) + (turn * 6.2831855); return r * metal::float2(metal::cos(a), metal::sin(a)); } metal::int2 naga_f2i32(metal::float2 value) { return static_cast(metal::clamp(value, -2147483600.0, 2147483500.0)); } float castShadow( metal::float2 px, constant Scene& scene, metal::texture2d shadowMap, metal::sampler smp ) { float height = 0.0; float found = 0.0; int i_3 = 0; float cover = 0.0; int i_4 = 0; metal::float2 size_3 = static_cast(metal::uint2(shadowMap.get_width(), shadowMap.get_height())); float dpr_1 = scene.view.w; metal::float4 _e10 = scene.light; metal::float3 l_1 = _e10.xyz; metal::float2 along = metal::normalize(l_1.xy + metal::float2(0.00001, 0.0)); metal::float2 across = metal::float2(-(along.y), along.x); float stretch = 1.0 / metal::max(l_1.z, 0.25); float _e27 = noise(px); float search = 18.0 * dpr_1; uint2 loop_bound_1 = uint2(4294967295u); bool loop_init_1 = true; while(true) { if (metal::all(loop_bound_1 == uint2(0u))) { break; } loop_bound_1 -= uint2(loop_bound_1.y == 0u, 1u); if (!loop_init_1) { int _e78 = i_3; i_3 = as_type(as_type(_e78) + as_type(1)); } loop_init_1 = false; int _e36 = i_3; if (_e36 < 12) { } else { break; } { int _e39 = i_3; metal::float2 _e41 = spiral(_e39, 12, _e27); metal::float2 o_1 = _e41 * search; uint clamped_lod_e60 = metal::min(uint(0), shadowMap.get_num_mip_levels() - 1); metal::float4 t = shadowMap.read(metal::min(metal::uint2(metal::clamp(naga_f2i32((px + ((along * o_1.x) * stretch)) + (across * o_1.y)), metal::int2(0), as_type(as_type(naga_f2i32(size_3)) - as_type(metal::int2(1))))), metal::uint2(shadowMap.get_width(clamped_lod_e60), shadowMap.get_height(clamped_lod_e60)) - 1), clamped_lod_e60); if (t.x > 0.5) { float _e64 = height; float _e71 = scene.camera.x; height = _e64 + ((1.0 - t.y) * _e71); float _e74 = found; found = _e74 + 1.0; } } } float _e80 = found; if (_e80 == 0.0) { return 0.0; } float _e84 = height; float _e85 = found; float _e92 = scene.view.z; float radius = metal::max(((_e84 / _e85) * 0.05) * _e92, 0.75 * dpr_1); uint2 loop_bound_2 = uint2(4294967295u); bool loop_init_2 = true; while(true) { if (metal::all(loop_bound_2 == uint2(0u))) { break; } loop_bound_2 -= uint2(loop_bound_2.y == 0u, 1u); if (!loop_init_2) { int _e124 = i_4; i_4 = as_type(as_type(_e124) + as_type(1)); } loop_init_2 = false; int _e101 = i_4; if (_e101 < 24) { } else { break; } { int _e104 = i_4; metal::float2 _e106 = spiral(_e104, 24, _e27); metal::float2 o_2 = _e106 * radius; float _e108 = cover; metal::float4 _e120 = shadowMap.sample(smp, ((px + ((along * o_2.x) * stretch)) + (across * o_2.y)) / size_3, metal::level(0.0)); cover = _e108 + _e120.x; } } float _e126 = cover; return _e126 / 24.0; } struct vsInput { }; struct vsOutput { metal::float4 position [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vsOutput vs( uint i [[vertex_id]] ) { type_6 p = type_6 {{metal::float2(-1.0, -1.0), metal::float2(3.0, -1.0), metal::float2(-1.0, 3.0)}}; VsOut o = {}; metal::float2 _e15 = p.inner[metal::min(unsigned(i), 2u)]; o.position = metal::float4(_e15, 1.0, 1.0); float _e22 = p.inner[metal::min(unsigned(i), 2u)].x; float _e27 = p.inner[metal::min(unsigned(i), 2u)].y; o.uv = metal::float2(_e22 + 1.0, 1.0 - _e27) * 0.5; VsOut _e33 = o; const auto _tmp = _e33; return vsOutput { _tmp.position, _tmp.uv }; } struct fsInput { metal::float2 uv [[user(loc0), center_perspective]]; }; struct fsOutput { metal::float4 member_1 [[color(0)]]; }; fragment fsOutput fs( fsInput varyings_1 [[stage_in]] , metal::float4 position [[position]] , constant Scene& scene [[buffer(0)]] , metal::texture2d relief [[texture(0)]] , metal::texture2d shadowMap [[texture(1)]] , metal::sampler smp [[sampler(0)]] ) { const VsOut in = { position, varyings_1.uv }; metal::float2 slope = {}; metal::float3 color = {}; metal::int2 size_4 = static_cast(metal::uint2(relief.get_width(), relief.get_height())); metal::int2 c_2 = naga_f2i32(in.position.xy); uint clamped_lod_e9 = metal::min(uint(0), relief.get_num_mip_levels() - 1); metal::float4 t_1 = relief.read(metal::min(metal::uint2(c_2), metal::uint2(relief.get_width(clamped_lod_e9), relief.get_height(clamped_lod_e9)) - 1), clamped_lod_e9); float unitPx = scene.view.z; metal::float4 _e18 = scene.frame; metal::float2 q = (in.position.xy - _e18.xy) / metal::float2(unitPx); float r_1 = metal::length(q); float _e28 = heightAt(as_type(as_type(c_2) + as_type(metal::int2(1, 0))), size_4, relief); float _e33 = heightAt(as_type(as_type(c_2) - as_type(metal::int2(1, 0))), size_4, relief); float hx = _e28 - _e33; float _e39 = heightAt(as_type(as_type(c_2) + as_type(metal::int2(0, 1))), size_4, relief); float _e44 = heightAt(as_type(as_type(c_2) - as_type(metal::int2(0, 1))), size_4, relief); float hy = _e39 - _e44; slope = metal::float2(hx, hy) * 0.5; metal::float2 _e50 = slope; float steep = metal::length(_e50); if (steep > 3.0) { metal::float2 _e54 = slope; slope = _e54 * (3.0 / steep); } metal::float2 _e58 = slope; metal::float3 n_1 = metal::normalize(metal::float3(-(_e58), 1.0)); metal::float4 _e65 = scene.light; metal::float3 l_2 = _e65.xyz; float _e69 = castShadow(in.position.xy, scene, shadowMap, smp); float _e73 = scene.light.w; float shade = _e69 * _e73; float _e85 = noise(in.position.xy + metal::float2(31.0, 7.0)); float _e86 = lit(c_2, t_1.x, size_4, _e85, scene, relief, smp); float sun = metal::max(metal::dot(n_1, l_2), 0.0) * _e86; float _e91 = scene.camera.w; float key = (_e91 * sun) * (1.0 - shade); float sky = (0.26 * (0.55 + (0.45 * n_1.z))) * (1.0 - (0.35 * shade)); float tint = 0.93 + (0.07 * t_1.z); metal::float4 _e115 = scene.albedo; color = (_e115.xyz * tint) * (sky + key); metal::float3 _e121 = color; color = _e121 * (1.0 - (0.92 * t_1.y)); float _e131 = scene.wall.x; float _e135 = scene.build.z; float hole = _e131 * _e135; float _e144 = scene.deep.w; float heat = metal::exp(-(metal::max(r_1 - hole, 0.0)) / metal::max(_e144, 0.001)); metal::float3 _e149 = color; metal::float4 _e152 = scene.glow; float _e157 = scene.glow.w; color = _e149 + (((_e152.xyz * _e157) * t_1.y) * (0.08 + heat)); metal::float4 _e167 = scene.deep; metal::float3 depth = _e167.xyz * (0.12 + (0.88 * metal::smoothstep(hole * 0.35, hole * 1.05, r_1))); metal::float3 _e179 = color; color = metal::mix(depth, _e179, t_1.w); metal::float3 _e182 = color; return fsOutput { metal::float4(_e182, 1.0) }; }  À_f^DÓ dvsmainÜstruct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct VsOut { float4 position; float2 uv; }; static const float2 _67[3] = { float2(-1.0f, -1.0f), float2(3.0f, -1.0f), float2(-1.0f, 3.0f) }; static const VsOut _73 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 uv; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 uv : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { VsOut o = _73; o.position = float4(_67[min(uint(gl_VertexIndex), 2u)], 1.0f, 1.0f); o.uv = float2(_67[min(uint(gl_VertexIndex), 2u)].x + 1.0f, 1.0f - _67[min(uint(gl_VertexIndex), 2u)].y) * 0.5f; gl_Position = o.position; uv = o.uv; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.uv = uv; return stage_output; } fsmainÝstruct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct VsOut { float4 position; float2 uv; }; cbuffer scene : register(b0) { Scene scene_1_m0 : packoffset(c0); }; Texture2D relief : register(t0); Texture2D shadowMap : register(t1); SamplerState smp : register(s0); static float4 gl_FragCoord; static float2 uv; static float4 _368; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _368 : SV_Target0; }; uint2 spvTextureSize(Texture2D Tex, uint Level, out uint Param) { uint2 ret; Tex.GetDimensions(Level, ret.x, ret.y, Param); return ret; } float heightAt(int2 c, int2 size) { int _38; spvTextureSize(relief, 0u, _38); int _40 = int(min(uint(0), uint(int(_38) - 1))); uint _41_dummy_parameter; return relief.Load(int3(int2(min(uint2(min(max(c, int2(0, 0)), (size - int2(1, 1)))), uint2(int2(spvTextureSize(relief, uint(_40), _41_dummy_parameter)) - int2(1, 1)))), _40)).x; } float _noise(float2 p) { return frac(sin(dot(p, float2(12.98980045318603515625f, 78.233001708984375f))) * 43758.546875f); } float2 spiral(int i, int n, float turn) { float _195 = (float(i) * 2.3999631404876708984375f) + (turn * 6.283185482025146484375f); return float2(cos(_195), sin(_195)) * sqrt((float(i) + 0.5f) / float(n)); } float castShadow(float2 px) { int i = 0; float found = 0.0f; float cover = 0.0f; float height = 0.0f; int i_1 = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); uint _220_dummy_parameter; float2 _221 = float2(spvTextureSize(shadowMap, 0u, _220_dummy_parameter)); float2 _229 = normalize(scene_1_m0.light.xyz.xy + float2(9.9999997473787516355514526367188e-06f, 0.0f)); float2 _233 = float2(-_229.y, _229.x); float _236 = 1.0f / max(scene_1_m0.light.xyz.z, 0.25f); float _237 = _noise(px); float _238 = 18.0f * scene_1_m0.view.w; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i_1 < 12)) { break; } float2 _262 = spiral(i_1, 12, _237) * _238; int _281; spvTextureSize(shadowMap, 0u, _281); int _283 = int(min(uint(0), uint(int(_281) - 1))); uint _284_dummy_parameter; float4 _288 = shadowMap.Load(int3(int2(min(uint2(min(max(int2(clamp((px + ((_229 * _262.x) * _236)) + (_233 * _262.y), float2(-2147483648.0f, -2147483648.0f), float2(2147483520.0f, 2147483520.0f))), int2(0, 0)), (int2(clamp(_221, float2(-2147483648.0f, -2147483648.0f), float2(2147483520.0f, 2147483520.0f))) - int2(1, 1)))), uint2(int2(spvTextureSize(shadowMap, uint(_283), _284_dummy_parameter)) - int2(1, 1)))), _283)); if (_288.x > 0.5f) { height += ((1.0f - _288.y) * scene_1_m0.camera.x); found += 1.0f; } i_1++; continue; } if (found == 0.0f) { return 0.0f; } float _318 = max(((height / found) * 0.0500000007450580596923828125f) * scene_1_m0.view.z, 0.75f * scene_1_m0.view.w); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(i < 24)) { break; } float2 _342 = spiral(i, 24, _237) * _318; cover += shadowMap.SampleLevel(smp, ((px + ((_229 * _342.x) * _236)) + (_233 * _342.y)) / _221, 0.0f).x; i++; continue; } return cover / 24.0f; } float heightNear(float2 p, int2 size) { return relief.SampleLevel(smp, (p + float2(0.5f, 0.5f)) / float2(size), 0.0f).x; } float lit(int2 c, float h, int2 size, float jitter) { float open = 1.0f; float d = 0.0f; int i = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); float _110 = max(length(scene_1_m0.light.xyz.xy), 0.001000000047497451305389404296875f); float2 _113 = scene_1_m0.light.xyz.xy / float2(_110, _110); float _115 = scene_1_m0.light.xyz.z / _110; d = (0.699999988079071044921875f * scene_1_m0.view.w) * (0.5f + jitter); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < 32)) { break; } open = min(open, clamp(1.0f - ((heightNear(float2(c) + (_113 * d), size) - (h + (d * _115))) / ((0.60000002384185791015625f * scene_1_m0.view.w) + (d * 0.100000001490116119384765625f))), 0.0f, 1.0f)); d += ((0.699999988079071044921875f * scene_1_m0.view.w) + (d * 0.0500000007450580596923828125f)); i++; continue; } return open; } void frag_main() { float2 slope = float2(0.0f, 0.0f); float3 color = float3(0.0f, 0.0f, 0.0f); VsOut _361 = { gl_FragCoord, uv }; uint _400_dummy_parameter; int2 _401 = int2(spvTextureSize(relief, 0u, _400_dummy_parameter)); int2 _405 = int2(clamp(_361.position.xy, float2(-2147483648.0f, -2147483648.0f), float2(2147483520.0f, 2147483520.0f))); int _406; spvTextureSize(relief, 0u, _406); int _408 = int(min(uint(0), uint(int(_406) - 1))); uint _409_dummy_parameter; float4 _413 = relief.Load(int3(int2(min(uint2(_405), uint2(int2(spvTextureSize(relief, uint(_408), _409_dummy_parameter)) - int2(1, 1)))), _408)); float _424 = length((_361.position.xy - scene_1_m0.frame.xy) / float2(scene_1_m0.view.z, scene_1_m0.view.z)); slope = float2(heightAt(_405 + int2(1, 0), _401) - heightAt(_405 - int2(1, 0), _401), heightAt(_405 + int2(0, 1), _401) - heightAt(_405 - int2(0, 1), _401)) * 0.5f; float _438 = length(slope); if (_438 > 3.0f) { slope *= (3.0f / _438); } float3 _448 = normalize(float3(-slope, 1.0f)); float _457 = castShadow(_361.position.xy) * scene_1_m0.light.w; color = (scene_1_m0.albedo.xyz * (0.930000007152557373046875f + (0.070000000298023223876953125f * _413.z))) * (((0.2599999904632568359375f * (0.550000011920928955078125f + (0.449999988079071044921875f * _448.z))) * (1.0f - (0.3499999940395355224609375f * _457))) + ((scene_1_m0.camera.w * (max(dot(_448, scene_1_m0.light.xyz), 0.0f) * lit(_405, _413.x, _401, _noise(_361.position.xy + float2(31.0f, 7.0f))))) * (1.0f - _457))); color *= (1.0f - (0.920000016689300537109375f * _413.y)); float _499 = scene_1_m0.wall.x * scene_1_m0.build.z; color += (((scene_1_m0.glow.xyz * scene_1_m0.glow.w) * _413.y) * (0.07999999821186065673828125f + exp((-max(_424 - _499, 0.0f)) / max(scene_1_m0.deep.w, 0.001000000047497451305389404296875f)))); color = lerp(scene_1_m0.deep.xyz * (0.119999997317790985107421875f + (0.87999999523162841796875f * smoothstep(_499 * 0.3499999940395355224609375f, _499 * 1.0499999523162841796875f, _424))), color, float3(_413.www)); _368 = float4(color, 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._368 = _368; return stage_output; }  À_f^DÓ dHSLTSceneÀ viewÿÿÿÿframeÿÿÿÿwall ÿÿÿÿlight0ÿÿÿÿbuild@ÿÿÿÿhitsPÿÿÿÿstrike`ÿÿÿÿalbedopÿÿÿÿglow€ÿÿÿÿdeep�ÿÿÿÿcamera ÿÿÿÿshard°ÿÿÿÿ scene_blockÀscenereliefÿÿÿÿ shadowMapÿÿÿÿsmpÿÿÿÿvsvsfsfs0#D2 GLSL.std.450pvsiln fs™œŸ H#H#H# H#0H#@H#PH#`H#pH#€H #�H # H #°H #H #G G"G!GH#G"G!G"G!G"G!Gi *Gl GnG™ GœGŸ    +      ; ;; ;! +, + , ! , * !2+39ÖOA+4LwœB,534+6Œî*G!@ +C?,DCC+EJ!T   U+ V+Zoƒ:+[€?+\333?+] +^š™?+_ÍÌÌ=+`ÍÌL= b.d f h t~  ~€�€,~‚VV+ ƒ+ „ÿÿÿÿ,~…„„!·+¸ÿ˜@+¹ÛÉ@+άÅ'7,ÏÎE+Ѐ>+Ñ�A+Ò +Ó@?+Ô+ÕÀA+Ï,+ÿÿÿN,,  + ( + 9 j ;ji m;ml o;on!q+r€¿,srr+t@@,utr,vrt, wsuv y { . | ~  ’ š;š™ �;�œ;mŸ, ¥ , ¦ +§øA+¨à@,©§¨+ªffæ>+«ÍÌ ?+¬¸…>+­33³>+®)\�=+¯{n?+°…k?+± ×£=+²ff†?+³®Ga?+´�Âõ=.¶ ¸.¹, Å + + + " + )67 7 ø=ù"ø"‚ #!  %*  $'%#j&‚'& (&'g )(‚ +)*  ,&$+_-,(Q.-þ.861270ø/ù7ø7”805 9 8…:96 ; :þ;86?@7=7 >ø<=A=BùFøF�G=DoH>ˆIGHVJKABXLKIEQMLþM86ST7 O7P7 Q7RøN;ba[;bcd;fe;†…AUWV=X=YùgøgAhiW =jiOkjjOlkk mBl n(mZOokkPpnnˆqopQrkˆsrnAtuWV =vu…w\v�xCR…ywx>cyùzøzö{}ù‡ø‡=~ˆ†ª�‰‚ˆ›€Š‰÷‹úŠ{‹ø‹Q Œˆª€�ŒV© Ž�ƒVP~�Žƒ‚~�ˆ�>†�ù|ø|=‘e±€’‘]÷“ú’“”ø”ù{ø“ù•ø•o—O=˜cŽ™q˜�š—™9›?šQ=œc…�œs�žP�ƒŸ›ž= a…¡^v=¢c…£¢_�¤¡£ˆ¥Ÿ¤ƒ¦[¥ §+¦E[ ¨% §>a¨=©c…ª\v=«c…¬«`�­ª¬�®©­>c®ù–ø–ù}ø}=¯e€°¯ >e°ùzø{=±aþ±86¶·7³7´7µø²ùºøºo»³�¼»Co½´ˆ¾¼½ ¿¾oÀ³…ÁÀ¸…µ¹�ÃÁ Äà Å ÃPÆÄÅŽÇÆ¿þÇ86Ê27ÉøÈ;fÚ;b×E;bÙE;bÖE;fØ;ó…;C…AUËV=Ì=ÍùÛøÛg~ÜÌVpÝÜAtÞËV =ßÞAhàË =áàOâááOãââ�äãÏ åEäQæåçæQèåPéçèQêâ ë(êЈì[ë9í1É…îÑßùïøïöðòùôøô=~õóª�ö‚õ›€÷ö÷øú÷ðøøøQ ùõª€úùV© ûúƒVP~üûƒ‚~ýõü>óýùñøñ=þر€ÿþÒ÷úÿøùðøùø=Ø9¶ÒíŽîQŽåŽ ì� É Q Ž é �    + n  +Ýn ‚ !  *  'jÌ‚ &g Ì‚   &_ ÌQ! º€"!C÷#ú"$#ø$=%ÖQ& ƒ'[&At)Ë(V=*)…+'*�,%+>Ö,=-×�.-[>×.ù#ø#ùøùòøò=/Ø€0/ >Ø0ùïøð=1×´€21E÷3ú243ø4þEø3=5Ö=6׈756…87`At:ËV9=;:…<8;…=Óß >(<=ù?ø?ö@BùDøD=~ECª�F‚E›€GF÷HúG@HøHQ IEª€JIV© KJƒVP~LKƒ‚~MEL>CMùAøA=NÚ±€ONÔ÷PúOPQøQù@øPùRøR=TÚ9U¶TÔíŽVU>=WÙQXVŽYåXŽZYì�[ÉZQ\VŽ]é\�^[]ˆ_^ÝVJ`ÌÍXa`_EQba�cWb>ÙcùSøSùBøB=dÚ€ed >Úeù?ø@=fÙˆgfÕþg86pqøh;yxw;{z|= kiù}ø}  €&k9A�x€=‚�Pƒ‚[[A~„zV>„ƒ  …&k9Ab†x…V=‡†�ˆ‡[  ‰&k9AbŠx‰ƒ=‹ŠƒŒ[‹P�ˆŒŽŽ�CA�zƒ>�Ž= �zQ‘�>l‘A’“lƒ=”“•”>“•Q–�>n–ý86 qø—;µ¶;¸·¹=›™=žœP ˜›žAU¡V=¢=£=¤ùºøºg~»¢V| ¼»Q½˜O¾½½ ¿+¾n À¿jÁ¢‚ÂÁ Ã&Âg Ģ ÆÄÅ  Ç&ÀÆ_È¢ÇÃAtÉ¡V9=ÊÉQ˘OÌËËAhÍ¡ƒ=ÎÍOÏÎ΃ÐÌÏPÑÊʈÒÐÑ ÓBÒ€ ÔÀ¥9ÕÔ¼‚ ÖÀ¥9×Ö¼ƒØÕ×€ ÙÀ¦9ÚÙ¼‚ ÛÀ¦9ÜÛ¼ƒÝÚÜPÞØÝŽßÞC>µß=ൠáB຀âát÷ãúâäãøä=嵈ætáŽçåæ>µçùãøã=èµéèPêé[ ëEêAhì¡ =íìOîííQï˜Oðïï9ñÊðAtò¡ =óò…ôñó”õëî ö(õEQ÷ÈQø˜Oùøø�úù©9û1ú9üSÀ÷¼û…ýöüAtþ¡( =ÿþ…ÿýƒ[ô…Që…ª�«…¬…­ôƒ[… Q È… ® � ¯ Ah¡ =OŽ � Ž>·=·QÈ…°ƒ[Ž>·At¡9V=At¡9=…ƒÓ  (E! At#¡" =$# %($Zˆ&!% '&=(·Ah*¡)=+*O,++At-¡) =.-Ž/,.Q0ÈŽ1/0�2±'Ž312�4(3>·4Ah5¡"=65O766…8­…9² :189Ó…;³:�<´;Ž=7<=>·Q?ÈPA??? @.=>A>·@=B·PCB[>ŸCý8 À°À—h“õWÊÊËwalljÔǨBTSR a“a“'ˆ“ÒÌ Z`'�`›`·`>Ò õ2'3‰s ¥¦'̦È”¨¯ê C“'\vsfsvs_piecevs_piece_shadowfs_piecefs_piece_shadowvsvsfsfsvs_piecevs_piecevs_piece_shadowvs_piece_shadowfs_piecefs_piecefs_piece_shadowfs_piece_shadowÚ’struct Scene { view: vec4, frame: vec4, wall: vec4, light: vec4, build: vec4, hits: vec4, strike: vec4, albedo: vec4, glow: vec4, deep: vec4, camera: vec4, shard: vec4, } struct Seed { pos: vec2, key: u32, } struct Cell { seed: vec2, key: u32, edge: f32, other: u32, } struct VsOut { @builtin(position) position: vec4, } struct Pose { cell: vec2, plate: vec2, frame: vec2, center: vec3, seed: vec3, ex: vec3, ey: vec3, ez: vec3, scale: f32, thick: f32, reach: f32, stress: f32, tint: f32, gone: bool, } struct Outline { corners: array, 12>, count: i32, } struct PieceOut { @builtin(position) position: vec4, @location(0) at: vec2, @location(1) @interpolate(flat) center: vec3, @location(2) @interpolate(flat) seed: vec3, @location(3) @interpolate(flat) ex: vec3, @location(4) @interpolate(flat) ey: vec3, @location(5) @interpolate(flat) ez: vec3, @location(6) @interpolate(flat) look: vec4, @location(7) @interpolate(flat) c0_: vec4, @location(8) @interpolate(flat) c1_: vec4, @location(9) @interpolate(flat) c2_: vec4, @location(10) @interpolate(flat) c3_: vec4, @location(11) @interpolate(flat) c4_: vec4, @location(12) @interpolate(flat) c5_: vec4, @location(13) @interpolate(flat) count: i32, @location(14) @interpolate(flat) frame: vec2, } struct Hit { t: f32, normal: vec3, face: bool, edge: f32, edgeNormal: vec2, } struct PieceColor { @location(0) color: vec4, @builtin(frag_depth) depth: f32, } const PIECE_VERTICES: u32 = 6u; const PLATES_A_CELL: u32 = 4u; @group(0) @binding(0) var scene: Scene; fn pcg(v: u32) -> u32 { let s_2 = ((v * 747796405u) + 2891336453u); let w_1 = (((s_2 >> ((s_2 >> 28u) + 4u)) ^ s_2) * 277803737u); return ((w_1 >> 22u) ^ w_1); } fn unit(h: u32) -> f32 { return (f32((h >> 8u)) / 16777216f); } fn rand(key: u32, channel: u32) -> f32 { let _e5 = pcg((key + (channel * 2654435769u))); let _e6 = unit(_e5); return _e6; } fn density(level: u32) -> f32 { return select(1f, 1.5f, (level == 1u)); } fn seedAt(c: vec2, level_1: u32, frame: vec2) -> Seed { var s: Seed; let _e3 = density(level_1); let _e7 = scene.wall.z; let perRadian = ((_e7 * _e3) / 6.2831855f); let _e14 = scene.wall.z; let around = i32(round((_e14 * _e3))); let wrap = i32(round((1024f * _e3))); let i_7 = u32((((c.x % wrap) + wrap) % wrap)); let j_3 = u32((((c.y % around) + around) % around)); let _e35 = pcg((j_3 + (level_1 * 5369127u))); let _e37 = pcg((i_7 + _e35)); let _e38 = unit(_e37); let _e39 = pcg(_e37); let _e40 = unit(_e39); let jitter = (vec2(0.5f) + ((vec2(_e38, _e40) - vec2(0.5f)) * 0.8f)); let g_1 = ((vec2(c) + jitter) + (frame * _e3)); let r_2 = exp((g_1.x / perRadian)); let a_1 = (g_1.y / perRadian); s.pos = (r_2 * vec2(cos(a_1), sin(a_1))); s.key = _e37; let _e66 = s; return _e66; } fn voronoi(q: vec2, level_2: u32, frame_1: vec2) -> Cell { var pos: array, 9>; var keys: array; var best: f32 = 1000000000f; var nearest: i32 = 0i; var n_1: i32 = 0i; var cell: Cell; var n_2: i32 = 0i; let _e3 = density(level_2); let _e7 = scene.wall.z; let perRadian_1 = ((_e7 * _e3) / 6.2831855f); let g_2 = ((vec2(log(max(length(q), 0.0001f)), atan2(q.y, q.x)) * perRadian_1) - (frame_1 * _e3)); let base = vec2(floor(g_2)); loop { let _e32 = n_1; if (_e32 < 9i) { } else { break; } { let _e35 = n_1; let _e40 = n_1; let _e47 = seedAt((base + vec2(((_e35 % 3i) - 1i), ((_e40 / 3i) - 1i))), level_2, frame_1); let _e48 = n_1; pos[_e48] = _e47.pos; let _e51 = n_1; keys[_e51] = _e47.key; let d_2 = dot((q - _e47.pos), (q - _e47.pos)); let _e59 = best; if (d_2 < _e59) { best = d_2; let _e61 = n_1; nearest = _e61; } } continuing { let _e63 = n_1; n_1 = (_e63 + 1i); } } let _e65 = nearest; let a_2 = pos[_e65]; cell.seed = a_2; let _e71 = nearest; let _e73 = keys[_e71]; cell.key = _e73; cell.edge = 1000000000f; let _e78 = cell.key; cell.other = _e78; loop { let _e81 = n_2; if (_e81 < 9i) { } else { break; } { let _e84 = n_2; let _e85 = nearest; if (_e84 == _e85) { continue; } let _e87 = n_2; let b_2 = pos[_e87]; let e = dot(((0.5f * (a_2 + b_2)) - q), normalize((b_2 - a_2))); let _e98 = cell.edge; if (e < _e98) { cell.edge = e; let _e102 = n_2; let _e104 = keys[_e102]; cell.other = _e104; } } continuing { let _e106 = n_2; n_2 = (_e106 + 1i); } } let _e108 = cell; return _e108; } fn wallFrame() -> vec2 { let _e2 = scene.frame; return _e2.zw; } fn stress(r: f32) -> f32 { let _e4 = scene.wall.x; let _e8 = scene.build.z; let hole = (_e4 * _e8); let _e15 = scene.wall.y; let _e24 = scene.build.y; return (clamp(exp((-((r - hole)) / _e15)), 0f, 1f) * _e24); } fn peelTime(seed: vec2, key_1: u32) -> f32 { let _e5 = scene.build.z; if (_e5 < 0.01f) { return -1000f; } let _e12 = scene.wall.x; let _e14 = rand(key_1, 21u); let crack = (_e12 * mix(1.12f, 1.6f, _e14)); return (log((crack / max(length(seed), 0.0001f))) / 0.042f); } fn looseTime(key_2: u32) -> f32 { let _e2 = rand(key_2, 21u); let _e7 = rand(key_2, 22u); return (log((mix(1.12f, 1.6f, _e2) / mix(0.85f, 1.05f, _e7))) / 0.042f); } fn plateSize(seed_1: vec2, level_3: u32) -> f32 { let _e8 = scene.wall.z; let _e9 = density(level_3); return ((length(seed_1) * 6.2831855f) / (_e8 * _e9)); } fn cracked(r_1: f32, a: u32, b_1: u32, size: f32) -> f32 { let _e5 = rand(a, 9u); let _e7 = rand(b_1, 9u); let pace = (0.8f + (0.2f * (_e5 + _e7))); let _e16 = scene.view.z; let _e21 = scene.view.w; let px_1 = ((size * _e16) / _e21); let _e26 = scene.build.x; return (clamp((((_e26 * pace) - r_1) / 0.04f), 0f, 1f) * smoothstep(1f, 14f, px_1)); } fn loose(seed_2: vec2) -> f32 { let _e4 = scene.build.x; return clamp((((_e4 * 0.85f) - length(seed_2)) / 0.06f), 0f, 1f); } fn knocked(seed_3: vec2, size_1: f32) -> f32 { var lift: f32; let hits = scene.hits; let _e8 = scene.wall.x; let ring = (_e8 + (hits.x * 1.4f)); let across = ((length(seed_3) - ring) / 0.09f); lift = ((hits.y * exp(((-(across) * across) - (hits.x * 1.8f)))) * 0.5f); let _e31 = scene.strike; let toStrike = (length((seed_3 - _e31.xy)) / 0.16f); let _e37 = lift; lift = (_e37 + ((hits.w * exp(((-(toStrike) * toStrike) - (hits.z * 2.2f)))) * 0.6f)); let _e50 = lift; return (_e50 * size_1); } fn valueNoise(p_1: vec2, period: i32, salt: u32) -> f32 { let i_8 = vec2(floor(p_1)); let f = fract(p_1); let u = ((f * f) * (vec2(3f) - (2f * f))); let y0_ = ((u32((((i_8.y % period) + period) % period)) * 668265261u) + salt); let y1_ = ((u32(((((i_8.y + 1i) % period) + period) % period)) * 668265261u) + salt); let _e36 = pcg(((u32(i_8.x) * 374761393u) + y0_)); let _e37 = unit(_e36); let _e45 = pcg(((u32((i_8.x + 1i)) * 374761393u) + y0_)); let _e46 = unit(_e45); let _e52 = pcg(((u32(i_8.x) * 374761393u) + y1_)); let _e53 = unit(_e52); let _e61 = pcg(((u32((i_8.x + 1i)) * 374761393u) + y1_)); let _e62 = unit(_e61); return mix(mix(_e37, _e46, u.x), mix(_e53, _e62, u.x), u.y); } fn octaves(g: vec2, ratio: f32, salt_1: u32) -> f32 { let k_1 = log2(max(ratio, 1f)); let n_4 = floor(k_1); let f_1 = (k_1 - n_4); let m_1 = exp2(n_4); let _e13 = scene.wall.z; let _e21 = valueNoise((g * m_1), i32(round((_e13 * m_1))), (salt_1 + (u32(n_4) * 2654435769u))); let a_3 = (_e21 - 0.5f); let _e30 = scene.wall.z; let _e42 = valueNoise(((g * m_1) * 2f), i32(round(((_e30 * m_1) * 2f))), (salt_1 + (u32((n_4 + 1f)) * 2654435769u))); let b_3 = (_e42 - 0.5f); let wa = (1f - f_1); return (0.5f + (((a_3 * wa) + (b_3 * f_1)) * inverseSqrt(((wa * wa) + (f_1 * f_1))))); } fn plaster(q_1: vec2, frame_2: vec2, pxPerUnit: f32) -> f32 { let _e6 = scene.wall.z; let perRadian_2 = (_e6 / 6.2831855f); let r_3 = max(length(q_1), 0.0001f); let g_3 = ((vec2(log(r_3), atan2(q_1.y, q_1.x)) * perRadian_2) - frame_2); let cellPx = ((r_3 * pxPerUnit) / perRadian_2); let dpr = scene.view.w; let _e29 = octaves(g_3, (cellPx / (2.2f * dpr)), 11u); let _e36 = octaves(g_3, (cellPx / (11f * dpr)), 23u); return ((0.65f * _e29) + (0.35f * _e36)); } fn plateTop(q_2: vec2, seed_4: vec2, key_3: u32, s_1: f32, size_2: f32, calm_1: f32) -> f32 { let _e10 = rand(key_3, 3u); let lift_1 = ((((0.2f * s_1) * s_1) * (0.25f + (0.75f * _e10))) * size_2); let _e18 = rand(key_3, 4u); let a_4 = (_e18 * 6.2831855f); let _e28 = rand(key_3, 5u); let tilt = (((vec2(cos(a_4), sin(a_4)) * 0.4f) * s_1) * _e28); let _e34 = knocked(seed_4, size_2); let _e39 = scene.view.z; return ((((lift_1 + dot(tilt, (q_2 - seed_4))) * calm_1) + _e34) * _e39); } fn rotate(v_1: vec3, axis: vec3, angle: f32) -> vec3 { let s_3 = sin(angle); let k_2 = cos(angle); return (((v_1 * k_2) + (cross(axis, v_1) * s_3)) + ((axis * dot(axis, v_1)) * (1f - k_2))); } fn randomAxis(key_4: u32) -> vec3 { let _e2 = rand(key_4, 10u); let z = ((_e2 * 2f) - 1f); let _e8 = rand(key_4, 11u); let a_5 = (_e8 * 6.2831855f); return vec3((sqrt(max((1f - (z * z)), 0f)) * vec2(cos(a_5), sin(a_5))), z); } fn roll(v_2: vec3, angle_1: f32) -> vec3 { let c_2 = cos(angle_1); let s_4 = sin(angle_1); return vec3(((v_2.x * c_2) - (v_2.y * s_4)), ((v_2.x * s_4) + (v_2.y * c_2)), v_2.z); } fn pose(n_3: u32) -> Pose { var o_1: Pose; var near: array, 4>; var far: array = array(1000000000f, 1000000000f, 1000000000f, 1000000000f); var i_1: i32 = 0i; var d: f32; var at: vec2; var k: i32; var gone: bool; var local_1: bool; var local_2: bool; let _e5 = scene.wall.z; let around_1 = u32(round((_e5 * 1.5f))); let pick = (n_3 % PLATES_A_CELL); let m_2 = (n_3 / PLATES_A_CELL); let _e14 = wallFrame(); let _e18 = scene.wall.z; let perRadian_3 = (_e18 / 6.2831855f); let _e24 = scene.wall.x; let top_1 = (i32(floor((((log((_e24 * 1.6f)) * perRadian_3) - _e14.x) * 1.5f))) + 2i); let cell_1 = vec2((top_1 - i32((m_2 / around_1))), i32((m_2 % around_1))); let _e44 = seedAt(cell_1, 1u, _e14); let g_4 = ((vec2(log(max(length(_e44.pos), 0.0001f)), atan2(_e44.pos.y, _e44.pos.x)) * perRadian_3) - _e14); let base_1 = vec2(floor(g_4)); near = array, 4>(base_1, base_1, base_1, base_1); loop { let _e70 = i_1; if (_e70 < 9i) { } else { break; } { let _e73 = i_1; let _e78 = i_1; let c_3 = (base_1 + vec2(((_e73 % 3i) - 1i), ((_e78 / 3i) - 1i))); let _e86 = seedAt(c_3, 0u, _e14); d = distance(_e86.pos, _e44.pos); at = c_3; k = 0i; loop { let _e94 = k; if (_e94 < 4i) { } else { break; } { let _e97 = d; let _e98 = k; let _e100 = far[_e98]; if (_e97 < _e100) { let _e102 = k; let keepD = far[_e102]; let _e105 = k; let keepC = near[_e105]; let _e108 = k; let _e110 = d; far[_e108] = _e110; let _e111 = k; let _e113 = at; near[_e111] = _e113; d = keepD; at = keepC; } } continuing { let _e115 = k; k = (_e115 + 1i); } } } continuing { let _e118 = i_1; i_1 = (_e118 + 1i); } } let _e122 = near[pick]; o_1.plate = _e122; let _e125 = plateSize(_e44.pos, 1u); let _e127 = far[pick]; let _e129 = far[0]; gone = (_e127 > (_e129 + (2.6f * _e125))); let _e137 = peelTime(_e44.pos, _e44.key); let _e139 = looseTime(_e44.key); let flying = max((_e137 - _e139), 0f); let back = ((flying * 0.042f) * perRadian_3); let _e150 = scene.shard.w; o_1.frame = (_e14 + vec2(back, (back * _e150))); o_1.cell = cell_1; let _e156 = o_1.plate; let _e159 = o_1.frame; let _e160 = seedAt(_e156, 0u, _e159); let key_5 = (_e44.key ^ _e160.key); let _e166 = o_1.frame; let _e167 = seedAt(cell_1, 1u, _e166); let seed_5 = vec3(_e167.pos, 0f); let out_2 = normalize(seed_5.xy); let axis_1 = vec3(-(out_2.y), out_2.x, 0f); let hinge = vec3((seed_5.xy + ((out_2 * 0.5f) * _e125)), 0f); let x_2 = clamp((_e137 / _e139), 0f, 1f); let _e191 = rand(_e44.key, 23u); let lean = mix(0.5f, 1.1f, _e191); let turn = (lean * pow(x_2, 2.2f)); let spin = (((lean * 2.2f) * pow(x_2, 1.2f)) / _e139); let _e205 = rotate((seed_5 - hinge), axis_1, turn); let lifted = (hinge + _e205); let _e208 = randomAxis(key_5); let _e210 = rand(key_5, 12u); let tumble = ((axis_1 * spin) + (_e208 * mix(0.8f, 2.6f, _e210))); let rate = length(tumble); let around3_ = (tumble / vec3(max(rate, 0.00001f))); let _e230 = rand(key_5, 27u); let apart = (normalize(((seed_5.xy - _e160.pos) + vec2(0.00001f, 0f))) * mix(0.01f, 0.05f, _e230)); let _e239 = rand(key_5, 26u); let velocity = (cross((axis_1 * spin), (lifted - hinge)) + vec3(apart, mix(0.04f, 0.12f, _e239))); let center = ((lifted + (velocity * flying)) + vec3(0f, 0f, ((0.15f * flying) * flying))); let shrink = exp((-0.042f * flying)); let _e262 = scene.shard.w; let twist = ((-0.042f * flying) * _e262); let after = (rate * flying); let _e266 = roll(center, twist); o_1.center = (_e266 * shrink); o_1.seed = seed_5; let _e274 = rotate(vec3(1f, 0f, 0f), axis_1, turn); let _e275 = rotate(_e274, around3_, after); let _e276 = roll(_e275, twist); o_1.ex = _e276; let _e282 = rotate(vec3(0f, 1f, 0f), axis_1, turn); let _e283 = rotate(_e282, around3_, after); let _e284 = roll(_e283, twist); o_1.ey = _e284; let _e290 = rotate(vec3(0f, 0f, 1f), axis_1, turn); let _e291 = rotate(_e290, around3_, after); let _e292 = roll(_e291, twist); o_1.ez = _e292; o_1.scale = shrink; let _e297 = plateSize(_e160.pos, 0u); o_1.thick = (0.16f * _e297); o_1.reach = _e125; let _e305 = stress((length(_e160.pos) * shrink)); o_1.stress = _e305; let _e309 = rand(_e160.key, 6u); let _e311 = rand(key_5, 6u); let _e313 = o_1.stress; o_1.tint = mix(_e309, _e311, (smoothstep(0.5f, 0.8f, _e313) * 0.5f)); let _e321 = gone; if !(_e321) { local_1 = (_e137 <= 0f); } else { local_1 = true; } let _e328 = local_1; if !(_e328) { local_2 = (flying > 8f); } else { local_2 = true; } let _e335 = local_2; o_1.gone = _e335; let _e336 = o_1; return _e336; } fn placed(o_2: Pose, x_1: vec3) -> vec3 { let v_4 = ((x_1 - o_2.seed) * o_2.scale); return (((o_2.center + (o_2.ex * v_4.x)) + (o_2.ey * v_4.y)) + (o_2.ez * v_4.z)); } fn local_3(o_3: Pose, v_3: vec3) -> vec3 { return (vec3(dot(v_3, o_3.ex), dot(v_3, o_3.ey), dot(v_3, o_3.ez)) / vec3(o_3.scale)); } fn outline(o_4: Pose) -> Outline { var poly: array, 24>; var next: array, 24>; var count: i32 = 4i; var w: i32 = 0i; var toward: vec2; var limit: f32; var m: i32; var j: i32; var local_4: bool; var local_5: bool; var j_1: i32; var o2_: Outline; var j_2: i32 = 0i; let _e10 = scene.view.w; let _e15 = scene.view.z; let width = ((mix(0.32f, 3.2f, pow(o_4.stress, 1.3f)) * _e10) / _e15); let fine = ((width * 0.55f) * smoothstep(0.5f, 0.8f, o_4.stress)); let a_6 = o_4.seed.xy; let _e29 = seedAt(o_4.plate, 0u, o_4.frame); let b_4 = _e29.pos; let r_4 = (o_4.reach * 1.5f); poly[0] = (a_6 + vec2(-(r_4), -(r_4))); poly[1] = (a_6 + vec2(r_4, -(r_4))); poly[2] = (a_6 + vec2(r_4, r_4)); poly[3] = (a_6 + vec2(-(r_4), r_4)); loop { let _e56 = w; if (_e56 < 16i) { } else { break; } { let _e59 = w; let i_9 = (_e59 % 8i); let k_3 = select(i_9, (i_9 + 1i), (i_9 >= 4i)); let off = vec2(((k_3 % 3i) - 1i), ((k_3 / 3i) - 1i)); toward = vec2(); limit = f32(); let _e80 = w; if (_e80 < 8i) { let _e87 = seedAt((o_4.cell + off), 1u, o_4.frame); let s_5 = _e87.pos; toward = normalize((s_5 - a_6)); let _e94 = toward; limit = (dot((0.5f * (a_6 + s_5)), _e94) - fine); } else { let _e101 = seedAt((o_4.plate + off), 0u, o_4.frame); let s_6 = _e101.pos; toward = normalize((s_6 - b_4)); let _e108 = toward; limit = (dot((0.5f * (b_4 + s_6)), _e108) - width); } m = 0i; j = 0i; loop { let _e115 = j; let _e116 = count; if (_e115 < _e116) { } else { break; } { let _e118 = j; let p_3 = poly[_e118]; let _e121 = j; let _e124 = count; let q_3 = poly[((_e121 + 1i) % _e124)]; let _e128 = toward; let _e130 = limit; let dp = (dot(p_3, _e128) - _e130); let _e132 = toward; let _e134 = limit; let dq = (dot(q_3, _e132) - _e134); if (dp <= 0f) { let _e140 = m; local_4 = (_e140 < 24i); } else { local_4 = false; } let _e144 = local_4; if _e144 { let _e145 = m; next[_e145] = p_3; let _e148 = m; m = (_e148 + 1i); } if ((dp <= 0f) != (dq <= 0f)) { let _e157 = m; local_5 = (_e157 < 24i); } else { local_5 = false; } let _e161 = local_5; if _e161 { let _e162 = m; next[_e162] = (p_3 + ((q_3 - p_3) * (dp / (dp - dq)))); let _e170 = m; m = (_e170 + 1i); } } continuing { let _e173 = j; j = (_e173 + 1i); } } let _e175 = m; count = _e175; j_1 = 0i; loop { let _e178 = j_1; let _e179 = m; if (_e178 < _e179) { } else { break; } { let _e181 = j_1; let _e183 = j_1; let _e185 = next[_e183]; poly[_e181] = _e185; } continuing { let _e187 = j_1; j_1 = (_e187 + 1i); } } let _e189 = count; if (_e189 < 3i) { break; } } continuing { let _e193 = w; w = (_e193 + 1i); } } let _e197 = count; o2_.count = min(_e197, 12i); loop { let _e202 = j_2; let _e204 = o2_.count; if (_e202 < _e204) { } else { break; } { let _e207 = j_2; let _e209 = j_2; let _e211 = poly[_e209]; o2_.corners[_e207] = _e211; } continuing { let _e213 = j_2; j_2 = (_e213 + 1i); } } let _e215 = o2_; return _e215; } fn toClip(px: vec2) -> vec4 { let _e5 = scene.view.x; let _e15 = scene.view.y; return vec4((((px.x / _e5) * 2f) - 1f), (1f - ((px.y / _e15) * 2f)), 0.5f, 1f); } fn pieceOut(index_2: u32, shadow: bool) -> PieceOut { var p_2: PieceOut; var lo: vec2 = vec2(1000000000f); var hi: vec2 = vec2(-1000000000f); var behind: i32 = 0i; var i_2: i32 = 0i; var at_1: vec2; var local_6: bool; var local_7: bool; var local_8: bool; var corners: array, 6> = array, 6>(vec2(0f, 0f), vec2(1f, 0f), vec2(0f, 1f), vec2(0f, 1f), vec2(1f, 0f), vec2(1f, 1f)); let _e5 = pose((index_2 / PIECE_VERTICES)); if _e5.gone { p_2.position = vec4(2f, 2f, 2f, 1f); let _e13 = p_2; return _e13; } let _e14 = outline(_e5); let d_3 = scene.camera.x; let _e21 = scene.light; let l = _e21.xyz; loop { let _e33 = i_2; if (_e33 < (_e14.count * 2i)) { } else { break; } { let _e39 = i_2; let _e45 = i_2; let _e51 = placed(_e5, vec3(_e14.corners[(_e39 / 2i)], (-(_e5.thick) * f32((_e45 % 2i))))); at_1 = (_e51.xy - (l.xy * (_e51.z / max(l.z, 0.05f)))); if !(shadow) { if (_e51.z > (d_3 * 0.999f)) { let _e68 = behind; behind = (_e68 + 1i); continue; } at_1 = (_e51.xy * (d_3 / (d_3 - _e51.z))); } let _e75 = lo; let _e76 = at_1; lo = min(_e75, _e76); let _e78 = hi; let _e79 = at_1; hi = max(_e78, _e79); } continuing { let _e82 = i_2; i_2 = (_e82 + 1i); } } let _e86 = scene.frame; let _e92 = scene.view.z; let viewLo = (-(_e86.xy) / vec2(_e92)); let _e97 = scene.view; let _e101 = scene.frame; let _e107 = scene.view.z; let viewHi = ((_e97.xy - _e101.xy) / vec2(_e107)); let _e110 = behind; if (_e110 > 0i) { lo = viewLo; hi = viewHi; } if !((_e14.count < 3i)) { let _e119 = behind; local_6 = (_e119 == (_e14.count * 2i)); } else { local_6 = true; } let _e125 = local_6; if !(_e125) { let _e129 = hi; local_7 = any((_e129 < viewLo)); } else { local_7 = true; } let _e133 = local_7; if !(_e133) { let _e137 = lo; local_8 = any((_e137 > viewHi)); } else { local_8 = true; } let gone_1 = local_8; let _e162 = lo; let _e163 = hi; let _e167 = corners[(index_2 % PIECE_VERTICES)]; let at_2 = mix(_e162, _e163, _e167); let _e172 = scene.frame; let _e177 = scene.view.z; let _e180 = toClip((_e172.xy + (at_2 * _e177))); p_2.position = select(_e180, vec4(2f, 2f, 2f, 1f), gone_1); p_2.at = at_2; p_2.center = _e5.center; p_2.seed = _e5.seed; p_2.ex = _e5.ex; p_2.ey = _e5.ey; p_2.ez = _e5.ez; p_2.look = vec4(_e5.thick, _e5.stress, _e5.tint, _e5.scale); let c_4 = _e14.corners; p_2.c0_ = vec4(c_4[0], c_4[1]); p_2.c1_ = vec4(c_4[2], c_4[3]); p_2.c2_ = vec4(c_4[4], c_4[5]); p_2.c3_ = vec4(c_4[6], c_4[7]); p_2.c4_ = vec4(c_4[8], c_4[9]); p_2.c5_ = vec4(c_4[10], c_4[11]); p_2.count = _e14.count; p_2.frame = _e5.frame; let _e233 = p_2; return _e233; } fn slab(o_5: vec3, d_1: vec3, in_3: PieceOut) -> Hit { var h_1: Hit; var c_1: array, 12>; var middle: vec2 = vec2(0f); var i_3: i32 = 0i; var walls: array, 12>; var i_4: i32 = 0i; var out_1: vec2; var enter: f32 = -1000000000f; var leave: f32 = 1000000000f; var normal: vec3 = vec3(0f, 0f, 1f); var local_9: bool; var i_5: i32 = 0i; var local_10: bool; var i_6: i32 = 0i; h_1.t = -1f; c_1 = array, 12>(in_3.c0_.xy, in_3.c0_.zw, in_3.c1_.xy, in_3.c1_.zw, in_3.c2_.xy, in_3.c2_.zw, in_3.c3_.xy, in_3.c3_.zw, in_3.c4_.xy, in_3.c4_.zw, in_3.c5_.xy, in_3.c5_.zw); let count_1 = in_3.count; loop { let _e38 = i_3; if (_e38 < count_1) { } else { break; } { let _e40 = middle; let _e41 = i_3; let _e43 = c_1[_e41]; middle = (_e40 + _e43); } continuing { let _e46 = i_3; i_3 = (_e46 + 1i); } } let _e48 = middle; middle = (_e48 / vec2(f32(count_1))); loop { let _e55 = i_4; if (_e55 < count_1) { } else { break; } { let _e57 = i_4; let a_7 = c_1[_e57]; let _e60 = i_4; let b_5 = c_1[((_e60 + 1i) % count_1)]; out_1 = normalize((vec2((b_5.y - a_7.y), (a_7.x - b_5.x)) + vec2(0.000000001f, 0f))); let _e79 = out_1; let _e80 = middle; if (dot(_e79, (_e80 - a_7)) > 0f) { let _e85 = out_1; out_1 = -(_e85); } let _e87 = i_4; let _e89 = out_1; let _e90 = out_1; walls[_e87] = vec3(_e89, dot(_e90, a_7)); } continuing { let _e94 = i_4; i_4 = (_e94 + 1i); } } if (abs(d_1.z) < 0.00000001f) { if !((o_5.z > 0f)) { local_9 = (o_5.z < -(in_3.look.x)); } else { local_9 = true; } let _e121 = local_9; if _e121 { let _e122 = h_1; return _e122; } } else { let t0_ = (-(o_5.z) / d_1.z); let t1_ = ((-(in_3.look.x) - o_5.z) / d_1.z); if (d_1.z < 0f) { enter = t0_; leave = t1_; } else { enter = t1_; leave = t0_; normal = vec3(0f, 0f, -1f); } } loop { let _e143 = i_5; if (_e143 < count_1) { } else { break; } { let _e145 = i_5; let w_2 = walls[_e145]; let across_1 = dot(d_1.xy, w_2.xy); let room = (w_2.z - dot(o_5.xy, w_2.xy)); if (abs(across_1) < 0.00000001f) { if (room < 0f) { let _e161 = h_1; return _e161; } continue; } let t = (room / across_1); if (across_1 < 0f) { let _e165 = enter; if (t > _e165) { enter = t; normal = vec3(w_2.xy, 0f); } } else { let _e170 = leave; leave = min(_e170, t); } } continuing { let _e173 = i_5; i_5 = (_e173 + 1i); } } let _e175 = enter; let _e176 = leave; if !((_e175 > _e176)) { let _e181 = enter; local_10 = (_e181 < 0f); } else { local_10 = true; } let _e185 = local_10; if _e185 { let _e186 = h_1; return _e186; } let _e188 = enter; h_1.t = _e188; let _e190 = normal; h_1.normal = _e190; let _e193 = normal.z; h_1.face = (_e193 > 0.5f); let _e198 = enter; let p_4 = (o_5.xy + (d_1.xy * _e198)); h_1.edge = 1000000000f; loop { let _e205 = i_6; if (_e205 < count_1) { } else { break; } { let _e207 = i_6; let _e210 = walls[_e207].z; let _e211 = i_6; let _e213 = walls[_e211]; let room_1 = (_e210 - dot(p_4, _e213.xy)); let _e218 = h_1.edge; if (room_1 < _e218) { h_1.edge = room_1; let _e222 = i_6; let _e224 = walls[_e222]; h_1.edgeNormal = _e224.xy; } } continuing { let _e227 = i_6; i_6 = (_e227 + 1i); } } let _e229 = h_1; return _e229; } fn poseOf(in_4: PieceOut) -> Pose { return Pose(vec2(0i), vec2(0i), vec2(0f), in_4.center, in_4.seed, in_4.ex, in_4.ey, in_4.ez, in_4.look.w, in_4.look.x, 0f, in_4.look.y, in_4.look.z, false); } @vertex fn vs(@builtin(vertex_index) i: u32) -> VsOut { var p: array, 3> = array, 3>(vec2(-1f, -1f), vec2(3f, -1f), vec2(-1f, 3f)); var o: VsOut; let _e15 = p[i]; o.position = vec4(_e15, 0f, 1f); let _e19 = o; return _e19; } @fragment fn fs(in: VsOut) -> @location(0) vec4 { var inner: Cell; var calm: f32 = 1f; var local: bool; var inside: f32; var top: f32; var tint: f32; let unitPx = scene.view.z; let dpr_1 = scene.view.w; let _e13 = scene.frame; let q_4 = ((in.position.xy - _e13.xy) / vec2(unitPx)); let r_5 = length(q_4); let _e22 = scene.wall.x; let _e26 = scene.build.z; let hole_1 = (_e22 * _e26); let gone_2 = vec4((-8f * dpr_1), 1f, 0f, 0f); if (r_5 < (hole_1 * 0.7f)) { return gone_2; } let _e37 = wallFrame(); let _e39 = voronoi(q_4, 0u, _e37); let _e40 = stress(r_5); let shards = smoothstep(0.5f, 0.8f, _e40); if !((shards > 0f)) { let _e55 = scene.wall.x; local = (r_5 < ((_e55 * 1.6f) * 1.3f)); } else { local = true; } let _e62 = local; if _e62 { let _e64 = voronoi(q_4, 1u, _e37); inner = _e64; let _e66 = inner.seed; let _e68 = inner.key; let _e69 = peelTime(_e66, _e68); if (_e69 > 0f) { return gone_2; } calm = (1f - smoothstep(-1.5f, 0f, _e69)); } let width_1 = (mix(0.32f, 3.2f, pow(_e40, 1.3f)) * dpr_1); let _e85 = plateSize(_e39.seed, 0u); let _e88 = stress(length(_e39.seed)); let _e90 = loose(_e39.seed); let s0_ = (_e88 * _e90); let _e94 = cracked(r_5, _e39.key, _e39.other, _e85); inside = (((_e39.edge * unitPx) - (width_1 * _e94)) + (((1f - _e94) * 8f) * dpr_1)); let _e108 = calm; let _e109 = plateTop(q_4, _e39.seed, _e39.key, s0_, _e85, _e108); top = _e109; let _e113 = rand(_e39.key, 6u); tint = _e113; if (shards > 0f) { let _e118 = inner.key; let key_6 = (_e118 ^ _e39.key); let _e122 = inner.seed; let _e124 = plateSize(_e122, 1u); let _e126 = inner.key; let _e128 = inner.other; let _e129 = cracked(r_5, _e126, _e128, _e124); let reached1_ = (_e129 * shards); let _e132 = inner.edge; let inside1_ = (((_e132 * unitPx) - ((width_1 * 0.55f) * reached1_)) + (((1f - reached1_) * 8f) * dpr_1)); let _e144 = inside; inside = min(_e144, inside1_); let _e146 = top; let _e148 = inner.seed; let _e149 = calm; let _e150 = plateTop(q_4, _e148, key_6, s0_, _e124, _e149); top = (_e146 + (shards * _e150)); let _e153 = tint; let _e155 = rand(key_6, 6u); tint = mix(_e153, _e155, (shards * 0.5f)); } let bevel = (mix(0.7f, 5.5f, (_e40 * _e40)) * dpr_1); let _e164 = inside; let x_3 = clamp((_e164 / bevel), 0f, 1f); let fillet = (1f - sqrt(max((1f - ((1f - x_3) * (1f - x_3))), 0f))); let _e181 = inside; let crack_1 = (1f - smoothstep(-0.6f, 0.6f, _e181)); let depth = (((width_1 * 2f) + (2f * dpr_1)) * (0.4f + _e40)); let _e195 = plaster(q_4, _e37, unitPx); let _e199 = scene.albedo.w; let bumps = select(0.5f, _e195, (_e199 > 0f)); let _e207 = scene.build.y; let _e211 = scene.build.z; let load = (_e207 * (1f - _e211)); let dent = (((0.05f * load) * exp(((-(r_5) * r_5) / (0.012f + (0.03f * load))))) * unitPx); let _e227 = top; let _e235 = scene.albedo.w; let height = (mix(((_e227 - (bevel * fillet)) + ((((bumps - 0.5f) * _e235) * dpr_1) * (1f + ((3f * load) * exp(((-(r_5) * r_5) / 0.02f)))))), -(depth), crack_1) - dent); let open = smoothstep(0.75f, 1f, _e40); let _e256 = tint; return vec4(height, crack_1, (_e256 + ((bumps - 0.5f) * 0.05f)), (1f - (crack_1 * open))); } @vertex fn vs_piece(@builtin(vertex_index) index: u32) -> PieceOut { let _e2 = pieceOut(index, false); return _e2; } @vertex fn vs_piece_shadow(@builtin(vertex_index) index_1: u32) -> PieceOut { let _e2 = pieceOut(index_1, true); return _e2; } @fragment fn fs_piece(in_1: PieceOut) -> PieceColor { var n: vec3; var albedo: vec3; var x: f32 = 1f; var b: f32 = 0.5f; var slope: vec2 = vec2(0f); var out: PieceColor; let d_4 = scene.camera.x; let eye = vec3(0f, 0f, d_4); let ray = vec3(in_1.at, -(d_4)); let _e11 = poseOf(in_1); let _e15 = local_3(_e11, (eye - in_1.center)); let _e17 = local_3(_e11, ray); let _e18 = slab((in_1.seed + _e15), _e17, in_1); if (_e18.t < 0f) { discard; } let dpr_2 = scene.view.w; let z_1 = (eye.z + (ray.z * _e18.t)); n = _e18.normal; let _e35 = scene.shard; albedo = (_e35.xyz * 0.82f); if _e18.face { let _e46 = scene.view.z; let pxPerUnit_1 = (((_e46 * in_1.look.w) * d_4) / max((d_4 - z_1), 0.001f)); let bevel_1 = (mix(0.7f, 5.5f, (in_1.look.y * in_1.look.y)) * dpr_2); x = clamp(((_e18.edge * pxPerUnit_1) / bevel_1), 0f, 1f); let _e74 = local_3(_e11, (eye - in_1.center)); let _e77 = local_3(_e11, ray); let at_3 = ((in_1.seed.xy + _e74.xy) + (_e77.xy * _e18.t)); let _e90 = scene.albedo.w; if (_e90 > 0f) { let step_ = (dpr_2 / pxPerUnit_1); let _e95 = plaster(at_3, in_1.frame, pxPerUnit_1); b = _e95; let _e100 = plaster((at_3 + vec2(step_, 0f)), in_1.frame, pxPerUnit_1); let _e105 = plaster((at_3 + vec2(0f, step_)), in_1.frame, pxPerUnit_1); let _e107 = b; slope = (vec2(_e100, _e105) - vec2(_e107)); } let _e111 = x; let _e117 = slope; let _e121 = scene.albedo.w; n = normalize(vec3((((_e18.edgeNormal * (1f - _e111)) * 1.6f) - ((_e117 * _e121) * dpr_2)), 1f)); let _e130 = scene.albedo; let _e134 = b; albedo = (_e130.xyz * (0.93f + (0.07f * (in_1.look.z + ((_e134 - 0.5f) * 0.05f))))); } let _e147 = n.x; let _e151 = n.y; let _e156 = n.z; let world = normalize((((in_1.ex * _e147) + (in_1.ey * _e151)) + (in_1.ez * _e156))); let _e162 = scene.light; let l_1 = _e162.xyz; let _e170 = scene.camera.w; let sun = (max(dot(world, l_1), 0f) * _e170); let sky = (0.26f * (0.55f + (0.45f * max(world.z, -0.6f)))); let _e183 = albedo; let _e186 = x; out.color = vec4(((_e183 * (sky + sun)) * (1f - (0.3f * (1f - _e186)))), 1f); out.depth = (clamp(((d_4 - z_1) / d_4), 0f, 1f) * 0.999f); let _e204 = out; return _e204; } @fragment fn fs_piece_shadow(in_2: PieceOut) -> @location(0) vec4 { let start = vec3(in_2.at, 0f); let _e6 = scene.light; let toward_1 = _e6.xyz; let _e8 = poseOf(in_2); let _e12 = local_3(_e8, (start - in_2.center)); let _e14 = local_3(_e8, toward_1); let _e15 = slab((in_2.seed + _e12), _e14, in_2); if (_e15.t < 0f) { discard; } let height_1 = (_e15.t * toward_1.z); let _e25 = scene.camera.x; return vec4(1f, (1f - clamp((height_1 / _e25), 0f, 1f)), 0f, 1f); }  ÀðЂ�‘Íà?vsmaino$#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Seed { vec2 pos; uint key; }; struct Cell { vec2 seed; uint key; float edge; uint other; }; struct VsOut { vec4 position; }; struct Pose { ivec2 cell; ivec2 plate; vec2 frame; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { vec2 corners[12]; int count; }; struct PieceOut { vec4 position; vec2 at; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; vec4 look; vec4 c0_; vec4 c1_; vec4 c2_; vec4 c3_; vec4 c4_; vec4 c5_; int count; vec2 frame; }; struct Hit { float t; vec3 normal; bool face; float edge; vec2 edgeNormal; }; struct PieceColor { vec4 color; float depth; }; const uint PIECE_VERTICES = 6u; const uint PLATES_A_CELL = 4u; uint pcg(uint v) { uint s_2 = ((v * 747796405u) + 2891336453u); uint w_1 = (((s_2 >> ((s_2 >> 28u) + 4u)) ^ s_2) * 277803737u); return ((w_1 >> 22u) ^ w_1); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } float density(uint level) { return ((level == 1u) ? 1.5 : 1.0); } float looseTime(uint key_2) { float _e2 = rand(key_2, 21u); float _e7 = rand(key_2, 22u); return (log((mix(1.12, 1.6, _e2) / mix(0.85, 1.05, _e7))) / 0.042); } float valueNoise(vec2 p_1, int period, uint salt) { ivec2 i_7 = ivec2(floor(p_1)); vec2 f = fract(p_1); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); uint y0_ = ((uint((((i_7.y % period) + period) % period)) * 668265261u) + salt); uint y1_ = ((uint(((((i_7.y + 1) % period) + period) % period)) * 668265261u) + salt); uint _e36 = pcg(((uint(i_7.x) * 374761393u) + y0_)); float _e37 = unit(_e36); uint _e45 = pcg(((uint((i_7.x + 1)) * 374761393u) + y0_)); float _e46 = unit(_e45); uint _e52 = pcg(((uint(i_7.x) * 374761393u) + y1_)); float _e53 = unit(_e52); uint _e61 = pcg(((uint((i_7.x + 1)) * 374761393u) + y1_)); float _e62 = unit(_e61); return mix(mix(_e37, _e46, u.x), mix(_e53, _e62, u.x), u.y); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_3 = sin(angle); float k_1 = cos(angle); return (((v_1 * k_1) + (cross(axis, v_1) * s_3)) + ((axis * dot(axis, v_1)) * (1.0 - k_1))); } vec3 randomAxis(uint key_4) { float _e2 = rand(key_4, 10u); float z = ((_e2 * 2.0) - 1.0); float _e8 = rand(key_4, 11u); float a_1 = (_e8 * 6.2831855); return vec3((sqrt(max((1.0 - (z * z)), 0.0)) * vec2(cos(a_1), sin(a_1))), z); } vec3 roll(vec3 v_2, float angle_1) { float c_2 = cos(angle_1); float s_4 = sin(angle_1); return vec3(((v_2.x * c_2) - (v_2.y * s_4)), ((v_2.x * s_4) + (v_2.y * c_2)), v_2.z); } vec3 placed(Pose o_2, vec3 x_1) { vec3 v_4 = ((x_1 - o_2.seed) * o_2.scale); return (((o_2.center + (o_2.ex * v_4.x)) + (o_2.ey * v_4.y)) + (o_2.ez * v_4.z)); } vec3 local_3(Pose o_3, vec3 v_3) { return (vec3(dot(v_3, o_3.ex), dot(v_3, o_3.ey), dot(v_3, o_3.ez)) / vec3(o_3.scale)); } Hit slab(vec3 o_5, vec3 d_1, PieceOut in_3) { Hit h_1 = Hit(0.0, vec3(0.0), false, 0.0, vec2(0.0)); vec2 c_1[12] = vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 middle = vec2(0.0); int i_3 = 0; vec3 walls[12] = vec3[12](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); int i_4 = 0; vec2 out_1 = vec2(0.0); float enter = -1000000000.0; float leave = 1000000000.0; vec3 normal = vec3(0.0, 0.0, 1.0); bool local_9 = false; int i_5 = 0; bool local_10 = false; int i_6 = 0; h_1.t = -1.0; c_1 = vec2[12](in_3.c0_.xy, in_3.c0_.zw, in_3.c1_.xy, in_3.c1_.zw, in_3.c2_.xy, in_3.c2_.zw, in_3.c3_.xy, in_3.c3_.zw, in_3.c4_.xy, in_3.c4_.zw, in_3.c5_.xy, in_3.c5_.zw); int count_1 = in_3.count; bool loop_init = true; while(true) { if (!loop_init) { int _e46 = i_3; i_3 = (_e46 + 1); } loop_init = false; int _e38 = i_3; if ((_e38 < count_1)) { } else { break; } { vec2 _e40 = middle; int _e41 = i_3; vec2 _e43 = c_1[_e41]; middle = (_e40 + _e43); } } vec2 _e48 = middle; middle = (_e48 / vec2(float(count_1))); bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e94 = i_4; i_4 = (_e94 + 1); } loop_init_1 = false; int _e55 = i_4; if ((_e55 < count_1)) { } else { break; } { int _e57 = i_4; vec2 a_2 = c_1[_e57]; int _e60 = i_4; vec2 b_2 = c_1[((_e60 + 1) % count_1)]; out_1 = normalize((vec2((b_2.y - a_2.y), (a_2.x - b_2.x)) + vec2(1e-9, 0.0))); vec2 _e79 = out_1; vec2 _e80 = middle; if ((dot(_e79, (_e80 - a_2)) > 0.0)) { vec2 _e85 = out_1; out_1 = -(_e85); } int _e87 = i_4; vec2 _e89 = out_1; vec2 _e90 = out_1; walls[_e87] = vec3(_e89, dot(_e90, a_2)); } } if ((abs(d_1.z) < 1e-8)) { if (!((o_5.z > 0.0))) { local_9 = (o_5.z < -(in_3.look.x)); } else { local_9 = true; } bool _e121 = local_9; if (_e121) { Hit _e122 = h_1; return _e122; } } else { float t0_ = (-(o_5.z) / d_1.z); float t1_ = ((-(in_3.look.x) - o_5.z) / d_1.z); if ((d_1.z < 0.0)) { enter = t0_; leave = t1_; } else { enter = t1_; leave = t0_; normal = vec3(0.0, 0.0, -1.0); } } bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e173 = i_5; i_5 = (_e173 + 1); } loop_init_2 = false; int _e143 = i_5; if ((_e143 < count_1)) { } else { break; } { int _e145 = i_5; vec3 w_2 = walls[_e145]; float across = dot(d_1.xy, w_2.xy); float room = (w_2.z - dot(o_5.xy, w_2.xy)); if ((abs(across) < 1e-8)) { if ((room < 0.0)) { Hit _e161 = h_1; return _e161; } continue; } float t = (room / across); if ((across < 0.0)) { float _e165 = enter; if ((t > _e165)) { enter = t; normal = vec3(w_2.xy, 0.0); } } else { float _e170 = leave; leave = min(_e170, t); } } } float _e175 = enter; float _e176 = leave; if (!((_e175 > _e176))) { float _e181 = enter; local_10 = (_e181 < 0.0); } else { local_10 = true; } bool _e185 = local_10; if (_e185) { Hit _e186 = h_1; return _e186; } float _e188 = enter; h_1.t = _e188; vec3 _e190 = normal; h_1.normal = _e190; float _e193 = normal.z; h_1.face = (_e193 > 0.5); float _e198 = enter; vec2 p_3 = (o_5.xy + (d_1.xy * _e198)); h_1.edge = 1000000000.0; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e227 = i_6; i_6 = (_e227 + 1); } loop_init_3 = false; int _e205 = i_6; if ((_e205 < count_1)) { } else { break; } { int _e207 = i_6; float _e210 = walls[_e207].z; int _e211 = i_6; vec3 _e213 = walls[_e211]; float room_1 = (_e210 - dot(p_3, _e213.xy)); float _e218 = h_1.edge; if ((room_1 < _e218)) { h_1.edge = room_1; int _e222 = i_6; vec3 _e224 = walls[_e222]; h_1.edgeNormal = _e224.xy; } } } Hit _e229 = h_1; return _e229; } Pose poseOf(PieceOut in_4) { return Pose(ivec2(0), ivec2(0), vec2(0.0), in_4.center, in_4.seed, in_4.ex, in_4.ey, in_4.ez, in_4.look.w, in_4.look.x, 0.0, in_4.look.y, in_4.look.z, false); } void main() { uint i = uint(gl_VertexID); vec2 p[3] = vec2[3](vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0)); VsOut o = VsOut(vec4(0.0)); vec2 _e15 = p[i]; o.position = vec4(_e15, 0.0, 1.0); VsOut _e19 = o; gl_Position = _e19.position; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fsmainâŽ#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Seed { vec2 pos; uint key; }; struct Cell { vec2 seed; uint key; float edge; uint other; }; struct VsOut { vec4 position; }; struct Pose { ivec2 cell; ivec2 plate; vec2 frame; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { vec2 corners[12]; int count; }; struct PieceOut { vec4 position; vec2 at; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; vec4 look; vec4 c0_; vec4 c1_; vec4 c2_; vec4 c3_; vec4 c4_; vec4 c5_; int count; vec2 frame; }; struct Hit { float t; vec3 normal; bool face; float edge; vec2 edgeNormal; }; struct PieceColor { vec4 color; float depth; }; const uint PIECE_VERTICES = 6u; const uint PLATES_A_CELL = 4u; layout(std140) uniform Scene_block_0Fragment { Scene _group_0_binding_0_fs; }; layout(location = 0) out vec4 _fs2p_location0; uint pcg(uint v) { uint s_2 = ((v * 747796405u) + 2891336453u); uint w_1 = (((s_2 >> ((s_2 >> 28u) + 4u)) ^ s_2) * 277803737u); return ((w_1 >> 22u) ^ w_1); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } float density(uint level) { return ((level == 1u) ? 1.5 : 1.0); } Seed seedAt(ivec2 c, uint level_1, vec2 frame) { Seed s = Seed(vec2(0.0), 0u); float _e3 = density(level_1); float _e7 = _group_0_binding_0_fs.wall.z; float perRadian = ((_e7 * _e3) / 6.2831855); float _e14 = _group_0_binding_0_fs.wall.z; int around = int(roundEven((_e14 * _e3))); int wrap = int(roundEven((1024.0 * _e3))); uint i_7 = uint((((c.x % wrap) + wrap) % wrap)); uint j_3 = uint((((c.y % around) + around) % around)); uint _e35 = pcg((j_3 + (level_1 * 5369127u))); uint _e37 = pcg((i_7 + _e35)); float _e38 = unit(_e37); uint _e39 = pcg(_e37); float _e40 = unit(_e39); vec2 jitter = (vec2(0.5) + ((vec2(_e38, _e40) - vec2(0.5)) * 0.8)); vec2 g_1 = ((vec2(c) + jitter) + (frame * _e3)); float r_2 = exp((g_1.x / perRadian)); float a_1 = (g_1.y / perRadian); s.pos = (r_2 * vec2(cos(a_1), sin(a_1))); s.key = _e37; Seed _e66 = s; return _e66; } Cell voronoi(vec2 q, uint level_2, vec2 frame_1) { vec2 pos[9] = vec2[9](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); uint keys[9] = uint[9](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u); float best = 1000000000.0; int nearest = 0; int n_1 = 0; Cell cell = Cell(vec2(0.0), 0u, 0.0, 0u); int n_2 = 0; float _e3 = density(level_2); float _e7 = _group_0_binding_0_fs.wall.z; float perRadian_1 = ((_e7 * _e3) / 6.2831855); vec2 g_2 = ((vec2(log(max(length(q), 0.0001)), atan(q.y, q.x)) * perRadian_1) - (frame_1 * _e3)); ivec2 base = ivec2(floor(g_2)); bool loop_init = true; while(true) { if (!loop_init) { int _e63 = n_1; n_1 = (_e63 + 1); } loop_init = false; int _e32 = n_1; if ((_e32 < 9)) { } else { break; } { int _e35 = n_1; int _e40 = n_1; Seed _e47 = seedAt((base + ivec2(((_e35 % 3) - 1), ((_e40 / 3) - 1))), level_2, frame_1); int _e48 = n_1; pos[_e48] = _e47.pos; int _e51 = n_1; keys[_e51] = _e47.key; float d_2 = dot((q - _e47.pos), (q - _e47.pos)); float _e59 = best; if ((d_2 < _e59)) { best = d_2; int _e61 = n_1; nearest = _e61; } } } int _e65 = nearest; vec2 a_2 = pos[_e65]; cell.seed = a_2; int _e71 = nearest; uint _e73 = keys[_e71]; cell.key = _e73; cell.edge = 1000000000.0; uint _e78 = cell.key; cell.other = _e78; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e106 = n_2; n_2 = (_e106 + 1); } loop_init_1 = false; int _e81 = n_2; if ((_e81 < 9)) { } else { break; } { int _e84 = n_2; int _e85 = nearest; if ((_e84 == _e85)) { continue; } int _e87 = n_2; vec2 b_2 = pos[_e87]; float e = dot(((0.5 * (a_2 + b_2)) - q), normalize((b_2 - a_2))); float _e98 = cell.edge; if ((e < _e98)) { cell.edge = e; int _e102 = n_2; uint _e104 = keys[_e102]; cell.other = _e104; } } } Cell _e108 = cell; return _e108; } vec2 wallFrame() { vec4 _e2 = _group_0_binding_0_fs.frame; return _e2.zw; } float stress(float r) { float _e4 = _group_0_binding_0_fs.wall.x; float _e8 = _group_0_binding_0_fs.build.z; float hole = (_e4 * _e8); float _e15 = _group_0_binding_0_fs.wall.y; float _e24 = _group_0_binding_0_fs.build.y; return (clamp(exp((-((r - hole)) / _e15)), 0.0, 1.0) * _e24); } float peelTime(vec2 seed, uint key_1) { float _e5 = _group_0_binding_0_fs.build.z; if ((_e5 < 0.01)) { return -1000.0; } float _e12 = _group_0_binding_0_fs.wall.x; float _e14 = rand(key_1, 21u); float crack = (_e12 * mix(1.12, 1.6, _e14)); return (log((crack / max(length(seed), 0.0001))) / 0.042); } float looseTime(uint key_2) { float _e2 = rand(key_2, 21u); float _e7 = rand(key_2, 22u); return (log((mix(1.12, 1.6, _e2) / mix(0.85, 1.05, _e7))) / 0.042); } float plateSize(vec2 seed_1, uint level_3) { float _e8 = _group_0_binding_0_fs.wall.z; float _e9 = density(level_3); return ((length(seed_1) * 6.2831855) / (_e8 * _e9)); } float cracked(float r_1, uint a, uint b_1, float size) { float _e5 = rand(a, 9u); float _e7 = rand(b_1, 9u); float pace = (0.8 + (0.2 * (_e5 + _e7))); float _e16 = _group_0_binding_0_fs.view.z; float _e21 = _group_0_binding_0_fs.view.w; float px_1 = ((size * _e16) / _e21); float _e26 = _group_0_binding_0_fs.build.x; return (clamp((((_e26 * pace) - r_1) / 0.04), 0.0, 1.0) * smoothstep(1.0, 14.0, px_1)); } float loose(vec2 seed_2) { float _e4 = _group_0_binding_0_fs.build.x; return clamp((((_e4 * 0.85) - length(seed_2)) / 0.06), 0.0, 1.0); } float knocked(vec2 seed_3, float size_1) { float lift = 0.0; vec4 hits = _group_0_binding_0_fs.hits; float _e8 = _group_0_binding_0_fs.wall.x; float ring = (_e8 + (hits.x * 1.4)); float across = ((length(seed_3) - ring) / 0.09); lift = ((hits.y * exp(((-(across) * across) - (hits.x * 1.8)))) * 0.5); vec4 _e31 = _group_0_binding_0_fs.strike; float toStrike = (length((seed_3 - _e31.xy)) / 0.16); float _e37 = lift; lift = (_e37 + ((hits.w * exp(((-(toStrike) * toStrike) - (hits.z * 2.2)))) * 0.6)); float _e50 = lift; return (_e50 * size_1); } float valueNoise(vec2 p_1, int period, uint salt) { ivec2 i_8 = ivec2(floor(p_1)); vec2 f = fract(p_1); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); uint y0_ = ((uint((((i_8.y % period) + period) % period)) * 668265261u) + salt); uint y1_ = ((uint(((((i_8.y + 1) % period) + period) % period)) * 668265261u) + salt); uint _e36 = pcg(((uint(i_8.x) * 374761393u) + y0_)); float _e37 = unit(_e36); uint _e45 = pcg(((uint((i_8.x + 1)) * 374761393u) + y0_)); float _e46 = unit(_e45); uint _e52 = pcg(((uint(i_8.x) * 374761393u) + y1_)); float _e53 = unit(_e52); uint _e61 = pcg(((uint((i_8.x + 1)) * 374761393u) + y1_)); float _e62 = unit(_e61); return mix(mix(_e37, _e46, u.x), mix(_e53, _e62, u.x), u.y); } float octaves(vec2 g, float ratio, uint salt_1) { float k_1 = log2(max(ratio, 1.0)); float n_4 = floor(k_1); float f_1 = (k_1 - n_4); float m_1 = exp2(n_4); float _e13 = _group_0_binding_0_fs.wall.z; float _e21 = valueNoise((g * m_1), int(roundEven((_e13 * m_1))), (salt_1 + (uint(n_4) * 2654435769u))); float a_3 = (_e21 - 0.5); float _e30 = _group_0_binding_0_fs.wall.z; float _e42 = valueNoise(((g * m_1) * 2.0), int(roundEven(((_e30 * m_1) * 2.0))), (salt_1 + (uint((n_4 + 1.0)) * 2654435769u))); float b_3 = (_e42 - 0.5); float wa = (1.0 - f_1); return (0.5 + (((a_3 * wa) + (b_3 * f_1)) * inversesqrt(((wa * wa) + (f_1 * f_1))))); } float plaster(vec2 q_1, vec2 frame_2, float pxPerUnit) { float _e6 = _group_0_binding_0_fs.wall.z; float perRadian_2 = (_e6 / 6.2831855); float r_3 = max(length(q_1), 0.0001); vec2 g_3 = ((vec2(log(r_3), atan(q_1.y, q_1.x)) * perRadian_2) - frame_2); float cellPx = ((r_3 * pxPerUnit) / perRadian_2); float dpr = _group_0_binding_0_fs.view.w; float _e29 = octaves(g_3, (cellPx / (2.2 * dpr)), 11u); float _e36 = octaves(g_3, (cellPx / (11.0 * dpr)), 23u); return ((0.65 * _e29) + (0.35 * _e36)); } float plateTop(vec2 q_2, vec2 seed_4, uint key_3, float s_1, float size_2, float calm_1) { float _e10 = rand(key_3, 3u); float lift_1 = ((((0.2 * s_1) * s_1) * (0.25 + (0.75 * _e10))) * size_2); float _e18 = rand(key_3, 4u); float a_4 = (_e18 * 6.2831855); float _e28 = rand(key_3, 5u); vec2 tilt = (((vec2(cos(a_4), sin(a_4)) * 0.4) * s_1) * _e28); float _e34 = knocked(seed_4, size_2); float _e39 = _group_0_binding_0_fs.view.z; return ((((lift_1 + dot(tilt, (q_2 - seed_4))) * calm_1) + _e34) * _e39); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_3 = sin(angle); float k_2 = cos(angle); return (((v_1 * k_2) + (cross(axis, v_1) * s_3)) + ((axis * dot(axis, v_1)) * (1.0 - k_2))); } vec3 randomAxis(uint key_4) { float _e2 = rand(key_4, 10u); float z = ((_e2 * 2.0) - 1.0); float _e8 = rand(key_4, 11u); float a_5 = (_e8 * 6.2831855); return vec3((sqrt(max((1.0 - (z * z)), 0.0)) * vec2(cos(a_5), sin(a_5))), z); } vec3 roll(vec3 v_2, float angle_1) { float c_2 = cos(angle_1); float s_4 = sin(angle_1); return vec3(((v_2.x * c_2) - (v_2.y * s_4)), ((v_2.x * s_4) + (v_2.y * c_2)), v_2.z); } Pose pose(uint n_3) { Pose o_1 = Pose(ivec2(0), ivec2(0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), 0.0, 0.0, 0.0, 0.0, 0.0, false); ivec2 near[4] = ivec2[4](ivec2(0), ivec2(0), ivec2(0), ivec2(0)); float far[4] = float[4](1000000000.0, 1000000000.0, 1000000000.0, 1000000000.0); int i_1 = 0; float d = 0.0; ivec2 at = ivec2(0); int k = 0; bool gone = false; bool local_1 = false; bool local_2 = false; float _e5 = _group_0_binding_0_fs.wall.z; uint around_1 = uint(roundEven((_e5 * 1.5))); uint pick = (n_3 % PLATES_A_CELL); uint m_2 = (n_3 / PLATES_A_CELL); vec2 _e14 = wallFrame(); float _e18 = _group_0_binding_0_fs.wall.z; float perRadian_3 = (_e18 / 6.2831855); float _e24 = _group_0_binding_0_fs.wall.x; int top_1 = (int(floor((((log((_e24 * 1.6)) * perRadian_3) - _e14.x) * 1.5))) + 2); ivec2 cell_1 = ivec2((top_1 - int((m_2 / around_1))), int((m_2 % around_1))); Seed _e44 = seedAt(cell_1, 1u, _e14); vec2 g_4 = ((vec2(log(max(length(_e44.pos), 0.0001)), atan(_e44.pos.y, _e44.pos.x)) * perRadian_3) - _e14); ivec2 base_1 = ivec2(floor(g_4)); near = ivec2[4](base_1, base_1, base_1, base_1); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e118 = i_1; i_1 = (_e118 + 1); } loop_init_2 = false; int _e70 = i_1; if ((_e70 < 9)) { } else { break; } { int _e73 = i_1; int _e78 = i_1; ivec2 c_3 = (base_1 + ivec2(((_e73 % 3) - 1), ((_e78 / 3) - 1))); Seed _e86 = seedAt(c_3, 0u, _e14); d = distance(_e86.pos, _e44.pos); at = c_3; k = 0; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e115 = k; k = (_e115 + 1); } loop_init_3 = false; int _e94 = k; if ((_e94 < 4)) { } else { break; } { float _e97 = d; int _e98 = k; float _e100 = far[_e98]; if ((_e97 < _e100)) { int _e102 = k; float keepD = far[_e102]; int _e105 = k; ivec2 keepC = near[_e105]; int _e108 = k; float _e110 = d; far[_e108] = _e110; int _e111 = k; ivec2 _e113 = at; near[_e111] = _e113; d = keepD; at = keepC; } } } } } ivec2 _e122 = near[pick]; o_1.plate = _e122; float _e125 = plateSize(_e44.pos, 1u); float _e127 = far[pick]; float _e129 = far[0]; gone = (_e127 > (_e129 + (2.6 * _e125))); float _e137 = peelTime(_e44.pos, _e44.key); float _e139 = looseTime(_e44.key); float flying = max((_e137 - _e139), 0.0); float back = ((flying * 0.042) * perRadian_3); float _e150 = _group_0_binding_0_fs.shard.w; o_1.frame = (_e14 + vec2(back, (back * _e150))); o_1.cell = cell_1; ivec2 _e156 = o_1.plate; vec2 _e159 = o_1.frame; Seed _e160 = seedAt(_e156, 0u, _e159); uint key_5 = (_e44.key ^ _e160.key); vec2 _e166 = o_1.frame; Seed _e167 = seedAt(cell_1, 1u, _e166); vec3 seed_5 = vec3(_e167.pos, 0.0); vec2 out_2 = normalize(seed_5.xy); vec3 axis_1 = vec3(-(out_2.y), out_2.x, 0.0); vec3 hinge = vec3((seed_5.xy + ((out_2 * 0.5) * _e125)), 0.0); float x_2 = clamp((_e137 / _e139), 0.0, 1.0); float _e191 = rand(_e44.key, 23u); float lean = mix(0.5, 1.1, _e191); float turn = (lean * pow(x_2, 2.2)); float spin = (((lean * 2.2) * pow(x_2, 1.2)) / _e139); vec3 _e205 = rotate((seed_5 - hinge), axis_1, turn); vec3 lifted = (hinge + _e205); vec3 _e208 = randomAxis(key_5); float _e210 = rand(key_5, 12u); vec3 tumble = ((axis_1 * spin) + (_e208 * mix(0.8, 2.6, _e210))); float rate = length(tumble); vec3 around3_ = (tumble / vec3(max(rate, 1e-5))); float _e230 = rand(key_5, 27u); vec2 apart = (normalize(((seed_5.xy - _e160.pos) + vec2(1e-5, 0.0))) * mix(0.01, 0.05, _e230)); float _e239 = rand(key_5, 26u); vec3 velocity = (cross((axis_1 * spin), (lifted - hinge)) + vec3(apart, mix(0.04, 0.12, _e239))); vec3 center = ((lifted + (velocity * flying)) + vec3(0.0, 0.0, ((0.15 * flying) * flying))); float shrink = exp((-0.042 * flying)); float _e262 = _group_0_binding_0_fs.shard.w; float twist = ((-0.042 * flying) * _e262); float after = (rate * flying); vec3 _e266 = roll(center, twist); o_1.center = (_e266 * shrink); o_1.seed = seed_5; vec3 _e274 = rotate(vec3(1.0, 0.0, 0.0), axis_1, turn); vec3 _e275 = rotate(_e274, around3_, after); vec3 _e276 = roll(_e275, twist); o_1.ex = _e276; vec3 _e282 = rotate(vec3(0.0, 1.0, 0.0), axis_1, turn); vec3 _e283 = rotate(_e282, around3_, after); vec3 _e284 = roll(_e283, twist); o_1.ey = _e284; vec3 _e290 = rotate(vec3(0.0, 0.0, 1.0), axis_1, turn); vec3 _e291 = rotate(_e290, around3_, after); vec3 _e292 = roll(_e291, twist); o_1.ez = _e292; o_1.scale = shrink; float _e297 = plateSize(_e160.pos, 0u); o_1.thick = (0.16 * _e297); o_1.reach = _e125; float _e305 = stress((length(_e160.pos) * shrink)); o_1.stress = _e305; float _e309 = rand(_e160.key, 6u); float _e311 = rand(key_5, 6u); float _e313 = o_1.stress; o_1.tint = mix(_e309, _e311, (smoothstep(0.5, 0.8, _e313) * 0.5)); bool _e321 = gone; if (!(_e321)) { local_1 = (_e137 <= 0.0); } else { local_1 = true; } bool _e328 = local_1; if (!(_e328)) { local_2 = (flying > 8.0); } else { local_2 = true; } bool _e335 = local_2; o_1.gone = _e335; Pose _e336 = o_1; return _e336; } vec3 placed(Pose o_2, vec3 x_1) { vec3 v_4 = ((x_1 - o_2.seed) * o_2.scale); return (((o_2.center + (o_2.ex * v_4.x)) + (o_2.ey * v_4.y)) + (o_2.ez * v_4.z)); } vec3 local_3(Pose o_3, vec3 v_3) { return (vec3(dot(v_3, o_3.ex), dot(v_3, o_3.ey), dot(v_3, o_3.ez)) / vec3(o_3.scale)); } Outline outline(Pose o_4) { vec2 poly[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 next[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); int count = 4; int w = 0; vec2 toward = vec2(0.0); float limit = 0.0; int m = 0; int j = 0; bool local_4 = false; bool local_5 = false; int j_1 = 0; Outline o2_ = Outline(vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)), 0); int j_2 = 0; float _e10 = _group_0_binding_0_fs.view.w; float _e15 = _group_0_binding_0_fs.view.z; float width = ((mix(0.32, 3.2, pow(o_4.stress, 1.3)) * _e10) / _e15); float fine = ((width * 0.55) * smoothstep(0.5, 0.8, o_4.stress)); vec2 a_6 = o_4.seed.xy; Seed _e29 = seedAt(o_4.plate, 0u, o_4.frame); vec2 b_4 = _e29.pos; float r_4 = (o_4.reach * 1.5); poly[0] = (a_6 + vec2(-(r_4), -(r_4))); poly[1] = (a_6 + vec2(r_4, -(r_4))); poly[2] = (a_6 + vec2(r_4, r_4)); poly[3] = (a_6 + vec2(-(r_4), r_4)); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e193 = w; w = (_e193 + 1); } loop_init_4 = false; int _e56 = w; if ((_e56 < 16)) { } else { break; } { int _e59 = w; int i_9 = (_e59 % 8); int k_3 = ((i_9 >= 4) ? (i_9 + 1) : i_9); ivec2 off = ivec2(((k_3 % 3) - 1), ((k_3 / 3) - 1)); toward = vec2(0.0); limit = 0.0; int _e80 = w; if ((_e80 < 8)) { Seed _e87 = seedAt((o_4.cell + off), 1u, o_4.frame); vec2 s_5 = _e87.pos; toward = normalize((s_5 - a_6)); vec2 _e94 = toward; limit = (dot((0.5 * (a_6 + s_5)), _e94) - fine); } else { Seed _e101 = seedAt((o_4.plate + off), 0u, o_4.frame); vec2 s_6 = _e101.pos; toward = normalize((s_6 - b_4)); vec2 _e108 = toward; limit = (dot((0.5 * (b_4 + s_6)), _e108) - width); } m = 0; j = 0; bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e173 = j; j = (_e173 + 1); } loop_init_5 = false; int _e115 = j; int _e116 = count; if ((_e115 < _e116)) { } else { break; } { int _e118 = j; vec2 p_3 = poly[_e118]; int _e121 = j; int _e124 = count; vec2 q_3 = poly[((_e121 + 1) % _e124)]; vec2 _e128 = toward; float _e130 = limit; float dp = (dot(p_3, _e128) - _e130); vec2 _e132 = toward; float _e134 = limit; float dq = (dot(q_3, _e132) - _e134); if ((dp <= 0.0)) { int _e140 = m; local_4 = (_e140 < 24); } else { local_4 = false; } bool _e144 = local_4; if (_e144) { int _e145 = m; next[_e145] = p_3; int _e148 = m; m = (_e148 + 1); } if (((dp <= 0.0) != (dq <= 0.0))) { int _e157 = m; local_5 = (_e157 < 24); } else { local_5 = false; } bool _e161 = local_5; if (_e161) { int _e162 = m; next[_e162] = (p_3 + ((q_3 - p_3) * (dp / (dp - dq)))); int _e170 = m; m = (_e170 + 1); } } } int _e175 = m; count = _e175; j_1 = 0; bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e187 = j_1; j_1 = (_e187 + 1); } loop_init_6 = false; int _e178 = j_1; int _e179 = m; if ((_e178 < _e179)) { } else { break; } { int _e181 = j_1; int _e183 = j_1; vec2 _e185 = next[_e183]; poly[_e181] = _e185; } } int _e189 = count; if ((_e189 < 3)) { break; } } } int _e197 = count; o2_.count = min(_e197, 12); bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e213 = j_2; j_2 = (_e213 + 1); } loop_init_7 = false; int _e202 = j_2; int _e204 = o2_.count; if ((_e202 < _e204)) { } else { break; } { int _e207 = j_2; int _e209 = j_2; vec2 _e211 = poly[_e209]; o2_.corners[_e207] = _e211; } } Outline _e215 = o2_; return _e215; } vec4 toClip(vec2 px) { float _e5 = _group_0_binding_0_fs.view.x; float _e15 = _group_0_binding_0_fs.view.y; return vec4((((px.x / _e5) * 2.0) - 1.0), (1.0 - ((px.y / _e15) * 2.0)), 0.5, 1.0); } PieceOut pieceOut(uint index_2, bool shadow) { PieceOut p_2 = PieceOut(vec4(0.0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), 0, vec2(0.0)); vec2 lo = vec2(1000000000.0); vec2 hi = vec2(-1000000000.0); int behind = 0; int i_2 = 0; vec2 at_1 = vec2(0.0); bool local_6 = false; bool local_7 = false; bool local_8 = false; vec2 corners[6] = vec2[6](vec2(0.0, 0.0), vec2(1.0, 0.0), vec2(0.0, 1.0), vec2(0.0, 1.0), vec2(1.0, 0.0), vec2(1.0, 1.0)); Pose _e5 = pose((index_2 / PIECE_VERTICES)); if (_e5.gone) { p_2.position = vec4(2.0, 2.0, 2.0, 1.0); PieceOut _e13 = p_2; return _e13; } Outline _e14 = outline(_e5); float d_3 = _group_0_binding_0_fs.camera.x; vec4 _e21 = _group_0_binding_0_fs.light; vec3 l = _e21.xyz; bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e82 = i_2; i_2 = (_e82 + 1); } loop_init_8 = false; int _e33 = i_2; if ((_e33 < (_e14.count * 2))) { } else { break; } { int _e39 = i_2; int _e45 = i_2; vec3 _e51 = placed(_e5, vec3(_e14.corners[(_e39 / 2)], (-(_e5.thick) * float((_e45 % 2))))); at_1 = (_e51.xy - (l.xy * (_e51.z / max(l.z, 0.05)))); if (!(shadow)) { if ((_e51.z > (d_3 * 0.999))) { int _e68 = behind; behind = (_e68 + 1); continue; } at_1 = (_e51.xy * (d_3 / (d_3 - _e51.z))); } vec2 _e75 = lo; vec2 _e76 = at_1; lo = min(_e75, _e76); vec2 _e78 = hi; vec2 _e79 = at_1; hi = max(_e78, _e79); } } vec4 _e86 = _group_0_binding_0_fs.frame; float _e92 = _group_0_binding_0_fs.view.z; vec2 viewLo = (-(_e86.xy) / vec2(_e92)); vec4 _e97 = _group_0_binding_0_fs.view; vec4 _e101 = _group_0_binding_0_fs.frame; float _e107 = _group_0_binding_0_fs.view.z; vec2 viewHi = ((_e97.xy - _e101.xy) / vec2(_e107)); int _e110 = behind; if ((_e110 > 0)) { lo = viewLo; hi = viewHi; } if (!((_e14.count < 3))) { int _e119 = behind; local_6 = (_e119 == (_e14.count * 2)); } else { local_6 = true; } bool _e125 = local_6; if (!(_e125)) { vec2 _e129 = hi; local_7 = any(lessThan(_e129, viewLo)); } else { local_7 = true; } bool _e133 = local_7; if (!(_e133)) { vec2 _e137 = lo; local_8 = any(greaterThan(_e137, viewHi)); } else { local_8 = true; } bool gone_1 = local_8; vec2 _e162 = lo; vec2 _e163 = hi; vec2 _e167 = corners[(index_2 % PIECE_VERTICES)]; vec2 at_2 = mix(_e162, _e163, _e167); vec4 _e172 = _group_0_binding_0_fs.frame; float _e177 = _group_0_binding_0_fs.view.z; vec4 _e180 = toClip((_e172.xy + (at_2 * _e177))); p_2.position = (gone_1 ? vec4(2.0, 2.0, 2.0, 1.0) : _e180); p_2.at = at_2; p_2.center = _e5.center; p_2.seed = _e5.seed; p_2.ex = _e5.ex; p_2.ey = _e5.ey; p_2.ez = _e5.ez; p_2.look = vec4(_e5.thick, _e5.stress, _e5.tint, _e5.scale); vec2 c_4[12] = _e14.corners; p_2.c0_ = vec4(c_4[0], c_4[1]); p_2.c1_ = vec4(c_4[2], c_4[3]); p_2.c2_ = vec4(c_4[4], c_4[5]); p_2.c3_ = vec4(c_4[6], c_4[7]); p_2.c4_ = vec4(c_4[8], c_4[9]); p_2.c5_ = vec4(c_4[10], c_4[11]); p_2.count = _e14.count; p_2.frame = _e5.frame; PieceOut _e233 = p_2; return _e233; } Hit slab(vec3 o_5, vec3 d_1, PieceOut in_3) { Hit h_1 = Hit(0.0, vec3(0.0), false, 0.0, vec2(0.0)); vec2 c_1[12] = vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 middle = vec2(0.0); int i_3 = 0; vec3 walls[12] = vec3[12](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); int i_4 = 0; vec2 out_1 = vec2(0.0); float enter = -1000000000.0; float leave = 1000000000.0; vec3 normal = vec3(0.0, 0.0, 1.0); bool local_9 = false; int i_5 = 0; bool local_10 = false; int i_6 = 0; h_1.t = -1.0; c_1 = vec2[12](in_3.c0_.xy, in_3.c0_.zw, in_3.c1_.xy, in_3.c1_.zw, in_3.c2_.xy, in_3.c2_.zw, in_3.c3_.xy, in_3.c3_.zw, in_3.c4_.xy, in_3.c4_.zw, in_3.c5_.xy, in_3.c5_.zw); int count_1 = in_3.count; bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e46 = i_3; i_3 = (_e46 + 1); } loop_init_9 = false; int _e38 = i_3; if ((_e38 < count_1)) { } else { break; } { vec2 _e40 = middle; int _e41 = i_3; vec2 _e43 = c_1[_e41]; middle = (_e40 + _e43); } } vec2 _e48 = middle; middle = (_e48 / vec2(float(count_1))); bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e94 = i_4; i_4 = (_e94 + 1); } loop_init_10 = false; int _e55 = i_4; if ((_e55 < count_1)) { } else { break; } { int _e57 = i_4; vec2 a_7 = c_1[_e57]; int _e60 = i_4; vec2 b_5 = c_1[((_e60 + 1) % count_1)]; out_1 = normalize((vec2((b_5.y - a_7.y), (a_7.x - b_5.x)) + vec2(1e-9, 0.0))); vec2 _e79 = out_1; vec2 _e80 = middle; if ((dot(_e79, (_e80 - a_7)) > 0.0)) { vec2 _e85 = out_1; out_1 = -(_e85); } int _e87 = i_4; vec2 _e89 = out_1; vec2 _e90 = out_1; walls[_e87] = vec3(_e89, dot(_e90, a_7)); } } if ((abs(d_1.z) < 1e-8)) { if (!((o_5.z > 0.0))) { local_9 = (o_5.z < -(in_3.look.x)); } else { local_9 = true; } bool _e121 = local_9; if (_e121) { Hit _e122 = h_1; return _e122; } } else { float t0_ = (-(o_5.z) / d_1.z); float t1_ = ((-(in_3.look.x) - o_5.z) / d_1.z); if ((d_1.z < 0.0)) { enter = t0_; leave = t1_; } else { enter = t1_; leave = t0_; normal = vec3(0.0, 0.0, -1.0); } } bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e173 = i_5; i_5 = (_e173 + 1); } loop_init_11 = false; int _e143 = i_5; if ((_e143 < count_1)) { } else { break; } { int _e145 = i_5; vec3 w_2 = walls[_e145]; float across_1 = dot(d_1.xy, w_2.xy); float room = (w_2.z - dot(o_5.xy, w_2.xy)); if ((abs(across_1) < 1e-8)) { if ((room < 0.0)) { Hit _e161 = h_1; return _e161; } continue; } float t = (room / across_1); if ((across_1 < 0.0)) { float _e165 = enter; if ((t > _e165)) { enter = t; normal = vec3(w_2.xy, 0.0); } } else { float _e170 = leave; leave = min(_e170, t); } } } float _e175 = enter; float _e176 = leave; if (!((_e175 > _e176))) { float _e181 = enter; local_10 = (_e181 < 0.0); } else { local_10 = true; } bool _e185 = local_10; if (_e185) { Hit _e186 = h_1; return _e186; } float _e188 = enter; h_1.t = _e188; vec3 _e190 = normal; h_1.normal = _e190; float _e193 = normal.z; h_1.face = (_e193 > 0.5); float _e198 = enter; vec2 p_4 = (o_5.xy + (d_1.xy * _e198)); h_1.edge = 1000000000.0; bool loop_init_12 = true; while(true) { if (!loop_init_12) { int _e227 = i_6; i_6 = (_e227 + 1); } loop_init_12 = false; int _e205 = i_6; if ((_e205 < count_1)) { } else { break; } { int _e207 = i_6; float _e210 = walls[_e207].z; int _e211 = i_6; vec3 _e213 = walls[_e211]; float room_1 = (_e210 - dot(p_4, _e213.xy)); float _e218 = h_1.edge; if ((room_1 < _e218)) { h_1.edge = room_1; int _e222 = i_6; vec3 _e224 = walls[_e222]; h_1.edgeNormal = _e224.xy; } } } Hit _e229 = h_1; return _e229; } Pose poseOf(PieceOut in_4) { return Pose(ivec2(0), ivec2(0), vec2(0.0), in_4.center, in_4.seed, in_4.ex, in_4.ey, in_4.ez, in_4.look.w, in_4.look.x, 0.0, in_4.look.y, in_4.look.z, false); } void main() { VsOut in_ = VsOut(gl_FragCoord); Cell inner = Cell(vec2(0.0), 0u, 0.0, 0u); float calm = 1.0; bool local = false; float inside = 0.0; float top = 0.0; float tint = 0.0; float unitPx = _group_0_binding_0_fs.view.z; float dpr_1 = _group_0_binding_0_fs.view.w; vec4 _e13 = _group_0_binding_0_fs.frame; vec2 q_4 = ((in_.position.xy - _e13.xy) / vec2(unitPx)); float r_5 = length(q_4); float _e22 = _group_0_binding_0_fs.wall.x; float _e26 = _group_0_binding_0_fs.build.z; float hole_1 = (_e22 * _e26); vec4 gone_2 = vec4((-8.0 * dpr_1), 1.0, 0.0, 0.0); if ((r_5 < (hole_1 * 0.7))) { _fs2p_location0 = gone_2; return; } vec2 _e37 = wallFrame(); Cell _e39 = voronoi(q_4, 0u, _e37); float _e40 = stress(r_5); float shards = smoothstep(0.5, 0.8, _e40); if (!((shards > 0.0))) { float _e55 = _group_0_binding_0_fs.wall.x; local = (r_5 < ((_e55 * 1.6) * 1.3)); } else { local = true; } bool _e62 = local; if (_e62) { Cell _e64 = voronoi(q_4, 1u, _e37); inner = _e64; vec2 _e66 = inner.seed; uint _e68 = inner.key; float _e69 = peelTime(_e66, _e68); if ((_e69 > 0.0)) { _fs2p_location0 = gone_2; return; } calm = (1.0 - smoothstep(-1.5, 0.0, _e69)); } float width_1 = (mix(0.32, 3.2, pow(_e40, 1.3)) * dpr_1); float _e85 = plateSize(_e39.seed, 0u); float _e88 = stress(length(_e39.seed)); float _e90 = loose(_e39.seed); float s0_ = (_e88 * _e90); float _e94 = cracked(r_5, _e39.key, _e39.other, _e85); inside = (((_e39.edge * unitPx) - (width_1 * _e94)) + (((1.0 - _e94) * 8.0) * dpr_1)); float _e108 = calm; float _e109 = plateTop(q_4, _e39.seed, _e39.key, s0_, _e85, _e108); top = _e109; float _e113 = rand(_e39.key, 6u); tint = _e113; if ((shards > 0.0)) { uint _e118 = inner.key; uint key_6 = (_e118 ^ _e39.key); vec2 _e122 = inner.seed; float _e124 = plateSize(_e122, 1u); uint _e126 = inner.key; uint _e128 = inner.other; float _e129 = cracked(r_5, _e126, _e128, _e124); float reached1_ = (_e129 * shards); float _e132 = inner.edge; float inside1_ = (((_e132 * unitPx) - ((width_1 * 0.55) * reached1_)) + (((1.0 - reached1_) * 8.0) * dpr_1)); float _e144 = inside; inside = min(_e144, inside1_); float _e146 = top; vec2 _e148 = inner.seed; float _e149 = calm; float _e150 = plateTop(q_4, _e148, key_6, s0_, _e124, _e149); top = (_e146 + (shards * _e150)); float _e153 = tint; float _e155 = rand(key_6, 6u); tint = mix(_e153, _e155, (shards * 0.5)); } float bevel = (mix(0.7, 5.5, (_e40 * _e40)) * dpr_1); float _e164 = inside; float x_3 = clamp((_e164 / bevel), 0.0, 1.0); float fillet = (1.0 - sqrt(max((1.0 - ((1.0 - x_3) * (1.0 - x_3))), 0.0))); float _e181 = inside; float crack_1 = (1.0 - smoothstep(-0.6, 0.6, _e181)); float depth = (((width_1 * 2.0) + (2.0 * dpr_1)) * (0.4 + _e40)); float _e195 = plaster(q_4, _e37, unitPx); float _e199 = _group_0_binding_0_fs.albedo.w; float bumps = ((_e199 > 0.0) ? _e195 : 0.5); float _e207 = _group_0_binding_0_fs.build.y; float _e211 = _group_0_binding_0_fs.build.z; float load = (_e207 * (1.0 - _e211)); float dent = (((0.05 * load) * exp(((-(r_5) * r_5) / (0.012 + (0.03 * load))))) * unitPx); float _e227 = top; float _e235 = _group_0_binding_0_fs.albedo.w; float height = (mix(((_e227 - (bevel * fillet)) + ((((bumps - 0.5) * _e235) * dpr_1) * (1.0 + ((3.0 * load) * exp(((-(r_5) * r_5) / 0.02)))))), -(depth), crack_1) - dent); float open = smoothstep(0.75, 1.0, _e40); float _e256 = tint; _fs2p_location0 = vec4(height, crack_1, (_e256 + ((bumps - 0.5) * 0.05)), (1.0 - (crack_1 * open))); return; } vs_piecemainºƒ#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Seed { vec2 pos; uint key; }; struct Cell { vec2 seed; uint key; float edge; uint other; }; struct VsOut { vec4 position; }; struct Pose { ivec2 cell; ivec2 plate; vec2 frame; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { vec2 corners[12]; int count; }; struct PieceOut { vec4 position; vec2 at; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; vec4 look; vec4 c0_; vec4 c1_; vec4 c2_; vec4 c3_; vec4 c4_; vec4 c5_; int count; vec2 frame; }; struct Hit { float t; vec3 normal; bool face; float edge; vec2 edgeNormal; }; struct PieceColor { vec4 color; float depth; }; const uint PIECE_VERTICES = 6u; const uint PLATES_A_CELL = 4u; layout(std140) uniform Scene_block_0Vertex { Scene _group_0_binding_0_vs; }; smooth out vec2 _vs2fs_location0; flat out vec3 _vs2fs_location1; flat out vec3 _vs2fs_location2; flat out vec3 _vs2fs_location3; flat out vec3 _vs2fs_location4; flat out vec3 _vs2fs_location5; flat out vec4 _vs2fs_location6; flat out vec4 _vs2fs_location7; flat out vec4 _vs2fs_location8; flat out vec4 _vs2fs_location9; flat out vec4 _vs2fs_location10; flat out vec4 _vs2fs_location11; flat out vec4 _vs2fs_location12; flat out int _vs2fs_location13; flat out vec2 _vs2fs_location14; uint pcg(uint v) { uint s_2 = ((v * 747796405u) + 2891336453u); uint w_1 = (((s_2 >> ((s_2 >> 28u) + 4u)) ^ s_2) * 277803737u); return ((w_1 >> 22u) ^ w_1); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } float density(uint level) { return ((level == 1u) ? 1.5 : 1.0); } Seed seedAt(ivec2 c, uint level_1, vec2 frame) { Seed s = Seed(vec2(0.0), 0u); float _e3 = density(level_1); float _e7 = _group_0_binding_0_vs.wall.z; float perRadian = ((_e7 * _e3) / 6.2831855); float _e14 = _group_0_binding_0_vs.wall.z; int around = int(roundEven((_e14 * _e3))); int wrap = int(roundEven((1024.0 * _e3))); uint i_7 = uint((((c.x % wrap) + wrap) % wrap)); uint j_3 = uint((((c.y % around) + around) % around)); uint _e35 = pcg((j_3 + (level_1 * 5369127u))); uint _e37 = pcg((i_7 + _e35)); float _e38 = unit(_e37); uint _e39 = pcg(_e37); float _e40 = unit(_e39); vec2 jitter = (vec2(0.5) + ((vec2(_e38, _e40) - vec2(0.5)) * 0.8)); vec2 g_1 = ((vec2(c) + jitter) + (frame * _e3)); float r_2 = exp((g_1.x / perRadian)); float a_1 = (g_1.y / perRadian); s.pos = (r_2 * vec2(cos(a_1), sin(a_1))); s.key = _e37; Seed _e66 = s; return _e66; } Cell voronoi(vec2 q, uint level_2, vec2 frame_1) { vec2 pos[9] = vec2[9](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); uint keys[9] = uint[9](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u); float best = 1000000000.0; int nearest = 0; int n_1 = 0; Cell cell = Cell(vec2(0.0), 0u, 0.0, 0u); int n_2 = 0; float _e3 = density(level_2); float _e7 = _group_0_binding_0_vs.wall.z; float perRadian_1 = ((_e7 * _e3) / 6.2831855); vec2 g_2 = ((vec2(log(max(length(q), 0.0001)), atan(q.y, q.x)) * perRadian_1) - (frame_1 * _e3)); ivec2 base = ivec2(floor(g_2)); bool loop_init = true; while(true) { if (!loop_init) { int _e63 = n_1; n_1 = (_e63 + 1); } loop_init = false; int _e32 = n_1; if ((_e32 < 9)) { } else { break; } { int _e35 = n_1; int _e40 = n_1; Seed _e47 = seedAt((base + ivec2(((_e35 % 3) - 1), ((_e40 / 3) - 1))), level_2, frame_1); int _e48 = n_1; pos[_e48] = _e47.pos; int _e51 = n_1; keys[_e51] = _e47.key; float d_2 = dot((q - _e47.pos), (q - _e47.pos)); float _e59 = best; if ((d_2 < _e59)) { best = d_2; int _e61 = n_1; nearest = _e61; } } } int _e65 = nearest; vec2 a_2 = pos[_e65]; cell.seed = a_2; int _e71 = nearest; uint _e73 = keys[_e71]; cell.key = _e73; cell.edge = 1000000000.0; uint _e78 = cell.key; cell.other = _e78; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e106 = n_2; n_2 = (_e106 + 1); } loop_init_1 = false; int _e81 = n_2; if ((_e81 < 9)) { } else { break; } { int _e84 = n_2; int _e85 = nearest; if ((_e84 == _e85)) { continue; } int _e87 = n_2; vec2 b_2 = pos[_e87]; float e = dot(((0.5 * (a_2 + b_2)) - q), normalize((b_2 - a_2))); float _e98 = cell.edge; if ((e < _e98)) { cell.edge = e; int _e102 = n_2; uint _e104 = keys[_e102]; cell.other = _e104; } } } Cell _e108 = cell; return _e108; } vec2 wallFrame() { vec4 _e2 = _group_0_binding_0_vs.frame; return _e2.zw; } float stress(float r) { float _e4 = _group_0_binding_0_vs.wall.x; float _e8 = _group_0_binding_0_vs.build.z; float hole = (_e4 * _e8); float _e15 = _group_0_binding_0_vs.wall.y; float _e24 = _group_0_binding_0_vs.build.y; return (clamp(exp((-((r - hole)) / _e15)), 0.0, 1.0) * _e24); } float peelTime(vec2 seed, uint key_1) { float _e5 = _group_0_binding_0_vs.build.z; if ((_e5 < 0.01)) { return -1000.0; } float _e12 = _group_0_binding_0_vs.wall.x; float _e14 = rand(key_1, 21u); float crack = (_e12 * mix(1.12, 1.6, _e14)); return (log((crack / max(length(seed), 0.0001))) / 0.042); } float looseTime(uint key_2) { float _e2 = rand(key_2, 21u); float _e7 = rand(key_2, 22u); return (log((mix(1.12, 1.6, _e2) / mix(0.85, 1.05, _e7))) / 0.042); } float plateSize(vec2 seed_1, uint level_3) { float _e8 = _group_0_binding_0_vs.wall.z; float _e9 = density(level_3); return ((length(seed_1) * 6.2831855) / (_e8 * _e9)); } float cracked(float r_1, uint a, uint b_1, float size) { float _e5 = rand(a, 9u); float _e7 = rand(b_1, 9u); float pace = (0.8 + (0.2 * (_e5 + _e7))); float _e16 = _group_0_binding_0_vs.view.z; float _e21 = _group_0_binding_0_vs.view.w; float px_1 = ((size * _e16) / _e21); float _e26 = _group_0_binding_0_vs.build.x; return (clamp((((_e26 * pace) - r_1) / 0.04), 0.0, 1.0) * smoothstep(1.0, 14.0, px_1)); } float loose(vec2 seed_2) { float _e4 = _group_0_binding_0_vs.build.x; return clamp((((_e4 * 0.85) - length(seed_2)) / 0.06), 0.0, 1.0); } float knocked(vec2 seed_3, float size_1) { float lift = 0.0; vec4 hits = _group_0_binding_0_vs.hits; float _e8 = _group_0_binding_0_vs.wall.x; float ring = (_e8 + (hits.x * 1.4)); float across = ((length(seed_3) - ring) / 0.09); lift = ((hits.y * exp(((-(across) * across) - (hits.x * 1.8)))) * 0.5); vec4 _e31 = _group_0_binding_0_vs.strike; float toStrike = (length((seed_3 - _e31.xy)) / 0.16); float _e37 = lift; lift = (_e37 + ((hits.w * exp(((-(toStrike) * toStrike) - (hits.z * 2.2)))) * 0.6)); float _e50 = lift; return (_e50 * size_1); } float valueNoise(vec2 p_1, int period, uint salt) { ivec2 i_8 = ivec2(floor(p_1)); vec2 f = fract(p_1); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); uint y0_ = ((uint((((i_8.y % period) + period) % period)) * 668265261u) + salt); uint y1_ = ((uint(((((i_8.y + 1) % period) + period) % period)) * 668265261u) + salt); uint _e36 = pcg(((uint(i_8.x) * 374761393u) + y0_)); float _e37 = unit(_e36); uint _e45 = pcg(((uint((i_8.x + 1)) * 374761393u) + y0_)); float _e46 = unit(_e45); uint _e52 = pcg(((uint(i_8.x) * 374761393u) + y1_)); float _e53 = unit(_e52); uint _e61 = pcg(((uint((i_8.x + 1)) * 374761393u) + y1_)); float _e62 = unit(_e61); return mix(mix(_e37, _e46, u.x), mix(_e53, _e62, u.x), u.y); } float octaves(vec2 g, float ratio, uint salt_1) { float k_1 = log2(max(ratio, 1.0)); float n_4 = floor(k_1); float f_1 = (k_1 - n_4); float m_1 = exp2(n_4); float _e13 = _group_0_binding_0_vs.wall.z; float _e21 = valueNoise((g * m_1), int(roundEven((_e13 * m_1))), (salt_1 + (uint(n_4) * 2654435769u))); float a_3 = (_e21 - 0.5); float _e30 = _group_0_binding_0_vs.wall.z; float _e42 = valueNoise(((g * m_1) * 2.0), int(roundEven(((_e30 * m_1) * 2.0))), (salt_1 + (uint((n_4 + 1.0)) * 2654435769u))); float b_3 = (_e42 - 0.5); float wa = (1.0 - f_1); return (0.5 + (((a_3 * wa) + (b_3 * f_1)) * inversesqrt(((wa * wa) + (f_1 * f_1))))); } float plaster(vec2 q_1, vec2 frame_2, float pxPerUnit) { float _e6 = _group_0_binding_0_vs.wall.z; float perRadian_2 = (_e6 / 6.2831855); float r_3 = max(length(q_1), 0.0001); vec2 g_3 = ((vec2(log(r_3), atan(q_1.y, q_1.x)) * perRadian_2) - frame_2); float cellPx = ((r_3 * pxPerUnit) / perRadian_2); float dpr = _group_0_binding_0_vs.view.w; float _e29 = octaves(g_3, (cellPx / (2.2 * dpr)), 11u); float _e36 = octaves(g_3, (cellPx / (11.0 * dpr)), 23u); return ((0.65 * _e29) + (0.35 * _e36)); } float plateTop(vec2 q_2, vec2 seed_4, uint key_3, float s_1, float size_2, float calm_1) { float _e10 = rand(key_3, 3u); float lift_1 = ((((0.2 * s_1) * s_1) * (0.25 + (0.75 * _e10))) * size_2); float _e18 = rand(key_3, 4u); float a_4 = (_e18 * 6.2831855); float _e28 = rand(key_3, 5u); vec2 tilt = (((vec2(cos(a_4), sin(a_4)) * 0.4) * s_1) * _e28); float _e34 = knocked(seed_4, size_2); float _e39 = _group_0_binding_0_vs.view.z; return ((((lift_1 + dot(tilt, (q_2 - seed_4))) * calm_1) + _e34) * _e39); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_3 = sin(angle); float k_2 = cos(angle); return (((v_1 * k_2) + (cross(axis, v_1) * s_3)) + ((axis * dot(axis, v_1)) * (1.0 - k_2))); } vec3 randomAxis(uint key_4) { float _e2 = rand(key_4, 10u); float z = ((_e2 * 2.0) - 1.0); float _e8 = rand(key_4, 11u); float a_5 = (_e8 * 6.2831855); return vec3((sqrt(max((1.0 - (z * z)), 0.0)) * vec2(cos(a_5), sin(a_5))), z); } vec3 roll(vec3 v_2, float angle_1) { float c_2 = cos(angle_1); float s_4 = sin(angle_1); return vec3(((v_2.x * c_2) - (v_2.y * s_4)), ((v_2.x * s_4) + (v_2.y * c_2)), v_2.z); } Pose pose(uint n_3) { Pose o_1 = Pose(ivec2(0), ivec2(0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), 0.0, 0.0, 0.0, 0.0, 0.0, false); ivec2 near[4] = ivec2[4](ivec2(0), ivec2(0), ivec2(0), ivec2(0)); float far[4] = float[4](1000000000.0, 1000000000.0, 1000000000.0, 1000000000.0); int i_1 = 0; float d = 0.0; ivec2 at = ivec2(0); int k = 0; bool gone = false; bool local_1 = false; bool local_2 = false; float _e5 = _group_0_binding_0_vs.wall.z; uint around_1 = uint(roundEven((_e5 * 1.5))); uint pick = (n_3 % PLATES_A_CELL); uint m_2 = (n_3 / PLATES_A_CELL); vec2 _e14 = wallFrame(); float _e18 = _group_0_binding_0_vs.wall.z; float perRadian_3 = (_e18 / 6.2831855); float _e24 = _group_0_binding_0_vs.wall.x; int top_1 = (int(floor((((log((_e24 * 1.6)) * perRadian_3) - _e14.x) * 1.5))) + 2); ivec2 cell_1 = ivec2((top_1 - int((m_2 / around_1))), int((m_2 % around_1))); Seed _e44 = seedAt(cell_1, 1u, _e14); vec2 g_4 = ((vec2(log(max(length(_e44.pos), 0.0001)), atan(_e44.pos.y, _e44.pos.x)) * perRadian_3) - _e14); ivec2 base_1 = ivec2(floor(g_4)); near = ivec2[4](base_1, base_1, base_1, base_1); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e118 = i_1; i_1 = (_e118 + 1); } loop_init_2 = false; int _e70 = i_1; if ((_e70 < 9)) { } else { break; } { int _e73 = i_1; int _e78 = i_1; ivec2 c_3 = (base_1 + ivec2(((_e73 % 3) - 1), ((_e78 / 3) - 1))); Seed _e86 = seedAt(c_3, 0u, _e14); d = distance(_e86.pos, _e44.pos); at = c_3; k = 0; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e115 = k; k = (_e115 + 1); } loop_init_3 = false; int _e94 = k; if ((_e94 < 4)) { } else { break; } { float _e97 = d; int _e98 = k; float _e100 = far[_e98]; if ((_e97 < _e100)) { int _e102 = k; float keepD = far[_e102]; int _e105 = k; ivec2 keepC = near[_e105]; int _e108 = k; float _e110 = d; far[_e108] = _e110; int _e111 = k; ivec2 _e113 = at; near[_e111] = _e113; d = keepD; at = keepC; } } } } } ivec2 _e122 = near[pick]; o_1.plate = _e122; float _e125 = plateSize(_e44.pos, 1u); float _e127 = far[pick]; float _e129 = far[0]; gone = (_e127 > (_e129 + (2.6 * _e125))); float _e137 = peelTime(_e44.pos, _e44.key); float _e139 = looseTime(_e44.key); float flying = max((_e137 - _e139), 0.0); float back = ((flying * 0.042) * perRadian_3); float _e150 = _group_0_binding_0_vs.shard.w; o_1.frame = (_e14 + vec2(back, (back * _e150))); o_1.cell = cell_1; ivec2 _e156 = o_1.plate; vec2 _e159 = o_1.frame; Seed _e160 = seedAt(_e156, 0u, _e159); uint key_5 = (_e44.key ^ _e160.key); vec2 _e166 = o_1.frame; Seed _e167 = seedAt(cell_1, 1u, _e166); vec3 seed_5 = vec3(_e167.pos, 0.0); vec2 out_2 = normalize(seed_5.xy); vec3 axis_1 = vec3(-(out_2.y), out_2.x, 0.0); vec3 hinge = vec3((seed_5.xy + ((out_2 * 0.5) * _e125)), 0.0); float x_2 = clamp((_e137 / _e139), 0.0, 1.0); float _e191 = rand(_e44.key, 23u); float lean = mix(0.5, 1.1, _e191); float turn = (lean * pow(x_2, 2.2)); float spin = (((lean * 2.2) * pow(x_2, 1.2)) / _e139); vec3 _e205 = rotate((seed_5 - hinge), axis_1, turn); vec3 lifted = (hinge + _e205); vec3 _e208 = randomAxis(key_5); float _e210 = rand(key_5, 12u); vec3 tumble = ((axis_1 * spin) + (_e208 * mix(0.8, 2.6, _e210))); float rate = length(tumble); vec3 around3_ = (tumble / vec3(max(rate, 1e-5))); float _e230 = rand(key_5, 27u); vec2 apart = (normalize(((seed_5.xy - _e160.pos) + vec2(1e-5, 0.0))) * mix(0.01, 0.05, _e230)); float _e239 = rand(key_5, 26u); vec3 velocity = (cross((axis_1 * spin), (lifted - hinge)) + vec3(apart, mix(0.04, 0.12, _e239))); vec3 center = ((lifted + (velocity * flying)) + vec3(0.0, 0.0, ((0.15 * flying) * flying))); float shrink = exp((-0.042 * flying)); float _e262 = _group_0_binding_0_vs.shard.w; float twist = ((-0.042 * flying) * _e262); float after = (rate * flying); vec3 _e266 = roll(center, twist); o_1.center = (_e266 * shrink); o_1.seed = seed_5; vec3 _e274 = rotate(vec3(1.0, 0.0, 0.0), axis_1, turn); vec3 _e275 = rotate(_e274, around3_, after); vec3 _e276 = roll(_e275, twist); o_1.ex = _e276; vec3 _e282 = rotate(vec3(0.0, 1.0, 0.0), axis_1, turn); vec3 _e283 = rotate(_e282, around3_, after); vec3 _e284 = roll(_e283, twist); o_1.ey = _e284; vec3 _e290 = rotate(vec3(0.0, 0.0, 1.0), axis_1, turn); vec3 _e291 = rotate(_e290, around3_, after); vec3 _e292 = roll(_e291, twist); o_1.ez = _e292; o_1.scale = shrink; float _e297 = plateSize(_e160.pos, 0u); o_1.thick = (0.16 * _e297); o_1.reach = _e125; float _e305 = stress((length(_e160.pos) * shrink)); o_1.stress = _e305; float _e309 = rand(_e160.key, 6u); float _e311 = rand(key_5, 6u); float _e313 = o_1.stress; o_1.tint = mix(_e309, _e311, (smoothstep(0.5, 0.8, _e313) * 0.5)); bool _e321 = gone; if (!(_e321)) { local_1 = (_e137 <= 0.0); } else { local_1 = true; } bool _e328 = local_1; if (!(_e328)) { local_2 = (flying > 8.0); } else { local_2 = true; } bool _e335 = local_2; o_1.gone = _e335; Pose _e336 = o_1; return _e336; } vec3 placed(Pose o_2, vec3 x_1) { vec3 v_4 = ((x_1 - o_2.seed) * o_2.scale); return (((o_2.center + (o_2.ex * v_4.x)) + (o_2.ey * v_4.y)) + (o_2.ez * v_4.z)); } vec3 local_3(Pose o_3, vec3 v_3) { return (vec3(dot(v_3, o_3.ex), dot(v_3, o_3.ey), dot(v_3, o_3.ez)) / vec3(o_3.scale)); } Outline outline(Pose o_4) { vec2 poly[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 next[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); int count = 4; int w = 0; vec2 toward = vec2(0.0); float limit = 0.0; int m = 0; int j = 0; bool local_4 = false; bool local_5 = false; int j_1 = 0; Outline o2_ = Outline(vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)), 0); int j_2 = 0; float _e10 = _group_0_binding_0_vs.view.w; float _e15 = _group_0_binding_0_vs.view.z; float width = ((mix(0.32, 3.2, pow(o_4.stress, 1.3)) * _e10) / _e15); float fine = ((width * 0.55) * smoothstep(0.5, 0.8, o_4.stress)); vec2 a_6 = o_4.seed.xy; Seed _e29 = seedAt(o_4.plate, 0u, o_4.frame); vec2 b_4 = _e29.pos; float r_4 = (o_4.reach * 1.5); poly[0] = (a_6 + vec2(-(r_4), -(r_4))); poly[1] = (a_6 + vec2(r_4, -(r_4))); poly[2] = (a_6 + vec2(r_4, r_4)); poly[3] = (a_6 + vec2(-(r_4), r_4)); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e193 = w; w = (_e193 + 1); } loop_init_4 = false; int _e56 = w; if ((_e56 < 16)) { } else { break; } { int _e59 = w; int i_9 = (_e59 % 8); int k_3 = ((i_9 >= 4) ? (i_9 + 1) : i_9); ivec2 off = ivec2(((k_3 % 3) - 1), ((k_3 / 3) - 1)); toward = vec2(0.0); limit = 0.0; int _e80 = w; if ((_e80 < 8)) { Seed _e87 = seedAt((o_4.cell + off), 1u, o_4.frame); vec2 s_5 = _e87.pos; toward = normalize((s_5 - a_6)); vec2 _e94 = toward; limit = (dot((0.5 * (a_6 + s_5)), _e94) - fine); } else { Seed _e101 = seedAt((o_4.plate + off), 0u, o_4.frame); vec2 s_6 = _e101.pos; toward = normalize((s_6 - b_4)); vec2 _e108 = toward; limit = (dot((0.5 * (b_4 + s_6)), _e108) - width); } m = 0; j = 0; bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e173 = j; j = (_e173 + 1); } loop_init_5 = false; int _e115 = j; int _e116 = count; if ((_e115 < _e116)) { } else { break; } { int _e118 = j; vec2 p_3 = poly[_e118]; int _e121 = j; int _e124 = count; vec2 q_3 = poly[((_e121 + 1) % _e124)]; vec2 _e128 = toward; float _e130 = limit; float dp = (dot(p_3, _e128) - _e130); vec2 _e132 = toward; float _e134 = limit; float dq = (dot(q_3, _e132) - _e134); if ((dp <= 0.0)) { int _e140 = m; local_4 = (_e140 < 24); } else { local_4 = false; } bool _e144 = local_4; if (_e144) { int _e145 = m; next[_e145] = p_3; int _e148 = m; m = (_e148 + 1); } if (((dp <= 0.0) != (dq <= 0.0))) { int _e157 = m; local_5 = (_e157 < 24); } else { local_5 = false; } bool _e161 = local_5; if (_e161) { int _e162 = m; next[_e162] = (p_3 + ((q_3 - p_3) * (dp / (dp - dq)))); int _e170 = m; m = (_e170 + 1); } } } int _e175 = m; count = _e175; j_1 = 0; bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e187 = j_1; j_1 = (_e187 + 1); } loop_init_6 = false; int _e178 = j_1; int _e179 = m; if ((_e178 < _e179)) { } else { break; } { int _e181 = j_1; int _e183 = j_1; vec2 _e185 = next[_e183]; poly[_e181] = _e185; } } int _e189 = count; if ((_e189 < 3)) { break; } } } int _e197 = count; o2_.count = min(_e197, 12); bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e213 = j_2; j_2 = (_e213 + 1); } loop_init_7 = false; int _e202 = j_2; int _e204 = o2_.count; if ((_e202 < _e204)) { } else { break; } { int _e207 = j_2; int _e209 = j_2; vec2 _e211 = poly[_e209]; o2_.corners[_e207] = _e211; } } Outline _e215 = o2_; return _e215; } vec4 toClip(vec2 px) { float _e5 = _group_0_binding_0_vs.view.x; float _e15 = _group_0_binding_0_vs.view.y; return vec4((((px.x / _e5) * 2.0) - 1.0), (1.0 - ((px.y / _e15) * 2.0)), 0.5, 1.0); } PieceOut pieceOut(uint index_2, bool shadow) { PieceOut p_2 = PieceOut(vec4(0.0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), 0, vec2(0.0)); vec2 lo = vec2(1000000000.0); vec2 hi = vec2(-1000000000.0); int behind = 0; int i_2 = 0; vec2 at_1 = vec2(0.0); bool local_6 = false; bool local_7 = false; bool local_8 = false; vec2 corners[6] = vec2[6](vec2(0.0, 0.0), vec2(1.0, 0.0), vec2(0.0, 1.0), vec2(0.0, 1.0), vec2(1.0, 0.0), vec2(1.0, 1.0)); Pose _e5 = pose((index_2 / PIECE_VERTICES)); if (_e5.gone) { p_2.position = vec4(2.0, 2.0, 2.0, 1.0); PieceOut _e13 = p_2; return _e13; } Outline _e14 = outline(_e5); float d_3 = _group_0_binding_0_vs.camera.x; vec4 _e21 = _group_0_binding_0_vs.light; vec3 l = _e21.xyz; bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e82 = i_2; i_2 = (_e82 + 1); } loop_init_8 = false; int _e33 = i_2; if ((_e33 < (_e14.count * 2))) { } else { break; } { int _e39 = i_2; int _e45 = i_2; vec3 _e51 = placed(_e5, vec3(_e14.corners[(_e39 / 2)], (-(_e5.thick) * float((_e45 % 2))))); at_1 = (_e51.xy - (l.xy * (_e51.z / max(l.z, 0.05)))); if (!(shadow)) { if ((_e51.z > (d_3 * 0.999))) { int _e68 = behind; behind = (_e68 + 1); continue; } at_1 = (_e51.xy * (d_3 / (d_3 - _e51.z))); } vec2 _e75 = lo; vec2 _e76 = at_1; lo = min(_e75, _e76); vec2 _e78 = hi; vec2 _e79 = at_1; hi = max(_e78, _e79); } } vec4 _e86 = _group_0_binding_0_vs.frame; float _e92 = _group_0_binding_0_vs.view.z; vec2 viewLo = (-(_e86.xy) / vec2(_e92)); vec4 _e97 = _group_0_binding_0_vs.view; vec4 _e101 = _group_0_binding_0_vs.frame; float _e107 = _group_0_binding_0_vs.view.z; vec2 viewHi = ((_e97.xy - _e101.xy) / vec2(_e107)); int _e110 = behind; if ((_e110 > 0)) { lo = viewLo; hi = viewHi; } if (!((_e14.count < 3))) { int _e119 = behind; local_6 = (_e119 == (_e14.count * 2)); } else { local_6 = true; } bool _e125 = local_6; if (!(_e125)) { vec2 _e129 = hi; local_7 = any(lessThan(_e129, viewLo)); } else { local_7 = true; } bool _e133 = local_7; if (!(_e133)) { vec2 _e137 = lo; local_8 = any(greaterThan(_e137, viewHi)); } else { local_8 = true; } bool gone_1 = local_8; vec2 _e162 = lo; vec2 _e163 = hi; vec2 _e167 = corners[(index_2 % PIECE_VERTICES)]; vec2 at_2 = mix(_e162, _e163, _e167); vec4 _e172 = _group_0_binding_0_vs.frame; float _e177 = _group_0_binding_0_vs.view.z; vec4 _e180 = toClip((_e172.xy + (at_2 * _e177))); p_2.position = (gone_1 ? vec4(2.0, 2.0, 2.0, 1.0) : _e180); p_2.at = at_2; p_2.center = _e5.center; p_2.seed = _e5.seed; p_2.ex = _e5.ex; p_2.ey = _e5.ey; p_2.ez = _e5.ez; p_2.look = vec4(_e5.thick, _e5.stress, _e5.tint, _e5.scale); vec2 c_4[12] = _e14.corners; p_2.c0_ = vec4(c_4[0], c_4[1]); p_2.c1_ = vec4(c_4[2], c_4[3]); p_2.c2_ = vec4(c_4[4], c_4[5]); p_2.c3_ = vec4(c_4[6], c_4[7]); p_2.c4_ = vec4(c_4[8], c_4[9]); p_2.c5_ = vec4(c_4[10], c_4[11]); p_2.count = _e14.count; p_2.frame = _e5.frame; PieceOut _e233 = p_2; return _e233; } Hit slab(vec3 o_5, vec3 d_1, PieceOut in_3) { Hit h_1 = Hit(0.0, vec3(0.0), false, 0.0, vec2(0.0)); vec2 c_1[12] = vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 middle = vec2(0.0); int i_3 = 0; vec3 walls[12] = vec3[12](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); int i_4 = 0; vec2 out_1 = vec2(0.0); float enter = -1000000000.0; float leave = 1000000000.0; vec3 normal = vec3(0.0, 0.0, 1.0); bool local_9 = false; int i_5 = 0; bool local_10 = false; int i_6 = 0; h_1.t = -1.0; c_1 = vec2[12](in_3.c0_.xy, in_3.c0_.zw, in_3.c1_.xy, in_3.c1_.zw, in_3.c2_.xy, in_3.c2_.zw, in_3.c3_.xy, in_3.c3_.zw, in_3.c4_.xy, in_3.c4_.zw, in_3.c5_.xy, in_3.c5_.zw); int count_1 = in_3.count; bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e46 = i_3; i_3 = (_e46 + 1); } loop_init_9 = false; int _e38 = i_3; if ((_e38 < count_1)) { } else { break; } { vec2 _e40 = middle; int _e41 = i_3; vec2 _e43 = c_1[_e41]; middle = (_e40 + _e43); } } vec2 _e48 = middle; middle = (_e48 / vec2(float(count_1))); bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e94 = i_4; i_4 = (_e94 + 1); } loop_init_10 = false; int _e55 = i_4; if ((_e55 < count_1)) { } else { break; } { int _e57 = i_4; vec2 a_7 = c_1[_e57]; int _e60 = i_4; vec2 b_5 = c_1[((_e60 + 1) % count_1)]; out_1 = normalize((vec2((b_5.y - a_7.y), (a_7.x - b_5.x)) + vec2(1e-9, 0.0))); vec2 _e79 = out_1; vec2 _e80 = middle; if ((dot(_e79, (_e80 - a_7)) > 0.0)) { vec2 _e85 = out_1; out_1 = -(_e85); } int _e87 = i_4; vec2 _e89 = out_1; vec2 _e90 = out_1; walls[_e87] = vec3(_e89, dot(_e90, a_7)); } } if ((abs(d_1.z) < 1e-8)) { if (!((o_5.z > 0.0))) { local_9 = (o_5.z < -(in_3.look.x)); } else { local_9 = true; } bool _e121 = local_9; if (_e121) { Hit _e122 = h_1; return _e122; } } else { float t0_ = (-(o_5.z) / d_1.z); float t1_ = ((-(in_3.look.x) - o_5.z) / d_1.z); if ((d_1.z < 0.0)) { enter = t0_; leave = t1_; } else { enter = t1_; leave = t0_; normal = vec3(0.0, 0.0, -1.0); } } bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e173 = i_5; i_5 = (_e173 + 1); } loop_init_11 = false; int _e143 = i_5; if ((_e143 < count_1)) { } else { break; } { int _e145 = i_5; vec3 w_2 = walls[_e145]; float across_1 = dot(d_1.xy, w_2.xy); float room = (w_2.z - dot(o_5.xy, w_2.xy)); if ((abs(across_1) < 1e-8)) { if ((room < 0.0)) { Hit _e161 = h_1; return _e161; } continue; } float t = (room / across_1); if ((across_1 < 0.0)) { float _e165 = enter; if ((t > _e165)) { enter = t; normal = vec3(w_2.xy, 0.0); } } else { float _e170 = leave; leave = min(_e170, t); } } } float _e175 = enter; float _e176 = leave; if (!((_e175 > _e176))) { float _e181 = enter; local_10 = (_e181 < 0.0); } else { local_10 = true; } bool _e185 = local_10; if (_e185) { Hit _e186 = h_1; return _e186; } float _e188 = enter; h_1.t = _e188; vec3 _e190 = normal; h_1.normal = _e190; float _e193 = normal.z; h_1.face = (_e193 > 0.5); float _e198 = enter; vec2 p_4 = (o_5.xy + (d_1.xy * _e198)); h_1.edge = 1000000000.0; bool loop_init_12 = true; while(true) { if (!loop_init_12) { int _e227 = i_6; i_6 = (_e227 + 1); } loop_init_12 = false; int _e205 = i_6; if ((_e205 < count_1)) { } else { break; } { int _e207 = i_6; float _e210 = walls[_e207].z; int _e211 = i_6; vec3 _e213 = walls[_e211]; float room_1 = (_e210 - dot(p_4, _e213.xy)); float _e218 = h_1.edge; if ((room_1 < _e218)) { h_1.edge = room_1; int _e222 = i_6; vec3 _e224 = walls[_e222]; h_1.edgeNormal = _e224.xy; } } } Hit _e229 = h_1; return _e229; } Pose poseOf(PieceOut in_4) { return Pose(ivec2(0), ivec2(0), vec2(0.0), in_4.center, in_4.seed, in_4.ex, in_4.ey, in_4.ez, in_4.look.w, in_4.look.x, 0.0, in_4.look.y, in_4.look.z, false); } void main() { uint index = uint(gl_VertexID); PieceOut _e2 = pieceOut(index, false); gl_Position = _e2.position; _vs2fs_location0 = _e2.at; _vs2fs_location1 = _e2.center; _vs2fs_location2 = _e2.seed; _vs2fs_location3 = _e2.ex; _vs2fs_location4 = _e2.ey; _vs2fs_location5 = _e2.ez; _vs2fs_location6 = _e2.look; _vs2fs_location7 = _e2.c0_; _vs2fs_location8 = _e2.c1_; _vs2fs_location9 = _e2.c2_; _vs2fs_location10 = _e2.c3_; _vs2fs_location11 = _e2.c4_; _vs2fs_location12 = _e2.c5_; _vs2fs_location13 = _e2.count; _vs2fs_location14 = _e2.frame; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } vs_piece_shadowmain½ƒ#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Seed { vec2 pos; uint key; }; struct Cell { vec2 seed; uint key; float edge; uint other; }; struct VsOut { vec4 position; }; struct Pose { ivec2 cell; ivec2 plate; vec2 frame; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { vec2 corners[12]; int count; }; struct PieceOut { vec4 position; vec2 at; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; vec4 look; vec4 c0_; vec4 c1_; vec4 c2_; vec4 c3_; vec4 c4_; vec4 c5_; int count; vec2 frame; }; struct Hit { float t; vec3 normal; bool face; float edge; vec2 edgeNormal; }; struct PieceColor { vec4 color; float depth; }; const uint PIECE_VERTICES = 6u; const uint PLATES_A_CELL = 4u; layout(std140) uniform Scene_block_0Vertex { Scene _group_0_binding_0_vs; }; smooth out vec2 _vs2fs_location0; flat out vec3 _vs2fs_location1; flat out vec3 _vs2fs_location2; flat out vec3 _vs2fs_location3; flat out vec3 _vs2fs_location4; flat out vec3 _vs2fs_location5; flat out vec4 _vs2fs_location6; flat out vec4 _vs2fs_location7; flat out vec4 _vs2fs_location8; flat out vec4 _vs2fs_location9; flat out vec4 _vs2fs_location10; flat out vec4 _vs2fs_location11; flat out vec4 _vs2fs_location12; flat out int _vs2fs_location13; flat out vec2 _vs2fs_location14; uint pcg(uint v) { uint s_2 = ((v * 747796405u) + 2891336453u); uint w_1 = (((s_2 >> ((s_2 >> 28u) + 4u)) ^ s_2) * 277803737u); return ((w_1 >> 22u) ^ w_1); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } float density(uint level) { return ((level == 1u) ? 1.5 : 1.0); } Seed seedAt(ivec2 c, uint level_1, vec2 frame) { Seed s = Seed(vec2(0.0), 0u); float _e3 = density(level_1); float _e7 = _group_0_binding_0_vs.wall.z; float perRadian = ((_e7 * _e3) / 6.2831855); float _e14 = _group_0_binding_0_vs.wall.z; int around = int(roundEven((_e14 * _e3))); int wrap = int(roundEven((1024.0 * _e3))); uint i_7 = uint((((c.x % wrap) + wrap) % wrap)); uint j_3 = uint((((c.y % around) + around) % around)); uint _e35 = pcg((j_3 + (level_1 * 5369127u))); uint _e37 = pcg((i_7 + _e35)); float _e38 = unit(_e37); uint _e39 = pcg(_e37); float _e40 = unit(_e39); vec2 jitter = (vec2(0.5) + ((vec2(_e38, _e40) - vec2(0.5)) * 0.8)); vec2 g_1 = ((vec2(c) + jitter) + (frame * _e3)); float r_2 = exp((g_1.x / perRadian)); float a_1 = (g_1.y / perRadian); s.pos = (r_2 * vec2(cos(a_1), sin(a_1))); s.key = _e37; Seed _e66 = s; return _e66; } Cell voronoi(vec2 q, uint level_2, vec2 frame_1) { vec2 pos[9] = vec2[9](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); uint keys[9] = uint[9](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u); float best = 1000000000.0; int nearest = 0; int n_1 = 0; Cell cell = Cell(vec2(0.0), 0u, 0.0, 0u); int n_2 = 0; float _e3 = density(level_2); float _e7 = _group_0_binding_0_vs.wall.z; float perRadian_1 = ((_e7 * _e3) / 6.2831855); vec2 g_2 = ((vec2(log(max(length(q), 0.0001)), atan(q.y, q.x)) * perRadian_1) - (frame_1 * _e3)); ivec2 base = ivec2(floor(g_2)); bool loop_init = true; while(true) { if (!loop_init) { int _e63 = n_1; n_1 = (_e63 + 1); } loop_init = false; int _e32 = n_1; if ((_e32 < 9)) { } else { break; } { int _e35 = n_1; int _e40 = n_1; Seed _e47 = seedAt((base + ivec2(((_e35 % 3) - 1), ((_e40 / 3) - 1))), level_2, frame_1); int _e48 = n_1; pos[_e48] = _e47.pos; int _e51 = n_1; keys[_e51] = _e47.key; float d_2 = dot((q - _e47.pos), (q - _e47.pos)); float _e59 = best; if ((d_2 < _e59)) { best = d_2; int _e61 = n_1; nearest = _e61; } } } int _e65 = nearest; vec2 a_2 = pos[_e65]; cell.seed = a_2; int _e71 = nearest; uint _e73 = keys[_e71]; cell.key = _e73; cell.edge = 1000000000.0; uint _e78 = cell.key; cell.other = _e78; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e106 = n_2; n_2 = (_e106 + 1); } loop_init_1 = false; int _e81 = n_2; if ((_e81 < 9)) { } else { break; } { int _e84 = n_2; int _e85 = nearest; if ((_e84 == _e85)) { continue; } int _e87 = n_2; vec2 b_2 = pos[_e87]; float e = dot(((0.5 * (a_2 + b_2)) - q), normalize((b_2 - a_2))); float _e98 = cell.edge; if ((e < _e98)) { cell.edge = e; int _e102 = n_2; uint _e104 = keys[_e102]; cell.other = _e104; } } } Cell _e108 = cell; return _e108; } vec2 wallFrame() { vec4 _e2 = _group_0_binding_0_vs.frame; return _e2.zw; } float stress(float r) { float _e4 = _group_0_binding_0_vs.wall.x; float _e8 = _group_0_binding_0_vs.build.z; float hole = (_e4 * _e8); float _e15 = _group_0_binding_0_vs.wall.y; float _e24 = _group_0_binding_0_vs.build.y; return (clamp(exp((-((r - hole)) / _e15)), 0.0, 1.0) * _e24); } float peelTime(vec2 seed, uint key_1) { float _e5 = _group_0_binding_0_vs.build.z; if ((_e5 < 0.01)) { return -1000.0; } float _e12 = _group_0_binding_0_vs.wall.x; float _e14 = rand(key_1, 21u); float crack = (_e12 * mix(1.12, 1.6, _e14)); return (log((crack / max(length(seed), 0.0001))) / 0.042); } float looseTime(uint key_2) { float _e2 = rand(key_2, 21u); float _e7 = rand(key_2, 22u); return (log((mix(1.12, 1.6, _e2) / mix(0.85, 1.05, _e7))) / 0.042); } float plateSize(vec2 seed_1, uint level_3) { float _e8 = _group_0_binding_0_vs.wall.z; float _e9 = density(level_3); return ((length(seed_1) * 6.2831855) / (_e8 * _e9)); } float cracked(float r_1, uint a, uint b_1, float size) { float _e5 = rand(a, 9u); float _e7 = rand(b_1, 9u); float pace = (0.8 + (0.2 * (_e5 + _e7))); float _e16 = _group_0_binding_0_vs.view.z; float _e21 = _group_0_binding_0_vs.view.w; float px_1 = ((size * _e16) / _e21); float _e26 = _group_0_binding_0_vs.build.x; return (clamp((((_e26 * pace) - r_1) / 0.04), 0.0, 1.0) * smoothstep(1.0, 14.0, px_1)); } float loose(vec2 seed_2) { float _e4 = _group_0_binding_0_vs.build.x; return clamp((((_e4 * 0.85) - length(seed_2)) / 0.06), 0.0, 1.0); } float knocked(vec2 seed_3, float size_1) { float lift = 0.0; vec4 hits = _group_0_binding_0_vs.hits; float _e8 = _group_0_binding_0_vs.wall.x; float ring = (_e8 + (hits.x * 1.4)); float across = ((length(seed_3) - ring) / 0.09); lift = ((hits.y * exp(((-(across) * across) - (hits.x * 1.8)))) * 0.5); vec4 _e31 = _group_0_binding_0_vs.strike; float toStrike = (length((seed_3 - _e31.xy)) / 0.16); float _e37 = lift; lift = (_e37 + ((hits.w * exp(((-(toStrike) * toStrike) - (hits.z * 2.2)))) * 0.6)); float _e50 = lift; return (_e50 * size_1); } float valueNoise(vec2 p_1, int period, uint salt) { ivec2 i_8 = ivec2(floor(p_1)); vec2 f = fract(p_1); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); uint y0_ = ((uint((((i_8.y % period) + period) % period)) * 668265261u) + salt); uint y1_ = ((uint(((((i_8.y + 1) % period) + period) % period)) * 668265261u) + salt); uint _e36 = pcg(((uint(i_8.x) * 374761393u) + y0_)); float _e37 = unit(_e36); uint _e45 = pcg(((uint((i_8.x + 1)) * 374761393u) + y0_)); float _e46 = unit(_e45); uint _e52 = pcg(((uint(i_8.x) * 374761393u) + y1_)); float _e53 = unit(_e52); uint _e61 = pcg(((uint((i_8.x + 1)) * 374761393u) + y1_)); float _e62 = unit(_e61); return mix(mix(_e37, _e46, u.x), mix(_e53, _e62, u.x), u.y); } float octaves(vec2 g, float ratio, uint salt_1) { float k_1 = log2(max(ratio, 1.0)); float n_4 = floor(k_1); float f_1 = (k_1 - n_4); float m_1 = exp2(n_4); float _e13 = _group_0_binding_0_vs.wall.z; float _e21 = valueNoise((g * m_1), int(roundEven((_e13 * m_1))), (salt_1 + (uint(n_4) * 2654435769u))); float a_3 = (_e21 - 0.5); float _e30 = _group_0_binding_0_vs.wall.z; float _e42 = valueNoise(((g * m_1) * 2.0), int(roundEven(((_e30 * m_1) * 2.0))), (salt_1 + (uint((n_4 + 1.0)) * 2654435769u))); float b_3 = (_e42 - 0.5); float wa = (1.0 - f_1); return (0.5 + (((a_3 * wa) + (b_3 * f_1)) * inversesqrt(((wa * wa) + (f_1 * f_1))))); } float plaster(vec2 q_1, vec2 frame_2, float pxPerUnit) { float _e6 = _group_0_binding_0_vs.wall.z; float perRadian_2 = (_e6 / 6.2831855); float r_3 = max(length(q_1), 0.0001); vec2 g_3 = ((vec2(log(r_3), atan(q_1.y, q_1.x)) * perRadian_2) - frame_2); float cellPx = ((r_3 * pxPerUnit) / perRadian_2); float dpr = _group_0_binding_0_vs.view.w; float _e29 = octaves(g_3, (cellPx / (2.2 * dpr)), 11u); float _e36 = octaves(g_3, (cellPx / (11.0 * dpr)), 23u); return ((0.65 * _e29) + (0.35 * _e36)); } float plateTop(vec2 q_2, vec2 seed_4, uint key_3, float s_1, float size_2, float calm_1) { float _e10 = rand(key_3, 3u); float lift_1 = ((((0.2 * s_1) * s_1) * (0.25 + (0.75 * _e10))) * size_2); float _e18 = rand(key_3, 4u); float a_4 = (_e18 * 6.2831855); float _e28 = rand(key_3, 5u); vec2 tilt = (((vec2(cos(a_4), sin(a_4)) * 0.4) * s_1) * _e28); float _e34 = knocked(seed_4, size_2); float _e39 = _group_0_binding_0_vs.view.z; return ((((lift_1 + dot(tilt, (q_2 - seed_4))) * calm_1) + _e34) * _e39); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_3 = sin(angle); float k_2 = cos(angle); return (((v_1 * k_2) + (cross(axis, v_1) * s_3)) + ((axis * dot(axis, v_1)) * (1.0 - k_2))); } vec3 randomAxis(uint key_4) { float _e2 = rand(key_4, 10u); float z = ((_e2 * 2.0) - 1.0); float _e8 = rand(key_4, 11u); float a_5 = (_e8 * 6.2831855); return vec3((sqrt(max((1.0 - (z * z)), 0.0)) * vec2(cos(a_5), sin(a_5))), z); } vec3 roll(vec3 v_2, float angle_1) { float c_2 = cos(angle_1); float s_4 = sin(angle_1); return vec3(((v_2.x * c_2) - (v_2.y * s_4)), ((v_2.x * s_4) + (v_2.y * c_2)), v_2.z); } Pose pose(uint n_3) { Pose o_1 = Pose(ivec2(0), ivec2(0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), 0.0, 0.0, 0.0, 0.0, 0.0, false); ivec2 near[4] = ivec2[4](ivec2(0), ivec2(0), ivec2(0), ivec2(0)); float far[4] = float[4](1000000000.0, 1000000000.0, 1000000000.0, 1000000000.0); int i_1 = 0; float d = 0.0; ivec2 at = ivec2(0); int k = 0; bool gone = false; bool local_1 = false; bool local_2 = false; float _e5 = _group_0_binding_0_vs.wall.z; uint around_1 = uint(roundEven((_e5 * 1.5))); uint pick = (n_3 % PLATES_A_CELL); uint m_2 = (n_3 / PLATES_A_CELL); vec2 _e14 = wallFrame(); float _e18 = _group_0_binding_0_vs.wall.z; float perRadian_3 = (_e18 / 6.2831855); float _e24 = _group_0_binding_0_vs.wall.x; int top_1 = (int(floor((((log((_e24 * 1.6)) * perRadian_3) - _e14.x) * 1.5))) + 2); ivec2 cell_1 = ivec2((top_1 - int((m_2 / around_1))), int((m_2 % around_1))); Seed _e44 = seedAt(cell_1, 1u, _e14); vec2 g_4 = ((vec2(log(max(length(_e44.pos), 0.0001)), atan(_e44.pos.y, _e44.pos.x)) * perRadian_3) - _e14); ivec2 base_1 = ivec2(floor(g_4)); near = ivec2[4](base_1, base_1, base_1, base_1); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e118 = i_1; i_1 = (_e118 + 1); } loop_init_2 = false; int _e70 = i_1; if ((_e70 < 9)) { } else { break; } { int _e73 = i_1; int _e78 = i_1; ivec2 c_3 = (base_1 + ivec2(((_e73 % 3) - 1), ((_e78 / 3) - 1))); Seed _e86 = seedAt(c_3, 0u, _e14); d = distance(_e86.pos, _e44.pos); at = c_3; k = 0; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e115 = k; k = (_e115 + 1); } loop_init_3 = false; int _e94 = k; if ((_e94 < 4)) { } else { break; } { float _e97 = d; int _e98 = k; float _e100 = far[_e98]; if ((_e97 < _e100)) { int _e102 = k; float keepD = far[_e102]; int _e105 = k; ivec2 keepC = near[_e105]; int _e108 = k; float _e110 = d; far[_e108] = _e110; int _e111 = k; ivec2 _e113 = at; near[_e111] = _e113; d = keepD; at = keepC; } } } } } ivec2 _e122 = near[pick]; o_1.plate = _e122; float _e125 = plateSize(_e44.pos, 1u); float _e127 = far[pick]; float _e129 = far[0]; gone = (_e127 > (_e129 + (2.6 * _e125))); float _e137 = peelTime(_e44.pos, _e44.key); float _e139 = looseTime(_e44.key); float flying = max((_e137 - _e139), 0.0); float back = ((flying * 0.042) * perRadian_3); float _e150 = _group_0_binding_0_vs.shard.w; o_1.frame = (_e14 + vec2(back, (back * _e150))); o_1.cell = cell_1; ivec2 _e156 = o_1.plate; vec2 _e159 = o_1.frame; Seed _e160 = seedAt(_e156, 0u, _e159); uint key_5 = (_e44.key ^ _e160.key); vec2 _e166 = o_1.frame; Seed _e167 = seedAt(cell_1, 1u, _e166); vec3 seed_5 = vec3(_e167.pos, 0.0); vec2 out_2 = normalize(seed_5.xy); vec3 axis_1 = vec3(-(out_2.y), out_2.x, 0.0); vec3 hinge = vec3((seed_5.xy + ((out_2 * 0.5) * _e125)), 0.0); float x_2 = clamp((_e137 / _e139), 0.0, 1.0); float _e191 = rand(_e44.key, 23u); float lean = mix(0.5, 1.1, _e191); float turn = (lean * pow(x_2, 2.2)); float spin = (((lean * 2.2) * pow(x_2, 1.2)) / _e139); vec3 _e205 = rotate((seed_5 - hinge), axis_1, turn); vec3 lifted = (hinge + _e205); vec3 _e208 = randomAxis(key_5); float _e210 = rand(key_5, 12u); vec3 tumble = ((axis_1 * spin) + (_e208 * mix(0.8, 2.6, _e210))); float rate = length(tumble); vec3 around3_ = (tumble / vec3(max(rate, 1e-5))); float _e230 = rand(key_5, 27u); vec2 apart = (normalize(((seed_5.xy - _e160.pos) + vec2(1e-5, 0.0))) * mix(0.01, 0.05, _e230)); float _e239 = rand(key_5, 26u); vec3 velocity = (cross((axis_1 * spin), (lifted - hinge)) + vec3(apart, mix(0.04, 0.12, _e239))); vec3 center = ((lifted + (velocity * flying)) + vec3(0.0, 0.0, ((0.15 * flying) * flying))); float shrink = exp((-0.042 * flying)); float _e262 = _group_0_binding_0_vs.shard.w; float twist = ((-0.042 * flying) * _e262); float after = (rate * flying); vec3 _e266 = roll(center, twist); o_1.center = (_e266 * shrink); o_1.seed = seed_5; vec3 _e274 = rotate(vec3(1.0, 0.0, 0.0), axis_1, turn); vec3 _e275 = rotate(_e274, around3_, after); vec3 _e276 = roll(_e275, twist); o_1.ex = _e276; vec3 _e282 = rotate(vec3(0.0, 1.0, 0.0), axis_1, turn); vec3 _e283 = rotate(_e282, around3_, after); vec3 _e284 = roll(_e283, twist); o_1.ey = _e284; vec3 _e290 = rotate(vec3(0.0, 0.0, 1.0), axis_1, turn); vec3 _e291 = rotate(_e290, around3_, after); vec3 _e292 = roll(_e291, twist); o_1.ez = _e292; o_1.scale = shrink; float _e297 = plateSize(_e160.pos, 0u); o_1.thick = (0.16 * _e297); o_1.reach = _e125; float _e305 = stress((length(_e160.pos) * shrink)); o_1.stress = _e305; float _e309 = rand(_e160.key, 6u); float _e311 = rand(key_5, 6u); float _e313 = o_1.stress; o_1.tint = mix(_e309, _e311, (smoothstep(0.5, 0.8, _e313) * 0.5)); bool _e321 = gone; if (!(_e321)) { local_1 = (_e137 <= 0.0); } else { local_1 = true; } bool _e328 = local_1; if (!(_e328)) { local_2 = (flying > 8.0); } else { local_2 = true; } bool _e335 = local_2; o_1.gone = _e335; Pose _e336 = o_1; return _e336; } vec3 placed(Pose o_2, vec3 x_1) { vec3 v_4 = ((x_1 - o_2.seed) * o_2.scale); return (((o_2.center + (o_2.ex * v_4.x)) + (o_2.ey * v_4.y)) + (o_2.ez * v_4.z)); } vec3 local_3(Pose o_3, vec3 v_3) { return (vec3(dot(v_3, o_3.ex), dot(v_3, o_3.ey), dot(v_3, o_3.ez)) / vec3(o_3.scale)); } Outline outline(Pose o_4) { vec2 poly[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 next[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); int count = 4; int w = 0; vec2 toward = vec2(0.0); float limit = 0.0; int m = 0; int j = 0; bool local_4 = false; bool local_5 = false; int j_1 = 0; Outline o2_ = Outline(vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)), 0); int j_2 = 0; float _e10 = _group_0_binding_0_vs.view.w; float _e15 = _group_0_binding_0_vs.view.z; float width = ((mix(0.32, 3.2, pow(o_4.stress, 1.3)) * _e10) / _e15); float fine = ((width * 0.55) * smoothstep(0.5, 0.8, o_4.stress)); vec2 a_6 = o_4.seed.xy; Seed _e29 = seedAt(o_4.plate, 0u, o_4.frame); vec2 b_4 = _e29.pos; float r_4 = (o_4.reach * 1.5); poly[0] = (a_6 + vec2(-(r_4), -(r_4))); poly[1] = (a_6 + vec2(r_4, -(r_4))); poly[2] = (a_6 + vec2(r_4, r_4)); poly[3] = (a_6 + vec2(-(r_4), r_4)); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e193 = w; w = (_e193 + 1); } loop_init_4 = false; int _e56 = w; if ((_e56 < 16)) { } else { break; } { int _e59 = w; int i_9 = (_e59 % 8); int k_3 = ((i_9 >= 4) ? (i_9 + 1) : i_9); ivec2 off = ivec2(((k_3 % 3) - 1), ((k_3 / 3) - 1)); toward = vec2(0.0); limit = 0.0; int _e80 = w; if ((_e80 < 8)) { Seed _e87 = seedAt((o_4.cell + off), 1u, o_4.frame); vec2 s_5 = _e87.pos; toward = normalize((s_5 - a_6)); vec2 _e94 = toward; limit = (dot((0.5 * (a_6 + s_5)), _e94) - fine); } else { Seed _e101 = seedAt((o_4.plate + off), 0u, o_4.frame); vec2 s_6 = _e101.pos; toward = normalize((s_6 - b_4)); vec2 _e108 = toward; limit = (dot((0.5 * (b_4 + s_6)), _e108) - width); } m = 0; j = 0; bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e173 = j; j = (_e173 + 1); } loop_init_5 = false; int _e115 = j; int _e116 = count; if ((_e115 < _e116)) { } else { break; } { int _e118 = j; vec2 p_3 = poly[_e118]; int _e121 = j; int _e124 = count; vec2 q_3 = poly[((_e121 + 1) % _e124)]; vec2 _e128 = toward; float _e130 = limit; float dp = (dot(p_3, _e128) - _e130); vec2 _e132 = toward; float _e134 = limit; float dq = (dot(q_3, _e132) - _e134); if ((dp <= 0.0)) { int _e140 = m; local_4 = (_e140 < 24); } else { local_4 = false; } bool _e144 = local_4; if (_e144) { int _e145 = m; next[_e145] = p_3; int _e148 = m; m = (_e148 + 1); } if (((dp <= 0.0) != (dq <= 0.0))) { int _e157 = m; local_5 = (_e157 < 24); } else { local_5 = false; } bool _e161 = local_5; if (_e161) { int _e162 = m; next[_e162] = (p_3 + ((q_3 - p_3) * (dp / (dp - dq)))); int _e170 = m; m = (_e170 + 1); } } } int _e175 = m; count = _e175; j_1 = 0; bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e187 = j_1; j_1 = (_e187 + 1); } loop_init_6 = false; int _e178 = j_1; int _e179 = m; if ((_e178 < _e179)) { } else { break; } { int _e181 = j_1; int _e183 = j_1; vec2 _e185 = next[_e183]; poly[_e181] = _e185; } } int _e189 = count; if ((_e189 < 3)) { break; } } } int _e197 = count; o2_.count = min(_e197, 12); bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e213 = j_2; j_2 = (_e213 + 1); } loop_init_7 = false; int _e202 = j_2; int _e204 = o2_.count; if ((_e202 < _e204)) { } else { break; } { int _e207 = j_2; int _e209 = j_2; vec2 _e211 = poly[_e209]; o2_.corners[_e207] = _e211; } } Outline _e215 = o2_; return _e215; } vec4 toClip(vec2 px) { float _e5 = _group_0_binding_0_vs.view.x; float _e15 = _group_0_binding_0_vs.view.y; return vec4((((px.x / _e5) * 2.0) - 1.0), (1.0 - ((px.y / _e15) * 2.0)), 0.5, 1.0); } PieceOut pieceOut(uint index_2, bool shadow) { PieceOut p_2 = PieceOut(vec4(0.0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), 0, vec2(0.0)); vec2 lo = vec2(1000000000.0); vec2 hi = vec2(-1000000000.0); int behind = 0; int i_2 = 0; vec2 at_1 = vec2(0.0); bool local_6 = false; bool local_7 = false; bool local_8 = false; vec2 corners[6] = vec2[6](vec2(0.0, 0.0), vec2(1.0, 0.0), vec2(0.0, 1.0), vec2(0.0, 1.0), vec2(1.0, 0.0), vec2(1.0, 1.0)); Pose _e5 = pose((index_2 / PIECE_VERTICES)); if (_e5.gone) { p_2.position = vec4(2.0, 2.0, 2.0, 1.0); PieceOut _e13 = p_2; return _e13; } Outline _e14 = outline(_e5); float d_3 = _group_0_binding_0_vs.camera.x; vec4 _e21 = _group_0_binding_0_vs.light; vec3 l = _e21.xyz; bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e82 = i_2; i_2 = (_e82 + 1); } loop_init_8 = false; int _e33 = i_2; if ((_e33 < (_e14.count * 2))) { } else { break; } { int _e39 = i_2; int _e45 = i_2; vec3 _e51 = placed(_e5, vec3(_e14.corners[(_e39 / 2)], (-(_e5.thick) * float((_e45 % 2))))); at_1 = (_e51.xy - (l.xy * (_e51.z / max(l.z, 0.05)))); if (!(shadow)) { if ((_e51.z > (d_3 * 0.999))) { int _e68 = behind; behind = (_e68 + 1); continue; } at_1 = (_e51.xy * (d_3 / (d_3 - _e51.z))); } vec2 _e75 = lo; vec2 _e76 = at_1; lo = min(_e75, _e76); vec2 _e78 = hi; vec2 _e79 = at_1; hi = max(_e78, _e79); } } vec4 _e86 = _group_0_binding_0_vs.frame; float _e92 = _group_0_binding_0_vs.view.z; vec2 viewLo = (-(_e86.xy) / vec2(_e92)); vec4 _e97 = _group_0_binding_0_vs.view; vec4 _e101 = _group_0_binding_0_vs.frame; float _e107 = _group_0_binding_0_vs.view.z; vec2 viewHi = ((_e97.xy - _e101.xy) / vec2(_e107)); int _e110 = behind; if ((_e110 > 0)) { lo = viewLo; hi = viewHi; } if (!((_e14.count < 3))) { int _e119 = behind; local_6 = (_e119 == (_e14.count * 2)); } else { local_6 = true; } bool _e125 = local_6; if (!(_e125)) { vec2 _e129 = hi; local_7 = any(lessThan(_e129, viewLo)); } else { local_7 = true; } bool _e133 = local_7; if (!(_e133)) { vec2 _e137 = lo; local_8 = any(greaterThan(_e137, viewHi)); } else { local_8 = true; } bool gone_1 = local_8; vec2 _e162 = lo; vec2 _e163 = hi; vec2 _e167 = corners[(index_2 % PIECE_VERTICES)]; vec2 at_2 = mix(_e162, _e163, _e167); vec4 _e172 = _group_0_binding_0_vs.frame; float _e177 = _group_0_binding_0_vs.view.z; vec4 _e180 = toClip((_e172.xy + (at_2 * _e177))); p_2.position = (gone_1 ? vec4(2.0, 2.0, 2.0, 1.0) : _e180); p_2.at = at_2; p_2.center = _e5.center; p_2.seed = _e5.seed; p_2.ex = _e5.ex; p_2.ey = _e5.ey; p_2.ez = _e5.ez; p_2.look = vec4(_e5.thick, _e5.stress, _e5.tint, _e5.scale); vec2 c_4[12] = _e14.corners; p_2.c0_ = vec4(c_4[0], c_4[1]); p_2.c1_ = vec4(c_4[2], c_4[3]); p_2.c2_ = vec4(c_4[4], c_4[5]); p_2.c3_ = vec4(c_4[6], c_4[7]); p_2.c4_ = vec4(c_4[8], c_4[9]); p_2.c5_ = vec4(c_4[10], c_4[11]); p_2.count = _e14.count; p_2.frame = _e5.frame; PieceOut _e233 = p_2; return _e233; } Hit slab(vec3 o_5, vec3 d_1, PieceOut in_3) { Hit h_1 = Hit(0.0, vec3(0.0), false, 0.0, vec2(0.0)); vec2 c_1[12] = vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 middle = vec2(0.0); int i_3 = 0; vec3 walls[12] = vec3[12](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); int i_4 = 0; vec2 out_1 = vec2(0.0); float enter = -1000000000.0; float leave = 1000000000.0; vec3 normal = vec3(0.0, 0.0, 1.0); bool local_9 = false; int i_5 = 0; bool local_10 = false; int i_6 = 0; h_1.t = -1.0; c_1 = vec2[12](in_3.c0_.xy, in_3.c0_.zw, in_3.c1_.xy, in_3.c1_.zw, in_3.c2_.xy, in_3.c2_.zw, in_3.c3_.xy, in_3.c3_.zw, in_3.c4_.xy, in_3.c4_.zw, in_3.c5_.xy, in_3.c5_.zw); int count_1 = in_3.count; bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e46 = i_3; i_3 = (_e46 + 1); } loop_init_9 = false; int _e38 = i_3; if ((_e38 < count_1)) { } else { break; } { vec2 _e40 = middle; int _e41 = i_3; vec2 _e43 = c_1[_e41]; middle = (_e40 + _e43); } } vec2 _e48 = middle; middle = (_e48 / vec2(float(count_1))); bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e94 = i_4; i_4 = (_e94 + 1); } loop_init_10 = false; int _e55 = i_4; if ((_e55 < count_1)) { } else { break; } { int _e57 = i_4; vec2 a_7 = c_1[_e57]; int _e60 = i_4; vec2 b_5 = c_1[((_e60 + 1) % count_1)]; out_1 = normalize((vec2((b_5.y - a_7.y), (a_7.x - b_5.x)) + vec2(1e-9, 0.0))); vec2 _e79 = out_1; vec2 _e80 = middle; if ((dot(_e79, (_e80 - a_7)) > 0.0)) { vec2 _e85 = out_1; out_1 = -(_e85); } int _e87 = i_4; vec2 _e89 = out_1; vec2 _e90 = out_1; walls[_e87] = vec3(_e89, dot(_e90, a_7)); } } if ((abs(d_1.z) < 1e-8)) { if (!((o_5.z > 0.0))) { local_9 = (o_5.z < -(in_3.look.x)); } else { local_9 = true; } bool _e121 = local_9; if (_e121) { Hit _e122 = h_1; return _e122; } } else { float t0_ = (-(o_5.z) / d_1.z); float t1_ = ((-(in_3.look.x) - o_5.z) / d_1.z); if ((d_1.z < 0.0)) { enter = t0_; leave = t1_; } else { enter = t1_; leave = t0_; normal = vec3(0.0, 0.0, -1.0); } } bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e173 = i_5; i_5 = (_e173 + 1); } loop_init_11 = false; int _e143 = i_5; if ((_e143 < count_1)) { } else { break; } { int _e145 = i_5; vec3 w_2 = walls[_e145]; float across_1 = dot(d_1.xy, w_2.xy); float room = (w_2.z - dot(o_5.xy, w_2.xy)); if ((abs(across_1) < 1e-8)) { if ((room < 0.0)) { Hit _e161 = h_1; return _e161; } continue; } float t = (room / across_1); if ((across_1 < 0.0)) { float _e165 = enter; if ((t > _e165)) { enter = t; normal = vec3(w_2.xy, 0.0); } } else { float _e170 = leave; leave = min(_e170, t); } } } float _e175 = enter; float _e176 = leave; if (!((_e175 > _e176))) { float _e181 = enter; local_10 = (_e181 < 0.0); } else { local_10 = true; } bool _e185 = local_10; if (_e185) { Hit _e186 = h_1; return _e186; } float _e188 = enter; h_1.t = _e188; vec3 _e190 = normal; h_1.normal = _e190; float _e193 = normal.z; h_1.face = (_e193 > 0.5); float _e198 = enter; vec2 p_4 = (o_5.xy + (d_1.xy * _e198)); h_1.edge = 1000000000.0; bool loop_init_12 = true; while(true) { if (!loop_init_12) { int _e227 = i_6; i_6 = (_e227 + 1); } loop_init_12 = false; int _e205 = i_6; if ((_e205 < count_1)) { } else { break; } { int _e207 = i_6; float _e210 = walls[_e207].z; int _e211 = i_6; vec3 _e213 = walls[_e211]; float room_1 = (_e210 - dot(p_4, _e213.xy)); float _e218 = h_1.edge; if ((room_1 < _e218)) { h_1.edge = room_1; int _e222 = i_6; vec3 _e224 = walls[_e222]; h_1.edgeNormal = _e224.xy; } } } Hit _e229 = h_1; return _e229; } Pose poseOf(PieceOut in_4) { return Pose(ivec2(0), ivec2(0), vec2(0.0), in_4.center, in_4.seed, in_4.ex, in_4.ey, in_4.ez, in_4.look.w, in_4.look.x, 0.0, in_4.look.y, in_4.look.z, false); } void main() { uint index_1 = uint(gl_VertexID); PieceOut _e2 = pieceOut(index_1, true); gl_Position = _e2.position; _vs2fs_location0 = _e2.at; _vs2fs_location1 = _e2.center; _vs2fs_location2 = _e2.seed; _vs2fs_location3 = _e2.ex; _vs2fs_location4 = _e2.ey; _vs2fs_location5 = _e2.ez; _vs2fs_location6 = _e2.look; _vs2fs_location7 = _e2.c0_; _vs2fs_location8 = _e2.c1_; _vs2fs_location9 = _e2.c2_; _vs2fs_location10 = _e2.c3_; _vs2fs_location11 = _e2.c4_; _vs2fs_location12 = _e2.c5_; _vs2fs_location13 = _e2.count; _vs2fs_location14 = _e2.frame; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_piecemain�#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Seed { vec2 pos; uint key; }; struct Cell { vec2 seed; uint key; float edge; uint other; }; struct VsOut { vec4 position; }; struct Pose { ivec2 cell; ivec2 plate; vec2 frame; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { vec2 corners[12]; int count; }; struct PieceOut { vec4 position; vec2 at; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; vec4 look; vec4 c0_; vec4 c1_; vec4 c2_; vec4 c3_; vec4 c4_; vec4 c5_; int count; vec2 frame; }; struct Hit { float t; vec3 normal; bool face; float edge; vec2 edgeNormal; }; struct PieceColor { vec4 color; float depth; }; const uint PIECE_VERTICES = 6u; const uint PLATES_A_CELL = 4u; layout(std140) uniform Scene_block_0Fragment { Scene _group_0_binding_0_fs; }; smooth in vec2 _vs2fs_location0; flat in vec3 _vs2fs_location1; flat in vec3 _vs2fs_location2; flat in vec3 _vs2fs_location3; flat in vec3 _vs2fs_location4; flat in vec3 _vs2fs_location5; flat in vec4 _vs2fs_location6; flat in vec4 _vs2fs_location7; flat in vec4 _vs2fs_location8; flat in vec4 _vs2fs_location9; flat in vec4 _vs2fs_location10; flat in vec4 _vs2fs_location11; flat in vec4 _vs2fs_location12; flat in int _vs2fs_location13; flat in vec2 _vs2fs_location14; layout(location = 0) out vec4 _fs2p_location0; uint pcg(uint v) { uint s_2 = ((v * 747796405u) + 2891336453u); uint w_1 = (((s_2 >> ((s_2 >> 28u) + 4u)) ^ s_2) * 277803737u); return ((w_1 >> 22u) ^ w_1); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } float density(uint level) { return ((level == 1u) ? 1.5 : 1.0); } Seed seedAt(ivec2 c, uint level_1, vec2 frame) { Seed s = Seed(vec2(0.0), 0u); float _e3 = density(level_1); float _e7 = _group_0_binding_0_fs.wall.z; float perRadian = ((_e7 * _e3) / 6.2831855); float _e14 = _group_0_binding_0_fs.wall.z; int around = int(roundEven((_e14 * _e3))); int wrap = int(roundEven((1024.0 * _e3))); uint i_7 = uint((((c.x % wrap) + wrap) % wrap)); uint j_3 = uint((((c.y % around) + around) % around)); uint _e35 = pcg((j_3 + (level_1 * 5369127u))); uint _e37 = pcg((i_7 + _e35)); float _e38 = unit(_e37); uint _e39 = pcg(_e37); float _e40 = unit(_e39); vec2 jitter = (vec2(0.5) + ((vec2(_e38, _e40) - vec2(0.5)) * 0.8)); vec2 g_1 = ((vec2(c) + jitter) + (frame * _e3)); float r_2 = exp((g_1.x / perRadian)); float a_1 = (g_1.y / perRadian); s.pos = (r_2 * vec2(cos(a_1), sin(a_1))); s.key = _e37; Seed _e66 = s; return _e66; } Cell voronoi(vec2 q, uint level_2, vec2 frame_1) { vec2 pos[9] = vec2[9](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); uint keys[9] = uint[9](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u); float best = 1000000000.0; int nearest = 0; int n_1 = 0; Cell cell = Cell(vec2(0.0), 0u, 0.0, 0u); int n_2 = 0; float _e3 = density(level_2); float _e7 = _group_0_binding_0_fs.wall.z; float perRadian_1 = ((_e7 * _e3) / 6.2831855); vec2 g_2 = ((vec2(log(max(length(q), 0.0001)), atan(q.y, q.x)) * perRadian_1) - (frame_1 * _e3)); ivec2 base = ivec2(floor(g_2)); bool loop_init = true; while(true) { if (!loop_init) { int _e63 = n_1; n_1 = (_e63 + 1); } loop_init = false; int _e32 = n_1; if ((_e32 < 9)) { } else { break; } { int _e35 = n_1; int _e40 = n_1; Seed _e47 = seedAt((base + ivec2(((_e35 % 3) - 1), ((_e40 / 3) - 1))), level_2, frame_1); int _e48 = n_1; pos[_e48] = _e47.pos; int _e51 = n_1; keys[_e51] = _e47.key; float d_2 = dot((q - _e47.pos), (q - _e47.pos)); float _e59 = best; if ((d_2 < _e59)) { best = d_2; int _e61 = n_1; nearest = _e61; } } } int _e65 = nearest; vec2 a_2 = pos[_e65]; cell.seed = a_2; int _e71 = nearest; uint _e73 = keys[_e71]; cell.key = _e73; cell.edge = 1000000000.0; uint _e78 = cell.key; cell.other = _e78; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e106 = n_2; n_2 = (_e106 + 1); } loop_init_1 = false; int _e81 = n_2; if ((_e81 < 9)) { } else { break; } { int _e84 = n_2; int _e85 = nearest; if ((_e84 == _e85)) { continue; } int _e87 = n_2; vec2 b_2 = pos[_e87]; float e = dot(((0.5 * (a_2 + b_2)) - q), normalize((b_2 - a_2))); float _e98 = cell.edge; if ((e < _e98)) { cell.edge = e; int _e102 = n_2; uint _e104 = keys[_e102]; cell.other = _e104; } } } Cell _e108 = cell; return _e108; } vec2 wallFrame() { vec4 _e2 = _group_0_binding_0_fs.frame; return _e2.zw; } float stress(float r) { float _e4 = _group_0_binding_0_fs.wall.x; float _e8 = _group_0_binding_0_fs.build.z; float hole = (_e4 * _e8); float _e15 = _group_0_binding_0_fs.wall.y; float _e24 = _group_0_binding_0_fs.build.y; return (clamp(exp((-((r - hole)) / _e15)), 0.0, 1.0) * _e24); } float peelTime(vec2 seed, uint key_1) { float _e5 = _group_0_binding_0_fs.build.z; if ((_e5 < 0.01)) { return -1000.0; } float _e12 = _group_0_binding_0_fs.wall.x; float _e14 = rand(key_1, 21u); float crack = (_e12 * mix(1.12, 1.6, _e14)); return (log((crack / max(length(seed), 0.0001))) / 0.042); } float looseTime(uint key_2) { float _e2 = rand(key_2, 21u); float _e7 = rand(key_2, 22u); return (log((mix(1.12, 1.6, _e2) / mix(0.85, 1.05, _e7))) / 0.042); } float plateSize(vec2 seed_1, uint level_3) { float _e8 = _group_0_binding_0_fs.wall.z; float _e9 = density(level_3); return ((length(seed_1) * 6.2831855) / (_e8 * _e9)); } float cracked(float r_1, uint a, uint b_1, float size) { float _e5 = rand(a, 9u); float _e7 = rand(b_1, 9u); float pace = (0.8 + (0.2 * (_e5 + _e7))); float _e16 = _group_0_binding_0_fs.view.z; float _e21 = _group_0_binding_0_fs.view.w; float px_1 = ((size * _e16) / _e21); float _e26 = _group_0_binding_0_fs.build.x; return (clamp((((_e26 * pace) - r_1) / 0.04), 0.0, 1.0) * smoothstep(1.0, 14.0, px_1)); } float loose(vec2 seed_2) { float _e4 = _group_0_binding_0_fs.build.x; return clamp((((_e4 * 0.85) - length(seed_2)) / 0.06), 0.0, 1.0); } float knocked(vec2 seed_3, float size_1) { float lift = 0.0; vec4 hits = _group_0_binding_0_fs.hits; float _e8 = _group_0_binding_0_fs.wall.x; float ring = (_e8 + (hits.x * 1.4)); float across = ((length(seed_3) - ring) / 0.09); lift = ((hits.y * exp(((-(across) * across) - (hits.x * 1.8)))) * 0.5); vec4 _e31 = _group_0_binding_0_fs.strike; float toStrike = (length((seed_3 - _e31.xy)) / 0.16); float _e37 = lift; lift = (_e37 + ((hits.w * exp(((-(toStrike) * toStrike) - (hits.z * 2.2)))) * 0.6)); float _e50 = lift; return (_e50 * size_1); } float valueNoise(vec2 p_1, int period, uint salt) { ivec2 i_8 = ivec2(floor(p_1)); vec2 f = fract(p_1); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); uint y0_ = ((uint((((i_8.y % period) + period) % period)) * 668265261u) + salt); uint y1_ = ((uint(((((i_8.y + 1) % period) + period) % period)) * 668265261u) + salt); uint _e36 = pcg(((uint(i_8.x) * 374761393u) + y0_)); float _e37 = unit(_e36); uint _e45 = pcg(((uint((i_8.x + 1)) * 374761393u) + y0_)); float _e46 = unit(_e45); uint _e52 = pcg(((uint(i_8.x) * 374761393u) + y1_)); float _e53 = unit(_e52); uint _e61 = pcg(((uint((i_8.x + 1)) * 374761393u) + y1_)); float _e62 = unit(_e61); return mix(mix(_e37, _e46, u.x), mix(_e53, _e62, u.x), u.y); } float octaves(vec2 g, float ratio, uint salt_1) { float k_1 = log2(max(ratio, 1.0)); float n_4 = floor(k_1); float f_1 = (k_1 - n_4); float m_1 = exp2(n_4); float _e13 = _group_0_binding_0_fs.wall.z; float _e21 = valueNoise((g * m_1), int(roundEven((_e13 * m_1))), (salt_1 + (uint(n_4) * 2654435769u))); float a_3 = (_e21 - 0.5); float _e30 = _group_0_binding_0_fs.wall.z; float _e42 = valueNoise(((g * m_1) * 2.0), int(roundEven(((_e30 * m_1) * 2.0))), (salt_1 + (uint((n_4 + 1.0)) * 2654435769u))); float b_3 = (_e42 - 0.5); float wa = (1.0 - f_1); return (0.5 + (((a_3 * wa) + (b_3 * f_1)) * inversesqrt(((wa * wa) + (f_1 * f_1))))); } float plaster(vec2 q_1, vec2 frame_2, float pxPerUnit) { float _e6 = _group_0_binding_0_fs.wall.z; float perRadian_2 = (_e6 / 6.2831855); float r_3 = max(length(q_1), 0.0001); vec2 g_3 = ((vec2(log(r_3), atan(q_1.y, q_1.x)) * perRadian_2) - frame_2); float cellPx = ((r_3 * pxPerUnit) / perRadian_2); float dpr = _group_0_binding_0_fs.view.w; float _e29 = octaves(g_3, (cellPx / (2.2 * dpr)), 11u); float _e36 = octaves(g_3, (cellPx / (11.0 * dpr)), 23u); return ((0.65 * _e29) + (0.35 * _e36)); } float plateTop(vec2 q_2, vec2 seed_4, uint key_3, float s_1, float size_2, float calm_1) { float _e10 = rand(key_3, 3u); float lift_1 = ((((0.2 * s_1) * s_1) * (0.25 + (0.75 * _e10))) * size_2); float _e18 = rand(key_3, 4u); float a_4 = (_e18 * 6.2831855); float _e28 = rand(key_3, 5u); vec2 tilt = (((vec2(cos(a_4), sin(a_4)) * 0.4) * s_1) * _e28); float _e34 = knocked(seed_4, size_2); float _e39 = _group_0_binding_0_fs.view.z; return ((((lift_1 + dot(tilt, (q_2 - seed_4))) * calm_1) + _e34) * _e39); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_3 = sin(angle); float k_2 = cos(angle); return (((v_1 * k_2) + (cross(axis, v_1) * s_3)) + ((axis * dot(axis, v_1)) * (1.0 - k_2))); } vec3 randomAxis(uint key_4) { float _e2 = rand(key_4, 10u); float z = ((_e2 * 2.0) - 1.0); float _e8 = rand(key_4, 11u); float a_5 = (_e8 * 6.2831855); return vec3((sqrt(max((1.0 - (z * z)), 0.0)) * vec2(cos(a_5), sin(a_5))), z); } vec3 roll(vec3 v_2, float angle_1) { float c_2 = cos(angle_1); float s_4 = sin(angle_1); return vec3(((v_2.x * c_2) - (v_2.y * s_4)), ((v_2.x * s_4) + (v_2.y * c_2)), v_2.z); } Pose pose(uint n_3) { Pose o_1 = Pose(ivec2(0), ivec2(0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), 0.0, 0.0, 0.0, 0.0, 0.0, false); ivec2 near[4] = ivec2[4](ivec2(0), ivec2(0), ivec2(0), ivec2(0)); float far[4] = float[4](1000000000.0, 1000000000.0, 1000000000.0, 1000000000.0); int i_1 = 0; float d = 0.0; ivec2 at = ivec2(0); int k = 0; bool gone = false; bool local_1 = false; bool local_2 = false; float _e5 = _group_0_binding_0_fs.wall.z; uint around_1 = uint(roundEven((_e5 * 1.5))); uint pick = (n_3 % PLATES_A_CELL); uint m_2 = (n_3 / PLATES_A_CELL); vec2 _e14 = wallFrame(); float _e18 = _group_0_binding_0_fs.wall.z; float perRadian_3 = (_e18 / 6.2831855); float _e24 = _group_0_binding_0_fs.wall.x; int top_1 = (int(floor((((log((_e24 * 1.6)) * perRadian_3) - _e14.x) * 1.5))) + 2); ivec2 cell_1 = ivec2((top_1 - int((m_2 / around_1))), int((m_2 % around_1))); Seed _e44 = seedAt(cell_1, 1u, _e14); vec2 g_4 = ((vec2(log(max(length(_e44.pos), 0.0001)), atan(_e44.pos.y, _e44.pos.x)) * perRadian_3) - _e14); ivec2 base_1 = ivec2(floor(g_4)); near = ivec2[4](base_1, base_1, base_1, base_1); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e118 = i_1; i_1 = (_e118 + 1); } loop_init_2 = false; int _e70 = i_1; if ((_e70 < 9)) { } else { break; } { int _e73 = i_1; int _e78 = i_1; ivec2 c_3 = (base_1 + ivec2(((_e73 % 3) - 1), ((_e78 / 3) - 1))); Seed _e86 = seedAt(c_3, 0u, _e14); d = distance(_e86.pos, _e44.pos); at = c_3; k = 0; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e115 = k; k = (_e115 + 1); } loop_init_3 = false; int _e94 = k; if ((_e94 < 4)) { } else { break; } { float _e97 = d; int _e98 = k; float _e100 = far[_e98]; if ((_e97 < _e100)) { int _e102 = k; float keepD = far[_e102]; int _e105 = k; ivec2 keepC = near[_e105]; int _e108 = k; float _e110 = d; far[_e108] = _e110; int _e111 = k; ivec2 _e113 = at; near[_e111] = _e113; d = keepD; at = keepC; } } } } } ivec2 _e122 = near[pick]; o_1.plate = _e122; float _e125 = plateSize(_e44.pos, 1u); float _e127 = far[pick]; float _e129 = far[0]; gone = (_e127 > (_e129 + (2.6 * _e125))); float _e137 = peelTime(_e44.pos, _e44.key); float _e139 = looseTime(_e44.key); float flying = max((_e137 - _e139), 0.0); float back = ((flying * 0.042) * perRadian_3); float _e150 = _group_0_binding_0_fs.shard.w; o_1.frame = (_e14 + vec2(back, (back * _e150))); o_1.cell = cell_1; ivec2 _e156 = o_1.plate; vec2 _e159 = o_1.frame; Seed _e160 = seedAt(_e156, 0u, _e159); uint key_5 = (_e44.key ^ _e160.key); vec2 _e166 = o_1.frame; Seed _e167 = seedAt(cell_1, 1u, _e166); vec3 seed_5 = vec3(_e167.pos, 0.0); vec2 out_2 = normalize(seed_5.xy); vec3 axis_1 = vec3(-(out_2.y), out_2.x, 0.0); vec3 hinge = vec3((seed_5.xy + ((out_2 * 0.5) * _e125)), 0.0); float x_2 = clamp((_e137 / _e139), 0.0, 1.0); float _e191 = rand(_e44.key, 23u); float lean = mix(0.5, 1.1, _e191); float turn = (lean * pow(x_2, 2.2)); float spin = (((lean * 2.2) * pow(x_2, 1.2)) / _e139); vec3 _e205 = rotate((seed_5 - hinge), axis_1, turn); vec3 lifted = (hinge + _e205); vec3 _e208 = randomAxis(key_5); float _e210 = rand(key_5, 12u); vec3 tumble = ((axis_1 * spin) + (_e208 * mix(0.8, 2.6, _e210))); float rate = length(tumble); vec3 around3_ = (tumble / vec3(max(rate, 1e-5))); float _e230 = rand(key_5, 27u); vec2 apart = (normalize(((seed_5.xy - _e160.pos) + vec2(1e-5, 0.0))) * mix(0.01, 0.05, _e230)); float _e239 = rand(key_5, 26u); vec3 velocity = (cross((axis_1 * spin), (lifted - hinge)) + vec3(apart, mix(0.04, 0.12, _e239))); vec3 center = ((lifted + (velocity * flying)) + vec3(0.0, 0.0, ((0.15 * flying) * flying))); float shrink = exp((-0.042 * flying)); float _e262 = _group_0_binding_0_fs.shard.w; float twist = ((-0.042 * flying) * _e262); float after = (rate * flying); vec3 _e266 = roll(center, twist); o_1.center = (_e266 * shrink); o_1.seed = seed_5; vec3 _e274 = rotate(vec3(1.0, 0.0, 0.0), axis_1, turn); vec3 _e275 = rotate(_e274, around3_, after); vec3 _e276 = roll(_e275, twist); o_1.ex = _e276; vec3 _e282 = rotate(vec3(0.0, 1.0, 0.0), axis_1, turn); vec3 _e283 = rotate(_e282, around3_, after); vec3 _e284 = roll(_e283, twist); o_1.ey = _e284; vec3 _e290 = rotate(vec3(0.0, 0.0, 1.0), axis_1, turn); vec3 _e291 = rotate(_e290, around3_, after); vec3 _e292 = roll(_e291, twist); o_1.ez = _e292; o_1.scale = shrink; float _e297 = plateSize(_e160.pos, 0u); o_1.thick = (0.16 * _e297); o_1.reach = _e125; float _e305 = stress((length(_e160.pos) * shrink)); o_1.stress = _e305; float _e309 = rand(_e160.key, 6u); float _e311 = rand(key_5, 6u); float _e313 = o_1.stress; o_1.tint = mix(_e309, _e311, (smoothstep(0.5, 0.8, _e313) * 0.5)); bool _e321 = gone; if (!(_e321)) { local_1 = (_e137 <= 0.0); } else { local_1 = true; } bool _e328 = local_1; if (!(_e328)) { local_2 = (flying > 8.0); } else { local_2 = true; } bool _e335 = local_2; o_1.gone = _e335; Pose _e336 = o_1; return _e336; } vec3 placed(Pose o_2, vec3 x_1) { vec3 v_4 = ((x_1 - o_2.seed) * o_2.scale); return (((o_2.center + (o_2.ex * v_4.x)) + (o_2.ey * v_4.y)) + (o_2.ez * v_4.z)); } vec3 local_3(Pose o_3, vec3 v_3) { return (vec3(dot(v_3, o_3.ex), dot(v_3, o_3.ey), dot(v_3, o_3.ez)) / vec3(o_3.scale)); } Outline outline(Pose o_4) { vec2 poly[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 next[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); int count = 4; int w = 0; vec2 toward = vec2(0.0); float limit = 0.0; int m = 0; int j = 0; bool local_4 = false; bool local_5 = false; int j_1 = 0; Outline o2_ = Outline(vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)), 0); int j_2 = 0; float _e10 = _group_0_binding_0_fs.view.w; float _e15 = _group_0_binding_0_fs.view.z; float width = ((mix(0.32, 3.2, pow(o_4.stress, 1.3)) * _e10) / _e15); float fine = ((width * 0.55) * smoothstep(0.5, 0.8, o_4.stress)); vec2 a_6 = o_4.seed.xy; Seed _e29 = seedAt(o_4.plate, 0u, o_4.frame); vec2 b_4 = _e29.pos; float r_4 = (o_4.reach * 1.5); poly[0] = (a_6 + vec2(-(r_4), -(r_4))); poly[1] = (a_6 + vec2(r_4, -(r_4))); poly[2] = (a_6 + vec2(r_4, r_4)); poly[3] = (a_6 + vec2(-(r_4), r_4)); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e193 = w; w = (_e193 + 1); } loop_init_4 = false; int _e56 = w; if ((_e56 < 16)) { } else { break; } { int _e59 = w; int i_9 = (_e59 % 8); int k_3 = ((i_9 >= 4) ? (i_9 + 1) : i_9); ivec2 off = ivec2(((k_3 % 3) - 1), ((k_3 / 3) - 1)); toward = vec2(0.0); limit = 0.0; int _e80 = w; if ((_e80 < 8)) { Seed _e87 = seedAt((o_4.cell + off), 1u, o_4.frame); vec2 s_5 = _e87.pos; toward = normalize((s_5 - a_6)); vec2 _e94 = toward; limit = (dot((0.5 * (a_6 + s_5)), _e94) - fine); } else { Seed _e101 = seedAt((o_4.plate + off), 0u, o_4.frame); vec2 s_6 = _e101.pos; toward = normalize((s_6 - b_4)); vec2 _e108 = toward; limit = (dot((0.5 * (b_4 + s_6)), _e108) - width); } m = 0; j = 0; bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e173 = j; j = (_e173 + 1); } loop_init_5 = false; int _e115 = j; int _e116 = count; if ((_e115 < _e116)) { } else { break; } { int _e118 = j; vec2 p_3 = poly[_e118]; int _e121 = j; int _e124 = count; vec2 q_3 = poly[((_e121 + 1) % _e124)]; vec2 _e128 = toward; float _e130 = limit; float dp = (dot(p_3, _e128) - _e130); vec2 _e132 = toward; float _e134 = limit; float dq = (dot(q_3, _e132) - _e134); if ((dp <= 0.0)) { int _e140 = m; local_4 = (_e140 < 24); } else { local_4 = false; } bool _e144 = local_4; if (_e144) { int _e145 = m; next[_e145] = p_3; int _e148 = m; m = (_e148 + 1); } if (((dp <= 0.0) != (dq <= 0.0))) { int _e157 = m; local_5 = (_e157 < 24); } else { local_5 = false; } bool _e161 = local_5; if (_e161) { int _e162 = m; next[_e162] = (p_3 + ((q_3 - p_3) * (dp / (dp - dq)))); int _e170 = m; m = (_e170 + 1); } } } int _e175 = m; count = _e175; j_1 = 0; bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e187 = j_1; j_1 = (_e187 + 1); } loop_init_6 = false; int _e178 = j_1; int _e179 = m; if ((_e178 < _e179)) { } else { break; } { int _e181 = j_1; int _e183 = j_1; vec2 _e185 = next[_e183]; poly[_e181] = _e185; } } int _e189 = count; if ((_e189 < 3)) { break; } } } int _e197 = count; o2_.count = min(_e197, 12); bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e213 = j_2; j_2 = (_e213 + 1); } loop_init_7 = false; int _e202 = j_2; int _e204 = o2_.count; if ((_e202 < _e204)) { } else { break; } { int _e207 = j_2; int _e209 = j_2; vec2 _e211 = poly[_e209]; o2_.corners[_e207] = _e211; } } Outline _e215 = o2_; return _e215; } vec4 toClip(vec2 px) { float _e5 = _group_0_binding_0_fs.view.x; float _e15 = _group_0_binding_0_fs.view.y; return vec4((((px.x / _e5) * 2.0) - 1.0), (1.0 - ((px.y / _e15) * 2.0)), 0.5, 1.0); } PieceOut pieceOut(uint index_2, bool shadow) { PieceOut p_2 = PieceOut(vec4(0.0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), 0, vec2(0.0)); vec2 lo = vec2(1000000000.0); vec2 hi = vec2(-1000000000.0); int behind = 0; int i_2 = 0; vec2 at_1 = vec2(0.0); bool local_6 = false; bool local_7 = false; bool local_8 = false; vec2 corners[6] = vec2[6](vec2(0.0, 0.0), vec2(1.0, 0.0), vec2(0.0, 1.0), vec2(0.0, 1.0), vec2(1.0, 0.0), vec2(1.0, 1.0)); Pose _e5 = pose((index_2 / PIECE_VERTICES)); if (_e5.gone) { p_2.position = vec4(2.0, 2.0, 2.0, 1.0); PieceOut _e13 = p_2; return _e13; } Outline _e14 = outline(_e5); float d_3 = _group_0_binding_0_fs.camera.x; vec4 _e21 = _group_0_binding_0_fs.light; vec3 l = _e21.xyz; bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e82 = i_2; i_2 = (_e82 + 1); } loop_init_8 = false; int _e33 = i_2; if ((_e33 < (_e14.count * 2))) { } else { break; } { int _e39 = i_2; int _e45 = i_2; vec3 _e51 = placed(_e5, vec3(_e14.corners[(_e39 / 2)], (-(_e5.thick) * float((_e45 % 2))))); at_1 = (_e51.xy - (l.xy * (_e51.z / max(l.z, 0.05)))); if (!(shadow)) { if ((_e51.z > (d_3 * 0.999))) { int _e68 = behind; behind = (_e68 + 1); continue; } at_1 = (_e51.xy * (d_3 / (d_3 - _e51.z))); } vec2 _e75 = lo; vec2 _e76 = at_1; lo = min(_e75, _e76); vec2 _e78 = hi; vec2 _e79 = at_1; hi = max(_e78, _e79); } } vec4 _e86 = _group_0_binding_0_fs.frame; float _e92 = _group_0_binding_0_fs.view.z; vec2 viewLo = (-(_e86.xy) / vec2(_e92)); vec4 _e97 = _group_0_binding_0_fs.view; vec4 _e101 = _group_0_binding_0_fs.frame; float _e107 = _group_0_binding_0_fs.view.z; vec2 viewHi = ((_e97.xy - _e101.xy) / vec2(_e107)); int _e110 = behind; if ((_e110 > 0)) { lo = viewLo; hi = viewHi; } if (!((_e14.count < 3))) { int _e119 = behind; local_6 = (_e119 == (_e14.count * 2)); } else { local_6 = true; } bool _e125 = local_6; if (!(_e125)) { vec2 _e129 = hi; local_7 = any(lessThan(_e129, viewLo)); } else { local_7 = true; } bool _e133 = local_7; if (!(_e133)) { vec2 _e137 = lo; local_8 = any(greaterThan(_e137, viewHi)); } else { local_8 = true; } bool gone_1 = local_8; vec2 _e162 = lo; vec2 _e163 = hi; vec2 _e167 = corners[(index_2 % PIECE_VERTICES)]; vec2 at_2 = mix(_e162, _e163, _e167); vec4 _e172 = _group_0_binding_0_fs.frame; float _e177 = _group_0_binding_0_fs.view.z; vec4 _e180 = toClip((_e172.xy + (at_2 * _e177))); p_2.position = (gone_1 ? vec4(2.0, 2.0, 2.0, 1.0) : _e180); p_2.at = at_2; p_2.center = _e5.center; p_2.seed = _e5.seed; p_2.ex = _e5.ex; p_2.ey = _e5.ey; p_2.ez = _e5.ez; p_2.look = vec4(_e5.thick, _e5.stress, _e5.tint, _e5.scale); vec2 c_4[12] = _e14.corners; p_2.c0_ = vec4(c_4[0], c_4[1]); p_2.c1_ = vec4(c_4[2], c_4[3]); p_2.c2_ = vec4(c_4[4], c_4[5]); p_2.c3_ = vec4(c_4[6], c_4[7]); p_2.c4_ = vec4(c_4[8], c_4[9]); p_2.c5_ = vec4(c_4[10], c_4[11]); p_2.count = _e14.count; p_2.frame = _e5.frame; PieceOut _e233 = p_2; return _e233; } Hit slab(vec3 o_5, vec3 d_1, PieceOut in_3) { Hit h_1 = Hit(0.0, vec3(0.0), false, 0.0, vec2(0.0)); vec2 c_1[12] = vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 middle = vec2(0.0); int i_3 = 0; vec3 walls[12] = vec3[12](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); int i_4 = 0; vec2 out_1 = vec2(0.0); float enter = -1000000000.0; float leave = 1000000000.0; vec3 normal = vec3(0.0, 0.0, 1.0); bool local_9 = false; int i_5 = 0; bool local_10 = false; int i_6 = 0; h_1.t = -1.0; c_1 = vec2[12](in_3.c0_.xy, in_3.c0_.zw, in_3.c1_.xy, in_3.c1_.zw, in_3.c2_.xy, in_3.c2_.zw, in_3.c3_.xy, in_3.c3_.zw, in_3.c4_.xy, in_3.c4_.zw, in_3.c5_.xy, in_3.c5_.zw); int count_1 = in_3.count; bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e46 = i_3; i_3 = (_e46 + 1); } loop_init_9 = false; int _e38 = i_3; if ((_e38 < count_1)) { } else { break; } { vec2 _e40 = middle; int _e41 = i_3; vec2 _e43 = c_1[_e41]; middle = (_e40 + _e43); } } vec2 _e48 = middle; middle = (_e48 / vec2(float(count_1))); bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e94 = i_4; i_4 = (_e94 + 1); } loop_init_10 = false; int _e55 = i_4; if ((_e55 < count_1)) { } else { break; } { int _e57 = i_4; vec2 a_7 = c_1[_e57]; int _e60 = i_4; vec2 b_5 = c_1[((_e60 + 1) % count_1)]; out_1 = normalize((vec2((b_5.y - a_7.y), (a_7.x - b_5.x)) + vec2(1e-9, 0.0))); vec2 _e79 = out_1; vec2 _e80 = middle; if ((dot(_e79, (_e80 - a_7)) > 0.0)) { vec2 _e85 = out_1; out_1 = -(_e85); } int _e87 = i_4; vec2 _e89 = out_1; vec2 _e90 = out_1; walls[_e87] = vec3(_e89, dot(_e90, a_7)); } } if ((abs(d_1.z) < 1e-8)) { if (!((o_5.z > 0.0))) { local_9 = (o_5.z < -(in_3.look.x)); } else { local_9 = true; } bool _e121 = local_9; if (_e121) { Hit _e122 = h_1; return _e122; } } else { float t0_ = (-(o_5.z) / d_1.z); float t1_ = ((-(in_3.look.x) - o_5.z) / d_1.z); if ((d_1.z < 0.0)) { enter = t0_; leave = t1_; } else { enter = t1_; leave = t0_; normal = vec3(0.0, 0.0, -1.0); } } bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e173 = i_5; i_5 = (_e173 + 1); } loop_init_11 = false; int _e143 = i_5; if ((_e143 < count_1)) { } else { break; } { int _e145 = i_5; vec3 w_2 = walls[_e145]; float across_1 = dot(d_1.xy, w_2.xy); float room = (w_2.z - dot(o_5.xy, w_2.xy)); if ((abs(across_1) < 1e-8)) { if ((room < 0.0)) { Hit _e161 = h_1; return _e161; } continue; } float t = (room / across_1); if ((across_1 < 0.0)) { float _e165 = enter; if ((t > _e165)) { enter = t; normal = vec3(w_2.xy, 0.0); } } else { float _e170 = leave; leave = min(_e170, t); } } } float _e175 = enter; float _e176 = leave; if (!((_e175 > _e176))) { float _e181 = enter; local_10 = (_e181 < 0.0); } else { local_10 = true; } bool _e185 = local_10; if (_e185) { Hit _e186 = h_1; return _e186; } float _e188 = enter; h_1.t = _e188; vec3 _e190 = normal; h_1.normal = _e190; float _e193 = normal.z; h_1.face = (_e193 > 0.5); float _e198 = enter; vec2 p_4 = (o_5.xy + (d_1.xy * _e198)); h_1.edge = 1000000000.0; bool loop_init_12 = true; while(true) { if (!loop_init_12) { int _e227 = i_6; i_6 = (_e227 + 1); } loop_init_12 = false; int _e205 = i_6; if ((_e205 < count_1)) { } else { break; } { int _e207 = i_6; float _e210 = walls[_e207].z; int _e211 = i_6; vec3 _e213 = walls[_e211]; float room_1 = (_e210 - dot(p_4, _e213.xy)); float _e218 = h_1.edge; if ((room_1 < _e218)) { h_1.edge = room_1; int _e222 = i_6; vec3 _e224 = walls[_e222]; h_1.edgeNormal = _e224.xy; } } } Hit _e229 = h_1; return _e229; } Pose poseOf(PieceOut in_4) { return Pose(ivec2(0), ivec2(0), vec2(0.0), in_4.center, in_4.seed, in_4.ex, in_4.ey, in_4.ez, in_4.look.w, in_4.look.x, 0.0, in_4.look.y, in_4.look.z, false); } void main() { PieceOut in_1 = PieceOut(gl_FragCoord, _vs2fs_location0, _vs2fs_location1, _vs2fs_location2, _vs2fs_location3, _vs2fs_location4, _vs2fs_location5, _vs2fs_location6, _vs2fs_location7, _vs2fs_location8, _vs2fs_location9, _vs2fs_location10, _vs2fs_location11, _vs2fs_location12, _vs2fs_location13, _vs2fs_location14); vec3 n = vec3(0.0); vec3 albedo = vec3(0.0); float x = 1.0; float b = 0.5; vec2 slope = vec2(0.0); PieceColor out_ = PieceColor(vec4(0.0), 0.0); float d_4 = _group_0_binding_0_fs.camera.x; vec3 eye = vec3(0.0, 0.0, d_4); vec3 ray = vec3(in_1.at, -(d_4)); Pose _e11 = poseOf(in_1); vec3 _e15 = local_3(_e11, (eye - in_1.center)); vec3 _e17 = local_3(_e11, ray); Hit _e18 = slab((in_1.seed + _e15), _e17, in_1); if ((_e18.t < 0.0)) { discard; } float dpr_1 = _group_0_binding_0_fs.view.w; float z_1 = (eye.z + (ray.z * _e18.t)); n = _e18.normal; vec4 _e35 = _group_0_binding_0_fs.shard; albedo = (_e35.xyz * 0.82); if (_e18.face) { float _e46 = _group_0_binding_0_fs.view.z; float pxPerUnit_1 = (((_e46 * in_1.look.w) * d_4) / max((d_4 - z_1), 0.001)); float bevel = (mix(0.7, 5.5, (in_1.look.y * in_1.look.y)) * dpr_1); x = clamp(((_e18.edge * pxPerUnit_1) / bevel), 0.0, 1.0); vec3 _e74 = local_3(_e11, (eye - in_1.center)); vec3 _e77 = local_3(_e11, ray); vec2 at_3 = ((in_1.seed.xy + _e74.xy) + (_e77.xy * _e18.t)); float _e90 = _group_0_binding_0_fs.albedo.w; if ((_e90 > 0.0)) { float step_ = (dpr_1 / pxPerUnit_1); float _e95 = plaster(at_3, in_1.frame, pxPerUnit_1); b = _e95; float _e100 = plaster((at_3 + vec2(step_, 0.0)), in_1.frame, pxPerUnit_1); float _e105 = plaster((at_3 + vec2(0.0, step_)), in_1.frame, pxPerUnit_1); float _e107 = b; slope = (vec2(_e100, _e105) - vec2(_e107)); } float _e111 = x; vec2 _e117 = slope; float _e121 = _group_0_binding_0_fs.albedo.w; n = normalize(vec3((((_e18.edgeNormal * (1.0 - _e111)) * 1.6) - ((_e117 * _e121) * dpr_1)), 1.0)); vec4 _e130 = _group_0_binding_0_fs.albedo; float _e134 = b; albedo = (_e130.xyz * (0.93 + (0.07 * (in_1.look.z + ((_e134 - 0.5) * 0.05))))); } float _e147 = n.x; float _e151 = n.y; float _e156 = n.z; vec3 world = normalize((((in_1.ex * _e147) + (in_1.ey * _e151)) + (in_1.ez * _e156))); vec4 _e162 = _group_0_binding_0_fs.light; vec3 l_1 = _e162.xyz; float _e170 = _group_0_binding_0_fs.camera.w; float sun = (max(dot(world, l_1), 0.0) * _e170); float sky = (0.26 * (0.55 + (0.45 * max(world.z, -0.6)))); vec3 _e183 = albedo; float _e186 = x; out_.color = vec4(((_e183 * (sky + sun)) * (1.0 - (0.3 * (1.0 - _e186)))), 1.0); out_.depth = (clamp(((d_4 - z_1) / d_4), 0.0, 1.0) * 0.999); PieceColor _e204 = out_; _fs2p_location0 = _e204.color; gl_FragDepth = _e204.depth; return; } fs_piece_shadowmainp„#version 300 es precision highp float; precision highp int; struct Scene { vec4 view; vec4 frame; vec4 wall; vec4 light; vec4 build; vec4 hits; vec4 strike; vec4 albedo; vec4 glow; vec4 deep; vec4 camera; vec4 shard; }; struct Seed { vec2 pos; uint key; }; struct Cell { vec2 seed; uint key; float edge; uint other; }; struct VsOut { vec4 position; }; struct Pose { ivec2 cell; ivec2 plate; vec2 frame; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { vec2 corners[12]; int count; }; struct PieceOut { vec4 position; vec2 at; vec3 center; vec3 seed; vec3 ex; vec3 ey; vec3 ez; vec4 look; vec4 c0_; vec4 c1_; vec4 c2_; vec4 c3_; vec4 c4_; vec4 c5_; int count; vec2 frame; }; struct Hit { float t; vec3 normal; bool face; float edge; vec2 edgeNormal; }; struct PieceColor { vec4 color; float depth; }; const uint PIECE_VERTICES = 6u; const uint PLATES_A_CELL = 4u; layout(std140) uniform Scene_block_0Fragment { Scene _group_0_binding_0_fs; }; smooth in vec2 _vs2fs_location0; flat in vec3 _vs2fs_location1; flat in vec3 _vs2fs_location2; flat in vec3 _vs2fs_location3; flat in vec3 _vs2fs_location4; flat in vec3 _vs2fs_location5; flat in vec4 _vs2fs_location6; flat in vec4 _vs2fs_location7; flat in vec4 _vs2fs_location8; flat in vec4 _vs2fs_location9; flat in vec4 _vs2fs_location10; flat in vec4 _vs2fs_location11; flat in vec4 _vs2fs_location12; flat in int _vs2fs_location13; flat in vec2 _vs2fs_location14; layout(location = 0) out vec4 _fs2p_location0; uint pcg(uint v) { uint s_2 = ((v * 747796405u) + 2891336453u); uint w_1 = (((s_2 >> ((s_2 >> 28u) + 4u)) ^ s_2) * 277803737u); return ((w_1 >> 22u) ^ w_1); } float unit(uint h) { return (float((h >> 8u)) / 16777216.0); } float rand(uint key, uint channel) { uint _e5 = pcg((key + (channel * 2654435769u))); float _e6 = unit(_e5); return _e6; } float density(uint level) { return ((level == 1u) ? 1.5 : 1.0); } Seed seedAt(ivec2 c, uint level_1, vec2 frame) { Seed s = Seed(vec2(0.0), 0u); float _e3 = density(level_1); float _e7 = _group_0_binding_0_fs.wall.z; float perRadian = ((_e7 * _e3) / 6.2831855); float _e14 = _group_0_binding_0_fs.wall.z; int around = int(roundEven((_e14 * _e3))); int wrap = int(roundEven((1024.0 * _e3))); uint i_7 = uint((((c.x % wrap) + wrap) % wrap)); uint j_3 = uint((((c.y % around) + around) % around)); uint _e35 = pcg((j_3 + (level_1 * 5369127u))); uint _e37 = pcg((i_7 + _e35)); float _e38 = unit(_e37); uint _e39 = pcg(_e37); float _e40 = unit(_e39); vec2 jitter = (vec2(0.5) + ((vec2(_e38, _e40) - vec2(0.5)) * 0.8)); vec2 g_1 = ((vec2(c) + jitter) + (frame * _e3)); float r_2 = exp((g_1.x / perRadian)); float a_1 = (g_1.y / perRadian); s.pos = (r_2 * vec2(cos(a_1), sin(a_1))); s.key = _e37; Seed _e66 = s; return _e66; } Cell voronoi(vec2 q, uint level_2, vec2 frame_1) { vec2 pos[9] = vec2[9](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); uint keys[9] = uint[9](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u); float best = 1000000000.0; int nearest = 0; int n_1 = 0; Cell cell = Cell(vec2(0.0), 0u, 0.0, 0u); int n_2 = 0; float _e3 = density(level_2); float _e7 = _group_0_binding_0_fs.wall.z; float perRadian_1 = ((_e7 * _e3) / 6.2831855); vec2 g_2 = ((vec2(log(max(length(q), 0.0001)), atan(q.y, q.x)) * perRadian_1) - (frame_1 * _e3)); ivec2 base = ivec2(floor(g_2)); bool loop_init = true; while(true) { if (!loop_init) { int _e63 = n_1; n_1 = (_e63 + 1); } loop_init = false; int _e32 = n_1; if ((_e32 < 9)) { } else { break; } { int _e35 = n_1; int _e40 = n_1; Seed _e47 = seedAt((base + ivec2(((_e35 % 3) - 1), ((_e40 / 3) - 1))), level_2, frame_1); int _e48 = n_1; pos[_e48] = _e47.pos; int _e51 = n_1; keys[_e51] = _e47.key; float d_2 = dot((q - _e47.pos), (q - _e47.pos)); float _e59 = best; if ((d_2 < _e59)) { best = d_2; int _e61 = n_1; nearest = _e61; } } } int _e65 = nearest; vec2 a_2 = pos[_e65]; cell.seed = a_2; int _e71 = nearest; uint _e73 = keys[_e71]; cell.key = _e73; cell.edge = 1000000000.0; uint _e78 = cell.key; cell.other = _e78; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e106 = n_2; n_2 = (_e106 + 1); } loop_init_1 = false; int _e81 = n_2; if ((_e81 < 9)) { } else { break; } { int _e84 = n_2; int _e85 = nearest; if ((_e84 == _e85)) { continue; } int _e87 = n_2; vec2 b_2 = pos[_e87]; float e = dot(((0.5 * (a_2 + b_2)) - q), normalize((b_2 - a_2))); float _e98 = cell.edge; if ((e < _e98)) { cell.edge = e; int _e102 = n_2; uint _e104 = keys[_e102]; cell.other = _e104; } } } Cell _e108 = cell; return _e108; } vec2 wallFrame() { vec4 _e2 = _group_0_binding_0_fs.frame; return _e2.zw; } float stress(float r) { float _e4 = _group_0_binding_0_fs.wall.x; float _e8 = _group_0_binding_0_fs.build.z; float hole = (_e4 * _e8); float _e15 = _group_0_binding_0_fs.wall.y; float _e24 = _group_0_binding_0_fs.build.y; return (clamp(exp((-((r - hole)) / _e15)), 0.0, 1.0) * _e24); } float peelTime(vec2 seed, uint key_1) { float _e5 = _group_0_binding_0_fs.build.z; if ((_e5 < 0.01)) { return -1000.0; } float _e12 = _group_0_binding_0_fs.wall.x; float _e14 = rand(key_1, 21u); float crack = (_e12 * mix(1.12, 1.6, _e14)); return (log((crack / max(length(seed), 0.0001))) / 0.042); } float looseTime(uint key_2) { float _e2 = rand(key_2, 21u); float _e7 = rand(key_2, 22u); return (log((mix(1.12, 1.6, _e2) / mix(0.85, 1.05, _e7))) / 0.042); } float plateSize(vec2 seed_1, uint level_3) { float _e8 = _group_0_binding_0_fs.wall.z; float _e9 = density(level_3); return ((length(seed_1) * 6.2831855) / (_e8 * _e9)); } float cracked(float r_1, uint a, uint b_1, float size) { float _e5 = rand(a, 9u); float _e7 = rand(b_1, 9u); float pace = (0.8 + (0.2 * (_e5 + _e7))); float _e16 = _group_0_binding_0_fs.view.z; float _e21 = _group_0_binding_0_fs.view.w; float px_1 = ((size * _e16) / _e21); float _e26 = _group_0_binding_0_fs.build.x; return (clamp((((_e26 * pace) - r_1) / 0.04), 0.0, 1.0) * smoothstep(1.0, 14.0, px_1)); } float loose(vec2 seed_2) { float _e4 = _group_0_binding_0_fs.build.x; return clamp((((_e4 * 0.85) - length(seed_2)) / 0.06), 0.0, 1.0); } float knocked(vec2 seed_3, float size_1) { float lift = 0.0; vec4 hits = _group_0_binding_0_fs.hits; float _e8 = _group_0_binding_0_fs.wall.x; float ring = (_e8 + (hits.x * 1.4)); float across = ((length(seed_3) - ring) / 0.09); lift = ((hits.y * exp(((-(across) * across) - (hits.x * 1.8)))) * 0.5); vec4 _e31 = _group_0_binding_0_fs.strike; float toStrike = (length((seed_3 - _e31.xy)) / 0.16); float _e37 = lift; lift = (_e37 + ((hits.w * exp(((-(toStrike) * toStrike) - (hits.z * 2.2)))) * 0.6)); float _e50 = lift; return (_e50 * size_1); } float valueNoise(vec2 p_1, int period, uint salt) { ivec2 i_8 = ivec2(floor(p_1)); vec2 f = fract(p_1); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); uint y0_ = ((uint((((i_8.y % period) + period) % period)) * 668265261u) + salt); uint y1_ = ((uint(((((i_8.y + 1) % period) + period) % period)) * 668265261u) + salt); uint _e36 = pcg(((uint(i_8.x) * 374761393u) + y0_)); float _e37 = unit(_e36); uint _e45 = pcg(((uint((i_8.x + 1)) * 374761393u) + y0_)); float _e46 = unit(_e45); uint _e52 = pcg(((uint(i_8.x) * 374761393u) + y1_)); float _e53 = unit(_e52); uint _e61 = pcg(((uint((i_8.x + 1)) * 374761393u) + y1_)); float _e62 = unit(_e61); return mix(mix(_e37, _e46, u.x), mix(_e53, _e62, u.x), u.y); } float octaves(vec2 g, float ratio, uint salt_1) { float k_1 = log2(max(ratio, 1.0)); float n_4 = floor(k_1); float f_1 = (k_1 - n_4); float m_1 = exp2(n_4); float _e13 = _group_0_binding_0_fs.wall.z; float _e21 = valueNoise((g * m_1), int(roundEven((_e13 * m_1))), (salt_1 + (uint(n_4) * 2654435769u))); float a_3 = (_e21 - 0.5); float _e30 = _group_0_binding_0_fs.wall.z; float _e42 = valueNoise(((g * m_1) * 2.0), int(roundEven(((_e30 * m_1) * 2.0))), (salt_1 + (uint((n_4 + 1.0)) * 2654435769u))); float b_3 = (_e42 - 0.5); float wa = (1.0 - f_1); return (0.5 + (((a_3 * wa) + (b_3 * f_1)) * inversesqrt(((wa * wa) + (f_1 * f_1))))); } float plaster(vec2 q_1, vec2 frame_2, float pxPerUnit) { float _e6 = _group_0_binding_0_fs.wall.z; float perRadian_2 = (_e6 / 6.2831855); float r_3 = max(length(q_1), 0.0001); vec2 g_3 = ((vec2(log(r_3), atan(q_1.y, q_1.x)) * perRadian_2) - frame_2); float cellPx = ((r_3 * pxPerUnit) / perRadian_2); float dpr = _group_0_binding_0_fs.view.w; float _e29 = octaves(g_3, (cellPx / (2.2 * dpr)), 11u); float _e36 = octaves(g_3, (cellPx / (11.0 * dpr)), 23u); return ((0.65 * _e29) + (0.35 * _e36)); } float plateTop(vec2 q_2, vec2 seed_4, uint key_3, float s_1, float size_2, float calm_1) { float _e10 = rand(key_3, 3u); float lift_1 = ((((0.2 * s_1) * s_1) * (0.25 + (0.75 * _e10))) * size_2); float _e18 = rand(key_3, 4u); float a_4 = (_e18 * 6.2831855); float _e28 = rand(key_3, 5u); vec2 tilt = (((vec2(cos(a_4), sin(a_4)) * 0.4) * s_1) * _e28); float _e34 = knocked(seed_4, size_2); float _e39 = _group_0_binding_0_fs.view.z; return ((((lift_1 + dot(tilt, (q_2 - seed_4))) * calm_1) + _e34) * _e39); } vec3 rotate(vec3 v_1, vec3 axis, float angle) { float s_3 = sin(angle); float k_2 = cos(angle); return (((v_1 * k_2) + (cross(axis, v_1) * s_3)) + ((axis * dot(axis, v_1)) * (1.0 - k_2))); } vec3 randomAxis(uint key_4) { float _e2 = rand(key_4, 10u); float z = ((_e2 * 2.0) - 1.0); float _e8 = rand(key_4, 11u); float a_5 = (_e8 * 6.2831855); return vec3((sqrt(max((1.0 - (z * z)), 0.0)) * vec2(cos(a_5), sin(a_5))), z); } vec3 roll(vec3 v_2, float angle_1) { float c_2 = cos(angle_1); float s_4 = sin(angle_1); return vec3(((v_2.x * c_2) - (v_2.y * s_4)), ((v_2.x * s_4) + (v_2.y * c_2)), v_2.z); } Pose pose(uint n_3) { Pose o_1 = Pose(ivec2(0), ivec2(0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), 0.0, 0.0, 0.0, 0.0, 0.0, false); ivec2 near[4] = ivec2[4](ivec2(0), ivec2(0), ivec2(0), ivec2(0)); float far[4] = float[4](1000000000.0, 1000000000.0, 1000000000.0, 1000000000.0); int i_1 = 0; float d = 0.0; ivec2 at = ivec2(0); int k = 0; bool gone = false; bool local_1 = false; bool local_2 = false; float _e5 = _group_0_binding_0_fs.wall.z; uint around_1 = uint(roundEven((_e5 * 1.5))); uint pick = (n_3 % PLATES_A_CELL); uint m_2 = (n_3 / PLATES_A_CELL); vec2 _e14 = wallFrame(); float _e18 = _group_0_binding_0_fs.wall.z; float perRadian_3 = (_e18 / 6.2831855); float _e24 = _group_0_binding_0_fs.wall.x; int top_1 = (int(floor((((log((_e24 * 1.6)) * perRadian_3) - _e14.x) * 1.5))) + 2); ivec2 cell_1 = ivec2((top_1 - int((m_2 / around_1))), int((m_2 % around_1))); Seed _e44 = seedAt(cell_1, 1u, _e14); vec2 g_4 = ((vec2(log(max(length(_e44.pos), 0.0001)), atan(_e44.pos.y, _e44.pos.x)) * perRadian_3) - _e14); ivec2 base_1 = ivec2(floor(g_4)); near = ivec2[4](base_1, base_1, base_1, base_1); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e118 = i_1; i_1 = (_e118 + 1); } loop_init_2 = false; int _e70 = i_1; if ((_e70 < 9)) { } else { break; } { int _e73 = i_1; int _e78 = i_1; ivec2 c_3 = (base_1 + ivec2(((_e73 % 3) - 1), ((_e78 / 3) - 1))); Seed _e86 = seedAt(c_3, 0u, _e14); d = distance(_e86.pos, _e44.pos); at = c_3; k = 0; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e115 = k; k = (_e115 + 1); } loop_init_3 = false; int _e94 = k; if ((_e94 < 4)) { } else { break; } { float _e97 = d; int _e98 = k; float _e100 = far[_e98]; if ((_e97 < _e100)) { int _e102 = k; float keepD = far[_e102]; int _e105 = k; ivec2 keepC = near[_e105]; int _e108 = k; float _e110 = d; far[_e108] = _e110; int _e111 = k; ivec2 _e113 = at; near[_e111] = _e113; d = keepD; at = keepC; } } } } } ivec2 _e122 = near[pick]; o_1.plate = _e122; float _e125 = plateSize(_e44.pos, 1u); float _e127 = far[pick]; float _e129 = far[0]; gone = (_e127 > (_e129 + (2.6 * _e125))); float _e137 = peelTime(_e44.pos, _e44.key); float _e139 = looseTime(_e44.key); float flying = max((_e137 - _e139), 0.0); float back = ((flying * 0.042) * perRadian_3); float _e150 = _group_0_binding_0_fs.shard.w; o_1.frame = (_e14 + vec2(back, (back * _e150))); o_1.cell = cell_1; ivec2 _e156 = o_1.plate; vec2 _e159 = o_1.frame; Seed _e160 = seedAt(_e156, 0u, _e159); uint key_5 = (_e44.key ^ _e160.key); vec2 _e166 = o_1.frame; Seed _e167 = seedAt(cell_1, 1u, _e166); vec3 seed_5 = vec3(_e167.pos, 0.0); vec2 out_2 = normalize(seed_5.xy); vec3 axis_1 = vec3(-(out_2.y), out_2.x, 0.0); vec3 hinge = vec3((seed_5.xy + ((out_2 * 0.5) * _e125)), 0.0); float x_2 = clamp((_e137 / _e139), 0.0, 1.0); float _e191 = rand(_e44.key, 23u); float lean = mix(0.5, 1.1, _e191); float turn = (lean * pow(x_2, 2.2)); float spin = (((lean * 2.2) * pow(x_2, 1.2)) / _e139); vec3 _e205 = rotate((seed_5 - hinge), axis_1, turn); vec3 lifted = (hinge + _e205); vec3 _e208 = randomAxis(key_5); float _e210 = rand(key_5, 12u); vec3 tumble = ((axis_1 * spin) + (_e208 * mix(0.8, 2.6, _e210))); float rate = length(tumble); vec3 around3_ = (tumble / vec3(max(rate, 1e-5))); float _e230 = rand(key_5, 27u); vec2 apart = (normalize(((seed_5.xy - _e160.pos) + vec2(1e-5, 0.0))) * mix(0.01, 0.05, _e230)); float _e239 = rand(key_5, 26u); vec3 velocity = (cross((axis_1 * spin), (lifted - hinge)) + vec3(apart, mix(0.04, 0.12, _e239))); vec3 center = ((lifted + (velocity * flying)) + vec3(0.0, 0.0, ((0.15 * flying) * flying))); float shrink = exp((-0.042 * flying)); float _e262 = _group_0_binding_0_fs.shard.w; float twist = ((-0.042 * flying) * _e262); float after = (rate * flying); vec3 _e266 = roll(center, twist); o_1.center = (_e266 * shrink); o_1.seed = seed_5; vec3 _e274 = rotate(vec3(1.0, 0.0, 0.0), axis_1, turn); vec3 _e275 = rotate(_e274, around3_, after); vec3 _e276 = roll(_e275, twist); o_1.ex = _e276; vec3 _e282 = rotate(vec3(0.0, 1.0, 0.0), axis_1, turn); vec3 _e283 = rotate(_e282, around3_, after); vec3 _e284 = roll(_e283, twist); o_1.ey = _e284; vec3 _e290 = rotate(vec3(0.0, 0.0, 1.0), axis_1, turn); vec3 _e291 = rotate(_e290, around3_, after); vec3 _e292 = roll(_e291, twist); o_1.ez = _e292; o_1.scale = shrink; float _e297 = plateSize(_e160.pos, 0u); o_1.thick = (0.16 * _e297); o_1.reach = _e125; float _e305 = stress((length(_e160.pos) * shrink)); o_1.stress = _e305; float _e309 = rand(_e160.key, 6u); float _e311 = rand(key_5, 6u); float _e313 = o_1.stress; o_1.tint = mix(_e309, _e311, (smoothstep(0.5, 0.8, _e313) * 0.5)); bool _e321 = gone; if (!(_e321)) { local_1 = (_e137 <= 0.0); } else { local_1 = true; } bool _e328 = local_1; if (!(_e328)) { local_2 = (flying > 8.0); } else { local_2 = true; } bool _e335 = local_2; o_1.gone = _e335; Pose _e336 = o_1; return _e336; } vec3 placed(Pose o_2, vec3 x_1) { vec3 v_4 = ((x_1 - o_2.seed) * o_2.scale); return (((o_2.center + (o_2.ex * v_4.x)) + (o_2.ey * v_4.y)) + (o_2.ez * v_4.z)); } vec3 local_3(Pose o_3, vec3 v_3) { return (vec3(dot(v_3, o_3.ex), dot(v_3, o_3.ey), dot(v_3, o_3.ez)) / vec3(o_3.scale)); } Outline outline(Pose o_4) { vec2 poly[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 next[24] = vec2[24](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); int count = 4; int w = 0; vec2 toward = vec2(0.0); float limit = 0.0; int m = 0; int j = 0; bool local_4 = false; bool local_5 = false; int j_1 = 0; Outline o2_ = Outline(vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)), 0); int j_2 = 0; float _e10 = _group_0_binding_0_fs.view.w; float _e15 = _group_0_binding_0_fs.view.z; float width = ((mix(0.32, 3.2, pow(o_4.stress, 1.3)) * _e10) / _e15); float fine = ((width * 0.55) * smoothstep(0.5, 0.8, o_4.stress)); vec2 a_6 = o_4.seed.xy; Seed _e29 = seedAt(o_4.plate, 0u, o_4.frame); vec2 b_4 = _e29.pos; float r_4 = (o_4.reach * 1.5); poly[0] = (a_6 + vec2(-(r_4), -(r_4))); poly[1] = (a_6 + vec2(r_4, -(r_4))); poly[2] = (a_6 + vec2(r_4, r_4)); poly[3] = (a_6 + vec2(-(r_4), r_4)); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e193 = w; w = (_e193 + 1); } loop_init_4 = false; int _e56 = w; if ((_e56 < 16)) { } else { break; } { int _e59 = w; int i_9 = (_e59 % 8); int k_3 = ((i_9 >= 4) ? (i_9 + 1) : i_9); ivec2 off = ivec2(((k_3 % 3) - 1), ((k_3 / 3) - 1)); toward = vec2(0.0); limit = 0.0; int _e80 = w; if ((_e80 < 8)) { Seed _e87 = seedAt((o_4.cell + off), 1u, o_4.frame); vec2 s_5 = _e87.pos; toward = normalize((s_5 - a_6)); vec2 _e94 = toward; limit = (dot((0.5 * (a_6 + s_5)), _e94) - fine); } else { Seed _e101 = seedAt((o_4.plate + off), 0u, o_4.frame); vec2 s_6 = _e101.pos; toward = normalize((s_6 - b_4)); vec2 _e108 = toward; limit = (dot((0.5 * (b_4 + s_6)), _e108) - width); } m = 0; j = 0; bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e173 = j; j = (_e173 + 1); } loop_init_5 = false; int _e115 = j; int _e116 = count; if ((_e115 < _e116)) { } else { break; } { int _e118 = j; vec2 p_3 = poly[_e118]; int _e121 = j; int _e124 = count; vec2 q_3 = poly[((_e121 + 1) % _e124)]; vec2 _e128 = toward; float _e130 = limit; float dp = (dot(p_3, _e128) - _e130); vec2 _e132 = toward; float _e134 = limit; float dq = (dot(q_3, _e132) - _e134); if ((dp <= 0.0)) { int _e140 = m; local_4 = (_e140 < 24); } else { local_4 = false; } bool _e144 = local_4; if (_e144) { int _e145 = m; next[_e145] = p_3; int _e148 = m; m = (_e148 + 1); } if (((dp <= 0.0) != (dq <= 0.0))) { int _e157 = m; local_5 = (_e157 < 24); } else { local_5 = false; } bool _e161 = local_5; if (_e161) { int _e162 = m; next[_e162] = (p_3 + ((q_3 - p_3) * (dp / (dp - dq)))); int _e170 = m; m = (_e170 + 1); } } } int _e175 = m; count = _e175; j_1 = 0; bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e187 = j_1; j_1 = (_e187 + 1); } loop_init_6 = false; int _e178 = j_1; int _e179 = m; if ((_e178 < _e179)) { } else { break; } { int _e181 = j_1; int _e183 = j_1; vec2 _e185 = next[_e183]; poly[_e181] = _e185; } } int _e189 = count; if ((_e189 < 3)) { break; } } } int _e197 = count; o2_.count = min(_e197, 12); bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e213 = j_2; j_2 = (_e213 + 1); } loop_init_7 = false; int _e202 = j_2; int _e204 = o2_.count; if ((_e202 < _e204)) { } else { break; } { int _e207 = j_2; int _e209 = j_2; vec2 _e211 = poly[_e209]; o2_.corners[_e207] = _e211; } } Outline _e215 = o2_; return _e215; } vec4 toClip(vec2 px) { float _e5 = _group_0_binding_0_fs.view.x; float _e15 = _group_0_binding_0_fs.view.y; return vec4((((px.x / _e5) * 2.0) - 1.0), (1.0 - ((px.y / _e15) * 2.0)), 0.5, 1.0); } PieceOut pieceOut(uint index_2, bool shadow) { PieceOut p_2 = PieceOut(vec4(0.0), vec2(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0), 0, vec2(0.0)); vec2 lo = vec2(1000000000.0); vec2 hi = vec2(-1000000000.0); int behind = 0; int i_2 = 0; vec2 at_1 = vec2(0.0); bool local_6 = false; bool local_7 = false; bool local_8 = false; vec2 corners[6] = vec2[6](vec2(0.0, 0.0), vec2(1.0, 0.0), vec2(0.0, 1.0), vec2(0.0, 1.0), vec2(1.0, 0.0), vec2(1.0, 1.0)); Pose _e5 = pose((index_2 / PIECE_VERTICES)); if (_e5.gone) { p_2.position = vec4(2.0, 2.0, 2.0, 1.0); PieceOut _e13 = p_2; return _e13; } Outline _e14 = outline(_e5); float d_3 = _group_0_binding_0_fs.camera.x; vec4 _e21 = _group_0_binding_0_fs.light; vec3 l = _e21.xyz; bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e82 = i_2; i_2 = (_e82 + 1); } loop_init_8 = false; int _e33 = i_2; if ((_e33 < (_e14.count * 2))) { } else { break; } { int _e39 = i_2; int _e45 = i_2; vec3 _e51 = placed(_e5, vec3(_e14.corners[(_e39 / 2)], (-(_e5.thick) * float((_e45 % 2))))); at_1 = (_e51.xy - (l.xy * (_e51.z / max(l.z, 0.05)))); if (!(shadow)) { if ((_e51.z > (d_3 * 0.999))) { int _e68 = behind; behind = (_e68 + 1); continue; } at_1 = (_e51.xy * (d_3 / (d_3 - _e51.z))); } vec2 _e75 = lo; vec2 _e76 = at_1; lo = min(_e75, _e76); vec2 _e78 = hi; vec2 _e79 = at_1; hi = max(_e78, _e79); } } vec4 _e86 = _group_0_binding_0_fs.frame; float _e92 = _group_0_binding_0_fs.view.z; vec2 viewLo = (-(_e86.xy) / vec2(_e92)); vec4 _e97 = _group_0_binding_0_fs.view; vec4 _e101 = _group_0_binding_0_fs.frame; float _e107 = _group_0_binding_0_fs.view.z; vec2 viewHi = ((_e97.xy - _e101.xy) / vec2(_e107)); int _e110 = behind; if ((_e110 > 0)) { lo = viewLo; hi = viewHi; } if (!((_e14.count < 3))) { int _e119 = behind; local_6 = (_e119 == (_e14.count * 2)); } else { local_6 = true; } bool _e125 = local_6; if (!(_e125)) { vec2 _e129 = hi; local_7 = any(lessThan(_e129, viewLo)); } else { local_7 = true; } bool _e133 = local_7; if (!(_e133)) { vec2 _e137 = lo; local_8 = any(greaterThan(_e137, viewHi)); } else { local_8 = true; } bool gone_1 = local_8; vec2 _e162 = lo; vec2 _e163 = hi; vec2 _e167 = corners[(index_2 % PIECE_VERTICES)]; vec2 at_2 = mix(_e162, _e163, _e167); vec4 _e172 = _group_0_binding_0_fs.frame; float _e177 = _group_0_binding_0_fs.view.z; vec4 _e180 = toClip((_e172.xy + (at_2 * _e177))); p_2.position = (gone_1 ? vec4(2.0, 2.0, 2.0, 1.0) : _e180); p_2.at = at_2; p_2.center = _e5.center; p_2.seed = _e5.seed; p_2.ex = _e5.ex; p_2.ey = _e5.ey; p_2.ez = _e5.ez; p_2.look = vec4(_e5.thick, _e5.stress, _e5.tint, _e5.scale); vec2 c_4[12] = _e14.corners; p_2.c0_ = vec4(c_4[0], c_4[1]); p_2.c1_ = vec4(c_4[2], c_4[3]); p_2.c2_ = vec4(c_4[4], c_4[5]); p_2.c3_ = vec4(c_4[6], c_4[7]); p_2.c4_ = vec4(c_4[8], c_4[9]); p_2.c5_ = vec4(c_4[10], c_4[11]); p_2.count = _e14.count; p_2.frame = _e5.frame; PieceOut _e233 = p_2; return _e233; } Hit slab(vec3 o_5, vec3 d_1, PieceOut in_3) { Hit h_1 = Hit(0.0, vec3(0.0), false, 0.0, vec2(0.0)); vec2 c_1[12] = vec2[12](vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0), vec2(0.0)); vec2 middle = vec2(0.0); int i_3 = 0; vec3 walls[12] = vec3[12](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); int i_4 = 0; vec2 out_1 = vec2(0.0); float enter = -1000000000.0; float leave = 1000000000.0; vec3 normal = vec3(0.0, 0.0, 1.0); bool local_9 = false; int i_5 = 0; bool local_10 = false; int i_6 = 0; h_1.t = -1.0; c_1 = vec2[12](in_3.c0_.xy, in_3.c0_.zw, in_3.c1_.xy, in_3.c1_.zw, in_3.c2_.xy, in_3.c2_.zw, in_3.c3_.xy, in_3.c3_.zw, in_3.c4_.xy, in_3.c4_.zw, in_3.c5_.xy, in_3.c5_.zw); int count_1 = in_3.count; bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e46 = i_3; i_3 = (_e46 + 1); } loop_init_9 = false; int _e38 = i_3; if ((_e38 < count_1)) { } else { break; } { vec2 _e40 = middle; int _e41 = i_3; vec2 _e43 = c_1[_e41]; middle = (_e40 + _e43); } } vec2 _e48 = middle; middle = (_e48 / vec2(float(count_1))); bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e94 = i_4; i_4 = (_e94 + 1); } loop_init_10 = false; int _e55 = i_4; if ((_e55 < count_1)) { } else { break; } { int _e57 = i_4; vec2 a_7 = c_1[_e57]; int _e60 = i_4; vec2 b_5 = c_1[((_e60 + 1) % count_1)]; out_1 = normalize((vec2((b_5.y - a_7.y), (a_7.x - b_5.x)) + vec2(1e-9, 0.0))); vec2 _e79 = out_1; vec2 _e80 = middle; if ((dot(_e79, (_e80 - a_7)) > 0.0)) { vec2 _e85 = out_1; out_1 = -(_e85); } int _e87 = i_4; vec2 _e89 = out_1; vec2 _e90 = out_1; walls[_e87] = vec3(_e89, dot(_e90, a_7)); } } if ((abs(d_1.z) < 1e-8)) { if (!((o_5.z > 0.0))) { local_9 = (o_5.z < -(in_3.look.x)); } else { local_9 = true; } bool _e121 = local_9; if (_e121) { Hit _e122 = h_1; return _e122; } } else { float t0_ = (-(o_5.z) / d_1.z); float t1_ = ((-(in_3.look.x) - o_5.z) / d_1.z); if ((d_1.z < 0.0)) { enter = t0_; leave = t1_; } else { enter = t1_; leave = t0_; normal = vec3(0.0, 0.0, -1.0); } } bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e173 = i_5; i_5 = (_e173 + 1); } loop_init_11 = false; int _e143 = i_5; if ((_e143 < count_1)) { } else { break; } { int _e145 = i_5; vec3 w_2 = walls[_e145]; float across_1 = dot(d_1.xy, w_2.xy); float room = (w_2.z - dot(o_5.xy, w_2.xy)); if ((abs(across_1) < 1e-8)) { if ((room < 0.0)) { Hit _e161 = h_1; return _e161; } continue; } float t = (room / across_1); if ((across_1 < 0.0)) { float _e165 = enter; if ((t > _e165)) { enter = t; normal = vec3(w_2.xy, 0.0); } } else { float _e170 = leave; leave = min(_e170, t); } } } float _e175 = enter; float _e176 = leave; if (!((_e175 > _e176))) { float _e181 = enter; local_10 = (_e181 < 0.0); } else { local_10 = true; } bool _e185 = local_10; if (_e185) { Hit _e186 = h_1; return _e186; } float _e188 = enter; h_1.t = _e188; vec3 _e190 = normal; h_1.normal = _e190; float _e193 = normal.z; h_1.face = (_e193 > 0.5); float _e198 = enter; vec2 p_4 = (o_5.xy + (d_1.xy * _e198)); h_1.edge = 1000000000.0; bool loop_init_12 = true; while(true) { if (!loop_init_12) { int _e227 = i_6; i_6 = (_e227 + 1); } loop_init_12 = false; int _e205 = i_6; if ((_e205 < count_1)) { } else { break; } { int _e207 = i_6; float _e210 = walls[_e207].z; int _e211 = i_6; vec3 _e213 = walls[_e211]; float room_1 = (_e210 - dot(p_4, _e213.xy)); float _e218 = h_1.edge; if ((room_1 < _e218)) { h_1.edge = room_1; int _e222 = i_6; vec3 _e224 = walls[_e222]; h_1.edgeNormal = _e224.xy; } } } Hit _e229 = h_1; return _e229; } Pose poseOf(PieceOut in_4) { return Pose(ivec2(0), ivec2(0), vec2(0.0), in_4.center, in_4.seed, in_4.ex, in_4.ey, in_4.ez, in_4.look.w, in_4.look.x, 0.0, in_4.look.y, in_4.look.z, false); } void main() { PieceOut in_2 = PieceOut(gl_FragCoord, _vs2fs_location0, _vs2fs_location1, _vs2fs_location2, _vs2fs_location3, _vs2fs_location4, _vs2fs_location5, _vs2fs_location6, _vs2fs_location7, _vs2fs_location8, _vs2fs_location9, _vs2fs_location10, _vs2fs_location11, _vs2fs_location12, _vs2fs_location13, _vs2fs_location14); vec3 start = vec3(in_2.at, 0.0); vec4 _e6 = _group_0_binding_0_fs.light; vec3 toward_1 = _e6.xyz; Pose _e8 = poseOf(in_2); vec3 _e12 = local_3(_e8, (start - in_2.center)); vec3 _e14 = local_3(_e8, toward_1); Hit _e15 = slab((in_2.seed + _e12), _e14, in_2); if ((_e15.t < 0.0)) { discard; } float height = (_e15.t * toward_1.z); float _e25 = _group_0_binding_0_fs.camera.x; _fs2p_location0 = vec4(1.0, (1.0 - clamp((height / _e25), 0.0, 1.0)), 0.0, 1.0); return; }  ÀðЂ�‘Íà?Scene_block_0VertexScene_block_0Fragmentvsvsfsfsvs_piecevs_piecevs_piece_shadowvs_piece_shadowfs_piecefs_piecefs_piece_shadowfs_piece_shadow·Ñ// language: metal2.2 #include #include using metal::uint; struct Scene { metal::float4 view; metal::float4 frame; metal::float4 wall; metal::float4 light; metal::float4 build; metal::float4 hits; metal::float4 strike; metal::float4 albedo; metal::float4 glow; metal::float4 deep; metal::float4 camera; metal::float4 shard; }; struct Seed { metal::float2 pos; uint key; char _pad2[4]; }; struct Cell { metal::float2 seed; uint key; float edge; uint other; char _pad4[4]; }; struct type_6 { metal::float2 inner[9]; }; struct type_7 { uint inner[9]; }; struct VsOut { metal::float4 position; }; struct type_8 { metal::float2 inner[3]; }; struct Pose { metal::int2 cell; metal::int2 plate; metal::float2 frame; char _pad3[8]; metal::float3 center; metal::float3 seed; metal::float3 ex; metal::float3 ey; metal::packed_float3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; char _pad14[15]; }; struct type_11 { metal::int2 inner[4]; }; struct type_12 { float inner[4]; }; struct type_13 { metal::float2 inner[12]; }; struct Outline { type_13 corners; int count; char _pad2[4]; }; struct type_14 { metal::float2 inner[24]; }; struct PieceOut { metal::float4 position; metal::float2 at; char _pad2[8]; metal::float3 center; metal::float3 seed; metal::float3 ex; metal::float3 ey; metal::float3 ez; metal::float4 look; metal::float4 c0_; metal::float4 c1_; metal::float4 c2_; metal::float4 c3_; metal::float4 c4_; metal::float4 c5_; int count; char _pad15[4]; metal::float2 frame; }; struct type_15 { metal::float2 inner[6]; }; struct Hit { float t; char _pad1[12]; metal::packed_float3 normal; bool face; char _pad3[3]; float edge; char _pad4[4]; metal::float2 edgeNormal; }; struct type_16 { metal::float3 inner[12]; }; struct PieceColor { metal::float4 color; float depth; char _pad2[12]; }; constant uint PIECE_VERTICES = 6u; constant uint PLATES_A_CELL = 4u; uint pcg( uint v ) { uint s_2 = (v * 747796405u) + 2891336453u; uint w_1 = ((s_2 >> ((s_2 >> 28u) + 4u)) ^ s_2) * 277803737u; return (w_1 >> 22u) ^ w_1; } float unit( uint h ) { return static_cast(h >> 8u) / 16777216.0; } float rand( uint key, uint channel ) { uint _e5 = pcg(key + (channel * 2654435769u)); float _e6 = unit(_e5); return _e6; } float density( uint level ) { return (level == 1u) ? 1.5 : 1.0; } int naga_f2i32(float value) { return static_cast(metal::clamp(value, -2147483600.0, 2147483500.0)); } int naga_mod(int lhs, int rhs) { int divisor = metal::select(rhs, 1, (lhs == (-2147483647 - 1) & rhs == -1) | (rhs == 0)); return lhs - (lhs / divisor) * divisor; } Seed seedAt( metal::int2 c, uint level_1, metal::float2 frame, constant Scene& scene ) { Seed s = {}; float _e3 = density(level_1); float _e7 = scene.wall.z; float perRadian = (_e7 * _e3) / 6.2831855; float _e14 = scene.wall.z; int around = naga_f2i32(metal::rint(_e14 * _e3)); int wrap = naga_f2i32(metal::rint(1024.0 * _e3)); uint i_7 = static_cast(naga_mod(as_type(as_type(naga_mod(c.x, wrap)) + as_type(wrap)), wrap)); uint j_3 = static_cast(naga_mod(as_type(as_type(naga_mod(c.y, around)) + as_type(around)), around)); uint _e35 = pcg(j_3 + (level_1 * 5369127u)); uint _e37 = pcg(i_7 + _e35); float _e38 = unit(_e37); uint _e39 = pcg(_e37); float _e40 = unit(_e39); metal::float2 jitter = metal::float2(0.5) + ((metal::float2(_e38, _e40) - metal::float2(0.5)) * 0.8); metal::float2 g_1 = (static_cast(c) + jitter) + (frame * _e3); float r_2 = metal::exp(g_1.x / perRadian); float a_1 = g_1.y / perRadian; s.pos = r_2 * metal::float2(metal::cos(a_1), metal::sin(a_1)); s.key = _e37; Seed _e66 = s; return _e66; } metal::int2 naga_f2i32(metal::float2 value) { return static_cast(metal::clamp(value, -2147483600.0, 2147483500.0)); } int naga_div(int lhs, int rhs) { return lhs / metal::select(rhs, 1, (lhs == (-2147483647 - 1) & rhs == -1) | (rhs == 0)); } Cell voronoi( metal::float2 q, uint level_2, metal::float2 frame_1, constant Scene& scene ) { type_6 pos = {}; type_7 keys = {}; float best = 1000000000.0; int nearest = 0; int n_1 = 0; Cell cell = {}; int n_2 = 0; float _e3 = density(level_2); float _e7 = scene.wall.z; float perRadian_1 = (_e7 * _e3) / 6.2831855; metal::float2 g_2 = (metal::float2(metal::log(metal::max(metal::length(q), 0.0001)), metal::atan2(q.y, q.x)) * perRadian_1) - (frame_1 * _e3); metal::int2 base = naga_f2i32(metal::floor(g_2)); uint2 loop_bound = uint2(4294967295u); bool loop_init = true; while(true) { if (metal::all(loop_bound == uint2(0u))) { break; } loop_bound -= uint2(loop_bound.y == 0u, 1u); if (!loop_init) { int _e63 = n_1; n_1 = as_type(as_type(_e63) + as_type(1)); } loop_init = false; int _e32 = n_1; if (_e32 < 9) { } else { break; } { int _e35 = n_1; int _e40 = n_1; Seed _e47 = seedAt(as_type(as_type(base) + as_type(metal::int2(as_type(as_type(naga_mod(_e35, 3)) - as_type(1)), as_type(as_type(naga_div(_e40, 3)) - as_type(1))))), level_2, frame_1, scene); int _e48 = n_1; pos.inner[metal::min(unsigned(_e48), 8u)] = _e47.pos; int _e51 = n_1; keys.inner[metal::min(unsigned(_e51), 8u)] = _e47.key; float d_2 = metal::dot(q - _e47.pos, q - _e47.pos); float _e59 = best; if (d_2 < _e59) { best = d_2; int _e61 = n_1; nearest = _e61; } } } int _e65 = nearest; metal::float2 a_2 = pos.inner[metal::min(unsigned(_e65), 8u)]; cell.seed = a_2; int _e71 = nearest; uint _e73 = keys.inner[metal::min(unsigned(_e71), 8u)]; cell.key = _e73; cell.edge = 1000000000.0; uint _e78 = cell.key; cell.other = _e78; uint2 loop_bound_1 = uint2(4294967295u); bool loop_init_1 = true; while(true) { if (metal::all(loop_bound_1 == uint2(0u))) { break; } loop_bound_1 -= uint2(loop_bound_1.y == 0u, 1u); if (!loop_init_1) { int _e106 = n_2; n_2 = as_type(as_type(_e106) + as_type(1)); } loop_init_1 = false; int _e81 = n_2; if (_e81 < 9) { } else { break; } { int _e84 = n_2; int _e85 = nearest; if (_e84 == _e85) { continue; } int _e87 = n_2; metal::float2 b_2 = pos.inner[metal::min(unsigned(_e87), 8u)]; float e = metal::dot((0.5 * (a_2 + b_2)) - q, metal::normalize(b_2 - a_2)); float _e98 = cell.edge; if (e < _e98) { cell.edge = e; int _e102 = n_2; uint _e104 = keys.inner[metal::min(unsigned(_e102), 8u)]; cell.other = _e104; } } } Cell _e108 = cell; return _e108; } metal::float2 wallFrame( constant Scene& scene ) { metal::float4 _e2 = scene.frame; return _e2.zw; } float stress( float r, constant Scene& scene ) { float _e4 = scene.wall.x; float _e8 = scene.build.z; float hole = _e4 * _e8; float _e15 = scene.wall.y; float _e24 = scene.build.y; return metal::clamp(metal::exp(-((r - hole)) / _e15), 0.0, 1.0) * _e24; } float peelTime( metal::float2 seed, uint key_1, constant Scene& scene ) { float _e5 = scene.build.z; if (_e5 < 0.01) { return -1000.0; } float _e12 = scene.wall.x; float _e14 = rand(key_1, 21u); float crack = _e12 * metal::mix(1.12, 1.6, _e14); return metal::log(crack / metal::max(metal::length(seed), 0.0001)) / 0.042; } float looseTime( uint key_2 ) { float _e2 = rand(key_2, 21u); float _e7 = rand(key_2, 22u); return metal::log(metal::mix(1.12, 1.6, _e2) / metal::mix(0.85, 1.05, _e7)) / 0.042; } float plateSize( metal::float2 seed_1, uint level_3, constant Scene& scene ) { float _e8 = scene.wall.z; float _e9 = density(level_3); return (metal::length(seed_1) * 6.2831855) / (_e8 * _e9); } float cracked( float r_1, uint a, uint b_1, float size, constant Scene& scene ) { float _e5 = rand(a, 9u); float _e7 = rand(b_1, 9u); float pace = 0.8 + (0.2 * (_e5 + _e7)); float _e16 = scene.view.z; float _e21 = scene.view.w; float px_1 = (size * _e16) / _e21; float _e26 = scene.build.x; return metal::clamp(((_e26 * pace) - r_1) / 0.04, 0.0, 1.0) * metal::smoothstep(1.0, 14.0, px_1); } float loose( metal::float2 seed_2, constant Scene& scene ) { float _e4 = scene.build.x; return metal::clamp(((_e4 * 0.85) - metal::length(seed_2)) / 0.06, 0.0, 1.0); } float knocked( metal::float2 seed_3, float size_1, constant Scene& scene ) { float lift = {}; metal::float4 hits = scene.hits; float _e8 = scene.wall.x; float ring = _e8 + (hits.x * 1.4); float across = (metal::length(seed_3) - ring) / 0.09; lift = (hits.y * metal::exp((-(across) * across) - (hits.x * 1.8))) * 0.5; metal::float4 _e31 = scene.strike; float toStrike = metal::length(seed_3 - _e31.xy) / 0.16; float _e37 = lift; lift = _e37 + ((hits.w * metal::exp((-(toStrike) * toStrike) - (hits.z * 2.2))) * 0.6); float _e50 = lift; return _e50 * size_1; } float valueNoise( metal::float2 p_1, int period, uint salt ) { metal::int2 i_8 = naga_f2i32(metal::floor(p_1)); metal::float2 f = metal::fract(p_1); metal::float2 u = (f * f) * (metal::float2(3.0) - (2.0 * f)); uint y0_ = (static_cast(naga_mod(as_type(as_type(naga_mod(i_8.y, period)) + as_type(period)), period)) * 668265261u) + salt; uint y1_ = (static_cast(naga_mod(as_type(as_type(naga_mod(as_type(as_type(i_8.y) + as_type(1)), period)) + as_type(period)), period)) * 668265261u) + salt; uint _e36 = pcg((static_cast(i_8.x) * 374761393u) + y0_); float _e37 = unit(_e36); uint _e45 = pcg((static_cast(as_type(as_type(i_8.x) + as_type(1))) * 374761393u) + y0_); float _e46 = unit(_e45); uint _e52 = pcg((static_cast(i_8.x) * 374761393u) + y1_); float _e53 = unit(_e52); uint _e61 = pcg((static_cast(as_type(as_type(i_8.x) + as_type(1))) * 374761393u) + y1_); float _e62 = unit(_e61); return metal::mix(metal::mix(_e37, _e46, u.x), metal::mix(_e53, _e62, u.x), u.y); } uint naga_f2u32(float value) { return static_cast(metal::clamp(value, 0.0, 4294967000.0)); } float octaves( metal::float2 g, float ratio, uint salt_1, constant Scene& scene ) { float k_1 = metal::log2(metal::max(ratio, 1.0)); float n_4 = metal::floor(k_1); float f_1 = k_1 - n_4; float m_1 = metal::exp2(n_4); float _e13 = scene.wall.z; float _e21 = valueNoise(g * m_1, naga_f2i32(metal::rint(_e13 * m_1)), salt_1 + (naga_f2u32(n_4) * 2654435769u)); float a_3 = _e21 - 0.5; float _e30 = scene.wall.z; float _e42 = valueNoise((g * m_1) * 2.0, naga_f2i32(metal::rint((_e30 * m_1) * 2.0)), salt_1 + (naga_f2u32(n_4 + 1.0) * 2654435769u)); float b_3 = _e42 - 0.5; float wa = 1.0 - f_1; return 0.5 + (((a_3 * wa) + (b_3 * f_1)) * metal::rsqrt((wa * wa) + (f_1 * f_1))); } float plaster( metal::float2 q_1, metal::float2 frame_2, float pxPerUnit, constant Scene& scene ) { float _e6 = scene.wall.z; float perRadian_2 = _e6 / 6.2831855; float r_3 = metal::max(metal::length(q_1), 0.0001); metal::float2 g_3 = (metal::float2(metal::log(r_3), metal::atan2(q_1.y, q_1.x)) * perRadian_2) - frame_2; float cellPx = (r_3 * pxPerUnit) / perRadian_2; float dpr = scene.view.w; float _e29 = octaves(g_3, cellPx / (2.2 * dpr), 11u, scene); float _e36 = octaves(g_3, cellPx / (11.0 * dpr), 23u, scene); return (0.65 * _e29) + (0.35 * _e36); } float plateTop( metal::float2 q_2, metal::float2 seed_4, uint key_3, float s_1, float size_2, float calm_1, constant Scene& scene ) { float _e10 = rand(key_3, 3u); float lift_1 = (((0.2 * s_1) * s_1) * (0.25 + (0.75 * _e10))) * size_2; float _e18 = rand(key_3, 4u); float a_4 = _e18 * 6.2831855; float _e28 = rand(key_3, 5u); metal::float2 tilt = ((metal::float2(metal::cos(a_4), metal::sin(a_4)) * 0.4) * s_1) * _e28; float _e34 = knocked(seed_4, size_2, scene); float _e39 = scene.view.z; return (((lift_1 + metal::dot(tilt, q_2 - seed_4)) * calm_1) + _e34) * _e39; } metal::float3 rotate( metal::float3 v_1, metal::float3 axis, float angle ) { float s_3 = metal::sin(angle); float k_2 = metal::cos(angle); return ((v_1 * k_2) + (metal::cross(axis, v_1) * s_3)) + ((axis * metal::dot(axis, v_1)) * (1.0 - k_2)); } metal::float3 randomAxis( uint key_4 ) { float _e2 = rand(key_4, 10u); float z = (_e2 * 2.0) - 1.0; float _e8 = rand(key_4, 11u); float a_5 = _e8 * 6.2831855; return metal::float3(metal::sqrt(metal::max(1.0 - (z * z), 0.0)) * metal::float2(metal::cos(a_5), metal::sin(a_5)), z); } metal::float3 roll( metal::float3 v_2, float angle_1 ) { float c_2 = metal::cos(angle_1); float s_4 = metal::sin(angle_1); return metal::float3((v_2.x * c_2) - (v_2.y * s_4), (v_2.x * s_4) + (v_2.y * c_2), v_2.z); } uint naga_mod(uint lhs, uint rhs) { return lhs % metal::select(rhs, 1u, rhs == 0u); } uint naga_div(uint lhs, uint rhs) { return lhs / metal::select(rhs, 1u, rhs == 0u); } Pose pose( uint n_3, constant Scene& scene ) { Pose o_1 = {}; type_11 near = {}; type_12 far = type_12 {{1000000000.0, 1000000000.0, 1000000000.0, 1000000000.0}}; int i_1 = 0; float d = {}; metal::int2 at = {}; int k = {}; bool gone = {}; bool local_1 = {}; bool local_2 = {}; float _e5 = scene.wall.z; uint around_1 = naga_f2u32(metal::rint(_e5 * 1.5)); uint pick = naga_mod(n_3, PLATES_A_CELL); uint m_2 = naga_div(n_3, PLATES_A_CELL); metal::float2 _e14 = wallFrame(scene); float _e18 = scene.wall.z; float perRadian_3 = _e18 / 6.2831855; float _e24 = scene.wall.x; int top_1 = as_type(as_type(naga_f2i32(metal::floor(((metal::log(_e24 * 1.6) * perRadian_3) - _e14.x) * 1.5))) + as_type(2)); metal::int2 cell_1 = metal::int2(as_type(as_type(top_1) - as_type(static_cast(naga_div(m_2, around_1)))), static_cast(naga_mod(m_2, around_1))); Seed _e44 = seedAt(cell_1, 1u, _e14, scene); metal::float2 g_4 = (metal::float2(metal::log(metal::max(metal::length(_e44.pos), 0.0001)), metal::atan2(_e44.pos.y, _e44.pos.x)) * perRadian_3) - _e14; metal::int2 base_1 = naga_f2i32(metal::floor(g_4)); near = type_11 {{base_1, base_1, base_1, base_1}}; uint2 loop_bound_2 = uint2(4294967295u); bool loop_init_2 = true; while(true) { if (metal::all(loop_bound_2 == uint2(0u))) { break; } loop_bound_2 -= uint2(loop_bound_2.y == 0u, 1u); if (!loop_init_2) { int _e118 = i_1; i_1 = as_type(as_type(_e118) + as_type(1)); } loop_init_2 = false; int _e70 = i_1; if (_e70 < 9) { } else { break; } { int _e73 = i_1; int _e78 = i_1; metal::int2 c_3 = as_type(as_type(base_1) + as_type(metal::int2(as_type(as_type(naga_mod(_e73, 3)) - as_type(1)), as_type(as_type(naga_div(_e78, 3)) - as_type(1))))); Seed _e86 = seedAt(c_3, 0u, _e14, scene); d = metal::distance(_e86.pos, _e44.pos); at = c_3; k = 0; uint2 loop_bound_3 = uint2(4294967295u); bool loop_init_3 = true; while(true) { if (metal::all(loop_bound_3 == uint2(0u))) { break; } loop_bound_3 -= uint2(loop_bound_3.y == 0u, 1u); if (!loop_init_3) { int _e115 = k; k = as_type(as_type(_e115) + as_type(1)); } loop_init_3 = false; int _e94 = k; if (_e94 < 4) { } else { break; } { float _e97 = d; int _e98 = k; float _e100 = far.inner[metal::min(unsigned(_e98), 3u)]; if (_e97 < _e100) { int _e102 = k; float keepD = far.inner[metal::min(unsigned(_e102), 3u)]; int _e105 = k; metal::int2 keepC = near.inner[metal::min(unsigned(_e105), 3u)]; int _e108 = k; float _e110 = d; far.inner[metal::min(unsigned(_e108), 3u)] = _e110; int _e111 = k; metal::int2 _e113 = at; near.inner[metal::min(unsigned(_e111), 3u)] = _e113; d = keepD; at = keepC; } } } } } metal::int2 _e122 = near.inner[metal::min(unsigned(pick), 3u)]; o_1.plate = _e122; float _e125 = plateSize(_e44.pos, 1u, scene); float _e127 = far.inner[metal::min(unsigned(pick), 3u)]; float _e129 = far.inner[0]; gone = _e127 > (_e129 + (2.6 * _e125)); float _e137 = peelTime(_e44.pos, _e44.key, scene); float _e139 = looseTime(_e44.key); float flying = metal::max(_e137 - _e139, 0.0); float back = (flying * 0.042) * perRadian_3; float _e150 = scene.shard.w; o_1.frame = _e14 + metal::float2(back, back * _e150); o_1.cell = cell_1; metal::int2 _e156 = o_1.plate; metal::float2 _e159 = o_1.frame; Seed _e160 = seedAt(_e156, 0u, _e159, scene); uint key_5 = _e44.key ^ _e160.key; metal::float2 _e166 = o_1.frame; Seed _e167 = seedAt(cell_1, 1u, _e166, scene); metal::float3 seed_5 = metal::float3(_e167.pos, 0.0); metal::float2 out_2 = metal::normalize(seed_5.xy); metal::float3 axis_1 = metal::float3(-(out_2.y), out_2.x, 0.0); metal::float3 hinge = metal::float3(seed_5.xy + ((out_2 * 0.5) * _e125), 0.0); float x_2 = metal::clamp(_e137 / _e139, 0.0, 1.0); float _e191 = rand(_e44.key, 23u); float lean = metal::mix(0.5, 1.1, _e191); float turn = lean * metal::pow(x_2, 2.2); float spin = ((lean * 2.2) * metal::pow(x_2, 1.2)) / _e139; metal::float3 _e205 = rotate(seed_5 - hinge, axis_1, turn); metal::float3 lifted = hinge + _e205; metal::float3 _e208 = randomAxis(key_5); float _e210 = rand(key_5, 12u); metal::float3 tumble = (axis_1 * spin) + (_e208 * metal::mix(0.8, 2.6, _e210)); float rate = metal::length(tumble); metal::float3 around3_ = tumble / metal::float3(metal::max(rate, 0.00001)); float _e230 = rand(key_5, 27u); metal::float2 apart = metal::normalize((seed_5.xy - _e160.pos) + metal::float2(0.00001, 0.0)) * metal::mix(0.01, 0.05, _e230); float _e239 = rand(key_5, 26u); metal::float3 velocity = metal::cross(axis_1 * spin, lifted - hinge) + metal::float3(apart, metal::mix(0.04, 0.12, _e239)); metal::float3 center = (lifted + (velocity * flying)) + metal::float3(0.0, 0.0, (0.15 * flying) * flying); float shrink = metal::exp(-0.042 * flying); float _e262 = scene.shard.w; float twist = (-0.042 * flying) * _e262; float after = rate * flying; metal::float3 _e266 = roll(center, twist); o_1.center = _e266 * shrink; o_1.seed = seed_5; metal::float3 _e274 = rotate(metal::float3(1.0, 0.0, 0.0), axis_1, turn); metal::float3 _e275 = rotate(_e274, around3_, after); metal::float3 _e276 = roll(_e275, twist); o_1.ex = _e276; metal::float3 _e282 = rotate(metal::float3(0.0, 1.0, 0.0), axis_1, turn); metal::float3 _e283 = rotate(_e282, around3_, after); metal::float3 _e284 = roll(_e283, twist); o_1.ey = _e284; metal::float3 _e290 = rotate(metal::float3(0.0, 0.0, 1.0), axis_1, turn); metal::float3 _e291 = rotate(_e290, around3_, after); metal::float3 _e292 = roll(_e291, twist); o_1.ez = _e292; o_1.scale = shrink; float _e297 = plateSize(_e160.pos, 0u, scene); o_1.thick = 0.16 * _e297; o_1.reach = _e125; float _e305 = stress(metal::length(_e160.pos) * shrink, scene); o_1.stress = _e305; float _e309 = rand(_e160.key, 6u); float _e311 = rand(key_5, 6u); float _e313 = o_1.stress; o_1.tint = metal::mix(_e309, _e311, metal::smoothstep(0.5, 0.8, _e313) * 0.5); bool _e321 = gone; if (!(_e321)) { local_1 = _e137 <= 0.0; } else { local_1 = true; } bool _e328 = local_1; if (!(_e328)) { local_2 = flying > 8.0; } else { local_2 = true; } bool _e335 = local_2; o_1.gone = _e335; Pose _e336 = o_1; return _e336; } metal::float3 placed( Pose o_2, metal::float3 x_1 ) { metal::float3 v_4 = (x_1 - o_2.seed) * o_2.scale; return ((o_2.center + (o_2.ex * v_4.x)) + (o_2.ey * v_4.y)) + (o_2.ez * v_4.z); } metal::float3 local_3( Pose o_3, metal::float3 v_3 ) { return metal::float3(metal::dot(v_3, o_3.ex), metal::dot(v_3, o_3.ey), metal::dot(v_3, o_3.ez)) / metal::float3(o_3.scale); } Outline outline( Pose o_4, constant Scene& scene ) { type_14 poly = {}; type_14 next = {}; int count = 4; int w = 0; metal::float2 toward = {}; float limit = {}; int m = {}; int j = {}; bool local_4 = {}; bool local_5 = {}; int j_1 = {}; Outline o2_ = {}; int j_2 = 0; float _e10 = scene.view.w; float _e15 = scene.view.z; float width = (metal::mix(0.32, 3.2, metal::pow(o_4.stress, 1.3)) * _e10) / _e15; float fine = (width * 0.55) * metal::smoothstep(0.5, 0.8, o_4.stress); metal::float2 a_6 = o_4.seed.xy; Seed _e29 = seedAt(o_4.plate, 0u, o_4.frame, scene); metal::float2 b_4 = _e29.pos; float r_4 = o_4.reach * 1.5; poly.inner[0] = a_6 + metal::float2(-(r_4), -(r_4)); poly.inner[1] = a_6 + metal::float2(r_4, -(r_4)); poly.inner[2] = a_6 + metal::float2(r_4, r_4); poly.inner[3] = a_6 + metal::float2(-(r_4), r_4); uint2 loop_bound_4 = uint2(4294967295u); bool loop_init_4 = true; while(true) { if (metal::all(loop_bound_4 == uint2(0u))) { break; } loop_bound_4 -= uint2(loop_bound_4.y == 0u, 1u); if (!loop_init_4) { int _e193 = w; w = as_type(as_type(_e193) + as_type(1)); } loop_init_4 = false; int _e56 = w; if (_e56 < 16) { } else { break; } { int _e59 = w; int i_9 = naga_mod(_e59, 8); int k_3 = (i_9 >= 4) ? as_type(as_type(i_9) + as_type(1)) : i_9; metal::int2 off = metal::int2(as_type(as_type(naga_mod(k_3, 3)) - as_type(1)), as_type(as_type(naga_div(k_3, 3)) - as_type(1))); toward = metal::float2 {}; limit = float {}; int _e80 = w; if (_e80 < 8) { Seed _e87 = seedAt(as_type(as_type(o_4.cell) + as_type(off)), 1u, o_4.frame, scene); metal::float2 s_5 = _e87.pos; toward = metal::normalize(s_5 - a_6); metal::float2 _e94 = toward; limit = metal::dot(0.5 * (a_6 + s_5), _e94) - fine; } else { Seed _e101 = seedAt(as_type(as_type(o_4.plate) + as_type(off)), 0u, o_4.frame, scene); metal::float2 s_6 = _e101.pos; toward = metal::normalize(s_6 - b_4); metal::float2 _e108 = toward; limit = metal::dot(0.5 * (b_4 + s_6), _e108) - width; } m = 0; j = 0; uint2 loop_bound_5 = uint2(4294967295u); bool loop_init_5 = true; while(true) { if (metal::all(loop_bound_5 == uint2(0u))) { break; } loop_bound_5 -= uint2(loop_bound_5.y == 0u, 1u); if (!loop_init_5) { int _e173 = j; j = as_type(as_type(_e173) + as_type(1)); } loop_init_5 = false; int _e115 = j; int _e116 = count; if (_e115 < _e116) { } else { break; } { int _e118 = j; metal::float2 p_3 = poly.inner[metal::min(unsigned(_e118), 23u)]; int _e121 = j; int _e124 = count; metal::float2 q_3 = poly.inner[metal::min(unsigned(naga_mod(as_type(as_type(_e121) + as_type(1)), _e124)), 23u)]; metal::float2 _e128 = toward; float _e130 = limit; float dp = metal::dot(p_3, _e128) - _e130; metal::float2 _e132 = toward; float _e134 = limit; float dq = metal::dot(q_3, _e132) - _e134; if (dp <= 0.0) { int _e140 = m; local_4 = _e140 < 24; } else { local_4 = false; } bool _e144 = local_4; if (_e144) { int _e145 = m; next.inner[metal::min(unsigned(_e145), 23u)] = p_3; int _e148 = m; m = as_type(as_type(_e148) + as_type(1)); } if ((dp <= 0.0) != (dq <= 0.0)) { int _e157 = m; local_5 = _e157 < 24; } else { local_5 = false; } bool _e161 = local_5; if (_e161) { int _e162 = m; next.inner[metal::min(unsigned(_e162), 23u)] = p_3 + ((q_3 - p_3) * (dp / (dp - dq))); int _e170 = m; m = as_type(as_type(_e170) + as_type(1)); } } } int _e175 = m; count = _e175; j_1 = 0; uint2 loop_bound_6 = uint2(4294967295u); bool loop_init_6 = true; while(true) { if (metal::all(loop_bound_6 == uint2(0u))) { break; } loop_bound_6 -= uint2(loop_bound_6.y == 0u, 1u); if (!loop_init_6) { int _e187 = j_1; j_1 = as_type(as_type(_e187) + as_type(1)); } loop_init_6 = false; int _e178 = j_1; int _e179 = m; if (_e178 < _e179) { } else { break; } { int _e181 = j_1; int _e183 = j_1; metal::float2 _e185 = next.inner[metal::min(unsigned(_e183), 23u)]; poly.inner[metal::min(unsigned(_e181), 23u)] = _e185; } } int _e189 = count; if (_e189 < 3) { break; } } } int _e197 = count; o2_.count = metal::min(_e197, 12); uint2 loop_bound_7 = uint2(4294967295u); bool loop_init_7 = true; while(true) { if (metal::all(loop_bound_7 == uint2(0u))) { break; } loop_bound_7 -= uint2(loop_bound_7.y == 0u, 1u); if (!loop_init_7) { int _e213 = j_2; j_2 = as_type(as_type(_e213) + as_type(1)); } loop_init_7 = false; int _e202 = j_2; int _e204 = o2_.count; if (_e202 < _e204) { } else { break; } { int _e207 = j_2; int _e209 = j_2; metal::float2 _e211 = poly.inner[metal::min(unsigned(_e209), 23u)]; o2_.corners.inner[metal::min(unsigned(_e207), 11u)] = _e211; } } Outline _e215 = o2_; return _e215; } metal::float4 toClip( metal::float2 px, constant Scene& scene ) { float _e5 = scene.view.x; float _e15 = scene.view.y; return metal::float4(((px.x / _e5) * 2.0) - 1.0, 1.0 - ((px.y / _e15) * 2.0), 0.5, 1.0); } PieceOut pieceOut( uint index_2, bool shadow, constant Scene& scene ) { PieceOut p_2 = {}; metal::float2 lo = metal::float2(1000000000.0); metal::float2 hi = metal::float2(-1000000000.0); int behind = 0; int i_2 = 0; metal::float2 at_1 = {}; bool local_6 = {}; bool local_7 = {}; bool local_8 = {}; type_15 corners = type_15 {{metal::float2(0.0, 0.0), metal::float2(1.0, 0.0), metal::float2(0.0, 1.0), metal::float2(0.0, 1.0), metal::float2(1.0, 0.0), metal::float2(1.0, 1.0)}}; Pose _e5 = pose(naga_div(index_2, PIECE_VERTICES), scene); if (_e5.gone) { p_2.position = metal::float4(2.0, 2.0, 2.0, 1.0); PieceOut _e13 = p_2; return _e13; } Outline _e14 = outline(_e5, scene); float d_3 = scene.camera.x; metal::float4 _e21 = scene.light; metal::float3 l = _e21.xyz; uint2 loop_bound_8 = uint2(4294967295u); bool loop_init_8 = true; while(true) { if (metal::all(loop_bound_8 == uint2(0u))) { break; } loop_bound_8 -= uint2(loop_bound_8.y == 0u, 1u); if (!loop_init_8) { int _e82 = i_2; i_2 = as_type(as_type(_e82) + as_type(1)); } loop_init_8 = false; int _e33 = i_2; if (_e33 < as_type(as_type(_e14.count) * as_type(2))) { } else { break; } { int _e39 = i_2; int _e45 = i_2; metal::float3 _e51 = placed(_e5, metal::float3(_e14.corners.inner[metal::min(unsigned(naga_div(_e39, 2)), 11u)], -(_e5.thick) * static_cast(naga_mod(_e45, 2)))); at_1 = _e51.xy - (l.xy * (_e51.z / metal::max(l.z, 0.05))); if (!(shadow)) { if (_e51.z > (d_3 * 0.999)) { int _e68 = behind; behind = as_type(as_type(_e68) + as_type(1)); continue; } at_1 = _e51.xy * (d_3 / (d_3 - _e51.z)); } metal::float2 _e75 = lo; metal::float2 _e76 = at_1; lo = metal::min(_e75, _e76); metal::float2 _e78 = hi; metal::float2 _e79 = at_1; hi = metal::max(_e78, _e79); } } metal::float4 _e86 = scene.frame; float _e92 = scene.view.z; metal::float2 viewLo = -(_e86.xy) / metal::float2(_e92); metal::float4 _e97 = scene.view; metal::float4 _e101 = scene.frame; float _e107 = scene.view.z; metal::float2 viewHi = (_e97.xy - _e101.xy) / metal::float2(_e107); int _e110 = behind; if (_e110 > 0) { lo = viewLo; hi = viewHi; } if (!((_e14.count < 3))) { int _e119 = behind; local_6 = _e119 == as_type(as_type(_e14.count) * as_type(2)); } else { local_6 = true; } bool _e125 = local_6; if (!(_e125)) { metal::float2 _e129 = hi; local_7 = metal::any(_e129 < viewLo); } else { local_7 = true; } bool _e133 = local_7; if (!(_e133)) { metal::float2 _e137 = lo; local_8 = metal::any(_e137 > viewHi); } else { local_8 = true; } bool gone_1 = local_8; metal::float2 _e162 = lo; metal::float2 _e163 = hi; metal::float2 _e167 = corners.inner[metal::min(unsigned(naga_mod(index_2, PIECE_VERTICES)), 5u)]; metal::float2 at_2 = metal::mix(_e162, _e163, _e167); metal::float4 _e172 = scene.frame; float _e177 = scene.view.z; metal::float4 _e180 = toClip(_e172.xy + (at_2 * _e177), scene); p_2.position = gone_1 ? metal::float4(2.0, 2.0, 2.0, 1.0) : _e180; p_2.at = at_2; p_2.center = _e5.center; p_2.seed = _e5.seed; p_2.ex = _e5.ex; p_2.ey = _e5.ey; p_2.ez = _e5.ez; p_2.look = metal::float4(_e5.thick, _e5.stress, _e5.tint, _e5.scale); type_13 c_4 = _e14.corners; p_2.c0_ = metal::float4(_e14.corners.inner[0], _e14.corners.inner[1]); p_2.c1_ = metal::float4(_e14.corners.inner[2], _e14.corners.inner[3]); p_2.c2_ = metal::float4(_e14.corners.inner[4], _e14.corners.inner[5]); p_2.c3_ = metal::float4(_e14.corners.inner[6], _e14.corners.inner[7]); p_2.c4_ = metal::float4(_e14.corners.inner[8], _e14.corners.inner[9]); p_2.c5_ = metal::float4(_e14.corners.inner[10], _e14.corners.inner[11]); p_2.count = _e14.count; p_2.frame = _e5.frame; PieceOut _e233 = p_2; return _e233; } Hit slab( metal::float3 o_5, metal::float3 d_1, PieceOut in_3 ) { Hit h_1 = {}; type_13 c_1 = {}; metal::float2 middle = metal::float2(0.0); int i_3 = 0; type_16 walls = {}; int i_4 = 0; metal::float2 out_1 = {}; float enter = -1000000000.0; float leave = 1000000000.0; metal::float3 normal = metal::float3(0.0, 0.0, 1.0); bool local_9 = {}; int i_5 = 0; bool local_10 = {}; int i_6 = 0; h_1.t = -1.0; c_1 = type_13 {{in_3.c0_.xy, in_3.c0_.zw, in_3.c1_.xy, in_3.c1_.zw, in_3.c2_.xy, in_3.c2_.zw, in_3.c3_.xy, in_3.c3_.zw, in_3.c4_.xy, in_3.c4_.zw, in_3.c5_.xy, in_3.c5_.zw}}; int count_1 = in_3.count; uint2 loop_bound_9 = uint2(4294967295u); bool loop_init_9 = true; while(true) { if (metal::all(loop_bound_9 == uint2(0u))) { break; } loop_bound_9 -= uint2(loop_bound_9.y == 0u, 1u); if (!loop_init_9) { int _e46 = i_3; i_3 = as_type(as_type(_e46) + as_type(1)); } loop_init_9 = false; int _e38 = i_3; if (_e38 < count_1) { } else { break; } { metal::float2 _e40 = middle; int _e41 = i_3; metal::float2 _e43 = c_1.inner[metal::min(unsigned(_e41), 11u)]; middle = _e40 + _e43; } } metal::float2 _e48 = middle; middle = _e48 / metal::float2(static_cast(count_1)); uint2 loop_bound_10 = uint2(4294967295u); bool loop_init_10 = true; while(true) { if (metal::all(loop_bound_10 == uint2(0u))) { break; } loop_bound_10 -= uint2(loop_bound_10.y == 0u, 1u); if (!loop_init_10) { int _e94 = i_4; i_4 = as_type(as_type(_e94) + as_type(1)); } loop_init_10 = false; int _e55 = i_4; if (_e55 < count_1) { } else { break; } { int _e57 = i_4; metal::float2 a_7 = c_1.inner[metal::min(unsigned(_e57), 11u)]; int _e60 = i_4; metal::float2 b_5 = c_1.inner[metal::min(unsigned(naga_mod(as_type(as_type(_e60) + as_type(1)), count_1)), 11u)]; out_1 = metal::normalize(metal::float2(b_5.y - a_7.y, a_7.x - b_5.x) + metal::float2(0.000000001, 0.0)); metal::float2 _e79 = out_1; metal::float2 _e80 = middle; if (metal::dot(_e79, _e80 - a_7) > 0.0) { metal::float2 _e85 = out_1; out_1 = -(_e85); } int _e87 = i_4; metal::float2 _e89 = out_1; metal::float2 _e90 = out_1; walls.inner[metal::min(unsigned(_e87), 11u)] = metal::float3(_e89, metal::dot(_e90, a_7)); } } if (metal::abs(d_1.z) < 0.00000001) { if (!((o_5.z > 0.0))) { local_9 = o_5.z < -(in_3.look.x); } else { local_9 = true; } bool _e121 = local_9; if (_e121) { Hit _e122 = h_1; return _e122; } } else { float t0_ = -(o_5.z) / d_1.z; float t1_ = (-(in_3.look.x) - o_5.z) / d_1.z; if (d_1.z < 0.0) { enter = t0_; leave = t1_; } else { enter = t1_; leave = t0_; normal = metal::float3(0.0, 0.0, -1.0); } } uint2 loop_bound_11 = uint2(4294967295u); bool loop_init_11 = true; while(true) { if (metal::all(loop_bound_11 == uint2(0u))) { break; } loop_bound_11 -= uint2(loop_bound_11.y == 0u, 1u); if (!loop_init_11) { int _e173 = i_5; i_5 = as_type(as_type(_e173) + as_type(1)); } loop_init_11 = false; int _e143 = i_5; if (_e143 < count_1) { } else { break; } { int _e145 = i_5; metal::float3 w_2 = walls.inner[metal::min(unsigned(_e145), 11u)]; float across_1 = metal::dot(d_1.xy, w_2.xy); float room = w_2.z - metal::dot(o_5.xy, w_2.xy); if (metal::abs(across_1) < 0.00000001) { if (room < 0.0) { Hit _e161 = h_1; return _e161; } continue; } float t = room / across_1; if (across_1 < 0.0) { float _e165 = enter; if (t > _e165) { enter = t; normal = metal::float3(w_2.xy, 0.0); } } else { float _e170 = leave; leave = metal::min(_e170, t); } } } float _e175 = enter; float _e176 = leave; if (!((_e175 > _e176))) { float _e181 = enter; local_10 = _e181 < 0.0; } else { local_10 = true; } bool _e185 = local_10; if (_e185) { Hit _e186 = h_1; return _e186; } float _e188 = enter; h_1.t = _e188; metal::float3 _e190 = normal; h_1.normal = _e190; float _e193 = normal.z; h_1.face = _e193 > 0.5; float _e198 = enter; metal::float2 p_4 = o_5.xy + (d_1.xy * _e198); h_1.edge = 1000000000.0; uint2 loop_bound_12 = uint2(4294967295u); bool loop_init_12 = true; while(true) { if (metal::all(loop_bound_12 == uint2(0u))) { break; } loop_bound_12 -= uint2(loop_bound_12.y == 0u, 1u); if (!loop_init_12) { int _e227 = i_6; i_6 = as_type(as_type(_e227) + as_type(1)); } loop_init_12 = false; int _e205 = i_6; if (_e205 < count_1) { } else { break; } { int _e207 = i_6; float _e210 = walls.inner[metal::min(unsigned(_e207), 11u)].z; int _e211 = i_6; metal::float3 _e213 = walls.inner[metal::min(unsigned(_e211), 11u)]; float room_1 = _e210 - metal::dot(p_4, _e213.xy); float _e218 = h_1.edge; if (room_1 < _e218) { h_1.edge = room_1; int _e222 = i_6; metal::float3 _e224 = walls.inner[metal::min(unsigned(_e222), 11u)]; h_1.edgeNormal = _e224.xy; } } } Hit _e229 = h_1; return _e229; } Pose poseOf( PieceOut in_4 ) { return Pose {metal::int2(0), metal::int2(0), metal::float2(0.0), {}, in_4.center, in_4.seed, in_4.ex, in_4.ey, in_4.ez, in_4.look.w, in_4.look.x, 0.0, in_4.look.y, in_4.look.z, false}; } struct vsInput { }; struct vsOutput { metal::float4 position [[position]]; }; vertex vsOutput vs( uint i [[vertex_id]] ) { type_8 p = type_8 {{metal::float2(-1.0, -1.0), metal::float2(3.0, -1.0), metal::float2(-1.0, 3.0)}}; VsOut o = {}; metal::float2 _e15 = p.inner[metal::min(unsigned(i), 2u)]; o.position = metal::float4(_e15, 0.0, 1.0); VsOut _e19 = o; const auto _tmp = _e19; return vsOutput { _tmp.position }; } struct fsInput { }; struct fsOutput { metal::float4 member_1 [[color(0)]]; }; fragment fsOutput fs( metal::float4 position [[position]] , constant Scene& scene [[buffer(0)]] ) { const VsOut in = { position }; Cell inner = {}; float calm = 1.0; bool local = {}; float inside = {}; float top = {}; float tint = {}; float unitPx = scene.view.z; float dpr_1 = scene.view.w; metal::float4 _e13 = scene.frame; metal::float2 q_4 = (in.position.xy - _e13.xy) / metal::float2(unitPx); float r_5 = metal::length(q_4); float _e22 = scene.wall.x; float _e26 = scene.build.z; float hole_1 = _e22 * _e26; metal::float4 gone_2 = metal::float4(-8.0 * dpr_1, 1.0, 0.0, 0.0); if (r_5 < (hole_1 * 0.7)) { return fsOutput { gone_2 }; } metal::float2 _e37 = wallFrame(scene); Cell _e39 = voronoi(q_4, 0u, _e37, scene); float _e40 = stress(r_5, scene); float shards = metal::smoothstep(0.5, 0.8, _e40); if (!((shards > 0.0))) { float _e55 = scene.wall.x; local = r_5 < ((_e55 * 1.6) * 1.3); } else { local = true; } bool _e62 = local; if (_e62) { Cell _e64 = voronoi(q_4, 1u, _e37, scene); inner = _e64; metal::float2 _e66 = inner.seed; uint _e68 = inner.key; float _e69 = peelTime(_e66, _e68, scene); if (_e69 > 0.0) { return fsOutput { gone_2 }; } calm = 1.0 - metal::smoothstep(-1.5, 0.0, _e69); } float width_1 = metal::mix(0.32, 3.2, metal::pow(_e40, 1.3)) * dpr_1; float _e85 = plateSize(_e39.seed, 0u, scene); float _e88 = stress(metal::length(_e39.seed), scene); float _e90 = loose(_e39.seed, scene); float s0_ = _e88 * _e90; float _e94 = cracked(r_5, _e39.key, _e39.other, _e85, scene); inside = ((_e39.edge * unitPx) - (width_1 * _e94)) + (((1.0 - _e94) * 8.0) * dpr_1); float _e108 = calm; float _e109 = plateTop(q_4, _e39.seed, _e39.key, s0_, _e85, _e108, scene); top = _e109; float _e113 = rand(_e39.key, 6u); tint = _e113; if (shards > 0.0) { uint _e118 = inner.key; uint key_6 = _e118 ^ _e39.key; metal::float2 _e122 = inner.seed; float _e124 = plateSize(_e122, 1u, scene); uint _e126 = inner.key; uint _e128 = inner.other; float _e129 = cracked(r_5, _e126, _e128, _e124, scene); float reached1_ = _e129 * shards; float _e132 = inner.edge; float inside1_ = ((_e132 * unitPx) - ((width_1 * 0.55) * reached1_)) + (((1.0 - reached1_) * 8.0) * dpr_1); float _e144 = inside; inside = metal::min(_e144, inside1_); float _e146 = top; metal::float2 _e148 = inner.seed; float _e149 = calm; float _e150 = plateTop(q_4, _e148, key_6, s0_, _e124, _e149, scene); top = _e146 + (shards * _e150); float _e153 = tint; float _e155 = rand(key_6, 6u); tint = metal::mix(_e153, _e155, shards * 0.5); } float bevel = metal::mix(0.7, 5.5, _e40 * _e40) * dpr_1; float _e164 = inside; float x_3 = metal::clamp(_e164 / bevel, 0.0, 1.0); float fillet = 1.0 - metal::sqrt(metal::max(1.0 - ((1.0 - x_3) * (1.0 - x_3)), 0.0)); float _e181 = inside; float crack_1 = 1.0 - metal::smoothstep(-0.6, 0.6, _e181); float depth = ((width_1 * 2.0) + (2.0 * dpr_1)) * (0.4 + _e40); float _e195 = plaster(q_4, _e37, unitPx, scene); float _e199 = scene.albedo.w; float bumps = (_e199 > 0.0) ? _e195 : 0.5; float _e207 = scene.build.y; float _e211 = scene.build.z; float load = _e207 * (1.0 - _e211); float dent = ((0.05 * load) * metal::exp((-(r_5) * r_5) / (0.012 + (0.03 * load)))) * unitPx; float _e227 = top; float _e235 = scene.albedo.w; float height = metal::mix((_e227 - (bevel * fillet)) + ((((bumps - 0.5) * _e235) * dpr_1) * (1.0 + ((3.0 * load) * metal::exp((-(r_5) * r_5) / 0.02)))), -(depth), crack_1) - dent; float open = metal::smoothstep(0.75, 1.0, _e40); float _e256 = tint; return fsOutput { metal::float4(height, crack_1, _e256 + ((bumps - 0.5) * 0.05), 1.0 - (crack_1 * open)) }; } struct vs_pieceInput { }; struct vs_pieceOutput { metal::float4 position [[position]]; metal::float2 at [[user(loc0), center_perspective]]; metal::float3 center [[user(loc1), flat]]; metal::float3 seed [[user(loc2), flat]]; metal::float3 ex [[user(loc3), flat]]; metal::float3 ey [[user(loc4), flat]]; metal::float3 ez [[user(loc5), flat]]; metal::float4 look [[user(loc6), flat]]; metal::float4 c0_ [[user(loc7), flat]]; metal::float4 c1_ [[user(loc8), flat]]; metal::float4 c2_ [[user(loc9), flat]]; metal::float4 c3_ [[user(loc10), flat]]; metal::float4 c4_ [[user(loc11), flat]]; metal::float4 c5_ [[user(loc12), flat]]; int count [[user(loc13), flat]]; metal::float2 frame [[user(loc14), flat]]; }; vertex vs_pieceOutput vs_piece( uint index [[vertex_id]] , constant Scene& scene [[buffer(0)]] ) { PieceOut _e2 = pieceOut(index, false, scene); const auto _tmp_1 = _e2; return vs_pieceOutput { _tmp_1.position, _tmp_1.at, _tmp_1.center, _tmp_1.seed, _tmp_1.ex, _tmp_1.ey, _tmp_1.ez, _tmp_1.look, _tmp_1.c0_, _tmp_1.c1_, _tmp_1.c2_, _tmp_1.c3_, _tmp_1.c4_, _tmp_1.c5_, _tmp_1.count, _tmp_1.frame }; } struct vs_piece_shadowInput { }; struct vs_piece_shadowOutput { metal::float4 position [[position]]; metal::float2 at [[user(loc0), center_perspective]]; metal::float3 center [[user(loc1), flat]]; metal::float3 seed [[user(loc2), flat]]; metal::float3 ex [[user(loc3), flat]]; metal::float3 ey [[user(loc4), flat]]; metal::float3 ez [[user(loc5), flat]]; metal::float4 look [[user(loc6), flat]]; metal::float4 c0_ [[user(loc7), flat]]; metal::float4 c1_ [[user(loc8), flat]]; metal::float4 c2_ [[user(loc9), flat]]; metal::float4 c3_ [[user(loc10), flat]]; metal::float4 c4_ [[user(loc11), flat]]; metal::float4 c5_ [[user(loc12), flat]]; int count [[user(loc13), flat]]; metal::float2 frame [[user(loc14), flat]]; }; vertex vs_piece_shadowOutput vs_piece_shadow( uint index_1 [[vertex_id]] , constant Scene& scene [[buffer(0)]] ) { PieceOut _e2 = pieceOut(index_1, true, scene); const auto _tmp_2 = _e2; return vs_piece_shadowOutput { _tmp_2.position, _tmp_2.at, _tmp_2.center, _tmp_2.seed, _tmp_2.ex, _tmp_2.ey, _tmp_2.ez, _tmp_2.look, _tmp_2.c0_, _tmp_2.c1_, _tmp_2.c2_, _tmp_2.c3_, _tmp_2.c4_, _tmp_2.c5_, _tmp_2.count, _tmp_2.frame }; } struct fs_pieceInput { metal::float2 at_2 [[user(loc0), center_perspective]]; metal::float3 center [[user(loc1), flat]]; metal::float3 seed_5 [[user(loc2), flat]]; metal::float3 ex [[user(loc3), flat]]; metal::float3 ey [[user(loc4), flat]]; metal::float3 ez [[user(loc5), flat]]; metal::float4 look [[user(loc6), flat]]; metal::float4 c0_ [[user(loc7), flat]]; metal::float4 c1_ [[user(loc8), flat]]; metal::float4 c2_ [[user(loc9), flat]]; metal::float4 c3_ [[user(loc10), flat]]; metal::float4 c4_ [[user(loc11), flat]]; metal::float4 c5_ [[user(loc12), flat]]; int count_1 [[user(loc13), flat]]; metal::float2 frame_3 [[user(loc14), flat]]; }; struct fs_pieceOutput { metal::float4 color [[color(0)]]; float depth [[depth(any)]]; }; fragment fs_pieceOutput fs_piece( fs_pieceInput varyings_4 [[stage_in]] , metal::float4 position_1 [[position]] , constant Scene& scene [[buffer(0)]] ) { const PieceOut in_1 = { position_1, varyings_4.at_2, {}, varyings_4.center, varyings_4.seed_5, varyings_4.ex, varyings_4.ey, varyings_4.ez, varyings_4.look, varyings_4.c0_, varyings_4.c1_, varyings_4.c2_, varyings_4.c3_, varyings_4.c4_, varyings_4.c5_, varyings_4.count_1, {}, varyings_4.frame_3 }; metal::float3 n = {}; metal::float3 albedo = {}; float x = 1.0; float b = 0.5; metal::float2 slope = metal::float2(0.0); PieceColor out = {}; float d_4 = scene.camera.x; metal::float3 eye = metal::float3(0.0, 0.0, d_4); metal::float3 ray = metal::float3(in_1.at, -(d_4)); Pose _e11 = poseOf(in_1); metal::float3 _e15 = local_3(_e11, eye - in_1.center); metal::float3 _e17 = local_3(_e11, ray); Hit _e18 = slab(in_1.seed + _e15, _e17, in_1); if (_e18.t < 0.0) { metal::discard_fragment(); } float dpr_2 = scene.view.w; float z_1 = eye.z + (ray.z * _e18.t); n = _e18.normal; metal::float4 _e35 = scene.shard; albedo = _e35.xyz * 0.82; if (_e18.face) { float _e46 = scene.view.z; float pxPerUnit_1 = ((_e46 * in_1.look.w) * d_4) / metal::max(d_4 - z_1, 0.001); float bevel_1 = metal::mix(0.7, 5.5, in_1.look.y * in_1.look.y) * dpr_2; x = metal::clamp((_e18.edge * pxPerUnit_1) / bevel_1, 0.0, 1.0); metal::float3 _e74 = local_3(_e11, eye - in_1.center); metal::float3 _e77 = local_3(_e11, ray); metal::float2 at_3 = (in_1.seed.xy + _e74.xy) + (_e77.xy * _e18.t); float _e90 = scene.albedo.w; if (_e90 > 0.0) { float step = dpr_2 / pxPerUnit_1; float _e95 = plaster(at_3, in_1.frame, pxPerUnit_1, scene); b = _e95; float _e100 = plaster(at_3 + metal::float2(step, 0.0), in_1.frame, pxPerUnit_1, scene); float _e105 = plaster(at_3 + metal::float2(0.0, step), in_1.frame, pxPerUnit_1, scene); float _e107 = b; slope = metal::float2(_e100, _e105) - metal::float2(_e107); } float _e111 = x; metal::float2 _e117 = slope; float _e121 = scene.albedo.w; n = metal::normalize(metal::float3(((_e18.edgeNormal * (1.0 - _e111)) * 1.6) - ((_e117 * _e121) * dpr_2), 1.0)); metal::float4 _e130 = scene.albedo; float _e134 = b; albedo = _e130.xyz * (0.93 + (0.07 * (in_1.look.z + ((_e134 - 0.5) * 0.05)))); } float _e147 = n.x; float _e151 = n.y; float _e156 = n.z; metal::float3 world = metal::normalize(((in_1.ex * _e147) + (in_1.ey * _e151)) + (in_1.ez * _e156)); metal::float4 _e162 = scene.light; metal::float3 l_1 = _e162.xyz; float _e170 = scene.camera.w; float sun = metal::max(metal::dot(world, l_1), 0.0) * _e170; float sky = 0.26 * (0.55 + (0.45 * metal::max(world.z, -0.6))); metal::float3 _e183 = albedo; float _e186 = x; out.color = metal::float4((_e183 * (sky + sun)) * (1.0 - (0.3 * (1.0 - _e186))), 1.0); out.depth = metal::clamp((d_4 - z_1) / d_4, 0.0, 1.0) * 0.999; PieceColor _e204 = out; const auto _tmp_3 = _e204; return fs_pieceOutput { _tmp_3.color, _tmp_3.depth }; } struct fs_piece_shadowInput { metal::float2 at_2 [[user(loc0), center_perspective]]; metal::float3 center [[user(loc1), flat]]; metal::float3 seed_5 [[user(loc2), flat]]; metal::float3 ex [[user(loc3), flat]]; metal::float3 ey [[user(loc4), flat]]; metal::float3 ez [[user(loc5), flat]]; metal::float4 look [[user(loc6), flat]]; metal::float4 c0_ [[user(loc7), flat]]; metal::float4 c1_ [[user(loc8), flat]]; metal::float4 c2_ [[user(loc9), flat]]; metal::float4 c3_ [[user(loc10), flat]]; metal::float4 c4_ [[user(loc11), flat]]; metal::float4 c5_ [[user(loc12), flat]]; int count_1 [[user(loc13), flat]]; metal::float2 frame_3 [[user(loc14), flat]]; }; struct fs_piece_shadowOutput { metal::float4 member_5 [[color(0)]]; }; fragment fs_piece_shadowOutput fs_piece_shadow( fs_piece_shadowInput varyings_5 [[stage_in]] , metal::float4 position_2 [[position]] , constant Scene& scene [[buffer(0)]] ) { const PieceOut in_2 = { position_2, varyings_5.at_2, {}, varyings_5.center, varyings_5.seed_5, varyings_5.ex, varyings_5.ey, varyings_5.ez, varyings_5.look, varyings_5.c0_, varyings_5.c1_, varyings_5.c2_, varyings_5.c3_, varyings_5.c4_, varyings_5.c5_, varyings_5.count_1, {}, varyings_5.frame_3 }; metal::float3 start = metal::float3(in_2.at, 0.0); metal::float4 _e6 = scene.light; metal::float3 toward_1 = _e6.xyz; Pose _e8 = poseOf(in_2); metal::float3 _e12 = local_3(_e8, start - in_2.center); metal::float3 _e14 = local_3(_e8, toward_1); Hit _e15 = slab(in_2.seed + _e12, _e14, in_2); if (_e15.t < 0.0) { metal::discard_fragment(); } float height_1 = _e15.t * toward_1.z; float _e25 = scene.camera.x; return fs_piece_shadowOutput { metal::float4(1.0, 1.0 - metal::clamp(height_1 / _e25, 0.0, 1.0), 0.0, 1.0) }; }  ÀðЂ�‘Íà?vsmain+ struct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Seed { float2 pos; uint key; }; struct Cell { float2 seed; uint key; float edge; uint other; }; struct VsOut { float4 position; }; struct Pose { int2 cell; int2 plate; float2 frame; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { float2 corners[12]; int count; }; struct PieceOut { float4 position; float2 at; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float4 look; float4 c0; float4 c1; float4 c2; float4 c3; float4 c4; float4 c5; int count; float2 frame; }; struct Hit { float t; float3 normal; bool face; float edge; float2 edgeNormal; }; struct PieceColor { float4 color; float depth; }; static const Hit _308 = { 0.0f, float3(0.0f, 0.0f, 0.0f), false, 0.0f, float2(0.0f, 0.0f) }; static const float2 _311[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float3 _318[12] = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; static const float2 _660[3] = { float2(-1.0f, -1.0f), float2(3.0f, -1.0f), float2(-1.0f, 3.0f) }; static const VsOut _665 = { float4(0.0f, 0.0f, 0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float4 gl_Position : SV_Position; }; void vert_main() { VsOut o = _665; o.position = float4(_660[min(uint(gl_VertexIndex), 2u)], 0.0f, 1.0f); gl_Position = o.position; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; return stage_output; } fsmaina@struct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Seed { float2 pos; uint key; }; struct Cell { float2 seed; uint key; float edge; uint other; }; struct VsOut { float4 position; }; struct Pose { int2 cell; int2 plate; float2 frame; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { float2 corners[12]; int count; }; struct PieceOut { float4 position; float2 at; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float4 look; float4 c0; float4 c1; float4 c2; float4 c3; float4 c4; float4 c5; int count; float2 frame; }; struct Hit { float t; float3 normal; bool face; float edge; float2 edgeNormal; }; struct PieceColor { float4 color; float depth; }; static const Seed _122 = { float2(0.0f, 0.0f), 0u }; static const float2 _208[9] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const uint _211[9] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u }; static const Cell _219 = { float2(0.0f, 0.0f), 0u, 0.0f, 0u }; static const float _821[4] = { 1000000000.0f, 1000000000.0f, 1000000000.0f, 1000000000.0f }; static const Pose _841 = { int2(0, 0), int2(0, 0), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, false }; static const int2 _844[4] = { int2(0, 0), int2(0, 0), int2(0, 0), int2(0, 0) }; static const float2 _1208[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _1210[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _2319[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Outline _1229 = { { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }, 0 }; static const float2 _1516[6] = { float2(0.0f, 0.0f), float2(1.0f, 0.0f), float2(0.0f, 1.0f), float2(0.0f, 1.0f), float2(1.0f, 0.0f), float2(1.0f, 1.0f) }; static const PieceOut _1519 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), 0, float2(0.0f, 0.0f) }; static const Hit _1750 = { 0.0f, float3(0.0f, 0.0f, 0.0f), false, 0.0f, float2(0.0f, 0.0f) }; static const float2 _1752[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float3 _1757[12] = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; static const Cell _2095 = { float2(0.0f, 0.0f), 0u, 0.0f, 0u }; cbuffer scene : register(b0) { Scene scene_1_m0 : packoffset(c0); }; static float4 gl_FragCoord; static float4 _2081; struct SPIRV_Cross_Input { float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _2081 : SV_Target0; }; float2 wallFrame() { return scene_1_m0.frame.zw; } float density(uint level) { return (level == 1u) ? 1.5f : 1.0f; } int naga_mod(int lhs, int rhs) { int _101 = ((rhs == 0) || ((lhs == int(0x80000000)) && (rhs == (-1)))) ? 1 : rhs; return lhs - ((lhs / _101) * _101); } int naga_div(int lhs, int rhs) { return lhs / (((rhs == 0) || ((lhs == int(0x80000000)) && (rhs == (-1)))) ? 1 : rhs); } uint pcg(uint v) { uint _49 = (v * 747796405u) + 2891336453u; uint _54 = ((_49 >> ((_49 >> 28u) + 4u)) ^ _49) * 277803737u; return (_54 >> 22u) ^ _54; } float unit(uint h) { return float(h >> 8u) / 16777216.0f; } Seed seedAt(int2 c, uint level, float2 frame) { Seed s = _122; float _124 = density(level); float _131 = (scene_1_m0.wall.z * _124) / 6.283185482025146484375f; int _139 = int(clamp(round(scene_1_m0.wall.z * _124), -2147483648.0f, 2147483520.0f)); int _143 = int(clamp(round(1024.0f * _124), -2147483648.0f, 2147483520.0f)); uint _158 = pcg(uint(naga_mod(naga_mod(c.x, _143) + _143, _143)) + pcg(uint(naga_mod(naga_mod(c.y, _139) + _139, _139)) + (level * 5369127u))); float2 _169 = (float2(c) + (float2(0.5f, 0.5f) + ((float2(unit(_158), unit(pcg(_158))) - float2(0.5f, 0.5f)) * 0.800000011920928955078125f))) + (frame * _124); float _174 = _169.y / _131; s.pos = float2(cos(_174), sin(_174)) * exp(_169.x / _131); s.key = _158; return s; } Cell voronoi(float2 q, uint level, float2 frame) { int n = 0; uint keys[9] = _211; int n_1 = 0; int nearest = 0; float2 pos[9] = _208; Cell cell = _219; float best = 1000000000.0f; uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); float _222 = density(level); int2 _241 = int2(clamp(floor((float2(log(max(length(q), 9.9999997473787516355514526367188e-05f)), atan2(q.y, q.x)) * ((scene_1_m0.wall.z * _222) / 6.283185482025146484375f)) - (frame * _222)), float2(-2147483648.0f, -2147483648.0f), float2(2147483520.0f, 2147483520.0f))); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(n < 9)) { break; } Seed _277 = seedAt(_241 + int2(naga_mod(n, 3) - 1, naga_div(n, 3) - 1), level, frame); pos[min(uint(n), 8u)] = _277.pos; keys[min(uint(n), 8u)] = _277.key; float _290 = dot(q - _277.pos, q - _277.pos); if (_290 < best) { best = _290; nearest = n; } n++; continue; } uint _299 = min(uint(nearest), 8u); cell.seed = pos[_299]; cell.key = keys[min(uint(nearest), 8u)]; cell.edge = 1000000000.0f; cell.other = cell.key; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(n_1 < 9)) { break; } if (n_1 == nearest) { int _359 = n_1; n_1 = _359 + 1; continue; } uint _339 = min(uint(n_1), 8u); float _347 = dot(((pos[_299] + pos[_339]) * 0.5f) - q, normalize(pos[_339] - pos[_299])); if (_347 < cell.edge) { cell.edge = _347; cell.other = keys[min(uint(n_1), 8u)]; } int _359 = n_1; n_1 = _359 + 1; continue; } return cell; } float stress(float r) { return clamp(exp((-(r - (scene_1_m0.wall.x * scene_1_m0.build.z))) / scene_1_m0.wall.y), 0.0f, 1.0f) * scene_1_m0.build.y; } float rand(uint key, uint channel) { return unit(pcg(key + (channel * 2654435769u))); } float peelTime(float2 seed, uint key) { if (scene_1_m0.build.z < 0.00999999977648258209228515625f) { return -1000.0f; } return log((scene_1_m0.wall.x * lerp(1.12000000476837158203125f, 1.60000002384185791015625f, rand(key, 21u))) / max(length(seed), 9.9999997473787516355514526367188e-05f)) / 0.0419999994337558746337890625f; } float plateSize(float2 seed, uint level) { return (length(seed) * 6.283185482025146484375f) / (scene_1_m0.wall.z * density(level)); } float loose(float2 seed) { return clamp(((scene_1_m0.build.x * 0.85000002384185791015625f) - length(seed)) / 0.0599999986588954925537109375f, 0.0f, 1.0f); } float cracked(float r, uint a, uint b, float size) { return clamp(((scene_1_m0.build.x * (0.800000011920928955078125f + (0.20000000298023223876953125f * (rand(a, 9u) + rand(b, 9u))))) - r) / 0.039999999105930328369140625f, 0.0f, 1.0f) * smoothstep(1.0f, 14.0f, (size * scene_1_m0.view.z) / scene_1_m0.view.w); } float knocked(float2 seed, float size) { float lift = 0.0f; float _516 = (length(seed) - (scene_1_m0.wall.x + (scene_1_m0.hits.x * 1.39999997615814208984375f))) / 0.0900000035762786865234375f; lift = (scene_1_m0.hits.y * exp(((-_516) * _516) - (scene_1_m0.hits.x * 1.7999999523162841796875f))) * 0.5f; float _531 = length(seed - scene_1_m0.strike.xy) / 0.1599999964237213134765625f; lift += ((scene_1_m0.hits.w * exp(((-_531) * _531) - (scene_1_m0.hits.z * 2.2000000476837158203125f))) * 0.60000002384185791015625f); return lift * size; } float plateTop(float2 q, float2 seed, uint key, float s, float size, float calm) { float _725 = rand(key, 4u) * 6.283185482025146484375f; return (((((((0.20000000298023223876953125f * s) * s) * (0.25f + (0.75f * rand(key, 3u)))) * size) + dot(((float2(cos(_725), sin(_725)) * 0.4000000059604644775390625f) * s) * rand(key, 5u), q - seed)) * calm) + knocked(seed, size)) * scene_1_m0.view.z; } float valueNoise(float2 p, int period, uint salt) { int2 _559 = int2(clamp(floor(p), float2(-2147483648.0f, -2147483648.0f), float2(2147483520.0f, 2147483520.0f))); float2 _560 = frac(p); float2 _564 = (_560 * _560) * (float2(3.0f, 3.0f) - (_560 * 2.0f)); uint _571 = (uint(naga_mod(naga_mod(_559.y, period) + period, period)) * 668265261u) + salt; uint _579 = (uint(naga_mod(naga_mod(_559.y + 1, period) + period, period)) * 668265261u) + salt; return lerp(lerp(unit(pcg((uint(_559.x) * 374761393u) + _571)), unit(pcg((uint(_559.x + 1) * 374761393u) + _571)), _564.x), lerp(unit(pcg((uint(_559.x) * 374761393u) + _579)), unit(pcg((uint(_559.x + 1) * 374761393u) + _579)), _564.x), _564.y); } float octaves(float2 g, float ratio, uint salt) { float _621 = log2(max(ratio, 1.0f)); float _622 = floor(_621); float _623 = _621 - _622; float _624 = exp2(_622); float _655 = 1.0f - _623; return 0.5f + ((((valueNoise(g * _624, int(clamp(round(scene_1_m0.wall.z * _624), -2147483648.0f, 2147483520.0f)), salt + (uint(clamp(_622, 0.0f, 4294967040.0f)) * 2654435769u)) - 0.5f) * _655) + ((valueNoise((g * _624) * 2.0f, int(clamp(round((scene_1_m0.wall.z * _624) * 2.0f), -2147483648.0f, 2147483520.0f)), salt + (uint(clamp(_622 + 1.0f, 0.0f, 4294967040.0f)) * 2654435769u)) - 0.5f) * _623)) * rsqrt((_655 * _655) + (_623 * _623))); } float plaster(float2 q, float2 frame, float pxPerUnit) { float _680 = scene_1_m0.wall.z / 6.283185482025146484375f; float _682 = max(length(q), 9.9999997473787516355514526367188e-05f); float2 _689 = (float2(log(_682), atan2(q.y, q.x)) * _680) - frame; float _691 = (_682 * pxPerUnit) / _680; return (0.64999997615814208984375f * octaves(_689, _691 / (2.2000000476837158203125f * scene_1_m0.view.w), 11u)) + (0.3499999940395355224609375f * octaves(_689, _691 / (11.0f * scene_1_m0.view.w), 23u)); } void frag_main() { float top = 0.0f; float calm = 1.0f; float inside = 0.0f; Cell inner = _2095; float tint = 0.0f; bool _2097 = false; VsOut _2077 = { gl_FragCoord }; float2 _2117 = (_2077.position.xy - scene_1_m0.frame.xy) / float2(scene_1_m0.view.z, scene_1_m0.view.z); float _2118 = length(_2117); float4 _2125 = float4((-8.0f) * scene_1_m0.view.w, 1.0f, 0.0f, 0.0f); if (_2118 < ((scene_1_m0.wall.x * scene_1_m0.build.z) * 0.699999988079071044921875f)) { _2081 = _2125; return; } float2 _2130 = wallFrame(); Cell _2131 = voronoi(_2117, 0u, _2130); float _2132 = stress(_2118); float _2133 = smoothstep(0.5f, 0.800000011920928955078125f, _2132); if (!(_2133 > 0.0f)) { _2097 = _2118 < ((scene_1_m0.wall.x * 1.60000002384185791015625f) * 1.2999999523162841796875f); } else { _2097 = true; } if (_2097) { inner = voronoi(_2117, 1u, _2130); float _2152 = peelTime(inner.seed, inner.key); if (_2152 > 0.0f) { _2081 = _2125; return; } calm = 1.0f - smoothstep(-1.5f, 0.0f, _2152); } float _2160 = lerp(0.319999992847442626953125f, 3.2000000476837158203125f, pow(_2132, 1.2999999523162841796875f)) * scene_1_m0.view.w; float _2162 = plateSize(_2131.seed, 0u); float _2168 = stress(length(_2131.seed)) * loose(_2131.seed); float _2171 = cracked(_2118, _2131.key, _2131.other, _2162); inside = ((_2131.edge * scene_1_m0.view.z) - (_2160 * _2171)) + (((1.0f - _2171) * 8.0f) * scene_1_m0.view.w); top = plateTop(_2117, _2131.seed, _2131.key, _2168, _2162, calm); tint = rand(_2131.key, 6u); if (_2133 > 0.0f) { uint _2192 = inner.key ^ _2131.key; float _2195 = plateSize(inner.seed, 1u); float _2201 = cracked(_2118, inner.key, inner.other, _2195) * _2133; inside = min(inside, ((inner.edge * scene_1_m0.view.z) - ((_2160 * 0.550000011920928955078125f) * _2201)) + (((1.0f - _2201) * 8.0f) * scene_1_m0.view.w)); top += (_2133 * plateTop(_2117, inner.seed, _2192, _2168, _2195, calm)); tint = lerp(tint, rand(_2192, 6u), _2133 * 0.5f); } float _2227 = lerp(0.699999988079071044921875f, 5.5f, _2132 * _2132) * scene_1_m0.view.w; float _2230 = clamp(inside / _2227, 0.0f, 1.0f); float _2240 = 1.0f - smoothstep(-0.60000002384185791015625f, 0.60000002384185791015625f, inside); float _2250 = (scene_1_m0.albedo.w > 0.0f) ? plaster(_2117, _2130, scene_1_m0.view.z) : 0.5f; float _2256 = scene_1_m0.build.y * (1.0f - scene_1_m0.build.z); _2081 = float4(lerp((top - (_2227 * (1.0f - sqrt(max(1.0f - ((1.0f - _2230) * (1.0f - _2230)), 0.0f))))) + ((((_2250 - 0.5f) * scene_1_m0.albedo.w) * scene_1_m0.view.w) * (1.0f + ((3.0f * _2256) * exp(((-_2118) * _2118) / 0.0199999995529651641845703125f)))), -(((_2160 * 2.0f) + (2.0f * scene_1_m0.view.w)) * (0.4000000059604644775390625f + _2132)), _2240) - (((0.0500000007450580596923828125f * _2256) * exp(((-_2118) * _2118) / (0.01200000010430812835693359375f + (0.02999999932944774627685546875f * _2256)))) * scene_1_m0.view.z), _2240, tint + ((_2250 - 0.5f) * 0.0500000007450580596923828125f), 1.0f - (_2240 * smoothstep(0.75f, 1.0f, _2132))); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; frag_main(); SPIRV_Cross_Output stage_output; stage_output._2081 = _2081; return stage_output; } vs_piecemain¯[struct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Seed { float2 pos; uint key; }; struct Cell { float2 seed; uint key; float edge; uint other; }; struct VsOut { float4 position; }; struct Pose { int2 cell; int2 plate; float2 frame; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { float2 corners[12]; int count; }; struct PieceOut { float4 position; float2 at; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float4 look; float4 c0; float4 c1; float4 c2; float4 c3; float4 c4; float4 c5; int count; float2 frame; }; struct Hit { float t; float3 normal; bool face; float edge; float2 edgeNormal; }; struct PieceColor { float4 color; float depth; }; static const Seed _122 = { float2(0.0f, 0.0f), 0u }; static const float2 _208[9] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const uint _211[9] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u }; static const Cell _219 = { float2(0.0f, 0.0f), 0u, 0.0f, 0u }; static const float _821[4] = { 1000000000.0f, 1000000000.0f, 1000000000.0f, 1000000000.0f }; static const Pose _841 = { int2(0, 0), int2(0, 0), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, false }; static const int2 _844[4] = { int2(0, 0), int2(0, 0), int2(0, 0), int2(0, 0) }; static const float2 _1208[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _1210[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _2146[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Outline _1229 = { { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }, 0 }; static const float2 _1516[6] = { float2(0.0f, 0.0f), float2(1.0f, 0.0f), float2(0.0f, 1.0f), float2(0.0f, 1.0f), float2(1.0f, 0.0f), float2(1.0f, 1.0f) }; static const PieceOut _1519 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), 0, float2(0.0f, 0.0f) }; static const Hit _1750 = { 0.0f, float3(0.0f, 0.0f, 0.0f), false, 0.0f, float2(0.0f, 0.0f) }; static const float2 _1752[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float3 _1757[12] = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; cbuffer scene : register(b0) { Scene scene_1_m0 : packoffset(c0); }; static float4 gl_Position; static int gl_VertexIndex; static float2 at; static float3 center; static float3 seed; static float3 ex; static float3 ey; static float3 ez; static float4 look; static float4 c0; static float4 c1; static float4 c2; static float4 c3; static float4 c4; static float4 c5; static int count; static float2 frame; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 at : TEXCOORD0; nointerpolation float3 center : TEXCOORD1; nointerpolation float3 seed : TEXCOORD2; nointerpolation float3 ex : TEXCOORD3; nointerpolation float3 ey : TEXCOORD4; nointerpolation float3 ez : TEXCOORD5; nointerpolation float4 look : TEXCOORD6; nointerpolation float4 c0 : TEXCOORD7; nointerpolation float4 c1 : TEXCOORD8; nointerpolation float4 c2 : TEXCOORD9; nointerpolation float4 c3 : TEXCOORD10; nointerpolation float4 c4 : TEXCOORD11; nointerpolation float4 c5 : TEXCOORD12; nointerpolation int count : TEXCOORD13; nointerpolation float2 frame : TEXCOORD14; float4 gl_Position : SV_Position; }; uint naga_div(uint lhs, uint rhs) { return lhs / ((rhs == 0u) ? 1u : rhs); } uint naga_mod(uint lhs, uint rhs) { return lhs % ((rhs == 0u) ? 1u : rhs); } float2 wallFrame() { return scene_1_m0.frame.zw; } float density(uint level) { return (level == 1u) ? 1.5f : 1.0f; } int naga_mod(int lhs, int rhs) { int _101 = ((rhs == 0) || ((lhs == int(0x80000000)) && (rhs == (-1)))) ? 1 : rhs; return lhs - ((lhs / _101) * _101); } uint pcg(uint v) { uint _49 = (v * 747796405u) + 2891336453u; uint _54 = ((_49 >> ((_49 >> 28u) + 4u)) ^ _49) * 277803737u; return (_54 >> 22u) ^ _54; } float unit(uint h) { return float(h >> 8u) / 16777216.0f; } Seed seedAt(int2 c, uint level, float2 frame_1) { Seed s = _122; float _124 = density(level); float _131 = (scene_1_m0.wall.z * _124) / 6.283185482025146484375f; int _139 = int(clamp(round(scene_1_m0.wall.z * _124), -2147483648.0f, 2147483520.0f)); int _143 = int(clamp(round(1024.0f * _124), -2147483648.0f, 2147483520.0f)); uint _158 = pcg(uint(naga_mod(naga_mod(c.x, _143) + _143, _143)) + pcg(uint(naga_mod(naga_mod(c.y, _139) + _139, _139)) + (level * 5369127u))); float2 _169 = (float2(c) + (float2(0.5f, 0.5f) + ((float2(unit(_158), unit(pcg(_158))) - float2(0.5f, 0.5f)) * 0.800000011920928955078125f))) + (frame_1 * _124); float _174 = _169.y / _131; s.pos = float2(cos(_174), sin(_174)) * exp(_169.x / _131); s.key = _158; return s; } int naga_div(int lhs, int rhs) { return lhs / (((rhs == 0) || ((lhs == int(0x80000000)) && (rhs == (-1)))) ? 1 : rhs); } float plateSize(float2 seed_1, uint level) { return (length(seed_1) * 6.283185482025146484375f) / (scene_1_m0.wall.z * density(level)); } float rand(uint key, uint channel) { return unit(pcg(key + (channel * 2654435769u))); } float peelTime(float2 seed_1, uint key) { if (scene_1_m0.build.z < 0.00999999977648258209228515625f) { return -1000.0f; } return log((scene_1_m0.wall.x * lerp(1.12000000476837158203125f, 1.60000002384185791015625f, rand(key, 21u))) / max(length(seed_1), 9.9999997473787516355514526367188e-05f)) / 0.0419999994337558746337890625f; } float looseTime(uint key) { return log(lerp(1.12000000476837158203125f, 1.60000002384185791015625f, rand(key, 21u)) / lerp(0.85000002384185791015625f, 1.0499999523162841796875f, rand(key, 22u))) / 0.0419999994337558746337890625f; } float3 rotate(float3 v, float3 axis, float angle) { float _750 = cos(angle); return ((v * _750) + (cross(axis, v) * sin(angle))) + ((axis * dot(axis, v)) * (1.0f - _750)); } float3 randomAxis(uint key) { float _768 = (rand(key, 10u) * 2.0f) - 1.0f; float _770 = rand(key, 11u) * 6.283185482025146484375f; return float3(float2(cos(_770), sin(_770)) * sqrt(max(1.0f - (_768 * _768), 0.0f)), _768); } float3 roll(float3 v, float angle) { float _786 = cos(angle); float _787 = sin(angle); return float3((v.x * _786) - (v.y * _787), (v.x * _787) + (v.y * _786), v.z); } float stress(float r) { return clamp(exp((-(r - (scene_1_m0.wall.x * scene_1_m0.build.z))) / scene_1_m0.wall.y), 0.0f, 1.0f) * scene_1_m0.build.y; } Pose pose(uint n) { bool _860 = false; int i = 0; Pose o = _841; bool gone = false; float d = 0.0f; int2 near[4] = _844; bool _858 = false; int2 at_1 = int2(0, 0); float far[4] = _821; uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); uint _868 = uint(clamp(round(scene_1_m0.wall.z * 1.5f), 0.0f, 4294967040.0f)); uint _869 = naga_mod(n, 4u); uint _870 = naga_div(n, 4u); float2 _871 = wallFrame(); float _874 = scene_1_m0.wall.z / 6.283185482025146484375f; int2 _892 = int2((int(clamp(floor(((log(scene_1_m0.wall.x * 1.60000002384185791015625f) * _874) - _871.x) * 1.5f), -2147483648.0f, 2147483520.0f)) + 2) - int(naga_div(_870, _868)), int(naga_mod(_870, _868))); Seed _893 = seedAt(_892, 1u, _871); int2 _908 = int2(clamp(floor((float2(log(max(length(_893.pos), 9.9999997473787516355514526367188e-05f)), atan2(_893.pos.y, _893.pos.x)) * _874) - _871), float2(-2147483648.0f, -2147483648.0f), float2(2147483520.0f, 2147483520.0f))); int2 _909[4] = { _908, _908, _908, _908 }; near = _909; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < 9)) { break; } int2 _938 = _908 + int2(naga_mod(i, 3) - 1, naga_div(i, 3) - 1); d = distance(seedAt(_938, 0u, _871).pos, _893.pos); at_1 = _938; int k = 0; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(k < 4)) { break; } if (d < far[min(uint(k), 3u)]) { float _975 = far[min(uint(k), 3u)]; int2 _979 = near[min(uint(k), 3u)]; far[min(uint(k), 3u)] = d; near[min(uint(k), 3u)] = at_1; d = _975; at_1 = _979; } k++; continue; } i++; continue; } o.plate = near[min(_869, 3u)]; float _997 = plateSize(_893.pos, 1u); gone = far[min(_869, 3u)] > (far[0u] + (2.599999904632568359375f * _997)); float _1008 = peelTime(_893.pos, _893.key); float _1010 = looseTime(_893.key); float _1012 = max(_1008 - _1010, 0.0f); float _1014 = (_1012 * 0.0419999994337558746337890625f) * _874; o.frame = _871 + float2(_1014, _1014 * scene_1_m0.shard.w); o.cell = _892; Seed _1026 = seedAt(o.plate, 0u, o.frame); uint _1029 = _893.key ^ _1026.key; Seed _1032 = seedAt(_892, 1u, o.frame); float3 _1034 = float3(_1032.pos, 0.0f); float2 _1036 = normalize(_1034.xy); float3 _1040 = float3(-_1036.y, _1036.x, 0.0f); float3 _1045 = float3(_1034.xy + ((_1036 * 0.5f) * _997), 0.0f); float _1047 = clamp(_1008 / _1010, 0.0f, 1.0f); float _1050 = lerp(0.5f, 1.10000002384185791015625f, rand(_893.key, 23u)); float _1052 = _1050 * pow(_1047, 2.2000000476837158203125f); float _1056 = ((_1050 * 2.2000000476837158203125f) * pow(_1047, 1.2000000476837158203125f)) / _1010; float3 _1059 = _1045 + rotate(_1034 - _1045, _1040, _1052); float3 _1065 = (_1040 * _1056) + (randomAxis(_1029) * lerp(0.800000011920928955078125f, 2.599999904632568359375f, rand(_1029, 12u))); float _1066 = length(_1065); float _1067 = max(_1066, 9.9999997473787516355514526367188e-06f); float3 _1069 = _1065 / float3(_1067, _1067, _1067); float _1092 = exp((-0.0419999994337558746337890625f) * _1012); float _1096 = ((-0.0419999994337558746337890625f) * _1012) * scene_1_m0.shard.w; float _1097 = _1066 * _1012; o.center = roll((_1059 + ((cross(_1040 * _1056, _1059 - _1045) + float3(normalize((_1034.xy - _1026.pos) + float2(9.9999997473787516355514526367188e-06f, 0.0f)) * lerp(0.00999999977648258209228515625f, 0.0500000007450580596923828125f, rand(_1029, 27u)), lerp(0.039999999105930328369140625f, 0.119999997317790985107421875f, rand(_1029, 26u)))) * _1012)) + float3(0.0f, 0.0f, (0.1500000059604644775390625f * _1012) * _1012), _1096) * _1092; o.seed = _1034; o.ex = roll(rotate(rotate(float3(1.0f, 0.0f, 0.0f), _1040, _1052), _1069, _1097), _1096); o.ey = roll(rotate(rotate(float3(0.0f, 1.0f, 0.0f), _1040, _1052), _1069, _1097), _1096); o.ez = roll(rotate(rotate(float3(0.0f, 0.0f, 1.0f), _1040, _1052), _1069, _1097), _1096); o.scale = _1092; o.thick = 0.1599999964237213134765625f * plateSize(_1026.pos, 0u); o.reach = _997; o.stress = stress(length(_1026.pos) * _1092); o.tint = lerp(rand(_1026.key, 6u), rand(_1029, 6u), smoothstep(0.5f, 0.800000011920928955078125f, o.stress) * 0.5f); if (!gone) { _858 = _1008 <= 0.0f; } else { _858 = true; } if (!_858) { _860 = _1012 > 8.0f; } else { _860 = true; } o.gone = _860; return o; } Outline outline(Pose o) { int j = 0; bool _1223 = false; int m = 0; int w = 0; float2 poly[24] = _1208; float2 toward = float2(0.0f, 0.0f); float2 next[24] = _1210; Outline o2 = _1229; bool _1221 = false; float limit = 0.0f; int count_1 = 4; uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); uint2 loop_bound_2 = uint2(4294967295u, 4294967295u); uint2 loop_bound_3 = uint2(4294967295u, 4294967295u); float _1240 = (lerp(0.319999992847442626953125f, 3.2000000476837158203125f, pow(o.stress, 1.2999999523162841796875f)) * scene_1_m0.view.w) / scene_1_m0.view.z; float _1244 = (_1240 * 0.550000011920928955078125f) * smoothstep(0.5f, 0.800000011920928955078125f, o.stress); float2 _1250 = seedAt(o.plate, 0u, o.frame).pos; float _1252 = o.reach * 1.5f; poly[0u] = o.seed.xy + float2(-_1252, -_1252); poly[1u] = o.seed.xy + float2(_1252, -_1252); poly[2u] = o.seed.xy + float2(_1252, _1252); poly[3u] = o.seed.xy + float2(-_1252, _1252); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(w < 16)) { break; } int _1291 = naga_mod(w, 8); int _1294 = (_1291 >= 4) ? (_1291 + 1) : _1291; int2 _1299 = int2(naga_mod(_1294, 3) - 1, naga_div(_1294, 3) - 1); toward = float2(0.0f, 0.0f); limit = 0.0f; if (w < 8) { float2 _1309 = seedAt(o.cell + _1299, 1u, o.frame).pos; toward = normalize(_1309 - o.seed.xy); limit = dot((o.seed.xy + _1309) * 0.5f, toward) - _1244; } else { float2 _1321 = seedAt(o.plate + _1299, 0u, o.frame).pos; toward = normalize(_1321 - _1250); limit = dot((_1250 + _1321) * 0.5f, toward) - _1240; } m = 0; int j_2 = 0; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(j_2 < count_1)) { break; } uint _1352 = min(uint(j_2), 23u); uint _1359 = min(uint(naga_mod(j_2 + 1, count_1)), 23u); float _1365 = dot(poly[_1352], toward) - limit; float _1369 = dot(poly[_1359], toward) - limit; if (_1365 <= 0.0f) { _1221 = m < 24; } else { _1221 = false; } if (_1221) { next[min(uint(m), 23u)] = poly[_1352]; m++; } if ((_1365 <= 0.0f) != (_1369 <= 0.0f)) { _1223 = m < 24; } else { _1223 = false; } if (_1223) { next[min(uint(m), 23u)] = poly[_1352] + ((poly[_1359] - poly[_1352]) * (_1365 / (_1365 - _1369))); m++; } j_2++; continue; } count_1 = m; int j_1 = 0; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_2.x, uint2(0u, 0u).y == loop_bound_2.y))) { break; } loop_bound_2 -= uint2(uint(loop_bound_2.y == 0u), 1u); if (!(j_1 < m)) { break; } poly[min(uint(j_1), 23u)] = next[min(uint(j_1), 23u)]; j_1++; continue; } if (count_1 < 3) { break; } w++; continue; } o2.count = min(count_1, 12); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_3.x, uint2(0u, 0u).y == loop_bound_3.y))) { break; } loop_bound_3 -= uint2(uint(loop_bound_3.y == 0u), 1u); if (!(j < o2.count)) { break; } o2.corners[min(uint(j), 11u)] = poly[min(uint(j), 23u)]; j++; continue; } return o2; } float3 placed(Pose o, float3 x) { float3 _1161 = (x - o.seed) * o.scale; return ((o.center + (o.ex * _1161.x)) + (o.ey * _1161.y)) + (o.ez * _1161.z); } float4 toClip(float2 px) { return float4(((px.x / scene_1_m0.view.x) * 2.0f) - 1.0f, 1.0f - ((px.y / scene_1_m0.view.y) * 2.0f), 0.5f, 1.0f); } PieceOut pieceOut(uint index, bool shadow) { bool _1526 = false; int behind = 0; PieceOut p = _1519; bool _1528 = false; int i = 0; float2 lo = float2(1000000000.0f, 1000000000.0f); bool _1530 = false; float2 at_1 = float2(0.0f, 0.0f); float2 hi = float2(-1000000000.0f, -1000000000.0f); uint2 loop_bound = uint2(4294967295u, 4294967295u); Pose _1536 = pose(naga_div(index, 6u)); if (_1536.gone) { p.position = float4(2.0f, 2.0f, 2.0f, 1.0f); return p; } Outline _1543 = outline(_1536); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < (_1543.count * 2))) { break; } float2 _1575[12] = _1543.corners; float3 _1586 = placed(_1536, float3(_1575[min(uint(naga_div(i, 2)), 11u)], (-_1536.thick) * float(naga_mod(i, 2)))); at_1 = _1586.xy - (scene_1_m0.light.xyz.xy * (_1586.z / max(scene_1_m0.light.xyz.z, 0.0500000007450580596923828125f))); if (!shadow) { if (_1586.z > (scene_1_m0.camera.x * 0.999000012874603271484375f)) { behind++; int _1616 = i; i = _1616 + 1; continue; } at_1 = _1586.xy * (scene_1_m0.camera.x / (scene_1_m0.camera.x - _1586.z)); } lo = min(lo, at_1); hi = max(hi, at_1); int _1616 = i; i = _1616 + 1; continue; } float2 _1625 = (-scene_1_m0.frame.xy) / float2(scene_1_m0.view.z, scene_1_m0.view.z); float2 _1636 = (scene_1_m0.view.xy - scene_1_m0.frame.xy) / float2(scene_1_m0.view.z, scene_1_m0.view.z); if (behind > 0) { lo = _1625; hi = _1636; } if (!(_1543.count < 3)) { _1526 = behind == (_1543.count * 2); } else { _1526 = true; } if (!_1526) { _1528 = any(bool2(hi.x < _1625.x, hi.y < _1625.y)); } else { _1528 = true; } if (!_1528) { _1530 = any(bool2(lo.x > _1636.x, lo.y > _1636.y)); } else { _1530 = true; } float2 _1674 = lerp(lo, hi, _1516[min(naga_mod(index, 6u), 5u)]); float4 _1682 = toClip(scene_1_m0.frame.xy + (_1674 * scene_1_m0.view.z)); bool4 _1685 = bool4(_1530, _1530, _1530, _1530); p.position = float4(_1685.x ? float4(2.0f, 2.0f, 2.0f, 1.0f).x : _1682.x, _1685.y ? float4(2.0f, 2.0f, 2.0f, 1.0f).y : _1682.y, _1685.z ? float4(2.0f, 2.0f, 2.0f, 1.0f).z : _1682.z, _1685.w ? float4(2.0f, 2.0f, 2.0f, 1.0f).w : _1682.w); p.at = _1674; p.center = _1536.center; p.seed = _1536.seed; p.ex = _1536.ex; p.ey = _1536.ey; p.ez = _1536.ez; p.look = float4(_1536.thick, _1536.stress, _1536.tint, _1536.scale); float2 _1704[12] = _1543.corners; p.c0 = float4(_1704[0], _1704[1]); p.c1 = float4(_1704[2], _1704[3]); p.c2 = float4(_1704[4], _1704[5]); p.c3 = float4(_1704[6], _1704[7]); p.c4 = float4(_1704[8], _1704[9]); p.c5 = float4(_1704[10], _1704[11]); p.count = _1543.count; p.frame = _1536.frame; return p; } void vert_main() { PieceOut _2104 = pieceOut(uint(gl_VertexIndex), false); gl_Position = _2104.position; at = _2104.at; center = _2104.center; seed = _2104.seed; ex = _2104.ex; ey = _2104.ey; ez = _2104.ez; look = _2104.look; c0 = _2104.c0; c1 = _2104.c1; c2 = _2104.c2; c3 = _2104.c3; c4 = _2104.c4; c5 = _2104.c5; count = _2104.count; frame = _2104.frame; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.at = at; stage_output.center = center; stage_output.seed = seed; stage_output.ex = ex; stage_output.ey = ey; stage_output.ez = ez; stage_output.look = look; stage_output.c0 = c0; stage_output.c1 = c1; stage_output.c2 = c2; stage_output.c3 = c3; stage_output.c4 = c4; stage_output.c5 = c5; stage_output.count = count; stage_output.frame = frame; return stage_output; } vs_piece_shadowmain®[struct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Seed { float2 pos; uint key; }; struct Cell { float2 seed; uint key; float edge; uint other; }; struct VsOut { float4 position; }; struct Pose { int2 cell; int2 plate; float2 frame; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { float2 corners[12]; int count; }; struct PieceOut { float4 position; float2 at; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float4 look; float4 c0; float4 c1; float4 c2; float4 c3; float4 c4; float4 c5; int count; float2 frame; }; struct Hit { float t; float3 normal; bool face; float edge; float2 edgeNormal; }; struct PieceColor { float4 color; float depth; }; static const Seed _122 = { float2(0.0f, 0.0f), 0u }; static const float2 _208[9] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const uint _211[9] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u }; static const Cell _219 = { float2(0.0f, 0.0f), 0u, 0.0f, 0u }; static const float _821[4] = { 1000000000.0f, 1000000000.0f, 1000000000.0f, 1000000000.0f }; static const Pose _841 = { int2(0, 0), int2(0, 0), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, false }; static const int2 _844[4] = { int2(0, 0), int2(0, 0), int2(0, 0), int2(0, 0) }; static const float2 _1208[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _1210[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _2146[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Outline _1229 = { { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }, 0 }; static const float2 _1516[6] = { float2(0.0f, 0.0f), float2(1.0f, 0.0f), float2(0.0f, 1.0f), float2(0.0f, 1.0f), float2(1.0f, 0.0f), float2(1.0f, 1.0f) }; static const PieceOut _1519 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), 0, float2(0.0f, 0.0f) }; static const Hit _1750 = { 0.0f, float3(0.0f, 0.0f, 0.0f), false, 0.0f, float2(0.0f, 0.0f) }; static const float2 _1752[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float3 _1757[12] = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; cbuffer scene : register(b0) { Scene scene_1_m0 : packoffset(c0); }; static float4 gl_Position; static int gl_VertexIndex; static float2 at; static float3 center; static float3 seed; static float3 ex; static float3 ey; static float3 ez; static float4 look; static float4 c0; static float4 c1; static float4 c2; static float4 c3; static float4 c4; static float4 c5; static int count; static float2 frame; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 at : TEXCOORD0; nointerpolation float3 center : TEXCOORD1; nointerpolation float3 seed : TEXCOORD2; nointerpolation float3 ex : TEXCOORD3; nointerpolation float3 ey : TEXCOORD4; nointerpolation float3 ez : TEXCOORD5; nointerpolation float4 look : TEXCOORD6; nointerpolation float4 c0 : TEXCOORD7; nointerpolation float4 c1 : TEXCOORD8; nointerpolation float4 c2 : TEXCOORD9; nointerpolation float4 c3 : TEXCOORD10; nointerpolation float4 c4 : TEXCOORD11; nointerpolation float4 c5 : TEXCOORD12; nointerpolation int count : TEXCOORD13; nointerpolation float2 frame : TEXCOORD14; float4 gl_Position : SV_Position; }; uint naga_div(uint lhs, uint rhs) { return lhs / ((rhs == 0u) ? 1u : rhs); } uint naga_mod(uint lhs, uint rhs) { return lhs % ((rhs == 0u) ? 1u : rhs); } float2 wallFrame() { return scene_1_m0.frame.zw; } float density(uint level) { return (level == 1u) ? 1.5f : 1.0f; } int naga_mod(int lhs, int rhs) { int _101 = ((rhs == 0) || ((lhs == int(0x80000000)) && (rhs == (-1)))) ? 1 : rhs; return lhs - ((lhs / _101) * _101); } uint pcg(uint v) { uint _49 = (v * 747796405u) + 2891336453u; uint _54 = ((_49 >> ((_49 >> 28u) + 4u)) ^ _49) * 277803737u; return (_54 >> 22u) ^ _54; } float unit(uint h) { return float(h >> 8u) / 16777216.0f; } Seed seedAt(int2 c, uint level, float2 frame_1) { Seed s = _122; float _124 = density(level); float _131 = (scene_1_m0.wall.z * _124) / 6.283185482025146484375f; int _139 = int(clamp(round(scene_1_m0.wall.z * _124), -2147483648.0f, 2147483520.0f)); int _143 = int(clamp(round(1024.0f * _124), -2147483648.0f, 2147483520.0f)); uint _158 = pcg(uint(naga_mod(naga_mod(c.x, _143) + _143, _143)) + pcg(uint(naga_mod(naga_mod(c.y, _139) + _139, _139)) + (level * 5369127u))); float2 _169 = (float2(c) + (float2(0.5f, 0.5f) + ((float2(unit(_158), unit(pcg(_158))) - float2(0.5f, 0.5f)) * 0.800000011920928955078125f))) + (frame_1 * _124); float _174 = _169.y / _131; s.pos = float2(cos(_174), sin(_174)) * exp(_169.x / _131); s.key = _158; return s; } int naga_div(int lhs, int rhs) { return lhs / (((rhs == 0) || ((lhs == int(0x80000000)) && (rhs == (-1)))) ? 1 : rhs); } float plateSize(float2 seed_1, uint level) { return (length(seed_1) * 6.283185482025146484375f) / (scene_1_m0.wall.z * density(level)); } float rand(uint key, uint channel) { return unit(pcg(key + (channel * 2654435769u))); } float peelTime(float2 seed_1, uint key) { if (scene_1_m0.build.z < 0.00999999977648258209228515625f) { return -1000.0f; } return log((scene_1_m0.wall.x * lerp(1.12000000476837158203125f, 1.60000002384185791015625f, rand(key, 21u))) / max(length(seed_1), 9.9999997473787516355514526367188e-05f)) / 0.0419999994337558746337890625f; } float looseTime(uint key) { return log(lerp(1.12000000476837158203125f, 1.60000002384185791015625f, rand(key, 21u)) / lerp(0.85000002384185791015625f, 1.0499999523162841796875f, rand(key, 22u))) / 0.0419999994337558746337890625f; } float3 rotate(float3 v, float3 axis, float angle) { float _750 = cos(angle); return ((v * _750) + (cross(axis, v) * sin(angle))) + ((axis * dot(axis, v)) * (1.0f - _750)); } float3 randomAxis(uint key) { float _768 = (rand(key, 10u) * 2.0f) - 1.0f; float _770 = rand(key, 11u) * 6.283185482025146484375f; return float3(float2(cos(_770), sin(_770)) * sqrt(max(1.0f - (_768 * _768), 0.0f)), _768); } float3 roll(float3 v, float angle) { float _786 = cos(angle); float _787 = sin(angle); return float3((v.x * _786) - (v.y * _787), (v.x * _787) + (v.y * _786), v.z); } float stress(float r) { return clamp(exp((-(r - (scene_1_m0.wall.x * scene_1_m0.build.z))) / scene_1_m0.wall.y), 0.0f, 1.0f) * scene_1_m0.build.y; } Pose pose(uint n) { bool _860 = false; int i = 0; Pose o = _841; bool gone = false; float d = 0.0f; int2 near[4] = _844; bool _858 = false; int2 at_1 = int2(0, 0); float far[4] = _821; uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); uint _868 = uint(clamp(round(scene_1_m0.wall.z * 1.5f), 0.0f, 4294967040.0f)); uint _869 = naga_mod(n, 4u); uint _870 = naga_div(n, 4u); float2 _871 = wallFrame(); float _874 = scene_1_m0.wall.z / 6.283185482025146484375f; int2 _892 = int2((int(clamp(floor(((log(scene_1_m0.wall.x * 1.60000002384185791015625f) * _874) - _871.x) * 1.5f), -2147483648.0f, 2147483520.0f)) + 2) - int(naga_div(_870, _868)), int(naga_mod(_870, _868))); Seed _893 = seedAt(_892, 1u, _871); int2 _908 = int2(clamp(floor((float2(log(max(length(_893.pos), 9.9999997473787516355514526367188e-05f)), atan2(_893.pos.y, _893.pos.x)) * _874) - _871), float2(-2147483648.0f, -2147483648.0f), float2(2147483520.0f, 2147483520.0f))); int2 _909[4] = { _908, _908, _908, _908 }; near = _909; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < 9)) { break; } int2 _938 = _908 + int2(naga_mod(i, 3) - 1, naga_div(i, 3) - 1); d = distance(seedAt(_938, 0u, _871).pos, _893.pos); at_1 = _938; int k = 0; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(k < 4)) { break; } if (d < far[min(uint(k), 3u)]) { float _975 = far[min(uint(k), 3u)]; int2 _979 = near[min(uint(k), 3u)]; far[min(uint(k), 3u)] = d; near[min(uint(k), 3u)] = at_1; d = _975; at_1 = _979; } k++; continue; } i++; continue; } o.plate = near[min(_869, 3u)]; float _997 = plateSize(_893.pos, 1u); gone = far[min(_869, 3u)] > (far[0u] + (2.599999904632568359375f * _997)); float _1008 = peelTime(_893.pos, _893.key); float _1010 = looseTime(_893.key); float _1012 = max(_1008 - _1010, 0.0f); float _1014 = (_1012 * 0.0419999994337558746337890625f) * _874; o.frame = _871 + float2(_1014, _1014 * scene_1_m0.shard.w); o.cell = _892; Seed _1026 = seedAt(o.plate, 0u, o.frame); uint _1029 = _893.key ^ _1026.key; Seed _1032 = seedAt(_892, 1u, o.frame); float3 _1034 = float3(_1032.pos, 0.0f); float2 _1036 = normalize(_1034.xy); float3 _1040 = float3(-_1036.y, _1036.x, 0.0f); float3 _1045 = float3(_1034.xy + ((_1036 * 0.5f) * _997), 0.0f); float _1047 = clamp(_1008 / _1010, 0.0f, 1.0f); float _1050 = lerp(0.5f, 1.10000002384185791015625f, rand(_893.key, 23u)); float _1052 = _1050 * pow(_1047, 2.2000000476837158203125f); float _1056 = ((_1050 * 2.2000000476837158203125f) * pow(_1047, 1.2000000476837158203125f)) / _1010; float3 _1059 = _1045 + rotate(_1034 - _1045, _1040, _1052); float3 _1065 = (_1040 * _1056) + (randomAxis(_1029) * lerp(0.800000011920928955078125f, 2.599999904632568359375f, rand(_1029, 12u))); float _1066 = length(_1065); float _1067 = max(_1066, 9.9999997473787516355514526367188e-06f); float3 _1069 = _1065 / float3(_1067, _1067, _1067); float _1092 = exp((-0.0419999994337558746337890625f) * _1012); float _1096 = ((-0.0419999994337558746337890625f) * _1012) * scene_1_m0.shard.w; float _1097 = _1066 * _1012; o.center = roll((_1059 + ((cross(_1040 * _1056, _1059 - _1045) + float3(normalize((_1034.xy - _1026.pos) + float2(9.9999997473787516355514526367188e-06f, 0.0f)) * lerp(0.00999999977648258209228515625f, 0.0500000007450580596923828125f, rand(_1029, 27u)), lerp(0.039999999105930328369140625f, 0.119999997317790985107421875f, rand(_1029, 26u)))) * _1012)) + float3(0.0f, 0.0f, (0.1500000059604644775390625f * _1012) * _1012), _1096) * _1092; o.seed = _1034; o.ex = roll(rotate(rotate(float3(1.0f, 0.0f, 0.0f), _1040, _1052), _1069, _1097), _1096); o.ey = roll(rotate(rotate(float3(0.0f, 1.0f, 0.0f), _1040, _1052), _1069, _1097), _1096); o.ez = roll(rotate(rotate(float3(0.0f, 0.0f, 1.0f), _1040, _1052), _1069, _1097), _1096); o.scale = _1092; o.thick = 0.1599999964237213134765625f * plateSize(_1026.pos, 0u); o.reach = _997; o.stress = stress(length(_1026.pos) * _1092); o.tint = lerp(rand(_1026.key, 6u), rand(_1029, 6u), smoothstep(0.5f, 0.800000011920928955078125f, o.stress) * 0.5f); if (!gone) { _858 = _1008 <= 0.0f; } else { _858 = true; } if (!_858) { _860 = _1012 > 8.0f; } else { _860 = true; } o.gone = _860; return o; } Outline outline(Pose o) { int j = 0; bool _1223 = false; int m = 0; int w = 0; float2 poly[24] = _1208; float2 toward = float2(0.0f, 0.0f); float2 next[24] = _1210; Outline o2 = _1229; bool _1221 = false; float limit = 0.0f; int count_1 = 4; uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); uint2 loop_bound_2 = uint2(4294967295u, 4294967295u); uint2 loop_bound_3 = uint2(4294967295u, 4294967295u); float _1240 = (lerp(0.319999992847442626953125f, 3.2000000476837158203125f, pow(o.stress, 1.2999999523162841796875f)) * scene_1_m0.view.w) / scene_1_m0.view.z; float _1244 = (_1240 * 0.550000011920928955078125f) * smoothstep(0.5f, 0.800000011920928955078125f, o.stress); float2 _1250 = seedAt(o.plate, 0u, o.frame).pos; float _1252 = o.reach * 1.5f; poly[0u] = o.seed.xy + float2(-_1252, -_1252); poly[1u] = o.seed.xy + float2(_1252, -_1252); poly[2u] = o.seed.xy + float2(_1252, _1252); poly[3u] = o.seed.xy + float2(-_1252, _1252); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(w < 16)) { break; } int _1291 = naga_mod(w, 8); int _1294 = (_1291 >= 4) ? (_1291 + 1) : _1291; int2 _1299 = int2(naga_mod(_1294, 3) - 1, naga_div(_1294, 3) - 1); toward = float2(0.0f, 0.0f); limit = 0.0f; if (w < 8) { float2 _1309 = seedAt(o.cell + _1299, 1u, o.frame).pos; toward = normalize(_1309 - o.seed.xy); limit = dot((o.seed.xy + _1309) * 0.5f, toward) - _1244; } else { float2 _1321 = seedAt(o.plate + _1299, 0u, o.frame).pos; toward = normalize(_1321 - _1250); limit = dot((_1250 + _1321) * 0.5f, toward) - _1240; } m = 0; int j_2 = 0; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(j_2 < count_1)) { break; } uint _1352 = min(uint(j_2), 23u); uint _1359 = min(uint(naga_mod(j_2 + 1, count_1)), 23u); float _1365 = dot(poly[_1352], toward) - limit; float _1369 = dot(poly[_1359], toward) - limit; if (_1365 <= 0.0f) { _1221 = m < 24; } else { _1221 = false; } if (_1221) { next[min(uint(m), 23u)] = poly[_1352]; m++; } if ((_1365 <= 0.0f) != (_1369 <= 0.0f)) { _1223 = m < 24; } else { _1223 = false; } if (_1223) { next[min(uint(m), 23u)] = poly[_1352] + ((poly[_1359] - poly[_1352]) * (_1365 / (_1365 - _1369))); m++; } j_2++; continue; } count_1 = m; int j_1 = 0; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_2.x, uint2(0u, 0u).y == loop_bound_2.y))) { break; } loop_bound_2 -= uint2(uint(loop_bound_2.y == 0u), 1u); if (!(j_1 < m)) { break; } poly[min(uint(j_1), 23u)] = next[min(uint(j_1), 23u)]; j_1++; continue; } if (count_1 < 3) { break; } w++; continue; } o2.count = min(count_1, 12); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_3.x, uint2(0u, 0u).y == loop_bound_3.y))) { break; } loop_bound_3 -= uint2(uint(loop_bound_3.y == 0u), 1u); if (!(j < o2.count)) { break; } o2.corners[min(uint(j), 11u)] = poly[min(uint(j), 23u)]; j++; continue; } return o2; } float3 placed(Pose o, float3 x) { float3 _1161 = (x - o.seed) * o.scale; return ((o.center + (o.ex * _1161.x)) + (o.ey * _1161.y)) + (o.ez * _1161.z); } float4 toClip(float2 px) { return float4(((px.x / scene_1_m0.view.x) * 2.0f) - 1.0f, 1.0f - ((px.y / scene_1_m0.view.y) * 2.0f), 0.5f, 1.0f); } PieceOut pieceOut(uint index, bool shadow) { bool _1526 = false; int behind = 0; PieceOut p = _1519; bool _1528 = false; int i = 0; float2 lo = float2(1000000000.0f, 1000000000.0f); bool _1530 = false; float2 at_1 = float2(0.0f, 0.0f); float2 hi = float2(-1000000000.0f, -1000000000.0f); uint2 loop_bound = uint2(4294967295u, 4294967295u); Pose _1536 = pose(naga_div(index, 6u)); if (_1536.gone) { p.position = float4(2.0f, 2.0f, 2.0f, 1.0f); return p; } Outline _1543 = outline(_1536); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < (_1543.count * 2))) { break; } float2 _1575[12] = _1543.corners; float3 _1586 = placed(_1536, float3(_1575[min(uint(naga_div(i, 2)), 11u)], (-_1536.thick) * float(naga_mod(i, 2)))); at_1 = _1586.xy - (scene_1_m0.light.xyz.xy * (_1586.z / max(scene_1_m0.light.xyz.z, 0.0500000007450580596923828125f))); if (!shadow) { if (_1586.z > (scene_1_m0.camera.x * 0.999000012874603271484375f)) { behind++; int _1616 = i; i = _1616 + 1; continue; } at_1 = _1586.xy * (scene_1_m0.camera.x / (scene_1_m0.camera.x - _1586.z)); } lo = min(lo, at_1); hi = max(hi, at_1); int _1616 = i; i = _1616 + 1; continue; } float2 _1625 = (-scene_1_m0.frame.xy) / float2(scene_1_m0.view.z, scene_1_m0.view.z); float2 _1636 = (scene_1_m0.view.xy - scene_1_m0.frame.xy) / float2(scene_1_m0.view.z, scene_1_m0.view.z); if (behind > 0) { lo = _1625; hi = _1636; } if (!(_1543.count < 3)) { _1526 = behind == (_1543.count * 2); } else { _1526 = true; } if (!_1526) { _1528 = any(bool2(hi.x < _1625.x, hi.y < _1625.y)); } else { _1528 = true; } if (!_1528) { _1530 = any(bool2(lo.x > _1636.x, lo.y > _1636.y)); } else { _1530 = true; } float2 _1674 = lerp(lo, hi, _1516[min(naga_mod(index, 6u), 5u)]); float4 _1682 = toClip(scene_1_m0.frame.xy + (_1674 * scene_1_m0.view.z)); bool4 _1685 = bool4(_1530, _1530, _1530, _1530); p.position = float4(_1685.x ? float4(2.0f, 2.0f, 2.0f, 1.0f).x : _1682.x, _1685.y ? float4(2.0f, 2.0f, 2.0f, 1.0f).y : _1682.y, _1685.z ? float4(2.0f, 2.0f, 2.0f, 1.0f).z : _1682.z, _1685.w ? float4(2.0f, 2.0f, 2.0f, 1.0f).w : _1682.w); p.at = _1674; p.center = _1536.center; p.seed = _1536.seed; p.ex = _1536.ex; p.ey = _1536.ey; p.ez = _1536.ez; p.look = float4(_1536.thick, _1536.stress, _1536.tint, _1536.scale); float2 _1704[12] = _1543.corners; p.c0 = float4(_1704[0], _1704[1]); p.c1 = float4(_1704[2], _1704[3]); p.c2 = float4(_1704[4], _1704[5]); p.c3 = float4(_1704[6], _1704[7]); p.c4 = float4(_1704[8], _1704[9]); p.c5 = float4(_1704[10], _1704[11]); p.count = _1543.count; p.frame = _1536.frame; return p; } void vert_main() { PieceOut _2104 = pieceOut(uint(gl_VertexIndex), true); gl_Position = _2104.position; at = _2104.at; center = _2104.center; seed = _2104.seed; ex = _2104.ex; ey = _2104.ey; ez = _2104.ez; look = _2104.look; c0 = _2104.c0; c1 = _2104.c1; c2 = _2104.c2; c3 = _2104.c3; c4 = _2104.c4; c5 = _2104.c5; count = _2104.count; frame = _2104.frame; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.at = at; stage_output.center = center; stage_output.seed = seed; stage_output.ex = ex; stage_output.ey = ey; stage_output.ez = ez; stage_output.look = look; stage_output.c0 = c0; stage_output.c1 = c1; stage_output.c2 = c2; stage_output.c3 = c3; stage_output.c4 = c4; stage_output.c5 = c5; stage_output.count = count; stage_output.frame = frame; return stage_output; } fs_piecemainAstruct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Seed { float2 pos; uint key; }; struct Cell { float2 seed; uint key; float edge; uint other; }; struct VsOut { float4 position; }; struct Pose { int2 cell; int2 plate; float2 frame; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { float2 corners[12]; int count; }; struct PieceOut { float4 position; float2 at; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float4 look; float4 c0; float4 c1; float4 c2; float4 c3; float4 c4; float4 c5; int count; float2 frame; }; struct Hit { float t; float3 normal; bool face; float edge; float2 edgeNormal; }; struct PieceColor { float4 color; float depth; }; static const Seed _122 = { float2(0.0f, 0.0f), 0u }; static const float2 _208[9] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const uint _211[9] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u }; static const Cell _219 = { float2(0.0f, 0.0f), 0u, 0.0f, 0u }; static const float _821[4] = { 1000000000.0f, 1000000000.0f, 1000000000.0f, 1000000000.0f }; static const Pose _841 = { int2(0, 0), int2(0, 0), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, false }; static const int2 _844[4] = { int2(0, 0), int2(0, 0), int2(0, 0), int2(0, 0) }; static const float2 _1208[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _1210[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _2325[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Outline _1229 = { { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }, 0 }; static const float2 _1516[6] = { float2(0.0f, 0.0f), float2(1.0f, 0.0f), float2(0.0f, 1.0f), float2(0.0f, 1.0f), float2(1.0f, 0.0f), float2(1.0f, 1.0f) }; static const PieceOut _1519 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), 0, float2(0.0f, 0.0f) }; static const Hit _1750 = { 0.0f, float3(0.0f, 0.0f, 0.0f), false, 0.0f, float2(0.0f, 0.0f) }; static const float2 _1752[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float3 _1757[12] = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; static const PieceColor _2140 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; cbuffer scene : register(b0) { Scene scene_1_m0 : packoffset(c0); }; static float4 gl_FragCoord; static float gl_FragDepth; static float2 at; static float3 center; static float3 seed; static float3 ex; static float3 ey; static float3 ez; static float4 look; static float4 c0; static float4 c1; static float4 c2; static float4 c3; static float4 c4; static float4 c5; static int count; static float2 frame; static float4 color; struct SPIRV_Cross_Input { float2 at : TEXCOORD0; nointerpolation float3 center : TEXCOORD1; nointerpolation float3 seed : TEXCOORD2; nointerpolation float3 ex : TEXCOORD3; nointerpolation float3 ey : TEXCOORD4; nointerpolation float3 ez : TEXCOORD5; nointerpolation float4 look : TEXCOORD6; nointerpolation float4 c0 : TEXCOORD7; nointerpolation float4 c1 : TEXCOORD8; nointerpolation float4 c2 : TEXCOORD9; nointerpolation float4 c3 : TEXCOORD10; nointerpolation float4 c4 : TEXCOORD11; nointerpolation float4 c5 : TEXCOORD12; nointerpolation int count : TEXCOORD13; nointerpolation float2 frame : TEXCOORD14; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 color : SV_Target0; float gl_FragDepth : SV_Depth; }; Pose poseOf(PieceOut _in) { Pose _2075 = { int2(0, 0), int2(0, 0), float2(0.0f, 0.0f), _in.center, _in.seed, _in.ex, _in.ey, _in.ez, _in.look.w, _in.look.x, 0.0f, _in.look.y, _in.look.z, false }; return _2075; } float3 local(Pose o, float3 v) { return float3(dot(v, o.ex), dot(v, o.ey), dot(v, o.ez)) / float3(o.scale, o.scale, o.scale); } int naga_mod(int lhs, int rhs) { int _101 = ((rhs == 0) || ((lhs == int(0x80000000)) && (rhs == (-1)))) ? 1 : rhs; return lhs - ((lhs / _101) * _101); } Hit slab(float3 o, float3 d, PieceOut _in) { bool _1767 = false; float3 normal = float3(0.0f, 0.0f, 1.0f); float2 _out = float2(0.0f, 0.0f); int i = 0; Hit h = _1750; int i_1 = 0; bool _1764 = false; float enter = -1000000000.0f; float3 walls[12] = _1757; float2 c[12] = _1752; int i_2 = 0; float leave = 1000000000.0f; int i_3 = 0; float2 middle = float2(0.0f, 0.0f); uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); uint2 loop_bound_2 = uint2(4294967295u, 4294967295u); uint2 loop_bound_3 = uint2(4294967295u, 4294967295u); h.t = -1.0f; float2 _1796[12] = { _in.c0.xy, _in.c0.zw, _in.c1.xy, _in.c1.zw, _in.c2.xy, _in.c2.zw, _in.c3.xy, _in.c3.zw, _in.c4.xy, _in.c4.zw, _in.c5.xy, _in.c5.zw }; c = _1796; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < _in.count)) { break; } middle += c[min(uint(i), 11u)]; i++; continue; } float _1828 = float(_in.count); middle /= float2(_1828, _1828); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(i_3 < _in.count)) { break; } uint _1853 = min(uint(i_3), 11u); uint _1859 = min(uint(naga_mod(i_3 + 1, _in.count)), 11u); _out = normalize(float2(c[_1859].y - c[_1853].y, c[_1853].x - c[_1859].x) + float2(9.999999717180685365747194737196e-10f, 0.0f)); if (dot(_out, middle - c[_1853]) > 0.0f) { _out = -_out; } walls[min(uint(i_3), 11u)] = float3(_out, dot(_out, c[_1853])); i_3++; continue; } if (abs(d.z) < 9.9999999392252902907785028219223e-09f) { if (!(o.z > 0.0f)) { _1764 = o.z < (-_in.look.x); } else { _1764 = true; } if (_1764) { return h; } } else { float _1913 = (-o.z) / d.z; float _1920 = ((-_in.look.x) - o.z) / d.z; if (d.z < 0.0f) { enter = _1913; leave = _1920; } else { enter = _1920; leave = _1913; normal = float3(0.0f, 0.0f, -1.0f); } } for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_2.x, uint2(0u, 0u).y == loop_bound_2.y))) { break; } loop_bound_2 -= uint2(uint(loop_bound_2.y == 0u), 1u); if (!(i_2 < _in.count)) { break; } int _1947 = i_2; uint _1948 = min(uint(_1947), 11u); float _1953 = dot(d.xy, walls[_1948].xy); float _1958 = walls[_1948].z - dot(o.xy, walls[_1948].xy); if (abs(_1953) < 9.9999999392252902907785028219223e-09f) { if (_1958 < 0.0f) { return h; } int _1980 = i_2; i_2 = _1980 + 1; continue; } float _1967 = _1958 / _1953; if (_1953 < 0.0f) { if (_1967 > enter) { enter = _1967; normal = float3(walls[_1948].xy, 0.0f); } } else { leave = min(leave, _1967); } int _1980 = i_2; i_2 = _1980 + 1; continue; } if (!(enter > leave)) { _1767 = enter < 0.0f; } else { _1767 = true; } if (_1767) { return h; } h.t = enter; h.normal = normal; h.face = normal.z > 0.5f; float2 _2007 = o.xy + (d.xy * enter); h.edge = 1000000000.0f; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_3.x, uint2(0u, 0u).y == loop_bound_3.y))) { break; } loop_bound_3 -= uint2(uint(loop_bound_3.y == 0u), 1u); if (!(i_1 < _in.count)) { break; } float _2040 = walls[min(uint(i_1), 11u)].z - dot(_2007, walls[min(uint(i_1), 11u)].xy); if (_2040 < h.edge) { h.edge = _2040; h.edgeNormal = walls[min(uint(i_1), 11u)].xy; } i_1++; continue; } return h; } uint pcg(uint v) { uint _49 = (v * 747796405u) + 2891336453u; uint _54 = ((_49 >> ((_49 >> 28u) + 4u)) ^ _49) * 277803737u; return (_54 >> 22u) ^ _54; } float unit(uint h) { return float(h >> 8u) / 16777216.0f; } float valueNoise(float2 p, int period, uint salt) { int2 _559 = int2(clamp(floor(p), float2(-2147483648.0f, -2147483648.0f), float2(2147483520.0f, 2147483520.0f))); float2 _560 = frac(p); float2 _564 = (_560 * _560) * (float2(3.0f, 3.0f) - (_560 * 2.0f)); uint _571 = (uint(naga_mod(naga_mod(_559.y, period) + period, period)) * 668265261u) + salt; uint _579 = (uint(naga_mod(naga_mod(_559.y + 1, period) + period, period)) * 668265261u) + salt; return lerp(lerp(unit(pcg((uint(_559.x) * 374761393u) + _571)), unit(pcg((uint(_559.x + 1) * 374761393u) + _571)), _564.x), lerp(unit(pcg((uint(_559.x) * 374761393u) + _579)), unit(pcg((uint(_559.x + 1) * 374761393u) + _579)), _564.x), _564.y); } float octaves(float2 g, float ratio, uint salt) { float _621 = log2(max(ratio, 1.0f)); float _622 = floor(_621); float _623 = _621 - _622; float _624 = exp2(_622); float _655 = 1.0f - _623; return 0.5f + ((((valueNoise(g * _624, int(clamp(round(scene_1_m0.wall.z * _624), -2147483648.0f, 2147483520.0f)), salt + (uint(clamp(_622, 0.0f, 4294967040.0f)) * 2654435769u)) - 0.5f) * _655) + ((valueNoise((g * _624) * 2.0f, int(clamp(round((scene_1_m0.wall.z * _624) * 2.0f), -2147483648.0f, 2147483520.0f)), salt + (uint(clamp(_622 + 1.0f, 0.0f, 4294967040.0f)) * 2654435769u)) - 0.5f) * _623)) * rsqrt((_655 * _655) + (_623 * _623))); } float plaster(float2 q, float2 frame_1, float pxPerUnit) { float _680 = scene_1_m0.wall.z / 6.283185482025146484375f; float _682 = max(length(q), 9.9999997473787516355514526367188e-05f); float2 _689 = (float2(log(_682), atan2(q.y, q.x)) * _680) - frame_1; float _691 = (_682 * pxPerUnit) / _680; return (0.64999997615814208984375f * octaves(_689, _691 / (2.2000000476837158203125f * scene_1_m0.view.w), 11u)) + (0.3499999940395355224609375f * octaves(_689, _691 / (11.0f * scene_1_m0.view.w), 23u)); } void frag_main() { float2 slope = float2(0.0f, 0.0f); float3 albedo = float3(0.0f, 0.0f, 0.0f); float b = 0.5f; float3 n = float3(0.0f, 0.0f, 0.0f); PieceColor _out = _2140; float x = 1.0f; PieceOut _2077 = { gl_FragCoord, at, center, seed, ex, ey, ez, look, c0, c1, c2, c3, c4, c5, count, frame }; float3 _2144 = float3(0.0f, 0.0f, scene_1_m0.camera.x); float3 _2147 = float3(_2077.at, -scene_1_m0.camera.x); Pose _2148 = poseOf(_2077); Hit _2155 = slab(_2077.seed + local(_2148, _2144 - _2077.center), local(_2148, _2147), _2077); if (_2155.t < 0.0f) { discard; } float _2166 = _2144.z + (_2147.z * _2155.t); n = _2155.normal; albedo = scene_1_m0.shard.xyz * 0.819999992847442626953125f; if (_2155.face) { float _2183 = ((scene_1_m0.view.z * _2077.look.w) * scene_1_m0.camera.x) / max(scene_1_m0.camera.x - _2166, 0.001000000047497451305389404296875f); x = clamp((_2155.edge * _2183) / (lerp(0.699999988079071044921875f, 5.5f, _2077.look.y * _2077.look.y) * scene_1_m0.view.w), 0.0f, 1.0f); float2 _2206 = (_2077.seed.xy + local(_2148, _2144 - _2077.center).xy) + (local(_2148, _2147).xy * _2155.t); if (scene_1_m0.albedo.w > 0.0f) { float _2212 = scene_1_m0.view.w / _2183; b = plaster(_2206, _2077.frame, _2183); slope = float2(plaster(_2206 + float2(_2212, 0.0f), _2077.frame, _2183), plaster(_2206 + float2(0.0f, _2212), _2077.frame, _2183)) - float2(b, b); } n = normalize(float3(((_2155.edgeNormal * (1.0f - x)) * 1.60000002384185791015625f) - ((slope * scene_1_m0.albedo.w) * scene_1_m0.view.w), 1.0f)); albedo = scene_1_m0.albedo.xyz * (0.930000007152557373046875f + (0.070000000298023223876953125f * (_2077.look.z + ((b - 0.5f) * 0.0500000007450580596923828125f)))); } float3 _2266 = normalize(((_2077.ex * n.x) + (_2077.ey * n.y)) + (_2077.ez * n.z)); _out.color = float4((albedo * ((0.2599999904632568359375f * (0.550000011920928955078125f + (0.449999988079071044921875f * max(_2266.z, -0.60000002384185791015625f)))) + (max(dot(_2266, scene_1_m0.light.xyz), 0.0f) * scene_1_m0.camera.w))) * (1.0f - (0.300000011920928955078125f * (1.0f - x))), 1.0f); _out.depth = clamp((scene_1_m0.camera.x - _2166) / scene_1_m0.camera.x, 0.0f, 1.0f) * 0.999000012874603271484375f; color = _out.color; gl_FragDepth = _out.depth; gl_FragDepth = clamp(gl_FragDepth, 0.0f, 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; at = stage_input.at; center = stage_input.center; seed = stage_input.seed; ex = stage_input.ex; ey = stage_input.ey; ez = stage_input.ez; look = stage_input.look; c0 = stage_input.c0; c1 = stage_input.c1; c2 = stage_input.c2; c3 = stage_input.c3; c4 = stage_input.c4; c5 = stage_input.c5; count = stage_input.count; frame = stage_input.frame; frag_main(); SPIRV_Cross_Output stage_output; stage_output.gl_FragDepth = gl_FragDepth; stage_output.color = color; return stage_output; } fs_piece_shadowmain0struct Scene { float4 view; float4 frame; float4 wall; float4 light; float4 build; float4 hits; float4 strike; float4 albedo; float4 glow; float4 deep; float4 camera; float4 shard; }; struct Seed { float2 pos; uint key; }; struct Cell { float2 seed; uint key; float edge; uint other; }; struct VsOut { float4 position; }; struct Pose { int2 cell; int2 plate; float2 frame; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float scale; float thick; float reach; float stress; float tint; bool gone; }; struct Outline { float2 corners[12]; int count; }; struct PieceOut { float4 position; float2 at; float3 center; float3 seed; float3 ex; float3 ey; float3 ez; float4 look; float4 c0; float4 c1; float4 c2; float4 c3; float4 c4; float4 c5; int count; float2 frame; }; struct Hit { float t; float3 normal; bool face; float edge; float2 edgeNormal; }; struct PieceColor { float4 color; float depth; }; static const Seed _122 = { float2(0.0f, 0.0f), 0u }; static const float2 _208[9] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const uint _211[9] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u }; static const Cell _219 = { float2(0.0f, 0.0f), 0u, 0.0f, 0u }; static const float _821[4] = { 1000000000.0f, 1000000000.0f, 1000000000.0f, 1000000000.0f }; static const Pose _841 = { int2(0, 0), int2(0, 0), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, false }; static const int2 _844[4] = { int2(0, 0), int2(0, 0), int2(0, 0), int2(0, 0) }; static const float2 _1208[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _1210[24] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float2 _2171[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Outline _1229 = { { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }, 0 }; static const float2 _1516[6] = { float2(0.0f, 0.0f), float2(1.0f, 0.0f), float2(0.0f, 1.0f), float2(0.0f, 1.0f), float2(1.0f, 0.0f), float2(1.0f, 1.0f) }; static const PieceOut _1519 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), 0, float2(0.0f, 0.0f) }; static const Hit _1750 = { 0.0f, float3(0.0f, 0.0f, 0.0f), false, 0.0f, float2(0.0f, 0.0f) }; static const float2 _1752[12] = { float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const float3 _1757[12] = { float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f) }; cbuffer scene : register(b0) { Scene scene_1_m0 : packoffset(c0); }; static float4 gl_FragCoord; static float2 at; static float3 center; static float3 seed; static float3 ex; static float3 ey; static float3 ez; static float4 look; static float4 c0; static float4 c1; static float4 c2; static float4 c3; static float4 c4; static float4 c5; static int count; static float2 frame; static float4 _2114; struct SPIRV_Cross_Input { float2 at : TEXCOORD0; nointerpolation float3 center : TEXCOORD1; nointerpolation float3 seed : TEXCOORD2; nointerpolation float3 ex : TEXCOORD3; nointerpolation float3 ey : TEXCOORD4; nointerpolation float3 ez : TEXCOORD5; nointerpolation float4 look : TEXCOORD6; nointerpolation float4 c0 : TEXCOORD7; nointerpolation float4 c1 : TEXCOORD8; nointerpolation float4 c2 : TEXCOORD9; nointerpolation float4 c3 : TEXCOORD10; nointerpolation float4 c4 : TEXCOORD11; nointerpolation float4 c5 : TEXCOORD12; nointerpolation int count : TEXCOORD13; nointerpolation float2 frame : TEXCOORD14; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _2114 : SV_Target0; }; Pose poseOf(PieceOut _in) { Pose _2075 = { int2(0, 0), int2(0, 0), float2(0.0f, 0.0f), _in.center, _in.seed, _in.ex, _in.ey, _in.ez, _in.look.w, _in.look.x, 0.0f, _in.look.y, _in.look.z, false }; return _2075; } float3 local(Pose o, float3 v) { return float3(dot(v, o.ex), dot(v, o.ey), dot(v, o.ez)) / float3(o.scale, o.scale, o.scale); } int naga_mod(int lhs, int rhs) { int _101 = ((rhs == 0) || ((lhs == int(0x80000000)) && (rhs == (-1)))) ? 1 : rhs; return lhs - ((lhs / _101) * _101); } Hit slab(float3 o, float3 d, PieceOut _in) { bool _1767 = false; float3 normal = float3(0.0f, 0.0f, 1.0f); float2 _out = float2(0.0f, 0.0f); int i = 0; Hit h = _1750; int i_1 = 0; bool _1764 = false; float enter = -1000000000.0f; float3 walls[12] = _1757; float2 c[12] = _1752; int i_2 = 0; float leave = 1000000000.0f; int i_3 = 0; float2 middle = float2(0.0f, 0.0f); uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); uint2 loop_bound_2 = uint2(4294967295u, 4294967295u); uint2 loop_bound_3 = uint2(4294967295u, 4294967295u); h.t = -1.0f; float2 _1796[12] = { _in.c0.xy, _in.c0.zw, _in.c1.xy, _in.c1.zw, _in.c2.xy, _in.c2.zw, _in.c3.xy, _in.c3.zw, _in.c4.xy, _in.c4.zw, _in.c5.xy, _in.c5.zw }; c = _1796; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < _in.count)) { break; } middle += c[min(uint(i), 11u)]; i++; continue; } float _1828 = float(_in.count); middle /= float2(_1828, _1828); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(i_3 < _in.count)) { break; } uint _1853 = min(uint(i_3), 11u); uint _1859 = min(uint(naga_mod(i_3 + 1, _in.count)), 11u); _out = normalize(float2(c[_1859].y - c[_1853].y, c[_1853].x - c[_1859].x) + float2(9.999999717180685365747194737196e-10f, 0.0f)); if (dot(_out, middle - c[_1853]) > 0.0f) { _out = -_out; } walls[min(uint(i_3), 11u)] = float3(_out, dot(_out, c[_1853])); i_3++; continue; } if (abs(d.z) < 9.9999999392252902907785028219223e-09f) { if (!(o.z > 0.0f)) { _1764 = o.z < (-_in.look.x); } else { _1764 = true; } if (_1764) { return h; } } else { float _1913 = (-o.z) / d.z; float _1920 = ((-_in.look.x) - o.z) / d.z; if (d.z < 0.0f) { enter = _1913; leave = _1920; } else { enter = _1920; leave = _1913; normal = float3(0.0f, 0.0f, -1.0f); } } for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_2.x, uint2(0u, 0u).y == loop_bound_2.y))) { break; } loop_bound_2 -= uint2(uint(loop_bound_2.y == 0u), 1u); if (!(i_2 < _in.count)) { break; } int _1947 = i_2; uint _1948 = min(uint(_1947), 11u); float _1953 = dot(d.xy, walls[_1948].xy); float _1958 = walls[_1948].z - dot(o.xy, walls[_1948].xy); if (abs(_1953) < 9.9999999392252902907785028219223e-09f) { if (_1958 < 0.0f) { return h; } int _1980 = i_2; i_2 = _1980 + 1; continue; } float _1967 = _1958 / _1953; if (_1953 < 0.0f) { if (_1967 > enter) { enter = _1967; normal = float3(walls[_1948].xy, 0.0f); } } else { leave = min(leave, _1967); } int _1980 = i_2; i_2 = _1980 + 1; continue; } if (!(enter > leave)) { _1767 = enter < 0.0f; } else { _1767 = true; } if (_1767) { return h; } h.t = enter; h.normal = normal; h.face = normal.z > 0.5f; float2 _2007 = o.xy + (d.xy * enter); h.edge = 1000000000.0f; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_3.x, uint2(0u, 0u).y == loop_bound_3.y))) { break; } loop_bound_3 -= uint2(uint(loop_bound_3.y == 0u), 1u); if (!(i_1 < _in.count)) { break; } float _2040 = walls[min(uint(i_1), 11u)].z - dot(_2007, walls[min(uint(i_1), 11u)].xy); if (_2040 < h.edge) { h.edge = _2040; h.edgeNormal = walls[min(uint(i_1), 11u)].xy; } i_1++; continue; } return h; } void frag_main() { PieceOut _2077 = { gl_FragCoord, at, center, seed, ex, ey, ez, look, c0, c1, c2, c3, c4, c5, count, frame }; Pose _2125 = poseOf(_2077); Hit _2132 = slab(_2077.seed + local(_2125, float3(_2077.at, 0.0f) - _2077.center), local(_2125, scene_1_m0.light.xyz), _2077); if (_2132.t < 0.0f) { discard; } _2114 = float4(1.0f, 1.0f - clamp((_2132.t * scene_1_m0.light.xyz.z) / scene_1_m0.camera.x, 0.0f, 1.0f), 0.0f, 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; at = stage_input.at; center = stage_input.center; seed = stage_input.seed; ex = stage_input.ex; ey = stage_input.ey; ez = stage_input.ez; look = stage_input.look; c0 = stage_input.c0; c1 = stage_input.c1; c2 = stage_input.c2; c3 = stage_input.c3; c4 = stage_input.c4; c5 = stage_input.c5; count = stage_input.count; frame = stage_input.frame; frag_main(); SPIRV_Cross_Output stage_output; stage_output._2114 = _2114; return stage_output; }  ÀðЂ�‘Íà?HSLTSceneÀ viewÿÿÿÿframeÿÿÿÿwall ÿÿÿÿlight0ÿÿÿÿbuild@ÿÿÿÿhitsPÿÿÿÿstrike`ÿÿÿÿalbedopÿÿÿÿglow€ÿÿÿÿdeep�ÿÿÿÿcamera ÿÿÿÿshard°ÿÿÿÿ scene_blockÀscenevsvsfsfsvs_piecevs_piecevs_piece_shadowvs_piece_shadowfs_piecefs_piecefs_piece_shadowfs_piece_shadow(ê#�  GLSL.std.450"vs ?fs;>' vs_piece           ! " # $ & Q vs_piece_shadow? A B C D E F G H I J K L M N O P � fs_piecej l o r t v x z | ~ € ‚ „ † ˆ ‹ � Ž d fs_piece_shadowC E G I K M O Q S U W Y [ ] _ a c ?� � d H#H#H# H#0H#@H#PH#`H#pH#€H #�H # H #°H#H#H #H #H # H #G GH#GH#H#H#H# H#0H#@H#PH#`H#lH #pH #tH #xH #|H #€GGGH#H#`GH#H#H# H#0H#@H#PH#`H#pH#€H #�H # H #°H #ÀH #ÐH#àH#èGH #H #H #H # H #(G!H"#H"#G#"G#!G$H$#G *G  G; G>G *G G G G G G G G G G G G G G G G G G G  G G!  G! G"  G" G#  G# G$  G$ G& G& G? *GA GB GC GC GD GD GE GE GF GF GG GG GH GH GI GI GJ GJ GK  GK GL  GL GM  GM GN  GN GO  GO GP GP Gj Gl Go Go Gr Gr Gt Gt Gv Gv Gx Gx Gz Gz G| G| G~ G~ G€  G€ G‚  G‚ G„  G„ G†  G† Gˆ  Gˆ G‹ G‹ G� GŽ GC GE GG GG GI GI GK GK GM GM GO GO GQ GQ GS GS GU GU GW  GW GY  GY G[  G[ G]  G] G_  G_ Ga Ga Gc      +    + + +  + + !"$ %$;%#!)+*µw’,++KV¬+,+-ÙòŽ+.!<+=+>€K!G+H¹y7ž+Q+R€?+SÀ?!X + \+ ^€+ _ÿÿÿÿ+ d!n  o+p+rÛÉ@+s€D+t'íQ+u?,vuu+wÍÌL? y.z } ~++ˆÏ+‰ÿÿÿN ¯ µ!È +Ê·Ñ8+Ë(knN+ Ì + Í Ï . Ð Ò.Ó Õ × Ú . Û,,ö ÷öø,öùpp+úÿÿÿÿ,öûúú!l!u+w!Œ+Ž ×#<+�zÄ+�+‘)\�?+’ÍÌÌ?+“1,=+§š™Y?+¨ff†?!Ä+ÆÍÌL>+Ç ×#=+È`A!à+â�Âu=!ï+ñ33³?+òìQ¸=+óffæ?+ô ×#>+õÍÌ @+öš™?.ø+ú!& +'@+(@@,)((+*-ëÔ'++±gV!i+xÿÿO!ž+  +¡ff&?+¢0A+£+¤33³>! Ç+É@?+Ê€>+ËÍÌÌ>!ë!û+ü !!!!2+ 4,5ËËËË+ 6+7ff&@+8ÍÌŒ?+9š™™?+:¬Å'7,;:w+<+=ÍÌL=+>+?�Âõ=+@š™>+A1,½,BRww,CwRw,DwwR)E+FA H.I K.L N.Q S . T. V X.Y.[.] J+Z+} !„!©+«ff¦?+¬ ×£>+­ÍÌL@+®ÍÌ ?+ ¯+ °.±.²*³+ ´+ µ ·.¸.º.¾.À. Â. Ä.Æ.È. Ê Ì.Í ¿!Í!á,ã'''R,äËË+å(knÎ,æåå+çw¾?,èww,éRw,êwR,ëRR, ìèéêêéë î.ï.õ.÷.ù.û ý ”+Â+Å!Í +΀¿,Ïww+Ð_p‰0,ÑÐw+ÒwÌ+2,ÓwwÎ Õ . Ö.Ø Ü!.!Ý.à.å.è! , \\ ; !;! !#,$ÎÎ,%(Î,&Î(,'$%& ) +., 5 <;<;;!>+AÁ+B333?+CÀ¿+D°@+Eš™¿+F�Âõ<+G¦›D<+H ×£<. J.M.O.Q.S; ;!   ;    ;  ;  ;  ;  ;  ;! ;! ;! ;! ;!! ;!" ;!#  %  ;% $ ; & ;? ;!A ; B ; C ; D ; E ; F ; G ;!H ;!I ;!J ;!K ;!L ;!M ;!N ;% O ; P ;<j  m ;m l  p ;p o ;p r ;p t ;p v ;p x ;<z ;<| ;<~ ;<€ ;<‚ ;<„ ;<†  ‰  ;‰ ˆ ;m ‹ ;!� ;5Ž +‘ …ëQ?+’ oƒ:+“ )\�=+” {n?+• ffæ>+– ¸…>+— š™™>.™ .›   "."¡ ;<C ;m E ;p G ;p I ;p K ;p M ;p O ;<Q ;<S ;<U ;<W ;<Y ;<[ ;<] ;‰ _ ;m a ;!c 6()7'ø&ù/ø/„0'*€10+Â21,€32Â413Æ541„65-Â76.Æ876þ886;<7:ø9ù?ø?Â@:=pA@ˆBA>þB86FG7D7EøCùIøI„JEH€KDJ9L(K9M;LþM86P<7OøNùTøTªUOQ©VUSRþV86 WX7 Y7 Zø[ª]Z\ª`Y^ªaZ_§b`a¦c]b© ecdZ‡ fYe„ gfe‚ hYgþh86mn7 j7k7løi;yxzAoq#pù{ø{9|PkA~€q=�€…‚�|ˆƒ‚rA~„q=…„…†…| ‡† Š+‡ˆ‰n ‹Š…Œs| �Œ Ž+�ˆ‰n �ŽQ �j9 ‘W��€ ’‘�9 “W’�|”“Q •j9 –W•‹€ —–‹9 ˜W—‹|™˜„škt€›™š9œ(›€�”œ9ž(�9Ÿ;ž9 (ž9¡; P¢Ÿ¡ƒ£¢vޤ£w�¥v¤o¦j�§¦¥Ž¨l|�©§¨Qª©ˆ«ªƒ ¬«Q­©ˆ®­ƒ °® ± ®P²°±Ž³²¬A¯´xp>´³Aµ¶xQ>¶ž=·xþ·86 ¸X7 ¹7 ºø»ª¼º\ª½¹^ª¾º_§¿½¾¦À¼¿© ÁÀdº‡ ¹ÁþÂ86 ÇÈ7Ä7Å7ÆøÃ;ר\;ÒÑÓ;×Ü\;×Ö\;ÏÎÐ;ÚÙÛ;ÕÔË;÷üû;÷<ûAoÉ#pùÝøÝ9ÞPÅA~ßÉ=àß…áàÞˆâár ãBÄ ä(ãÊ åäQæÄQçÄ èæçPéåèŽêéâŽëÆÞƒìêë íì ð+íîïn ñðùòøòöóõùýøý=öþüªøÿùþ›ÿ÷úóøQþªp©QpPöQ‚öþ>üùôøô= رÌ÷ ú  ø ùóø ù ø = Ø9 W Í‚ d= Ø9 ¸Í‚ dP € ñ9mÅÆ= ØQ &=A¯Î>= ØQ &=AµÑ>QƒÄQ ƒ!Ä ”"!=#Ô¸$"#÷%ú$&%ø&>Ô"= 'Ø>Ö'ù%ø%ù ø ùõøõ= (Ø€ )(d>Ø)ùòøó= *Ö +&*=A¯,Î+=-,A¯.Ùp>.-= /Ö 0&/=Aµ1Ñ0=21Aµ3ÙQ>32AÕ4Ù>4ËAµ5ÙQ=65Aµ7Ù>76ù8ø8ö9;ù=ø==ö><ªø?ù>›@?÷Aú@9AøAQB>ªCBp©DCQpPöEDQ‚öF>E><Fù:ø:= GܱHGÌ÷IúHIJøJù9øIùKøK= MÜ= NÖªOMN÷PúOQPøQù;øP= RÜ S&R=A¯TÎS=UT�V-UŽWVuƒXWăYU- ZEY”[XZAÕ\Ù=]\¸^[]÷_ú^`_ø`AÕaÙ>a[= bÜ c&b=AµdÑc=edAµfÙ>feù_ø_ùLøLù;ø;= gÜ€ hgd>Ühù8ø9= iÙþi86kløjAom#pùnønA}omQ=poOqppþq86tu7sørAov#pùxøxA~yvp=zyA~{v=|{…}z|ƒ~s}~A~€vQ=�€ˆ‚� ƒ‚ „+ƒwRA~…vQ=†……‡„†þ‡86‹Œ7‰7ŠøˆAo�#pù”ø”A~•�=–•¸—–Ž÷˜ú—™˜ø™þ�ø˜A~š�p=›š9œFŠ� �.‘’œ…ž›� ŸB‰  (Ÿʈ¡ž  ¢¡ˆ£¢“þ£86¦<7¥ø¤ù©ø©9ªF¥� «.‘’ª9¬F¥. ­.§¨¬ˆ®«­ ¯®ˆ°¯“þ°86´Œ7²7³ø±Aoµ#pù¶ø¶ ·B²…¸·rA~¹µ=º¹9»P³…¼º»ˆ½¸¼þ½86ÃÄ7¿7À7Á7Âø¾AoÅ#pùÉøÉ9ÊFÀ 9ËFÁ �ÌÊË…ÍÆÌ�ÎwÍA~ÏÅp=ÐÏ…ÑÂÐA~ÒÅp=ÓÒˆÔÑÓA~ÕÅp=ÖÕ…×Ö΃Ø×¿ˆÙØÇ Ú+ÙwR Û1RÈÔ…ÜÚÛþÜ86ßà7ÞøÝAoá#pùãøãA~äáp=åä…æå§ çBÞƒèæçˆéèâ ê+éwRþê86îï7ì7íøë;Õ÷øAoð#pùùøùA}ûðú=üûA~ýðp=þýQÿü…ÿñ�þ B새òQü…Qü… óƒ     …  …  u>÷ A}ð=Oƒì Bˆô=÷Qü…Qü…õƒ ……ö�>÷=÷… íþ 86%&7"7 #7$ø!ù,ø, -" .+-îïn /. 0 "…100Ž20'ƒ3)2…413Q 5/9 6W5#€ 76#9 8W7#|98„:9*€;:$Q </€ =<d9 >W=#€ ?>#9 @W?#|A@„BA*€CB$Q D/|ED„FE+€GF;9H(G9I;HQ J/€ KJd|LK„ML+€NM;9O(N9P;OQ Q/|RQ„SR+€TSC9U(T9V;UQ W/€ XWd|YX„ZY+€[ZC9\([9];\Q^4 _.IP^Q`4 a.V]`Qb4 c._abþc86hi7e7f7gødAoj#pùkøk l(fR ml nmƒomn pnŽqepA~rj=sr…tsp ut v+uˆ‰n wv y+nwxmzy„{zH€|g{9}%qw|ƒ~}uŽepŽ€'A~�j=‚�…ƒ‚p…„ƒ' …„ †+…ˆ‰n ‡†�ˆnR ‰+ˆwxmЉ„‹ŠH€Œg‹9�%€‡ŒƒŽ�uƒ�Ro…�~�…‘Žo�’�‘…“��…”oo�•“” – •…—’–�˜u—þ˜86�ž7š7›7œø™AoŸ#pù¥ø¥A~¦Ÿ=§¦ˆ¨§r ©Bš ª(©Ê «ªQ¬šQ­š ®¬­P¯«®Ž°¯¨ƒ±°›…²ªœˆ³²¨A~´Ÿp=µ´…¶õµˆ·³¶9¸h±· …¹¡¸…º¢µˆ»³º9¼h±»£…½¤¼�¾¹½þ¾86ÆÇ7À7Á7Â7Ã7Ä7Åø¿AoÈ#pùÌøÌ…ÍÆÃ…ÎÍÃ9ÏFÂ…ÐÉÏ�ÑÊÐ…ÒÎÑ…ÓÒÄ9ÔFÂ…ÕÔr ÖÕ × ÕPØÖ×ŽÙØËŽÚÙÃ9ÛFÂúŽÜÚÛƒÝÀÁ”ÞÜÝ�ßÓÞ…àßÅ9áîÁÄ�âàáA~ãÈp=äã…åâäþå86êë7ç7è7éøæùìøì í é îéŽïçî ðDèçŽñðí�òïñ”óèçŽôèóƒõRîŽöôõ�÷òöþ÷86úû7ùøøùýøý9þFùü…ÿþ'ƒÿR9Fù …r…ƒR (w    P Ž  P  þ 867 7ø ùø   Q …Q …ƒQ …Q …�Q Pþ86 !7"7#ø$ª%#p©&%Q#‰'"&þ'86(!7)7*ø+ª,*p©-,Q*†.)-þ.861270ø/;X\];×UV;×O\;HGI;XWY;ÕPQ;KJL;XZ[;SRT;NM5;÷’û;÷³ûAo3#pù^ø^A~_3=`_…a`S ba c+bwxmdc9e 09f(09gkA~h3=ihˆjirA~k3p=lk…ml’ nm…onjQpgƒqop…rqS sr t+sˆ‰n ut€ vu49w(fd| xw‚ yvx9z fd| {zP |y{9}m|QgQ~} B~ €(Ê �€Q‚}Qƒ‚Q„}Q…„ †ƒ…P‡�†Žˆ‡jƒ‰ˆg Љ ‹+Šîïn Œ‹P�ŒŒŒŒ>J�ùŽøŽö�‘ù“ø“=ö”’ªø•ù”›–•÷—ú–�—ø—Q˜”ª™˜p©š™QpPö›šQ‚öœ”›>’œù�ø�= �O±ž�Ì÷ŸúžŸ ø ù�øŸù¡ø¡= £O9 ¤W£Í‚ ¥¤d= ¦O9 §¸¦Í‚ ¨§dP ©¥¨€ ªŒ©9«mªpgQ¬«Q­} ®C¬­>P®>Rª>U\ù¯ø¯ö°²ù´ø´=öµ³ªø¶ùµ›·¶÷¸ú·°¸ø¸Q¹µªº¹p©»ºQpPö¼»Q‚ö½µ¼>³½ù±ø±= ¾U±¿¾6÷Àú¿ÀÁøÁù°øÀùÂøÂ=ÄP= ÅU Æ&ÅAÕÇMÆ=ÈǸÉÄÈ÷ÊúÉËÊøË= ÌU Í&ÌAÕÎMÍ=ÏÎ= ÐU Ñ&ÐASÒJÑ= ÓÒ= ÔU=ÕP Ö&ÔAÕ×MÖ>×Õ= ØU= ÙR Ú&ØASÛJÚ>ÛÙ>PÏ>RÓùÊøÊùÃøÃù²ø²= ÜU€ ÝÜd>UÝù¯ø°ù¢ø¢ù‘ø‘= ÞO€ ßÞd>OßùŽø� à&eASáJà= âáASãGQ>ãâQä}9å´äQ æ&eAÕçMæ=èçAÕéMp=êé…ë7å�ìêëºíèì>WíQî}Qï}9ð‹îïQñ}9ò¦ñƒóðò ô(ów…õô“…öõjA~÷3 =ø÷…ùöøPúöù�ûgúA¯üG>üûASýGp>ý|ASþGQ= ÿþA¯G=9mÿpQ}QÆA¯G=9m|QQ P  wO     E Q   Q PwO  Ž uŽå�Pwˆðò +wRQ}9F£ .u8 õ……õ 9…ˆ òƒ! 9"ê!�#"Ž$ 9%ú9&F '.w7&Ž(%'�)$( *B) +(*:P,+++ˆ-),O.  Q/ƒ0./�10; 2E193F< 4.Ž=3Ž524Ž6 ƒ7# 8D6799F> :.Ç?9P;5:�<8;Ž=<ô�>#=…?@ô…@?ôPAww@�B>A…CAô DC…EAôA~F3 =GF…HEG…I*ô9KBHŽLKDAJMG>MLAJNG>N 9OêB9PêO-I9QPHAJRGú>RQ9SêC9TêS-I9UTHAJVG>VU9WêD9XêW-I9YXHAJ[GZ>[YAÕ\G=>\DQ]9^´]p…_ô^AÕ`G >`_AÕaGü>aåQb cBb…dcD9etdAÕfG >feQg9hFg9iFAÕjG =kj l1uwk…mlu n.himAÕoG>on=pW¨qp÷rúqstøs¼uðw>Zuùrøt>ZEùrør=vZ¨wv÷xúwyzøyº{ôF>\{ùxøz>\Eùxøx=|\AX~G}>~|=Gþ86ƒ„7�7‚ø€ù…ø…Q†�ƒ‡‚†Qˆ�މ‡ˆQŠ�Q‹�QŒ‰Ž�‹Œ�ŽŠ�Q��Q�‰Ž‘���’Ž‘Q“�Q”‰Ž•“”�–’•þ–86š„7˜7™ø—ù›ø›Qœ˜”�™œQž˜”Ÿ™žQ ˜”¡™ P¢�Ÿ¡Q£˜P¤£££ˆ¥¢¤þ¥86¨©7§ø¦;×Î\;XÇÈ;×ÁÂ;×¼\;·¶¸;×ÉÊ;×ÃÄ;¯½¾;·¹º;ÌËÍ;XÅÆ;Õ¿À;×»6;÷ùû;÷5û;÷„û;÷¬ûAoª#pùÏøÏQЧ ÑЫ Ò.¬­ÑA~Óªp=ÔÓ…ÕÒÔA~Öªp=×ÖˆØÕ×…ÙØ®QÚ§ Û1uwÚ…ÜÙÛQݧOÞÝÝQ ß§Qà§9ámßpàQâáQã§ …äãSåäæäPçåæ�èÞçA¯é¶p>éèêäPëäê�ìÞëA¯í¶Q>íìPîää�ïÞîA¯ð¶>ðïñäPòñä�óÞòA¯ô¶>ôóùõøõööøùúøú=öûùªøüùû›ýü÷þúýöþøþQÿûªÿp©QpPöQ‚öû>ùù÷ø÷= ¼±¯÷úøùöøùø= ¼9 W °€  d¯  6©    9 WÍ‚ d9 ¸Í‚ dP >½±>¿²= ¼±°÷úøQ §€ Q§9mQQƒÞ E>½� ÞŽ! u="½”#!"ƒ$#Ü>¿$ùøQ %§€ &%Q'§9(m&p'Q)(ƒ*)â +E*>½+�,â)Ž-,u=.½”/-.ƒ0/Ø>¿0ùø>Á\>Ã\ù1ø1ö24ù6ø6=ö75ªø8ù7›98÷:ú92:ø:Q;7ª<;p©=<QpPö>=Q‚ö?7>>5?ù3ø3= @Ã= A»±B@A÷CúBCDøDù2øCùEøE= Gà H&G£A¯I¶H=JI= KÀ LKd= M»9 NWLM O&N£A¯P¶O=QP=R½”SJR=T¿ƒUST=V½”WQV=X¿ƒYWX¼ZUw÷[úZ\]ø\= ^Á±_^´>Å_ù[ø]>ųù[ø[=`Å÷aú`baøb= cÁ d&c£A¯e¹d>eJ= fÁ€ gfd>Ágùaøa¼hUw¼iYw¥jhi÷kújlmøl= nÁ±on´>Çoùkøm>dzùkøk=pÇ÷qúprqør= sÁƒtQJƒuUYˆvUuŽwtv�xJw y&s£A¯z¹y>zx= {Á€ |{d>Á|ùqøqùFøFù4ø4= }À ~}d>Ã~ù1ø2= Á>»>É\ù€ø€ö�ƒù…ø…=ö†„ªø‡ù†›ˆ‡÷‰úˆ�‰ø‰QІª‹Šp©Œ‹QpPö�ŒQ‚öކ�>„Žù‚ø‚= �É= �Á±‘��÷’ú‘’“ø“ù�ø’ù”ø”= –É= —É ˜&—£A¯™¹˜=š™ ›&–£A¯œ¶›>œšù•ø•ùƒøƒ= �É€ ž�d>Éžù€ø�= Ÿ»± ŸÍ÷¡ú ¢¡ø¢ùöø¡ù ø ùøøø= £¼€ ¤£d>¼¤ùõøö= ¥»  ¦'¥µA×§ËQ>§¦ù¨ø¨ö©«ù­ø­=ö®¬ªø¯ù®›°¯÷±ú°©±ø±Q²®ª³²p©´³QpPöµ´Q‚ö¶®µ>¬¶ùªøª= ·ÎA׸ËQ= ¹¸±º·¹÷»úº»¼ø¼ù©ø»ù½ø½= ÀÎ= ÁÎ Â&Á£A¯Ã¶Â=Äà Å&À A¯ÆËpÅ>ÆÄù¾ø¾ù«ø«= Ç΀ ÈÇd>ÎÈù¨ø©=ÉËþÉ86ÌÍ7ËøÊAoÎ#pùÏøÏQÐËA~ÑÎpp=ÒшÓÐÒ…ÔÓ'ƒÕÔRQÖËA~×ÎpQ=Ø×ˆÙÖØ…ÚÙ'ƒÛRÚPÜÕÛuRþÜ86àá7Þ7ßøÝ;ýüì;Xö÷;×ò\;îíï;Xøù;×ó\;¯ðä;Xúû;¯ôõ;¯ñæ;÷û;¿'Aoâ#pùþøþ9ÿ(Þ91ÿQ ÷úøAíp>ã=íþø9¨A~âüp= A} â=  O   ù ø öùø=öªøù›÷úøQªp©QpPöQ‚ö>ùø= óQ „ 4±÷ ú !ø!ùø ù"ø"Q$= %ó9 &¸%4>'$ (&& A¯)'(=*)Q+ ,+= -ó9 .W-4o/.…0,/P1*092ƒ1O322O4  Q52Q6  7(6=ˆ857Ž948ƒ:39>ô:¨;ß÷<ú;=<ø=Q>2…? çº@>?÷Aú@BAøB= Cò€ DCd>òDùøAOE22QF2ƒG FˆH GŽIEH>ôIù<ø<=Jð=Kô L%JK>ðL=Mñ=Nô O(MN>ñOù#ø#ùø= Pó€ QPd>óQù øA}RâQ=SROTSSUTA~Vâp=WVPXWWˆYUXA}Zâp=[ZO\[[A}]âQ=^]O_^^ƒ`\_A~aâp=baPcbbˆd`c= eò­fe\÷gúfhgøh>ðY>ñdùgøgQ i±jiͨkj÷lúkmnøm= oòQ p„ qp4ªroq>örùløn>öEùløl=sö¨ts÷uútvwøv=xñ¸øyxYšzy>øzùuøw>øEùuøu={ø¨|{÷}ú|~ø~=€ðºø�€dš‚�>ú‚ù}ø>úEù}ø}=ƒú=„ð=…ñ9† Þ ‡&†úA¯ˆü‡=‰ˆ Š.„…‰A}‹âQ=Œ‹O�ŒŒA~Žâp=�ŽŽ�Š��‘��9’Ì‘P”•ƒƒƒƒ©“•ã’A–íp>–“A¯—íQ>—ŠQ˜AJ™í>™˜QšAJ›í>›šQœAJ�í>�œQžAJŸíú>ŸžQ AJ¡í>¡ Q¢ Q£ Q¤ Q¥P¦¢£¤¥A§íZ>§¦Q¨Q©¨Qª¨P«©ªA¬í=>¬«Q­¨Q®¨P¯­®A°í >°¯Q±¨Q²¨P³±²A´íü>´³Qµ¨Q¶¨P·µ¶A¸í >¸·Q¹¨Qº¨ P»¹ºA¼í>¼»Q½¨ Q¾¨ P¿½¾AÀí}>À¿Q ÁA×ÃíÂ>ÃÁQÄA¯ÆíÅ>ÆÄ=ÇíþÇ86 ÌÍ7É7Ê7ËøÈ;Xçè;JãD;¯ßà;×Ú\;ÕÔÖ;×é\;Xäå;Õáå;ÜÛÝ;¿×Ø;׿\;ÕâË;×Þ\;¯ÙÏ;÷ û;÷+û;÷Šû;÷ÝûùêøêAÕëÔp>ëÎQìËOíììQîËOïîîQðË OñððQòË OóòòQôË OõôôQöË O÷ööQøË OùøøQúË OûúúQüË OýüüQþË OÿþþQË OQË OPíïñóõ÷ùûýÿ>×Q Ëùøö ù ø =ö  ªø ù › ÷úøQ ªp©QpPöQ‚ö > ùø= Ú±÷úøùøùø=Ù= Ú & A¯×=� >Ù ùøù ø = !Ú€ "!d>Ú"ùø=#Ùo$P%$$ˆ&#%>Ù&ù'ø'ö(*ù,ø,=ö-+ªø.ù-›/.÷0ú/(0ø0Q1-ª21p©32QpPö43Q‚ö5-4>+5ù)ø)= 6Þ±76÷8ú789ø9ù(ø8ù:ø:= <Þ =&< A¯>×==?>= @Þ€ A@d9 BWA C&B A¯D×C=EDQFEQG?ƒHFGQI?QJEƒKIJPLHK�MLÑ NEM>ßN=Oß=PÙƒQP?”ROQºSRw÷TúSUTøU=VßWV>ßWùTøT= XÞ=Yß=Zß”[Z?P\Y[ ]&X AJ^Û]>^\ù;ø;ù*ø*= _Þ€ `_d>Þ`ù'ø(QaÊ ba¸cbÒ÷dúceføeQgɺhgw¨ih÷júikløkQmÉQnËQonpo¸qmp>äqùjøl>äEùjøj=rä÷súrtsøt= uÔþuøsùdøfQvÉwvQxʈywxQzËQ{z|{Q}Ƀ~|}Qʈ€~Q�ʸ‚�w÷ƒú‚„…ø„>áy>â€ùƒø…>á€>ây>ãÓùƒøƒùdødù†ø†ö‡‰ù‹ø‹=öŒŠªø�ùŒ›Ž�÷�úއ�ø�Q�Œª‘�p©’‘QpPö“’Q‚ö”Œ“>Š”ùˆøˆ= •æ±–•÷—ú–—˜ø˜ù‡ø—ù™ø™= ›æ œ&› AJ�Ûœ=ž�OŸÊÊO žž”¡Ÿ Q¢žO£ÉÉO¤žž”¥£¤ƒ¦¢¥ §¡¸¨§Ò÷©ú¨ª©øª¸«¦w÷¬ú«­¬ø­= ®Ôþ®ø¬ù‰ø©ˆ¯¦¡¸°¡w÷±ú°²³ø²=´áºµ¯´÷¶úµ·¶ø·>á¯O¸žžP¹¸w>ã¹ù¶ø¶ù±ø³=ºâ »%º¯>â»ù±ø±ùšøšù‰ø‰= ¼æ€ ½¼d>æ½ù†ø‡=¾á=¿âºÀ¾¿¨ÁÀ÷ÂúÁÃÄøÃ=Åá¸ÆÅw>çÆùÂøÄ>çEùÂøÂ=Çç÷ÈúÇÉÈøÉ= ÊÔþÊøÈ=ËáAÕÌÔp>ÌË=ÍãAJÎÔQ>ÎÍAÕÏã=ÐϺÑÐuAXÒÔ>ÒÑOÓÉÉOÔÊÊ=ÕáŽÖÔÕ�×ÓÖAÕØÔ>ØËùÙøÙöÚÜùÞøÞ=ößݪøàùß›áà÷âúáÚâøâQãߪäãp©åäQpPöæåQ‚öçßæ>ÝçùÛøÛ= èé±éè÷êúéêëøëùÚøêùìøì= îé ï&î AÕðÛï=ñð= òé ó&ò AJôÛó=õôOöõõ”÷×öƒøñ÷AÕùÔ=úù¸ûøú÷üúûýüøýAÕþÔ>þø= ÿé &ÿ AJÛ=OA¯Ô>ùüøüùíøíùÜøÜ= é€ d>éùÙøÚ= Ôþ86  7 øù ø Q Q Q Q Q Q QQ QQ QQ QP  Ïw³þ86"#ø;)(';+*,=ù-ø- .&A¯/(.=0/P10wRA2*p>21=3*Q43> 4A56 Q=7687>68ý86?#ø9;ÕPQ;ÕKR;ÕNO;ÚIJ;ÕRS;XLM==;P:=Ao@#pùTøTA~U@p=VUA~W@p=XWQY:OZYYA}[@Q=\[O]\\ƒ^Z]P_VVˆ`^_ aB`A~b@p=cbA~d@=ed…fce…gAXPhgRww…ifB¸jai÷kújlkøl>>hýøk9mk9 nÇ`pm9ota p1uwoºqpw¨rq÷súrtuøtA~v@p=wv…xw’…yx«¸zay>Lzùsøu>LEùsøs={L÷|ú{}|ø}9 ~Ç`Qm>I~A¯Ip=€Aµ�IQ=‚�9ƒ‹€‚º„ƒw÷…ú„†…ø†>>hýø… ‡1CwƒƒˆR‡>Kˆù|ø| ‰o« Š.¬­‰…‹ŠXQŒn9�´ŒpQŽn �BŽ9�t�Q‘n9’ß‘…“�’Q”nQ•n9–Ãa”•�Q—n…˜—V…™‹–ƒš˜™ƒ›R–…œ›F…�œX�žš�>NžQŸnQ n=¡K9 ¢Æ`Ÿ “�¡>P¢Q£n9¤F£>R¤º¥pw÷¦ú¥§¦ø§Aµ¨IQ=©¨QªnÆ«©ªA¯¬Ip=­¬9®´­QAµ¯IQ=°¯Aµ±I=²±9³Ãa°²®…´³pAÕµI=¶µ…·¶V…¸‹®…¹¸´ƒº·¹ƒ»R´…¼»F…½¼X�¾º½=¿N À%¿¾>NÀ=ÁPA¯ÂIp=ÃÂ=ÄK9 ÅÆ`듮ąÆpÅ�ÇÁÆ>PÇ=ÈR9ÉF«…Êpu Ë.ÈÉÊ>RËù¦ø¦…Ìoo Í.BDÌ…ÎÍX=ÏNˆÐÏÎ Ñ+ÐwRƒÒRуÓRÑ…ÔÒÓƒÕRÔ Ö(Õw ×ÖƒØR×=ÙN Ú1EöÙƒÛRÚ…Ü‹'…Ý'X�ÞÜÝ�ßËo…àÞß9á�`mVA~â@Z=ãâºäãw©åäáuA~æ@Q=çæA~è@=éèƒêRé…ëçê…ì=ëía…îía…ïFë�ðGïˆñîð òñ…óìò…ôóV=õP…öÎØƒ÷õöƒøåuA~ù@Z=úù…ûøú…üûX…ý(ëþa…ÿþaˆ ÿH   … ý � R … ü � ÷  à  .  Ûƒ  ô  1ÉRo= Rƒ åu… =� … Û ƒ R P  Û  >> ý86' #ø =  Ao( #pù) ø) 9* à ³Q+ * > + A5,  Q=- , . - >, . Q/ * > / Q0 * > 0 Q1 * > 1 Q2 * > 2 Q3 * > 3 Q4 * > 4 Q5 * > 5 Q6 * > 6 Q7 * > 7 Q8 * > 8 Q9 * >! 9 Q: * >" : Q; * ># ; Q < * >$ < Q= * >& = ý86Q #ø> =@ ? AoR #pùS øS 9T à@ EQU T >A U A5V A Q=W V X W >V X QY T >B Y QZ T >C Z Q[ T >D [ Q\ T >E \ Q] T >F ] Q^ T >G ^ Q_ T >H _ Q` T >I ` Qa T >J a Qb T >K b Qc T >L c Qd T >M d Qe T >N e Q f T >O f Qg T >P g ý86� #øh ;¯ž Ï;Jš › ;Õ� u;J˜ ™ ;  Ÿ ¡ ;Õœ R=k j =n l =q o =s r =u t =w v =y x ={ z =} | = ~ =� € =ƒ ‚ =… „ =‡ † = Š ˆ =Œ ‹ Pi k n q s u w y { }  � ƒ … ‡ Š Œ Ao� #pù¢ ø¢ A~£ � üp=¤ £ P¥ ww¤ Q¦ i § ¤ P¨ ¦ § 9© i Qª i Q« i ƒ¬ ¥ « 9­ š© ¬ �® ª ­ 9¯ š© ¨ 9 ° Ì® ¯ i Q± ° ¸² ± w÷³ ú² ´ ³ ø´ üø³ A~µ � p=¶ µ Q· ¥ Q¸ ¨ Q¹ ° …º ¸ ¹ �» · º Q¼ ° >˜ ¼ A}½ �  =¾ ½ O¿ ¾ ¾ ŽÀ ¿ ‘ >š À QÁ ° ÷ úÁ à  øà A~Ä � p=Å Ä QÆ i QÇ Æ …È Å Ç …É È ¤ ƒÊ ¤ » Ë (Ê ’ ˆÌ É Ë QÍ i QÎ Í QÏ i QÐ Ï …Ñ Î Ð Ò .BDÑ …Ó Ò ¶ QÔ ° …Õ Ô Ì ˆÖ Õ Ó × +Ö wR>œ × QØ i OÙ Ø Ø QÚ i ƒÛ ¥ Ú 9Ü š© Û OÝ Ü Ü �Þ Ù Ý 9ß š© ¨ Oà ß ß Qá ° Žâ à á �ã Þ â A~ä � Z=å ä ºæ å w÷ç úæ è ç øè ˆé ¶ Ì Qê i 9ë �ã ê Ì >� ë Pì é w�í ã ì Qî i 9ï �í î Ì Pð wé �ñ ã ð Qò i 9ó �ñ ò Ì Pô ï ó =õ � Pö õ õ ƒ÷ ô ö >ž ÷ ùç øç Qø ° =ù œ ƒú Rù Žû ø ú Žü û ’=ý ž A~þ � Z=ÿ þ Ž ý ÿ Ž ¶ ƒ ü  P  R  E >˜  A} � Z=  O   Q i Q  = � ƒ u… =� … “ � ”  Ž   >š  ù ø Q i AÕ ˜ p=  Ž   Q i AÕ ˜ Q=  Ž   �   Q i AÕ ˜ =  Ž   �    E A} � =! O" ! ! ”#  " $ (# wA~% � ü=& % …' $ & Q(   ) (( E…* • ) �+ ®* …, – + =- š �. , ' Ž/ - . =0 œ ƒ1 R0 …2 — 1 ƒ3 R2 Ž4 / 3 P5 4 RA6 Ÿ p>6 5 ƒ7 ¤ » ˆ8 7 ¤ 9 +8 wR…: 9 çAÕ; Ÿ Q>; : ="< Ÿ Q= < >� = Q> < >Ž > =? Ž @ +? wR>Ž @ ý86d #øA =D C =F E =H G =J I =L K =N M =P O =R Q =T S =V U =X W =Z Y =\ [ =^ ] = ` _ =b a PB D F H J L N P R T V X Z \ ^ ` b Aoe #pùf øf Qg B Ph g wA}i e =j i Ok j j 9l B Qm B Qn B ƒo h n 9p šl o �q m p 9r šl k 9 s Ìq r B Qt s ¸u t w÷v úu w v øw üøv Qx s Qy k …z x y A~{ e üp=| { ˆ} z | ~ +} wRƒ R~ P€ R wR>c € ý8 ÀðЂ�‘Íà?�@€šÑÍ€X.næä…U›€^V¬Ì£*³"æ3UÀë)¡ÐOa¦ê0‡ž <½,ä˜Vêš„Ë|%)  Wׯÿ¯Ë scripts_as¿jÔƒ  asm )````````````}```||``~``}}`|`|`}`|`}`}}}}}}`||`|`||`|`|||`|`|||`||` |||||``|`~`|`|`~`|||¼_ rive_gpu_v1buffer_release rive_gpu_v1texture_release rive_gpu_v1sampler_release rive_gpu_v1shader_module_release rive_gpu_v1bind_group_layout_release rive_gpu_v1bind_group_release rive_gpu_v1pipeline_release rive_gpu_v1canvas_releaserive_canvas_v1release rive_gpu_v1texture_view_release rive_image_v1release rive_gpu_v1 pass_release rive_path_v1release rive_paint_v1releaserive_shader_v1releaserive_buffer_v1releaserive_mesh_instances_v1release rive_data_v1 font_release rive_data_v1 vmi_release rive_data_v1 prop_release rive_data_v1context_releaserive_artboard_v1releaserive_artboard_v1animation_releaserive_artboard_v1 node_releaserive_measure_v1release rive_audio_v1source_release rive_audio_v1 sound_release rive_text_v1release rive_file_v1release rive_file_v1bindable_release rive_lanes_v1releaserive_shared_v1release rive_data_v1unwatch rive_path_v1points rive_path_v1verbs rive_paint_v1feather rive_paint_v1 thickness rive_paint_v1color rive_paint_v1 blend_mode rive_paint_v1cap rive_paint_v1join rive_paint_v1stylerive_shared_v1snapshot_createrive_shared_v1 ring_create rive_gpu_v1 buffer_new rive_gpu_v1 sampler_new rive_gpu_v1 pipeline_new rive_gpu_v1bind_group_layout_from_entries rive_gpu_v1bind_group_layout_from_shader rive_gpu_v1bind_group_new rive_gpu_v1 shader_target rive_gpu_v1shader_module_from_asset rive_gpu_v1shader_asset_id rive_gpu_v1shader_asset_bytes rive_gpu_v1features rive_rt_v1log rive_gpu_v1 canvas_new rive_gpu_v1canvas_color_view rive_gpu_v1 canvas_image rive_lanes_v1start rive_data_v1 color_set rive_data_v1 color_get rive_data_v1 number_set rive_data_v1 number_get rive_data_v1 vmi_color rive_data_v1 vmi_string rive_data_v1 vmi_number rive_data_v1 view_modelrive_shared_v1 ring_write rive_shared_v1snapshot_publish rive_data_v1watch rive_data_v1 vmi_triggerrive_shared_v1 snapshot_seqrive_renderer_v1restorerive_renderer_v1 draw_imagerive_renderer_v1 transformrive_renderer_v1save rive_gpu_v1 buffer_update rive_gpu_v1 pass_finish rive_gpu_v1 pass_draw rive_gpu_v1pass_set_bind_group rive_gpu_v1pass_set_pipeline rive_gpu_v1 pass_begin rive_gpu_v1texture_view_new rive_gpu_v1 texture_new rive_gpu_v1 canvas_resize rive_renderer_v1 draw_path rive_paint_v1shader rive_paint_v1new rive_path_v1update rive_path_v1newrive_renderer_v1modulate_opacity rive_gpu_v1 target_view rive_data_v1enum_set rive_data_v1 string_set®¬       ! " # $%&'( p „[A A€€ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AÐå A A A A A A A A A A A A A A A A A A A A A A A |D |D |D A A A |D |D A |D |D ~B |D A Ñ P__riveCollected __riveCollect€__riveFrameMinor�__riveFrameVerify‚__riveFrameMajorsƒ__riveSetMajorBudget„__riveSetCollectMode…__riveHostBudget†host_set_timeout‡__riveFuelShiftˆ__riveFuelBegin† __riveFuelEnd†installNetSink‰__riveUtf16Strings†__riveUtf16HostStrings† riveRegisterŠ__riveGuestStringŒmalloc�freeŽ__riveRawAlloc� host_newstate�host_install_require‘host_install_rive_math‘host_install_rive_renderer‘host_install_rive_data‘host_install_rive_gpu‘ host_seal_env‘host_register_embedded’ host_require“host_ref” host_unref• host_settop– host_tostring—host_obj_instantiate˜host_obj_context™host_obj_user_initšhost_obj_advance›host_obj_layout_resize_v2œhost_obj_update�host_obj_input_slotžhost_obj_triggerŸhost_obj_set_number host_obj_set_boolean¡host_obj_set_color¡host_obj_set_string¢host_obj_set_artboard£host_obj_set_view_model¤host_obj_data_convert¥host_obj_pointer_event_v2¦host_obj_pointer_event§host_obj_scroll_event¨host_obj_gamepad_event©host_obj_keyboard_eventªhost_obj_text_event«host_obj_listener_perform¬host_obj_path_effect_v2­host_obj_path_effect®host_obj_layout_measure¯host_obj_dispose° host_obj_draw±host_obj_transition_manages_to²host_obj_transition_changed³host_obj_transition_draw´host_obj_number_methodµhost_obj_boolean_method¶host_draw_visit·host_data_value_changed¸host_image_buffer¹host_image_decodedºhost_image_decode_failed»host_lane_wake¼__riveFetchBlobBody†host_fetch_resolved½host_fetch_failed¾__riveOwnerCountÀ__riveFrameReleaseÁmemory__riveCallSpill5__riveCallSettle8__riveCallOwner>Š A óôöö÷÷øø‚†‡‰ § §”¬š  (" vK@ Aüÿÿÿ vK@ A  AM t! @Aüÿÿÿ At" AüÿÿÿO"   I! (" Ú" jA  kü  G@ 6 6 Þ 6     D Ì (" (" j"I@ (! AÀ At" AÀI"  I"Ö! @   ü Ak("@ Ak"A gkAtA¸j"(6  6 Ak"# 6 AjA6 A jA6 $ 6 6 ( (j! 6  Ë (" ("F@ (!A At" AI"AtÖ! @   Atü Ak("@ Ak"A gkAtA¸j"(6  6 Ak"# 6 AjA6 A jA6 $ 6 6 ( (Atj 6 (Aj6 ¾A % (AF ( ( 6A¤% (6A¨% (6A¬% ( 6A°% (6A´% (6 (A %AS!AAíØ"A6 A6 A6 A:  6  AG: @  A¿  (6  ( 6  {A %A6A¤%A6A¨%A6A¬%A6A°%A6A´%A6A¸%A6A¼%C8AÀ%CB8AÄ%A6 A %A(-6 ("@ A¿ µ - A 5 5B|T @ A: A  (" (j/! Aj6 5 5 ­|T@ A: A   ( (j"j" I@ AtAØ"!@@  O -! Aj! A€q@  F  -A?q! Aj! AàqAÀF@   AqAtr;  F  -A?q! Aj! AðqAàF@ AqA t Atr r!  F  -A?q AqAt A tr Atrr! Aj! A€€I@  ;  A€€k"AÿqA€¸rAt A vA€°rr6 Aj!   ; Aj!    kÚ! ( j6  t@ ("( J@  ( O@ ( Atj("E@ ( F Ak(Av ( îA A @  Aj!  A È ( AJ@AA¯Ø ( At"AüÿÿÿK@ A¯Ø!A!@ ( J@  At"j  (j(6 Aj!  ("( AJ ( E@ ((A A  ( 0"AA÷Ø"A6  6 @  A¿ A Ú ( AJ@AA¯Ø ( At"AüÿÿÿK@ A¯Ø! @ ( J@ ( Atj((AK@  ( O@ ( Atj("E@ Atj" (6  ( O@ ( Atj("E@  ((6  ( O@ ( Atj("E@  (6   ( O@ ( Atj("E@ ( 6 (!  ( O@ ( Atj("E@ (! ( "Aj" (AvK@  AA_ ( Atj" 6  At  ß  6 Aj!  A! ( AJ@AA¯Ø ( At"AüÿÿÿK@ A¯Ø! A!@ ( J@ ( Atj((AK@  ( O@ ( Atj("E@ Atj" (6  ( O@ ( Atj("E@  ((6 (!  ( O@ ( Atj("E@ (! ( " Aj" (AvK@  AA_ ( Atj" 6  At ß  6 Aj!  A! ( AJ@AA¯Ø ( At"AüÿÿÿK@ A¯Ø!A!@ ( J@ ( Atj((AK@  ( O@ ( Atj("E@  Atj" (6  ( O@ ( Atj("E@  ((6 ( !  ( O@ ( Atj("E@ (! ( " Aj" (AvK@  AA_ ( Atj" 6  At ß  6 Aj!  ( ( At ( At  ( At16 ("@ A¿ * A A¯Ø"6 6 A 6 A6 ”  (( AJ@ (( AK@ (( AJ: ("E@  A (f"E@  ("A (( AJ @ ! @ A ( f"E@  (! -E@A!  ( A !  (A  ! AAŒØ"A6 A6 A6 A6 i!@ AI@ ( (" Ak(A~q Ak(A~q /"AA÷Ø"A6  6 @  A¿ A ! ( " Aj" (AvK@  AA_ ( Atj" 6  At ß  6 Aj!  @ ( "AJ  Ak"M@ ( Atj(EA @ ( "AL@ ( Ak"Atj"( A6  6  6 (! A! (""Ak( j! @  I@ /" A€I Aj A€I Aj A€øqA€°F Aj Iq@ /A€øqA€¸F@ Aj! Aj!  Aj ! Aj!  A¯Ø!  Ak(Av ò @A! (""Ak( j! @  I@ /" A€I Aj A€I Aj A€øqA€°F Aj Iq@ /A€øqA€¸F@ Aj! Aj!  Aj ! Aj!  A¯Ø!  Ak(Av ò A!@ ("( J@  ( O@ ( Atj("@ (( j! Aj!  A % ( 6A¤%  ( A 6A¨% Ak(6A¬%  Ak(A 6A°% (( 6A´% (( 6A¸% 6A¼% ( 6AÀ% (6AÄ% ( 6AÈ% ($6AÌ% ((6 (,"E@A(AˆØ"� AÐ% (6AÔ% (6AØ% -AG6AÜ% ( 6Aà% *8Aä% *8Aè% ("(6Aì% (6Að% (6Aô% ( 6Aø% ("(6Aü% (6A€& (6A„& ( 6Aˆ& ( 6AŒ& ($6A�& (06A¨%(A¬%(jA°%(A$ljA´%(A lj A ljA¼%(Atj!AA¯Ø AüÿÿÿK@ A¯Ø" "  Ak(ü  Ak(j! @   Ak(ü  Ak(j! A!@ ("( J@  ( O@ ( Atj("E@  (6  ("AG6 @  (6  (6  (6  ( 6  (6  (6 A6 A6 A6 A6 A6 A6  (6 A$j! Aj!  A!@ ("( J@  ( O@ ( Atj("@  (6  (6  (( 6 A j! Aj!  A!@ ("( J@  ( O@ ( Atj("@ (!A!@ ( J@  ( Atj("(6  (6  (6 A j! Aj!  Aj!  A!@ ( J@  ( Atj(" (A 6 Aj! Aj!  A %Aô .6 ("@ A¿ wA€ ( " A€N!A!@  H@  ( O@ At"A %j  (j(6 Aj!  (A (A %A AJ ( AtP õ AA‘Ø"A6 A6 (( AJ@ A6  A % (( 6A¤% (" (A 6A¨% (6A¬% ( 6A°% *8A´%A6A¸%A6A¼%A6@ ("( J@  ( O@ ( Atj("@ (" rE@A! A Ak("A’F  A•F@ (  A“F@ (A6 (AjA6 (AjA6 (A jA6 ( (A\!  (G@ (@ ("@#4!@ @ #C Ak" A lj"Aj(F@ #BI@#BAk$B #C#BA lj"A ü #4Ak$4 #C#4A ljA ü  Ak!  ( 6 ( 6 @ A¿ ( (Aj(6 (A (A j(" AM6 (A j(E@ (A jA6 (  ! AtAðàj"  (  6  (" (A 6  (6  ( 6  *8  *8  *8  *8 Aj!  Aðà! ("Ak(AvA!  Ak(j!@  I@ /"A€I Aj A€I Aj A€øqA€°F Aj Iq@ /A€øqA€¸F@ Aj! Aj!  Aj ! Aj!  A "A€A %(At"kK@  jÔ"Aðà ü A! @ (" Ak(Av jò! AÀ% 6A %A$  jR! AðàG@ Õ  6 @  A ¿  ê p A: (( 6 ("( "Aj!  (AvK@  AA_ ( Atj 8  6 ("( "Aj!  (AvK@  AA_ ( Atj 8  6 ("( "Aj!  (K@  AA_ ( jA:  6 A:$ (Aj6 Å p -E@ ("( @ (" ( O@ ( Atj* (Aj" ("( O@ ( Atj*m CCm ("( "Aj!  (AvK@  AA_ ( Atj 8  6 ("( "Aj!  (AvK@  AA_ ( Atj 8  6 ("( "Aj!  (K@  AA_ ( jA:  6 A:$ (Aj6 e ("(  AAA_ A6 ("(  AAA_ A6 A: A6 A:% A:$ (Aj6 Å -%E@ A:% ( "E@ (AA"! (AA!! ("(   AA_  6 ("(   AA_  6 @ ( (( " @ ( (( ! (( Aq A:$ (Aj6 ù{@ Aj M@@ý ÿ  jý"ýýS@ !@  AjI@  j-"E@ At6 AG:A E AFr A AF A AF A j! Aj!   ý  ýý ýµ"ýAv ýAvj ýAvj ýAvjj!  jAj-AG: Aj!  @  K@  j-"E@ At6 AG:A "E AFr A AF A AF A j! Aj!  ¨ ( "E@Z!AA)Ø"A6  6 ! @  A ¿ "6 Þ A:$ (Aj6 -$ -%A E@ ( ("( ( ("( ( (Y A:$ ( … ("E@X!AA+Ø"A6  6 ! @  A ¿ ! ("Aq@ ( () Aq@ ( ( % Aq@ ( *$ Aq@ ( (( Aq@ ( (' A q@ ( *# AÀq@ ( ( & A€q@ ( ($" ((A W 6 Þ  Ÿ (! ("$( #&"   IA lj! #'"   IA lj!@  K@ (AqE@ ("@   á6 A j!  (" á!  G@ 6  á" k"@ 6  (AjAtj!@  I@ ("@   j6 Aj!   (A lj!@  I@ ("A~q"@  j Aqr6 A j!   (E@#ZAj$Z #Z6#= ( ì ( (F #>6#>@#>"!#A"( ( A½ÜÊ•|lAµÏÙ²jAwA¯ÖÓ¾l"Av sA÷”¯¯xl"A v sA½ÜÊ•|l"Av sqAtj(!@ @ ("AqE@  ( F  A~q!  A E@#A#>AA¯Ø!AA½Ø" 6  Þ  6 A6 A6 ì #>"!#A"( ( A½ÜÊ•|lAµÏÙ²jAwA¯ÖÓ¾l"Av sA÷”¯¯xl"A v sA½ÜÊ•|l"Av sqAtj(!@ @ ("AqE@  ( F  A~q!  A "E@ ("( "Aj!  (AvK@  AA_ ( Atj" 6  At  ß  6 ( "( "Aj!  (AvK@ AA_ ( Atj" 6 At  ß 6 3 E@A AA¼Ø"A6  6 @  A¿  ˆ } (! A8kAv A8O A0j(A " A8O A4j(A "jI@A!A! AA!Ø AÿÿÿÿK@ AtA!Ø!AA!Ø AÿÿÿÿK@ AtA!Ø! A8j!@  I@  Atj*! Ak(Av M@  Atj 8 Aj!  A!@  K@   jAtj*! Ak(Av M@  Atj 8 Aj!  Aj(!A8AÎØ"A6 A6 A6 A6 A6 A6 A6 C8 A: A6$ A:( A6, A60 A64 Aj(! Aj(! A j(! Aj(! Aj(! Aj*! A j(AG! A$j(! A(j(AG! A,j(!  AÐAð AFA  6  6  6  6  6 A AÐA°  AG6  6  8  :  6$  :(  6,  60  64  Ú | ("( ! AAA_ AJ@ (A Atü A6 ("( ! AAA_ AJ@ (A Atü A6 A6 E@ A:  + ¡D€@ " DP?¢œD�@¢¡ D€À ! -E! 9 A:  a r@ D;ßO�—nâ?ýD_ìÍÔ@¢  ¤Dø?¢¡œªAj! @ A NE@ k" A€ oA€ jA€ o! A!@ A'H@ AµïÉälAè·‚k"  AvAjvsAÙ廄l" AvsjAµïÉälAûé¦�k"  AvAjvsAÙ廄l" Avs"Av¸Dp>¢Dà¿ Dš™™™™™é?¢Dà? ! AµïÉälAªüá¸k"  AvAjvsAÙ廄l" AvsAv¸Dp>¢D¸…ëQ¸Þ?¢DìQ¸…ëñ? " AµïÉälAÝÞ¡Æk"  AvAjvsAÙ廄l" AvsAv¸Dp>¢Dœ™™™™™É?¢D333333ë? £ýD/Ý$�¥?£! · AµïÉälAûé¦�k"  AvAjvsAÙ廄l" AvsAv¸Dp>¢Dà¿ Dš™™™™™é?¢Dà?   Dø?¢ D_ìÍÔ@£! D ×£p= ×?¢ý" ·  " Dø?¢ D_ìÍÔ@£¡D/Ý$�¥?£"De  Dø?¢ D_ìÍÔ@£¡D/Ý$�¥?£" DeG@ (!  y! ( " Aj!  (AvK@  AA_ ( Atj" 6  At ß  6 e  fG@ d@ (Aj6 (!  y! "( "Aj!  (AvK@  AA_ ( Atj" 6  At  ß  6 Aj!  Aj!  ¼ ("( ( F@AA Ø"D9 D9 D9 ( "Aj!  (AvK@  AA_ ( Atj" 6  At  ß  6 (! ( "Aj6 ( O@ ( Atj("E@ 9 AµïÉälAàšåûk"  AvAjvsAÙ廄l" AvsAv¸Dp>¢Dú~j¼t“˜?¢Dü©ñÒMb�? 9 ûDffffffæ?¢9 Ø}|#PAk(AvAk· ›" Dð¿  Dà¿  eD¥¤ª" (G@ (6 C8 6 Dð? DÀ¢ü¡¶! (Al!A!@ AH@  (""Ak(AvO@  Atj*  j"A¼(AvO@ AtAÀj*  ("Ak(AvO@  Atj*“ ”’! !  Ak(AvO@  Atj 8 Aj!  * ¶C @”’C€?–8 * *”C@@ *C@”“”! ( "Aÿq³" ("Aü(AvO@ AtA€j("Aÿq³ “ ”’"�" C€¿’ C¿’ _©Aÿq AvAÿq³" AvAÿq³ “ ”’"�" C€¿’ C¿’ _©AÿqAt AvAÿq³" AvAÿq³ “ ”’"�" C€¿’ C¿’ _©AÿqAtA€€€xrrr6 ç }~ ( ! ( ( "E A ALA #@( N  #@"( O@ A ( Atj(" (AGA A ("E AA Ak("A®F@  6  Þ (!Â! Ak(AðG@ ( Aj"6 AèJ@ ("Ak(AñG@ ( Aj"6 AèJ@ (b (! Aa 6 ( Ak6 ("Ak(AóG@ ( Aj"6 AèJ@ (b (! Aa 6 ( Ak6 ("Ak(AõG@ ( Aj"6 AèJ@ (b (! Aa 6 ( Ak6 ( Ak6 AA$Ø"A6AA ( ( ( (;"AF@ E@  6 @  A¿  6  ÞA  A­F@  6  Þ (L"A6 (Ar6 ("@ (A) (L"C ?8 (Ar6 ("@ (C ?$ (P"A6 (Ar6 ("@ (A) (P"C€?8 (Ar6 ("@ (C€?$ A  A©F@  60  ÞAA•Ø!AAíØ"A6 A6 A6 A: A6 A:  6 A6 A6 A6 A6 A6AAãØ"A6AA2Ø"A6 A6  6  6 AA86 A6 A6 A6 A6 ("@ @  A¿  (A %A96 A %(6 A¤%(6 A¨%(6 ( (6 ("@  A¿ (:"@ ((" 6 @  A ¿ A (E   "E@AA°)A¬)(A~q7A   64  ÞA %A6!A0AèØ"A: A: A: A: A€ 6 A€ 6 A€6 A: A: A: A: A: A: A: A: A: A6 A€€6 A6$ A6( A€6,  AFA AG AGq  A: A %(AG: A¤%(AG: A¨%(AG: A¬%(6 A°%(6 A´%(6 A¸%(AG: A¼%(AG: AÀ%(AG: AÄ%(AG: AÈ%(AG: AÌ%(AG: AÐ%(AG: AÔ%(AG: AØ%(AG: AÜ%(6 Aà%(6 Aä%(6$ Aè%(6( AF@ Aì%(6,  "- -A E@AA€*Aü)(A~q7A   (¸9À (A€+Ä"E@ Añãg"E@  A +AÀ+ AAÉ"6<  ÞA(AˆØ"� A6 A6 A:  Aà+A€, A É"6L  Þ  A ,AÐ, ÈAÉ"6P  ÞAAûØ"A6 Aüã6 Aýã6 Aþã6   AA¯Ø!AAÿØ" 6  Þ  6 A6 A6 (AAøØ"A6 A6 A6 A6 (|! A6  6 A6 A6 6 AA¯Ø!AA€Ø" 6  Þ  6 A6 A6 AA¯Ø!AA�Ø" 6  Þ  6 A6 A6 h"6X  Þ (A€-Ä"E@ Añãg"E@ AAûØ"A6 Aüã6 Aýã6 Aþã6   AA¯Ø!AAÿØ" 6  Þ  6 A6 A6 (AAøØ"A6 A6 A6 A6 (|! A6  6 A6 A6 6 AA¯Ø!AA€Ø" 6  Þ  6 A6 A6 AA¯Ø!AA�Ø" 6  Þ  6 A6 A6 h"6\  Þ  A -AÐ- ÈAÉ"6@  ÞA(AˆØ"� A6 A6 A:  A€.A . A É"6H  Þ (AÀ.Ä"E@ Añãg"E@  6T  Þ  A +AÀ+ AA(AˆØ"� A6 A6 A: É"6D  ÞAÈA¦Ø!AÈA¤Ø"D@9 D333333Ó?9 D9 Dà?9 D;ßO�—n’?9 DºI +‡–?9( DÍÌÌÌÌÌÜ?90 DìQ¸…ë±?98A A‹Ø"AÀ0A ü  6@  6 A6 A6 A6 AAîØ"A6  d6A AéØ"A6 A6 A: #QA ÃA 6 A 6 A: ("@  A¿  6A AéØ"A6 A6 A: #QA0ÃA 6 A06 A: ("@  A¿  6A AÛØ"A6 A6 A6 A0A¯Ø"6  6 A06  6A AÛØ"A6 A6 A6 A A¯Ø"6  6 A 6  6 A6$ A6( A6, A60 A64 A68AA¯Ø!AA§Ø" 6  Þ  6 A6 A6  6 ( "E@A  Ak("A®F@ (((H!  + a@ +(  9(A  9 +(DÐ?d@ A:` D9(AA (0 A (" (CvA "E  (A�•AŒ•(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A ! (AàÛAÜÛ(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A ! (Aà—AÜ—(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A ! (A€˜Aü—(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A ! (A ˜Aœ˜(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A ! (AÀ˜A¼˜(A~qB" AA°Ø"A6 A6 A6 A¯ã6  6 ƒ A ! (Að˜Aì˜(A~qB" AA°Ø"A6 A6 A6 A¯ã6  6 ƒ A ! (A�™AŒ™(A~qB" AA°Ø"A6 A6 A6 A¯ã6  6 ƒ A ! A (A°™A¬™(A~qB" AA°Ø"A6 A6 A6 A¯ã6  6 ƒ A " E E E E E E E E E (AЙAÌ™(A~qB" AA°Ø"A6 A6 A6 A¯ã6  6 ƒ A "Errrrrrrrr  6H Þ 6L Þ 6P Þ 6T Þ 64 Þ 68 Þ 6< Þ 6@ Þ 6D Þ 60 Þ (A€ÜAüÛ(A~qG"AA´Ø"A6 A6 A6 A¯ã6  6  ƒ A "@A AÎØ"A6 A6 A6   A Üˆu 6X Þ (AÀÜA¼Ü(A~qG"AA´Ø"A6 A6 A6 A¯ã6  6  ƒ A "@A AÎØ"A6 A6 A6   Aà܈u 6\ Þ A E  (0"E@ A (?»"Da  (4"E@ (?»"›" Dð¿  Dà¿  eª! (<"E@ (?»! (@"E@ (?»! (8"E@ (" (?»9 (T"E@  (?»9 ((!Â! Ak(AîG@  ( Aj"6 AèJ@ +! Aa 9 +! Aa 9  ( Ak6 ( ( ( ( (E (H"E@ (" (?» (L"E@ (?» (P"E@ (?»Dà?dx -`  +hcA @ ( "A6  DÍÌÌÌÌÌ@¢ ¡D¥9 D9 (((!Â" …  ( ( ( (` ( "A6  ·9 D9 (((!Â" …  ( ( ( (` -`@  (pG@ ( "A6  ·9 D9 (((!Â" …  ( ( ( (`  +xd@ ( "A6 D9 D9 (((!Â" …  ( ( ( (`  +€d@ (D"E@ (?»! ( "A6  9 D9 (((!Â" …  ( ( ( (` +ˆ  9ˆ ("( AJ +ˆD333333Ó?fA @ D9ˆ ( E@ (("E@ +! ( E@ (("E@ +! ( "A6  9  9 (((!Â" …  ( ( ( (` A:` 9h 6p 9x 9€A  A­F@ (E@ (" (CvA "@ (AÀ—A¼—(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6 Þ (A —Aœ—(A~q@"AA³Ø"A6 A6 A6 A¯ã6  6  ƒ A "6 Þ (A�•AŒ•(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6 Þ ("| (?»D ! + DN@¢ 9 @ + "Dð?f@ Dð¿ 9 +( (0"A t s"Av s"At s"60 ¸Dð=¢D@¢Dð¿ Dà?¢DÍÌÌÌÌÌì?  9( +(ÿD333333ã?¢ (0"A t s"Av s"At s"60 ¸Dð=¢D@¢Dð¿ Dš™™™™™Ù?¢  D333333ó?¤¢! (" ("Ak(AvO@  Atj 9 (AjAðo6  A  A©F@ +ðD  -à" 9ð +Ð"Dð?D #Nd" ¡Dš™™™™™¹?¢ 9Ð |D +Ø   9Ø +è  9è +èD>@d +àDð?cA @ +àDš™™™™™¹? Dð?¤9à D9è +È"D333333ã?d +ÐD333333ã?dq@ Dš™™™™™¹¿ D333333ã?¥"9à D9è D9Ð +ØD@d  +àcA @ +à Dš™™™™™¹? ¤! D9Ø  +Èb@ 9È +¸ ¢9° +è"Dð?D  ¡Dð? šD@D @ ¢ü¡¢ 9è (�"+!  +D   DÍÌÌÌÌÌ@¤9 +""D333333@c|DD€ D333333À ¡ü ! Dffffffæ¿ D333333÷?£D¥Dð?¤" ¢D@   ¡¢! Dð? D€ DÍÌÌÌÌÌì?£D¥Dð?¤" ¢D@   ¡¢¡D À¢ D,@þDš™™™™™ñ?¢ 9  D333333À "Dc| D{®GázÔ?¢ ¢Dð? Dš™™™™™ À¢ü¡D333333@¢D{®GázÔ?  9  Dc| Dš™™™™™á?¢ ¢Dð? DÀ¢ü¡DÍÌÌÌÌÌÜ?¢Dš™™™™™á?  9  Dc|DDð? D&À¢ü D0@¢û¢¡ 9  D333333À DÎÌÌÌÌÌü?£D¥Dð?¤" ¢D@   ¡¢9(  D@þDš™™™™™ù?¢Dð?D Df"¢90  Dš™™™™™ñ?cq@  Dš™™™™™ù?¢9H  D@þ9P D9H D9P  Dš™™™™™@¢ ¢ ¢ D@þD2@¢ "Dà?¢ DÀT@¢ÿ Dfffff¦G@¢ÿ ¢98  Dà?¢ DfffffÆQ@¢ÿ D33333³=@¢ÿ ¢9@ D333333@c +D333333@fA  -¨A E@ A:¨ D9˜ + Dð? 9  +ÐD¥9Ð +�" + ¡Dð?#O ¤"Dffffffö¿¢ü¡¢ 9� +˜  9˜ +°  9° +0 +ÐD333333ó?¢ +˜DÀ¢ü¢ ! +�D/Ý$�¥?¢ +(¢ Dêò3YW�@£ š"Dêò3YW�@¢ ¢! +€  ¢ 9€ +ø  " DP?¢œD�@¢¡9ø +ˆ Dffffffæ?¢ +¢ " D:@£œD:@¢¡9ˆ (” +ø +ˆ + D{®Gáz„?dx +˜DÀ¢üDð?D + Dd¢ +°DÀ¢üD333333ã?¢Dð?D +¸Dd¢ ! +Ø" (”(( ·D¸…ëQ¸¾?¢D{®Gáz´?  (”(( ·Dš™™™™™©?¢  +8™Dš™™™™™©?¢    ¡Dð? D(À¢ü¡¢ 9Ø (˜ + z@A (0" -ðE (Cv"E A:ð (A�•AŒ•(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6ô Þ (A°•A¬•(A~qA"AA²Ø"A6 A6 A6 A¯ã6 A6 A6  6  ƒ A "6ø Þ (Aà•AÜ•(A~qA"AA²Ø"A6 A6 A6 A¯ã6 A6 A6  6  ƒ A "6ü Þ (A�–AŒ–(A~qA"AA²Ø"A6 A6 A6 A¯ã6 A6 A6  6  ƒ A "6€ Þ (AÀ–A¼–(A~qA"AA²Ø"A6 A6 A6 A¯ã6 A6 A6  6  ƒ A "6„ Þ (Að–Aì–(A~qA"AA²Ø"A6 A6 A6 A¯ã6 A6 A6  6  ƒ A "6ˆ Þ (A —Aœ—(A~q@"AA³Ø"A6 A6 A6 A¯ã6  6  ƒ A "6Œ Þ (AÀ—A¼—(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6� Þ (Aà—AÜ—(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6” Þ (A€˜Aü—(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6˜ Þ (A ˜Aœ˜(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6œ Þ (AÀ˜A¼˜(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6  Þ (Að˜Aì˜(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6¤ Þ (A�™AŒ™(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6¨ Þ (A°™A¬™(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6¬ Þ (AЙAÌ™(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6° Þ (Að™Aì™(A~qB"AA°Ø"A6 A6 A6 A¯ã6  6  ƒ A "6´ Þ (�+DÍÌÌÌÌÌ@£D¥Dð?¤! (ô"  (?»bA @ ( ¶> +Ø! (�"  (?»bA @ ( ¶> +€Dï9úþB.ö?£" Dð?¢œDð?¢¡! (”"  (?»bA @ ( ¶> + ! (˜"  (?»bA @ ( ¶> +¸! (œ"  (?»bA @ ( ¶> +À! ( "  (?»bA @ ( ¶> +ø! (¤"  (?»bA @ ( ¶> +ˆ! (¨"  (?»bA @ ( ¶> Dð?D (�+ D{®Gáz„?d! (¬"  (?»bA @ ( ¶> +� (�+(¢! (°"  (?»bA @ ( ¶> +è! (´"  (?»bA @ ( ¶> (Œ" (= (˜(GA @ ( (˜(< +¸  9¸ +¸Dš™™™™™¹?f@ D9¸ (�! (ø"@@ +"DÍÌÌÌÌÌ@cAð2 DÍÌÌÌÌÌ@£D¥Dð?¤DY@¢AAÒÏíAÐ2íA€” +"Dffffffæ?c A ” D333333@c AÀ” D@c Aà” í +�Dš™™™™™©?dA€4A 4AÀ4 +�Dš™™™™™©¿c Aà3í! +�™D/Ý$�¥?¢ü! AAÒ"A6  ÑíA°3í! +Dffffffæ?¢D€f@¢#S£! AAÒ"A6  ÑíA�3í ! Ak("A²F@ (  Ak(A~q^  AµF@ (  Ak(A~q]  (ü"@@ +€#T£!AAÒ"A6 A€5  ÑíAà4í +€D:@¢D-DTû!@£œAAÒÏí! Ak("A²F@ (  Ak(A~q^  AµF@ (  Ak(A~q]  (€"@@Aà5 (”(·AAÒÏíA°5í +¸AAÒÏí! Ak("A²F@ (  Ak(A~q^  AµF@ (  Ak(A~q]  („"@@A°6 +ð"DN@£œAAÒÏíA�6íAAÒ"A6 | ½"B4ˆBÿƒ"BÿQ@ DN@¢" £  B†"B€€€€€€€Î€X@  B€€€€€€€Î€R¸¢  P~ B  B †y}"}† BÿÿÿÿÿÿÿƒB€€€€€€€„ ! B?ˆ!@ B„U@ B€€€€€€€Z~ D¢ B€€€€€€€Q  B€€€€€€€}  B†! B}!  B€€€€€€€Z@ D¢ B€€€€€€€Q  B€€€€€€€}!  B †y"}!  †! BU~ B€€€€€€€} B4†„ B }ˆ B?†„¿ Ñí! Ak("A²F@ (  Ak(A~q^  AµF@ (  Ak(A~q]  (ˆ"@@ (˜("#P"Ak(AvO@  Atj("E@ AÐ6 í! Ak("A²F@ ( Ak(A~q^  AµF@ ( Ak(A~q]  A  AG ÑA ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak("A©F A­FrA   Ak("A©F A­FrA E@ A "E@ @ Ak("A­F@ Dð?¥98 Dð?¥9@  A©F@ Dð?¥9  Dð?¥9¨ +À +  +¨¥£ Dð?¥D@¤¤9¸ +¸ +È¢9°  §A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak("A©F A­Fr A®FrA @  Ak("A©F A­Fr A®FrA E@ �A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( "E@A A!@  j/@ Aj!  AØ"  ü A Ak("A®F A­Fr  A©F@A A€Ýî A A Ýî A AàÛî A Aà.î A AÀÝî A AðÝî A A�Þî A  ¥A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( "@@ Ak("A®F A­Fr A©F@ AF@ (�D9 D@�@9˜ D@�@9° D9ø D9€ A:¨  AF@ D9˜ + Dð? 9  +ÐDð?¥9Ð  ÓA ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( "@@ Ak("A®F A­Fr A©F@ E@ 9  AF@ 9  AF@ 9  AF@ 9  AF@ 9(  R@ ALA #@( N #@"( O@ ( Atj(" (AGA $> (  „A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( @A!@ j/@ Aj!  AØ  ü \A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> (   \A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> (   �|A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak(AFA   Ak(AFA E@ A "E@A ("AF@AAÖØ"A6 D9 Aj*»! A6 9 AF@AAר"A6 A6 Aj("AØ" Aj ü A6 6 AF@AAØØ"A6 A: Aj(AG! A6 : AF@AAÙØ"A6 A6 A j(! A6 6A A!A¬ (Av!@ H@ A¬ (AvOA AtA° j/  Atj/G@A  Aj!   Atj/E E@ Ak( A Ÿ |~A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak("A©F A­Fr A®FrA   Ak("A©F A­Fr A®FrA E@ A "E@A A8AËØ"D9 C8 C8 C8 C8 C8 C8 A6 D9( A60  ·9  ¶8  ¶8 C8 C8 C8 C8 AÐ E A€ AF A° AF Aà AF A� AF AÀ AF Aà A F A€ 6  9(A!A¬(Av!@ H@ A¬(AvOA AtA°j/  Atj/G@A  Aj!   Atj/E @@ Ak("A®F A­Fr A©F@ -à@ A:à A60  | *» + "Dà?¢¡  +¨"¤Dà?¢"£"½Bÿÿÿÿÿÿÿÿÿƒ" * » Dà?¢¡ £"½Bÿÿÿÿÿÿÿÿÿƒ"T@ ! ! ! ¿" B4ˆ§"AÿF  ¿" P B4ˆ§"AÿFr     kAÀJ Dð?! Aý K|D°k! D0¢! D0¢ A½I|D0! D°k¢! D°k¢  " D A¢"¡  " ¡! D A¢"¡  " ¡!  ¢ ¢"¡     ¢  ¢ ¢"¡     ¢      Ÿ¢ "D\�Âõ(\ï?dA D#Ûù~j¼Ô?c   9À  9È D9°  +¸Dð? 9¸ A60  A!AŒ(Av!@ H@ AŒ(AvOA AtA�j/  Atj/G@A  Aj!   Atj/E E@A!AÜ(Av!@ H@ AÜ(AvOA AtAàj/  Atj/G@A  Aj!   Atj/E E@@A!Aü(Av!@ H@ Aü(AvOA AtA€j/  Atj/G@  Aj!   Atj/ (0Aj      AD¦ š}A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak("A©F A­Fr A®FrA   Ak("A©F A­Fr A®FrA E@ A E@A A8AÌØ"D9 C8 C8 C8 C8 C8 C8 A6 A:$ D9( A60 ·9 ¶ ¶C! ! " 8 8 8 ¶ ¶C! ! " 8 8 8 6 AG:$ 9( (0Aj ñA ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak("A©F A­Fr A®FrA   Ak("A©F A­Fr A®FrA E@ A E@A  wA!AŒ(Av!@ H@ AŒ(AvOA AtA�j/  Atj/G@A  Aj!   Atj/E E@A!A¼(Av!@ H@ A¼(AvOA AtAÀj/  Atj/G@A  Aj!   Atj/E E@@A!Aì(Av!@ H@ Aì(AvOA AtAðj/  Atj/G@  Aj!   Atj/ A »A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak("A©F A­Fr A®FrA   Ak("A©F A­Fr A®FrA E@ A E@A AAÍØ"D9 A: A: A: A: A6 ·9 Aq: AqAG: AqAG: AqAG: AðA� A° 6 A ÜA ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak("A©F A­Fr A®FrA   Ak("A©F A­Fr A®FrA E@ A E@A AAÏØ"A6 AØ"  ü 6A Ð }|A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak(AFA   Ak(AFA E@ A E AÀIr@ (!AAÔØ"A6 A6 A6 A6 A6 A6 A6 6 @ AF@AAÍØ"D9 A: A: A: A: A6 A$j(! A(j(AG! A,j(AG!  A j(¸9  Aq:  AqAG:  AqAG:  AqAG: AðA� A° 6 6 Þ AF@AAÏØ"A6 A ( " Ak(AFA   Ak(AFA E@ A " E@A A(A—Ø"õ p (! AH@  ( " jAA_   j6 (( j  ü   (( Amq (! AH@  ( " jAA_   j6 (( Atj  Atü A:$ (Aj6AAÂØ""A6 A:AA!Ø AA!Ø6 A6 A(AŸØ"A6 A6 A6 A€€€x6 C€?8 A6 A6 C8 A6 A6$ ("6 (Ar6 ("@ ( ) Aj("6 (Ar6 ("@ ( ( Aj("6 (Ar6 ("@ ( ' A j("6 (AÀr6 ("@ ( & Aj("6 (Ar6 ("@ ( % Aj*"8 (Ar6 ("@ ( $ Aj*"8 (A r6 ("@ ( #  6 A:  6 Ak(       A­ ¾A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak("A©F A­FrA   Ak("A©F A­FrA E@ A E@A C8 AjC8A aA ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( @ Å A ™O }|~A ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak("A©F A­Fr A®FrA   Ak("A©F A­Fr A®FrA E@ A "@@AA–Ø"A6AA8Ø" A6 6 6 Ak("A®F A­F@#5AÐåkAI@ #5Ak"$5 ( " (=A—´ðx ! ("| (?»Dffffffæ¿ D¸…ëQ¸¾?£D¥Dð?¤Dð? "De@#5Aj$5  (P" Aÿÿÿq"A€€€€r" 6  (Ar6 ("@ ( % (L" A€€€È}r" 6  (Ar6 ("@ ( % +8¶! +@"Dà?¢¶! Dq= ×£pÝ?¢¶! (H"o C m   nA!@ AL@   ²”C€>”" C@À’m   C@@’n Aj!  ((L (( ¶[ (! (P! r! s(! ( V oA!@ AðH@ ( jAðo" ("Ak(AvO@   Atj+¶ ”“!   ²”CoC•8  8 C8 @ *  * *n *  * *m Aj!  (! (L! r! s(! (  V ((I#5Aj$5  A©F@ ! (8" E (4"ErA (T E  +  +°"¢œDð?¥«! +¨ ¢œDð?¥«!  ( GA (G @@  ( F (FA  (A (  A %AU"E ("@ @#4!@ @ #C Ak"A lj" Aj(F@ #BI@#BAk$B #C#BA lj" A ü #4Ak$4 #C#4A ljA ü  Ak!  (  6 A %(6 A¤%(6 A¨%(6 ( (6 ( 6 ("@  A¿ (("(@ ("@#4!@ @ #C Ak"A lj"Aj(F@ #BI@#BAk$B #C#BA lj"A ü #4Ak$4 #C#4A ljA ü  Ak!  ( A6 (:"@ ((" 6 @  A ¿  (F (FA E@ 6 6  AÆAAëØ"A6 A6 A6 A6 A6 A6 c""6 ÞAA§Ø"A6 A6 A6 A6 i! @ AH@AA¥Ø"A6 A6 A6A AéØ"A6 A6 A: #QA ÃA 6 A 6 A: ("@  A¿  6 A AéØ"A6 A6 A: #QA ÃA 6 A 6 A: ("@  A¿  6 A  Aj"v" AM"A v" AM"AÆAAëØ"A6 A6 A6 A6 A6 A6 c6   AÆAAëØ"A6 A6 A6 A6 A6 A6 c6   AÆAAëØ"A6 A6 A6 A6 A6 A6 c6 ( "Aj" (AvK@ AA_ ( Atj" 6 At  ß 6 Aj!  6< Þ {AA¨Ø"A6 A6 A6 A6 i! A (|! ( "Aj" (AvK@ AA_ ( Atj" 6 At  ß 6 A! @ AH@ Ak" ( O@ ( Atj("E@ (AA|! ( "Aj" (AvK@ AA_ ( Atj" 6 At  ß 6 Aj!  A! @ AN@ ( O@ ( Atj(" E@ AH Aj" ( O@ ( Atj("E@ ( ( ! (A ( |! ( "Aj" (AvK@ AA_ ( Atj" 6 At  ß 6 (  (|! ( "Aj" (AvK@ AA_ ( Atj" 6 At  ß 6 Ak!  ( E@ (("E@ (!AAûØ"A6 Aüã6 Aýã6 Aþã6  (4"-@ ("( @ ( E@ (("   AA¯Ø!AAÿØ" 6  Þ  6 A6 A6 (AAøØ"A6 A6 A6 A6 (! A6  6 A6 A6 6 AA¯Ø!AA€Ø" 6  Þ  6 A6 A6 (AAùØ"A6 A6 A6  6 6 (AAùØ"A6 A6 A6  6 6 AA¯Ø!AA�Ø" 6  Þ  6 A6 A6 (AAúØ"A6 A6 (! A6  6 6 h! ( "Aj" (AvK@ AA_ ( Atj" 6 At  ß 6 6@ Þ  (pF (tFA E@  6p  6t   AÆAAëØ"A6 A6 A6 A6 A6 A6 c""6d  Þ   AÆAAëØ"A6 A6 A6 A6 A6 A6 c"6h  Þ   AÆAAëØ"A6 A6 A6 A6 A6 A6 c""6l  ÞAAûØ"A6 Aüã6 Aýã6 Aþã6   (T"E@ AA¯Ø!AAÿØ" 6  Þ  6 A6 A6 (AAøØ"A6 A6 A6 A6 (|! A6  6 A6 A6 6 AA¯Ø!AA€Ø" 6  Þ  6 A6 A6 (AAùØ"A6 A6 A6  6 6 (AAùØ"A6 A6 A6  6 6 AA¯Ø!AA�Ø" 6  Þ  6 A6 A6 (AAúØ"A6 A6 (x! A6  6 6 h"6`  Þ (˜(" Ak(AvAM@ Ak(AvAM@ Ak(AvAM@ A8j*! A8 (AvA M@ (A$jC33³>8 (AvA M@ (A(jCÐA8 +ð¶! (AvA M@ (A,j 8Dš™™™™™Ù?û!DìQ¸…ëÑ¿û ¢¶! (AvA M@ (A0j 8DìQ¸…ëÑ¿ÿ ¢¶! (AvA M@ (A4j 8Dš™™™™™Ù?ÿ¶! (AvAM@ (A8j 8 (AvAM@ (A ( " Ak(AFA   Ak(AFA E@ A " -A AG ÁA ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak(AFA   Ak(AFA E@ A @ @AAØ"A6 6 @AAØ"A6 6 øA ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak(AFA   Ak(AFA E@ A "@AA–Ø"A6 AA8Ø"A6 6 6 @AAØ"A6 6 @AAØ"A6 6 Ak( ï|AA ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak(AFA   Ak(AFA E@ A "E AA¯Ù"A°Aü AAŒØ" 6 Þ 6 A6 A6 A!@ AH  Hq@  Atj*»!  ( O@ Aj"AA_ 6 ( Atj 9 Aj!  @A!AÜ(Av!@  H@ AÜ(AvOA AtAàj/  Atj/G@A  Aj!   Atj/E @ ( E@ (+  A!AŒ(Av!@  H@ AŒ(AvOA AtA�j/  Atj/G@A  Aj!   Atj/E @ ( E@ (+ ( AM@ (Aj+ ( AM@ (Aj+  A  Ak( ŠA ALA #@( N  #@"( O@ A ( Atj(" (AGA  $> ( " Ak(AFA   Ak(AFA E@ A "A!Aœ(Av!@ H@ Aœ(AvOA AtA j/  Atj/G@A  Aj!   Atj/E A E@A Ak( H#?"@ ( "(!  6 (" ( ( ( ( ( 6 A ‘#="( ( A½ÜÊ•|lAµÏÙ²jAwA¯ÖÓ¾l"Av sA÷”¯¯xl"A v sA½ÜÊ•|l"Av sqAtj(!@ @ ("AqE@ ( F  A~q!  A @#="( ( A½ÜÊ•|lAµÏÙ²jAwA¯ÖÓ¾l"Av sA÷”¯¯xl"A v sA½ÜÊ•|l"Av sqAtj(!@ @ ("AqE@ ( F  A~q!  A "E@ #>! ("($> ( "( "A AL! k"A AJ"At"A¯Ø!AA¯Ø" 6 Þ 6 6 6 (! ( Atj!A! At!@  I@  j  j("6 Þ Aj!  A!@ ( J@ ( Atj((" ( Aj!  $> &AA¯Ø AüÿÿÿK@ A¯Ø"$< ž#Ø"A6 A6 A6 A6 A6 A6 A6 A: $R A6 A6 A6 A:  E@ A AAA, ¯ ~  Ak(A~qAA5"E AFr@A AA¯Ø AüÿÿÿK@ A¯Ø!  Ak(A~q  5 G@A   Ak(A~q4! A AÌØ"A 6  6  6 ! AA Ak("AIA (A¨͒G A Aj/AG  Aj-!A! A ­ Aj-"­B ~B|T A AðØ"A6 Añã6 Aòã6  6@  K@  j-! ("( "Aj!  (AvK@  AA_ ( Atj 6  6 AAïØ"A6 A6   j"Aj(6  Aj(6 ("( "Aj!  (AvK@  AA_ ( Atj" 6  At ß  6 A j! Aj!  A!@  I@A ­" ­B|T A Aj"­  jAj/"­| V  j! Aj!  A!@ ("( J@  ( O@ ( Atj("E@ A 5 ­|" ­VA 5 ­ }V  > Aj!   "E A2"!A!@ ("( J@  ( O@ ( Atj(F@  ("( O@ ( Atj("E@  Aj!  A " (A E A AõØ"Aöã6 Añã6 A6  6AAóØ"A6 A6 A6 A: (!  ( (j6  6 - A ( (AjI @ A: A  (" (j-!  Aj6 ! @ AF AFr@@ I@ - A ( (AjI @ A: A  (" (j-!  Aj6 ! e! e! - A 5 5B|T @ A: A  (" (j(!  Aj6 !@ - A 5 5 ­|T @ A:   ( j6 -  AM@ (" E  ("( "Aj!  (AvK@  AA_ ( Atj 6  6 @  A¿ (!AAôØ"A6 A6 A6 A6  6  6  6  6 ( "Aj" (AvK@  AA_ ( Atj" 6  At ß  6 Aj!  @ I@ - A ( (AjI @ A: A  (" (j-!  Aj6 ! e! e! (!AAôØ"A6 A6 A6 A6  6  6  6 A6 ( "Aj" (AvK@  AA_ ( Atj" 6  At ß  6 Aj!   - A 5 5B|T @ A: A  (" (j(!  Aj6 !@ - A 5 5 ­|T @ A:   ( j6 AA - E A A ("E  ("( "Aj!  (AvK@  AA_ ( Atj 6  6 @  A¿ A!@ ("( J@  ( O@ ( Atj("@ 6 Aj!  (( E   A!@ ("( J@  ( O@ ( Atj("@#4!@ @ #C Ak"A lj"Aj(F@ #BI@#BAk$B #C#BA lj"A ü #4Ak$4 #C#4A ljA ü  Ak!   ("( O@ ( Atj( Aj!  AA¯Ø!AAñØ" 6  Þ  6 A6 A6  6  ÞAA¯Ø!AAöØ" 6  Þ  6 A6 A6  6  ÞA Š  #A"( ( A½ÜÊ•|lAµÏÙ²jAwA¯ÖÓ¾l"Av sA÷”¯¯xl"A v sA½ÜÊ•|l"Av sqAtj(!@ @ ("AqE@  ( F  A~q!  A E@ #A"( ( A½ÜÊ•|lAµÏÙ²jAwA¯ÖÓ¾l"Av sA÷”¯¯xl"A v sA½ÜÊ•|l"Av sqAtj(!@ @ ("AqE@  ( F  A~q!  A "E@ (! #A èA!@ ( J@ ( Atj("(@A! (@ ( #= (è A6#A"( ( ("A½ÜÊ•|lAµÏÙ²jAwA¯ÖÓ¾l"Av sA÷”¯¯xl"A v sA½ÜÊ•|l"Av sqAtj(!@ @ ("AqE@  ( F  A~q!  A @#A"( ( ("A½ÜÊ•|lAµÏÙ²jAwA¯ÖÓ¾l"Av sA÷”¯¯xl"A v sA½ÜÊ•|l"Av sqAtj(!@ @ ("AqE@  ( F  A~q!  A "E@ A ("( "E ALr  (!@  J@  Atj( F@   Aj!  A "AN@A ( "    H"k" AJ"A AJ"At"A¯Ø!AA½Ø" 6  Þ  6  6  6 ( (" Atj" Atü  j" G@ Ak"("Aq (AGrE@ Av! Aq"   AÿÿÿGA  @  Ar6 Ü  Atj  kAtü   k"AtjA Atü  6 ("@#4!@ @ #C Ak"A lj"Aj(F@ #BI@#BAk$B #C#BA lj"A ü #4Ak$4 #C#4A ljA ü  Ak!  ( A6 Aj!  ’A AêØ"A6 A6 A6 A6 A6 A: A6 A6 A AM6 A  AM6  6 A:AAìØ"A6 A6 A6 A6 A6 A6 A6 ( (A E@ ("AK  AkqA @ A % (6A¤% (6A¨% (6A¬% ( 6A°% (6A´% -AG6A¸% (6A¼% (6 A %A T6 ("@ A¿ (6 (6 ( 6 (6 (6 (6 ­A AƒØ"A6 A6 A6  6A4A‰Ø"€  6  Þ A +6  6  Þ  6  ÞAA¯Ø!AAŠØ" 6 Þ 6 A6 A6 ( 6  6  Þ @AA¯Ø!AAŒØ" 6 Þ 6 A6 A6 ( 6  6  Þ A A�Ø"A6 AŒã6 A: j bAA‚Ø"A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 ÊA AƒØ"A6 A6 A6 A6  6  ÞA4A‰Ø"€  6  Þ  6  Þ  6  Þ  6  ÞAA¯Ø!AAŠØ" 6 Þ 6 A6 A6 ( 6  6  ÞAA¯Ø!AAŒØ" 6 Þ 6 A6 A6 ( 6  6  Þ  6,  ÞA A�Ø"A6 AŒã6 A: j Ø~@ ( " J@  ( Atj)~ |"B€”ëÜ‚!  O@ AH@ Aj"AA_ 6 ( Atj 7 B€”ëÜ€! Aj!  @ BR@ ( "Aj" (AvK@ AA_ ( Atj B€”ëÜ‚7 6 B€”ëÜ€!  ð@  Ak(Av"H  OA Atj/ A0FA @ Aj!  Ak(Av!@  H Ak" Ak(AvOA Atj/ A0FA @ Ak!   F@AAªØ"A6 A6 A 6 A6  AAªØ"A6 A6   ï6   k6  Œ~ ½"Bÿÿÿÿÿÿÿƒ" B€€€€€€€„ B4ˆ"P! §"A³kAÎw !AA¯Ø!AAŽØ" 6  Þ  6 A6 A6 @ BR@ ( "Aj" (AvK@  AA_ ( Atj B€”ëÜ‚7  6 B€”ëÜ€!  ( E@AAªØ"A6 A6 A 6 A6   A! AN@@ AJ@ BA  AN"¬†Ê  k!  A k"!@ AJ@A  A N!B!A!@  H@ B~! Aj!   Ê  k!  ( " Ak"M@ ( Atj)å! ( Ak!@ AN@  ( O@  ( Atj)åA ðí! Ak!   Ak(Av kË �  ("Ak(AvN@  AH@AAªØ"A6 A6 A 6 A6  A  Ak(Av"N   OA  Atj/ "A5G@AA A5J  Aj Ak(AvH "AJA E AJq Ak" Ak(AvOA  Atj/ A0kAqA ! A ï! @ (! Ak(AvAk!@ AN  Ak(AvOA  Atj/ A9FA @ Ak!  AH@AAªØ"A6 A6 A Ä6 Aj6    Ak(AvOA  Atj/ AjAÿÿq"A€I@#U Atj(  AAØ" ; !AAªØ"A6 A6  A ï í6  6    (Ë � ( Ak(Avk Ak(Avk"AL@  í -@  íA À ñí A -@ A€Ä ñí í A À ñ í í ¿~~B b Bÿÿÿÿÿÿÿÿÿ DàCf B€€€€€€€€€ DàÃe  ° "BS!B }  "P! å" ( "AH A   Eq   ð !  AÀà -A€ÃA ÀA  -  ( AHÎ Ì|~~B AjH AJr B AN| Aœç(AvO@ AtA çj+¢A k"Aœç(AvO@ AtA çj+£ "DpBcE B  œ"¡"Dà¿ ™Dü©ñÒMbP?c  Dà?d­ °| "BY@ æ" Ak(Av kË  Ì" ( jÍ "(Ak(Av (ALA A€Ä A (~ ! E@  AÀ7í   AÀ7í  ("  j~í ¹ b" ¡Dbr@A€7A 7 !  a DcqAÀà -A€ÃA ÀA  - AÎ ™ ( AHA ( -Ð!  ½B?ˆ§AÀà -A€ÃA ÀA  - AÎ MAA«Ø"A: A: A: A: A: A6 A6  6  :  °~A! A j"A€€ MA€€  AjApq A�€ j!# !@@ E Aj( Ajk" O  Kq@ ! ! " I  "(!  E@#.E@AÐå$. #.! A j"A€€ MA€€  AjApq ­ ­B||"B€€€€Z@ ?¬B†" T@  }Bÿÿ|Bˆ§@AH@ §$. A6 Aj#.6 AjA6 A jA6  @  (6 ($ A6 Aj(" A j"A€€ MA€€  AjApq Ajj"kAœ€ O@ Aj 6 A6 Aj 6 Aj"A6 A j"A6 # 6 A6 A6 $  Á AüÿÿÿK@ AjApqAk"Aj"##kK@# #Aj(#kKA @#@#Aj#6 Ó!#@# 6 $ $ Aj$#$ #A# A€€j"#Aj(#k"  Ij"#kü $ # 6#Aj!# j$  Í AqA @ #-!@ @ AjO Aj(IA @A  (!  A @ Ak("@ Ak"A gkAtA¸j"(6  6 Ak"# 6 AjA6 A jA6 $  # Ak"(jF@ $#A (Ajü �~ Aj"A€€K@ AjApqÓAj"A ü  AA Akgk" AI"AtAˆ„"B?‡"…! B‡ …"y!  † BÀ }ˆ„"Bÿÿÿÿƒ! B ˆ"B´„£‹~ B¢µ¿È ~ B´„£‹~" B ˆ|" Bÿÿÿÿƒ|! B¢µ¿È ~ B ˆ| B ˆ|$X Bÿÿÿÿƒ B †|" ºD„pQ̘8?¢  †ºD-DTû!9?¢ ±"T­#X"B ˆ|º$V  B5† B ˆ„|ºDð;¢$W#VB€€€€€€€Ø< B4†} …B€€€€€€€€€ƒ„¿" ¢$V#W ¢$W B>‡ }§ õ|~ ½" B ˆ§"Aÿÿÿÿq"AûäÿM@ AžÁšòI@Dð? ¢" ¢!Dð? Dà?¢"¡"Dð? ¡ ¡    D�Ë ú>¢DwQÁlÁV¿ ¢DLUUUUU¥? ¢  ¢  DÔ8ˆ¾éú¨½¢Dı´½žî!> ¢D­Rœ€O~’¾ ¢ ¢ D¢¡   A€€ÀÿO@ ¡  Av! B ˆ§Aÿÿÿÿq"Aü²‹€I@A! | D@Tû!ù? !A! AûÃäÿG| D1cba´Ð= "¡D1cba´Ð=  D`a´Ð= "Dsp.Š£; !  ¡Dsp.Š£;   D@Tû!ù¿ ! AûÃäÿG| D1cba´Ð½ "¡D1cba´Ð½  D`a´Ð½ "Dsp.Š£» !  ¡Dsp.Š£»  ! $V $W   AûÃä‰I@ Av" DƒÈÉm0_ä?¢ž"D@Tû!ù?¢¡" D1cba´Ð=¢"¡"½B ˆ§AvAÿqkAK@  " D`a´Ð=¢"¡" Dsp.Š£;¢  ¡ ¡¡"¡"½B ˆ§AvAÿqkA1K@ " D.Š£;¢"¡" DÁI %šƒ{9¢  ¡ ¡¡"¡! $V ¡ ¡$W ª  A ú"k   !#V!#W! Aq| ¢" D}þ±WãÇ>¢DÕaÁ *¿ ¢D¦ø�?    ¢¢ D|ÕÏZ:Ùå=¢Dëœ+ŠæåZ¾ ¢ !  Dà?¢  ¢" ¢¡¢ ¡ DIUUUUUÅ¿¢¡¡ ¢" ¢!Dð? Dà?¢"¡"Dð? ¡ ¡    D�Ë ú>¢DwQÁlÁV¿ ¢DLUUUUU¥? ¢  ¢  DÔ8ˆ¾éú¨½¢Dı´½žî!> ¢D­Rœ€O~’¾ ¢ ¢ ¢¡   "š AjAq ˆ|~| ½"B4ˆ§Aÿq"AÉkA?O@Dð? AÉkA€€€€xO  A‰O@D B€€€€€€€xQ  Dð?  AÿO DDð BS  A! Dþ‚+eGg@¢D8C "½"B-† BÿƒB†§"AtA˜j)|! D8à"DúþB.v¿¢  D:;ž¼š÷ ½¢ " ¢! AtA˜j+    D¢DÕaÁ *¿ ¢D¦ø�?    ¢¢ D|ÕÏZ:Ùå=¢Dëœ+ŠæåZ¾ ¢ !  ¢  ¢DIUUUUUÅ¿ ¢  A€€ÀÿO@ ¡  Av! B ˆ§Aÿÿÿÿq"Aü²‹€I@A! | D@Tû!ù? !A! AûÃäÿG| D1cba´Ð= "¡D1cba´Ð=  D`a´Ð= "Dsp.Š£; !  ¡Dsp.Š£;   D@Tû!ù¿ ! AûÃäÿG| D1cba´Ð½ "¡D1cba´Ð½  D`a´Ð½ "Dsp.Š£» !  ¡Dsp.Š£»  ! $V $W   AûÃä‰I@ Av" DƒÈÉm0_ä?¢ž"D@Tû!ù?¢¡" D1cba´Ð=¢"¡"½B ˆ§AvAÿqkAK@  " D`a´Ð=¢"¡" Dsp.Š£;¢  ¡ ¡¡"¡"½B ˆ§AvAÿqkA1K@ " D.Š£;¢"¡" DÁI %šƒ{9¢  ¡ ¡¡"¡! $V ¡ ¡$W ª  A ú"k   !#V!#W! Aq| ¢" ¢!Dð? Dà?¢"¡"Dð? ¡ ¡    D�Ë ú>¢DwQÁlÁV¿ ¢DLUUUUU¥? ¢  ¢  DÔ8ˆ¾éú¨½¢Dı´½žî!> ¢D­Rœ€O~’¾ ¢ ¢ ¢¡   ¢" D}þ±WãÇ>¢DÕaÁ *¿ ¢D¦ø�?    ¢¢ D|ÕÏZ:Ùå=¢Dëœ+ŠæåZ¾ ¢ !  Dà?¢  ¢" ¢¡¢ ¡ DIUUUUUÅ¿¢¡¡ "š Aq € A6 A 6 A6 A 6 AA¯Ø!AAŠØ" 6  Þ  6 A6 A6 6AA¯Ø!AA‹Ø" 6  Þ  6 A6 A6 6AA¯Ø!AAŒØ" 6  Þ  6 A6 A6 6 A6 A6 A6$ A6( A6, A60 š A6 A6 A: A6 C8 C8AA‡Ø"A6 A6 A6 A6 6AA‡Ø"A6 A6 A6 A6 6 Aÿ6 Aÿ6$ - ( (" Ak(A~q 3"@A A¿  @  A¿ ‹#R"E@A A>Ø"A6 A6 A6 A6 A6 A6 A6 A: $R A6 A6 A6 A:  … ( ( ( (D r| Ak(AíG@ ( Aj"6 AèJ@ (! Aa 6 +! Aa 9 +! Aa 9 ( Ak6 L +(DÐ?c@ ( "A6 D9 D9 ((( „ L +(DÐ?c@ ( "A6 D9 D9 ((( „ 8A AÏØ"A 6  6  6 6 6 6  (" ( ( ˆ A$A$ A$A$'D-DTû! @$SDUµ»±k@$TA€AËØ"Aˆ×A€ü $UAA¯Ø!AA¹Ø" 6 Þ 6 A6 A6 $9AA·Ø"ê $7A$RAA¯ØAA¯Ø$QAA¼Ø"ê $=AAÁØ"ê $AA$?AAºØ"ê $;A$6AA¯Ø!AAØ" 6 Þ 6 A6 A6 $LAA¯Ø!AAÄØ" 6 Þ 6 A6 A6 $HAA¯Ø!AAÀØ" 6 Þ 6 A6 A6 (A6 $@AA¯Ø!AA˜Ø" 6 Þ 6 A6 A6 $GA$IA$FA$€?€?€?š™™>ÍÌŒ?š™¹?�Âõ=ìQ¸>¤p½>®Ç>??¸?A¼ ¨¦›D;oƒ;¦›Ä;ÍÌL>fff?€?33“?š™™>ÍÌŒ?À?®Ga>)\�=¶ó}=h‘m=®Gá=\�Â={®=€?š™™>ÍÌL=ÍÌL@ÍÌŒ?�Âu>)\=š™™> ?@?ffæ>ÍÌ @ÍÌ ?š™™?ìQ8>)\?ìQ8?ö(\?333?= W?33s?€>333?€?fff? ×#=�Âõ=š™™>ÍÌL?€? ?ÍÌL?š™Y?33³? ×£=B`å<ôýÔ<–C =ÍÌL=ìQ8=�Âu=š™?)\�>€?ff&@�Âu>�Âu=ÍÌ ?š™™>ff†?333?ff¦?š™@?š™™?�Âu=Aø ”ÿÿÔäôÿ) ÿÿâéÿA¦ òð?n¿ˆO;›<53û©=öï?]ÜØœ`q¼a€w>šìï?Ñf‡z^�¼…nèãï?ög5RÒŒ¾ï?m{ƒ]¦š—<‰ùlXµï?üïý’µŽ<÷Gr+’¬ï?Ñœ/p=¾><¢ÑÓ2ì£ï? n�‰4j¼Óþ¯f›ï?½/*RV•¼Q[Гï?UêNŒï€P¼Ì1lÀ½Šï?ôÕ¹#É‘¼à-©®š‚ï?¯U\éãÓ€÷ìš<ª¹h1‡Tï?�8†Ë‚ç�¼Ùü"PMï?�æDAoŠ<ÖŒbˆ;Fï?}ä°z€<–Ü}‘I?ï?”¨¨ãýŽ–<8bunz8ï?}Htò^‡©¯ ï?¶«°MuMƒ<·1 þï?Lt¬âB†<1ØLüpï?JøÓ]9Ý�<ÿd²üî?[Ž;€£†¼ñŸ’_Åöî?hPKÌíJ’¼Ë©:7§ñî?Ž-Qø™¼fØm®ìî?Ò6”>èÑq¼÷Ÿå4Ûçî?γ™¼å¨Ã-ãî?mL*§HŸ…<"4L¦Þî?Ši(z`“¼€¬EÚî?[‰H�§X¼*.÷! Öî?šIg›,|¼—¨PÙõÑî?¬Â`ícC<-‰a`Îî?ïd; f–Z~dx¼t_ìèuŸî?°}‹ÀJt�¥HšŸî?ŠæU2†¼ÉgBVëŸî?ÓÔ ^Ëœ�T'¤î?47;ñ¶i“¼ÎL™‰¥î?ÿ:„^€¼­Ç#F§î?nWrØPÔ”¼í’D›Ù¨î?Š[g­�<™fŠÙǪî?´êðÁ/·�<Û *Bå¬î?ÿçÅœ`¶e¼ŒDµ2¯î?D_óYƒö{<6w™®±î?ƒ=§ “¼Æÿ‘ [´î?)l‹¸©]¼åÅͰ7·î?Y¹�|ù#l¼RÈËDºî?ªùô"CC’¼PNÞŸ‚½î?KŽf×lÊ…¼ºÊpñÀî?'Α+ü¯q<�𣂑Äî?»s á5Òm<##ãcÈî?c"b"Ň¼eå]{fÌî?Õ1âㆋ<3-Jì›Ðî?»¼ÓÑ»‘¼]%>²Õî?Ò1îœ1Ì�´!Õ‚¼_›{3—|ï?É G;¹*‰¼)¡õF†ï?Óˆ:`¶t<ö?‹ç.�ï?qr�QìŃ<ƒLÇûQšï?ð‘Ó�÷�¼Ú�¤¢¯¤ï?}t#☮�¼ñgŽ-H¯ï? ªA¼ÃŽ<'Zaîºï?2ë©Ã”+„<—ºk7+Åï?î…Ñ1©dŠ<@En[vÐï?íã;äº7޼¾œ­ýÛï?�Í‘M;‰w<Ø�ž�Áçï?‰Ì`AÁS<ñq�+Âóï?A¨) ;4no GPU canvas on this hostAø) wpneeds half float render targets, which this device lacksAø* wallA˜+ vsA¸+ fsAØ+ vs_pieceAø+ fs_pieceA˜, %vs_piece_shadowAÈ, %fs_piece_shadowAø,  debrisA˜- vs_shadowAÈ- fs_shadowAø- vs_shardA˜. fs_shardA¸.  shadeAØ.  bloomAø. fs_setupA˜/ fs_downA¸/ fs_blur_xAè/ fs_blur_yA˜0  finalA²0 €?€?€?Aè0 UBOAˆ1 textureA¨1 samplerAÈ1 Jobs.runAè1 Worker.spawnA˜2 Audio.startAÈ2 % Aè2 BUILD Aˆ3  DEG/EA¨3 /S TWIST AØ3  xAø3 ZOOM OUTA˜4 ZOOM INA¸4 HOLDAØ4  RING Aø4 ZOOM 10^A¨5  STRIKES AØ5 PEELED Aˆ6 :A¨6 T+ AÈ6 MATERIAL Aø6 nanA˜7 infA¸7 .AØ7 eAø7 EA˜8 A¸8 AØ8 Aø8 A˜9 A¸9 AØ9 Aø9 A˜: A¸:  AØ:  Aø:  A˜;  A¸;  AØ; Aø; A˜< A¸< AØ< Aø< A˜= A¸= AØ= Aø= A˜> A¸> AØ> Aø> A˜? A¸? AØ? Aø? A˜À  A¸À !AØÀ "AøÀ #A˜Á $A¸Á %AØÁ &AøÁ 'A˜Â (A¸Â )AØÂ *AøÂ +A˜Ã ,A¸Ã -AØÃ /AøÃ 0A˜Ä 1A¸Ä 2AØÄ 3AøÄ 4A˜Å 5A¸Å 6AØÅ 7AøÅ 8A˜Æ 9A¸Æ ;AØÆ <AøÆ =A˜Ç >A¸Ç ?AØÇ @AøÇ AA˜È BA¸È CAØÈ DAøÈ FA˜É GA¸É HAØÉ IAøÉ JA˜Ê KA¸Ê LAØÊ MAøÊ NA˜Ë OA¸Ë PAØË QAøË RA˜Ì SA¸Ì TAØÌ UAøÌ VA˜Í WA¸Í XAØÍ YAøÍ ZA˜Î [A¸Î \AØÎ ]AøÎ ^A˜Ï _A¸Ï `AØÏ aAøÏ bA˜Ð cA¸Ð dAØÐ fAøÐ gA˜Ñ hA¸Ñ iAØÑ jAøÑ kA˜Ò lA¸Ò mAØÒ nAøÒ oA˜Ó pA¸Ó qAØÓ rAøÓ sA˜Ô tA¸Ô uAØÔ vAøÔ wA˜Õ xA¸Õ yAØÕ zAøÕ {A˜Ö |A¸Ö }AØÖ ~AøÖ Ž @`€ Àà @`€ Àà @`€ Àà @`€ Àà @ ` €   À à ! !@!`!€! !À!Àà!" "@"`"€" "À"à"# #@#`#€# #À#à#$ $@$`$€$ $À$à$% %@%`%€% %À%à%& &@&`&€& &À&à&' '@'`'€' 'À'à'( (@(à`(€( (À(à() )@)`)€) )À)à)* *@*`*€* *À*à*+ +@+`+€+A˜Û OH0123456789abcdefghijklmnopqrstuvwxyzAøÛ — 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899A˜ç  ¸A¦ç ²ð?$@Y@@�@ˆÃ@jø@€„.AÐcA„×—AeÍÍA _ BèvH7B¢”mB@åœ0¢B�ļÖB4&õk C€à7yÃAC Ø…W4vCÈNgmÁ«C=‘`äXáC@Œµx¯DPïâÖäKD’ÕMÏð€DAèè ¸ M0ßSSI¼NðJ �™°¥‡5R–H1—T˜W ™Y šA¾P¥R¥T¥V¥B€™� ™‚ ™ƒ ™„ ™… ™†™‡™ˆ™‰ ™Š ™‹ ™Œ ™� ™Ž™�™�(™‘)™’*™“+™”,™•-™–.™—/™˜(™™)™š*™›+™œ,™�-™ž.™Ÿ/™ h™¡i™¢j™£k™¤l™¥m™¦n™§o™¨h™©i™ªj™«k™¬l™­m™®n™¯o™²º™³‘™´†™¶‘B·‘B™¼‘™Âʙיĉ™Æ—BÇ—B™Ì—™Ò™Ó™Ö™B×™Bâ¥ã¥ä¡æ¥Bç¥Bòú™ó©™ô�™ö©B÷©B™ü©™ûFFûFIûFLûFFIûFFLûSTûSTûDFûD5ûD;ûNFûD=  A�ô $++++++++TVVVVVVVVA¶ô Ÿ+++++++++[VVVVVVVJVV1P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1N NN$nN1&nQN$PN9�S1P1P 1P1P1PS$P1\{\{\{\{\{y\{\{\-+IHx\{– +(***+»µ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++ÍFÍ+%+UVVVVVUVV$��������+²Ñ²Ñ²Ñ²ÑÍÌ××××׃����������¬¬¬¬¬¬¬¬¬¬1P1P1P1P1P11P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1‡¦‡¦‡¦‡¦‡¦‡¦‡¦‡¦*++++++++++++TVVVVVVVVVVVVA³ø !TVVVVVVVVVVVV *+++++++++++++*A‰ù w*++++++++++++++++++++++++++VVl�++++++++++++++++++++++++++++++++++++++++++lA++VVVVVVVVVVVVVV,V+++++++++++++++++++++A¨ú  lAÖú è%%%%%%%%%%%%%%%%%%%%%%%%%Vzž&%%%%%%%%%%%%%%%++OVV,+VV9++UVV++OVV,+VV�7u[{\++OVV¬9++UVV++OVV,++VV2�Wo�~É×~-��~9oW��~~+++++++++++++$+—+++++++++*+++++VVVVV€����9»*++++++++++++++++++++++++++++++++++++++++���������������ɬ¬¬¬¬¬¬¬¬¬¬¬¬¬¬Ð N1´ÁÁ××$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P××SÁGÔ×××++++++++++++A™þ N1P1P1P1P1P1P1P $P1P1P1P1PAÚþ V+++++++++++y\{\{O{\{\{\{\{\{\{\{\{\{\-++y\{\-y*\'\{\{\{¤ ´\{\{Ox8+++++++++++++O-++AËÿ HAÕÿ *++++++++++++++++++++++++++A‘€ ++++++++HVVVVVVVVAÜ€ +++++++++++++UVVVVVVVVVVVVA–� $+++++++++++VVVVVVVVVVVVAÜ� '$++++++++++++++++VVVVVVVVVVVVVVVVVA½‚ *++++++++++VVVVVVVVVVAó‚ *++++++++++VVVVVVVVVVA´ƒ +++++++++++UVVVVVVVVVVA‘„ V9A¡„ 'QowA°„ |A¼„ ƒŽ’—ªAÌ„ ´ÄAÆ… ÆÉÛAŸ† ÞáäA¸† çAއ êA‰ˆ íA¤ˆ Ì  àÿÿ¿çy$ÿÿÿþÿÿ9ÿÿÿÿ‡ÿÿÔþÿÃÒÎÍOÊËÏaÓÑ£Õ‚ÖÚÙÛ8±ÿÿŸÿÿÈÿÿ($ÿÿÿ3ÿÿ&ÿÿ~ÿÿ+*]ÿÿ(*?*=ÿÿEG***.ÿÿ2ÿÿ6ÿÿ5ÿÿO¥K¥1ÿÿ(¥D¥/ÿÿ-ÿÿ÷)A¥ý)+ÿÿ*ÿÿç)C¥*¥»ÿÿ'ÿÿ¹ÿÿ%ÿÿ¥¥$L àÿÿÿÿÿTt&%@?ÚÿÿÛÿÿáÿÿÀÿÿÁÿÿÂÿÿÇÿÿÑÿÿÊÿÿøÿÿªÿÿ°ÿÿŒÿÿÄÿÿ ÿÿùÿÿpÿÿÿ àÿÿPñÿÿ0ÐÿÿÿÿÿÀ `ЗøÿÿŠ@ôÿžçÿ‰Ûçÿ’çÿ“çÿœçÿ�çÿ¤çÿ8ŠŠæÿÿÿÅÿÿAâÿ�øÿÿVªÿÿJd€p~ ¶ÿÿ÷ÿÿÛãÿœÿÿ�ÿÿ€ÿÿ‚ÿÿ¬ðÿÿ£âÿAßÿºßÿäÿÿ ±ÿÿÿ0Ðÿÿ ÖÿñÿÖÿÕÕÿØÕÿäÕÿÖÿáÕÿâÕÿÁÕÿ ãÿÿÿÿ ¼ÿÿÿ¼Zÿ üuÿØZÿ0±ZÿµZÿ¿ZÿîZÿÖZÿëZÿÐÿÿ½ZÿÈuÿ0hÿ`üÿ àÿÿ(Øÿÿ@Àÿÿ àÿÿ àÿÿ"Þÿÿ0 1 x€�†‰ŠŽ��“”•–—šœ�žŸ¦©®± ² ·!¿"Å#È#Ë#Ý$ò#ö%÷& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\e?f@hAiBj@kClDoBqErFuG}H‚I‡J‰KŠL‹LŒM’N�OžPEW{|}X†YˆZ‰ZŠZŒ[Ž\�\¬]­^®^¯^Â_Ì`ÍaÎaÏbÐcÑdÕeÖf×gðhñiòjókôlõmùný-þ-ÿ-PiQiRiSiTiUiViWiXiYiZi[i\i]i^i_i‚ƒ„…†‡ˆ‰ÀuÏv€‰�Š‚‹…Œ†�p�q�vžwžxŸyŸz { |¡}¡³¢º£»£¼¤¾¥Ã¢Ì¤Ú¦Û¦åjê§ë§ìnó¢ø¨ù¨ú©û©ü¤&°*±+²N³„bºc»d¼e½f¾m¿nÀoÁpÂ~ÃÃ}Ï�ДѫҬӭ԰ձֲ×ÄØÅÙÆÚ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~Aø“ LIGHTINGA˜” LOADINGA¸” RUPTUREAØ” PUSHING INAˆ•  buildA¨• statusLabelAØ• zoomLabelAˆ– shardLabelA¸– clockLabelAè– !materialLabelA˜— inkA¸— seismicAØ— shepardAø— breachesA˜˜ strikesA¸˜ strikePanAè˜ latticeAˆ™ turnA¨™ openAÈ™ paceAè™  promptAˆš È!nƒù¢ÑW'ü)DN™•bÛÀÝ4õ«cQþA�C<:n$·aÅ»Þê.IàÒMBëþ’Ñ õ5‚è>§)±&pœé„D».9Ö‘9A~_´‹_„œô9Sƒÿ—ø;(ù½‹/ï˜ÞÏ~6mm Zf?FO· Ë'Ǻ'u-ê_ž÷9={ñåë±_ûkê’RŠF0V]� ¼Ïð«k{üa‘ã©6ôš_…™eæ^€Øÿ�@h W1'sMŸÞàÃð4÷?�æyÌ׿é,jx÷? Âîo׿ µú`òö?àQã׿}Œ¦Ñö?x(8[¸Ö¿Ñ´Å I±ö?x€�U]Ö¿º /3G‘ö?vÐÖ¿#B"Ÿqö?��†Ê¨Õ¿Ù¥™ORö?PVCOÕ¿Ä$�ªV3ö?@kÃ7öÔ¿Ü�k³ö?P¨ý§�Ô¿L\ÆRdöõ?¨‰9’EÔ¿O,‘µgØõ?¸°9ôíÓ¿Þ�[˼ºõ?p�DΖӿxÙòa�õ? ½@Ó¿‡VFV€õ?€FïâéÒ¿ÓkçΗcõ?à08”Ò¿“§â%Gõ?ˆÚŒÅ>Ò¿ƒEBÿ*õ?�')áéѿ߽²Û"õ?øH+m•Ñ¿×Þ4G�óô?ø¹šgAÑ¿@(ÞÏCØô?˜ï”ÐíпȣxÀ>½ô?Û¥šÐ¿Š%àâô?¸cRæGп4„Ô$ˆô?ð†E"ëÏ¿ -Îmô?°uJGÏ¿T9ÓÙSô?0=D¤Î¿Z„´D':ô?°éD οûøAµ ô?ðw)¢`Í¿±ô>Ú‚ô?�•ÀÌ¿�þW]�îó?‰V) Ì¿éL  ÙÕó?���Ë¿+ÁÀ`½ó?ÐÓÌÉâÊ¿¸Úu+$¥ó?�.@EÊ¿ПÍ"�ó?ðhw¨É¿z„Å[uó?0Him É¿â6­IÎ]ó?ÀE¦ qÈ¿@ÔM˜yFó?0´�ÖÇ¿$ËÿÎ\/ó?pb<¸<Ç¿I ¡uwó?`7›š£Æ¿�9>7Èó? ·T1 Æ¿Aø•»Nëò?0$v}sſѩ Õò?0Â�{ÜÄ¿*ý·¨ù¾ò?ÒQ,FÄ¿« z©ò?ƒ¼Š°Ã¿0µ`r“ò?Ik™ÿõ¡WWú}ò?@¤�T‡Â¿¿;›³hò? yø¹óÁ¿½õ�ƒ�Sò? ,%È`Á¿;ɪ·>ò? ÷WÎÀ¿¶@©+*ò? þIÜ<À¿2AÌ–yò?€K¼½W¿¿›üÒ ò?@@–7¾¿ HMIôìñ?@ù>˜½¿ie�RõØñ? ØNgù»¿|~W#Åñ?`/ yܺ¿é&Ët|±ñ?€(çÃÀ¹¿¶, žñ?Àr³F¦¸¿½p¶{°Šñ?¬³�·¿¶¼ï%Šwñ?8Eñt¶¿Ú1L5�dñ?€‡m^µ¿Ý_'�¹Qñ?à¡Þ\H´¿LÒ2¤?ñ? jMÙ3³¿Úùr‹,ñ?`Åøy ²¿1µì(0ñ? b˜F±¿¯4„Úûñ?Òjlú¯¿³kNîõð?@wJ�Ú­¿ÎŸ*]äð?…ä켫¿!¥,cDÒð?À@‰¡©¿˜â|§Àð?À3Xˆ§¿Ñ6ƃ/¯ð?€Ög^q¥¿9 ˜Û�ð?€eIŠ\£¿ßçR¯«Œð?@dãI¡¿û(N/Ÿ{ð?€ë‚Àrž¿�5Œµjð?€RRñUš¿,ùì¥îYð?€�Ïb=–¿�,ÑÍIIð?ªŒû(’¿©­ðÆÆ8ð?ù {1Œ¿©2ye(ð?ª]5„¿Hsê'$ð?ìÂx¿•±ð?$y `¿ú&÷àï?�„óïo?têa¡ï?=5A܇?.™�°cï?€ÂģΓ?Í­î<ö%ï?‰ÁŸ›?ç‘Èéî?ÎØ°¡?«±Ëx€®î?ÀÐ[Š¥?› �¢tî?€Ø@ƒ\©?µ™ ƒ‘:î?€Wïj'­?Vš` àî?À˜å˜u°?˜»wåÊí? ãõS²?‘| ò’í?8‹Ý.´?Î\ûf¬\í?ÀW‡Y¶?�Þ^ª,'í?j5vÚ·?Í,k>nòì?`NC«¹?y§¢m¾ì?` »Çx»?m7m&‹ì? ç2C½?X]½”Xì?`Þq1 ¿?ŒŸ»3µ&ì?@‘+gÀ??çìîƒõë?°’‚…GÁ?Á–ÛuýÄë?0ÊÍn&Â?(J† •ë?PŦ×Ã?,>ïÅâeë?3<ÃßÃ?‹ˆÉgH7ë?€zk6ºÄ?J0!K ë?ðÑ(9“Å?~ïò…èÛê?ð$ÍjÆ?¢=`1¯ê?�fìø@Ç?§XÓ?æ‚ê?ðõÀÈ?‹s ï@Wê?€öT)éÈ?'K«�*,ê?@ø6»É?Ñò“ ê?,í‹Ê?<Û$Ÿ×é?Ð\Q[Ë?�±Ç%®é?À¼Ìg)Ì?/Ηò.…é?`HÕ5öÌ?uK¤îº\é?ÀF4½ÁÍ?8Hç�Æ4é?àϸŒÎ?æRg/O é?�À UÏ?�×ÿŽRæè?¸lÐ?|̟οè?Г¸qÐ?þÚÀ™è?p†žkÔÐ?û#ª'tè?ÐK3‡6Ñ?š³¬Oè?H#g ˜Ñ?U>eèI*è?€ÌàÿøÑ?`ô•è?hc×_YÒ?)£àc%âç?¨ 0¹Ò?­µÜw³¾ç?`CrÓ?Â%—gª›ç?ìm&wÓ?Wòyç?0¯ûOÕÓ? ÖÛÊVç?à/ãî2Ô?k¶Oæ?<[B‘l~<•´M0æ?A]Hê¿�öëÿïæ?S-â€~¼€—†ç?Ry qfÿ{<égüÿ/ç?$‡½&⌉<¹{F0é?v˜KN€.˜Ýÿ¯é?7“ZŠà@‡¼fûIíÿÏé?à›ÁÎ?O*°ê?_?ÿ<ýi¼Ñ®×ÿÏê?´p�ç>‚¼xQîÿïê?£Þà>j<[ eÛÿë?¹ 8ÈZO†ÐEÿŠ<@‡ùÿ�ë?ùÖwþ|ððô?S… ‰—<ÑKÜõ?6¤fqe`ɰõ?À ¿ AŸ¼¼IÐõ?)G%û*�˜¼‰z¸çÿïõ?i퀷~”¼ ö?AÙ» ȹò‚,Ö¿€V7($´ú<€ö?Aù» X¿½ÑÕ¿ ÷àØ¥½`ö?A™¼ XEwvÕ¿mP¶Õ¤b#½@ö?A¹¼ ø-‡­Õ¿Õg°žä„æ¼ ö?AÙ¼ xw•_¾Ô¿à>)“i½ö?Aù¼ `‹aÔ¿Ì„LH/Ø=àõ?A™½ ¨††0Ô¿: ‚íóBÜ<Àõ?A¹½ HiUL¦Ó¿`”Q†Æ± = õ?AÙ½ €˜šÝGÓ¿’€ÅÔMY%=€õ?Aù½  áºâèÒ¿Ø+·™{&=`õ?A™¾ ˆÞZ‰Ò¿?°Ï¶Ê=`õ?A¹¾ ˆÞZ‰Ò¿?°Ï¶Ê=@õ?AÙ¾ xÏûA)Ò¿vÚS($Z½ õ?Aù¾ ˜iÁ˜ÈÑ¿Tçh¼¯½õ?A™¿ ¨««\gÑ¿ð¨‚3Æ=àô?A¹¿ H®ù‹Ñ¿fZýĨ&½Àô?AÙ¿ �sâ$£Ð¿ô~îk ½ ô?Aù¿ д”%@п-ôž¸6ð¼ ô?A™À д”%@п-ôž¸6ð¼€ô?A¹À @^m¹Ï¿‡<™«*W =`ô?AÙÀ `ÜË­ðο$¯†œ·&+=@ô?AùÀ ð*n'οÿ?TO/½ ô?A™Á ÀOk!\Í¿hÊ»‘º!=ô?A¹Á  šÇ÷�Ì¿4„ŸhOy'=ô?AÙÁ  šÇ÷�Ì¿4„ŸhOy'=àó?AùÁ �-t†ÂË¿�·‹1°N=Àó?A™Â À€NÉóÊ¿f�Í?cNº< ó?A¹Â °â¼#Ê¿êÁFÜdŒ%½ ó?AÙ °â¼#Ê¿êÁFÜdŒ%½€ó?Aù PôœZRÉ¿ãÔÁÙÑ*½`ó?A™Ã Ð e È¿ úÛ¿½+=@ó?A¹Ã à‰«Ç¿XJSr�Û+=@ó?AÙÃ à‰«Ç¿XJSr�Û+= ó?Aùà ÐçÖÆ¿fâ²£jä½ó?A™Ä �§p0ÿÅ¿9PŸCž½ó?A¹Ä �§p0ÿÅ¿9PŸCž½àò?AÙÄ °¡ãå&Å¿�[�‹Þ ½Àò?AùÄ €Ël+MÄ¿½àí?AÙÐ `FÑ;—±?›ž V]2%½ í?AùÐ àѧõ½³?×NÛ¥^È,=`í?A™Ñ  —MZéµ?]<i,½@í?A¹Ñ Àê Ó·?2í�©�ì<í?AÙÑ @Y]^3¹?ÚG½:\#=Àì?AùÑ `­�Èj»?åh÷+€�½ ì?A™Ò @¼Xˆ¼?Ó¬ZÆÑF&=`ì?A¹Ò  ƒ9Ǿ?àEæ¯hÀ-½@ì?AÙÒ àÛ9‘è¿?ý ¡OÖ4%½ì?AùÒ à'‚ŽÁ?ò-Îxï!=àë?A™Ó ð#~+ªÁ?4™8Dާ,= ë?A¹Ó €† aÑÂ?¡´�Ël�=€ë?AÙÓ �°üeÃ?‰rK#¨/Æ<@ë?AùÓ °3ƒ=‘Ä?x¶ýTyƒ%= ë?A™Ô °¡äå'Å?Ç}iåè3&=àê?A¹Ô Œ¾NWÆ?x.<,‹Ï=Àê?AÙÔ pu‹ðÆ?á!œå�%½ ê?AùÔ PD…�‰Ç?C‘pf½`ê?AšÕ 9믾È?Ñ,éªT=½@ê?AºÕ ÷ÜZZÉ?oÿ X(ò=ê?AÙÕ àŠ<í“Ê?i!VPCr(½àé?AùÕ Ð[WØ1Ë?ªá¬N�5 ½Àé?A™Ö à;8‡ÐË?¶TYÄK-½ é?A¹Ö ðÆûoÌ?Ò+–Årìñ¼`é?AÙÖ �Ô°=±Í?5°÷*ÿ*½@é?AùÖ çÿSÎ?0ôA`'Â< é?Aš× Ýä­õÎ?Ž»e!ʼé?A¹× °³l™Ï?0ß ÊìË=Àè?AÙ× XM`8qÐ?‘NíÛœø< è?Aù× `ag-ÄÐ?éê<‹'=€è?A™Ø è'‚ŽÑ?ð¥c!,½`è?A¹Ø ø¬Ë\kÑ?�¥÷Íš+=@è?AÙØ hZc™¿Ñ?·½GQí¦,= è?AùØ ¸mEÒ?êºFºÞ‡ =àç?A™Ù �Ü|ð¾Ò?ôPJúœ*=Àç?A¹Ù `ÓáñÓ?¸€?@ AðA€BA¨å !sh±>ßO >EØð=+‡=+‡=#Ûy=Úª rive.audioasmÆ`````}}``}}`}`}}}```||``|`||}``}}}}`}}}`}`}}`}}`}}}}}}}`}}}}}`|`|`|``~`|||`}}}…env console.warn rive_lane_v1errorrive_shared_v1snapshot_publish rive_shared_v1 snapshot_readrive_shared_v1 ring_read=<       p×=A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AàÊ A |D |D |D |D ~B |D A ¼ __rive_processor_0__riveFrameMinor laneError __riveHostBudget__rive_lane_alloc!__rive_lane_free"__riveProcessorStart__rive_processor_processmemory__riveCallSpill4@ Š ŠÝ<ú  ("AvK@ AÿÿÿÿK@  (!Aüÿÿÿ At" AüÿÿÿO"A  AMAt"  I"AìÿÿÿK@ A€€O" Ak"(r@  ("  I! ( ! @ AìÿÿÿK  '  &  A#jApqAk"Aj"##kK@# #Aj(#kKA @#@#Aj#6 #!#@# 6 $ $ Aj$#$ # j$ #" 6 A6 A6  6  6# j$ Aj "  ü  jA  kü   Aj! Ak"AqA @ # Ak"(" jF! AjApqAk!  K@  #Aj( kMA @ AüÿÿÿK@  j$##K@#$  6  At"  K$"  ü !  @  j$#A  kü  6 Ak 6 Aj " jA  kü  G@ 6 6 + 6 Ë (" (" j"I@ (! AÀ At" AÀI"  I"%! @   ü Ak("@ Ak"A gkAtA¸j"(6  6 Ak"#6 AjA6 A jA6 $ 6 6 ( (j! 6  ÌM}|~ ("6 + ("6 + ("6 + 9 6( ¶! (8A•ø©ú6AA•'!AAã'" 6  +  6 A6 A6 ( (¸6 ( (¼6 ( (À6 ( (Ä6 ( (È6 (¸Cš™>8 (¼C33³>8 (ÀC?8 (ÄCš™™>8 (ÈCÍÌÌ=8 @ AH@AäA“'"6 A6$AAø'"A¹óÝñy6  6(A(Aù'"C8 C8 C8 C€?8 C8 C8 C8 C8 C8 C8$  6, A60 C84 C88 C8< C8@ C8D C8H C8L C8P C8T C8X C8\ C8`AAŒ'"5 ( AƒlAô®ê§k"A 6 ( AlAj"A 6  6$ (( AlAj"A 6 Cš™™>8 (Ì"Ak(Av M@  Atj" 6 A  , ( "Aj" (AvK@   ( Atj" 6  At  ,  6 Aj!  A!@ AH@AÌA”'"6 A6$AAø'"A¹óÝñy6  6( C€?8, C80 CC84 C88 C8< C8@ C8D C8HAAŒ'"5 ( AÑlA«³�üj"A 6 ( AlAj"A 6  6$ (( A lAj"A 6 C€>8 (Ð"Ak(Av M@  Atj" 6 A  , ( "Aj" (AvK@   ( Atj" 6  At  ,  6 Aj!  A!@ AH@AÈA�'"6 A6$ C8( C8, C80 C84 C€?88 C8< C8@ C8DAAŒ'"5 ( AålA™šƒßj"A 6 ( AlAj"A 6  6$ CÍÌÌ>8 (Ô"Ak(Av M@  Atj" 6 A  , ( "Aj" (AvK@   ( Atj" 6  At  ,  6 Aj!  A!@ AH@AÀA‘'"6 C8$ C8( C8, C80 C84 C88 C8< CÍÌL>8 CÍÌL?8 (Ø"Ak(Av M@  Atj" 6 A  , ( "Aj" (AvK@   ( Atj" 6  At  ,  6 Aj!  A!@ ( J@@@@@@@ ( Atj("Ak(A�k  8 ( 8   8 ( 8 }C€¿ Cúíë:”•" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ 8D C€?}C€¿ C·Ñ9”•" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8H C€?}C€¿ C¦›Ä:”•" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8X   8 ( 8 ((C€?}C×q Å •" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8 (,C€?} ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8   8 ( 8 ($"( ! ("C/DCš™™>   *8  * 8  *8  *8  *8 }C€¿ CÍÌÌ<”•" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ 8D  Aj!  6Ü +A!@ AÀH@ (ð!A AØ'"D9 A6 C8 C8 C8 A:  Ak(AvO@  Atj" 6 A  , Aj!  A!@ A H@ (8" ("A t s"Av s"At s"6 (\! ²C0”C?”C?’»D-DTû!@¢¶" —–! Ak(AvAM@ Aj 8 (! ("Ak(AvAM@ ("Ak(AvAM@ Aj* Aj*C?—–! Ak(AvAM@ Aj 8 (! ("Ak(AvAM@ ("Ak(AvAM@ A j* A j*Cš™?—–! Ak(AvAM@ A j 8 (! ("Ak(AvAM@ ("Ak(AvAM@ Aj* Aj*Cš™™>—–! Ak(AvAM@ Aj 8  8AA' "AÿÿÿÿK@  At"A'"6  +AA'  A'"6  + C@@”Cš™™?”C\�‚?”©­B|!B!@  T@ B†!   B}70AA' §"AÿÿÿÿK@  AtA'"6  +AA' §"AÿÿÿÿK@  AtA'"6$  +AAÿ' §"Aÿÿÿ?K@  AtAÿ'"6(  +A!@ AH@ (H"Ak(Av M@  Atj Aj"· »¢9  (Œ!A!C! @ AH@CÀC@ Aq AtAj²" CÛI@”•C€?! C€?! C€? C€=”" ”“‘Cà@”C?”! A!@ AH@ ²•”" ”’! Aj!  C€?! C€?! A!@ AH@ C`@ ²•”" ”’! Aj!  •”!  Ak(AvO@  Atj 8  Ak(AvO@  Atj*’! Aj!  A!@ AH@  Ak(AvO@  Atj*C? •”! Ak(Av M@  Atj 8 Aj!  (h CÀ@ (l CÀÀ (p!C AC€=>! CcD •" ?CÍÌÌ?•! ”©"A 6 C€?}C;FqÀ •" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8 (œ"Ak(AvAM@ Aj("E@ Cx7B •" <8  ?8 (œ"Ak(AvAM@ A j("E@ CÉ—ŸB •" <8  ?8 (¤" C ×£<”©"A 6 C€?}CÝ~<à •" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8 (¨"Ak(AvE@ ("E@  C�Âu<”©"A 6 C€?}CÒS{à •" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8 (¨"Ak(AvAM@ Aj("E@  CôýT<”©"A 6 C€?}CÒS{à •" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8 (¬" C ×£<”©"A 6 C€?}CÒS{ •" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8 (œ"Ak(AvAM@ Aj("E@ Cc�C •" <8  ?8 C€?}C€¿ Cš™>”•" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8\ C€?}C€¿ C)\�=”•" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8` }C&_ Ä •" ¼"AvAÿq"A«O@C A€€€|F  ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ 8xA!B!@ A H@  ("Ak(AvO@  Atj*! ("Ak(Av M@  Atj 8 Aj!  ( "Ak(Av"AK@ A Atü ($"Ak(Av"AK@ A Atü ("Ak(AvE@ CzD *•8T  *T8X  )0B|"78 D9@@  T@ º º¡ *T»¢! §" (("Ak(AvO@  Atj 9 B|!  A!@ AH@  (H"Ak(AvO@ )8  Atj+ *T»£±}B}! (L"Ak(Av M@  Atj 7 Aj!  (h"("Ak(Av"AK@ A Atü ("Ak(Av"AK@ A Atü (l"("Ak(Av"AK@ A Atü ("Ak(Av"AK@ A Atü (p"("Ak(Av"AK@ A Atü ("Ak(Av"AK@ A Atü (t"("Ak(Av"AK@ A Atü ("Ak(Av"AK@ A Atü A!@ AH@  (|"Ak(AvO@  AtjC8  (€"Ak(AvO@  AtjC8  („"Ak(AvO@  AtjC8  (ˆ"Ak(AvO@  Atj("E@ ("Ak(Av"AK@ A Atü ("Ak(Av"AK@ A Atü ("Ak(Av"AK@ A Atü A6  (”"Ak(AvO@  Atj("E@  A¹óÝñylAòæ»ãj"A 6  (¨"Ak(AvO@  Atj("@ C8 C8 A6 Aj!  (˜"Ak(Av"AK@ A Atü (�AˆÕý¡6A!@ AH@  (œ"Ak(AvO@  Atj("@ C€?8 C8 Aj!  ( "C8 C8 A6 (¤"C8 C8 A6 (¬"C8 C8 A6 (”!A!A A'"A˜ÊA ü @ AH@A Aé'"AA'AA'6 A6 A6  Ak(AvO@   Atj*Coƒ:”C ×#<’  ("Ak(Av M@  Atj" 6 A  ,  Ak(AvO@  Atj*Coƒ:” ”! ( "Ak(Av M@  Atj 8A Aò'"C€?8 C8 C8  ( "Ak(AvO@ C A  Atj*C@À”" C°@”•>! C€?C A C43Ó?”•> •" “ C€?’•8  C€? *“”8 ("Ak(Av M@  Atj" 6 A  ,AAë'"AAø'"A¹óÝñy6 6 C8 C8 C8 C8 A6 A6  ²C= W>”Cš™?’CÍÌÌ> AÍlA©Æj  ("Ak(Av M@  Atj" 6 A  , Aj!  AA'"A¸ÊAü AA'"AÈÊAü ( A  ( A;  (CÍÌL=   C·Ñ9”8$  CÍÌÌ<”©6(  C¶óý<”©6,AA' At"A'"6˜ +AA' A'"6œ +AA' A'"6  +AA' A'"6¤ +AA' A'"6¨ +AA' A'"6¬ + Dð¿ DÐ?¢£9¶8´ ¸ |}~ (d!| D-DTû!@¢ + £" "½"B ˆ§" Aÿÿÿÿq" AûäÿM@Dð? AžÁšòI   ¢" ¢!Dð? Dà?¢"¡" Dð? ¡ ¡    D�Ë ú>¢DwQÁlÁV¿ ¢DLUUUUU¥? ¢  ¢  DÔ8ˆ¾éú¨½¢Dı´½žî!> ¢D­Rœ€O~’¾ ¢ ¢ D¢¡     ¡ A€€ÀÿO  Av! B ˆ§Aÿÿÿÿq" Aü²‹€I@A! | D@Tû!ù? !A! AûÃäÿG|  D1cba´Ð= "¡D1cba´Ð=  D`a´Ð= "Dsp.Š£; !  ¡Dsp.Š£;   D@Tû!ù¿ ! AûÃäÿG|  D1cba´Ð½ "¡D1cba´Ð½  D`a´Ð½ "Dsp.Š£» !  ¡Dsp.Š£»  ! $8 $9   AûÃä‰I@ Av"  DƒÈÉm0_ä?¢ž"D@Tû!ù?¢¡" D1cba´Ð=¢"¡"½B ˆ§AvAÿqkAK@ " D`a´Ð=¢"¡" Dsp.Š£;¢  ¡ ¡¡"¡"½B ˆ§AvAÿqkA1K@ " D.Š£;¢"¡" DÁI %šƒ{9¢  ¡ ¡¡"¡! $8  ¡ ¡$9 ª  A 8" k  ! #8!#9! Aq|  ¢" D}þ±WãÇ>¢DÕaÁ *¿ ¢D¦ø�?    ¢¢ D|ÕÏZ:Ùå=¢Dëœ+ŠæåZ¾ ¢ !   Dà?¢  ¢" ¢¡¢ ¡ DIUUUUUÅ¿¢¡¡  ¢" ¢!Dð? Dà?¢" ¡" Dð? ¡ ¡    D�Ë ú>¢DwQÁlÁV¿ ¢DLUUUUU¥? ¢  ¢  DÔ8ˆ¾éú¨½¢Dı´½žî!> ¢D­Rœ€O~’¾ ¢ ¢  ¢¡   "š  AjAq ¶!  Ak(AvO@  Atj 8 (h! ;¶!  Ak(AvO@ Atj 8C ¶ ” Dü©ñÒMb`?cA  + DÍÌÌÌÌÌÜ?¢d ! (p"Ak(Av M@ Atj 8 ›}@ AH@ (\"Ak(Av At j! At j" Ak(AvO@  Atj*! M@  Atj 8 (`"Ak(Av At j! At j" Ak(AvO@  Atj*! M@  Atj 8 (l"Ak(Av At j! At j" Ak(AvO@  Atj*! M@  Atj 8 Aj!  Ë|}~ AH  (Ì"Ak(AvO@  Atj("E@ - Aj!   A "AH@ (à"AjAo6à  (Ì"Ak(AvO@ Atj("E@ } CÀ”" ¼"AvAÿq"A°O@C A€€€|F  ’ AøO  C” C^ C CÃ_  »"DèB " ½!  Dè ¡"DÖR ÿB.æ?¢Dð?  D”#‘Køj¬?¢DóÄúPοÎ?   ¢¢  §AqAtAðj) B/†|¿¢¶ C€;E” ((" ("A t s"Av s"At s"6 ²C0”C?”C?’CÍÌÌ>”CÍÌL?’”! ($"( ! (" CÍÌL> *  *8  * 8  *8  *8  *8 (,} CÍÌÌ¿”" ¼"AvAÿq"A°O@C A€€€|F  ’ AøO  C” C^ C CÃ_  »"DèB " ½!  Dè ¡"DÖR ÿB.æ?¢Dð?  D”#‘Køj¬?¢DóÄúPοÎ?   ¢¢  §AqAtAðj) B/†|¿¢¶ CaD”CÍÌ ? * 60  *”88 C84  Cš™™>’”8P }C€¿ CÍÌL=”C¦›D<’ *”•"¼"AvAÿq"A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C " ½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ 8T  C€?’CÛI@”C€>”"<”8\  ?”8` A: Š} (ì" (Ø"Ak(AvO@  Atj("E@ (ìAjAo6ì (8" ("A t s"Av s"At s"6 ²C0”C?”C?’C®Ÿ@”¨A j"AmA lAÊj² Ao"AüÉ(AvO@ AtA€Êj*’ +x¶’C@Á’! @   C�Âu=C�Âõ=C�Âõ<   C À’CìQ¸=CÍÌL=CÍÌÌ< b  ”©Aj!A!@  I@ At!  AA' AÿÿÿÿK@ AtA'"6 + Ak6 A6 Õ|~  ”©6 C€?} CÛÉÀ” •"¼"AvAÿq" A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “8 ( A 6 (" ("A t s"Av s"At s"6 ²C0”8 * 8 * 8 á} (Ak"6 E@ (" ("A t s"Av s"At s"6 ²C0”8 (³ (" ("A t s"Av s"At s"6 ²C0”C?”C?’C?’”©Aj6 *" * “ *”’8 *" * “ *”’8 * ‘}@ AH@  ("Ak(AvO@  Atj("E@  Ak(AvO@ (  Atj*"Coƒ:”C ×#<’   Coƒ:” ”8 CR¸?8 Aj!  ("Ak(AvE@ ("E@ Cfff?CÍÌL?   ("Ak(AvAM@ Aj("E@ Cff¦?CÍÌL? AlAj  Coƒ9”8 „ } ("Ak(AvE@ ("E@ (""(!  ( (qAtj  *C’" ©"³“! * (" (" (" AjkqAtj*"   Akk qAtj*" “C?”   k qAtj*"   Ajk qAtj*"“CÀ?”’ ” C @”“  ’’ C?”“’ ”  “C?”’ ” ’"”’"8  (Aj6  * ”“! ("Ak(AvAM@ Aj("E@ ("Ak(AvE@ ("E@ * ”! (""(!  ( (qAtj  * ’" ©"³“! * (" (" (" AjkqAtj*"   Akk qAtj*" “C?”   k qAtj*"   Ajk qAtj*"“CÀ?”’ ” C @”“  ’’ C?”“’ ”  “C?”’ ” ’"”’"8  (Aj6  * ”“! ("Ak(AvAM@ Aj("E@ (""(!  ( (qAtj  *C’" ©"³“! * (" (" (" AjkqAtj*"   Akk qAtj*" “C?”   k qAtj*"   Ajk qAtj*"“CÀ?”’ ” C @”“  ’’ C?”“’ ”  “C?”’ ” ’"”’"8  (Aj6  * ”“! ("Ak(AvAM@ A j("E@ * ("Ak(AvAM@ Aj("E@ ”! (""(!  ( (qAtj  * ’" ©"³“! * (" (" (" AjkqAtj*"   Akk qAtj*" “C?”   k qAtj*"   Ajk qAtj*"“CÀ?”’ ” C @”“  ’’ C?”“’ ”  “C?”’ ” ’"”’"8 (Aj6  * ”“ … |~ } Cffæ>” –C A—CÛI@” •"¼"Aÿÿÿÿq"AÚŸ¤úM@  A€€€ÌI  »" ¢" ¢!   ¢" DrŸ™8ýÁ?¢DŸÉ4MUÕ? ¢   ¢ DÎ3Œ�ó™?¢DþZ†ÉT«?   DÍ—¿¹bƒ?¢DNôìü­]h? ¢ ¢ ¶  Av! AѧíƒM@ Aã—Û€M@ »"D-DTû!ù?  D-DTû!ù¿  " ¢" ¢!Dð¿   ¢" DrŸ™8ýÁ?¢DŸÉ4MUÕ? ¢   ¢ DÎ3Œ�ó™?¢DþZ†ÉT«?   DÍ—¿¹bƒ?¢DNôìü­]h? ¢ ¢ £¶  »"D-DTû! @  D-DTû! À  " ¢" ¢!   ¢" DrŸ™8ýÁ?¢DŸÉ4MUÕ? ¢   ¢ DÎ3Œ�ó™?¢DþZ†ÉT«?   DÍ—¿¹bƒ?¢DNôìü­]h? ¢ ¢ ¶  AÕ㈇M@ AßÛ¿…M@ »"DÒ!3|Ù@  DÒ!3|ÙÀ  " ¢" ¢!Dð¿   ¢" DrŸ™8ýÁ?¢DŸÉ4MUÕ? ¢   ¢ DÎ3Œ�ó™?¢DþZ†ÉT«?   DÍ—¿¹bƒ?¢DNôìü­]h? ¢ ¢ £¶  »"D-DTû!@  D-DTû!À  " ¢" ¢!   ¢" DrŸ™8ýÁ?¢DŸÉ4MUÕ? ¢   ¢ DÎ3Œ�ó™?¢DþZ†ÉT«?   DÍ—¿¹bƒ?¢DNôìü­]h? ¢ ¢ ¶   “ A€€€üO  AÛŸ¤îI@ »" DƒÈÉm0_ä?¢ž"DPû!ù?¢¡ Dcba´Q>¢¡$6 ª  AvA˜k" A?q¬! AuAtAÐj" )! )! B V~ B }† )Bà }ˆ„ B }ˆ ! AÿÿÿqA€€€r¬! D-DTû!ù; »¦ BR~ † BÀ }ˆ„ ~ ~B ˆ|" B†" ¹¢$6A B>ˆ B?ˆ|§"k   !#6" ¢" ¢!Dð¿   ¢" DrŸ™8ýÁ?¢DŸÉ4MUÕ? ¢   ¢ DÎ3Œ�ó™?¢DþZ†ÉT«?   DÍ—¿¹bƒ?¢DNôìü­]h? ¢ ¢ "£  Aq¶ 8 C@ C¤p}?–C—C@”“8 C€? *"  * ’”C€?’•8 * *”8 * *”8 †|~ C^}C€?}C㥻¿  *”•"¼"AvAÿq"A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “C€? 8 C^}C€?}C33“À  *”•"¼"AvAÿq"A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “C€? 8 C^}C€?}C33“À  *”•"¼"AvAÿq"A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ “C€? 8 C8 ë} ("AF@ *"Cff¦? “ *”’8 *C€?`@ C€?8 A6  AF@ *" * “ * ”’8 * *“C·Ñ8]@ *8 A6  AF@ *8 AF@ *"  *”“8 *C·Ñ8]@ C8 A6 * Ù} At" (l"(j" * ” * * ” *’"”“ ( j*’8  (j * ” * ”“8 (p"( j" * ” * * ” *’"”“ ( j*’8 ( Atj * ” * ”“8 (t"( j" * ” * * ” *’"”“ ( j*’8 ( Atj * ” * ”“8  " (€j"*“ *x (| j*”’!  8  (|j 8  â} C A C B•>" C€?’" C€¿’"CC“F •"<"”’ ‘ ?”Cóµ?”"’”8 CÀ”   ”"’”8    ”"’ “”8  “C@”8  “" “8 *  ’"•8 * •8 * •8 * •8 * •8 ‹|~ 8, 80 }C€¿  *”•"¼" AvAÿq" A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C " ½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ 84 88 C= ŸÀ—C= Ÿ@–" ”!     C½C’”CZ‡F’”CÀ÷H’”   CàA”CàDE’”C¢sG’”CÀ÷H’••8<  ”8@ (Coƒ: CÍÌL= (A6 A: ˆ|~ C@ CŠÂ’C@A•>CÜC” *•8( C@ CŠÂ’C@A•>CÜC” *•8, }C€¿ C?” *”•"¼" AvAÿq" A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "½!  D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  §AqAtAðj) B/†|¿¢¶ 80 84 CL¾Œ?<”88 CL¾Œ??”8< (Co; C ×£< (A6 A: êA¸AÚ'"A6AAÎ'"A6 D9 D9  6 A6 AAÏ'"D9 Dð?9  6 A6AAÐ'"D9  6 Dpç@9 A6( D90AAø'"A¹óÝñy6  68 Dð¿9@ A:H D9P A:XAA' A€A'6\AA' A€A'6`AA' A€A'6dAA' A€A'6hAA' A€A'6lAA' A€A'6p D9x D9€ D9ˆ D9� D9˜ D9  D9¨ Dð?9°A”Cš™?’C�Âu=C ×£< (8" ("A t s"Av s"At s"6 ²C0”C?”C?’CR¸þ?”¨Aj (8" ("A t s"Av s"At s"6 ²C0”C?”C?’CìQ8>]@ (8" ("A t s"Av s"At s"6 ²C0”C?”C?’»D333333Ó?¢DffffffÖ? ! +¶!A!@ AÀH@  (ð"Ak(AvO@ Atj("E@ -@ Aj!  A: A6 +0  + ¢ 9 8 8 C ×£=8  +ø +¤9ø  AF@A! (ÄC°BCðAC®Ga>Cš™@CÍÌ @C?CÍÌÌ> (ÈCPBCÀACš™?CÍÌL@C€?C\�Â>C (À"CÀZE80 }C€¿ *C> W?”•"¼"AvAÿq"A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "2½!-  2D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  -§AqAtAðj) -B/†|¿¢¶ 84 CÍÌL>88 (Coƒ:C333@CÍÌL= (A6 A: Dð?9˜ (8!@ AH@  ("A t s"Av s"At s"6 ²C0”C?”C?’»DÍÌÌÌÌÌü?:Dø?¢!  ("A t s"Av s"At s"6 ²C0”Cfff?”!  ("A t s"Av s"At s"6 ²C0”C?”C?’C333?”Cš™™>’!C€? ¶C?”“C)\>”!A!@ AÀH@  (ð"Ak(AvO@  Atj("E@ -@ Aj!  A: A6  +0  + ¢ 9  8  8  8  +ø +¤9ø Aj!  A!@ AH@  ("A t s"Av s"At s"6 ·D¸…ëQ¸¾?¢D{®Gáz´?  ²C0”C?”C?’»Dš™™™™™¹?¢ !  ("A t s"Av s"At s"6 ²C0”!  ("A t s"Av s"At s"6 ²C0”C?”C?’!A!@ AÀH@  (ð"Ak(AvO@  Atj("E@ -@ Aj!  A: A6  +0  + ¢ 9  8  8 C ×#>8  +ø +¤9ø Aj!   AF@ +¶!A! (è" (Ô"Ak(AvO@  Atj("E@  (èAjAo6è C CCœBC ×#=CÍÌÌ>CÍÌÌ?CÍÌÌ>Cš™? (8!@ AH@  ("A t s"Av s"At s"6 ²C0”C?”C?’»D@:Dà?¢!  ("A t s"Av s"At s"6  ²C0”Cš™>”’!  ("A t s"Av s"At s"6 ²C0”C?”C?’C333?”!A!@ AÀH@ (ð"Ak(AvO@  Atj("E@ -@ Aj!  A: A6  +0  + ¢ 9  8  8 C)\>8  +ø +¤9ø Aj!   ("A t s"Av s"At s"6 ²C0”C?”C?’C?]@A!@ AÀH@  (ð"Ak(AvO@ Atj("E@ -@ Aj!  A: A6 +0 + Dš™™™™™¹?¢ 9 8 CÍÌÌ>8 CÍÌÌ=8  +ø +¤9ø  AF@ A  AF@ A   +"2 + ¢9@  2D333333@f:H (¸"C ×£>80 C€?}C€¿ *Cgfæ>”•"¼"AvAÿq"A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "1½!-  1D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  -§AqAtAðj) -B/†|¿¢¶ “84 A: 2D333333@c@ D9ˆ D9�  · + £!2 +@Dc|Dð¿ +@ + £ "Df -HA E Dffffffæ?fq D333333@cq@ A:H (¼"D333333@ ¡¶ *”8H *C”8L C4B80AÐ+D Çqì?¢Dð¿ "1 1¢!4 1Dà2hI¿ÊÞ?¢DÞãúŸGç¿  4DM~ ÷¶׿¢  4¢ 1D¸È5_G÷?¢AØ+D@   ¶84 Cš™™>88 C)\�>8< A: D333333@c Dffffffæ?fq@ Dffffffæ¿ D333333÷?£"4D@¢ 4¢Dð?  2¢!1@ (8" ("A t s"Av s"At s"6 ²C0”C?”C?’» 1c@ 1Dð¿ !1 (8" ("A t s"Av s"At s"6 (8" ("A t s"Av s"At s"6  ²C0”Cš™?” (8" ("A t s"Av s"At s"6 ²C0”C?”C?’CÍÌÌ>”Cš™?’ 4¶C ×£=”CÍÌL=’C ×£< ²C0”C?”C?’C€>]  Dð? 2DÀ¢9¡!1  +ˆ Dc|D D333333À D@£D¥Dð?¤ +ˆ¡ 1¢ 9ˆ  +� Dc|D DÍÌÌÌÌÌÀ D@£D¥Dð?¤ +�¡ 1¢ 9�  +˜"D ¡Dð? 2DÍÌÌÌÌÌì¿¢9¡¢ 9˜  + "D ¡Dð? 2D333333ó¿¢9¡¢ 9   +x" +€ ¡Dð? 2Dš™™™™™ù¿¢D@¢9¡¢ 9x ( " (! (A" ( ("AjI@ Aj6  +9  ( ("AjI@ Aj6 +9 ( (G@ AA A @ ("+!1  +9° -XE@  19P A:X  +P" œ 1 "1 ¡"4Dà?d| 1Dð¿  1Dð?  1 4Dà¿c ¡Dð? 2D¸…ëQ¸¾¿£9¡¢ 9P +P"1œ"Db@  1 ¡9PA!AA ª"AJ"! A k !@  H@ AJ@A!@ AJ@  Ak"  !  A!@ AH@ (l"Ak(Av M@  AtjC8 Aj!  A!@ AH@  Aj"  !  A!@ AH@ Aj" (l" Ak(AvO@ AtjC8 Aj!  Aj!   +¨D@ :¢9¨ +P!4 +ˆDð? +˜Dffffffæ?¢¡¢ + D333333ã?¢Dð? ¢¶CÍÌL=”!C@ +x¶CÐA’CŠÂ’C@A•>CÜC”»!7| +°™"8Dš™™™™™¹?¥"½"-B€€€€ð•©÷?}B€€€€ •„T@ Dð¿ "½B€€€€pƒ¿"6D eG÷?¢!3  ¢"1 1¢!5 3 1 D÷:Ü ÇÞ?¢Dþ‚+eGç¿ ¢"9 ":  6¡D eG÷?¢ D¢ï.üç=¢  3 :¡ 9   5 Dä[ðPlwÒ?¢D?|+eG׿  1 D6çÄvaÊ?¢Då�vÝ Çο ¢  5 DJðTÑ„Ä?¢D›§d¼?Ç¿  1 DfîZ(/³À?¢D<8,§ä‰Â¿ ¢ ¢ ¢    -B0ˆ§"AkAàÿO@Dð¿  ¢£ -B†P   -B€€€€€€€øÿQ   ¡"1 1£ A€€q"  AðÿqAðÿF  D0C¢½B€€€€€€€ }!- -B€€€€€€€ó?}".B.ˆB?ƒ§! .B4‡¹ At"A¸ j"+ "1 - .B€€€€€€€xƒ}¿ A¸j"+¡ +¡ +¢"½B€€€€pƒ¿"5D eG÷?¢"6 !3 1 3¡ 6   5¡D eG÷?¢ D¢ï.üç=¢    ¢"1 D¾:Ü ÇÞ?¢D9ƒ+eGç¿  1 DHLPlwÒ?¢Dû/pdG׿ ¢  1 1¢ D.ùá%bÊ?¢D¼’ê(³Çο ¢ ¢  3  DÍÌÌÌÌÌÜ?¢Dffffffæ¿¥Dffffffæ?¤Dffffff @ !1A!@ AH@ · 4 "3 1¡š 3 1¡¢Dù?£9!  At" 7D@ 3:¢"3D£#¹ü‡ôï?¢    Aj 3D/n£¼ð?¢    Aj 3Dø?¢"3D/n£¼ð?¢ D{®GázÔ?¢"   Aj 3D£#¹ü‡ôï?¢   Aj!  8Dš™™™™™é?:Dš™™™™™á?¢DÍÌÌÌÌÌÜ? Dš™™™™™Ù?¥D@¤Dš™™™™™é?¢D@ 4:¢!1 +°Dš™™™™™©¿c! +¨"!3   1 2¢ 9¨A!@ AH@D@ ·"2:!#7 2 4 D@£¢;"2 2¢ +�¢Dð? +˜D333333ã?¢¡¢¶C ×£>”"Co;^ +¨ ¢ | 1D{®GázÄ?¢ ¢D "2 œ 3 ¢ 2 œbq@@ (è" (Ô"Ak(AvO@  Atj("E@  (èAjAo6èC@ +x¶CB’ A l²’CŠÂ’C@A•>CÜC”! @  8,  CÍÌÌ?”80 }C€¿ *Coƒ=”•"¼"AvAÿq"A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "2½!-  2D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  -§AqAtAðj) -B/†|¿¢¶ 84 C33³?88  CÍÌL?”Ch¦b?•8< C8@ (C ×#>C¦›D Aj²•C33³?  ²C�Âõ=”CÍÌL=’ Aj!  +¨"DP@d@  DPÀ 9¨ (Ü"! (\! (`! (d! (h! (l! (p!C€?A  AL²•!' (ˆ!A!@ ( J@ ( Atj(-@ "Aj! (€ Atj 6 Aj!   6„A!A!@ A H@ (l Atj*C\A (p Atj*C\ @ "Aj! (ˆ Atj 6 Aj!   6Œ@  H@ +0 +øf@A!Dð!@ AÀH@ (ð Atj("-@ +0 +f@ A: (@ * ! *! *!A!A!C€!@ AH@  (Ð"Ak(AvO@  Atj("@ -} *8C€? *0 *,•“”C " ]@ ! ! Aj!  (8" ("A t s"Av s"At s"6  (Ð"Ak(AvO@  Atj("E@  C333?”Cfff?’ *”8, C80  C€>”8<  8@  88  ²C0”C?”C?’CðB”CÜB’84 ((" ("A t s"Av s"At s"6  ²C0”C?”C?’8D ((" ("A t s"Av s"At s"6  ²C0”C?”C?’C@”CÀ?’ *•8H A:  * * *C ×#= (8" ("A t s"Av s"At s"6 ²C0”C?”C?’CR¸þ?”¨Aj  + ¤! Aj!   9øA!A! (Ü!@ ( J@ ( Atj(-@ "Aj! (€ Atj 6 Aj!   6„A!A!@ A H@ (l Atj*C\A (p Atj*C\ @ "Aj! (ˆ Atj 6 Aj!   6Œ +@"Df@  Dð? 9@ ² '”!"C!C! (Œ!A!@  J@  Atj("Atj*  At"j* j*“ "”’! j" *" j*” j"*" j*”“8   j*”  j*”’8 AjAt"j" *" j*” j"*" j*”“8  j*”  j*”’8   ”’!   ”’! Aj!  CÍÌÌ?”C= ŸÀ—C= Ÿ@–" ”!    C½C’”CZ‡F’”CÀ÷H’”   CàA”CàDE’”C¢sG’”CÀ÷H’•CR¸?”"CÍÌ ?”!" CÍÌÌ?”C= ŸÀ—C= Ÿ@–" ”!    C½C’”CZ‡F’”CÀ÷H’”   CàA”CàDE’”C¢sG’”CÀ÷H’•CR¸?”"CÍÌ ?”! C!#C! („!A!@  H@ ( (€ Atj(Atj("-@@@@@@@@@@ Ak(A�k *0" *,•! C€?’80@ C€?`@ A: C8 C8  ‘CÛI@”?! *D *H’"C€¿’  C€?`8D  ” *DCÛÉ@”?Cš™>”Cš™Y?’"” *8”CÍÌL@”! ($! ( "Aj6 AqE@ ( ! (" *4} CÍÌŒ?” ”"¼"AvAÿq" A°O@C A€€€|F   ’ AøO  C” C^ C CÃ_  »"DèB "2½!-  2Dè ¡"DÖR ÿB.æ?¢Dð?  D”#‘Køj¬?¢DóÄúPοÎ?   ¢¢  -§AqAtAðj) -B/†|¿¢¶ ”CÍÌL= *  *8  * 8  *8  *8  *8 (! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"!”’!   ”’ * !”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ ( ! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"!”’!   ”’ * !”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ (* (* Cš™>”’ ” *<" *@ “ ”’"C€?’CÛI@”C€>”<”8 ( * ( * Cš™>”’ ” C€?’CÛI@”C€>”?”8  (0AJ@ *4C€¿’84 *4C_@ (0Ak60 ((" ("A t s"Av s"At s"6 ²C0”C?”C?’Cš™?”CÍÌÌ>’8@ *8 ((" ("A t s"Av s"At s"6 ²C0”C?”C?’” ((" ("A t s"Av s"At s"6 ²C0”C?”C?’”84 ($"(! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"”’!   ”’ * ”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ ( ! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"”’!   ”’ * ”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ ((" ("A t s"Av s"At s"6 (,"* *"” *" ²C0”" *"“"”’!   ”’ * ”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ (* *<"” *\"” (,* *L”" ”’8 ( * ” *`"”  ”’8  *@ “ *H”’8< *@ *D”8@ *L *P *L“ *X”’8L *P *T”8P (0A *”"¼"AvAÿq"A°O@C A€€€|F   ’ AøO  C” C^ C CÃ_  »"DèB "2½!-  2Dè ¡"DÖR ÿB.æ?¢Dð?  D”#‘Køj¬?¢DóÄúPοÎ?   ¢¢  -§AqAtAðj) -B/†|¿¢¶ CxB”Cš™™> * ($( } Cffæ¾”"¼"AvAÿq"A°O@C A€€€|F   ’ AøO  C” C^ C CÃ_  »"DèB "2½!-  2Dè ¡"DÖR ÿB.æ?¢Dð?  D”#‘Køj¬?¢DóÄúPοÎ?   ¢¢  -§AqAtAðj) -B/†|¿¢¶ CxB”Cš™™> * ($"(! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"”’!   ”’ * ”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ ( ! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"”’!   ”’ * ”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ (* *,”C�@”8 ( * *,”C�@”8  (! ("( *C[ (AGA  *Coƒ:]A A @ A: *," *( “ *0”’8( *$ *(’"C€¿’  C€?`"8$ CÛÉ@”?" *4C€?C€¿ C?]}  *("]@  •" ’  ”“C€¿’  C€? “^@ C€¿’ •" ” ’ ’C€?’  C ’} C?’"C€¿’  C€?`" ]@  •" ’  ”“C€¿’  C€? “^@ C€¿’ •" ” ’ ’C€?’  C “ “”’ ”" *8”8  *<”8  (! ("( *C[ (AGA  *Coƒ:]A A @ A: *0CúÃ’ *4”CúC’80 ($! ( "Aj6 AqE@ ( ! (" *0CÍÌÌ= *  *8  * 8  *8  *8  *8 (! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"”’!   ”’ * ”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ ( ! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"”’!   ”’ * ”’!   ’ “8   ’ *“8  8  8   * ”“ “8$  ” *8”! (*" ((" *"  “ *”’8 *“ ”8 ( *" (," *"  “ *”’8 *“ ”8  (! ("( *C[ (AGA  *Coƒ:]A A @ A: *0" *, “ *4”’8, *( *, *•’"C€¿’  C€?`8( *8 *(CÛÉ@”?”C= ŸÀ—C= Ÿ@–" ”!    C½C’”CZ‡F’”CÀ÷H’”   CàA”CàDE’”C¢sG’”CÀ÷H’• ” *<”"! *@C·Ñ8^@ ($"(! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"!”’!   ”’ * !”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ ( ! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"!”’!   ”’ * !”’!   ’ “8   ’ *“8  8  8   * ”“ “8$  (* *@”’!  ( * *@”’! *@ *D”8@ 8 8  *L *H•C€?–! ((}  ”C@@  ’“”! CÛI@”?" ”  ”"C C€?] ! *P"  *<” “Coƒ;”’8P *LC€?’8L C€?` *PC¬Å'7]A @ A: *0} *4 ”"¼"AvAÿq"A°O@C A€€€|F   ’ AøO  C” C^ C CÃ_  »"DèB "2½!-  2Dè ¡"DÖR ÿB.æ?¢Dð?  D”#‘Køj¬?¢DóÄúPοÎ?   ¢¢  -§AqAtAðj) -B/†|¿¢¶ ”! ($"(! ( ! ( "Aj6 AqE@   *8 *  *8  * 8  *8  *8  *8 (! (" (" A t s" Av s" At s" 6 * *"” *" ²C0”" *"“"”’!   ”’ * ”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ ( ! (" ("A t s"Av s"At s"6 * *"” *" ²C0”" *"“"”’!   ”’ * ”’!   ’ “8   ’ *“8  8  8   * ”“ “8$ -,} * * * ” ! -,} * * * ” !C! *@C^@ *D  *•’"C€¿’  C€?`8D *@ *DCÛÉ@”?”!  ’ *P”8  ’ *P”8   *"’!  *"’! "  * "”’!" #  *"”’!#  ”’!   ”’! Aj!  At" (˜j 8 (œ j 8 (  j "8 (¤ j 8 (¨ j #8 (¬ j 8  +0Dð? 90 Aj!  A!@ A H@ At"j j*8 j" *"C€?  ” j"*" ”’‘•"”8 * ”8 Aj!  (¨! (¬!A!A! ²CzD” (�"*"•!@ A H@ At" ("j* (" j*\@ j"* j* *“ ( j*"C^}C€?} Œ •"¼"AvAÿq"A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "2½!-  2D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  -§AqAtAðj) -B/†|¿¢¶ “C€? ”’!  8 Aj!  ("Ak(AvAM@ Aj*! ("Ak(AvAM@ Aj*!" ("Ak(AvAM@ A j*! ("Ak(AvAM@ Aj*! ("Ak(AvAM@ Aj*! ("Ak(AvAM@ Aj*! ("Ak(AvAM@ Aj*Coƒ;”!' ("Ak(AvAM@ C A j*"# -d"! ("Ak(AvA M@ A$j*! ("Ak(AvE@ CRI:”!C€? # ! CzD *•8X *TC\�Â>”C?—C@–‘!C A >C€»D” ”C€? C?”“” Cffæ>”–! (t! CÛÉ@” •"?Cš™™?•! C€? <"“C?”8 C€? “"!8 !C?”8 CÀ”8 C€? “8 * C€?’"•8 * •8 * •8 * •8 * •8  C8A” ”C?’8°  Cš™>”CÍÌL=’8´ *´"¼Aÿÿÿÿq"¾!  AÔ¾²øK} A€€€‰K}C •C€?’C€?C@  ’=C@’•“  AøŠ‹ôK}  ’=" C@’• A€€€O} CÀ”="Œ C@’•  ˜8¸ C€? *°C€? *¸" ”“”•8¼ C€?}C€? Cš™?”"“C@œF”CÛÉÀ”  ’•"¼"AvAÿq"A«O@C A€€€|F   ’ AøO  C” Cr±B^ C C´ñÏÂ]  »Dþ‚+eGG@¢"D8C "2½!-  2D8à¡"DÖR ÿB.–?¢Dð?  D”#‘Køj¼>¢DóÄúPο.?   ¢¢  -§AqAtAðj) -B/†|¿¢¶ “8À  *ÀCÍÌL? Cš™™>”“”8Ä CÀ?”C€?’!  ”Co:”!! C·Ñ8”!)  ”!* C ×#<”!+ C€>” #”! (P!C!A!@ AH@  Atj"  ²“C—C€?–8  *’! Aj!   •!  ‘•!# )0!/ ((! (˜! (œ! (�!@  H@  *T" *X" “  ^} *\ *` ”’8T ("*" *"” *" * "”“!  ”  ”’8 8 *CÍÌ ?” Aj("*" *"” *" * "”“!  ”  ”’8 8 *C€>”’ ( " (Ak"6A   ( 6A @  ("A t s"Av s"At s"6 ²C0”8 *" * “ *”’8 *Cš™?”’! Aj("*" *"” *" * "”“!  ”  ”’8 8 *CÍÌÌ>” A j("*" *"” *" * "”“!  ”  ”’8 8 *C€>”’ (¤" (Ak"6A   ( 6A @  ("A t s"Av s"At s"6 ²C0”8 *" * “ *”’8 *Cš™?”’!  +@ *T ' ”C€?’  ”’”» 9@  )8"0 /ƒ§Atj +@9 +@  0B} /ƒ§Atj+¡!2 (¨(" (Ak"6A   ( 6A @  ("A t s"Av s"At s"6 ²C0”8 *" * “ *”’8 *”! (¨Aj(" (Ak"6A   ( 6A @  ("A t s"Av s"At s"6 ²C0”8 *" * “ *”’8 *”!(C!C!A!@ AH@ +@ At" (Hj+¡ 2 ! (L j)!-@ 0 -}BV   -B|". /ƒ§Atj+fq@ .!-  @ /B} 0 -}V   - /ƒ§Atj+cq@ -B}!-  (L Atj -7  Atj*"$"C_E@  C€? 0 -}µ   - /ƒ§Atj+"¡  -B| /ƒ§Atj+ ¡£¶“"% ’" ©"³““! ( " )0"- 0 ­}B}".B}ƒ§Atj*! .B| -ƒ§Atj*"& “C?” - .ƒ§Atj*" .B| -ƒ§Atj*"“CÀ?”’ ”  C @”“  ’’ &C?”“’ ”  “C?”’ ” ’”’! C€? % (’" ©"³““! ($" 0 ­}B}".B} -ƒ§Atj*! $ .B| -ƒ§Atj*"$ “C?” - .ƒ§Atj*" .B| -ƒ§Atj*"“CÀ?”’ ”  C @”“  ’’ $C?”“’ ”  “C?”’ ” ’”’! Aj!   (¬" (Ak"6A   ( 6A @  ("A t s"Av s"At s"6 C€?C ²C0”C?”C?’ +]8 *" * “ *”’8C€? * *”“! A  ”! A  ”!  At"j*"C€? “"” C?”  j*"’”’!  ”!C€? “" ”  ”’!(  ”  ”’!$ Aj("*" *"” *"% * "&”“!, % ”  &”’8 ,8 ) *”  ("A t s"Av s"At s"6 ²C0”CÿæÛ.”’!%A!@ AH@ At" (”j(" ("A t s"Av s"At s"6 Al" Atj Atj*Cþe?” ²C0”"C¡ØÊ=”’8 AjAtj"" *C+‡v?” CÿЗ>”’8 AjAtj" *C…ë?” C—¾†?”’8 (h"( j" *     $ ( ”’ Atj* *’ *’ C6<=>”’ !”’ %’"” * * ” *’"”“ ( j*’8  (j * ” * ”“8 (Œ!A! (ˆ j("(" ( " AqAtj 8  AkAqAtj*8C!@ AH@   Atj* Ak" kAqAtj* Aj jAqAtj*’”’! Aj!   8 * *°” *´’C= ŸÀ—C= Ÿ@–" ”!    C½C’”CZ‡F’”CÀ÷H’”   CàA”CàDE’”C¢sG’”CÀ÷H’• *¸“ *¼” („ Atj"*"“!    ”C`} *À *Ä ”’"&8 * *°” *´’C= ŸÀ—C= Ÿ@–" ”!    C½C’”CZ‡F’”CÀ÷H’”   CàA”CàDE’”C¢sG’”CÀ÷H’• *¸“ *¼” („ Atj"*"“!    ”C`} *À *Ä ”’"8  ($ ( / 0ƒ§Atj (Œ!A! ( ( " AqAtj &8 ( AqAtj 8 (! ( AkAqAtj*C?”!@ AH@   Atj*C?” Ak"Ak kAqAtj* jAqAtj*’”’! Aj!   Aj6 8 Aj!   0B|78 At" (j  #” "”8 ( j  #” "”8 Aj!  A!@ AH@CÀ? Atj("* *"” *" ”’C?”“!   ”8  * ”8 Aj!  (”! ((!A!@  H@ (8" ("A t s"Av s"At s"6 At" ( j* ²C0”CÿæÛ.”"’! (¤ j* ’! ("(! (  ( ( ((kqAtj*! ("(! (  ( ( (,kqAtj*!" ("(!  ( (qAtj  ’C?”8 (Aj6 (! ( ! A!@ AH@  At"j ( j(! ( j(! ( j* *$ ( j(”’" ©"³“!  * (" (" (" AjkqAtj*"  Akk qAtj*"“C?”  k qAtj*"  Ajk qAtj*"“CÀ?”’ ”  C @”“  ’’ C?”“’ ”  “C?”’ ” ’” * *”’8 *8 Aj!  A!@ AH@ At"j  j*8 Aj!  A!@ AH@A!@ AH@ !@  jH@ Atj" *" jAtj" *"’8  “8 Aj!   Atj!  At!  A!@ AH@ At" (j("(! ( (qAtj  j*Cóµ>” "  Aq’8  (Aj6 Aj!   * Aj*“ Aj*’ Aj*’C?”80  Aj* A j*’ Aj*“ Aj*’C?”84  *° *´” (˜ j* ( j*’ *0C333?”’"‹ (œ j* ( j*’ *4C333?”’"‹——8° *°C ×c?^}C ×c? *°•C€? ! AF@  Atj  ’C?” ”8   l"Atj  ”8  AjAtj  ”8 Aj!  ( +09 ("E@ (!! Ak(AÐG@ ( Aj"6 AèJ@ +! A 9 ( Ak6 ( ( ( ( (#1E? Jq@A$1AÀ  p %! @  Aü Ak("@ Ak"A gkAtA¸j"(6  6 Ak"#6 AjA6 A jA6 $  l#5"E@A A#'"A6 A6 A6 A6 A6 A6 A6 A: $5 A6 A6 A6 A: ’#2A€I@#3A€$3A€$2  #3#2 #3#2 !@ #2AjK@ Ak"#2K@#3 $3 $2  #3#2 #3#2 !  #<#36#<#3 Akj6#<A   Ak(A~q A AM$ Ñ@ AqA @ #(!@ @ AjO Aj(IA @A  (!  A @ Ak("@ Ak"A gkAtA¸j"(6  6 Ak"#6 AjA6 A jA6 $  # Ak"(jF@ $#A (Ajü °~A! A j"A€€ MA€€  AjApq A�€ j!#!@@ E Aj( Ajk" O  Kq@ ! ! " I  "(!  E@#)E@AàÊ$) #)! A j"A€€ MA€€  AjApq ­ ­B||"B€€€€Z@ ?¬B†" T@  }Bÿÿ|Bˆ§@AH@ §$) A6 Aj#)6 AjA6 A jA6  @  (6 ($ A6 Aj(" A j"A€€ MA€€  AjApq Ajj"kAœ€ O@ Aj 6 A6 Aj 6 Aj"A6 A j"A6 #6 A6 A6 $  À AüÿÿÿK@ AjApqAk"Aj"##kK@# #Aj(#kKA @#@#Aj#6 #!#@# 6 $ $ Aj$#$ #A# A€€j"#Aj(#k"  Ij"#kü $ # 6#Aj!# j$  €~ Aj"A€€K@ AjApq#Aj"A ü  AA Akgk" AI"AtAˆ„"B?‡"…! B‡ …"y!  † BÀ }ˆ„"Bÿÿÿÿƒ! B ˆ"B´„£‹~ B¢µ¿È ~ B´„£‹~" B ˆ|" Bÿÿÿÿƒ|! B¢µ¿È ~ B ˆ| B ˆ|$: Bÿÿÿÿƒ B †|" ºD„pQ̘8?¢  †ºD-DTû!9?¢ ±"T­#:"B ˆ|º$8  B5† B ˆ„|ºDð;¢$9#8B€€€€€€€Ø< B4†} …B€€€€€€€€€ƒ„¿" ¢$8#9 ¢$9 B>‡ }§ ˆ|~| ½"B4ˆ§Aÿq"AÉkA?O@Dð? AÉkA€€€€xO  A‰O@D B€€€€€€€xQ  Dð?  AÿO DDð BS  A! Dþ‚+eGg@¢D8C "½"B-† BÿƒB†§"AtA¸j)|! D8à"DúþB.v¿¢  D:;ž¼š÷ ½¢ " ¢! AtA¸j+    D¢DÕaÁ *¿ ¢D¦ø�?    ¢¢ D|ÕÏZ:Ùå=¢Dëœ+ŠæåZ¾ ¢ !  ¢  ¢DIUUUUUÅ¿ ¢  A€€ÀÿO@ ¡  Av! B ˆ§Aÿÿÿÿq"Aü²‹€I@A! | D@Tû!ù? !A! AûÃäÿG| D1cba´Ð= "¡D1cba´Ð=  D`a´Ð= "Dsp.Š£; !  ¡Dsp.Š£;   D@Tû!ù¿ ! AûÃäÿG| D1cba´Ð½ "¡D1cba´Ð½  D`a´Ð½ "Dsp.Š£» !  ¡Dsp.Š£»  ! $8 $9   AûÃä‰I@ Av" DƒÈÉm0_ä?¢ž"D@Tû!ù?¢¡" D1cba´Ð=¢"¡"½B ˆ§AvAÿqkAK@  " D`a´Ð=¢"¡" Dsp.Š£;¢  ¡ ¡¡"¡"½B ˆ§AvAÿqkA1K@ " D.Š£;¢"¡" DÁI %šƒ{9¢  ¡ ¡¡"¡! $8 ¡ ¡$9 ª  A 8"k   !#8!#9! Aq| ¢" ¢!Dð? Dà?¢"¡"Dð? ¡ ¡    D�Ë ú>¢DwQÁlÁV¿ ¢DLUUUUU¥? ¢  ¢  DÔ8ˆ¾éú¨½¢Dı´½žî!> ¢D­Rœ€O~’¾ ¢ ¢ ¢¡   ¢" D}þ±WãÇ>¢DÕaÁ *¿ ¢D¦ø�?    ¢¢ D|ÕÏZ:Ùå=¢Dëœ+ŠæåZ¾ ¢ !  Dà?¢  ¢" ¢¡¢ ¡ DIUUUUUÅ¿¢¡¡ "š Aq Á|~ ¼"Aÿÿÿÿq"AÚŸ¤úM@ A€€€ÌI@C€? »" ¢" ¢! D�^ ýÿÿß¿¢Dð?  DB:áSU¥?¢   ¢ DiPîàB“ù>¢D'è‡ÀV¿ ¢ ¶ Av! AѧíƒM@ Aã—Û€K@ »"D-DTû! @  D-DTû! À  " ¢" ¢! D�^ ýÿÿß¿¢Dð?  DB:áSU¥?¢   ¢ DiPîàB“ù>¢D'è‡ÀV¿ ¢ ¶Œ @ »D-DTû!ù? " ¢" ¢!D-DTû!ù? »¡" ¢" ¢!   D²ûn‰�?¢Dw¬ËTUUÅ¿ ¢    ¢¢ D§F;Œ‡ÍÆ>¢DtçÊâù*¿ ¢ ¶ AÕ㈇M@ AßÛ¿…K@ »"D-DTû!@  D-DTû!À  " ¢" ¢! D�^ ýÿÿß¿¢Dð?  DB:áSU¥?¢   ¢ DiPîàB“ù>¢D'è‡ÀV¿ ¢ ¶ @ Œ»DÒ!3|ÙÀ " ¢" ¢! »DÒ!3|ÙÀ " ¢" ¢!   D²ûn‰�?¢Dw¬ËTUUÅ¿ ¢    ¢¢ D§F;Œ‡ÍÆ>¢DtçÊâù*¿ ¢ ¶ A€€€üO@ “  AÛŸ¤îI@ »" DƒÈÉm0_ä?¢ž"DPû!ù?¢¡ Dcba´Q>¢¡$6 ª  AvA˜k"A?q¬! AuAtAÐj")! )! B V~  B }† )Bà }ˆ„ B }ˆ ! AÿÿÿqA€€€r¬! D-DTû!ù; »¦ BR~ † BÀ }ˆ„ ~ ~B ˆ|"B†"¹¢$6A B>ˆ B?ˆ|§"k   !#6! Aq}   ¢" ¢" D²ûn‰�?¢Dw¬ËTUUÅ¿ ¢    ¢¢ D§F;Œ‡ÍÆ>¢DtçÊâù*¿ ¢ ¶  ¢" ¢! D�^ ýÿÿß¿¢Dð?  DB:áSU¥?¢   ¢ DiPîàB“ù>¢D'è‡ÀV¿ ¢ ¶ "Œ AjAq é} ¼"Aÿÿÿÿq! Av! AÄðÖŒO@ A€€€üK@  @C€¿ A—äÅ•K@ C” A˜äÅõK@ A Atk C;ª¸?”C? ˜’¨ A’«”üI"²"C€q1?”“"  CÑ÷7”"“"“ “! A€€€˜I A ! C@@ C?”"”" C0Ï:”Chˆ½’”C€?’" ”“!   “CÀ@ ”“•”! E@ ” ““  “” “ “! AF@ “C?”C¿’ AF@ C€¾]@  C?’“CÀ” “C@”C€?’ AÿjAt¾! AH A8Jr@ “C€?’" ’C” ” A€FC€¿’ C€?Aÿ kAt¾"“ “C€?  ’“ AH’ ” Œ|~ ‹C@_@ C@[@ ” C?[@ ‘‹C€ »Dðÿb C€¿[@C€? • C€?[@  C[@C€? } » ¼"AtAkAÿÿÿwO" ¼"A€€€kA€€€øOr@ @C€? At"E CÀ A€€€üF  ’ A€€€xK At"A€€€xKr CÀ A€€€øF C AvE A€€€øIF   ”  AtAkAÿÿÿwO@ ”!C€? Œ Av"A AvAÿq"AÿI A A–K A AA– kt"Akq A  q A AF  "• AH  AH@ “" •A AvAÿq"AÿI A A–K A AA– kt"Akq A  q A "E A€€A AF! Aÿÿÿÿq! A€€€I CK”¼AÿÿÿÿqA€€€Ük  ! A€€Ìùk"AvAq!  A€€€|q"k¾» AtAðj"+¢Dð¿ " ¢! D nIÉvÒ?¢DzÆu i׿   ¢¢ D+¸*eG÷?¢ + Au·   Dݺ§l ÇÞ?¢DÈö¾HGç¿  ¢  ¢"½B/ˆBÿÿƒB¿�Z@C€ÿC€  DqÕÑÿÿÿ_@d C€C  DÀbÀe  DèB "½!  Dè ¡"DÖR ÿB.æ?¢Dð?  D”#‘Køj¬?¢DóÄúPοÎ?   ¢¢  §AqAtAðj)  ­|B/†|¿¢¶ ¶ |~ ¼"Aÿÿÿÿq"AÚŸ¤úM@ A€€€ÌI@  »" ¢" ¢!   D²ûn‰�?¢Dw¬ËTUUÅ¿ ¢    ¢¢ D§F;Œ‡ÍÆ>¢DtçÊâù*¿ ¢ ¶ Av! AѧíƒM@ Aã—Û€M@ } »D-DTû!ù? " ¢" ¢! D�^ ýÿÿß¿¢Dð?  DB:áSU¥?¢   ¢ DiPîàB“ù>¢D'è‡ÀV¿ ¢ ¶Œ »D-DTû!ù¿ " ¢" ¢! D�^ ýÿÿß¿¢Dð?  DB:áSU¥?¢   ¢ DiPîàB“ù>¢D'è‡ÀV¿ ¢ ¶  »"D-DTû! @  D-DTû! À  š" ¢" ¢!   D²ûn‰�?¢Dw¬ËTUUÅ¿ ¢    ¢¢ D§F;Œ‡ÍÆ>¢DtçÊâù*¿ ¢ ¶ AÕ㈇M@ AßÛ¿…M@ } »DÒ!3|Ù@ " ¢" ¢! D�^ ýÿÿß¿¢Dð?  DB:áSU¥?¢   ¢ DiPîàB“ù>¢D'è‡ÀV¿ ¢ ¶ »DÒ!3|ÙÀ " ¢" ¢! D�^ ýÿÿß¿¢Dð?  DB:áSU¥?¢   ¢ DiPîàB“ù>¢D'è‡ÀV¿ ¢ ¶Œ  »"D-DTû!@  D-DTû!À  " ¢" ¢!   D²ûn‰�?¢Dw¬ËTUUÅ¿ ¢    ¢¢ D§F;Œ‡ÍÆ>¢DtçÊâù*¿ ¢ ¶ A€€€üO@ “  AÛŸ¤îI@ »" DƒÈÉm0_ä?¢ž"DPû!ù?¢¡ Dcba´Q>¢¡$6 ª  AvA˜k"A?q¬! AuAtAÐj")! )! B V~  B }† )Bà }ˆ„ B }ˆ ! AÿÿÿqA€€€r¬! D-DTû!ù; »¦ BR~ † BÀ }ˆ„ ~ ~B ˆ|"B†"¹¢$6A B>ˆ B?ˆ|§"k   !#6! Aq}  ¢" ¢! D�^ ýÿÿß¿¢Dð?  DB:áSU¥?¢   ¢ DiPîàB“ù>¢D'è‡ÀV¿ ¢ ¶   ¢" ¢" D²ûn‰�?¢Dw¬ËTUUÅ¿ ¢    ¢¢ D§F;Œ‡ÍÆ>¢DtçÊâù*¿ ¢ ¶ "Œ Aq mA$A$A$A$"D-DTû! @$7AA$'"A6 A6 A6 A6 A: A6 A6 A6 $33³>š™™>š™?š™™>ÍÌL>ÍÌL>€>€? A A AHBHBHBHBHBHBA¸ Ð�processor grew its memory during a block; allocate what it keeps in init)DNnƒù¢ÀÝ4õÑW'üA�C<™•bÛaŻޫcQþð?t…Ó°Ùï?‰ùlXµï?Q[Гï?{Q}<¸rï?ª¹h1‡Tï?8bunz8ï?áÞõ�ï?·1 þï?Ë©:7§ñî?"4L¦Þî?-‰a`Îî?'*6ÕÚ¿î?‚O�V+´î?)THÝ«î?…U:°~¤î?Í;fž î?t_ìèuŸî?‡ës¡î?ÎL™‰¥î?Û *Bå¬î?åÅͰ7·î?�𣂑Äî?]%>²Õî?­ÓZ™Ÿèî?G^ûòvÿî?œR…Ý›ï?i�ïÜ 7ï?‡¤ûÜXï?_›{3—|ï?Ú�¤¢¯¤ï?@En[vÐï?¾óøyìaö?0–[ÆþÞ¿=ˆ¯Jíqõ?¤üÔ2h Û¿°ðð9•ô?{· ‹A׿…¸°•Éó?{Ïmé�Ó¿¥dˆ  ó?1¶òó›п Ž {"^ò?ðz;|É¿?4JJ»ñ?Ÿ<¯“ãù¿ºåŠðX#ñ?\�x¿Ë`¹¿§™A?•ð?Î_G¶�oª¿ð?A� `¬GšýŒ`î?=õ$ŸÊ8³? j³¤ì?º‘8T©vÄ?æüjW6 ë?ÒäÄJ „Î?-ª¡cÑÂé?eÆðEÔ?íAxæ†è?øŸ,œŽØ?bHSõÜgç?Ì{±N¤àÜ?Aø Ànƒù¢ÑW'ü)DN™•bÛÀÝ4õ«cQþA�C<:n$·aÅ»Þê.IàÒMBëþ’Ñ õ5‚è>§)±&pœé„D».9Ö‘9A~_´‹_„œô9Sƒÿ—ø;(ù½‹/ï˜ÞÏ~6mm Zf?FO· Ë'Ǻ'u-ê_ž÷9={ñåë±_ûkê’RŠF0V]� ¼Ïð«k{üa‘ã©6ôš_…™eæ^€Øÿ�@h W1'sMø¬±k($÷?°Íî_ á¿¡ÌÒf÷áö?Ðv½”„࿊Ô0=¡ö?øè®Cà¿…lÐ2ìaö?@ 6ÅþÞ¿ø˜•ú#ö?à·ÙýÝ¿lϤ[çõ?�Ç ®ÿÜ¿¸O!Z¬õ? ý8Ü¿níqõ?à:2g Û¿5ø Y 9õ?°-Z/Ú¿Ý­aíOõ?`øZ!Ù¿Ð{HޏÊô?�q°M0Ø¿îO3´9•ô?à©ù‰A׿iÕ¯ßË`ô?�µ+UÖ¿S¹äNf-ô?›¢#kÕ¿¦Øûó? _eƒÔ¿6X ·•Éó? ö7é�Ó¿Jý¶J™ó?`�S¡ºÒ¿µ™à Žió?@Ê@ƒÙÑ¿²ç‚ä:ó?à@:…úп±½… ó?0ç2œп×q²Ê%àò?`ú¢}…ο‚ÍÏ´ò?€=cÈÓÌ¿PË|,°ˆò? L&Ë¿åM”c"^ò?àO/|É¿±†=V4ò?€?ÖÇ¿8¯>ãF ò?à§3ƿݣÍýîâñ?Wéõ”Ä¿09 XJ»ñ? à$äù¿"„S”ñ?ÀýZYbÁ¿<×ÕÀnñ?€½ušœ¿¿Âä·G_Hñ?Àù[W{¼¿Ñ…­X#ñ?€ôÆ`¹¿'"Sðþð?¶GâL¶¿�:Ðw Ûð?@²x?³¿Ù€YÖæ·ð?ÀB}8°¿�@{þ>•ð?µ’oª¿ƒ;ÅÊ%sð?wO•z¤¿\ ä—Qð? Ũ#�¿¢Ž Á‘0ð?x)&j‘¿!~³%ð?èØø w¿k§Êù~Àï?P±Sþ†?„ñöÓeDï?€áÌ¡?„ŸÌî?€‹ŒüM¬?èZ—™:Wî?@W2ª³?æ=½ðÖåí?€‹Ð ¹?³8ÿ�¶wí?@Úér¾?CéMrµ í?`PÒÜÁ?cuܲ¤ì? Þ«vÄ?QËÖèŽ?ì? âwCÇ?L O+Ýë?@©‹ÞŽÉ?Ê`l}ë?àÒj¸ Ì?�3.n6 ë?àί „Î?9P)&pÅê?€g´ yÐ?Ý1'¼mê?Àh¬Ñ?‹ñ?¼Óê?àþÔÛÒ?­þgIÑÂé?€ÅNFÔ?™|ôäpé?ð: ¾-Õ?ò¼‚9û é?ÐP �QÖ?ñY÷‡Óè?ðêÍÒq×?mö¹ëå†è?�}…œŽØ?”¹X¶—<è?`áU¨Ù?"Æÿôç?ÐÓn¾Ú?Ê"­ç?à ®òÐÛ?ŒÿžùÜgç?@¿=¤àÜ?Ž ¹ æ?¶D«‰<¦4W`æ?©÷bê›ÿa<Åò%ÃÿŸæ?º�<ËÏ~‚<Z¹8àæ?&“sVˆÿˆ<ã”™àÿç?±‚_'@ýŠ<Y`ç?Aƒ#´uýr¼Õ[e ç?v+$|æx<¦éY2àç?·"ö&äb¼Ò²´íÿè?/É¥F„¼Ãüú-`è?šò¢ô÷m)àÿßò?ù¦²Ú9|›<‚ðÜ÷ÿó?TRÜn3ñ}<`‹Zðÿ_ó?ë1ÍLVž¼Ì®. ó?w¤ÓKçðu<6²;àó?3ˆ�Ë}œ<ÿ‡Ñ ô?(=-ϯ~<±|8 `ô?¦™e…7‚<‰ŸV ô?Ò¼O�\ú‰¼óC5àô?)Sí%x¼Ìÿõ?ÜTw„؃˜é0.�€‘¼AÆ úð?n¿ˆO;›<53û©=öï?]ÜØœ`q¼a€w>šìï?Ñf‡z^�¼…nèãï?ög5RÒŒ¾ï?m{ƒ]¦š—<‰ùlXµï?üïý’µŽ<÷Gr+’¬ï?Ñœ/p=¾><¢ÑÓ2ì£ï? n�‰4j¼Óþ¯f›ï?½/*RV•¼Q[Гï?UêNŒï€P¼Ì1lÀ½Šï?ôÕ¹#É‘¼à-©®š‚ï?¯U\éãÓ€÷ìš<ª¹h1‡Tï?�8†Ë‚ç�¼Ùü"PMï?�æDAoŠ<ÖŒbˆ;Fï?}ä°z€<–Ü}‘I?ï?”¨¨ãýŽ–<8bunz8ï?}Htò^‡©¯ ï?¶«°MuMƒ<·1 þï?Lt¬âB†<1ØLüpï?JøÓ]9Ý�<ÿd²üî?[Ž;€£†¼ñŸ’_Åöî?hPKÌíJ’¼Ë©:7§ñî?Ž-Qø™¼fØm®ìî?Ò6”>èÑq¼÷Ÿå4Ûçî?γ™¼å¨Ã-ãî?mL*§HŸ…<"4L¦Þî?Ši(z`“¼€¬EÚî?[‰H�§X¼*.÷! Öî?šIg›,|¼—¨PÙõÑî?¬Â`ícC<-‰a`Îî?ïd; f–Z~dx¼t_ìèuŸî?°}‹ÀJt�¥HšŸî?ŠæU2†¼ÉgBVëŸî?ÓÔ ^Ëœ�T'¤î?47;ñ¶i“¼ÎL™‰¥î?ÿ:„^€¼­Ç#F§î?nWrØPÔ”¼í’D›Ù¨î?Š[g­�<™fŠÙǪî?´êðÁ/·�<Û *Bå¬î?ÿçÅœ`¶e¼ŒDµ2¯î?D_óYƒö{<6w™®±î?ƒ=§ “¼Æÿ‘ [´î?)l‹¸©]¼åÅͰ7·î?Y¹�|ù#l¼RÈËDºî?ªùô"CC’¼PNÞŸ‚½î?KŽf×lÊ…¼ºÊpñÀî?'Α+ü¯q<�𣂑Äî?»s á5Òm<##ãcÈî?c"b"Ň¼eå]{fÌî?Õ1âㆋ<3-Jì›Ðî?»¼ÓÑ»‘¼]%>²Õî?Ò1îœ1Ì�´!Õ‚¼_›{3—|ï?É G;¹*‰¼)¡õF†ï?Óˆ:`¶t<ö?‹ç.�ï?qr�QìŃ<ƒLÇûQšï?ð‘Ó�÷�¼Ú�¤¢¯¤ï?}t#☮�¼ñgŽ-H¯ï? ªA¼ÃŽ<'Zaîºï?2ë©Ã”+„<—ºk7+Åï?î…Ñ1©dŠ<@En[vÐï?íã;äº7޼¾œ­ýÛï?�Í‘M;‰w<Ø�ž�Áçï?‰Ì`AÁS<ñq�+Âóï? ö?AÉ) ȹò‚,Ö¿€V7($´ú<€ö?Aé) X¿½ÑÕ¿ ÷àØ¥½`ö?A‰* XEwvÕ¿mP¶Õ¤b#½@ö?A©* ø-‡­Õ¿Õg°žä„æ¼ ö?AÉ* xw•_¾Ô¿à>)“i½ö?Aé* `‹aÔ¿Ì„LH/Ø=àõ?A‰+ ¨††0Ô¿: ‚íóBÜ<Àõ?A©+ HiUL¦Ó¿`”Q†Æ± = õ?AÉ+ €˜šÝGÓ¿’€ÅÔMY%=€õ?Aé+  áºâèÒ¿Ø+·™{&=`õ?A‰, ˆÞZ‰Ò¿?°Ï¶Ê=`õ?A©, ˆÞZ‰Ò¿?°Ï¶Ê=@õ?AÉ, xÏûA)Ò¿vÚS($Z½ õ?Aé, ˜iÁ˜ÈÑ¿Tçh¼¯½õ?A‰- ¨««\gÑ¿ð¨‚3Æ=àô?A©- H®ù‹Ñ¿fZýĨ&½Àô?AÉ- �sâ$£Ð¿ô~îk ½ ô?Aé- д”%@п-ôž¸6ð¼ ô?A‰. д”%@п-ôž¸6ð¼€ô?A©. @^m¹Ï¿‡<™«*W =`ô?AÉ. `ÜË­ðο$¯†œ·&+=@ô?Aé. ð*n'οÿ?TO/½ ô?A‰/ ÀOk!\Í¿hÊ»‘º!=ô?A©/  šÇ÷�Ì¿4„ŸhOy'=ô?AÉ/  šÇ÷�Ì¿4„ŸhOy'=àó?Aé/ �-t†ÂË¿�·‹1°N=Àó?A‰0 À€NÉóÊ¿f�Í?cNº< ó?A©0 °â¼#Ê¿êÁFÜdŒ%½ ó?AÉ0 °â¼#Ê¿êÁFÜdŒ%½€ó?Aé0 PôœZRÉ¿ãÔÁÙÑ*½`ó?A‰1 Ð e È¿ úÛ¿½+=@ó?A©1 à‰«Ç¿XJSr�Û+=@ó?AÉ1 à‰«Ç¿XJSr�Û+= ó?Aé1 ÐçÖÆ¿fâ²£jä½ó?A‰2 �§p0ÿÅ¿9PŸCž½ó?A©2 �§p0ÿÅ¿9PŸCž½àò?AÉ2 °¡ãå&Å¿�[�‹Þ ½Àò?Aé2 €Ël+MÄ¿ ÀÝÍsˬ?(ØGòh½ î?A©> ÀÀ1ê®?{;ÉO>½àí?AÉ> `FÑ;—±?›ž V]2%½ í?Aé> àѧõ½³?×NÛ¥^È,=`í?A‰?  —MZéµ?]<i,½@í?A©? Àê Ó·?2í�©�ì<í?AÉ? @Y]^3¹?ÚG½:\#=Àì?Aé? `­�Èj»?åh÷+€�½ ì?A‰À @¼Xˆ¼?Ó¬ZÆÑF&=`ì?A©À  ƒ9Ǿ?àEæ¯hÀ-½@ì?AÉÀ àÛ9‘è¿?ý ¡OÖ4%½ì?AéÀ à'‚ŽÁ?ò-Îxï!=àë?A‰Á ð#~+ªÁ?4™8Dާ,= ë?A©Á €† aÑÂ?¡´�Ël�=€ë?AÉÁ �°üeÃ?‰rK#¨/Æ<@ë?AéÁ °3ƒ=‘Ä?x¶ýTyƒ%= ë?A‰Â °¡äå'Å?Ç}iåè3&=àê?A©Â Œ¾NWÆ?x.<,‹Ï=Àê?AÉ pu‹ðÆ?á!œå�%½ ê?Aé PD…�‰Ç?C‘pf½`ê?AŠÃ 9믾È?Ñ,éªT=½@ê?AªÃ ÷ÜZZÉ?oÿ X(ò=ê?AÉà àŠ<í“Ê?i!VPCr(½àé?Aéà Ð[WØ1Ë?ªá¬N�5 ½Àé?A‰Ä à;8‡ÐË?¶TYÄK-½ é?A©Ä ðÆûoÌ?Ò+–Årìñ¼`é?AÉÄ �Ô°=±Í?5°÷*ÿ*½@é?AéÄ çÿSÎ?0ôA`'Â< é?AŠÅ Ýä­õÎ?Ž»e!ʼé?A©Å °³l™Ï?0ß ÊìË=Àè?AÉÅ XM`8qÐ?‘NíÛœø< è?AéÅ `ag-ÄÐ?éê<‹'=€è?A‰Æ è'‚ŽÑ?ð¥c!,½`è?A©Æ ø¬Ë\kÑ?�¥÷Íš+=@è?AÉÆ hZc™¿Ñ?·½GQí¦,= è?AéÆ ¸mEÒ?êºFºÞ‡ =àç?A‰Ç �Ü|ð¾Ò?ôPJúœ*=Àç?A©Ç `ÓáñÓ?¸B33UBš™oB33†BÍÌ“B×£˜@…ëé@áz0A\�ŒA{¦@�Âý@\�FA……Arive.audio.namesSound‘þ‰&Ërupture‘þ�&Ëseismo‘þ�Ë soundtrack?€>@ÍÌÌ=A€>?€>@ÍÌÌ=A€>‡ËÌp_'?Í@?ΖTitle In‡ËÌp_'?ÍmÅN?Κ™¾– Type Heading‡ËÌ“:1?Í� X?Κ™¾–Type Sub‡ËÌ� 8?Í`?Κ™¾– Type Zoom‡ËÌ@?Íp_g?Κ™¾– Type Shards‡ËÌ“:1?ÍmÅN?ΖSeismograph In‡ËÌKêD?Í%ub?Ζ Controls In‡ËÌmÅN?ÍHPl?Ζ Footer In‡ËÌ� X?Í#Ûi?Ζ Swatch 1 In‡ËÌÛŠ]?ÍmÅn?Ζ Swatch 2 In‡ËÌ%ub?͸¯s?Ζ Swatch 3 In‡ËÌp_g?Í� x?Ζ Swatch 4 In‡ËÌHPl?ÍÛŠ}?Ζ Swatch 5 In‡Ë̸¯s?ΖRing Inó– Gear Offsetò§ò§‡ÌÍ@@ÎÏ|C–Gear To Offset–õöô33³>– Gear Easeó– Ring Offsetò§ò§‡ÌÍ€@΀ÀÏLC–Swatch To Offset–õöô33³>– Ring Ease³­Rupture¯­speed¯­spin¯­material¯­bloom¯­ aberrationö­rebuildö­breach¯­build»­ statusLabel»­ zoomLabel»­ shardLabel»­ clockLabel»­ materialLabel¸­ink¯­seismic¯­shepard¯­breaches¯­strikes¯­ strikePanö­hoverInö­hoverOut¯­gear¯­lattice¯­turn¯­open¯­pace¯­promptµ¶Defaultº¿€?ªº¿€?ªºªº¿€?ªº¿€?ªõªõªºª±± BUILD 000%ª±±ZOOM 10^0.000 RING 0000ª ±±PEELED 00000 STRIKES 000ª ±± T+ 00:00.00ª ±±MATERIAL PLASTERª ª«ÿª ºªºªºªºªºªõªõªº¿@ªºªºªºªºªºª³­ RiveCLIBootUpµ¶instanceÄìǯDzDîRupture¤åæçèéêëìñòArtboard Style Background%ÿColor™îPrompt¿Ìʤó€AíîïðøÕÖåæçèéêëìñòßà Prompt Style†fff? Prompt Titleª��Prompt Title Layout‰’pA†À@—Prompt Title StyleFill%ÙãèÿLight ‡�ŒRUPTURERun†? Prompt Hintª��Prompt Hint Layout ‰’0A†`@—Prompt Hint Style Fill%ÙãèÿLight‡�Œ TAP TO STARTRun ™îOverlay¤„ B… B†B‡Bíîïðø Õåæçèéêëìñòßà Overlay Style™îLeft¤ø Öåæçèéêëìñò�� Left Style™îTitle¿ÌÊ”¤óAÖåæçèéêëìñò�� Title Style†š™Y?Headingª��Heading Layout‰’pA†@@— Heading StyleFill%ÿInk¿Ì Ê%‡�ŒRUPTURERunŸÏdÄÃÁType InžÐ@½š™>¾@Reveal¿ÌÊ¿”†ÍÌ ?Latticeª��Lattice Layout ‰’PA†À?— Lattice Style Fill"%ÿInk#¿Ì Ê%‡�"Œ&LOG POLAR VORONOI 26 PLATES PER TURNRun ŸÏdÄÃÁType In žÐ@½š™>¾@Reveal&¿ÌÊ¿”†333?Zoomª�� Zoom Layout(‰’PA†À?— Zoom Style(Fill*%ÿInk+¿Ì Ê%‡�*ŒZOOM 10^0.000 RING 0000Run(¿Ì ÊŒŸÏdÄÃÁType In(žÐ@½š™>¾@Reveal.¿ÌÊ¿”†333?Shardsª�� Shards Layout0‰’PA†À?— Shards Style0Fill2%ÿInk3¿Ì Ê%‡�2ŒPEELED 00000 STRIKES 000Run0¿Ì ÊŒŸÏdÄÃÁType In0žÐ@½š™>¾@Reveal6¿ÌÊ¿”™î9Controls¿ÌÊ”¤ó`AÖåæçèéêëìñò��Controls Style8™î;Gears8¤åæçèéêëìñò�� Gears Style:Rail:%Clear<™¨B@î? Underline:¤„(CíðÕåæçèéêëìñòUnderline Style>¿ÌÊ„”Fill>%ÿInk@¿Ì Ê%™¨BîCReverse:¤‚Aƒ Aøåæçèéêëìñò� Reverse StyleBHitB%ClearD†š™Y? Reverse LabelBª��Reverse Label LayoutF‰’0A†ffæ?—Reverse Label StyleFFillH%ÿInkI¿Ì Ê%‡�HŒREVERSERunF™¨BîMDrift:¤‚Aƒ Aøåæçèéêëìñò� Drift StyleLHitL%ClearN†š™Y? Drift LabelLª��Drift Label LayoutP‰’0A†ffæ?—Drift Label StylePFillR%ÿInkS¿Ì Ê%‡�RŒDRIFTRunP™¨BîWPull:¤‚Aƒ Aøåæçèéêëìñò� Pull StyleVHitV%ClearX†š™Y? Pull LabelVª��Pull Label LayoutZ‰’0A†ffæ?—Pull Label StyleZFill\%ÿInk]¿Ì Ê%‡�\ŒPULLRunZ™¨BîaRush:¤‚Aƒ Aøåæçèéêëìñò� Rush Style`Hit`%Clearb†š™Y? Rush Label`ª��Rush Label Layoutd‰’0A†ffæ?—Rush Label StyledFillf%ÿInkg¿Ì Ê%‡�fŒRUSHRund™îkButtons8¤ò@Aøåæçèéêëìñò�� Buttons Stylej™îmBreachj¤€`A�`A‚AƒAåæçèéêëìñò€@@�� Breach StylelStrokel%ÿInkn¿Ì Ê%†fff? Breach Labellª��Breach Label Layoutp‰’0A†ffæ?—Breach Label StylepFillr%ÿInks¿Ì Ê%‡�rŒBREACHRunp™îwRebuildj¤€`A�`A‚AƒAåæçèéêëìñò€@@�� Rebuild StylevStrokev%ÿInkx¿Ì Ê%†fff? Rebuild Labelvª��Rebuild Label Layoutz‰’0A†ffæ?—Rebuild Label StylezFill|%ÿInk}¿Ì Ê%‡�|ŒREBUILDRunz†333?Statusjª�� Status Layout€‰’PA†À?— Status Style€Fill‚%ÿInkƒ¿Ì Ê%‡�‚Œ BUILD 000%Run€¿ÌÊŒ™ Cî‡Right¤ø Öåæçèéêëìñò� Right Style†™ Cî‰Seismic†¿ÌÊ”¤ó AÖåæçèéêëìñò� Seismic Styleˆ™ Cî‹Seismic Headerˆ¤ø åæçèéêëìñò�Seismic Header StyleІÍÌ ? Seismic TitleŠª��Seismic Title LayoutŒ‰’PA†À?—Seismic Title StyleŒFillŽ%ÿInk�¿Ì Ê%‡�ŽŒSEISMICRunŒ†333?ClockŠª�� Clock Layout’‰’PA†À?— Clock Style’Fill”%ÿInk•¿Ì Ê%‡�”Œ T+ 00:00.00Run’¿Ì ÊŒ™ C€?î™Ruleˆ¤åæçèéêëìñò Rule Style˜Fill˜%3Inkš¿Ì Ê%™Ä C¨Bî�Traceˆ¤åæçèéêëìñò Trace StyleœýÐ Seismographœ™î Footer†¿ÌÊ”¤ó€AøÖåæçèéêëìñò�� Footer StyleŸ†333?MaterialŸª��Material Layout¡‰’PA†À?—Material Style¡Fill£%ÿInk¤¿Ì Ê%‡�£ŒMATERIAL PLASTERRun¡¿Ì ÊŒ™î¨SwatchesŸ¤ò@Aåæçèéêëìñò��Swatches Style§™@B@BîªRing§¿ÌÊ” ¤„€À†€ÀíïÕåæçèéêëìñò€A Ring Style©¿ÌÊ„”/À?Stroke©%ÿInk«¿Ì Ê%™ B Bî®Plaster§¿ÌÊ”¤åæçèéêëìñò€à@ Plaster Style­Fill­" B# BGradient¯&Úæíÿ°&v‚Œÿ'€?°™ B Bî´Concrete§¿ÌÊ” ¤åæçèéêëìñò€à@Concrete Style³Fill³" B# BGradientµ&½·³ÿ¶&D>;ÿ'€?¶™ B BîºMagma§¿ÌÊ” ¤åæçèéêëìñò€à@ Magma Style¹Fill¹" B# BGradient»&.zÿÿ¼&ÿ'€?¼™ B BîÀGlacier§¿ÌÊ” ¤åæçèéêëìñò€à@ Glacier Style¿Fill¿" B# BGradientÁ&ÿñÔÿÂ&~^+ÿ'€?™ B BîÆVoid§¿ÌÊ” ¤åæçèéêëìñò€à@ Void StyleÅFillÅ" B# BGradientÇ&ÿ|²ÿÈ& ÿ'€?È™ÄîÌStage¤åæçèéêëìñò�� Stage StyleËýÐRuptureËãó€?speedÍ¿ÌÊóãó€?spinÍ¿ÌÊóãmaterialÍ¿ÌÊóãó€?bloomÍ¿ÌÊóãó€? aberrationÍ¿ÌÊóêrebuildÍ¿ÌÊæêbreachÍ¿ÌÊæÛÐ  Soundtrack;7Idle57 State Machine9ŠLayer>@?A—=•ráàBŠ Gear ReverseÙüš™¿¿ÌÊüËçÙ¿ÌÊüËçràBŠ Hover Reverse÷¿ÌÊ®ËçráàBŠ Leave Reverse÷¿ÌÊ®ËçráàLŠ Gear DriftÙü33³>¿ÌÊüËçÙü€?¿ÌÊüËçràLŠ Hover Drift÷¿ÌÊ®ËçráàLŠ Leave Drift÷¿ÌÊ®ËçráàVŠ Gear PullÙü€?¿ÌÊüËçÙü@¿ÌÊüËçràVŠ Hover Pull÷¿ÌÊ®ËçráàVŠ Leave Pull÷¿ÌÊ®Ëçráà`Š Gear RushÙüff&@¿ÌÊüËçÙü@@¿ÌÊüËçrà`Š Hover Rush÷¿ÌÊ®Ëçráà`Š Leave Rush÷¿ÌÊ®ËçràlŠ Hover Breach÷¿ÌÊ®ËçráàlŠ Leave Breach÷¿ÌÊ®ËçràvŠ Hover Rebuild÷¿ÌÊ®ËçráàvŠ Leave Rebuild÷¿ÌÊ®ËçráàlŠBreach÷¿ÌÊ®ËçráàvŠRebuild÷¿ÌÊ®Ëçráà­Š Pick PlasterÙ¿ÌÊüËçrà­Š Hover Plaster÷¿ÌÊ®Ëçráà­Š Leave Plaster÷¿ÌÊ®Ëçráೊ Pick ConcreteÙü€?¿ÌÊüËçrೊHover Concrete÷¿ÌÊ®ËçráೊLeave Concrete÷¿ÌÊ®Ëçrá๊ Pick MagmaÙü@¿ÌÊüËçr๊ Hover Magma÷¿ÌÊ®Ëçrá๊ Leave Magma÷¿ÌÊ®Ëçrá࿊ Pick GlacierÙü@@¿ÌÊüËçr࿊ Hover Glacier÷¿ÌÊ®Ëçrá࿊ Leave Glacier÷¿ÌÊ®ËçráàÅŠ Pick VoidÙü€@¿ÌÊüËçràÅŠ Hover Void÷¿ÌÊ®ËçráàÅŠ Leave Void÷¿ÌÊ®ËçÄìHDÈCîYÈÃNuRiveWordmark01 ÈCHCRIVE_Wordmark_ROOTR 2 PathR¸ëAø@ Component)\�AÃõø@ Component.4B B ComponentR¸ÍA B Component)\Ÿ¿q=ú@ ComponentìQ‹Á…û@ ComponentìQ‹Áš™áÀ ComponentWázT?= æAš™áÀ ComponentTÛÉ?UázT?= òAÍÌÁ ComponentVÛÉ¿WázT?= òA\�¾Á ComponentUázT?= æA\�ÊÁ Component.4Â\�ÊÁ Component.4  ComponentWáz4@R¸ëA  ComponentT'ÀU¸0@Ved ?Wm~0@B\� ComponentT=ÀU·Ø.@V®¥ƒ?W·Ø.@3³+B{ ComponentTÛÉ¿Uáz4@×#4BìQÄÁ ComponentVÛÉ?Wáz4@×#4B= ÷À ComponentTöÄ¿Uà*0@Vá@Wm~0@3³+B)\�= ComponentTf-¿Uâ2/@V]¢'@WÎÀ/@B{¶@ ComponentUáz4@R¸ëAø@ ComponentFill 1%ÿÿÿÿ Component RIVE_wordmark ì‘3ÃR PathR¸ëAø@ Component)\�AÃõø@ Component.4B B ComponentR¸ÍA B Component)\Ÿ¿q=ú@ ComponentìQ‹Á…û@ ComponentìQ‹Áš™áÀ ComponentWázT?= æAš™áÀ ComponentTÛÉ?UázT?= òAÍÌÁ ComponentVÛÉ¿WázT?= òA\�¾Á ComponentUázT?= æA\�ÊÁ Component.4Â\�ÊÁ Component.4  ComponentWáz4@R¸ëA  ComponentT'ÀU¸0@Ved ?Wm~0@B\� ComponentT=ÀU·Ø.@V®¥ƒ?W·Ø.@3³+B{ ComponentTÛÉ¿Uáz4@×#4BìQÄÁ ComponentVÛÉ?Wáz4@×#4B= ÷À ComponentTöÄ¿Uà*0@Vá@Wm~0@3³+B)\�= ComponentTf-¿Uâ2/@V]¢'@WÎÀ/@B{¶@ ComponentUáz4@R¸ëAø@ ComponentFill 1%ÿÿÿÿ Component3 €hÂÿë½I Path5®GéÀ=ŠB Component6®GéÀ=ŠÂ Component6®Gé@=ŠÂ Component6®Gé@=ŠB Component6Fill 15%ÿÿÿÿ Component; ÀõEBÿë½V Path=¸ÑÀ=ŠB Component>¤ðRÂ=ŠÂ Component>3³Â=ŠÂ Component> ×£;q=±A Component>×#B=ŠÂ Component>¤ðRB=ŠÂ Component>¸Ñ@=ŠB Component>Fill 1=%ÿÿÿÿ ComponentF P8;C×½E PathH{”€B ComponentI{”Â{” ComponentI{”B{” ComponentI{”Bq=ÉÁ ComponentIq=µÁq=ÉÁ ComponentIq=µÁš™íÀ ComponentI)\ÄAš™íÀ ComponentI)\ÄAš™í@ ComponentIq=µÁš™í@ ComponentIq=µÁq=ÉA ComponentI{”Bq=ÉA ComponentI{”B{”B ComponentI{”Â{”B ComponentIFill 1H%ÿÿÿÿ ComponentW¤åæçèéêëìñò Layout Style?A?A?A?A?€?A€??€?A€??€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A9ð<=w>ø7 Timeline 135FÍÌL>CF€?CF?C F€?C C5F@@CF€?C 5F@@CF€?C 35CF€?CFš™™>CF€?CF€?DCXDCb355CF€?CFš™™>CF€?CF€?DCPDCZ5 F€ÂDEZCF€hÂDC#3=5CF€?CFš™™>CF€?C!F€?DCTDC^5 FàúŠBDE[CFÀõEBDC%3H5CF€?CFš™™>CF€?C#F€?DC\DCf5 FP8OCDE\CFP8;CDC'35 FœADE]CF¿DC%5F€?DE^CPFfff?DCf5F€?DE_CPFfff?DCf35F0¶BDE`CFR¸ëADC5Fø@DEaCFø@DC5DEbCDC35F YŸBDEcCF)\�ADC5FÃõø@DEdCFÃõø@DC5DEeCDC3 5F YÕBDEfCF.4BDC5F BDEgCF BDC5DEhCDC3!5F°®BDEiCFR¸ÍADC5F BDEjCF BDC5DEkCDC3"5F‰qBDElCF)\Ÿ¿DC5Fq=ú@DEmCFq=ú@DC5DEnCDC3#5FìQ‹ÁDEoCFìQ‹ÁDC5F…û@DEpCF…û@DC5DEqCDC3$5FìQ‹ÁDErCFìQ‹ÁDC5Fš™áÀDEsCFš™áÀDC5DEtCDC3%5F�Ä´BDEuCF= æADC5Fš™áÀDEvCFš™áÀDC5TDEwCDC5VDExCDC5UDEyCDC5WFázT?DEzCFázT?DC3&5F�Ä·BDE{CF= òADC5FÍÌÁDE|CFÍÌÁDC5TFÛÉ?DE}CFÛÉ?DC5VDE~CDC5UFázT?DECFázT?DC5WDE€CDC3'5F�Ä·BDE�CF= òADC5F\�¾ÁDE‚CF\�¾ÁDC5TDEƒCDC5VFÛÉ¿DE„CFÛÉ¿DC5UDE…CDC5WFázT?DE†CFázT?DC3(5F�Ä´BDE‡CF= æADC5F\�ÊÁDEˆCF\�ÊÁDC5TDE‰CDC5VDEŠCDC5UFázT?DE‹CFázT?DC5WDEŒCDC3)5F.4ÂDE�CF.4ÂDC5F\�ÊÁDEŽCF\�ÊÁDC5DE�CDC3*5F.4ÂDE�CF.4ÂDC5F ÂDE‘CF ÂDC5DE’CDC3+5F0¶BDE“CFR¸ëADC5F ÂDE”CF ÂDC5TDE•CDC5VDE–CDC5UDE—CDC5WFáz4@DE˜CFáz4@DC3,5F�ÄÅBDE™CFBDC5F\�ÂDEšCF\�ÂDC5TF'ÀDE›CF'ÀDC5VFed ?DEœCFed ?DC5UF¸0@DE�CF¸0@DC5WFm~0@DEžCFm~0@DC3-5FšÑBDEŸCF3³+BDC5F{ÂDE CF{ÂDC5TF=ÀDE¡CF=ÀDC5VF®¥ƒ?DE¢CF®¥ƒ?DC5UF·Ø.@DE£CF·Ø.@DC5WF·Ø.@DE¤CF·Ø.@DC3.5FìSÕBDE¥CF×#4BDC5FìQÄÁDE¦CFìQÄÁDC5TFÛÉ¿DE§CFÛÉ¿DC5VDE¨CDC5UFáz4@DE©CFáz4@DC5WDEªCDC3/5FìSÕBDE«CF×#4BDC5F= ÷ÀDE¬CF= ÷ÀDC5TDE­CDC5VFÛÉ?DE®CFÛÉ?DC5UDE¯CDC5WFáz4@DE°CFáz4@DC305FšÑBDE±CF3³+BDC5F)\�=DE²CF)\�=DC5TFöÄ¿DE³CFöÄ¿DC5VFá@DE´CFá@DC5UFà*0@DEµCFà*0@DC5WFm~0@DE¶CFm~0@DC315F�ÄÅBDE·CFBDC5F{¶@DE¸CF{¶@DC5TFf-¿DE¹CFf-¿DC5VF]¢'@DEºCF]¢'@DC5UFâ2/@DE»CFâ2/@DC5WFÎÀ/@DE¼CFÎÀ/@DC325F0¶BDE½CFR¸ëADC5Fø@DE¾CFø@DC5TDE¿CDC5VDEÀCDC5UFáz4@DEÁCFáz4@DC5WDEÂCDC3J5F{”ÂDEÃCF{”ÂDC'5F€BDEÄCF€BDC'5DEÅCDC'3K5F{”ÂDEÆCF{”ÂDC'5F{”ÂDEÇCF{”ÂDC'5DEÈCDC'3L5FeCDEÉCF{”BDC'5F{”ÂDEÊCF{”ÂDC'5DEËCDC'3M5FeCDEÌCF{”BDC'5Fq=ÉÁDEÍCFq=ÉÁDC'5DEÎCDC'3N5Fq=µÁDEÏCFq=µÁDC'5Fq=ÉÁDEÐCFq=ÉÁDC'5DEÑCDC'3O5Fq=µÁDEÒCFq=µÁDC'5Fš™íÀDEÓCFš™íÀDC'5DEÔCDC'3P5F ©BDEÕCF)\ÄADC'5Fš™íÀDEÖCFš™íÀDC'5DE×CDC'3Q5F ©BDEØCF)\ÄADC'5Fš™í@DEÙCFš™í@DC'5DEÚCDC'3R5Fq=µÁDEÛCFq=µÁDC'5Fš™í@DEÜCFš™í@DC'5DEÝCDC'3S5Fq=µÁDEÞCFq=µÁDC'5Fq=ÉADEßCFq=ÉADC'5DEàCDC'3T5FeCDEáCF{”BDC'5Fq=ÉADEâCFq=ÉADC'5DEãCDC'3U5FeCDEäCF{”BDC'5F{”BDEåCF{”BDC'5DEæCDC'3V5F{”ÂDEçCF{”ÂDC'5F{”BDEèCF{”BDC'5DEéCDC'57State Machine 19ŠLayer 1>@?A—=•ÄìHDHDîô ÀeDÈÃNuRiveBrandmark01 ÈCÈC@@ROOT“¨icon_shuffle_groupž diag_lines Path= 'ÂH ComponentHÂ= ' ComponentHÂH Component €Path…ë‘ÁH ComponentHÂ…ë‘Á ComponentHÂö(Á Componentö(ÁH Component €PathHBHB Component HB= 'B Component = 'BHB Component  €Path…ë‘AHB ComponentHB…ë‘A ComponentHBö(A Componentö(AHB Component €Pathö(\AH ComponentHÂö(\A ComponentHÂ…ë±A Component…ë±AH Component €Pathö(\ÁHB ComponentHBö(\Á ComponentHB…ë±Á Component…ë±ÁHB Component €Path= 7BH Component HÂ= 7B Component HÂHB Component = 7ÂHB Component HB= 7 Component HBH Component Fill 1%ÿÿÿÿ Component'ž lightning Path))\‰ÁHB Component* ×ÛÀ Component*š™ãÁ Component*žÁH Component*š™ÓAH Component*33›@HÁ Component*š™ãAHÁ Component*®G‰ÁHB Component*Fill 1)%ÿÿÿÿ Component3ž icon_game_dev Path5ìQ…A)\…Á Component6ìQ…Á)\…Á Component6ìQ…ÁH Component6ìQ…AH Component6 €Path5ìQ…A)\…A Component;ìQ…Á)\…A Component;ìQ…ÁHB Component;ìQ…AHB Component; €Path5áúGB)\…A Component@áúGB®G…Á Component@ìQ…A®G…Á Component@ìQ…A)\…A Component@ €Path5ìQ…Á)\…A ComponentEìQ…Á®G…Á ComponentEáúG®G…Á ComponentEáúGÂ)\…A ComponentE €Path5UÍÌÜ@VÛI@WÍÌÜ@ ×£»HÁ ComponentJTÛÉ¿UÍÌÜ@VÛÉ?WÍÌÜ@{HÁ ComponentJTÛI@UÍÌÜ@WÍÌÜ@ ×£»HA ComponentJTÛÉ?UÍÌÜ@VÛÉ¿WÍÌÜ@…ëGA ComponentJFill 15%ÿÿÿÿ ComponentOžicon_product_designer PathQHÂq=ZA ComponentRHÂ{ZÁ ComponentR ×µÁ{ZÁ ComponentR ×µÁq=ZA ComponentR €PathQVÛÉ¿WÃõð@ ×µÁ¤p ComponentWUÃõð@VÛI@WÃõð@¤pÂH ComponentWTÛÉ¿UÃõð@VÛÉ?WÃõð@H¤p ComponentWTÛI@UÃõð@WÃõð@¤pÂ�µÁ ComponentWTÛÉ?UÃõð@�µÁ¤p ComponentW €PathQq=ZAq=ZA Component]q=ZA{ZÁ Component]{ZÁ{ZÁ Component]{ZÁq=ZA Component] €PathQHBq=ZA ComponentbHB{ZÁ Componentb ×µA{ZÁ Componentb ×µAq=ZA Componentb €PathQHBHB ComponentgHB ×µA Componentg ×µA ×µA Componentg ×µAHB Componentg €PathQHB ×µÁ ComponentlHBH Componentlq=ZÁH Componentlq=ZÁ ×µÁ Componentl €PathQH ׵A ComponentqHÂHB Componentqq=ZAHB Componentqq=ZA ×µA ComponentqFill 1Q%ÿÿÿÿ Componentvž icon_animator PathxHB ComponentyH ComponentyH ComponentyHB ComponentyFill 1x%ÿÿÿÿ Component~ž icon_swords Path€ ×]A( Component��ÂÆA®/A Component�¸þA…ë�@ Component�q½B®/A Component�)\âAÃõªA Component�ÍL&Bš™ B Component�Ha/B…B Component�€?B×£B Component�ö¨Báz?B Component�=ŠB)\/B Component�¸ž B®G&B Component�«AìQâA Component��Â/AR¸B Component�{‚@{þA Component��Â/AR¸ÆA Component� ×£;�Â]A Component�š™/ÁR¸ÆA Component��Â�À{þA Component�š™/ÁR¸B Component�…ëªÁìQâA Component�{” ®G&B Component�€Â)\/B Component�¸žÂáz?B Component�Ãu?Â×£B Component� W/Â…B Component��B&š™ B Component�®GâÁÃõªA Component�3³Â®/A Component�= þÁ…ë�@ Component�®ÆÁ®/A Component�®]Á¨ Component�€?Â{ Component�€?Âáz? Component�šÂáz? Component� ×£»š™]Á Component�\Báz? Component�Ãu?Báz? Component�Ãu?B{ Component�…]A¨ Component�Fill 1€%ÿÿÿÿ Component©ž icon_unknown €Path«V‘ÀWp3?ìQBö(  Component¬TÐ¥K?Uâ73?VäËÀWúfÊA…Bq= Component¬T-"I¿UXÊAVäË@Wó5?\�Âq= Component¬TO�S¿Uò‹1?V}ß@W\Þ´A)\Âö(  Component¬T†YÀUÞã´Aáz®ÉA Component¬V0ÍZ?WÅ]xAq=šÁÃõ'B Component¬T�\@UÅ]xAq=šAÃõ'B Component¬VSÙZ¿WÞã´AázB®ÉA Component¬TxÁT?U\Þ´A)\Bö(  Component¬ Path«TûãK¿UÕ£@VÜ@WÕ£@ö(¤ÀázÒA Component¶TÉF?Uä AVBtÀW@ Aš™¹ÁHá¬A Component¶TÜ@UÕ£@VûãK¿WÕ£@ìQâÁš™i@ Component¶T(ŽÀUä AVcnF?W@ A…#Áš™A Component¶ Path«TcnF¿U@ AVBt@W@ A¤p¹AÍ̬A Component»T™ˆK?Ur¤@VÜÀWÕ£@…£@ffÒA Component»TBt@U@ AVcnF¿W@ A33#A¤pA Component»Tµ-ÀUr¤@VûãK?WÕ£@ö(âAÃõh@ Component»Fill 1«%ÿÿÿÿ ComponentÀžicon_developer PathÂìQ…AHB ComponentÃìQ…AìQB Componentà WBìQB Componentà WBìQ ComponentÃìQ…AìQ ComponentÃìQ…AH ComponentÃáúGBH ComponentÃáúGBHB Componentà €PathÂìQ…ÁHB ComponentÌìQ…ÁìQB ComponentÌ WÂìQB ComponentÌ WÂìQ ComponentÌìQ…ÁìQ ComponentÌìQ…ÁH ComponentÌáúGÂH ComponentÌáúGÂHB ComponentÌFill 1Â%ÿÿÿÿ ComponentÕž R_brandmark €Path×HÂH ComponentØHÂHB ComponentØHBHB ComponentØHBH ComponentØ Path×VÛÉ?W�Â@ìQBR¸¶À ComponentÝTjm„¿UI@V4°@WöÕ@ö(þAÍÌL= ComponentÝT]v¿Ut0@VCr'@Wt0@\�ÜAR¸†@ ComponentÝU¸@áz®A)\·@ ComponentÝ�ÂUA¸@ ComponentÝ)\BÍÌìA ComponentÝq=˜AÍÌìA ComponentÝ…k¿®G¹@ ComponentÝq=NÁq=º@ ComponentÝq=NÁR¸¦À ComponentÝWö(?q=ªAR¸¦À ComponentÝTÛÉ?Uö(?¸³Aq=ÊÀ ComponentÝVÛÉ¿Wö(?¸³AÃõŒÁ ComponentÝUö(?q=ªA וÁ ComponentÝìQ וÁ ComponentÝìQÂÍÌìÁ ComponentÝW�Â@áz®AÍÌìÁ ComponentÝT£¾&ÀUI@V¡?WöÕ@\�ÜAìQàÁ ComponentÝT,ÀU¿/@VŒÇƒ?W¿/@ö(þA= ¿Á ComponentÝTÛÉ¿U¸@ìQB®G‘Á ComponentÝFill 1×%ÿÿÿÿ Componentò¤åæçèéêëìñò Layout Style9ð<=‡>7 Timeline 135¨2z×C2zC2z)C2z5C"2zQC*2zxC22z€C:2z«CB2zÂCJ2z×CT5F€?C3×5FÍÌL>CF?CFÍÌL>C F€?C FÍÌL>CTF?CXFÍÌL>C\F€?C`F?CrF€?CvFÍÌÌ=CzFš™™>C}C�5F@CF€?C F€?C`Ffff?Cd5F@CF€?C F€?C`Ffff?Cd57State Machine 19ŠLayer 1>@?A—=•ÄìÇðD‡Dî  ´D Watermark™ðD‡DîRow™HDHDîLayoutÚÅNuRiveWordmark01_ÆState Machine 1ÚÅNuRiveBrandmark01_ÆState Machine 1¤åæçèéêëìñò�� Layout Style¤øåæçèéêëìñò�� Layout Style¤åæçèéêëìñò Layout Style(Fill 1%ÿ Component 9x7 brandmark35F€?D35D9x7wordmark35F€?D35D57State Machine 19ŠLayer 1>@?A—=•A—ñŠðäŒ DñŠð¥äŒðC=•A—ñŠðäŒ DñŠð¥äŒðC