From 91a27b56a4d6f4a1d585f148555423f1f511e0b9 Mon Sep 17 00:00:00 2001 From: m3ultra Date: Thu, 30 Jul 2026 10:19:32 +1000 Subject: [PATCH] A contact sheet, and the luminance ceiling the pipeline never had MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 127 sprites had been generated and about eight had ever been looked at. The pipeline will happily render the wrong object, confidently and well-lit, and no assertion can tell — barrier and flightCase are both "a grey box with edges" as far as any test goes. tools/gen/contact_sheet.py puts every shipped sprite on one page at integer upscale on the venue's own floor colour. It immediately showed about twenty props reading as pale blobs. First instinct was that the vertex baker had lost the albedo. That was wrong: sat=0 on ashUrn, marbleSink and pillar is honest, because stainless and marble and concrete really are grey. The fault was BRIGHTNESS. Props that read sit at median luminance 23-123 (patioHeater 23, arcade 45, poolTable 53, cdj 68); the blobs were 150-190. The venue is painted at ~35 under a 50% black sheet and props are lit by the room's own LIGHTS, so a prop arriving at 180 doesn't read as a bright object — it reads as self-illuminated. Every prop that worked before worked by accident of subject matter; the first pale subjects exposed the gap. props_import --dim scales RGB until median opaque luminance is <=110. Only ever darkens, so anything already in band passes through untouched. Fixed 48 sprites with no regeneration at all — the 512px Blender renders were still in art_incoming, which is exactly why that directory is kept. Also: poster7 shipped with 29% of its pixels and poster9 with 42%, because the near-black-to-alpha pass was eating the dark half of a dark poster. Posters are rectangular plates on a wall, so 4-9 now keep their background and fill the frame. And cf_flux --probe was reporting EXHAUSTED on an account with a full 10,000 neurons: the probe prompt was "a grey square", Cloudflare's safety filter refused it as NSFW, and every non-429 fell through to SystemExit. A health check that can't tell "refused" from "empty" will eventually call a healthy system dead. Gate: lint clean, build clean, 821 tests passing. Co-Authored-By: Claude Opus 5 --- LANEHANDOVER.md | 58 ++++++++++++++++++++++++++++ public/props/ashUrn.png | Bin 609 -> 570 bytes public/props/ashtray.png | Bin 608 -> 596 bytes public/props/bainMarie.png | Bin 1373 -> 1213 bytes public/props/balustrade.png | Bin 1087 -> 990 bytes public/props/barrier.png | Bin 628 -> 575 bytes public/props/beerUmbrella.png | Bin 1657 -> 1377 bytes public/props/binRound.png | Bin 457 -> 422 bytes public/props/bistroTable.png | Bin 417 -> 404 bytes public/props/brokenBasin.png | Bin 1030 -> 988 bytes public/props/canStack.png | Bin 611 -> 602 bytes public/props/champBucket.png | Bin 670 -> 696 bytes public/props/cocktailBar.png | Bin 1562 -> 1553 bytes public/props/distroBox.png | Bin 396 -> 354 bytes public/props/djPlinth.png | Bin 1670 -> 1539 bytes public/props/jukebox.png | Bin 1119 -> 1092 bytes public/props/loungeChair.png | Bin 611 -> 589 bytes public/props/marbleSink.png | Bin 1147 -> 1015 bytes public/props/oldCouch.png | Bin 1582 -> 1521 bytes public/props/pallet.png | Bin 888 -> 771 bytes public/props/picnicTable.png | Bin 948 -> 912 bytes public/props/pieWarmer.png | Bin 778 -> 694 bytes public/props/pillar.png | Bin 486 -> 479 bytes public/props/planter.png | Bin 1118 -> 1082 bytes public/props/plywoodBar.png | Bin 2173 -> 2098 bytes public/props/pokie.png | Bin 903 -> 864 bytes public/props/poster4.png | Bin 1219 -> 1250 bytes public/props/poster5.png | Bin 1009 -> 1160 bytes public/props/poster6.png | Bin 1117 -> 1179 bytes public/props/poster7.png | Bin 395 -> 253 bytes public/props/poster8.png | Bin 924 -> 1113 bytes public/props/poster9.png | Bin 701 -> 673 bytes public/props/raffleDrum.png | Bin 704 -> 619 bytes public/props/ropePost.png | Bin 576 -> 554 bytes public/props/staffChef.png | Bin 1007 -> 907 bytes public/props/staffCleaner.png | Bin 926 -> 919 bytes public/props/staffGlassie.png | Bin 1086 -> 1079 bytes public/props/wheelieBin.png | Bin 632 -> 618 bytes tools/gen/assets.py | 20 ++++++---- tools/gen/cf_flux.py | 17 ++++++++- tools/gen/contact_sheet.py | 70 ++++++++++++++++++++++++++++++++++ tools/gen/run_batch.py | 2 +- tools/glb_to_sprite.py | 9 ++++- tools/props_import.py | 33 ++++++++++++++++ 44 files changed, 198 insertions(+), 11 deletions(-) create mode 100644 tools/gen/contact_sheet.py diff --git a/LANEHANDOVER.md b/LANEHANDOVER.md index c2edae2..db1c9ea 100644 --- a/LANEHANDOVER.md +++ b/LANEHANDOVER.md @@ -2336,3 +2336,61 @@ is 10:00 AEST — so an evening session in Australia will essentially always fin the allocation gone and run local. That is fine (the farm is free and unlimited), but it means the CF-first tier only ever pays off for a morning batch. Every sprite this session is MODELBEAST-rendered. + +## SESSION — FABLE-SOLO-26d · 2026-07-30 (wave 4: the audit) + +**Gate:** lint ✓ build ✓ test ✓ (821 tests) · **Deployed** + verified. +John: "flux creds will be reset right now have a look." They had — 00:10 UTC. + +### `tools/gen/contact_sheet.py` — and why it should have existed on day one +127 sprites had been generated and maybe eight had ever been LOOKED at. The +pipeline will happily produce a confident, well-lit render of the wrong object +and no assertion can tell: `barrier` and `flightCase` are both "a grey box with +edges" as far as any test is concerned. One page, every sprite, integer upscale, +on the venue's own floor colour. It immediately showed ~20 props reading as pale +blobs. + +### THE PIPELINE WAS MISSING A LUMINANCE CEILING (the real find) +First instinct was "the vertex baker lost the albedo". Wrong — measured, and +`sat=0` on `ashUrn`/`marbleSink`/`pillar` is HONEST: stainless, marble and +concrete really are grey. The actual fault was **brightness**: + +| reads well | medLum | reads as a blob | medLum | +|---|---|---|---| +| patioHeater | 23 | ashUrn | 152 | +| taps | 35 | oldCouch | 157 | +| arcade | 45 | binRound | 186 | +| poolTable | 53 | marbleSink | 186 | +| cdj | 68 | djPlinth | 189 | + +The venue is painted at luminance ~35 under a 50% black sheet, and props are lit +by the room's own LIGHTS (SPACES.md §1) — so a prop that ARRIVES at 180 does not +read as a bright object, it reads as self-illuminated. Every prop that worked +worked by accident of subject matter (dark cabinets, dark green felt); the first +pale subjects exposed the gap. **`props_import --dim`** now scales RGB until +median opaque luminance is ≤110, only ever darkening, so props already in band +pass through untouched. `glb_to_sprite` forwards the flag; `run_batch` passes it +for every mesh prop. + +**Fixed 48 sprites with zero regeneration** — the 512px Blender renders were all +still in `art_incoming/`, which is exactly why that directory is kept. + +### Posters were being eaten by their own alpha cut +`poster7` shipped with 29% of its pixels opaque and `poster9` with 42%: the +near-black-to-alpha pass was removing the dark half of a dark poster. A poster is +a rectangular PLATE on a wall, so poster4–9 are now `keep_bg` and prompted to +fill the frame edge to edge. Regenerated on Cloudflare in ~3s each. + +### `cf_flux --probe` was lying +It reported EXHAUSTED on an account with a full 10,000 neurons. Cause: the probe +prompt was the literal string "a grey square", Cloudflare's safety filter +rejected it as NSFW (HTTP 400, code 3030), and every non-429 fell through to +SystemExit. The probe now asks only the question it is for — "has the daily +allocation run out" — and treats any other API response as budget available. +Worth remembering: **a health check that cannot distinguish "refused" from +"empty" will eventually report a healthy system as dead.** + +### Cloudflare timing, settled +Reset is **00:00 UTC = 10:00 AEST**. An evening session in Australia will always +find it spent; a morning one gets ~150 free images first. Today's poster re-rolls +were the first CF-generated sprites in the project. diff --git a/public/props/ashUrn.png b/public/props/ashUrn.png index 23344d5c52729dda19e2d514b97d87d28b639f9e..54f4b280fc7baf464044a389867d10be3ec58cc5 100644 GIT binary patch delta 545 zcmV++0^a@M1iA!}B!2-(L_t(|oLy79svk*Qryds}=gs9LK?uV9I1N?2Dp^ z&gV1vzOPKD)0gv#_~`X|KWeqw2Mz{7K!?MDHk%DyuU7_YwSQWa%jNiN9LJU6aJZHL zgTWxtG>tsZquFdmilR`GB)o=U_>!^NY*MvarOV|)qtQrF`u#qcrkS{|OUva_9#mCT zWRqnGtJmw)Xf$ZOUaP8QS;^^iqSb1}L8(-V4}rn6>AFr}iLqEL*jFx>V@`t_4Z~n3 zC<6#9K=6%$a(~1sEDS=@F=ew^nFRtOPyhz0>K?@pxn%4Ben8ju-^gZ?_vg9uKt=B{mEhz z5ghNIe?FO(Wm&8Vf`vX{gZ{|ddG>9$Te5BYw*&}+fPeP;JyQn=n&(+4_|xe$c^{ti z3yoAvg+hThpeRh-e-H-f6M4Nz_FeXuCiHE%31kFSC^No4cy z^E2~(O(x$xynk3;ua`~E4(R~F8o-FbV!DTTJRT_$i8u}<;r#wU!0~ZlSj3@5(=>KF z0s@^*$6l}3)ND3cGCwcmx*0i8wOS<*XEGTC#4#44f zr1^Y)>NriK&1U1s<(>HH`kEdm6UXQG`N#o?$K&h=65Ykb1bZ+TB){K(+H+R+>+bFY zfX;|uNBiRJylA}g96Xs!QX-L{d_MmHP%4!KSy5O3{XU&eT^%XXe!suCdypXKLIL_3 zXGOKq>p@WQdpc!Blq88&ACK(MY)0jB*?EM{!aY<~wb7l!;gCk75fzI?Rs+uJ9{&JA WQ5Fp%F3H0H0000u5`1k?nOB!3%8L_t(|oRv~bPZLoT{^ri~4%4Bfl(tp^7!sGp#3+i7l`FSk z+>n^K@v#7YfawB~CRKic%7%pa3;GXmgYmJ^VB#YrAledanGSTyOlQX2Gnuh%8WPW9 z?m2h9bIy0ZdnEMO;==q%?o6Kl+}%Mon}a$q0O5~~Prz(6+JDbiR$`raDRhd(qA!3$ zLn-WTe}}H?kW~$wb7)!|OlIIQj%u|+#R`Q2-owXFTX5U$sDtNw zU=pJ<7UP(@av8(vH2o`;o=H;J`Q7^ua2%V!y~(|?tSGp7<2tcrj%{Oe^DO~7!KcN7 z;l{=r(noso_)om7-t#<&CdQwAVisaWE?Zq&r(F=8D8UQ5cB#)8QSa14FcG;@c=7PT zeLp{T4oXbu+HFD~QB(*k=+|pCymBS-1iGcv!H?(g?SNS7jZg;Z2mUb+C|!QO%r*)ny}R> z_(Jl&@IBA-KHvL(3@tG?J5%d5P5JHW8}y_z&~+VDA2`?tyMJJN7skeRa`w zgYP#W2r-^J6b1dKPQoyDbHU-^vy6qEA3c78n(K0KE4ei!S;Fa|As9wCgj#J2OG|lv z&NGYAV>B+qV)u=}dY4?mSnf!~PS;Iq>U;cRXt;gXiU!E0M_HU>4uM zd`yY}DsI)qm5B-bD3wsHR*>xKLaA8fz_hs+p65XnMP&BuhpK8Yx(%#b77e;0go-~M z2a2kIhAGP(97qFooK3!!xUQquG&$BT*v(mJ@qkTVoqr7W9Xi50D2md&d+g7NvR&qtc0_~f~(crd`{YE3oeTR>t@X6xNh)h9TM#a5_g@AJCK$Il-zQ4o4X1N^I z)R3-r@zQ0+XK;RWlzq0|N95)Th3F$Pk;pz}+y2JMJDxIr$JF@9IRN*M4V>X*uU?1O z@c34oqCkE9+VqW^Z68Own46smXvqJAQcu`%IN$X=oi&K V)XBNK&Vv8|002ovPDHLkV1h##D8T># diff --git a/public/props/bainMarie.png b/public/props/bainMarie.png index 047bb859ab57436b77b499464aeb5036111fae61..2d593969dd9c3313831d7de9a7e5ca14cca5b689 100644 GIT binary patch delta 1194 zcmV;b1XcUp3cU%CBYy;hNkl6A9(CVNl)6tcQF)`gs9-&{t zNle_%gUo(>h`b<{w!|cvOv>x)YyAHF{4AMFM%V0VGPyoKKd<^G!++sW27`f2O-<<;Y}t8) zc`ldJ`P0*ryk{4go}N})wr8R@?e6Z%+uNHwJUqz8#)hQRX*oYXj}NY_tmyOZ?oNS} z%VoK~zLw?XW$AP}vbwq|kB^VKj-By%tTxy)!3pdwE-uPwG>S?X5b% z86sfOGVuX#Ou_EU%Ztp-&FMSydcCgT5%WBo%_?{cJAX#Gv~kx^01S&3mo^#=B>_Dm zfg`*Rqm;lIyN`5c9YS$xZEa2W?5yF$KG@X(1BMa<84ZVOn6N%~Iub^#*i(&;M#>Td z%*@QhX@L%rIXO9z)6-MQ=kwBPwG=cU(Fwy)S)I>j)p^b{-{0R?0%0A85im~H=jP_- zj|iY_A%8;%F=>O4E(qXY4!}6YQ)}k?cLhR9FsxPpz&c>4FH$I%&#MD~gfN`;N!Mmm zfl>#|VV1k70rW^AYYLpVXppA7`y4W+VaAINX?ir9svHD?UK(_}YMk^zr}*K6t^*i5 zFhvR&yMA;IhmrgHdl^tuQPf+lmZlpG0UJ014u9-0C-wIB_9WqSH6=Ekj!D%W1Bn0< zN9ZIJ6%JXxTS((@M(gA%jI#gf^Jh&n%j=V`U-eli6l8mQJJy}Fh2SVD4C~k_Mj1dl zQ;T#u90IsWlCA+Ggm^Iwm66NK%eW7d7NiGG!VGh~Cw#6U(vYxgSbaZk!vME-%)Xt4 z#eX0O^bV^#gb1KR^l1>ho9yiD#6^s7k9TlzFy;l|YyirNv9ei_m+p_QWbKXovz)YZ z0EBT^T3=t+LWPiT^}6maEiI|8=>yFD@FC^|>)>#mniL{|ljwRZ93CEi$>nl?5khhl zC)~n@dHay4*G`?dsf1X*yTbPb34iiL+<*IAv2}`^PKASDX}8<|93LMSl*&XRQICP7 zQd(Tbs)=;~YD1!n&5`#&>sbe&*+AcH`Oy4A1z|GB#)(C6VTqcuwHB6Cc*nc$w zyx zhojLS7GC~L=@_(83nNTm0Cw~f?l6d+fp+s6v8dS@n?qC(1aU*KeI0Kntrp|{7m;!A8Aek)uK)l507*qo IM6N<$f&&0hK>z>% delta 1355 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 rkw7Yn-Y++brDFfW+hX4>ID$Z z8BjU6Dng)Eh^m+VDZNzX)&r{O0SOS55Cy3eP!z9LtPz`*Cg& znb9-`qEQ%@g_V^Y(&-H9^*XE;AUuFvL-PuFJsSK%;FFuz@%~#`ghL_B%+F%-*aX{Y z4a+pKURX!IxQgE&&hfk^Jp8?-++!pL<1nlymR1%pF+PbvFbIDj$m0u(kMQ#3OPIbt zje&t7RI4SNdVlp4uUjbo#qXpNW4!kB>EpKb8H8VWx$X703CT5`>k-2KAbkEHOvNVq z>bz&feF0#_X(giDy6*ah>U3YYuVXBn7_*%s$K61Vn}5b`XO}QHyO3eKGUm3)a&w;s zr%zi(W0*GJ_RQRa57YrVl5RLTapI|S{!OU<9mda-6DMZze}^U;UwwTm4IoDeD-aBs z6p~HLELfJMPn~}Am1q6Hm1|e+qxaGI^Z2hpJ9FVZ^W*G?A`lF@PS|eLIb((*{fLGF zwp|E{o_|hkH5#lCLql=Y^i90*T&82(awJt1GxM`80H-fsymSXg2<^@fcXzzP=Q`N5 zOswYfEEgn?BunvloX2*Wdt{_qr} zc#Qk2`TW$mv)S*_Lx^&@gjj69jQqKrW773qsTxkEU|LeYI-!#921#BLcAfyM+3K7x zd>BimzEks5FW}L2o#R|ZO|RkB-EZ*iy>>W;!hJ9dgZ~}%N1%V-2`3o>kyQz+Z6{<% zc7F@ae-fH(P$&@bXe5eXAN;wuqB7Rg5 zvT^QgR=e@pO|Q=%^_}tQ(a!(?002ovPDHLkV1mef8ovMl diff --git a/public/props/barrier.png b/public/props/barrier.png index 1d54a98eee459529a87c85dddbc6fbe2b2918b17..8f981618d42c5c27ef870ebe20a8146986f9c34c 100644 GIT binary patch delta 550 zcmV+>0@?la1iu83B!31;L_t(|oW)eZZsITy9Xkmj2}oPAm0Eg1;&-@l~sGpy63LRA$GyvvO3Hy-Et#cVtt%P5LL$`lZcamq0= z&OoN}%Qc$kjAEY4H4V}vA+7@Q)Ewp-=b)RW31Jw5VHhAp0)O>-4Rl@4ih>}Zf;f&K zj3W5yy0F`YkR$@I*7JPgxo)FShY&*0p2%IVH&ClNka7;3bE+jiDv&Sg_pfQ(>-8vh zIvx7Fe*gMB&--R%rGih(;(Ou)*Z(IjuPh)?m~*2^#*=FJ|5iob5nKi2OyuG{$zt% zy#Gp`2f{uG+gj~4=$Tccv&v@hx)&UQK8*#!(y?Zywz#}?xFJ8Y(}}N zQ7Wsw)f{r!{r!VPgP|eNG@j?d#lpF delta 603 zcmV-h0;K)F1oQ-uB!4?eL_t(|oW)eVZW=)l{%*+~zo&q4gkuRL6j~!WWn9G-Z{fT_ zT$u-O9ssvaV>%inlZqE`%DA9KLV^?q$qC`e0rwlt*mu5jf<(@Rzh-x5znR&c{dS~w zyX`I(OSrBBh9m*53rP~Zbm8)P-JS#qL3nY9LvxQC-1ltBWPbuL(&;pGU56~ouq+$f z+j%HT+;^DGW)Lv}(=edT=O`6RnE#&hntX@D5%Wr=V#tqR7%Ld2$=uu9AIRsoV45c9 zB46fH1%giJ=bw4qXq@qQQm^wB8;!G9L0+rX^8GF^JO7-Yo_->~zhZl!++2Yml(@p< z&Q1Xr%_gQlr+?m7sFulO%AZq()_@N0C#6aUk;`pCOs9SVhOshuytx_U!_m>Yz>vhl z+q=%g#U#?nJycb7kB>k4>ufF?iqY@)AyLVCy&kl=#>UE<3dZ9x%H=W!gMn{XGpau) zyxrf&x9e-R@9piui*fMo09RkHLWzh&D3*#C4M)r)TYt4$h1BVMaTg1nOKMprMx*bX zTvb(Qn#ML+xqB9ZBFj83mn$R^aTeL^*NheI361z9Jo;UkOon;Hr>Amk2b0MJsZ@${ z;G)?K31d^7)axX~yVFEOx7&3^_GS28HpTAiT`X6twd&gh^o50OTalbeP%$AQRnJ4E zQh|8<4OBM;iAf56g@_QfS}jtLLZJZ5w(k3PG#nnjf7Gb|1Jtl$;z<%`j$|{Ra630rC@q1W2{mbY9!CXxVy;48Cg~;>vI~@j3$#qQrY=&YU?j zmonxV7RT|QJ3BjXpX0;-*o}vWhq*E4voH)_9UL5R|54^WWqY(rm5Ryp+yp^jJkK+O!Jv{P$>M(n5XW(_zP`SgPNyaeLzCsX4UPd|KA#&u2#oJ} z76iZb`+YA-lIH>FbUI($-roMiJpl+hnM_QrR1VK(pC2i^V<5Dgms>0OJA#NSdZElO%cnK>%?aTQ3BXDRUVB zu#Jrk>(~a&GJ`Gz#9i;2z@MF+m2pFN0fD&&gFy*G*}wqSh$5R6&Y~!~2kHB^_5c6~ zB@iP5!}_hQtrGO30HP=|v)RnNc=5stOAHWjeSO^qDStPHp$#VWTL4f>@GLWCxh%_s z5u9fT`Oy-@aa?Ug(L_Sq-rlxgl%cY8LFk^$W!&omAhx!)WOwGVW8b^ zPgF;;mXmtDZZol)9|^8|7leSqk}X4?udJ`vYMGMvA0nSjrqjz6-$8RjJsz5|H0SANs&4&K_pFa_@PjTCLt^o@HfXis6=G1wiIJ zD}%~3lufI#YJHmV)v=Um0D=+rKg`@^reI+q|0RI_)sGl5rW7AB|`)j^i&IQS?SH7hHBhmf3qsLon6eRk+HePi0DAf&yMMgd`+f zy;soneyvt}L*~#5TGbuVX>Q|~XUf2BB`MqOdz=&S>gvieNg`>QT5$M5XGIBT{$w)w z1geL(w{|hX5Eu6QMD%sAPIPLbAPik5%B{H?RMMl2NJIOQ8)Ms1G1Bo6HgsMa1c{BTkkBhf$W=b@!}%U(Q0T$t)@Dr3x6{jkIN3>J&|dN>UDg(gQ*!su+V$b|APJf{hSPN z*zfntKpZ?eo>gbPnnO42!G=b%j`MD}>pl68$T0nrBU Ri^Ko`002ovPDHLkV1nV3l{)|c delta 1641 zcmV-v2A28Z3i%9>BYy@!Nklf*(6uo|a9*^h4(@dI-G%ZaiRl4986g6bu zEW(oQWX+N#JCy3u`Ujb}1n`XUUSN&d(EGtO}5D3R9q+m24 z+qP-{$-c4PXuKVOpSHKx+DAv<;2DXLwA<^ETP~+SkPrayo&KK&23Gd=_TFD_G=4u5 zfX&U#&m5=l`G06MOc#CL>2TsK7@Y`_Wg!~?2q1@thqd)aqy1U{8_gz*Nhdm;3;_lZ z7cX4oh2touD2mcC8c23dc5ZFHMysng(!4S|V76N29UZg|QV^P2Frdd^SKaOjoj-q` zA|obY3KBvvkkgR`vaql~(lnW{*Xyiu9kx9~z8_F7H>o>7 zOn|6Ry;PQ&YL!eOsNWyFx&#}|rafD&dRl0Ui;E0~*On$pQ<5PJG7N)+kxaugB93E< z;y8UiU6x`Iof7hVM8DS)Yin!q6a!b6mb|g=QxrzLYupj8>(Y2UPLrp|H3%VyqKF+$ zgFt|ZvVWVDQ7Ogq0Sx!D>tbrBb1sm1FufknG$Pm?@}S zD*dx2K zLy%irw-!?Xl}hCcs2t{^LEu6s=pBwckCB6^ylrP#3o~w*d}bhFI8`d0oEbI+IR$4o z1%D7t#E0I82cUh}SWp7~F7X6t0-v8fd&ZwZxs;M@JI7?)x-V1XeXJa|Bt-nm3lnoK)(4WHL~0ApIXU=R$W)Pe8Q%F4?0VYITc zVxT^SLV-H~17S*tPUkrb5z0sXG#Dg@f8Y#&(6DPHM>&uj2ib5iq^D1xvVT`VA44$J*;(#oyhtPi4NlB2D3(k;A3KCt;Q?R(kv;7&N55O1J9lm>`6~fv z5TFgJ4g$r;E9@7Z5Bj-ND5hSw$7%;)?Cz+2#7?S(i&n-73I;LngKO7}|MbgfI2itj z-66T-F2~maVjDylD&9w%-Uf+*fw8qNwnwk@^$0PKTNi_e~$gYPn|J&Vaclx8+hPC#u|bsR3>X!< z;C0CnQ?KQ(iXaH&l`B`&&d$!SwfWjt12x<}Y9H+pQK2?p>nau4Qd*OfXimA6q0$wR0`=Q$q# ze&p$NirvyfnWhcjtIxQ9`AZzfda+o9g?L7q7QjXW`~4nyo(qWp(qNB$7A&SeJetalW1Mn)_IC3ihKb87>!1}U$0jj4hM_R zW-}%dJ{%4$*>fjJ65Z?d(Cv2l{CGTgzu)h;TrNyB6;QR??UuQ=VFQFgq7;L{fZtv6 q_k2DQbFxZ7PcZLBnBi%c$J;lyd+q9^0S})`LmrEa7Bj0p~_@3VA(d= zf$ziVbb@-lZX{z3-58BV%Cf9$m|?JCfbaWItyU$^aI-RN* zfEy)qFjvzxpk|=+877kn1=>l9rYWQZ5dC;C12qCjf$?~(&_QUnEf1F#(7v$3*dPe# zemow*-0gO;%3ABpfk22s)B@kL*({hV&-=ZWq9^GL_+Y{B#iDEeESLAVIvG|HhWzn2 z^hN7_rI)8hLw~)r+esp+K@uBe003{j9()W21~vXztHFA`CRF`HBJ$M2Wu>-d!Pk5a z50y$dc+li?HiNrz8S?qO_;BI~y4`MJzu$}hrdUh^+?GnDG5EdT7e6vY`P*zLk(0ww zN8&h+!pgZ^j_kwXAVDk7izT77S}n?z&yF1|48&3>6ey%MJvQ}wqTp7Zo6Qu9Zl{xq Z{|5j>w$n9TVFv&J002ovPDHLkV1j+6&58g3 diff --git a/public/props/bistroTable.png b/public/props/bistroTable.png index 2ea852a05c24310060e70afb11b2a3f0b148d9f8..0bb2f55259c5e7371d6bf6773bd8f5620d523131 100644 GIT binary patch delta 377 zcmV-<0fzpe1C#@hB!62;L_t(|oMT`h12m)u{fDuc$T8r_g9{8P?n+=o7|Ag}K}z_) zi!MI{zo0Cp0UMS~{QvjQZ-#&W{xbak4{<3oGYgo{$jHcWeCJk%gJ*9roVopy5#$Oc zVr=~X{~uU04A>iMfN54X9{gbd(!|8X#K6diQ1(EOHF`ay$$cs{Dj}$iM=#;le%k{|pQl7z~uS!4j`O{$-F7VfK7zlu(NkK{&ab_Lj4MK{N|t=l=&A_V?c(21W)(hLdMb$gMnd?=eiC zsXoya98xeE1ejUbpngE|4wQqe85D?&$cf|Q``6$Qe*NVSSnS&m2>tB!JDkzY1R|tF zh5myQ2fv^wSbtEIhlRmdk%z%nQ-F{U8CYO8oVv~NpMl{FgPAH1SmMQpKMb;M1& diff --git a/public/props/brokenBasin.png b/public/props/brokenBasin.png index 7d283d5aa617f5b5eaaaf8f15f85737b76cb9d7b..e258fb0cd0c02caa90fa87fad85848ee246e5498 100644 GIT binary patch delta 966 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 P00000NkvXXu0mjf@@%t? diff --git a/public/props/djPlinth.png b/public/props/djPlinth.png index 565ad6cd17e96c94bcd24f52c178b1dd46d01f74..7388aaa6f0af19c97c2740149cebbb14299d64af 100644 GIT binary patch delta 1522 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 AJpcdz diff --git a/public/props/jukebox.png b/public/props/jukebox.png index 954ed811640cbe768158a2dcfd103d4304e31388..383c540275e039780851d0645acf083cc651c3eb 100644 GIT binary patch delta 1071 zcmV+~1kn562*e1GB!3G@L_t(|oLyB*OCwnnKB>HnQL8YfOz0%SfFcG4vuMHerk6qJ z1~=JeKm7;9#VlqauH5zfhjA;?5h2Vh?1dnTAQN>lNYcc_sbHMM%Bzy$JIT3|o&&dT z)jf}U&UYT=qW@7go2?qUZhpz)T^oi`c{(sf7^UV%V>s?{o=;XM+G3?Qov?C$RJ<#=@39rAj8Ed1PP@b35dXmN3o?(XjReI_`= zhIe*$hHPMOZx4(=W3d?dr~KscdXxu~w6e0o#=*y4sZ_iwguwK4zg#X8mfP*7P$iryzrMPbmXi7GkX?*v9pPzpE z#E8Rsuh*l&V89AfQ&Vgp7z{EF?RJ}$L6A!(lV{rc`hWV*pMU+#hm}f&YPA{-hn!+2 z+$1hzhw+z}7kX{I0uxKSy1M#BDot`O)M~XjBoKgQ6Qqy0MbG@OfHv; z&!CK$JsuCT#Mr>2*|}Mo4o=g@4% z=KTDezJHa=?7C^1?9u)Gy~3t$S)(lEa=A1r4KR!0vC!)3D!qxt==k`Ujh~*L z((>{$E5q2Ae7-FnoC%0GH#gL5HAm$g2yoiAx3^UthzBZ5gfh16zao(cTQ$a>2#B}0 zw;aOb<0EGUBp{<4G&~Ov4}Y+2n{$kU62a^1Ykvwagz2eP<7O%ri|p073PI)nx-k%- zd_K<|CzA(wn2RRqhN0@jFbq06I^v8F(X2`%hQzz{J5~@76>nyS_hd53X#^&nP6tQ- zXz_S_7>~!hXJ5})xn8gH&bc26F_0* zqS_si_Y?CQ&(GW!(P$K5lqV+=D=ZpSbIWipu`6$Ucvp(HU1U}z+% zLg0iR!FS!VEM>rPoZlVCc`vtv!lua~KnbbS4V^Y80bBK{1$S2BHl`gwdg7;XpPW z5CnB_?PAJwGo?ejERWe|RU5EiO1m36f*`aAE)*;_4!BCu#k^57`oN6QHcw4Vp3U$b zbMC}BaC2YYJ@>oc{m##;q5qj-7)QFU>+$Dtnw*+c?~jjGIC&^^&gZJpW~y>RliZ_yS)Au(Y&<=?DCroSaZYLjyb8w#~E0Ga>c5$hOV1%qw{kk98G$8o5? zzn=>E{PpP`53|7-7#JYGzn9s_0UwgdD+S>3cm@G*b#+C)_VycBxVX6B=bs)tpw`w_ za=YDBUtf<`Ul<^fNKht|Vdu-sOSKtv;oRBT$!q85=YLcz7I_VRkx1md>-&56p3cn7 z@EuLlr2YMUW>IamwY5BhI@V6IS<2;dba;4}b-jJ}?$>H(i8%|K%kc&PKuFQ1SSs=S zGV$_14UlO)Jw4Rh+pA8*-EoCVl$18em6nzkdi2X9N2^W}QCF@2Kmg$0`Fx&d0jz|x zPBDN6xPSlh@-j6yH*?64;@jKX3)T^F|;h}ItsB^>@MbTI7|~06STX#%SrR? z$Or|4L7IK`41!T&ex8PhhZW2C^LRlRycZ^GYio3Rdddu%yF{N#zs12CvI7k+Hp z-VFo-d`A=zn81WG?hjUz5D_J0?UndP zA`uQXfGa6&yTZ4_xrb2nr3557JDw zwzha(!i)@kF*kQmBLMMuyo@RX6U(xwyMMczPls4%mG%yO;Df_p>+9=(C+m@VfYHDIu zFqFJ}aDKdh|BebHx9`d(oQn1Z!K9ER3z2NAtE>FqvaGBEa7v|Br&Jn+lQ8M)>qAq` z1m8@wJ9HxC3L-T8+AAchYnW<&yCCNM)N)9ExQUCw| diff --git a/public/props/loungeChair.png b/public/props/loungeChair.png index 3ffa7134bdfdb7e6e41862342da3eee4668164aa..c354052e055b5fc15cbc23491464dff3e4c68de4 100644 GIT binary patch delta 564 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 delta 1127 zcmV-t1ep8x2m1(+BYy-!NklS*%U?=Oq_%IdoGuDkN_Cy#V}d-qd`qCj<)ZGX5@@;#ZQS+SoaGo1%P zNhag53 zOB3-+RS8NZiQ}43V$L?iy&~&Xf)LE%G!oR<%(3INXBtoIM})OKx(zRtT#6$juQp%3gFSV zAY9RG`T6;2#DGg2fm*uas&y@!lcQJq4F)is9lw_0XrTJ#a;+eO zAo%$hwSSc7cOXv<0_(6v>3sJ1iCkY@X&`_%AsYzwOt49k%n9)X*fvMFBM7B}twy7! zAPx==l$6fp8}-v{Hs$!uA4<-HM_)+4KP-YUVhDn)d54FGpch;yPs&)TPAC}*3ME)Z z3ASMF?Bq{rZsj#hmMAaw%jK%Bao#cuNd$oIKYv$OQmIxIyq19<=)Bu)Ynj0GZ!dmU z|8y)$m8>+IA1X>Wqk0DbZ6i*oH`0kRKh`KIK-1D-gEBDiu$coX72xgLz%#N(cH=l! zyR$UYpOsW~-bMjW`$VkW0)Cp@w01=C&D@K(tX5=|f{F zbOq1|X(n5+eS7Ee-umXQaIbdn?r8(ad;X%(q1fk+k+t>p4;IR@u*V&+`nGyq4yxU5 z7e*0+VGiro(_PlxvT^s^bv^5Odg)<$Jb#`@82I`M+xrtb528J^?w!)Ec7A$v+Pm)F zVbho}Lp<&DVOtA>#cv*#X_6bZHNMFlFSG`|v|ljntWPI{oRlP0pR;5t*Ykkz$DLXB zF|UGirKr_vWjN%pjsCnt+$K0E1&jYrT!Br3KnA_8g0pYH0K)WBF5=vmJHJhq&tRS% zzxI?)UG(P$<#zBW*jX3+ZB8qdaxteIT(Ru9_Duc{you?V1TF~1{r&xSTX~PtYPE_8 t_}`>OX^}I2^YvHn5#GB6jE0v^_Adn_xI%uUSj_+c002ovPDHLkV1j1DG!Os) diff --git a/public/props/oldCouch.png b/public/props/oldCouch.png index 2a91b8c90751ab902c130697fc0cb9edd82ebf2e..51891c9acf01a67b64c8a6465184e8d9c2b55d77 100644 GIT binary patch delta 1503 zcmV<51t9va4Dkz)B!9R`L_t(|oOPC4Ya3S($49%Xt8H1aE|FvBLQ+W5riEgfkkDd6 zAf+MSpkJUbfqsF0mA;fhA4;K5r4JF<-jp2_W7i~1iu1ngq5D2In# znV6WASFc~|+WiL)6Rcmqw(#lF^2+atukU>|oXAb+ruB_iddTeTDQPyF((ik^+4p@( zCX@P`&1NMC0)I8cwjG(AoRSwWp3CLS@5{@VYl@T47xZ^`x2{HjX)uuXK@^a3r7E81 zDi+fBJjqW-dkJ2(Iw!5xz6R#>nRBwS{z?N?D9or%t+uu1uo(yXzONsrM*tlBE@`*h zlF#S$L7qPSTeI=#k4JL#ldH${&YnFd=~P<(A08d5^M8%To}|)g3ByqK_ZzxaDwXBU zn|(Fj1QY3W4rF6z7J=~{fRJo96GzS%iG)EYwqwVjeDC#K)%U!< zR4ON>-EPUk#|y{w9mkPeE*F2}V4^xMXHK6}UDk^;B^e9{`j9Ek!C~;p-s2~$a^d_1 zWdz0#27dzygJ8=_rPAW{BQ6)F3zA4!vifXQHaFIFqd9UK&2^3J+hRJ>+Ze9v$>S$~9@BZ(nO8ozD9y&M7CkkBjYuYwz2wj#c6PR8c6Kh_ zXn!T5O>mB=rqdaX2;w+)6rm9aX}){swss^^Oy@wy1O|G7F>>n;!(yX-D*$$`_=y z-;k5l0T6?5%dU(oe;6Dl=gjUEIZaR>00QJXt0e?2guyqynZ*? zH-WQq6H~IYvn}6!|3iEjM!`P@84=WC8a>oUOf>*U|H&lLr(>9C8mEme`w0MYs()J5 zL5DM7a3*W269k$u)8Pz0Ll2fH3r2ynNFyEN=Hdh@HL`w-IYb|T(|f%4mQ7={xW zGX`K3hvPWe0H;!p>W8^u3K2Z0qk-ysIy9*@oY5;o;0v`(An5tb2W+8RYJW|Hq27&_ zmREETB+PB}i_dQj891hZ#|1!>=E#sejR;1oGrM)omKjhCCZ%H-=;Sor#T2$F#P(=- zMTSNA+R=hQ>@liBALa{nL*aAY((;Oe#SYxPb9-oRgRa~AmO8U-rxAt$_Y5zLPVmAY z$feS0PUZyG@?jWqWAnox$XNJ+-*sKD)9H4INNA}8qMBEp4< zeT29=(yP0!$5>w+>8^IV-FCTD)Y~G?luO0g`wt%0{sr56sYE3b4wL`@002ovPDHLk FV1nKd;{E^t delta 1565 zcmV+&2IBeg3$6^1B!BfuL_t(|oNbm%OjKtS$Im=2^MHZQ;BZw26hWi5Y8#R+v?@yz zW7EWRW$ePlm^4kgZ{nhhrkk#tv+I z`JKy$Kt0LLeVy-||M{QC_XXZPbwYN_XE#3GI?~f8n+;Fq=YM7;5{ZiAIQp--IWB|u zAISAjuIlsL{DQQnlKRiKZOP~Jl1imya%x(?7o6gb-R`bVX=zEw`g%!iB9l|odLRAe zk=(v@Q{T};%H@h=G8rir9bGpzKB4~x?>`9e|N19aKN=by`7Q9%;E!90M5`_ud-{(m z_x7ET#l;1wR)5M8i#O}Pa5yaWdR^kpEwWK_#jRHK`+>AAPyWox`3o22uP0gkmQ1E3 zY&A(Xo0W5C&qzxmA+B3f8;DbQ?FV(FM*}LYt%_w?QmIrV)qX(#y9pusPziKuf zKKxm(UHf>C-o;Cor8yqcch_B(w$@genRzbpcw9WsleyU$1)j-tNiH|9;FC!|qv3E! zicUe99~c;rYPG5v$>nkyKqwT3Y%gdW5=6S=pgzOC5zpJ$6F@3;KuV=GeTK24J;(I< z%9Sg7^nZgPOTk-KlfIM9iHR|()m$wLnD6a7uGtQTLehQYs0O&%Xy_XJ*!DpsrOC47 z@#DvuRZ11`8=eOV3qcqtSE}kHolZ+A7|_&Dj6ao{TUBF#0;~aNN{-S27(!572Jq5i zZYSuu*%y*brIa9Qo8IB_y!!tLLhy?}Ktg6V`+tXik47V!Ez1gP8P{rVIY=sF5#K4! zqtU2bxNu$@igc6a<>h5HMxYp8SzVP^uk!N#2mQ(;yAhka1iOC?Dp z5?ThQPn}eq$!Fs`rCTh%X?QZyX!ya^y$u-}9?>$2M&q)&=4U?^)6z_Z$p8yX`bnXg z41c@DOdB&<%sWkGzEdJFyI;&i+Ha#=uE^-<=pLQ7tsS^@UKVom+Vu2@!5E1|Pllth zxJ*w?YCXPTz|uwi{rx&Qm`pIz*xb@=5wI~rW=vlL_?58f#c<^b5;* zA6(kjQtR37qqhnA1WDubO!;6pw7G@PwtpZajC7MilTP};)ZEnMGX+oM0IXWu(Aou% zxs0%`R4VB+-wD!y$GPiPbbldON^i5_sc-)6x3yoGKG-+JfyuHgOG}8R1RRkWa0s)T zDdWG_eMV}o8X_Q!0Ag>-Q+r4-&U8)C?=>Bv^9#CPPyuFtK?i);-dVei1sr@g*?;Fd zc7kj&(^JpntGi$CI0GcLXC@3F=?|`^?Ojws?sCLvgncH4VH0L|>$0AC4r#~xdX-f+ zM6)>>A7qNPT!tX9kTt4A|JD3z37T5uc)+y50A*zw3gb*C`hxrJNuvfr{yQU*l7lH6 zz$Oz7#<)|vtY><_9LE#ewk4Trmw!rmU2X8+pM>%4j0My_WCEUEq?sXs(pLZ9eEVI1 zD9@Zdr(@2fm{G^(0$?t5SV)H0A$>q$b;5CjaffsEklC3j?G@&~0cA!snIHp9uUNcU zZ89hzjb;TP1dvVq(nACa_}9yMZDw?V`TY;~0-6DWK-oW1)Km%ZIAswm)_>~_Jwl+z zj>zO9W2R{loKqTP16HwNjuptu#RXYeDQf8;YpW}|!%{{B!>nhghAfC+<`*1Cck4uJ zn-a^#*=T5ZL>nq#PNTPP-P~d#n5MyqDGyVJ1mOe8X#*kz^J3} zKwXW?V?6oyxMf*vhfFa3wR)Zx@jTC~)!b;gT%n*#1*dqoyQ}kth+K?BqRY$&V%XI_ z>}qYa8SB_wMTEl`diip>0{Y9_x)TMbxYpg(`5`X^)7{m1Xz>1nr567H4kn^@khnWj P00000NkvXXu0mjf`#umy diff --git a/public/props/pallet.png b/public/props/pallet.png index 928955e2b327ce819d20bcb37d169a23b26cfae2..82fe35c56368a5e7faff35f7b1c8ecd6b0e69ddd 100644 GIT binary patch delta 748 zcmV+=B6(e0aV~=OXXUQP7-K+5IfK7)&Z2Wa zr-YpOQ3s55P({vZC)U-z-aV8*zklH5^tqh>z55BvOU@05A%93<9@y%1yIJp?TMOq0 zSZiUOm*Cu^PT?ID`e4HHTN2N0J)S>n$&DvdSUQ2V@WapotBfZ{qQ~vJAQNMGeoaVi z=`Lx&`YAFsqlS$B=E{e7Zff>DHrxzH^VlY8530RTOH%^1xoYl2JT^wwfP6 zNqE=yD-5HtB!AbO=LBP{tOe$Xn2Jl*v;}yA2P&)85|UmDq13E$;O^J=hKREUDQp-8 zn)hLF7$wS4)W$*FHS*t18o?;-Lh*g)Mz2u#)ehy_i zopmMa%9r96VRJ8xC)rpx?!~Z?JqGLBN_4iMajM5!ACI)P9)mt%RA^~#|(3;GR#*B2XCiAR6h^ITOpb69dd(lc z2gK~;tdP!B<_kYkBWD>()NSR5-PvhkT}$eqI-1Q3n$`+0ymMY!g+yaUglTp>FM~tt z#DGe^>VGtZ&|b8@U+&fW`sNmw7w3CArQcK3&DYPLGLz_~?_Etqh-37Xr432cz9i*g zJNS9G*PGwkZ9EqQo(fEf>;O4q29@o`A*HSQ5?L-5IGWCCGIc!n!8OBrA#67oh7ku* zAze-Z#(1O@v05%Loy`kjq(yhFRwi6{&{7OeLuKAKOq4!JUw7800009y;{iu?2tGd!m#FZC{TV36C&%Nh9 zT0MRI&;dZ2ccGNx7S38gDX+n;g0(eVSV||*NebsIl+y8D_5Kno@Y8SFj)?5G9)GwaGvQT@t|6ZCMb>9kII&6K^WJsKnvppu8 zJ#{|TgV7<{_J8H(xiLydC`m9lDgs327yuawPSIhlJwtn0Xz(rYAB3$-$-S=;?^q*rbT}NyKFu=Ff{*jx@^f=tzC~4*F;`sQKEDq@7I~hdF1_); zflE;;$ah@AlG37e&|GCv2w1b{q8MIIQdYF5kf77Y=6@pnjU%JrJd*-#X<}y?-Cs80*2-m3LrrYFhHq>EzPq6b^_(N9R0Xpp78STnR<*2NUbp)t+}&c5Jyo zf0!#iCkj)CXFQ8aOA#7lQkXPHRSr-U1EG`PLU+ijPG~sJ8Ck#k+cBcuU)%Wd=>uku zpAb!H_U*G#IXiz5>dB)AjswBj3Y?1KeXDrlIDa0Q0d&UJjD($|qNcMUaJk!lPQr}v zlhN0cA@v@>>;tA#Hc+bV{vpJ7tPN_?$#g26$GOu6XN~wa_x8v*3s$}$P+b?2OTKvf z>bYk`0ZdVQ0uqd?89a@H1aA!2#Q?4@zz!?Jo`Z}jCTpx6)*auQ)i*EY;{2tn^77rv zGFwiaIj7hiO%B;1%=4|=clNQcw73wn5*8_)1i-)19Dvi^-o#9rWjD&AxJkxYTTHuL sT3TEf`DcPat^e!)ll%AXItJ91KXbeBtBx*GHvj+t07*qoM6N<$f=)%Hp8x;= diff --git a/public/props/picnicTable.png b/public/props/picnicTable.png index 92e1e0a37fa5aca2dbe20e49d4b2983f54118a2d..f42fb9fd1f1d0ea3ba3f90e7c55b42cf4f434dcb 100644 GIT binary patch delta 889 zcmV-<1BU#x2apGlB!5>)L_t(|oUK*MY7{{fJzZ7Z(=$$ti3)B)ve1PfzCg(`S@;hD zA;FD^5D^Laj9^sUC%DK*2)YtM|G-UD5TA*fFw@hol5@LnrvuptxlN|4tE=xh_uNyJ z;K9TDK1qhq=!9Ja7Wlopv$MIebsEPIckkWtaok0o=klEAS$~7&e(&yJ{NyA?*#QY( z$Zd>2B*=RZ1PB6)!C())-WWpb@a_8-#N95K+?hx|DtVQ;tk)P02a>ZF_c0nJfCJ*F zCu_~AiAfYbhjXDUX7zQ1i%SchiHvcuHiR=yz>G1-imDnV2Llv76L7BAutA7qIFxV7 zvaIJEvMhy>tA8blB=ZK=RxCb$+=lmFlID4eyvz}~SQ2?(pg(p}l4n_l{rx|(R@+In z7)d&iJXw(nD2vr7%L0b%wR$GwGZWR(buN-QR#iz`y@*^#h?4|^@^->la-j5wNNCkm zf!`>Jq9|Y}kp{icNDAQ9>$iz`qER6Sxv~Fj0f{^35PwB+mC%&|$*_C(~EpPRjX z?fUGCG#yFr)}B5;)X>GHg%6VxXU|`}bQwQ?eSgK~##ZxwacSX`N-ulAJ`*T(LqOZk z7xnSb#LCJe&-tRrvA+K7u#@W8+}OHMgZVS3&&lyiKafb=?e?l&QF(%QB@nExu1InX zWy(eG-@R#LyaRBv^&A{AR_1iHIG=Il>J3p;a}!SrH3m-D@XCwErAml$av$?_O!Lu= z$Z~Z=C$8fu#_dRRvCkZHD|b4voOqmLtLXln-5;PT%*__IaU6}1B?-b#)JU%c_V@n2 z+}zl@b(G})6U)ohKQw8939vu-BZ`o4Bjfzste={mX+CP3=(wVdq51y-dOxj}UV!fa P00000NkvXXu0mjfOFOmU delta 926 zcmV;P17ZA-2eb!}B!7EJL_t(|oUK$bYZO5g{$^)y_V#kgnW(5J*k~!lLO~D|A)tjI zSc#IP&_57Trc4=9SczJgAcA5lv9l2b3kwBHu~ET5f-%Y6?cLtat$c5G){WQ*ez3QD z^Jc#H-uK=cwX*s!PkLQ=)J+T(C~R!5|Cpa!*pL5!d-w0=aeuvmH0#4=c8{-cV{;t` zCJv#OCTO>JP@jmA4|Cc_`Lpu)q5L7V4$t{5ZV~86K7#+zTn_Jjn z1|5Xuo4n*~HOJBIb}$&GXvSl*H#m6UusA13#_S8!mX;TD67Vs#2u2%mrUNb6>_Gse zmKpwbEM`}~VrU5&2M6G?} zLY{QH*xuffH7TcZY7y;ZM|hG!N1QTy50)dSIwzS{?qGqKnS1%I%>bo<98v-juzWl( zrHDp^gLZ$0*?Lf2o?#GtGCM%vYe$f*ij~#1UKy>;kbkCqAkPs;v6O(0Rj3fxN8Fxa zCaQ=6ftEA0pPD?q=>uWo@tY5oE(+l4QUx;-RXRK3SQN;tG)_C&6$i#dVxvl0)1k%o z&n?#@1Giq3QWE(?U8exxSv-{bA7_u%6vE^AV*^3%VmyOp?dQuMd z3inVPN`Eej6-`cmQB+4@i~(nqj%g%OHBu5$jaF;iO@lF#Ex$uklX4_U2T9tMH8vb& zm!JZTD6W%cz$Cp2lB{NrXq28PmsOP2AcdP#!jButnY~*}-G8b35UtUPa#DQr#U?IF z6|x7kFNZj0k|D=C_#HqMth0$+Pu#jOE1JzrUw^-O`O3A&NjH(&&CcE_FAQR7dGXWX zgU3#szjz7j-@jpgZlSa29EdeM6wYK(D$US_d-1PFr^Qw<`0M1tatG|5vsUk@^ z!hcg!S4Gj1+gg{X)(9mU-rq&$Re8>xzu>OkJmgJwCa#T$OzdV(25&bu7aNP;9OXu1 zL~cW_u~h8-^^I?!D&$W3$sRu;8=>3j`ED&EB;LMx{c2@(ZR&55{|g>Hdf;Y}B~ZZj z?v^CMfJ+%?rmyFxCQp}#s!jC2Kp%Y5j~D0v1>R}AD$v7SaR2}S07*qoM6N<$f&e7H AF8}}l diff --git a/public/props/pieWarmer.png b/public/props/pieWarmer.png index c6060ad41ccf53daff02ed302af3a4c0a3c8dd17..9ff6c734ff477dafe238ebe573cfd22e33843219 100644 GIT binary patch delta 670 zcmV;P0%84%2DSx|B!7KLL_t(|oOPAiiYhS>hSP1U$A*xd_fQquLMQh z*Y3kt&L3hkQxK9=Dz*Gol|^kH^E6%jGxzcDr@0R?E*2Hbn8)=a)O3PHsM*zZtq-uYV?p;y8}|8a{H8k%Jgd zlEmMG$BaX)8;ypS-|zQsGMSjIq}^_t00S8+kj~6yE^?9026yz* z+39pV(upqac7HoF=5v}p?XnyJsb;h3BasnP9LKh2J|2(8+iW(*lW~!PQ5s_z$Wv&1 zG#Z)5L>C&>&>pJQYBmOg!R!1dYV-j)PAQe7=FK_?q*-cFhMp6R41|&Ai8BqQ0)6T8 zrBi7U;ZQ7v^2(wq#6Ar;wO+5?Y&Lsy;Fg3dGbp%Byq9qkbtjl7`FzqO(*oWP~8gx)_xn4X1@PwL-=I4;modCsf zI5dXlzesruU%~KI%&$e^JCWCy+-^4?Z73X)WSH@q;sH6yvR6)#;X%`rjC^>{L;usd ziHxsSD}S3QAo`saVT4YoM#3|c>S0nL$~ex+K{>7d=Ox5;jA9OT03j%EHS1|*Na1fe z4c`VF(;uPW=r#hBGl`&(08qliAkVWtAi);qQGZ09gpfWT^oS_->2&JGIm_u<`81FT>dYxPI#uSTCLii-!*Jc`0%urE*FCO4|I(@jcEvK4*&oF07*qoM6N<$ Ef}2Z8eEfsmrELt z$84xptMO(K1hiVMSg8nshvEA^8vu*cHxd^7|(;~Y+YY-^sudE6E!jc zCqxLwuRdRKEk!w^6KG5G8nd@d>-+laHP;ad1OY46LZ4W<-m+p_v%tf*2lm)h2xBs2 z4O~_)dE9-uV|g=^yD(%Oi^YQ1Xk;ZNkf<@DC^dA5(|;^Xr_(ITk058z3os`7M5hTf zcvb@Oilfo`*b8vr<%K4b3Eh9a|Ii6317r|Abcj9^Sq~_q1W1`gZDs|EO2r~QKmUAF zOEjc3pDCNy$bx#kezY0>zgl3Tam;Q9%np$~7|NRQosJhL&S5%*;0wdy@NoXBnJ?LS z%`D5x_w`FP}?$OD`ed6{7Yw`&anf=2fFewfd(=>*o813ySp>j!*O z%*>d7g~?C%HgERP?4!|$`u#qi(TEBJJi~QDhvUU6UzAU1K(3tp1wtbdJT%p6mHGHx kA+z12*##dwp-t!i0l8-qflKXEoB#j-07*qoM6N<$f_7AG5C8xG diff --git a/public/props/pillar.png b/public/props/pillar.png index c380f081667bce75eb21b028cd9e02a597496b88..836127b008d293d9f36b84af043a6fe4c519b4d9 100644 GIT binary patch delta 453 zcmV;$0XqKX1K$IXB!8w!L_t(|oNZHWPJ=)coL!(&FoDw8BeZAHE9m`tCjDz|Yz?I* zfK`Mw^MD1^mu%kdyqWj0EGkJ7JUrZ+x^6&oT?a*3A`AimN-$#@D5YSGfz}#L(}4W# zcB@8l@XLsDJAkX`0GwW09gPB#;*cs;WX&ePg$KMwVqb99{*>va@)(1Ap#IEBpN( zWlzRH``O3tS=MZ8!biX(~9JC2KD z^jbAZ9HTe3_I5ll@F+_`7&nfsWjbA5emrV0F#i7j&hbdnDV2&6NRjXRR-ht+dyMfs4}ZB_F5LrwVlfpH)9KU- z$?2!!KNUfU*pkeyBF(Cz?RIN@wQi$vk*K5C1?{rY=3LhvMB8q+leD>C;#~!fJ)EwEApQ~QXt-Ic)nv^IvQ>1uU1Vkm_xSio?p-F0|6!Ae zI=z)Big=|Ss(;n$Ua)4>dC+G2-n+)lW`ozaH{0uMHWO=%K^R7eq9umIM~uf~JiojM z7X*P=!ea&eMx!ST1`lX7E)WDCvTn6nSS&tet+;G9aabzBnDoIpH@7!QA)l8(&SSM+ zLw%xNuVHG8aM?ZIPuq5v(Q>bU`YI+kD02ONUwlo()`Z+Ay9< zHePNqPBguBVM)2EWs;1>k<>0OF}?5&e}ESz#tT1Yc420+c(Kf6S-KE~wn!M#j<3CZ z6uP3roI}8_CF->&f#-S8^StMG&hPxr3;YM05BQb%-`m`x&wn-_@HgAfQbanuys|td zMWo;N-~ITLr5;*C;h5@ABi^cbD>w5)~I#AZdTJba$7l< zXcN@{TmVu+uYX{?d}%5DuL*?0!IL&|@Mbi62gThIl;sABatR}&P9)Yh{$AZjAg3}Y zG^;Qxbm*~ak&AC)>ZKR4mR{pn8+T%G9-n}z&j4uqF!}6J_|E$d6s)Ab<&|ZoRIArV zw{mHIfvjgp3vqk^6=etl`5(G|(k*%#K7~CWnI)6b`Y89rYPjCTpK98cDYq#j$ z+@cQ`0zT~l2IdxhlniO$F$cc=3j~J+qD|!Ucr1?biE+qv8M%9#DC7$`^PU&Aav6oH z%oTq7^_Q4*yHT%ga}fkg3~01Zag3{1R=P7Vx9EE}9*gG*Jhzo&5CVT#dI);H_5Dw< zI;^}BIDb`372aQ8N3FUIvra(yQMnUz&@sZkHvKnm{K)=UzxS1{8VH4hs$?apYm^#A zl|h9@sR3HEsVrYAZe(%z)uX^8;LmK0eUJ4j2Kf2bZGNVNP}^ngkhw>nLw%>p>`*c` zaj>ff6f@^eYp#FsL!C2R@HPdF!1Ol_EDNTcDt{+4Tg*5$^9EPm>TQYHpp{xOHafz4 zYD08&wWS&N5on--#Xf-hnbh+`c8Bev|Kha+8kk-1dH{F?jqoYaPAYDj=gkwmQfpjK zyLr#O&t{o{DbEX?gb1**Bg3i|QAeZoUMhoQ9uG3b)E~L6oN8=vj9PE1RkxJ~D4F$p zn}68{Sr`pQRxzoZD%)#2h&}^do^4@(=jDJ@W)k-wN`R`b~le!D2z; zw-}AzwY}hE2N;kdQj9vD1K@%CknC;xNosYv&Ayfd0Cc zeQohko5&_7k23>OL^Ao#`-*M6-u(%bDl%WDv1;z}CjpAS7Evy}8~My8E1Z0Ep3bKk z$Ti}I{*a#U(Ypj(!#2kv;}0A_Np!%wCP0DPGu;N>YozAAcZckbCz2;UkP!M~? delta 1097 zcmV-P1h)IS2;K;gB!4AIL_t(|oZVDwNSkLAeqxN8i<;!K_Dfc6XJ*Z!m6;YR8=b4| z`lH}bR_b8;VHtu8g2MV^`=Oxz5mc5zD1)q2sO-`)mJ!Neu(A$X*akYh)eEsMw&sg9 zG09@ArY_^0G@)vC`Mm?l`@QGAoO7P%IWO=ZY+$%A3;%oTy?@dz4h;7tQgfHvWgfXP zQtooQ9`4Q!)YI)@AePdPPyE!GY+Ty<9~`P%j9%8?O%7ab-mfr z-h5c6D_Y79ZOhHp8lzg7zj*1LcXI}Y`{n>tj4zD;rqdPm8cM`bK_N7#mHD&Y$kHv} zvScxohvBVrp@kefRE6;Kf&}QJkj()VZ)$97j`Q)4qbU z>2Ku5h`jY;>yD;SJN-af;sbaL$jj6)7}W?P3ejW$Vt?RdC^#i1(<>m&tRNALqgW8q zm*%PzsDI-e?+e0@C)%78MUw!I?Zlw!yWAh!g+T9>Zc;jF;7^)Q|2Pi4$pAx%$m=r` zQ?OK5A-EBM?^iGU(j#2zcn{HV2&>@$SNPfWPhmY-i&!+uMXUxSMnI*}@Esq#-?I;a ztf#@>o`0E`TBG2;Wr>4O@b&dI(EQdH-!lRjz;z9wT%@AK0OT_WK zse*ke_`m!1Ca-n&+g{740f*DBSP0E)wu13su3mwyU>r0`9v^Qam|to<&a~{TY_N}D zr2w~oxXp7)2pe0h9kP>^b=cVagA>#g6yT6}B!8m@WG(H@$}d0pW|K1eYm z67&#-RZ$em1m=%KM7AK!V=ESCo|#`mIf{+O^cwPj!kC7A)SA=@L=&0S`Z6Qna=Y|R zjZMM7P2k$-)r9V8TP3!4Aj{!rKW);omjy*e>-VK44x}m6LaWrWpU#p{2?6ubYC`tW z1J}{kmH8#y1xb!P-P3!6lcj>E*2_vw>G^s%z2-)}j5V8=EBYy|^Nkl%}ZQY6hH6YH(E2%BqG{@3HfTFT@<8fDRfb? zD6WLK%rb?NRoC6N|3SB*lq|E9AYHg=*F_6%3o%(#5JQ@#QDfA3_m2!&OASk$<-1eIm{-lmwWiC(-TN9qyv6}E zT@UbL4R$Z!y`;)XX>*NOAjJ6C=t#M}v+Id=Y2?hg#6tEiGqw>S0}Pg7kn=9}HuQtB zdaA7VC4Yl2OF<|#pk7!AV*tXVaNAIW2j=Vka*K*03=gl)xMWcQBq%^+)wA|;k0Cu8 z9xq%>UfBb#oX@Lu579X=c@!Y?0qvLj5LH2lYUBC*oCJu7h)i${M4&`;=c$Mt3UCCC zbfFy7$R#8*N2qbDb?+Bx@_tU6XM{)sU{Z*OFS4P9 zNc>&B(e@NPJM5KPPoL1kM~~^sZ6{%Sn*;8^`lGIT_5p-9R}6(|)k^@%BDx>J#~u+PKLNDWBj~H85`uJg^&5_@4Vu%&2wNp@4iq!5$>*jV-4&d= z>m&m>g>}v6X}(;jE5#h-y>W9&dSM%RtRxB57qd-zoS|YAOef$dQZb=Mk#dmiNX#MLYwnSFg%4=n9n5XQanm6 zqN$={J*1#RP7m5=;31USI^;w%l7(JEsO89n{3;QHNsp+-hJz7d)EZ#)qt9&97k@0B z$LC}=1v&bHXA@YD8t9xPJkLo1$hC*oDr_rVo1)7B1WYMFp3Xgd^mtdiOA8+;$Cc;4 z1no*ZSQM6=F8(d#u#3p|Durfc4Hb%&=TP4e@RXds zEZM`M3yg`1U1|Z(8O{3C+VvZa_kRqUfg`%O1ipYEam&W!SuprEhu3iE)&fvJ<^U4S z)EUevvNwj>ma-p%hZL$dkvc#=1{xQbR#$03mw<)M*fHzWo!0dbA&&&8DX^8hbiTF9 zp_MO(LP?4^7!D5M$_4|{#bO2k8+!h%uHNf$dA@N$g`Vmm47Qu<8(;3P5__zD{CY4*)Y)#bU^Pirzn0DQ0x>BI<;1C0Ig z8pyAUeF&jl{<^X+IOki1Emy_ci-N3m40}JkH3ZsJeIO`YO)i~pajMBh-hX0*B)t&={g|J; zIEzrJmH=`1oxdhW{yxuZ^!EZgo9AgHlsnY5fo#cRyT#n>%=<+2H4&X19~=FGh~DL* z>lj3g)j8JrHirq*Y`!r5D(Cf++S@yQ^~sCJH$Cg9g1a6UCO!LJ>nRz!Wo~wc-E@3x zlv%#EzCrEQ#OVCO;(uSqu1){*ai)cea%p*`{#EJ?WqN9obiWk3rl%(19{4ntmRF9n z&&?axSwFQ8+z(ajGkw|ML`y_NM0AyiezNaN%PY_6gk*YZGPYY2z1`2|7Z#fb|CB_8 z3$@#=iM1@mHRcxK4>^JTvt+_eT4a)LcUnVy==lj*U64_RB^ z_^gjtyq3U05GChkXTCXT&h*q|9yJe*y#I!*t#5pf=f@v?X!`K;&-L?af{6%b@;MRxOeZMq*2FbDEtyL^nNp!d Qi~s-t07*qoM6N<$g1Jr!rT_o{ delta 2161 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 s5^@{-MXRqn_#l0C;$Ke delta 1199 zcmV;g1W^0p3Bw7HB!7xYL_t(|oL!ZBOx0x=$DiLpj7!`hIoyIwPB;;8ad6l|KwXO> zC>DPx;H|Odrkk51V`bN6wbG)cf2fJbR^c+MW7w8JrIXme<(4Bd85exxg|a^UiMa$ z*#$Z4WpZLtzCU|hdIkri^#_m4&dkcGIwOyvqRXQ zJ$Xpi-oat(0e@G9v|eeFon@7>A}LznwOu?Tr#^U7*5{RT5%iYjAQhDS*M=xzDu&K(I34bwYPNHCG1VKOp4CZxHn;z_Z9thwc?^mg|y7|P4dlt&(W zT=%#8Z+{3VeRAZ49IdUB)D_8cy|-7L!NGcuN99od*WJ5n)Mx2ZxyRvN}JhxkZ?C6jO5E6;}@E~su$i-odi}`n4`SOi3#cN z8Gn>D*=t4H#tb1^ggxyJ|6aEA=?$T3LF;DL|48DOktfT52dDRv{v86NF! z@k5clR`sfQTAH=Upn>6Gje-HSbcv5bZitHJF2K)EI=g$Vb?K{Zs-D6#g?QxPOHy_4 zBiUJ6BCj8=k*KgxMUgt$wR?*eHV8R@gMUc{eR|@(1>+FKw7H-_`<+?AbVNBsdtnTs zt@doI(5ep%2-I}Eb@-T!jErdKU>qKD1j(FXM)(JX&DTKro@yPR%Ob<=#nC>Un#UNE`8IXJEP!xuU|>L;PN#fTUn7D8Nkl)t2dG#^dok z+vr@!qY+db$@262+|Rk^J{!aOsW?D@@!}Z}DzLFsJBIQ8d4H_c=D{_q?&AI3$MJ7` zaraY<7Apu;3s<(zK<7OeMiFC$qn-6q|FQp^v%SZ#8hwm*Z5vkGaA3fJ={e{@1}(RN zvU>p!tUBH+R_r<#ycW zaLJoa=G8VFzkdKTuVFey7JM3rWRZc;xuXpE&flkj94sq_6)0rQ0aVe3XEiZtEn>x= z1<*jty@OXuuXUU+>JOomDG4Rd9kgsC2|BP4sTQKT1*;kTg~5@xu;I;gDB{74`3Uw6 z52EozEORUivkzknUwaE;h;+xT2utA{rZWrJdu@NRH-DUifg;+>Hb~C@KJ**nmWQk} zfF|yVb4i#Py>R_SWSvJPThh<6H2r(ny!5?LN^qTlk}VyCJI*~g$Rdtw;*=%go8MgH zK8~U(}DM}hB zyO*(Coqs}4v48_=Le`3KVCY^f>JgNj)A-6?kogJgoRl)v39;s#guyNlDgqm0?vl7- z7R+=wKPl>_gAwxxR;wrQ(xKOJ^VE;1KmI^ipfP67BqTVMXu!H}qQ0wvQt_m)Ky6&T zUBSUU^P;hDZk?BPlWoR&8;&c{agmv`1ndAhr+-ea=ow7*C)xPB~Ixp0*=7#M`AXF{!%g|5QckN{v zGw{vz@5Bgg1VJQoDcIu-o~%(3|e0CBJzoG5B}-XC><%B#G)>5f1LTfR)N(Y={iG$B4WF7%(>hjhB&7- z2%ce^5k4eN_J9nmUcZl2OW9%_1zoNWmj*1BrSMj{Ria!%qAt^)yUs)>QIa+ zL+1Fa<(uG`KPI407yZlr5Ox}Uabliv(H);7MZR`3t+q$c&Csw$8G0000-cHC_$DkOj~E2MeDx;?RdDP{PIO#VfGQ47zHMi&D6`9cCtm&?`xq`=xpa zp5fShX|EVo%ot!NJmURq@jS{{LQ-sEH&_LkL2JO`CJtH#refI-1 zyZ6zvB3;ME(tm6a!KHFkpZQtr}y4P z3S3hOthTRo)IKx!Q}p(h>xBx$+d3qJl?Eb*hj4oPf_B96`5pVKN6D=3G#4tjQqN1T z7a9l#!ADa-Z29g<#99yHx28=x7(UNkyp4;A$0Ta<>VFU7-0o`agpS!0kMvzaZ)1(D zrCOWBF?GtKj;7Ump-qx53Sin!i#$-VOC$qfKq{jPFV=}+6*&#>`5}eA9WikbJ2fVh zu?lX`6)6sC?urikVuMvBjxQ{a7Wcr>^{-=N_+gALOyJ8fl#%beGa)R;O9Vx{!&olJjQ zpnstCq3tMjyrKY-Qy<_B-`uJ>CTo81>dx#>qyC#1o;SB5F?s|E9Km4y35>Mekh@-? zyXKg_W&JQ%0UBBvfDH#0g808dyJpam@qzKyicCnUtucp8ajSztj2M-PSs# zDU2_E&$st$&>ncd=l%1%&-1*`^Lw7pc5djTF*EZE6gBQ>LVtYLTzktm30Lcf5${%1 zY!a?$VL|_&+|4Be_tJClJm#_X+-?n+y)j{|c_i2Hlx{TI-+aTkvzRu#zJS4fa*pH2 z4jcZOuneB_tS;JQ$vxNFBKzuGaixp8IcSID$@(p_=3N_wHfW_N^#`!Lvys!B1cj4U?k)?rD<$uK{DtuK4&c^`$$zugIiY2lg6|)E3B$v~7`ZZq zAAcA_B-)7akx|PDzP7}f2QAB7uiX6y)xj$Kk;;fZ8aMvZ;aI)KiUP5iCL=<>yj;weMP@G{gKJ>8!Ra*rPCLE`rWhRzL&0j7+oCLQW{RU&Y8 za#lt>o{&LY4fG9IX(MN3NsPkYmNu+P=?OSiXIlWG$04uj@#ZqOloSmsnYxB3YPW5} zJBL0*O*kaZbsj!0SfSAZO|xYAN=CQu+fxz+K7WjlRKyh6`Pub!oha%bh~d}iX~5?b zf$dX~Km=C(HW0KqHgST^v6gwCxn>HdrsI~ruX@f(bS<#nk18FRzu#wUEW_&B ztrn129^vf`BFMCS(D}ABnJc4XVuS|xDq>+*v_TpSo#sBns!ENKm>4$^Pdp^%Q=*rZ z#eYh;l}zEL{+sDQMfnrR&CeGH{FMPo0i!{ra;-{?#C^@7xp{dq=YL+2FN}SydnCOiD*|Pq5GGHSJC=loZw|A?JcP+8?SOUP3UM>+{cgnv0> zyCmnDY3lu^8^OnGG5Pal%*_5I5#iaMmKUX32r3eL2VcwkjD|`BWgm=)Q}e)1gfk~3 zmQ^GYk@8T#U{wM9O%pHtfspg^=%oud(B3R53qQ5p!Upj~CmWyHA&rZ2B&Ch($07*qoM6N<$f}CwbsQ>@~ delta 1096 zcmV-O1h@N}3Ec>gB!47HL_t(|oQ+j~Ow?r@e$Kls2^PyUxQ<_TTx*bcrxPm#x+5LY z8kt<9wJ2MywKeA-HCq4FbY(%&WJsH73uBoj5+#!nCdQC0a(R?pYa+_sdEwQ0=s2O( zdF}b!z2Cl<*?P9){qp&~@Avt9p3jfhFnc+cKnj;Hh4Ibl5P$M=3UEFgz)9aYiZV0M z-QSPh+gp)&V+Q=8C^|oWAA!KMI)+Fj3bXlURJ-p(cjr4ODs_mxprA@S?r*4f(*?$w{2^o zoygnzF0RIY1Iq8kVY?l}J^LkE^Obpco@o|h1*#IyT8w~B0Tr>=>lFt`&R|j?d4iG8 zUGR%a!?{*eS60HHPk~B9@RAXYkF3R)eS;!9RnWgDVt-fWHCyzLEL;yAds;9$_=PCb zySFRt9UU@^o$@D`3x2qB*G`O#j$+f3PoZn?2XK2HMe`HSUh`4z)jQ?$NAO>8SCxqT zDM-K@>ek6WCVEK8rp}xe@>!VhTI=glG%HKjTtmwBrM9=x^1_Q^r&>(iqRgeq6as0_ zI#Nl4GJo_997*oI8V*Xd=cXp5N~b2g@`8@&$@ME8u5Ef;6eHLbikLtB^Di+;l|e;K z+0}2AV>t{ZuCZ`cJUZ z3AVMnss!aVZoJvNO>7btba_i-I|#pl9Qay&^f2mDV5%Lf0gVZ8LOW2#Av<+54sw(^ZO2dstu*A+(MXC zG=BsoQJxXSDF;*}?El`0zvqEE`+X=`a5jfi`dp!H=K)zi-`}p0rmudOWU8em+p?LU zd{jwILKa?G`2(oSj!PFbHl)uB=Gl|VvqJx|gL0PdXlH>F6)RUIl?w;4%w`uZgFkRK zp&u%GbPo;69AKa4XU8?Wz8II6+;QDGpnqDCozSzVRi3F9RiZP5;U3pr2};h2=Pb}e zbq3`>Gj_VL>J1B`OiCH3_Z^^u^>8Sqd31UD;x%FxwfLlgn=&J!-PXM6nTb{3? z0X*Z=EJ4-Ovi=2#XZIfYb2IyKza7nTT9;YYY(pLB`c^cfDDyKtfFx8+?GLc9Fu9FS cMde#Q0Yl-_X4Zq^F8}}l07*qoM6N<$f>N?&%>V!Z delta 369 zcmV-%0gnFt0gD5WBYy!>NklAbX zVKF*|AgJslh(4A8ACI5@`u3iea>dxI0NMixiP@8wy~xLlSPz^F1CGMza71~q;S+Br z0jRC9z0yfCW@?w{mMR>5+W!F1CW#$rZ^={RkN|3oGc5o~1`xkomt=}yOXW|#1HT2( zwMM8#>#ubt`pUmS+0$wf3=S|VNr@fF=`%Y(oZfla#D&Ne{n5;ke=&k@^kcc`50giJ P00000NkvXXu0mjfrO2{I diff --git a/public/props/poster8.png b/public/props/poster8.png index 19f7db6012849616841750a32048177a1461657d..0fcb8c4399b5b0e63c8c8aa0ff218c3bd5c59be0 100644 GIT binary patch delta 1093 zcmV-L1iJg22iXXaBYy-SNklRB}3hFx*pfEtMd*5)T zqpnHfPC4IhFMk*SM(d%udE>en_V>)`GpFQ?lQPt!98sLTqbw)ysL$^(+BFQ8=ULh- z^($0nq<*!EVI0E?0_15b=}6-tRNzDT0d$sPTo{-Z> zFcfww^3Amt2bEHA9CsSoPe1b$=@O>BlX&UVzne?@2^_eEasc7-lh^ee_AWql~PVk6`Q8&lvO~+0&8M;v(wJ z7F?xDy|6k>$*(I<7)7)+I^|f~jL5)MXuUFaY}~ zZP`=}qNr?JM+&4GVt#%Bx+uiJT{cp8C3q9%pOPN3{uttQTJZ#jX{ zanFw7Bh0hyo&z?fT|sW4Bg*E(LM0Vi7@S}G@Id8X{A3-kzxftUpE*_TKmF{otT(TI ziGO!i&zG{-Hm>0I)-NJ|^Tu@?J9bnUkZH99#FU1OI$+5`kcc~mT|t7d#6u#n1Y>2n zCb^KHW(kOsHANYFM}1C9KqNep65rz5p(i@c#B+ARq=zRkef!NdWTO~K+!5k=|D$z* zRb*d%S-#(Y_XD&Z%H&vi{Aoe(`4>(IGJnHrXotCxU2#8^EgjSPuVUXU$}&;Uwtk` z#8zXGakQ5n5?NL{E5FfdK?Na3@j$vjr-^XF$rn!wcf9h(YZElYZX$Ic{{n$z%02@m zBtB$&UH)9t^blJ65Sh<%KD%eO(y2pv?t9&RkuST3>2{_2g?;}A4TCycT4mf+00000 LNkvXXu0mjf@_Hmj delta 902 zcmV;119|+}2%HCyBYy*9Nkl8Z`b0~3= zv}lxqs!HKta8k#-Y4Yl~LpPQGzev~3s}w**v*K|o)3l;su|&`(tMV`PM~x=xu)hPrRv@b=Z!YdIml30-HV`rr0( zprO%G-XCk&$!GDkO_Po`H}PI#0jMzLZ>fSI#0>DkMX9JN*_KtbPA0HHP%YRg6=6=# z<)~m;6xKA)hCBD~b~-bF0mLV?p;GJ-0LjbTylYUD6`ott*@@YqwsB|D={L4iZsc;%E48bZ+43&b?LJ8L`x|*C{BOhdJq?sc z|8?CfAb+H){HCZl1VTZkM*zfPu_C&Al25rvNlvE8l%`U>Hh}mg)tmH~j6|bO8<02{ zq>yb>K~bF5viLz$d05ElZ*-b-!8R@GdGVN8c>U_R7yNX42R-P%%~gUCS8bnbO|T8R z;$YwgKYeD0ISb}9V> z{(qwg6a_se>QB+;9rfH=rah=~i&~B}J2T)h*y6g0RcgBo}EyL0`VEtmwe_8 zao%m$?0DQ+x9(z_!~_t-bmAy;XI602FHfI@YkpKVy07*qoM6N<$f?!g$LI3~& diff --git a/public/props/poster9.png b/public/props/poster9.png index 139ed477fd1c720e16150770771993cf0b5ffb2c..883b08b50c848ea426e41ccd429ef8afed6215b5 100644 GIT binary patch delta 649 zcmV;40(Skq1)&9yB!6g0L_t(|oXu4`YZOrwKIe{8#GOX4P+Rd?SQs!`nD{G#oy@wG zVxbmxg5?ToA?ms-fuKc5o%AMx7$FwE*v$`63&CbrjGLJ&-@&Hr;0CbiwD$C^A zNwX8DC*<7Jlz%*5T9TDlE0$Y+v25@2^K;Vc_N38l4)mf9HIy%(KiM8wNUz&1c(`-- zURVZ20WB6|!SBF5dpc`=yVEg%7t_?@E0-_X^2LP(QwWcQot{2#{;u*sUbMRUW?&Hj zVtBoNJLItV-TMy)5X+7oJtB`DH)VYMr1jr_@X+#zaerx}*)m2@fBo9kf%!g;V^ilM zucBt5X|?9FJoD|&n#HI&c<8X%N|Kn5H|Cf}ZKK%=eN?Rl}92H^5Q= zhH^##Fn>%Rm%{RLGK3uI#{vu_t(d_&vWCUz0SoBa7C>69g$pqpIW%)%L8BF$j~csb zvxaQ&r(sN1;S)UU$WI_8B>*y0pdYQlATAiraRHZE@h_yfZn jq}^Ey{=dkMGw=%;BJbo6X}T`}0000XrDHYxJCMJ5FO=YRJv@pm(C_Muf9H2QLW zd+35d3~1F~`aok`#ndZ36?E$KNj6qh*O0ramInrh6RZzc)N0VMt6-`~LM@#gl$`%b zle07I4|`?J37#(n7!Zl6)YE z+dqB&%Khi#6Mr-{{Yv=#ermmZMS~6gXz-IH?nL|8Uy{M%HEhZK2M^hBsi}F3Wi{*d zwKWO`gC={o+eI52Me{$GTOps%;J&m&3WWkiqfyHKSkkbVo<{?e$z*6{b+wfHbc*%x z&|^B}a=GYSUA+n1P+v#MRGRzY@I?l}=zqDnFJgWnLmrREBnAR+-@K;D zscCVu>jq_)OEC`kGXb8^cC}qY zQ^Bua>)`(JV@KKN<-`jLg~Du0FDx-x#6XM1VkHt=WJsP?r>oN4-DUdByniPWV+n3J zNNDf@8Gq|s^~B3VrwU_RuZ5kI^8si%a5?T2pKH)gJFt`Bkl7V8>=0r*6*|V=F9D&4=B1#=Sl@IWJFvi{34^?|ac6do1PE+%6i^mF_VA5On%mIMGw00000 LNkvXXu0mjfS6E9c diff --git a/public/props/raffleDrum.png b/public/props/raffleDrum.png index 1cfdd1e90d977c99d9af73966a39661f6da7cb33..c65fbf9db7d1b17346eb192a146c8843e8a2bf47 100644 GIT binary patch delta 594 zcmV-Y0IS|^x8O(w zL4-~nivwqM16{$_9drR5NCgF(=!Y>R8pR~fq?`vywHKZ*-rRG}{fk8Z*Ki40H+%ynIHuU4yUjOaM* z?d^>`&lA&GE|;RTY!m5$1b}wCEtHSPqX(C&zt2Gs0JPn1sa~&(nvpV; z(tT(&8cW$Kg8(OepM6aIem}vuQo_fK(k%or{MZBZ?uj6^Ua$Avw(S=v0D!DOg8neZ gek>M?&yVqc0kvLR7NtLjVgLXD07*qoM6N<$g2(9+h5!Hn delta 680 zcmV;Z0$2U(1i%H5B!7oVL_t(|oLy7FYTG~%9ZPG;mR#G&Q4Xn#1C3HlAwAa6Q%{BT z+KWs42k9sDQ|e;_DdZ4nAo+nh7lRKaG*)N=jnm4ukc*^9E6FM|j!e=8TdUc5GjHBo z<>0@yzrXKknx>eh2~iw_VHhyB#-PTJ4JWZh>%P<;^mS9{64ugO& z#Ng}EQHlXYRjDfi5#YHl#7RO$JkO^QL{VH)|2vyOxl#d!LF`U+1c4|qQH0qY7|&Ey z0a=nLXFi`(6Mu|jL&3J~<&1cktyNtox|7KS%H{F`cn9WTNQ{4+pM!wihQr|uDLals zw6j7Ot5&PacXS0CDvAQW=Y3Zd1q7rLab5uc=Z|HzN7vU_Imwuy>Ol}->=+CFzPb72 z`+j0s*7H)S1Oi%jb#)cHu3L^cKhEbR#~cpBZ@nI|aerMG@J`ffwO3)td9_;oXqslK zX_`+u006A$`cKDkgnGSxBQjBZ*=i}7(u2VO@{$A>7Z;@{;^OsaG+bX_j~HX8=#KEd z-Oj0sVj#e_Z8?dPM|dA5<1yK^VHl*%i>)ox1ASD3Ff4kW|GLxJ$q@q-1=rcx89n>` zK0VRKh<|h1;~17@k*KG=9(bNhah8dNMOJhjqKLz@%}qdsFE1}qA3A^9YSBn}#-Q13 zF6|};Xb*OOytYO&qgA@TN(neZqtSpQUKk@u68$tyd-ySZ-rGxq+gsXm&Oud63-2Qi z`TXJ*j>n4;3dJIzb`J_!EVz)5Pdsd+i~K=C87cjJ#s>DqJPkDK+35V z$|05dK|MqjQV)^1_kw!nLT?~(Kp>=2mD11>lQgztd(n*Rv<4$}q+Rch=FPr0GgkPI zz1($1mD!wSXLb^z>JAWKiFoZjrt!v*xZGtq- zBBq@i1F|%Jj=y8_@dJ{tpIBOOCkD;OPhheL;jgjW&7-xr4x{V9S+-~Z9u}#&W|Tl{ z$K5+T`bUQ<4}*TsY5IY@a(;GxEz`PYJ&r$}jGq^HHw~hZs?gAIB)ITXkTJ4VxDzSe6$k4~4 UU9~#L01E&B07*qoM6N<$f-ZIfga7~l delta 552 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 delta 1066 zcmV+_1l9Yu2)+oABYy-1Nkl4ZYrigYV% zgI0t_<~k7V{ylVTdn!X(3R(uTv4=gCQs2rfeb_qMGSM;=>PB&$b0u9}rE85Qola8| zGxOiHj_<^KS3{by9Z2r)-upY>`OZ1t`CTB7eeu~R=skXHJ%8UGCEv^N%F24#)~$I# zlzaem4zH|mnf_k@Gu}Ti;qekE{GS1Ok01M%*IHL4S=d_+wr$C^uOJVAlf2E-fr9x=#1^CwXId(rMuQ1u0e}xG4AW*ea@>PAmr&09a*hE>$a4)tAtME1GlP zsUG<5P3vHEE`K(cAQp}249uk}63L{tzj_k`Rkf{~EkY4i)gb_y5on_uC^DG<)xo8o zER+qj6rC7>_9PR{mP1jLSk0(V%LGIVX5e47(^<$X=~dWmC^9u+Y~(xGZ5Gi2+sSo0 zl>(D5HX4A9U^e-&2 z*bPkKfJT$_XcIsEjLLF5w(qDB5EgL%zTNUJky=9}63x^Cm^QfT8ZuQ+rIE=BnDH%P zPdo`rY7LHU)v%XW!eBJw&v`$JjD>))5dNuO1zZU{xVNcT+)!e*LNQse8i`5X%MX|2 z-Sqtc0)N3UE`Ig3bZO@IJ5Zd@G~#hGirbUdg&H@kMj~KMSXBSqj4&XW&p#v2s;V5Q zsIEipvpblFZMfR0RsMn+tJ@c!EftwzDR)$eRV>!Cv#CDP_*y}Q`9hYLR4nT|9Khz{8*EzlNw zUu;%Rp6Gsb=Il8=D(#(jJ49GoD}VD$;JKzfh=u}qz2nF~3;>ApdtGh%1Bz$z#<&QJ z1%GBsS$(!T5>IZ)c_NuCWq7l_MQCdidAh$J<3C<6pdMI#%6R*Zn%8xB~f1U3%hjfpFGhmf}(T@J~2K9%@kxA z#llEDzBojI<&XfhdtZKyQa5A+9Dm^-bLTKwi)GrxhOT}ukz3tvISVMHuFj4} zn*fG}FAZd~q1JEwFox$FYjkOQZcfT9XlBTEqEQ2O$2MSbUheA~n`DTnhlcvP%)4AQ z7#hAL!eSbfH8=7o)6PMjw~=@f`(Jrg7huj0OUuDFH-IbMAAk6GZq~b7FLcuU k>PP6Qc5QTI?cetN4WMGvXc-L_X8-^I07*qoM6N<$f?z%V7XSbN diff --git a/public/props/wheelieBin.png b/public/props/wheelieBin.png index ea87b277a7528c54f2f0e563b08a12dd7ded8c97..bf9ade6765911d39afbafa4f1deb9a2fa527a6f5 100644 GIT binary patch delta 593 zcmV-X0L1yo$2&;^7v5k(QJ$+H4NNJt7KNeU@S1;$>H<~z@GCMA#pLY8Mp zl4PrZRYVa?!+%6WN>)S)=m;V9h^v`MDYgWrFnC}j^=A4Tt(L=ubcm3SloGD%qSEoE3B62@5fMM^d0h?)QHr4!m{15DKRAZ#Iy?hH zOg#&el~4`mD;02%3J9A`hO4We{F{mii^Zy3rPf@yUVm>@nS()TxX+iDb@1tv$9n@K z1F?cA;r_!g7caTD+goxectzyI>dx~F%jF8^=VNr*9nPgKNJ{o^e2hjT zG(`jb`+fd%yRLHoWFndmZE3zx>_S#>a8Sx~Y#U*?hU>O?4r!XQrCrx%>sD^GEsHlW z9P|+cb4nQWH9mYa)+Z;Y?6QiPY`P0-fnt<1o6SJOpZb%#odNjt@qsW6#b fYK zo|G?a$2sw&d;{PBw`~BRYdcQQlkzu!p98m_DsSJtPai!zz<*+~gy;LPEDK>6!t*4G zg(B+pI%h|5jN08QuCITg*=n+HG?LILaR2^27>3TyQmKeac@Omm`w&8~FOFkA=konkFz0L%xrq7`moI3xWX4){A&wKC2d$c7Ok)eg0G^cWB&uZV^#!_O zR*PS{-Osu6<>~1y36g-aRToSXlj)RCZaoMBrhj&J&VwA@4EcgqL`uxgO|-#yJVvL} zfnBR{EVm5+?xlC?v#3jJ8S3A;~b?nNKpzJAFi`4=wO3bZl%mEQmW002ovPDHLkV1hLeA6NhY diff --git a/tools/gen/assets.py b/tools/gen/assets.py index a16b746..0dce151 100644 --- a/tools/gen/assets.py +++ b/tools/gen/assets.py @@ -327,15 +327,21 @@ DOORSCENE = [ # Six more gig posters. Mangled text is CORRECT here and always has been — # docs/SPACES.md keeps "no text" out of the poster prompts on purpose, # because unreadable print is what a real pub poster wall looks like. + # keep_bg + "fills the frame": a poster IS a rectangular plate on a wall, and + # the importer's near-black-to-alpha pass was eating the dark half of the + # darker ones — poster7 shipped with 29% of its pixels and poster9 with 42%. *[ - Asset(f"poster{i}", "flat", (32, 16), p, 4530 + i, gen=(512, 768), quantise=True) + Asset(f"poster{i}", "flat", (32, 16), + f"{p}, fills the entire frame edge to edge, flat to camera, " + "no border, no background visible, video game texture art", + 4530 + i, gen=(512, 768), quantise=True, keep_bg=True) for i, p in enumerate([ - "a grimy 90s Australian pub rock gig poster, portrait, torn edges", - "a rave flyer poster, acid green and magenta, portrait, torn edges", - "a missing cat poster stapled to a pole, portrait, weathered", - "a techno club night poster, stark black and white, portrait", - "a meat raffle and poker night notice, portrait, photocopied", - "a covers band poster with a bad photo of the band, portrait", + "a grimy 90s Australian pub rock gig poster, torn and faded", + "a rave flyer poster, acid green and magenta", + "a missing cat poster, weathered and rain damaged", + "a techno club night poster, stark black and white", + "a meat raffle and poker night notice, photocopied", + "a covers band poster with a bad photo of the band", ], start=4) ], ] diff --git a/tools/gen/cf_flux.py b/tools/gen/cf_flux.py index ca61b63..c6bf22a 100644 --- a/tools/gen/cf_flux.py +++ b/tools/gen/cf_flux.py @@ -92,15 +92,28 @@ def generate(out: Path, prompt: str, steps: int = DEFAULT_STEPS, seed: int = 0, def probe() -> bool: - """Cheapest possible call — is there budget left right now?""" + """Cheapest possible call — is there budget left right now? + + The question is ONLY "has the daily allocation run out". Anything else the + API says means the account is alive and spending is possible, so it counts as + budget available — including a rejected prompt. That distinction is not + hypothetical: Cloudflare's safety filter rejected the literal prompt "a grey + square" as NSFW (HTTP 400, code 3030), and because the old probe let every + non-429 fall through to SystemExit, a perfectly healthy account with a full + 10,000 neurons reported as unusable. + """ try: - _post("a grey square", 1, 1) + _post("a plain wooden chair, product photo", 4, 1) return True except Exhausted: return False except RateLimited: # Burst-limited means the account is alive and has budget. return True + except SystemExit as exc: + # A 4xx that is not the daily cap: the account works, this prompt did not. + print(f"cloudflare reachable, prompt refused: {exc}", file=sys.stderr) + return True def main() -> None: diff --git a/tools/gen/contact_sheet.py b/tools/gen/contact_sheet.py new file mode 100644 index 0000000..2208a88 --- /dev/null +++ b/tools/gen/contact_sheet.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +"""contact_sheet.py — every shipped sprite on one page, for judging. + + python3 tools/gen/contact_sheet.py [out.png] [--filter substr] + +Built because 127 sprites had been generated and only a handful had ever been +LOOKED at. The pipeline is happy to produce a confident, well-lit render of the +wrong object, and no test can tell — `barrier` and `flightCase` are both "a grey +box with edges" as far as any assertion goes. + +Sprites are shown at an integer upscale on the game's own dark floor colour, +which is the honest way to see them: SPACES.md's rule is to judge at ship size +rather than at render size, so this deliberately does NOT show the 512px render. +The point is to catch sprites that are unrecognisable or wrongly cut out, not to +pixel-peep detail that never reaches the screen. +""" +from __future__ import annotations + +import sys +from pathlib import Path + +from PIL import Image, ImageDraw + +PROPS = Path(__file__).resolve().parent.parent.parent / "public" / "props" +CELL_W, CELL_H = 108, 124 +COLS = 12 +LABEL_H = 14 +# The venue floor colour from venueMap COLOURS.floor — sprites are judged against +# what they actually sit on, not against white. +BG = (34, 30, 43) +CELL_BG = (24, 21, 30) + + +def main() -> None: + out = Path(sys.argv[1]) if len(sys.argv) > 1 and not sys.argv[1].startswith("--") \ + else Path("art_incoming/contact_sheet.png") + needle = sys.argv[sys.argv.index("--filter") + 1] if "--filter" in sys.argv else "" + + names = sorted(p.stem for p in PROPS.glob("*.png") if needle in p.stem) + if not names: + sys.exit("no sprites matched") + rows = (len(names) + COLS - 1) // COLS + sheet = Image.new("RGB", (COLS * CELL_W, rows * CELL_H), BG) + draw = ImageDraw.Draw(sheet) + + for i, name in enumerate(names): + cx = (i % COLS) * CELL_W + cy = (i // COLS) * CELL_H + draw.rectangle([cx + 1, cy + 1, cx + CELL_W - 2, cy + CELL_H - LABEL_H - 2], fill=CELL_BG) + + img = Image.open(PROPS / f"{name}.png").convert("RGBA") + room_w, room_h = CELL_W - 8, CELL_H - LABEL_H - 8 + # Integer upscale only — a fractional resize would invent detail the game + # never shows and blur the pixel register these were quantised into. + scale = max(1, min(room_w // max(1, img.width), room_h // max(1, img.height))) + shown = img.resize((img.width * scale, img.height * scale), Image.NEAREST) + px = cx + (CELL_W - shown.width) // 2 + py = cy + (CELL_H - LABEL_H - shown.height) // 2 + sheet.paste(shown, (px, py), shown) + + draw.text((cx + 3, cy + CELL_H - LABEL_H), f"{name} {img.width}x{img.height}", + fill=(150, 150, 165)) + + out.parent.mkdir(parents=True, exist_ok=True) + sheet.save(out) + print(f"{len(names)} sprites -> {out} ({sheet.width}x{sheet.height})") + + +if __name__ == "__main__": + main() diff --git a/tools/gen/run_batch.py b/tools/gen/run_batch.py index 6daf234..a06661c 100644 --- a/tools/gen/run_batch.py +++ b/tools/gen/run_batch.py @@ -117,7 +117,7 @@ def do_mesh(a: manifest.Asset) -> None: # Blender ortho render at the house rake, then the normal sprite import. subprocess.run( [sys.executable, str(REPO / "tools" / "glb_to_sprite.py"), str(glb), a.kind, - "--rake", str(a.rake), "--px", "512"], + "--rake", str(a.rake), "--px", "512", "--dim"], check=True, ) diff --git a/tools/glb_to_sprite.py b/tools/glb_to_sprite.py index a5d864d..6792977 100644 --- a/tools/glb_to_sprite.py +++ b/tools/glb_to_sprite.py @@ -136,7 +136,14 @@ def main() -> None: print(f"rendered {raw}") # Straight into the existing sprite pipeline — same as any flux raw. - subprocess.run([sys.executable, str(REPO / "tools" / "props_import.py"), str(raw), kind], check=True) + # Forward the flags props_import owns. `--dim` matters for every mesh prop: + # a Blender render of a stainless bin is honestly pale, and honestly pale is + # wrong for a room painted at luminance 35 under a black sheet. + passthrough = [f for f in ("--dim", "--no-quantise", "--keep-bg") if f in sys.argv] + subprocess.run( + [sys.executable, str(REPO / "tools" / "props_import.py"), str(raw), kind, *passthrough], + check=True, + ) if __name__ == "__main__": diff --git a/tools/props_import.py b/tools/props_import.py index 107a07f..2beac2d 100644 --- a/tools/props_import.py +++ b/tools/props_import.py @@ -52,6 +52,36 @@ except Exception: # pragma: no cover - optional dependency by design pass +# The luminance band the props that READ sit in. Measured off the tileset that +# was already working: arcade 45, poolTable 53, speaker 59, mixer 61, cdj 68, +# discoball 70. The ones that failed were 150-190 — stainless bins, marble, a +# concrete pillar, a white plinth: all objects that really ARE pale, rendered +# honestly, and therefore wrong for this game. The venue is painted at luminance +# ~35 and buried under a 50% black sheet, so a prop at 180 does not read as a +# bright object, it reads as a self-illuminated blob. Props are lit by the room's +# own LIGHTS (docs/SPACES.md §1) — they have to arrive dark enough to be lit. +LUM_CEILING = 110 + + +def dim_to_room(img: Image.Image) -> Image.Image: + """Scale RGB down until the median opaque luminance sits under the ceiling. + + Only ever darkens, and only when needed, so a prop that already reads (the + dark cabinets, the pool table) passes through untouched. + """ + px = [p for p in img.getdata() if p[3] > 8] + if not px: + return img + lums = sorted((p[0] + p[1] + p[2]) // 3 for p in px) + median = lums[len(lums) // 2] + if median <= LUM_CEILING: + return img + factor = LUM_CEILING / median + r, g, b, a = img.split() + lut = [min(255, int(v * factor)) for v in range(256)] + return Image.merge("RGBA", (r.point(lut), g.point(lut), b.point(lut), a)) + + def main() -> None: if len(sys.argv) < 3: sys.exit(__doc__) @@ -74,6 +104,9 @@ def main() -> None: if bbox: img = img.crop(bbox) + if "--dim" in sys.argv: + img = dim_to_room(img) + w, h = TARGETS[kind] img = img.resize((w, h), Image.NEAREST) if quantise and not kind.startswith("street:"):