From 4e46fb586509da62bbad924686296dd3a2ab9031 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Tue, 7 Sep 2021 22:37:20 -0400 Subject: [PATCH 01/11] Prep for release --- content/news/025/index.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/content/news/025/index.md b/content/news/025/index.md index 1707fddb6..cc5cf361f 100644 --- a/content/news/025/index.md +++ b/content/news/025/index.md @@ -1,8 +1,7 @@ +++ title = "This Month in Rust GameDev #25 - August 2021" -date = 2021-09-01 +date = 2021-09-08 transparent = true -draft = true +++ @@ -29,9 +28,6 @@ Feel free to send PRs about your own projects! [pr]: https://github.com/rust-gamedev/rust-gamedev.github.io [coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination -[Rust]: https://rust-lang.org -[join]: https://github.com/rust-gamedev/wg#join-the-fun - - [Game Updates](#game-updates) - [Learning Material Updates](#learning-material-updates) - [Engine Updates](#engine-updates) From 4031e70ac466dd63374d0ebc502bf2babc2db314 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Tue, 7 Sep 2021 22:47:43 -0400 Subject: [PATCH 02/11] Rewrapping --- content/news/025/index.md | 220 +++++++++++++++++++------------------- 1 file changed, 111 insertions(+), 109 deletions(-) diff --git a/content/news/025/index.md b/content/news/025/index.md index cc5cf361f..173d75b36 100644 --- a/content/news/025/index.md +++ b/content/news/025/index.md @@ -89,8 +89,8 @@ Server][rusty-jam-server] for more updates! ![Gamedev meetup poster](gamedev-meetup.png) -The eighth Rust Gamedev Meetup happened in August. You can watch the recording of -the meetup [here on Youtube][gamedev-meetup-video]. The meetups take place on +The eighth Rust Gamedev Meetup happened in August. You can watch the recording +of the meetup [here on Youtube][gamedev-meetup-video]. The meetups take place on the second Saturday every month via the [Rust Gamedev Discord server][rust-gamedev-discord], and are also [streamed on Twitch][rust-gamedev-twitch]. If you would like to show off what you've been @@ -107,17 +107,16 @@ out [this form][gamedev-meetup-form]. ### [Pixie Wrangler] -[![Screenshot of Pixie Wrangler showing pixies traveling along paths drawn -by the player.](pixie_wrangler.png)][pw-itch] -_Click the image to play the game in your desktop browser!_ +[![Screenshot of Pixie Wrangler showing pixies traveling along paths drawn by +the player.](pixie_wrangler.png)][pw-itch] _Click the image to play the game in +your desktop browser!_ -Pixie Wrangler ([itch.io][pw-itch], [GitHub][pw-github]) by [@rparrett] -is a puzzle game reminiscent of old school printed circuit board design -software. +Pixie Wrangler ([itch.io][pw-itch], [GitHub][pw-github]) by [@rparrett] is a +puzzle game reminiscent of old school printed circuit board design software. -Help the Pixies get from their outputs to their inputs while doing battle -with the intentionally less-than-ergonomic circuit design software. Pixie -Wrangler is currently a prototype, but includes 9 complete levels. +Help the Pixies get from their outputs to their inputs while doing battle with +the intentionally less-than-ergonomic circuit design software. Pixie Wrangler is +currently a prototype, but includes 9 complete levels. Pixie Wrangler was built with [Bevy 0.5] with support from these other great projects: [bevy_webgl2], [bevy_prototype_lyon], [bevy_asset_ron], @@ -138,19 +137,18 @@ projects: [bevy_webgl2], [bevy_prototype_lyon], [bevy_asset_ron], ![Vange-rs on wgpu-0.10](vangers-wgpu0.10.png) _vange-rs on wgpu-0.10_ -Vange-rs is a rewrite of the iconic Vangers game from 1998 in Rust, -heavily utilizing GPU for rendering. +Vange-rs is a rewrite of the iconic Vangers game from 1998 in Rust, heavily +utilizing GPU for rendering. -The rendering engine has seen a major upgrade. Essential shaders were -rewritten into [WGSL], which streamlined the shader pipelines and culled out -the dependency tree. -Code was ported on the latest [wgpu]-0.10 release and helped identify a few issues. -Most importantly, this change made the game able to finally be distributed, -and maybe even compiled for the Web in the future. -Read more on the [WGSL-related blog post]. +The rendering engine has seen a major upgrade. Essential shaders were rewritten +into [WGSL], which streamlined the shader pipelines and culled out the +dependency tree. Code was ported on the latest [wgpu]-0.10 release and helped +identify a few issues. Most importantly, this change made the game able to +finally be distributed, and maybe even compiled for the Web in the future. Read +more on the [WGSL-related blog post]. -In order to make advantage of the new superpowers, -the [Rusty Vangers] game (the new working title) was published on Itch.io. +In order to make advantage of the new superpowers, the [Rusty Vangers] game (the +new working title) was published on Itch.io. [vange-rs]: https://github.com/kvark/vange-rs [WGSL-related blog post]: https://vange.rs/2021/08/25/pure-rust.html @@ -158,18 +156,18 @@ the [Rusty Vangers] game (the new working title) was published on Itch.io. ### [RecWars] -[![RecWars screenshot](rec-wars.png)][rec-wars-web] -_Click the image to play in your browser_ +[![RecWars screenshot](rec-wars.png)][rec-wars-web] _Click the image to play in +your browser_ -[RecWars] by @martin-t is a free and open source Rust clone of [RecWar], -a top down vehicle shooter. +[RecWars] by @martin-t is a free and open source Rust clone of [RecWar], a top +down vehicle shooter. The game is a work-in-progress, this month it gained splitscreen for 2 players -and an in-game console to change cvars - you can edit any -of the configuration variables that define its gameplay balance while playing. +and an in-game console to change cvars - you can edit any of the configuration +variables that define its gameplay balance while playing. -RecWars uses the [macroquad] engine so it can be played on the desktop -as well as [in the browser][rec-wars-web]. +RecWars uses the [macroquad] engine so it can be played on the desktop as well +as [in the browser][rec-wars-web]. [RecWars]: https://github.com/martin-t/rec-wars [RecWar]: https://github.com/martin-t/rec-wars#the-original-game @@ -214,19 +212,19 @@ https://twitter.com/bauxitedev [![Screenshot of Liminal Lab 000 showing a white-walled laboratory test chamber with buttons on the floor, lights on the wall, and a dark cube levitating -overhead.](liminal_lab_000.png)][ll000-live] -_Click the image to play the game in your desktop browser!_ +overhead.](liminal_lab_000.png)][ll000-live] _Click the image to play the game +in your desktop browser!_ -Liminal Lab 000 ([live version][ll000-live]) by [@pebaz] is a tiny, -minimalistic puzzle game with 1 puzzle designed around the concept of -[Liminal Spaces][liminality]. Liminal Spaces are usually abandoned, -transitional places where life once thrived. These spaces are somehow familiar -to the viewer but the viewer has never been there. The unsettling feeling of -being alone comes from the realization that the viewer does not belong in that -space but is merely passing through it. +Liminal Lab 000 ([live version][ll000-live]) by [@pebaz] is a tiny, minimalistic +puzzle game with 1 puzzle designed around the concept of [Liminal +Spaces][liminality]. Liminal Spaces are usually abandoned, transitional places +where life once thrived. These spaces are somehow familiar to the viewer but the +viewer has never been there. The unsettling feeling of being alone comes from +the realization that the viewer does not belong in that space but is merely +passing through it. -Liminal Lab 000 was built using [Macroquad][macroquad], utilizes voxel -rendering with 8x8x8 chunks, and is hosted on Google Firebase Hosting. +Liminal Lab 000 was built using [Macroquad][macroquad], utilizes voxel rendering +with 8x8x8 chunks, and is hosted on Google Firebase Hosting. _Discussions: [/r/rust_gamedev][liminal-reddit]_ @@ -240,8 +238,8 @@ _Discussions: [/r/rust_gamedev][liminal-reddit]_ ![Level example from Not Snake](notsnake.png) -Not Snake ([GitHub][notsnakegit], [Itch][not-snake]) by [Michael Ramirez] -is a 3D snake game where you don't play as the snake. +Not Snake ([GitHub][notsnakegit], [Itch][not-snake]) by [Michael Ramirez] is a +3D snake game where you don't play as the snake. Not Snake was developed using the [Bevy game engine][bevy-notsnake]. It was completed and [released for free][not-snake] in August and can be played on @@ -288,8 +286,8 @@ It's playable in browser on [itch][dayatmovies] and the code can be viewed on ![Screenshot of Sombervale depicting the starting location](./sombervale.png) Sombervale ([GitHub][sv-gh], [itch.io][sv-itch], [Twitch][sv-twitch]) by -[@blipjoy] is a game built in seven days for Rusty Jam. It is styled like an -old handheld game with a 160x128 screen resolution and 16-color palette. +[@blipjoy] is a game built in seven days for Rusty Jam. It is styled like an old +handheld game with a 160x128 screen resolution and 16-color palette. The top 3 things that went well for this project were the art, tilemap support, and ECS. On the art side, the silhouettes in the background turned out better @@ -302,8 +300,8 @@ simplified complex interactions between entities. Something that went poorly was choosing a scope that couldn't possibly be completed on time. As usual, everything turned into a stretch goal! Secondly, a -lot of time was allocated to features that didn't make the cut. Much of this -was a result of trying to be perfect instead of efficient. It's a good game jam +lot of time was allocated to features that didn't make the cut. Much of this was +a result of trying to be perfect instead of efficient. It's a good game jam lesson that often has to be relearned the hard way. [Sombervale]: https://blipjoy.itch.io/sombervale @@ -325,9 +323,8 @@ per shard. In game portals let players travel between shards hosted on separate physical servers. Since the initial announcement in July we have worked on restructuring large -parts of the codebase to make adding new content more ergonomic. We tested -out the new organization by adding a new monster type from scratch (pictured -above). +parts of the codebase to make adding new content more ergonomic. We tested out +the new organization by adding a new monster type from scratch (pictured above). Read the [dev blog][triplehex-blog] for more info, follow [@triplehex][triplehex-twitter] on twitter for updates, and join the @@ -387,38 +384,41 @@ _Discussions: ![Murder-User Dungeon gameplay screenshots](mud_screenshots.png) Murder-User Dungeon (MUD) ([GitHub](mud-github), [Itch](mud-itch)) by -[@Nightlyside](nightlyside), [@cdsupina](cdsupina), [@Shippyhead](sheepyhead) -is a 2D game made for the [Rusty Jam 21](rusty-jam-21) in just one week with the +[@Nightlyside](nightlyside), [@cdsupina](cdsupina), [@Shippyhead](sheepyhead) is +a 2D game made for the [Rusty Jam 21](rusty-jam-21) in just one week with the theme "*Illusion of Security*". > Tony is a young man. Finally having his own apartment is a good thing! He will > learn how to live by himself and how to enjoy the small things in life like > playing on his old retro computer: the Astaria 3600 running SafeOS 3.1. > -> However, you will quickly realize that the internet is not so friendly. You will -> meet new people in the Labyrinth(TM) game, and not being friendly to them can have -> a serious impact on your real life! +> However, you will quickly realize that the internet is not so friendly. You +> will meet new people in the Labyrinth(TM) game, and not being friendly to them +> can have a serious impact on your real life! > -> In Murder-User Dungeon you will juggle between exploring the Labyrinth(TM) game -> in your console, hiding from vengeful gamers, and making sure you fulfill your -> human needs. +> In Murder-User Dungeon you will juggle between exploring the Labyrinth(TM) +> game in your console, hiding from vengeful gamers, and making sure you fulfill +> your human needs. > > To win the game, you must reach the end of the Labyrinth(TM)! -The developers aimed to make the player feel that they were safe in their apartment -atfirst - however as the game goes on and the player makes enemies of other gamers -in the Labyrinth, they risk them coming to their apartment to get revenge. +The developers aimed to make the player feel that they were safe in their +apartment at first - however as the game goes on and the player makes enemies of +other gamers in the Labyrinth, they risk them coming to their apartment to get +revenge. The team split development of the game, so that each member could work independently on seperate features. While [@cdsupina](cdsupina) worked on the needs system and the graphics, [@Sheepyhead](sheepyhead) worked on the UI and -menus, and [@Nightlyside](nightlyside) worked on the console and Labyrinth gameplay. +menus, and [@Nightlyside](nightlyside) worked on the console and Labyrinth +gameplay. -MUD was developed using the [Bevy game engine](bevy-engine), Rapier2D for collisions, -Aseprite for the graphics, and a lot of free assets from the internet (which are -credited at the end of the game's description). +MUD was developed using the [Bevy game engine](bevy-engine), Rapier2D for +collisions, Aseprite for the graphics, and a lot of free assets from the +internet (which are credited at the end of the game's description). -Linux and Windows builds are available on the Itch page, and feedback is welcomed! +Linux and Windows builds are available on the Itch page, and feedback is +welcomed! _Discussions: [r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/pddreu/rusty_jam_submission_murderuser_dungeon/), @@ -439,13 +439,13 @@ _Discussions: [![Theta Wave Mobs](theta-wave.gif)][Theta Wave] _All mobs ported to Bevy Theta Wave_ -[Theta Wave] is an open-source space shooter game by developers [@micah_tigley] and -[@carlosupina]. In the past month, they have been working towards porting Theta -Wave to the Bevy Engine. Most of the work this month has been focused -on implementing all of the existing mobs in Bevy and Rapier. +[Theta Wave] is an open-source space shooter game by developers [@micah_tigley] +and [@carlosupina]. In the past month, they have been working towards porting +Theta Wave to the Bevy Engine. Most of the work this month has been focused on +implementing all of the existing mobs in Bevy and Rapier. -Progress on this port is going strong - you can find the GitHub issue for -the port [here][Bevy Port Issue]. +Progress on this port is going strong - you can find the GitHub issue for the +port [here][Bevy Port Issue]. _Discussions: [Twitter](https://twitter.com/carlosupina/status/1432039838463705090)_ @@ -460,9 +460,9 @@ _Discussions: ![SHRM token distribution](shroom-kingdom.png) _SHRM token distribution_ -Shroom Kingdom ([GitHub][shrm-github], [Discord][shrm-discord], [Twitter][shrm-twitter]) -is an upcoming play-to-earn video game built with web technologies -running on the [NEAR Blockchain][near-blockchain]. +Shroom Kingdom ([GitHub][shrm-github], [Discord][shrm-discord], +[Twitter][shrm-twitter]) is an upcoming play-to-earn video game built with web +technologies running on the [NEAR Blockchain][near-blockchain]. This month the [whitepaper draft][shrm-whitepaper] has been published and a lot of thoughts have been put into the token economics and how to integrate the game @@ -476,7 +476,8 @@ A Proof of Concept has also been published for the app, which will be built with Bevy and Rapier compiled to WebAssembly and which uses React for the GUI. To incentivise early adoption of the project, an [NFT airdrop][shrm-nft-airdrop] -has been announced. The NFT will only be acquirable for a limited amount of time. +has been announced. The NFT will only be acquirable for a limited amount of +time. [shroom-kingdom]: https://shroomkingdom.net/ [shrm-github]: https://github.com/Shroom-Kingdom @@ -492,8 +493,8 @@ has been announced. The NFT will only be acquirable for a limited amount of time [As promised](https://fishfight.itch.io/ff/devlog/281554/fish-fight-reloaded), after months of private prototyping of early invitees, the Fish Fight devs are -finally ready to make their code and community channels available to the -general public. They also launched their website! +finally ready to make their code and community channels available to the general +public. They also launched their website! - [Announcement post][fish-announce] - [GitHub repo][fish-github] (MIT/Apache) @@ -515,12 +516,11 @@ TO BE DIRE by [@mdaffin], [@TimeLark] and [@septum], is a prototype survival game made in a week with [Bevy][tbd-bevy] for the first [Rusty Jam][tbd-jam]. The main idea behind the design of TO BE DIRE is venturing out of the safe zone -in order to survive, adding elements of gameplay like gathering resources, -and maintaining the player character health and hunger, that are common -for the genre, finally having the implementation of the monsters and -fear system as a way to futher address the first Rusty Jam's theme -"Illusion of Security". -[Read more about TO BE DIRE's design in the issues at GitLab][tbd-issues]. +in order to survive, adding elements of gameplay like gathering resources, and +maintaining the player character health and hunger, that are common for the +genre, finally having the implementation of the monsters and fear system as a +way to futher address the first Rusty Jam's theme "Illusion of Security". [Read +more about TO BE DIRE's design in the issues at GitLab][tbd-issues]. Download the game at [itch.io][tbd-itch] (available for Linux and Windows) and/or get the source code at [GitLab][tbd-gitlab]. @@ -595,8 +595,8 @@ aims to be easy to use and provide a large set of out-of-the-box features. [![rg3d feature highlights](rg3d-feature-highlights.png)][rg3d_fh] __Engine feature highlights__ -Check out the video about the engine made by [@GameFromScratch][gfs_channel], -an article could be found [here][gfs_article]. +Check out the video about the engine made by [@GameFromScratch][gfs_channel], an +article could be found [here][gfs_article]. [![rg3d feature highlights](rg3d-gfs.png)][rg3d_gfs] __A video by [@GameFromScratch][gfs_channel]__ @@ -685,13 +685,13 @@ undo/redo system. The new Path Tool shows Bézier anchor/control points (soon to be draggable). Rendering performance is much better and scrollbars now work with the infinite -canvas. There's a new bounding box around selected shapes that are -transformable with Blender-inspired [G]/[R]/[S] keys. +canvas. There's a new bounding box around selected shapes that are transformable +with Blender-inspired [G]/[R]/[S] keys. -[Try it right now in your browser.][graphite-live-demo] Graphite is making -rapid progress towards becoming a non-destructive, procedural graphics editor -suitable of replacing traditional 2D DCC applications. The public alpha release -is coming very soon. [Join the Discord][graphite-discord] and get involved! +[Try it right now in your browser.][graphite-live-demo] Graphite is making rapid +progress towards becoming a non-destructive, procedural graphics editor suitable +of replacing traditional 2D DCC applications. The public alpha release is coming +very soon. [Join the Discord][graphite-discord] and get involved! [graphite-repo]: https://github.com/GraphiteEditor/Graphite [graphite-discord]: https://discord.graphite.design @@ -750,17 +750,17 @@ Release v0.5 was just published with the following new features and updates: [GGRS] by [@g_schup] is a reimagination of the [GGPO] P2P rollback network SDK written in 100% safe Rust. -Since the last update, GGRS has released version 0.4.4 and received -performance updates and fixes, such as a -[sparse saving feature](https://gschup.github.io/ggrs/blog/sparse-saving/). -The authors also proudly present [bevy_GGRS]! +Since the last update, GGRS has released version 0.4.4 and received performance +updates and fixes, such as a [sparse saving +feature](https://gschup.github.io/ggrs/blog/sparse-saving/). The authors also +proudly present [bevy_GGRS]! bevy_GGRS is a plugin to integrate GGRS easily into the popular game engine [bevy]. It features autmatic saving and loading of components and resources -defined by the user through bevy's reflection tools. -The plugin is currently in development and uses features that have not -been released in bevy 0.5. With bevy 0.6 on the horizon, bevy_GGRS is -planning to publish to [crates.io](https://crates.io), as well. +defined by the user through bevy's reflection tools. The plugin is currently in +development and uses features that have not been released in bevy 0.5. With bevy +0.6 on the horizon, bevy_GGRS is planning to publish to +[crates.io](https://crates.io), as well. If you are interested in developing with GGRS, check the following resources: @@ -780,19 +780,21 @@ If you are interested in developing with GGRS, check the following resources: _unannounced engine on wgpu-0.10_ The team has released wgpu-0.10 with a fully rewritten graphics abstraction -("wgpu-hal" instead of "gfx-hal"), as well as [naga] version 0.6. -Read more in [Release of a Pure-Rust v0.10 and a Call For Testing]. +("wgpu-hal" instead of "gfx-hal"), as well as [naga] version 0.6. Read more in +[Release of a Pure-Rust v0.10 and a Call For Testing]. -There were a few issues spotted, but overall it went smooth for such a big change. -User libraries were quick to update: [iced#1000], [kas#241], [pixels#187], and others. +There were a few issues spotted, but overall it went smooth for such a big +change. User libraries were quick to update: [iced#1000], [kas#241], +[pixels#187], and others. On the shader side, in addition to improved validation, hundreds of fixes to the -produced outputs, the atomic operations are now supported when using [WGSL] sources. +produced outputs, the atomic operations are now supported when using [WGSL] +sources. -The release comes at a cost of DX11 backend, which isn't there comparing to wgpu-0.9. -On the plus side, the new GL backend performs much better. It runs most of the examples, -and has been successfully tested on Raspberry Pi-3. -Still more work ahead to make it solid, and to support WebGL2 properly. +The release comes at a cost of DX11 backend, which isn't there comparing to +wgpu-0.9. On the plus side, the new GL backend performs much better. It runs +most of the examples, and has been successfully tested on Raspberry Pi-3. Still +more work ahead to make it solid, and to support WebGL2 properly. [wgpu]: https://github.com/gfx-rs/wgpu [naga]: https://github.com/gfx-rs/naga From c9ca089f2a40c116a3e5de51eef9e7f8e642d496 Mon Sep 17 00:00:00 2001 From: Forest Anderson Date: Tue, 7 Sep 2021 22:55:03 -0400 Subject: [PATCH 03/11] Added ending sections --- content/news/025/index.md | 55 +++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/content/news/025/index.md b/content/news/025/index.md index 173d75b36..76f595785 100644 --- a/content/news/025/index.md +++ b/content/news/025/index.md @@ -34,10 +34,7 @@ Feel free to send PRs about your own projects! - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) - [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) -- [Meeting Minutes](#meeting-minutes) - [Requests for Contribution](#requests-for-contribution) -- [Jobs](#jobs) -- [Bonus](#bonus) -## Meeting Minutes +- [Site fails to build #758][site-fails-to-build] +- [Better solution for hosting images #636][better-solution-for-hosting-images] +- [Netlify preview for PRs #174][netlify-preview-for-prs] - - -[See all meeting issues][label_meeting] including full text notes -or [join the next meeting][join]. - -[label_meeting]: https://github.com/rust-gamedev/wg/issues?q=label%3Ameeting +[site-fails-to-build]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues/758 +[better-solution-for-hosting-images]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues/636 +[netlify-preview-for-prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues/174 ## Requests for Contribution -## Jobs - - - -## Bonus - - +- [winit's "difficulty: easy" issues][winit-issues]. +- [Backroll-rs, a new networking library][backroll-rs]. +- [Embark's open issues][embark-open-issues] ([embark.rs]). +- [wgpu's "help wanted" issues][wgpu-issues]. +- [luminance's "low hanging fruit" issues][luminance-fruits]. +- [ggez's "good first issue" issues][ggez-issues]. +- [Veloren's "beginner" issues][veloren-beginner]. +- [Amethyst's "good first issue" issues][amethyst-issues]. +- [A/B Street's "good first issue" issues][abstreet-issues]. +- [Mun's "good first issue" issues][mun-issues]. +- [SIMple Mechanic's good first issues][simm-issues]. +- [Bevy's "good first issue" issues][bevy-issues]. + +[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22 +[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues +[embark.rs]: https://embark.rs +[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open +[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22 +[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22 +[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A +[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner +[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22 +[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22 +[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue +[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue +[bevy-issues]: https://github.com/bevyengine/bevy/labels/E-Good-First-Issue ------ -That's all news for today, thanks for reading! +That's all the news for last month, thanks for reading! Want something mentioned in the next newsletter? [Send us a pull request][pr]. Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev] -or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news! +or the [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh +news and updates about the ecosystem every day! UZ_Qg z`K%WC?ctGNTyN#Ca#JT-D7zNB=qj>1eL)a?V7M*0P2HOeB#9=y3a2DgSU;?el{hqY z5Nal@=83UKfb2Z(^Zw_w6}QH zoRxYWX+BgM)R*oD$`OHG)`V&&G#W%AsnaEzd&WPpaKF?m9^&Eud73s&K&c=mT33zI z{O}>Z&esfIJO$^b7b>}yu8AK@t(^|4u8Ni|am}+2YW|n1sV?<#(`QU(H~h_l!do{n zN@0%L`5S{8^O6*1;;PpBzdx-T63}5!QpWvA&SglmA$TOi~WH{x#IS>NZNQ-v; z=&{&IJcW{DPV4Bx!|r#WnwBYwVpkD@pVF$50*RD>4N00hx$T$!cS~1JNd!{c0p6w7 zWS^IySqaTB#rK@JH&a9yo;u_8E!m3dY-J4{_KFzXcQPo&?|5%sD8E8!Ym6?#(l98z$Th}6MR&aZdyuZcRf$HUy5Qx$$ho+0q_W z*ZeJb0&FkE)Qrh=zNT?m$&x;7K2kHnD>3=zjfE)V2dcB&QHne6tBDR{W^Oq&9qT=I ziU^%+X&{4=IVkp)!8~KWBE$_*H$m^H;<2SnkL}O53~=B?a|plMa(GBjEtX9> zeBh_u{MRh_sWi(HKh#w}#Zng%h*3%aJgc`Ka2!(c#7Walrz6)K>a zg<*4RThCdj1g#>%fkXUqMuTaD{{{*G?}+RP+R5UgTtkn1aJIRK%ugpJ%# zfHp>Li<@}m8IyRC6nd|&2M`?cT#xjEVq8u4e&P68PO%LE_pbITpLUy=_t}FOX;PV0KWtTXNxtIBv+T2M| z?&SNlKXv_3f@SJp;z9C$3XXoc5_((w2Oz!W_fq|yApQ=b;Z{_1_)YNo!4E_I`26u5 z?#T=)Up)`X*6w`W6`f##^fC?LECu;42<)nsAfmjq@pq*O?Xo~WuI|?vUS$_RXW}+x zM`C=)*^EnCsApS2gCr02HY!-cn&n5Zkfc3v$%y?)Xdj}6+74$B^hVdO#rJp)@QW-Vmpntl1+!Dh+8gU)ntK}OeC zDB|5fG4R!zB1!Z5Dc0O_gY1YIhV%YP(BaXif4^|lRGM(N8dfYR-=!K=Iq=#z)c5f4 zudTUn@H*>j1VV;gSoRxH!yZ~YcH)=4DGOqdf53>$GNB|?6NRcq^=zAz{NAajUziAK z8x=Vk!ah$bb}xlkj2l1(1kG#dZtIdm1~^6Ox0LNLI5ppA(yhI9A$%Dm>ABZs>^Wi`(bW;%2Q!Bldv;~?j{2~(>7No+63s&cHgYC1EXcFc{R|+ zZf0}c3nxPDKgk_ee{a*;qlmZR@tWuPWs1$fu2h!qh>xOZhZ>~a8F`&aEy#XU1=DwB z#<&3F$@>SOs$NxdKJP&L>v_C#HW(?xU)=&-dKJO;fTvDI6c@JsOchxeyKcbV4sDq3S}0(rP)7r{F= z=!zeWP;J(Ca311JqD321u*($qd7Yc=(}tI6Dm1&5jqVJ|oyvT*LG51Y?qo|}_CyTA zc-3QfZ#lWuA^Sa3q?o=@tJ@zh-g{-v3NC_SjbJD0Mv8BUpgZ5wC9T)fb8D?WTiqS- zZ(g|L>cp=>(-tmTM(qu!bsZc=OK?6iXBvMtRT%5R&mItq+9xI6 z#{GEI@?-PFm7q`p#WxsAmb*$F+N=VGV&Dw0*6aj!d~&Il2|LpKn+}4jJ7A6pI$|=; zmkyAWXBpqnI=HV}NUY>n+MU+1*z!~^;O#xeXr_xMqz}-Os|ywYS@Z*13>=8i%yJ49 zCrsbh@V=NNmFKI`sSAuzgvmq_YdOGj#fgoUPaH6mTlt2uT5~$4(~OP#rxZ%H{sW-y z>jHp{FvSwS9zU$6wT#;z^lwP81hm?Isr8k|8loT`5Ff{_&N`^bi=(tWCXngh61Vf5 zFNiT$yG>SJD%Sk>;A&;QU*IUXx!h9l84ksV>U<4S=Cu*?kAm@?A{3g-C+>28QE$x8 ztUHCfBnG8@Vv@9jj=UshOV-WVPf1;m$lq-q_@ZbbATyX@wY4skL6QdG`fZqn*N8Z# zbx!CfMmg|D`U=qL8WEa&7i6_XSG;J4(25CaSJ-L3sq1y>%_CF$!4>qTFr)W{F$ zFzWaK4!^b;%^KM3i(7XG529*t1kO8^Q!@_`#3#$XS+M$3io(a{ewT~PV1VM^JYES$ zWCNnlX$(d8!PDOjSFR@i8TB=h#_k-QDUCTz^=(w1=6yf6opy*A4P9aYe3$$YNf7+3 zcez^$8~dukAaBQ{YKz6nvHKwDI(0T?CK9u?OX%hek?tnzOsQLKuluy#?8%sC_1Xnv zu^ClB-2?=-q+Oux=%8}*7KN6*k}HaM5Uof5*5imbV;F`9V9pgqw?Sz9uZo;wEQBXF zG};MMMnAb-r9LB1kE)txX~153;)Z~XwC-X)WJy%bsZf95j)ZB1@*blA7wFWu4*TNY zn<3&KHU#`4iF+1=Zr`>8DU+UM^{Vh97KM-{m2e-NrWn4IXMKKVwQc#Lkuq>JS?Nf#J)49sickVn3V-b^2)I!$kG3 zxr@|$FuHE_+c;})#s%gXiXpygj)|+uGlTG(6ckuS{{TF{EndAuvF);`w#nUvKUPWk z)SKc(^*Yh4_0uiVoAn5ypgbA=Elc@A{;;XBmq{yW)LpN*sMSN*T{pm$)Fe@pn%u*c ze2Bv~Vyvwdicf_vM=e^q6L1^e!NqqSR^R|KfqQgN5`1 z@9QZf+aD)PhhIb$Yq@-YM7`Y1TWsMN*lV!dDe!ciJkp&hll5T7>b^qPqZE@t*twOj z2@f`HHm+{Y_%{4K^b4`z)_jzD9@v#BSE8X|@9z}+0eq~>bdDwn#!=$fx%DsO&8_8o zY&f#zG03?@cvaZ_>Uqr7C%3Lq=4#~n{e#3XGp5agh4PGJ>U3U-m+;`9dqY`fF5Uj< z1kVfQFR%wCqFOT;=1V|i100t-uI*VV}h3V0;>4}eET(B{W;<^#6GUGLQ&q4Vu4^|gW=M~ zg4IZEj9))cF)Ny||rXwX8qm-Z)jO4hS1wd)8 zoIH%(!S$-FN>#t;s1np2RRZn#xB&M$Us{OC-nuK%Zsn#Q$eMrJCigm;Zx zjV2hQyF-=b1*jyy;uF?HXnAZFOGIZH1CWQ4LUigKE7e)m!GUK5(|BBLg4=&~4u5tV z|5k=G^+J|1b8oq{bRQw=%>=|RM#2RIU*tJMD0l7v!H;1*m9`B}!LpWKZ2CgrgV(HL zm&y8>%V>|H$h;p1=4b|Y>D5ebZJ6!lOa{I$V+J8dotl58+LT@d`!PH>m^T30VNZP- zV`5W?S15M^~Udu!OKYr7M=HQK13UyVnmTo{s2TMBq4st zgS`Njz;s2lKVPuXcx#&dr?KfuSX#G$BQ_@z1e;4}y^nF!47^ma3WH_`h6A;pf_5&kP(L2$ZS$%tgTA5o>rwqq99$Nw?=Bn{SYu=u$+s1reKkS)=)r;r5h9#;f18F^?*2zBcXVB5%rK^TT zWUBgJDsh7z%^14>iEa}1xc7;M1xw-`l)lki2W&{*nbdj(>{;@;STC4MUJv7%S27T! z@m`S$^9MJL>lqDsgyYKP_cPn~@)H)jDtpU_i5Iq?yau=OEzOrLcNDBvD+^0B5%yiV zKZ0?H)&BR(besG!v?7D9_BDYCh&K9loLyC4Qcj^b{Ba}zl$A0M5R*yNJT*6oy&eJ(1413sXe&Tllq51zw*%d#CPn&f{OD^U< zt{|5{dCcLXI{&K!wMzcP-48Gx!R|kRAX(_}QhAspH7$q=gF+d`GVXZfDF&J31o^ec zy)Iay=O1?dpBT=a*%@MqHSS0Tfw|UM`{7 z4UburEXl!^LyS?#CX7-2$9I+rLf+;2E^q_EWt3;pB&YXMZ;zWk_WVI!uzbVbiPaU0 z7KCt26lG^vr!x~@dloPOOupyKG#`kQh|xy(2*T-J`^atJsf!*{uIu`{=P0L9)Tu2P+Dw{ zhKFEm0q|VFNS4zC0lMaj6boRO1^Wp#YAvnrc~*?OWiWgebOzKKzX(wy;*qEi7r!rt zV3RiTBq?!J!0bjQ5n3jReMK0=gK(P=DDi74KXJwrfl~*s5DLxd<})m|h_Epf4?oSF z_U-COcib1|(26DHJT_+%`+C(m*ewo(PHKko24=IUVN@_-E4rQ1ZUFEdnWJ>P1FPVb0UllKkN! zQh&~W?^2ZSV8e>PNjKAcx#06Y|>QkHj408#*_IkZX+I=@@gV(f&z!Zw`&U0`u=Ba zv$rcj#w(NR=iewTuGP9E^z-eVX$2Z8Sds`)JqtC9269zsS`oGxIM4*#(%gf~g%Dk{ zJY?!ot)HdK`6=GWpTI}Av_kc?LUm@E#9#AYB-MR46rzfzW&?v|j!~1gxuz40k~Hjt3?UlO@_h0Laa7XYuNJ}V6YXT6 z+1skJ^P4o^9}naFWQA`xiilPrVDvPy!{EBfKA{N@DOsPcdN($O8Idj|b*pWCzH2mo zx?*3-eVu5fqq)&!6KOtjJ~uEl=J_gE6Xh``DA6*;Z$Z>qgtk#UHf9lA#qMNzIP{Q2 z`ej^IW$b24JL9Lum_<*f>05K4ip0iLi<_I`Ie1VJh;ZU}z6USHi>d7y9$wMd9yxLl zbnZoJO#4x3&%>1+4GBgkQJG}a%AhDg|GeR1(YywXfOVaQZApa!^nm=aQ|wRUOKS-y zBGo%c_c#|0>;JfzmrD8DHTzw9$3+Gkh8CN>tl_ggxRB=t!DF$b^>lLU*$1s#D=I*I zBwG=h0AfMjSlxHpUehAMrBsc2gXItlN#9?IBD!+!EHmL!q`*EIT^GHM6`Qrjl==hd za*(r^97GcwDr-7o{~Y0-S{yyZGAYWEJcH%DB%&A-zE0E#MA!v0YmzwsDH;nw0uE)+ zm}vdmO2|eje7iG@1R^gSsZMe{jQArSoI}>n45MDDX`hvtTzd8iMGyRp>*Y_Gt%4nUnozC|Nl?vj*~( zV^@U{Wn*)RLn7&5T+@A$5yqjzAe=6j4B+S7rEgRvWHL$dM~2LyY8KXeKNto`S4Vc) zP*O}PVagd%fqc~{ZG%DOM`;?tIw4+nznu7~3Xh+05+v_VW`0`B1J>EnD+zkT0RFDtt(lq z&sbN^kb?3}vyJ0gVQcOnIYNve8k{Jl&iwUM!Fx;W(!qyr>~* z@(TV7ACLN5DK1;f78pq@Bc-?H`$*Hd#COW5s50%Eb*#J`88jUD0RPRJ7Gx-rmh~c z+b=p~O#f7Y|Gj!hZPyGiv{aICB3?7}r8r9|Urcc$vB{pwk@vCM z!v?I@%MpM3SIX3@Y#*dbztZU0wNtJEA6Bq%r#~C~WSyQ!|EavghrboBTiPX{b`3sP-1d63c(a0*;Zato6u(IrBUgVl3=!>OCg$J3c zisd4l3UNx>*@ho3QNF1*wUpJz|9_fOCNt8uo@bXwayN$L`Mro?9} zO&_fdOK$r8&O9^U=l8$IdXa1vTxEql9P?9we_EbPs?38@-GSK_n4M3yHJ>OC#-82J z!kT)2qYAzi>Xa@%ntZKK9OsfEbFNqKv2x*Lva7~pU{4bk%990|SsMk^+4nNC$>b@b z;Q`}hS25d}Y-MiSf6~p|_s!4%xSPOpXeWw=R-bvL$FNfNf*A#ewPGuW#pb?G6b)~C zZW*Fks_|3!9kpmAs8M^kfFVB9EhG!;9SH25KBaC=!Y|HzqtuGj0fy*Ue#DxlD;$Vt z{|!a6g{=s2%wfd=p(|OjJxy8z*=6&u-8c@ls|IxG&>#V0q5v(!54D^(Qa#UDSW4^F zwTRq8E`I>g$yI37|HaM!s}bCDl%Fi`4a_^s&TqeZ2$(kMXKxKVw6{@kFOxmQz^qD> zC+Hm7ZtI0Hptl2aG-y(vDui9A@6%OL*kka2^HF=70qt_Z%0=)>5&p;@)LjJ@_aDjr zOWgmLWWhfR7Pn=m?=Si3^(F>&AOp zbJOn_t5Vb6#M{k6bHY(WxZ#wPiJ`@5BBjC>6615RBan^Vi3i0A7BeSEWmiOUGbjdt z3^?H-YrHeg?n%4`m};w(n$WG<2f4e$MW*heJvO&MUsy~+(CyUO&pn3}UBa8+-{`t$ z{BxP4`3bFCkOWYoTiuHT;vU-(`>FiP8gCXOB-k_Ilcp_aL^l#=Hic)WD4KZLt9Lgg zauTC;bsfGy_)7izMoKA14v*NyVrW9gIw8a_{P6Cn{*hchBu!_qS?_*DN$u_N#Z`Am zfikz1r}@3$+)!#$ezI#|rD$hYdkX%8{up=GWWa&ZGe|+#pTEO$O>fIO*gPo8`D1>`*%Km7H>5Jb8S9A$-w>5hSWn z*9ANILQ$oeqdR*QwFhSvFC`*=erjQ)0p6-0g%2Hk2-x_BO>{4pqP<`lfN)OTyEeF5 z?B|Ob`WoGbuj}x15E(mlpM^@|^PV6k{tuvvyZAM}T#a9AQ<-ynl$?a;i1)Gomfk>Rx-1l1Vs@c#vzw72^O?g9O;5YR3dk%NKjaM`;)GAS*LDNJT1r&!k|+@jL}eu;gq>CDFI zPZbVCt!JO@d!cZ2gPMY->B`u?q;s*BqOx{KlB?0D%cvL9se2=})s!l3voZ$?mHe9r zhy9>_V@icUU)wRlBOj@^Ypk|S@og&4+#HR(NXbHtPFbVA z+nL(PoRpx%Mh*HDGBkX8a)=I(;g8kiwyR+zVfir4v=?Qhpgf9kaj*~1LnH@~n}%s+ zLb(>gI-FNbXp>=|d?QzqmJ{yH8L6W5)HY`!pm2i1SwP9& zH2ogl4ewdZSrmj^5UL~~Nmo$@T^3gT<8Ju+PX(i5^p7_$IKB2*U|jDl>%` z*@y@L0QWyP0HH|NiK=d_YrGCsELV(b|DXHv5 znT3TsD#lZscoCLCcpPGdVx)PKXl$J0(X&?g+Gu~m%+STTGz~7Iv=EdJMPE)^3POhJ zC!wsKY|Tj3n&oT)Lq=$l=B-z>Hk|-ZjDy80Q(W-1_l3R0#aUyG6W2t$(vCNXKr2xJ zOJ?GEL9FIkXXl|SNM$K14WJV{ZB)!k$}fCc3DNshoJDTml;K9g%mP8ERTv^&7H}ZD z3GVf+!$Xpc~& zmzWuCMv5Y$rC~T2>H_H+fuAndmkg}knf_?^5U_T~n-aoI=;ejmiTAMS-i(sou7>la zp$fSLdoHdz0v;2y@TY{Z6MDb_x0J4?OUTg5s@`$O#C|UYICRZ@l4s%TafG!hPBTRm zZZe8zsq!zBTxW@!wW{_*(aSWQwPsxRa)!cdP*3AzcvwdyiPy$UJFSjUJu9D;y|CuHadF7+0sxZDuOvx$8t$k|Xr@i|`S~TDu zly6C_wEy6}JM5bYB>gJannIgq@NY$m6uFV8F}q2u&2mB-7PSToq!bLAfWVvH0IvBz zuzl7DORr-}W&}Rgz?dHgJrotD@ctqtziC-Z`qTZRRa$A|qO_1ML&s~Kf4IW-OLqkY zpl4$*RgXA9;#-okJV6<*SUrT1et&0Z_`GI^qSNP4CJj|iol~WeWLrE_@K`QRKxuwk zGItAxWjOXy=gNQAGlkD_TJFKY*~Q$=NR>A1gEbS*|JvJFfCb)m(!(L^9AK%Gg4;$F+s9cloRLIAE`57**-AdLs@)-_Ef^5L1N7;mX#qz=~Gud*oq3J_| z35sYJ9t#8Po0#K%KHFXf96yR17vw^?tmx4$Y2J2j^C8ZnC6hgC)(nxBpzI>2Dp683 zw6fb~2ghJpmsXaoaURj7Vm=-^8>zTvaRG2<8zz@qvL;EyPrWEwKCGfPTK#B1rDSx_ z;tjYkJjPsy(!izyXahJCPbXCms1&_EiPt{)^bWmEJfCbMe<39Ax%Tfs&I#fiq6$`l zeF@^KC^g1H^h34O7a7|y*kzWugdMVb1$ukl>h(f>*kQx0R-WLmQWkFhw1iL$4&)$T zlV^y!GSa{?TKps`4Ul!~;d6E58HEa+E81Y{$5fb<8%1)n{sTi<*K{qsS3|m+^d49P8w0q;2=e}uP-+$`ADl<&SE}2_{Fd|(yR4uT(4;sr{!}Pj$iu*ZgRa|lsVsqY zAAr%}7ef0EY|HK>h%xbFwvC9rXF*NP&{7cYbP~GY_`D{j8H*!-y;FEn;I;Jo`NdX$ z`xc7)k5PWqqnsq1{u}^NWsADGo1o|>9z11KT$X31Zq}7{rWmn7O$ra>+Wo#B0DLw= zHyv#1!D#2*Tav*w=9NSKwCP&`Vhb&VajQ0kDVuh#^>bIQVNo#6QlfqMt&g{cppzrJ zZf~Y8Kq?|%1nRn0#TZo6#SeBuB#~_~rv)3mXdNxJLHxsss}4TN4*}Qp7YPe1{q7?T z^>1&^GISyBG{uh37Vc`Z7kP&>Y_cw{dTS8ubM@d*PDU*00%=`L;fbqImA+89b}R_) zT@)}&V0R%YSTKJPP}|}vv)s=t=pK;Q_Krb2lep!84!cISs5chBdS(RF0sjA7neOfw^6W6J&hgLsj zm*`w)F*3CD7E}Q0cS0u9EO=l~Azu3(3!)cc4G>oN#O_M!|1HBY$iY4Z`#kz5S0X3f zZ0Wx5^JN>Ise1VGkcs)1@liY7U`|(?(mfEa`f!leTdA!g1j^Q&?J8*OM7Cs;Kc14y zj(mw@!qNIP7>{&LWKnyN;|hc|Tj>x2dZ)tohu-irlG+#bv3D6^`g>)x9o+)PXl#cDl#Dj=e+Adyl_a zU_P?|jCM8nq1XCkOda|SZV1P^!XfEC++H6iTB)h)Ca6KtM6ySDvQKGCY2xLCugjy3 zt4LES&^m;&R)ZAv-oLKuA=lK=c8fFi#ltp5adjnAA8IKl#*a?*vFCHaYchY=4e90`MCxaLMoJ zbwR7ZPf$0nkpl2$a`wPrm`?TkZHn6ui@IkS7q#W(OW!vt6UQ0b$yt}_*PVMf%9x)& zt$0YbG%0+#Gq9>(*LSP21LN#_p}KuGJ&N(bDJfX^t?)H;B%Y{Ik~2;IQ&DAYqx?b# zp3JZkwhgp?<_=J1p;P95@Qdyj955J>ZKbXFD)t4VvJ+;#m~Afvx_Y_zx62F`hxlTegd97dBUanpTx#x{&hlI+t-uavO?JxUGz0nmOL!Io8Qcwa;)r&&- zcS4C(Wol4A{pf0OH4BdmMNF~G;~A<1Q~RKh;7WctzqAIgaUhe2h@vG<)2Lf#X;C^L zsEHC}GxG%_ZZvO*PkL;Zgs2%wQvoPnB`B8)gan&>_`T|lC|EsOBKxP7E5G?nV^$?8 z+vom7Y?G4-PA9G}4iFHXRz97r2+I`a_BZ;-<*^H^9no~MHkj;`m3iq=w5uhGjbV-p ztD?j3EpZLsL~R=;XVArOH8PoffLn(lt!p)H3WHIyZ4(~FKX7qqz*2gy*P7Vm+7+Bn zsrf}PKKXTgixJnOI-n0tLlu>#)by8n%zG7^w1{XHobA#M zgE79F0%Ze5g7RdddrF_Z3K#^rS>;q2*Q_+%U^=t&%X0n11v5ur{V@4cg&EC}ZI1|$ z#k9s3W7GJ%!JPkudR29Jw>XMURKU&&gz==u7BepM`b-yO5TMzFf`n;=iY?~rr0k68 zH|fJ9jSKn`#~Pv=VJoDJYJ!um%C za0$5a`E(682ghEGlkQgF7emc5i_&Uliluog=bDWS&JvhGD0-%B3|xmOC)OM}2V>gg z17@y>XSA%bswAF(fiHKQtGTX4vmdMqd83vXD1KS#%@NUx*!4N`zSsNm$H02+8ZK}R z7#m6#$a0!#;4nI`OsLmm$d{B|Tkh%q1c-fsRw)js_kT(#pZSF5m~4@rxa7narX4m4 zd1ekl_t?Nc2Ke|QRtI0#dxO6E`5W5B$fDl45fkyO)B!H^6<=2XgavT;2;>f~Fl=fk zI1-aP>QMdZ%o}7aD~rKNa37f0Qp4$-@R-Sw ztXV2aYDR)3VG&;51{N&9=1q02-p7n0>nZ=2PlSPv>x8f^4O&soH)9wuOUP03Q?3$y z_)&QjNeo8ZyPPO-?YJmSjwyC@hA%(qi+TLRto$)JqnJsnw#XC$yCeziA2_$j)}1`; zeL-7jmcdasTb{)~>T&|tl4xHt!I17WIDIQuCUxi-bNrk0Xc6fdC{l>lOD-qRsC>x7 zz16)MdqM~;X|F(e<;rOy>Tu8XLfN0Ny}!}XQR#JElt#g|4*5%KY_vr-nv>hAbt=_x zTQN*g-Z2yAOq+2Is0$aEXqhWg{2c`(nXl_g&X^9&?N9P6PM`~!J~=xv+ntx1Y3HjI z%gd*{770iHvAm@aPEm9r({uSBVD-XUOQDd*cQ!vyTe%foV;k8c%M!e(6BeA*sufF| z;4~Q7C-$4Yogtk1`+uhKwShkg&pR8lg+^w#Ha{xRnzN@$vByH9U-C-({3%w6lZ*d; zgymBSa0iW{7=jBwx*om}_|aQpB@ZPQ9m>Rc7`+a;>q zT>L%Ab!*vx4TmQI*Q!yHtnial9}-?sG&4%WDpKF{ZFF4xy5VL<+0hfWqr;py)kh%V zh7XyE2eITf>rpCQ3S`a@6q}fN@F}|R?88emO3wVN;PVOJoofOtS9m|kFt?Fh{!fKe zfXZ^uF0yBC`WQM&J(q5(5sE<6p;1$cZ7_42iWVIvLVHM`rZRr7GyJ}x6PtPS$NW%% z)PBd8XbG-|?l0nl86(yPg^HgK$n82mVln*q*!_f`*7I3T;^}&y+KeX%MROBUt)LBWm56R&14vek>P7U3d66jV83E$^|}tLQ%dk z#aaO}<35vnSvyS6VhERpjxaI^o*P)+9>thFre^%Mrs>MUa8qkSg%gDJF|tY{qbTAn zErZgJL58^?gRnvh8Yf6lE@R>BHdz7`?{cZx8ESzA4FyI6kJ%0H8~LG#gU*7{jocvP z*6dpBmrB>V#(KUNgV7b7!SB8ii_$Z#EsdDvu;AM_SIO44butR55QBN5MXPJBs| zrEp>InDK`RgTVbl>z}D}vW^~L>2$NHCJ1zpcs+PJ8A~zn(a!kL3eSv5Q#pj6auT4A z1pJcAJ;;H$ZA3|4*HGb*B7m6`Nq8=(;U6i(NfTqwyzFridI-9WdE|w|!nsRz{8(Y- zQiS54rQXM;-fJkSd-qx?T;p3 zBovPB$ZwM~_~HJofbcy+H1)XHqg14f89>QekO1QLs}s=ne#fX~jxLXqi$u{*K*`@v zhBPU?w3I8bzC{`*D4}<38B;7nRsuwPo~_(p&Im+(o3@H_^nO=at5E-iQ90%brKz1Q zAzwVrStpUAr{eoqmW|^0l!PJA^v|`R9X9jwE-?d&Z zf8aYE+H^*k5D5H9&q{B`Tu(309EO2;Itvn1CC=jz2)uyY>yfr~nDpq-Zsvd4PrZhH z5|gQ2`$Zsc!kbS)_B@9yeqE98%8otQ!8%if{cQKutI~2LQFLqcXp(_=i>nigGcK5{ zfv)`C9|)nX9wrmspPIg2Ere&*e;s-S2Gll+)<`BEaCdS=W9$;&XcHJHXYYYWh? zCC0d~D?+Zv4;6jDh!$yC;}%D?Gj6;!d-aj9uy0y$FCsvrL8+LoFFwPI*0yFe#MI^{^hVevX#);5D*S~42#07Ed_oyQriV+7L0qa-smAr2&^lp z6ef{F)+|nA{=Ah~1TSDgD5p%2X6G%oBhI2j5g8SSzQfu{!F(Ow3m{wJ=i1C7{mI$1 z&}&<>OgKU6>-Cer%pGbI3Sx2??}VG=(`13buEv(RA^tHZRb2e5xu^p!`m*U+bcHdh zsFzrH=$`TDpOkf{W|HPjeQgZS@aDjUFmzbVO8sE{TzRIira#>efxW?`V|Q2qxS{j< z(!hHzjL?lCl;9-`-Ovusq^hjEDEL-{TDMT1>tvr#AU;Qyh72!>#t31h>Ci17o?BF| z^o1K%;IpoNoYwiYlnE>#>NS_r%}+o);`5KS#T1BYC`%y4*qhR0>dE*B^cL_~dmPd& zj!Py=GR9jw0guB*uf`^Q41WA`BnH!hF{;d2+ii5|J)wkq{x=fAe9Rsb6YObk&Mm}z z04^y|b*3b^ng^pnx|>&A(0|4Lt5It}z&0`zT@Yk@J4zK1DKf>6+;7|!-pt(r_@)_a zDdXE5K3~6i{=qLPpOus1ABu`NRu$aE={gu^w1S9oFdfH0(xvaY$@Fd9Glq~QQWQxx z!ul}rIxCrnAZ$+))sJU{jMvU)pVa5QO#wfEv?OEMxC{D)6^kI>N{%t%2totNSM|Qv zfPtV0CNJgeAn{=_b0YD|OVLVXyV$zd#m6XPnaR+gN@6U(@Tdt3A%3K@BHZx@n z7?M-GeFjpO4}@_qnRj~^SmZreW_GePYIN-l$laM?Uv4W#npQE9>2^53^7Ph)_z$u; z5AayqiKBBtd03HO83s@ubX^?`R}oA&yIU{_c$Y|8>jZM}m} zB!=i6Mf7H3|N28P^Fj~{gyL)b0aVP~5)o65U1a}DTvbejuyE_CDJb2C~ z&vUNxUhnySe$do5vpp>}Jv}wmRd?};c=cX|f8hYJJ#n*248Lo;;6UX_BqZRhw+r4u zlr1O_9n3P!qWDmSryDo>5nPz|;%#0>%VqefC7-<+#wR|**KOeFk45!iS2~_BY&rEl zj1J8%pIx+Rl2|_uPTGhvC4RV`@Wof(XdcHS+qWE-3LcBjh@*MJN(I%KdI%QpyhrnY zaf7=Xre12ei;CLErL2xsd)c2J3)(y7<)(;P zsc5SCbI5#x$VyNL>M7#m8PeciUhfOu6Lt$w$E9)flD&;0a$WZWc?7B3vYWQshI=&T z6|GLJ97bBBz*J(W>cg4#BVd(XOmZCOhsQhnDi{P zPPj^Lh=CT;QB|d+A2IH}SIk|ieaB`*GTIuX^*KEjb0K_Gp}%Vh^SFTI4S{)#)m z7b;f8_ zCE!{PM^<`b>9E(p#%$Kfl<63%(RIT(Qk>i2;gR0D^fTGT zd7_+39cXN@-cV#w{4T z#m^M-C}{YU6u8^tJ%=8#mQKYJZv6FGHWhd0!_r5W*Y=?|i5ABMb7Kx1uio|8XVPN0 zO~BnM4eimB1CU%GWc+vOnsjI5qV zbQSy7^q5ag_9|?6atoE7C$W$krWuuLaC zJSNNQpAB!>5LYqy3w_+fc3YSl84&uJ`IT}Njs=jFKQwe#|^S#tyd&ARWDvzW|$)A9bf~7y(5yI?tS@MO~eunX{QVgZv}Om-)GzI zjG%RSX{Cx(wwkRcr21!T5w>0czymJjAl7dX9n|xl1WEdT!8$o_Jq;NIFWyMH5mN>Y zg}nyzSrTw;^P)mmA+Bb62yY5wZonBcr9R+QK>=c@5EL1LwV5KxfnZGK-Oe@sC19B} zO1M{;4MF1V@CKTEBF%ScRdYr6zrXL_k)%@ztS=-0ZCL|jc%t%DQ{s;|Sd!KdP3IY| zGUx7OEA9QV;=$`bfppFh2yGGSO2&yPWMKAvLE>)d>|N6d;dgTovlob>@R;SFN7K<> z4dF&6>CXPs(=?H3v{zR*V9C99Q@C0P9xZ7D*4QYqBK|=*3c{EwDtenlR~=m|iPdQz zQ1cVposczcbtOv|@fUPVU1`%=->*jvF-r1!l%4u%n0KUV03 zc5y`J3w{Qn4%;y`m>0nJ1(!JZO#^Pg)ErT5RneS22y*d{EnnuaSkP{?`D52r=+Wpk zNE{A-OsI`$KY142)1#;T;ygF|NW-Ef@S;;Ppf^L}*kY{l?%(z=-mfxug9Eelu7I@7 zs+X5^-K=vBkkm(pxGC&o_VDVGedS(ZyyRFl(wmI4RPf~bU54e2`)!Za0v1Ruq;-@r z?UaAnLE}#8sD46|k1Zb=jya~`?()SEj^!(VkN!neMnmh(96>x@RRRiQC-dg(N{waC z6&nbDmU`9;#2o{*y>AFPV)W+y+i$rdxIeNc?7uP9bqQD;{=(4|QFpp$S88aILvF~y z5$jA7_T|hOK#JvUM}E}2c#0As|9hFU{no(Decs96vSs`^Yy~BK7zz4oV z&WhQ==3hi(2WpLhj&nDuep`bNqAEuzF@x`-ko2`uesPCXN`c3-p)NXjDt5iSXsu`j zI)vmP(ED1#@5(8%Q=zYllKZ)3xv~@FaFq*x2U>$yM=aw}FPn=}nb`%Tt?t=BNNZ5a z9-9vFFNWu?V8@x0ux;>n2kJUUf|MH<7!7bh?jd zHafX#%`WLr+h@j+U~{-alu%Sk+Kw7peps@NenBhkMkCs!VQO84;T6&MVU6Tudhh+a zF)BH9mt?-3xBLWYoA`XnH!@O=U;Cy5iW!DP%y5v(m;2vQ>7py3hs<9`$q5t(ewP^v z;k>CVov$w&Pk{T?zdSzFyuxOp{T|{)lTr}J)0EF(C?M%$AGi=uE+)M4^sZ{wsV-4q zn(?R3sN29|8R9bZfD;3SzxO>g)0>y?s8pr(LGW+%BD4O3uxn%xAr`j5 z%v3^z|MHa!5hD%##+wg~9ApBUuaCu<;;_VUr`KLMel=fxqP$9ARa<4{w-i1tN0|XfyiYPTL2sBsl15Y5{8Av>MU55oF#8M7V5x!^jNSE zLGH;hP^+ru)ltLll~Zg6Vf}^`FesAUcqI!GgV2j7qDS!^M&TsL)^8MXFHvjCluEn5 zu;>g^n<2WbycSF@w5(&nY zSs7I#rDpz?68fGP4vxp~BcI44)s=_hR{INgLKrSW{}0TUFy9(C@Khh zD(s89N98`yi?jpmkFmk>dW1tI>aVlztAsw3L#q{*_F+nrz!%H0&DoVp+iCo#}akSRC=5 zVCSrG^Xt0XF0}V2-RnTUcnw<^p%T?fLC)i*YR-p{5l8ubqEWuF{Rc=iRP0bBRJm?{ z2We_h=@yQ`lvQf-FLrV&nqw$w7+=O%KtMUz0n~)gfk_(h={lg7BBjBRmEE1-)t3mA z(*(X%uYC%mYggs|&GEX-+MXdI z{`>KDp#XdjlW2@a^b8c}z95DrHJRJr5U2i@#+MQgX#Io9#*3eL+_XWj)f12+jKfUB z4ic4_W>Jp0%znty=)+2EXWijJS~wdARpk+3a~;U>{4J0snX-l0E*|jfC=b4ct9VGO z?zPR26u^Tr)pAeFjmOU{E;|jIA#oy;yONg(@tV14Klw?CtSS{#jK7_7E2@5c+)unz zuAr(kn$$xF51^hAE0b*`L!|c@$boVZG;h1H$xOb@PxNo&UFut-s{BECjAWUI8|FH{ z>*v!5;6~uCzw?b}n?K=9T3HTEwZLgre<&SHtZoc?v-o&{0h4MG1M) zK!?1-wf*0RHXB}nNjB0eMb4JJVO_NuvDhBE2Z+Nv#hq++UisA5GR!OdX!MqDKip2E z^1UrIPZM4w;K{0!ItfNHA6p6&y1X#_@upo$!o^M>zMME_iH1nw#l0wj5Qd6AY0 z56KNt2s`Sx#oUvVKfz9Rr4&g*tA8gux`_L_@tywa!WTIWN9u2t5S)yo`4{$bo$L2) zLhk4jRxg(NUVO#kinf2(W0?|`rfFn5(v#_jlw1dS6&ZX@Y6o@e@+%nEYJ6p$Y1hvm z=My*jn#!J2g#JwKC~(qntS#-M=~d4|{6Fr?es^O?Ook+aD5(%v3NWd?71Lj@Vslj` zXYBI^?XbL~bxP29@o}5OLJ%8))?8^rhw&{Ej6i(&9U{7UqX;{vw5hi&mSAt*yxHOM zZLbAJU;Liq#|WvOOf0u23EwwqYdMvETYd6x>MscdsQZ^o&b&cgjr{k=+YF`U$uEMx zMEJO=e-xYtlmrY93+O5UHXVST5p6WuW@>Hv6$+QAZ*A?hvghC+TJPPpU;RVPAzJ>L zjX$XVU)8`NR&HT1)N|W zh~8gJAdRBdc+C`~AxJ94u6$8{_%?8}Us$@+^%Z(DH$n_zdKjxFh&0pN#a(^39R(iH zVhIWNfgjCc_?3@~6G@ct^=8?7=9VA}Mb6qK9ilJ&ps@hGVBwV!B3#4_zLwCx`m(vi z%7PmXea95e<_Y=y3Z$uyxAu1`e90MKKMIC4x3j00?}4UaqAWb$3%%2$HK){bKOfbq zE+f|Q5Wh>-Jl`tg0)prjHoJnQs8P9^)CGuMp?`6dat^IkuxOegj%d!b>fQ2Ld4(P= zavubb=aqUmvTl_>scVqQq%T?Y0)2h+6rY-F%jS~kLsgZj0OXkbefZV%oSGl?>%8uV z6=a~M3p_&f{n+phV%YFUOBqMpLiOR4pDbjuVzW(iH^WBfgF{DLH(!ZTPopNPPB}C$Fl)Z#`zkEm zC`i6-9{%#W>kHTHw+MTuT7wy2jr~j3qIpsU0rG9p_{|Lg2dNE;cc|-zgoVE{fu>Fi zm_OG^U%o@=r{nvI9~55$Uz6dAd{HV68f`v1s|m7~lTiS83-EtO^+vAIR5=n-E29wR zq)kBWAT4%ii~8mVwZSCG0MvH`q60@g212EPQXgx}1IR^8*_BYM?&YTiTp%}KzbW_v z($hLaKawY*9K|d;UHjMe{wOx5)4eOE%<8vGiQ~xnR2c0GIhyMyGH# zYz?_(&o(%FW5MeqG6A<2K^XD@^rNadEobycG!r(c$psCNp||QI#vX@Jdjt^;Mi*wj z^J|UWgR#;Imss&5k?7T571?{}N1+b}k z0^ZdY-c@!2Df(E1qD$H55S+mIS1&Xe$ek*}zrP@M@8h6MUhU>P@}ggk5{|btMQlV1 zqHWqK*-D}(B2M|9F$I6=Xy{cU@x%6t>?OH`A#uDkK=554*CUe}p{8o&rt4IG)?vZR z_MVs<9E3`bL{q`$-Qc@H*chWVE*o!;@M;S_M7`%6y40L&cHqD=vH#xjzW1StdIcY1 zvL{g4GM?Q3BfiL0MUCMBCASj4U;@fjr@NnNSO5(hRppncpkF9(P$yDX z;=|eZM3)dCn<#xdDp3yE;=Srcau_dqfjdergqv0^w{+|tAIXfvgD71=>;MbBdLHVr zD3Frg8M)kMd7Bb54#N91voA_0;eG8i*Q3pxvpK3r{H@d3npb}gJps=!B`VFhzhSpE z6UMBs$v%Tegm1PMvc;s}zY*Wj!K8k|6)5HQtPMHkeaS$^o!Gc_fb?B2 zdGQ5=9@Sb4G4LKbqgADQ zxT_uWD&oPDQEF=(n+{7K0bl&cEH!!IRf#ykZZ;Uxqa^o`k~1z!zQ>qBKixU;9hB>p zTb8>&BQZ16A+=t5_R?p+g$OM>5dW1iDgIh1HYdrq+&>7-lILRX;o5mirRBW}vx14) zG#g&(9aeV=_n+!J3ao`ZGzyPWRWeQsj}opr?EICcU4Pk$D^=z{*xXzAv9FlSupDJB zKc|=|-7H)U-%@yhwrV7 zKdH{}WC*XQPW_|*$^XwIQ2;wt#I#wMmAtLc)qzgC!(o!fpusC|l4pPGU3kC*jXe>wVpi8}nN=O5Mo zPn{Z>fRTF(WtwG^csK(T@68rY|K_gY<1|scm>*VZ|iAG|x4Zk`e3{L;fHI&dA+EfA0am#n*T;_{;xJqW@eZ zd6PV1hqZ*O@j_Mj9P_j9DA1brtGiPsvx~?$7eD`y9DS1Bv4hqD3lge=d+R09lzuMj zcw#t0ZZSqe?R#$f_6H$?A3X6u%6Y)G=l`b{K@uC``N_uL=9#AG8%sB3g>;q$=GXuicxolAnu90PLxEF-*q@$$tB zaRj(I@!_(<;&UN7Wl3m{xE5x}=MqY^CrvTp`yyZNYc+9=SJxc>n*d*3V~KiZwyNqg zl(l2(`Et*hyzEu&vdqTQG0Ih^pboEDfc)sa-u9jnwaTnj)u--*^3nh;67~L@l1_no zKxsT+-t-vS)zVST%%_40<;*luK5yH9|5}Dv{U@10jhthnX$HRBhrwGjrq3CZOqHn> z(Tvun$GNtTmXOV*nTk0ajGr}-Es6$`Ocj&F6k}LZW(Vvnr=+DqAm znD8R019_;VEvpx6!7_OwvYWbD3`IdRN6v1?6S!Tuk{#|(@6yUQvCB?w#UUN;wN?0%2C!q==( z>2kc+{oA&>cLGQP1+>OkW-SX##4}t#Gm`iCq@#r?O`*m84S^ml3ykR4VKx$q`aKU z*amBf^iYYia++CbJic!kY4L2{bjufU4IuZjf&E@83%#DqQb5O1S@j4n^}JeUWQriz zN?kS3eo0S(mVUE$X3Zx$$8REsd5r?)La%!`^dyh2aZRL2Pjo@)UrU|+r=*D^fYwqL zN+l9GWs!Q^uegx#oy~|?QQ0%YEPzDvIb|Sc{Q7pVt76?j&`%_;MhG%C_6`qI%`9)O zI=hQT3$7KEwd1go=Z2s84kT|O#;uYO)rv~5n_HTRs8y9^lxU*)kR^lWyW2o99JMvz zo7tB$Wg{91m7sVeth&L;zKmPCGJWvZ+IU7Jan5OGw2w5x8_bqc2nwQ&gQ=_mDp+Dv zsC%Jj;+vX=#J@f9=bvy+%^15bAf-@jX|-x2q2kG)a7GA)c#h%j;GXnnG9ADl~-gh%ArH+m$0Br4~sai%lujXn|+ioT#NIC+Vf) zdc*?K1WMaeeUjPr%b%kr<`U%=l?u6*0}-3?Nts!B+7{e^pc09D53xVJxRLlya-z@` zSy-1W3nYKW%4Xk*D?O{ud{$DTRN;r;JA|p0`}+sPTX#3l#s24nXI5}1QN)g~s4vD0 z>t&C=KiKwld#V>^!Vgv-LSZ6F3^5K=%~-(+6o?X5#=VVRg{n*?iLN1owQJbQ)$Lm{ z`4&s~dk1nmU+UpA(Lhq0#q(0xr}2M?Me52Rt8>#Ut)9aJ|>$ivqhJj7_r{UL?>$ca{KPq^jw}k z>3CUui>&4>-{rxkt9IRFFkJjcD$jpFXf&NJP8T=}1t#<@U7A30`q<|Z!fs6vf5lX}oWs}d!I6Sq|3WI)h7a%`! zmanW)#auYn%c6RZsMwFFgnOv?B;QhDbs2lb7zQyOQ*85kw(7P$9=Ny>$%_?AaWnFy z$B(FPagmOW`h57vdC(1JWpvc$>e&%XHbC5iR%&~0Dpfd)zP`XcTlI5_Q`#^qt>83; z4f`wCVhchEo9xIFz_g&d(Qa~c;m9ybl7=p)#3#DJHIo610#bd1J-O5r8Z9BMD)AdYuwrM=d7N~q_ zF^yMNZ$rZvqtk;&`MgvhU6vEeid+G?X`RuLA&doYkC4Lp=Xa?LaYFJ~F6dh^H9(Kq zyX6pCPXg^Iz5YWDrQO!^X{c_P``~Z3G_RrEkTPjxcE-F$>aw`?5V}~svefg0Y!)v) z_IM`qjGTLm)!y<*U)KrKmUksg1R#*0VY?$ zG$D&s!9m`jKmrn;viZIx`y%BHsRv^qC^i?v#NDcV_>Nr4V7E2_yBVi#q%B1{QFpBw zTQWqOiBEbdEPW@Rx)^)UM@|`!THQ>_JQlYJO+t??gsv@0_(YPKuHMOu4dOh?d%)z9 z?nQqZqus}PSXNMBfQp{9FH_%0z%a~7&|qa<)|!rUC%!h+j5mYbIWQD@uyQ|fN_fTq zETJn@xZ{{l4(nzTP07&}m<=Tw$9s%}Mx=_ReXgkVZInM%#>}fE$`a?_DrpQcny6iuVl<=ifx}+&LKCf zUas53Ny5yMjMdl`&_tds=L5TehQ?9!8kOReNfqa!PBdI+{J3S53+9PY`Z6q*!`i>V z2**=q_^n)ngwJCp`?FzSC}74*fmtC1Ky;*VBk342YZKjtCUqmKa|TeP6X>#+_06nA z^B$Al-%P=a+j3Q{yV`0Av=mz7x{??bQ8uxSR&|*vw1B$PCDI>9Y2hpZOT7VYV=8?# z+E>B+di?q8F51E9C?hjn#QeN|n1N$HyOT9uyk6E;$_H}Q_oiLlFy%X3)vsT)_UGOj zy6UVBcF!N=<2Xi`c}-YIa@4Ob{p1M_$=vnKQOcH%AI4!omkD>J4aH`5OON^5K2R`* zA!u6SuyS8AU%5FQ$%)VWE-PN3_7piW1_}Yz%*AaHse_fPJ)(}z!dMC8h#`mqYTvi1 z)#b6H;#c@SquMqRQmM#Yv&Z{YcF7gkGjvEjm`Fq?e!Q82cFtNBC+o7|)KiJtxXN2g z;kQtz7lh@Q&_ssM(9kluw8eNR0Tt|G^gM{btQzz;4{|q=%VpW?&6ICgSjI}cdM)F% zwbJw!lLzBG(hYcir42bv^+I!2IE}C4JY;k`V06sF9WBkt+)dxqu9a8eG6Q(PSa6=g*;^afJ1{2CCQvDBQcf@)_u zOd*B<#HS_4`ttf=e{{SuZrCs76#42^j)g2q;f z>XI^K6?93vJszJoW@UCms)HH|Ot)2(HwFttJ_yQllfvFEFs9boUv&Fh^$Muh_kzhz zs`bR)x|k0+w1e$XiLR*^;H!a~EIs84Z&KcBUk$KXTgd`gn3b(s%%v)R|+hZQ)z~| zlB&}<%Lq;}2xp~HO0LR^bxokw$tLCOoVn$g<76J@_(4+7+I;sI3){3`il zTZXNRVJa~pCo@F#wlNcXF5`u${jB~rpH*%7-;z}q7`Zwkj6oH9*x%zkwQrb&`)&}2H?3cpQ3SzEtMCE=T`>m30_A|q9a5js6fHRo&@IOI@r1TEF>0EM=k zB&>EW8zw4}Z2#0z)U6xsWSTdCIJjM`TSzl&d1w|#jWzGlNYQb!N%^*E1sodh22Vy9>HRo0o0Ge>5lnJP_{ZJ;w zI6V?aimF~W?&lP2ZVZ4`&J01<3pQA2pcM#b#dpNht;)NjAs41XZ)^*z z6W?{@N&Y2KnfPIu7SOt%s}!pwPs=xUacRVo<5$U>K!o|zs#oVtVtHw{oVs*mjF)`4 zYmqu*zH(+92UUS6x;{ft1w^_p+3!bwjXHt6j-rt&3wz<c*DBu7L}KiNMLtfRNY$K=12e_kB*Yxns_67V)wAZE_#~L^Ym`Qx4rjLW?!p+dHDwM);}iaHwvm z%>G`wJq@wux?4gG(Bc5(Wi0>AwJ!m(*V%OFiy}#V=sbpciWkx=$a6C^lz0K9Q1iJm z)`sFf)OfK8(f+oiF&3mki9|IA*QG17#wxqSaWv5+Kz1)0%qcWN)6?>#naS*MGzStX zv+PP4bHD{Pddk%)`Kh{9O-Y?0fFxr5oZgWk78cg(_F~7OYLR$HFLEOL?dT$d!YPbSA`I5W`Pyd7rHsSMA&|}S-Jr* zwz8&HFZlSgH#BxA4eUC2A(;-triMdt%f_zImOyS<+tFCopBf-!_NAumR~#Xu1CYTdxy8lm5sMlZm(OrMgxo-(OS`7radwPlV|21`Pk%@jyiC__ogs0yvMy3|%3da{^b(^fI3sWb|< zQao7x%BAZ2u$-@2X0H}iKAloLna7Z`40gIdZO+cPQZ^|mN=m&>2K*&7qFUS~+fUe> z!wgSdDoD>Ph*tGz;~`f?1OiEoDOvTM!>ECEaRp(DTfT#aoKQ z)Y`!=26L2pHe?nu4@;cVn`I)1DlirL@aBeRR~w&3`5BL5BfAb8&<|? zS{)eMJT;Mi43P{fXk-jF^+_z4w5lMZ|^_HH&3D9ok77a60j} z;94Z=rl8^LusiMPoU$cfh)K_1D)deMjw4z1i3to_pVwZAF-Gi6Vbi^PS7GH0WPmuh zOQx}+mxzR$DFRs2C|_GNiL)?{oZ`+jl>%Lrf0_z+*h_#urI#|c-X42x?FgI<5GfnV zBC{hwd{Gf&!Q7J~JPGxFsrG#Up;h&s3#P4GiByBhbLs^L$;}WHpPGnr0zq1l4@AR- znK(1(gCHhIa-*=JOHNp6XRf?7>E0Jq@3zwvtzUX7L*}6iat3TEzq!~gmtHhW>L*~P zQmuwA>v758TA#)zv``c!J9~TZqG+q=YsDqx0J?oLF=?OWH4)hmyF&I3=tn8VR*qoM z^hCw{^T`ZUiciJ-yG@(}zm$^rJaI_MpP*%_wLn^HrAheg@+k|aY|qGzwQs}GPGY_?IO-5kZnpqQIWZxoXF02Nr5jyP7!@F4%G8m?qj7_SbD45yenL@ zBl!in_J%~A#7bMMn$TLNW+x2cfb#}_#)v7gi>=q;2tcBR*;&SfXoL@a zG5K-A971ECgK6XoX+tNg`;1jpXu*PfD*1zR$f&EW2SS_kgZ5?M1&K{xizX$wT5fWT zcT@2^0nNdAsSPch@$2Gc>`qQXQbw8=<4Vqj-e<)6Jxr&!{xsV`Y|iyeLbwjGKLVw2 zD(yIb?YF7u=}C)CKbM+dQw_tno1cZ4*6I!BC7lCtG?es_k8NO_Was27UF7 z!ZxhlZsZdWVxTS zxGoW&o<7W_2p?G?uw!JN(+-!kA zpJUAvo0t(yKf+th-7d?iFoHK3G6JX`la7)p00Zh7%o0da%G6bhGvS-#6&*Bvv71rn z%JFbTE(GKt=Q(YR7)|dzEviRR+RQutpLPa^>aApg{w9gu3>b*dJJ$XiOniG$!_Jw&ziA`-&@En0sBJ?Dig_`jA?KIrT3a7| z7Ik_SSFT~ZqW?L{AB1g=v}=C%Z>it~>9{tf_+lb$MIR13c4y)RX|hj}$^^Rk(|MBx z44+3EkE}|t+0YpKooc33Yp-k)y{)rN`=b>g)`lp0Hp<$X!y`^I1DId>_OpwLfI3R? zgh2rM$d}_;vl%2{6>PW0GoJq0}=bjSg{ONZktWt2gjW? zCw}-XckI75s+{|2>XfhJ^$xKD|K?PC9xad2>A!;Bww6eMRUav!Tzu( z-s3rjswx5kTAf%7MkpoiuH`wu${vcd*T=RvraOkPBs;iZWltNZ3DWr^!f{;#_~2(bGG#Zw>uUz^dh%0qQXzu;D| zZz_55DdkT-S17n|{-;PYG%B=X_sOpIO0MD?m)914{dEIPNJz3L)wf%;} z_*MAoLA>*Q&a6$~4+pHYh!Rqg{af=DmxRZIU?v-D@z(*ZBKLUL^M z>w<3w44vQaXqMX=9XZiy{ zkI7!Rf=`6qQI^IjUYm3=be=Tz2Vvj8^Ik{yHXRI-ITN#nWxOiwHQI z)N_uOqDo0j;5^J`Y3OkN$(e`HcA-IwRleHDK5A(g2Y7 z7%rxJV2Bzcp-f^tSe8VwN};-&gr=%E;#;{0BF!_A(0b6Obk{8)bk}X&ZDfGE_1HQC zdpGuQi~SU=2CR3+J1DQ{`c0IdsySkx3{xN*?0eDdd9fjU#ZF513fKD!vCPxYD0uN| zyX$IghwH^ePR{kxGxfTSH=Fgit(B*r5@|IgYr%Y8KlLnjZ%JvvttA~c-3I_;B{t{2 zJyd}4YAzvzRMo21^9*zy?$;qG;3ttwV7>GA0(vW#ny0IaCF;X)WhkHREg5_}l47ZA zXZ=>mx=67Uq|5VMs(H#omF=mU`8)H?Q~pB-COe) zk2rgf$s4qzy7|)s;z6d(h3L^!!(1*JYtQ084eZyAN1k(#W2 z0w_jwN(m(A>WKAU>e!*P2^6S~ogQV*GgkM`ZGtd>#b3%}#}$6|8cNmut{&ESb9OsC zxe<7pUA|1U7N3E>8%HA-|BQlDmd4f*(;jyIppA*i^g%8{({rd#UW0D9AgGl7ky>JB zMLm043>$A5rl@@8|;?g>rKEb2f2=8layD7>ogvn zr;-irC9WVI zca0;iL37RZh?Ca$Rko0I&`f*Ov)VqUm`-_#OpdpUQu*vCm1GH$_Xpu5((0?a>x~rM z>))%fIyPUNet8}$(vM43XS0yCQo-;OEE}Iy`?Z`5njA*U3>b+zXv(Q{`ZQ>4JS!c16St(xDAGn~?OXO?iK6OpK? zg?Xdf>=D0H{3)pQ3MA2>XWISSf(^p#aFeb#G@;t{L#9+^V<V1sdbjo+&xZ(3yFpE|qExTJHNzoO^eJ^xnM(p50scJTF>4+t7?0Ye8FYp4O zduf(XV%BBCklVqK^DG^72fLFnv!UzB!KpE)Z>9Py%fqr4r5QX>U!6?_n3Bc|Ma4s> zj}6z;XC;BM#va^QHG8D>K#%%9b9K9y78p(3q=>)H&k>Jx@m3!`3}Mj>*}Jf@Z1N3v zZkG|Ht5=vPuv3|$ER5?@?BNtkLJ?^j0cu8hfWmjp44~2WhQys>F$;&wadE>JFzH2B~s6c$fs0&Tk=3OsTnD!yrkD!4<(j) z`m6*{X}Bp(Eu0fER&^KpcWmPHMUSbu7hp&+A!V%JMy;vhfKp}?R#ZYFz&BYHJb`~| zQYSBJh_?~wnC4*V&Hb4ejkv*%M;3jcOKE!8|5eb!TTgq#99>*PnwhK~0RAGmWj!YDSjDZQ`M%Vw*J`x zR?Y^Um@-RRQ{+kWT&m8vDyXR5v{{pE+d#@mrYh)bZ6L=|3%G{LPQ1N;Kdj~>xDKDrQ_qVZJ zw4@*F9Ep;g-{@3g90o}eO-M2)3s17b_l}muwo&P%j6@SHRF?4zXou4t9$nh7gOcqv zTm&9?wBT1|`pqp>nr#Z+6M<`q(4i{{k_@6Wp@}yz zw=I`Mc5U^|Ex)=~PN$FnKeP;*0H;c6|F;0mZ@ftv;4d9w>VL<3ZI zF!4J>XknB)bV;+ar*)}8S#N_FkTP|na_%_?E<;(6J!4j`N^|HJQ_5zf>DPC3HDFN%XPr-0`h_P>IGJ#nSq;jLTc{f7X zuWPtJ9h+T9sJC@fmcM!t3Le&t6e3`u;RU2BtIY}BkUXT3=7F8b^l!d>gC2)AUic=V8A}5wX>Ct zgAOxf_0~GSxkTpWOCx;qo%}s`ckmPjWfewnJ`>9PlSP6jq;`tYwRQbUnLI?Y|JF2) zGYi)_`h{FL@hlez%w*F@vhb+I4hbK&mNI(%rqJADmICDzn@{zt#ra;FiD7-OHJEr) z+heTAkNczhVDZ0Q`G3fI6L_|^uW!7+-cH)mnib`eM1r6+l$xF*2!aG5#w&)Jm8zM( zZA~#}Fi$rzkF8K+>8%P9HPfQ1hA3KEO;wfFeNXRw-sgS)pMRXs$&r)nv-aNW?7j9{ z-}OCP%L|M$|4{&?m0KC5ZkeKxi3xuwUq=Dd34$E2{N{>wY0<{rvr zUa{A*bhNkpSFBNoo(gEa{Bzs~xZVu4yVUxZ4y^w&FWYBhbK%uO-`J^=HV7{-PFI9b z(hF$BN1aEj=GFHPDlglp3N|M4=>L{xEb5#1#Cr7PtHfaz%Y-rw+@oJ*p;7-wmzKW) z9mjQEQ=(icxz4ukgyw=Oepzbak>)YO!jlb;-VDN#mH-Fp?Hz9M9T1NVU{6{NSSpw$ z72cV6unu>A)Hy8LYMEk=9Tt$nB+oPQZnOVUiyc4_!w=8DhERH|C3MvZcH?XoZ^a+q zze$-_(!*1FkgW%b^3bIa-=Lwu-~KaCH*Gb^e4^~?(9`qZnm*uAKMDu|^d(F&*P(o;%(IP0 zPY$2!238+`HsMi|y$Rc{SlbO3`3W9B{0gVYa^jM_BKua)%gA5i=Zb0(_SSiP;{^VZ z3x;ZTH_a5!L{Bm--yB|`@jA?eHNU`cxzt)mg;2tCS9~kl!s&MI+4Tia5uYeEvrc5xpGgyp}fjuZ(>WEt}M7<4qp;)2 zqa4Ly;r)%i7@R}>P#1l{g%th}?!2r7x8(LG=j8s6+VzM5S{eFFys)-B@Ou4Qzd>;} zBe+kxy=ZnwI+ybS@0qLg8k>bde;k1JJ*5^ zKuXGEPCGhIcKGPG4`zOZ4Ol`O_o2Ej{6)lHU))g>oQ!^Z|Mm?=T5et1Y&lB zWm>Jup?T`m%MI%i6d_!Qo#cG8g4?1u!b~pL2a%yx2o0DlkUa5SCRr?qfy$4M8`Bky zYAlc=D=j7xwXK2cB~n?O-Mi58@6gLy4T|=j%hj68^UYfaA`&+% zk`s3jue74wN>i5S8D=HkkBT_E**m?b>S6U^<`>Mm-=lg@CUT=qBhg_Zh2Z^y~wh3G`W(^H+X z*`Bg$1b!Mb1F?87&7W00V!O_ zn!t7(KW-x^9T{?z+VxP0>tSK8;4NJiay`yz4UxSnXtpzSW6^=piMy3|Pbcqj;sW9G zbhm|;W4Qq06D*wWG6rtfGz>o=Y|g%{%oPf65y5?cDSDPDzJLDF80x>-=QNkPiSwOc zi#I$vBoTp`X6{PC{4ik#wN;x{9|o^FHDF8^y2KDSL@ z?duv&Ux7q?G<}|z*%>rYLbjC~Z+4oU#9@N5-~{HjdxT&bd3Ki*9lDWq=D{RO5f6A) z*4Fq|;vPOci>oPCHjMTt6%9#yJ(IkUZux2|@mboKkv2weJy$wZRonHJogn`LAdk_^ z0BLh*cWokho&fa1A%^&d8U>j@xH4lzY4;Xt%gZ1C z++OSdubf8Rt|7RMqMEgY_r?m3w-+&h9z`uHZQbG2FL{Ath~4Q{g_yNu!Sejacx^3ALdSR)P<45`igiqZ zT*n$4W7zLH((aYsx93^1QF(_$gV( z`z>bpSC9gfT%FXsk=04Tb;QDpsJucMw#K{Y#G*?9BGhw{cdpJs-+%8w#0uO6$#oYuEU;UbB)D%UuHOYO{Z%zQT`stIDxO23I59Mes(!MPnBNoTZ zAo6&Amp;0Yp#EZ5GdjvL66Z$ z*RzmR=gVyjQ(2HrMaq(Zc;~MO=dT0JqX`0GltJ%ulKr%h2L^p1y9f+l`dM)qCHAHt z`BzIU=erateyQW4xPK$S7`-dsDyMGhzwW8ke5@j-(|PGyX0(J zCXb9Ak#Ea3aQ@l`QH%Dul@o!wgHQu%(YidU@F}>t(l1dSHSaad!RE1mIItL6b9NU8 zkQZW6XR+UfFtDaPrC}g;);i%LN-VzV++Vww={ z_P^onjlNWkUKrX4nE82pB!q(VH3WD-bp+m!mSPyjR0w`J9F@%vE=2J0YrFQL3ek|O z$8A5T)Zo7I@Z+qioQc2!UakLUouam=p*Vp>2V&k;b1uBQ@JYIr9=`zA4gmJQDTXKb zgH_>;w@@Mh{lgWv3ynFwOjQ?ZlX+^r;j8$;>Ms3NxAzf>r*t zR0gdUGy{GqN&_(UZ)RV|{(TII^a7r#Qh|lhNiK+|U5e@h(YQM~UPzE_{M{a$jr_V7 z4KX6HkFZ+WUElF3dq%%|il}m0^6-QDGw{5xz#tRw@TabF-Qz4pRQ&h!%Kw9ICtf$! zpEMA2ZIWy_(BAckny{e%gBPH(y#P?Wg#!=IH0`&;L_mV z$Gn@ipe7H$-nD#hq(9#nVU%@f!^6$`VSWsN9tgN?JM5<%wZ9K(yMLwk{_W`Ixvvh< z3%7o60|^V8AINo8UZ3N8>mnC2Nq>91k0NqbNcM@4v9zudXWfd-H^Z6qEO&d{R7j)4 zn%g>!JPU|y77bbG=;25@^YjF??cL)ryvGqSWPGKfmU1A;vrqf`7=yNAawPB+c%=7@ zyA0YpBfSU5rQqqHlNh_4n}j&gkLI*4oXa65M}Ug=7B~#WAkOlH&3RlRvUsME2uFza z>jkgfIj=)L-?KQkt}fe#)alFataecID6yfp(k%;SKsFT@}S_o@+N6q*c#xc za_xIRJuu8B$S* zubaJLSi@J91W3xvcvT^d1;VJn%ov_IJllUw!7@9_&%L*8%ckf5nLTf`+*5AR%d57J zczVCUVzp6jf5YOJhboWt%Te{O$EtV+d+AcHqJ^&>TKKPp@oE{%o3#+OhyphQ1Hf~3 zt=fSW#(RBrU)2Aqhs#G7=_2@GOR7n=G-s9*_q;nb|PCVbhaey}8HG$B43c`kZ;8!*bKYEwApL z@Om#Z(M*&OVwervHG7p=fgd*cS=~SDPZ}*~oZVgvKytYC2)dfHZ2u?S>{-(igk0f935IWSDEzQd zD5DF&djcEyF@LH&lq}_Y2k6D|dRFT4UB4@~j@>@F@IN8`sHlV$Kt`m#z!iemUrD!egoYpflyjn|tTRsoNF^1%2!4aGNIFEhDsjukqACqy;f{yg0U zd4A=PqB3*o5S1Q!2unlU)?gv!b#0`@)|9MtVw9L;N*dJ!mlJ6ZH)#LJ2Il zyw`hb=<`d4_ctH|9~#Hw3uwkjm>(Q~+vY+i^d^YsWfj6XawmL zQt~+gO6@|zt?~e_1*BfZsM0pN6Qyq7Ewi=?89$H;2L&aT-D8*VRFD6XYW_Cl8ONCi zs>r5tCQ2ry%;y920Ph4qE( z1JEm5KX`e@2)c*6N^z9cnSC?#@bWpj^VO3$89glg!cnl;2V0b0c$bgPF}HjNb2HqRGsIe_)C@L*cG#k%Qj&n zcm7&4ZgB(@MoA>m9vIiM6A);k(?<5Ntem`fuI&(Yf!VBO<3$Q@VGOf%VuCBfZa;g@ zPJ?#~$SVz||KJOUS|nty5!gP?B&XSA@J6D?J^`f8&L?}LL!&RvZ}@&>JCWyZUTcdjzrbf6uAb9CnI(b*qZr!t zzkkQGKANPzl6t*~H?viwl%Le(sw%SpBwy0IU=b1m zEAdWXT{muZ|GCvq=>ZGh5W%M{y6ZHDeS1ThS{$-HhT{IkX5YplF|19Mzl(?lvI?x zu|ng}8q{<~&bgwtG`BYXL@gH4WW4E_Zgu|oGF@j4iX=r1CT{l@(Fbe<8VWAqeFBO< zc#)0bEs!xl#sz`L3-)>%kK%N#&G+}S6mCwj$&oEi9M`L*xj2iRFWC~8s zz|p%5nHnSF2p(uiE$4T9vU3>PVs8O0`6_b(cBn>_dv&^I;(cjNGk?QNe17;8-XqYES}g_xHU>k~|XC6{HtM;oVwX(wbj^oFOojf*YEHzfP*EtVA`qi>?O+Q;z%~hy!xCK1zWG{v}DzI%b`;?Nv+Mb8M6y`p^1?nkStu_7)=&z(qQH9FZZYUw&&1S^f^=C5iRC2 zvpwyUFgX`58LygV(|(S>5^rMy*g%~Uciw*~y(j-mkpwCzy4m@H^p3emp!LI{Rxz@@ zX@M?DWQoui@-juG_2A|$0I;c{G1^bKrQ085gD7+}3w7pYafj(wy(PaYr*0UE+N~KH zu#@?p0jXyZK-%TnHM1c?Z6F!nI8Za-2xLxr)Q{8*QzpNNMBkPX_3Mumn0=G~roz#g zyiP8#@Bx4sr}m%$&$nC`5_D&iTuCb|#?@xTAo=p}1Je~GLi59$PP!G4W*q3?@)S5xoR&NNa1z-j}s>L|I`4dWiMLge9f9a~ zu-!sAtXtfsfJBwgt6Q7DF4I-QyPlPmq1R9__Z|IsNaD{K`!tIo*S$c-zlGDX)*M;vJ z{dNMsaZ$NU=$;&k`MTmBp^dc?B<~exksJX`Z6FG}WoeBUucHEU=7ZIN*s7W$ zpFv9l+k%RtF?=vA)ynQ{h^Mw_2iFjn$!C|+^8o-Ex4t!Ucg{%Dkf|4^b0=~Bw4Jf1 zoWmpY{LkXL#`5i}a!Jf~2#r6pI)?{eF{wHC=XmtLoDPb8;!SBPRSy+JwQl_}g8W1+ z57bYuR=R5ON}B92{ZZ#)fBOFWtluQX!{UZ)ghouU>LRYzA2;$YbynP94QDWBt86@) zPE#S4$rkiv5r#8mDO1)oZSJb*9Wwhs++uekxmEP@M;$U9Jne^-L;vd;=Wru$1(8wuXj7QnGyY7RZWCm(vzV0vn-1 z!le|UYv9@mQGYqmJsnQtxy;UU2k@KL1oVyx&v(Rid7^q}7QlW`}6VDotrWu#~*aWzN9)(bqR8e}@L2V9oOY#Uq z;V40@l)yC?kw5f%!pt)h5N3|yNK$wz3#l{!37F32%)w0ubG7^yva}!_#J%+N`dMHg zc?Yf~Q6SoMe!o}uRq@Ie=G{W|_f$DEbe(jA4Io`e_uL{GYs;*>g{_xddQw_(0ec$2 z>1X}*Su{cQy0iGx<7I4h8FXxJ3q1+)xNvm|dsk|dI+#=d=dViI1RSFp9jeRzSe7uE zVnvX~Kt?&xOP|T&5MJd}Vfs~n!d9+0uj=-v5-fc1^e&OuuWY3qW2I1TuB>I2{f<9n zsZ&&iq+44^AWWfTH3JI;g#IMScLrpf8P7Ol#%Oia|Lfs1+F72PdM7r;N8*Q5)=blZ z%xspxv-E-!tKx)e1#wk(8Yll{2qmr6z_HxpPOj`My@u9P)20newRK0zD-%Ns*%>D? zPrNfd;H&eV@KdYx=X=DIyz zSAR(}^i_nUiA#P;FbRr=(X% zI<&aR+{10@tNy8uUJS+~1|YHLHt(aHLa3kQZQ}tU zToJ#H4^uQ~?tyLyRKl2MYNezB4(WUlJ+o`|m^7-x;bgCQq;<*GD}<~2EXtCjG^>Yp z=2v0rwpaO3I! zg$^?dV7@Ly>ys3YG95xlIwIX@6}BY4+rkK zKNtVT-YiV3Em@9BXCV0urr9K{5Wnk`+r)%nD#9pNfPQO=9EMyon8Rc?T`QbRHHgSP zAOB&)@1^fo6Vf`2*WN7foN(SH@^c^Bt*hqsG~+ITHi-F~?5@18k=emv_6F!3xV%() z@&nbltNNCMiHPW6)}~+*`D&BVcFd;zZmZP=EIkr?pC#hN!L|r&;|93kxo=|^~)Nt48RD9v-&6Q~W@1D1&O->B%?%dp5<&I7L z*H8G#-SJ;h{5u`UQnHBnzd0X3@=D#mnJH32_=8C4YT`j;+5ha)jw`ZgQt4L4vd;~l zrRkm_B><8~Bb|RJj!qpr^`8^}`R(}0~qv&V&MDkvKzK&nPvWf?ppP_GM4Ge8Ploa4URo=8l}tJYUhk1xE?!5T%TgAAlPG zSlhpC*zjSh1yjQq`G*h&Skk{RDH0qdt{Z)!M@{H#l!jSdhnD=G51N4w0<1KkMf{d3 zv4pkpM{+=cz~wT2Wl&_EuLSU{WtC;~`X;~t?0hZZJu(;XsRLgZ2FGU!ZcA4IXV9w4 zC@I@41*2OK(C(Bz`s(f%sq?Sua)`h>8s4EfOfL8b%he6ogOg1D{t#6e+BW8nr<2(T zioVe-7C+M#|LQPzk1?R?g+n}A4esf1{moX{vOv?E&r72=Oe=LL{Mpvox_M3noyFf` zV-%uy>D_I^FuA#aW;Gy9)q33})i+CG<4XnHbf)FSJ)Qw)rH=QN@ui}zWR{F9p!RJD z)f$?wr-z#s3SXI1BA#K2`~|WyvlnGZt&vSE`q+LmV)1V}N?+pGir;=AJOxO%*4 zUuKGiX3KGP3CY&NlDWiGk3USL5Z#c|r>2}~jQkwWnZnyZm|=460%3Oe$Ji#Hy3y|( z=I~OFb9N}DitWQ$*Rw=jUnBR2s$ZvHoGxOMw?Zo1A72XmEG<=fp_NQ9vSu{C1%=y- z*wyo20=v#;X!sZrhs*DRV zRFOGq%_f)h#^+8^JAZFwCknmEFF8k5KBJwbtz$A+eQ*0xMZ@+@D@Do%`YpJY2VY47 zC^vF)im7bE-^V~LT$80ksG9`nqrvdSG)|Pufyi|)UWXO1`O~>r&*b(C)ol&dUOLU9 z97Dksqes-7{*YhyOk>(FiHac5fOcELtzlnqFY0TQvE;?)mQx_%I-+ANPl#t=?pDr2 z64c%U-Frz)$NJPo^hQ%C(!rGXOV|rTKa!PM+*4KmD{MdIH^A^f1&dnACBlI zWC&?GkbFhbX1}y*T+7Ktm5DO+IIcF%XP)Hx0S5Dz9hXm=IUa7!hO7%g;v#~S3J6^% z#WU0;_k~}t8hVgs?&i_AGJ)@@_m*zHsfBrG`UR{%Qf?l~h;28H?K73!doZSGJ#aZYjf)RRm6It9-%^)7d)crU975YUq;;D-4X6Dr5SqTU;J!o z(`=KDY*RyC6xeq;3)~Rm-)f_f+$rB_OQ^I0d25Y}vK|Tt%jE#} z);Y805!RyJKp4&+sEYSmKsydf!0ziK9OKAVHdjih%J9$92Ua)lyA}O?>{9Q=#i|q~ zOqH|!nLxeqNs|@q6;9U}(8lr7v#J)a%mD2A3{kxxzMw522vk0}B&uxFcn z_CK=(LcTE(gl7>_1z_DRdNTFOr(76h!Xmv;Zr{|BsCIE>pvJ1NL{#X~9HAKA|jN39t}zqi&23bwt7zg22}))0OD=KXEXqUHH&sN3=TNZH8n zlCuI$36&8>K`ISDtN@MP@|-O|)35DVv>5tWdsEC0u5a`Bg(a;@Z@nr4?H7)C6z$9C zA0&efLWEYhfy&&-W=kTW$2m;?y_Ki#P`$i3M%{uqim?pExXGpiWUgUWyeq735yAb- z#>loU6ayehyEz6u?yGn1;!5kBaUu?!_bgEirfZpa5T!6}^`GTuQ?1u(LhK#~`Z6xI zDWx@cd)jMoJ?VSMw<|-&1#0c8AD{2Ri$)dGU#mhYcZ_{gvb>?1!9T>path~^36YTg zQj0*D734*?jC{-0Q9A}iN^y1S*`4FTu&aFCMzyK@!ZKJDIVfGJ_wA)>fAA!dKEsC= z=QxRxeI|9yIpHIrBfwbVg(v*r-wFu$3ym@@h4vS`Lz-=U`J;;y!IcN6>^L?vv!J3; zU<{g9t|l^|1U4xRd+rc?!Fgsv(ix8Oq1s7Zp00eLa&OSkC-3q0B)~!oxUKF`y{uqd z*8EP;Dd#Hv|(nnpGo zw|vjOI&pf!D7yI#d7phbQ>jpF6_4sD906hy-fjM5IHRBG76bZdTy5A!M7})*ZP$UT zE4!KIsyC_%NpLbn=+>rf*JLz?ML-)r@YNgD9z+A@^ItBgVjArYR5kmiev*!*i(j&g;nYtr2E2bx^JwI z`=RMt%6quE8QtQRMXwVqc_oKDU}qX(n|1#~`ESC;2qxmyZ`;kc#leq5)0H)^_eZt+ z#LB$(^m}oQ`KwF&?(h?^bZlCxj8p)|oNg!-SkY@-m|IM{d!k!jJIbVa6bCo*$NO4D zVmzPdk3WL!MhS?V-it4ht~?r>f-EF1?;H&#Kad)UR9uQ|pPZ9=X&qZQ@Ch>hZW>X} zqbMb7EYP6q=Gl3NS|Xk(XL!!0il8egt8CtkzF_wK`nE_NYd$P2c8B1XVB5!I8J?DaEmoOS{yD@`lHE=7?1D6goOdv5ln3Y~#9hD$-t9!4C{I1@) z*7<$V7(8MpU9XX1^eF5P`L|K-&#^5-0k`fi=Op!>Oo`e^cw9K+l1D*j3htAtg<~@X zz8e|@hPk9Vf#zq43ZBZ^10~7>_Th-ewX@(yTn)91fn{Da0c)I83SwypfNwCSG7@&(I|U zG>MM;QkAovo_V9#{ixnOwHMxJ%~qkg@o zHX`qnxmyW$wBy9;uBN&P=brt+ug79Cu*0W$M-7==k4l;S`h6*#23OFQtL$+<^ZTii z);oV5onD^$E_I@up|_UfNeLpQ))@<5vv6Gcs8b5MY{i#dBN11%rM7ZSsml(N0wKv5w~JMvjE5!37xRGziJ~f zeZxtcbfRuhZY~P{67`O5hA?E{Za|7_L;cX6J)JIA^j&gkdn` zG zp0&K-#{B$|uYE#qxG$poOw%RS#BJ`#V$2X}7|9@cT2(ia)K3;oIm%L12MpQ5O~yu< zDqFMb4;St4a&=~y@8A*}m+S}W48S=A@TDoLO22d5u!|LWwHy9$Bh-JLzWucPKUJIg z*|lk;JX*hC<`msHFV&TW|Cu;iot9^>8^g_@?8qqCv>+Uz@3~b)e*Vyt0 z0)+;F;uP0q<~47y3$I4qkZ)=|0M(9DU2gN4oB`%FA=Mb{a0C4#jQdy{BL3WegSw7r z_>meA8=mPoG>9S!Lj%%z1~P&Q=;@GK`p z7fmkHLQa9D#;3rLG?7&fT8obiCnmPVEi9%+~`*d`j<{08{3W&;ZcxC4p@ zGCp@nv*}bX-pQuQQZ5Op&X5&#uOgQOfD&X1y=2RT&0SC}Amsq`m`hwK~_r{#&tpfptP<#^)kr(6o^j2IfaV7v4Ctk*0K z$&lYye2x%e5DuRg2~rM`?W9SAjV4x9vMllV#MdkX^u!roxe}Wz^h#e!U&uyF%QII# zXo2*D{?>W#^I^|n=^Mz^A_9LdO(%rB(rBxz0v_=3sMCVeiHxn@8nL$_isk_=h5b8d!RLlzUggv}Mi zSN--#_X+nc{H@??+%I`I|2mwjojHpRGZYwjnWlG=N)jTsnaCk@Q*EI!Qo$l9%+FHK zJP~)&cFN%XE(iYP__wDOh^;#{wSEle-F@TV>Xp;cnyHVMgUltPWNRrYNk~#D*@4L1a!HeKAk&muM$hQOV~=*$}~xL2&`=|+=;@O)!FcH)xBG8vbGel{ie*t40uEVe_f(yZwsIQX|Y z3jhSr<5dd{r4Vz{z*~=Wn=KoRZA)PDz@aQTM&={lMpMaao|bR9)PiM`@bpwgIff54 zaw#sIR@D+0;6n6*5HdU&K?f@76v@P{vl?k_3-cezaR3i=;^ALCH;MDr{(WsFjU8s?h}CN zVS#eT?Ud*!N&{Bc4Nb#N-gu96^Da>4KV$E$u$IQ#>##)D)U?Qz-IrYF8f(Did@2fc z7>Ev!!n?;`>F-3LwSigi$|{$&>yYz=lu~E$SFC#1;yWDrrn;4eCNU$VIb2>mjm0}D z@g#fE^5w=F{FRof*R@fAhsdgjDvzjfZie7+mPwyr{O!*!A=0CuhJ@J^*|2g$wrp6` zQ+fW$IlG-3b7ygWl)Z9Md(qA1<<5GMvm!#l3GO{&YHmxRtM_c2bEzGwShI=ccgu=~ z{gjn~EowvmT~Z>^!nvWQKSDO$c7BOFrX*vm$O*moP9-6Vp|kpe)MOFZV!o9cF+6u6 z6rKmO_VfVgOBB)b-jb~?qsggM z6Z7^VTJ^O>rXWg4ec*N=YT`3_qtCg`Kv|{fe8hL0IYAI2Hvy-|@`L7fphn^|ETWQ* zVD3Y!vP0Wg>U!CQCodg7>=4jh#v)RQfV-$rD?KRcCnVy(GB$<6PrjRk8M&Z=$w;hW+@HexBeDLcsn{5aUPN%4li zk4?(*QZo7{SLa7$s$Tu(md(t&Y9^;Fe&4lJ6v=zBau#4v=wR9v7JZ2qBxjfFUAYn||?vZLnAs#=&S2 znTTfZ61A=Lj6iW#xcf-ILmI%FC-c1dg^$nk;<8iKQp^+`M;wb#+bxq-JHrFud$2P@ zd%bP&B}?aXuUtyhK1@_WjJjj46j|HKebq8$)*GUCl8{rXaSyhPOb5ni%u?z}k}3>M zUp*d0M7i{XQ+|A9LqlQ{Pp%bSS*aXjtHwmZI>N8=O!Kd}xfb7vkMCx&8c`jOo(f$FxSHBPH&{h>Kowxp+61Nj5Zy(jA6X9Et-OPxMbD=uW!Phhq9> z{_RZJ=GNqtUY?cfiw6tY#EW=9ARj{>aFG~fYk_Gm6&1P(g5N$*#a>xQgas? zm#ZBtXP1^<6BmH=@|L>%bckC%BaoSApiuZZaYofS(cDDSPsqJh!-VwEi zP;4lR5eihs(`BFkuSY9BiMu+QapE$&FvE?SpM04x6ud}Kh2ym&)7*PPrh=X3a`xf@ z!f=DTyc>1PMciiVep7nHt7@K(U9HY=IAs@62fbg(mV`(?y7e}|JP4MKeoPhasV_-+ zmRyiR+f%u)Ow+@xxQh`UOC`1q4_D#6>2Sj}9;}3f0+SJ(QBR{Qa_$F{P)!pV2#)-e z&T}Vqwb$~6c#A4uZ_15|NgrdXuPJqM`K*m6z}SPSrFCy-$e5`bw`y%aSV?1l`3KDT zFQgOR3$tJhFIg$V`*Vh;tq>dCT0*^F7<*CHK^vCsi2Ria;^LY}Kl!z&!TP!axKQ+b z+7ETHVpemsu&0jB`jp8ggv(sYIZRxly(SS)0&||IPpE0&lZG~pFm9-6&|b9x&PPW6 zhV^If37R-RO&nudSrTyD)CN6yaZ`L!q8X)};Y}ajwV{~-&o_o!B_5t*4|_4@0^0n% ztM{DL&9`P$T5Nkqu!sL1+8nCuGZt-sr6ib7v^l9?XfOk>AseT5nTM3xEQr$66>1#+bBj`YmJqnEZWSO?;g7wf=gKkR37;tx z*p!mv0Z(3`1qzksQgXnn0?vT{qDNz%Zp+WLB3om1>OB&UPA6aE0{*)5*)-4%DPeIl0AU7e z=tNvK7c$1s3LPjw%xo9l^1^^@Ii>+E%mN~Yf+Hq{z~V6gZ91Lt-&?CZQ;ML|FJGys zGp%FfFGP~Bs`r#CaQJL5Pm2{o5L@(LKVzxu&+a-+N)RWE|9r2)0HZq7en0Xoj z)+2wG8mT_OS1w?CFq`Xu3O8FI#-91Cw86FbP1NS}-!WZpB{ z)5}=eGbC(BKk}`~=-Yd(8A1D(>-`yOl*EdVKm>%c$y zEu+~S4w)Z;|i4(q3W^+ZJ&EftB>? zD%ZC6g*wLKpFygmgHgGsmm8V(`OYl0_wQpzz^`I+WP38BZ&c!o0jQLQ=6tdXD8T9cz845b&=s4y_16V3RfKCgH2jVfZc zkdW$yvnvsDwZ6y9u)h@X!-)-MWQMRetoDng{SdY8TpvFe76)q)#?lT&g75Vh?r}rc z#*A);PFk*MjMD}=M`w_J7zu!RC-6u96I+x0rXJsKC1tQU()ST`IbV=rp%wYHusxV; zSP^?xuFhG!o;D0tx7x4u62KcpnLvNw&UciLx_~2uAeQN{&Z`1CQ#$=K)?CbtKqOkS zNvx=zR(Q=3?CuX_|ACz3I-3%LmxY)ROP&wH~t0EsT9V(}VZcb2T9)tLUMcIkn>bNfrS4Gq}YObrl3qEsI!_g)~WU2))i@h<9>t z=I?y=)-uw}a}Z=@cg=}$Ct4{R5j2twMZYNxRHiYeX>)1HuBtZ4GcxsfH^azys1SX> z-Zbpt{$nHiUUo7abDQLqCp3$O)?P2e%$WViFMo~^^2%7JqRlnNRgD!Ci}%b)@!jei zc;C(*5fHhRD_RT{c8}XZ%1jT~J*vbwRigtUUv&9juX601UJWbP9I69%p1B2SltmN0 zxR5N9D8;2AI;Y3{aPgk;h#+VJcsEG`HbWZP(FSN|AJ0;}LRN*-&^pLdD6KN5R1FJ} z7&Mo9Bs#$HXA99Ij=KlBb2w+ zkMm=0MF)Q!SzbzTEa^>CNpDjuxO;#i7M?p833VW+ z{Igq==2&Q3DX!>~cr5t)Y$81tUbvmp-$n)ceJh5Ox;JXgE4k)t0nhl}%7tSOZ3&M6 zbPj^2^dfa0)3tHuqqGst#$3Z!oXT1;Y@9GH)dowwuZ2p7`Pq}*!vHJl%dYz-tU=Q> zJ|ht61aRtd^8R7gJ=6!b&jYDyRybXuCA`*4bEMm{--&J57ey-tdTA(klZwv?)^*GZ z+^#X2j{?lb|8MzwLgyz1DZ6Jb#BvF0t>+pYj6t{QiVnKX_Nq+B{fJf|l7>z@rVs@H z9P0?uN8Y+p6qF0T$2EdyH4zyfr-$mDIJu$8fMtXlH*WL_;fItutpgN%68rd^A+Q)= zKZza?YYoQaNmI8!w=V6psyPk%-%Tw$96?}VrtX1kB-R^|%{Y=iPV=W{%ClOT0~_Ye z9D~WuC4e_&eZjxH2Vn&dgtxNvlZhTz3FOHML=3P66y{1e!X+!E3Br3I!#~DqMO7%= zvAmR8>a?bdnJ@fpONpZx&+<+X7}IWe9pQJbw=Th?BoiLV@ieV>PT&H4I`{Y<59@g9 zi;Dq4vph@ z3%!zi<{kakqTk1OQ+@)dC~oG$Wp5+>0-gWv}v}* zS>Uh-boerCQ@-KOS35N+;X^mahL-Rc{?KQ-e>f4Rk^={9cdr?3C!QIxFj>L?tW~V_ zss=yb1Nbr4x{@xs6gd9M%I6hu%Z#frIMLkQ$TqiYv|hPSdsjv^)$Zz~sd|<~lihSg z{KK+y-mO%rF!A&bVV}p_R>|=K=x}W8-!1DUS_RtZcmZtFtG8i5yjR|J^J38_=T`G3 zLTUq0mfokp0mVS2rm{*k#g25x23llc@;H)wL5y4kMym&T8us_kj8zRVHLmk9*eK*; zWIr@e16dp&-K*;hK>I-t8lztA&A3DA-=;PK<-KlrBP+mSd|rWS**(_SAmLkio*Bn| zYKw$_%-*D}%-kf__fjtiOBVdi0B{r#4hZBtVgG?ParofRUyEsG_YK0w)EGqcwR%CK>|+94u$7%@W);BC)WVKNp$ZTd;$bx8;YpC;iFV1HoU@a zDG`U(VOvkx8K`hqfOEp6PF3c1$*SG7m664Ydy4n-KbhU8gUP12af$kq`V#CYW4rL4- z4ix*dA}xnj<8rtgm+xn<`x)xU^iu*|0`&`*ELMx{C$riO1i?%AMC+nVgd645-c1Ya z69E~ZkvGr&*is8rjX7PYZ`%U6)p#ML2O1_Yhn%YP-HU!Ho-5TnuI5EStxt_xpSSS& z>zmQsQu`&i#i-CFn#q_;4Atl2VWui z3>GbikIq6>?(aN*j5wFt`$M8)QNd?Y7ZNkl@K5+h=HcHQJaC#1Lb`Y70=0y#-+!nCM5&5O>p>jvhFw6%-Vd3SkwknkZy4H_x5(Gl@_$tR z*vxR!W2dE69vB*wb~pf$Q0dcI0~dV!a{WB+{%yyM#7wsU_L@zfFQa0M*19ibu;G!{ zk=SLdzTl``e3om{Xj}LZ`W zzfSsWCt16n$?1Ql&O?cfa#_w~z)*ksaqV-$ovPe`s$tO&J#=}cgPJ{jwd1ecy7MSF zk#5KX^7z!juO^6DBUH@Br9&3_y3UGzKyp|=3{aSP8gmPy@22q+DbBhIr&lJ|Bf0a@ z2p_luc&9ETv=KhjKZf1L`(Oit3-old0mV}|_iStAQV!1)1Dc)1iQ8gHa8^w8iAv|+ zBR(^*wO1pu>fU+HD5dv?_SLE8Mvk`toP94-KLvei3&ugUS73$A62mN_B^PXCz@w{WMYiT|7rv+b* zv$QK7m8eW;S^u!@vVrO<`3eVO$m1MH*7_A>28S(yUEA5I555!3&4(S#e2O|d}7%(raPJ(SPke9HR zAV26oS9@(4K$V8pnUu#ors)j3%T+*-Hw%xRK~BBi_v_3MXxrG-$%7X6{%1qUU*CKS z+n%fFfPyOOpN-vK!oHbZWwul}TKaERYAc@eW z;^4le$wnmNmxFipYO+ps5?^%s0;tKo8EV`=GgK~ebAn_ETVL=Q+Y`NEi19dGPgtzQ zU*F&o{2Pls0p7PQz_V;**qaDElh%Vk6a=kaB(KC*>*!G^AC42ofwRkBQz;fE4l@~k z_?{x_CgcTal#mZg?mel#ObZnZ-L2dgZolrQ4yoV({*uJl~) zVpER;s~LIv6Y53Ux4D4&q)B`g=|E}7F%W$|z3Qi@=z$<*PbzsyNjIr!c*CN4hju0U z4mQWeps2A}3W^c#ps@YXn-<%iiKxggJdIH6u1LNc~_y zNS*pC=kv74%zbg-O9$fG-Ae;3I)a|ddoUTzq@T`EdP3a*b|;vDRsgEwnq#30)d7i1 zO6n0_5Mu857gaz^42y)$ZY}JwnO&RXu8(O%S1HF-+YZ{} zWZ!JAbe-oNnLG1b!3-XIQ{!%34nSAj?nIjfZi5h3(RUP^d?~|Rx2=JTtJa7p6iMQ( z4Us4JYlL04>;Oo2nR0}%3sE7Q)k^xpW%@MweaNG`F5EC(i_9mE55K>fcgi`58VeS8 zwz|?wdB3gk3@`wZDqROsQ`znGfLPtH~Fwp0l@mO z-$HpE$PG!oCGA`@v!N~&J}rD9HdsRr)R+Ja#ZWuN8DBt}h299>Z@}~Rnr1$gJFb56 zi413W-auw)c!E20KBwU6;Rznhd87_c!q;8DF7q7BZuj-F)k#Cr$-!}x?x~s#t`xflBZt=!5?^TV8y~&HgqN?5FbYnrVS&oJDRf4-YH6D}3JSinuYJeUO!)V~A>o z()qMb*T_cBDHJ1-n1$msTg6Vw|_j^_oGvjrkEtXgtXHSq!&IenJpZ{0rT z*QdE}_NyUIw(PftI_7s1l&IHF5sDft3qH?6tYTN zG6ccub^Z2vQcVhO+4Wj!Rg_kbkUMBH&O9qDm3&WunX8!6|ItI&lp0RqUgQ0rxuaDBP@4~KzTZcvW2Bg&NH%ud2 zY*PV2cAXCkpW|!2znVrIt#)i*=K0iGP!mW4E{4ij*C0bQ$cZ?Z7c=BgV`+-7>{Qqs z%?JJxYo0@wcx&&HhZk0yoo&h^YpT*0+<4B^m%o3D?tf$g`y$=gi z^ewh`kWn`Db`M-R&46|)8)0ph3{RBRTiezCsrg!AI;gw_r36wptu9x1lBIME6A!7y z&t8c^j{aKF1O4~FbWIe&+k`^AJ7`y}+Q~mxmC}ZdMH94+YB}@LPcxbkL{eBt z2~G3mOyqUDB>y%_SjY0NN{s1tf@E>}g>dl0`=2MQ67n>CbEdzV$V#K#l>bJD?YbDV zd`ON~;kpW!!5iDEUzVvAgO zUarxvUv6hk^`-R@XzRAVMjEfcid7iT8PtOU1DAMF_vxoAU9!?*u$umF%Mm7HnhFBP z?~j;#g>s(Qf)5@s6?d|JT {W~?reOOH?k6Adv)cF z&{PF?3;I7b8O77QF8!*K(4!4AkD!caA_Zb|nD&8U{(kd{t}CIpz`s4gI;%SPbx1!4 zBV3LcKf?mS{x$QaQ-T`vrWGAI+Q;ON;o46LM1c&;-#(P_GUpX`n3%&q9PhyfOm_2= z!CIGBNNs)k@s|g%ymVe9_4^=vx5)A3$S-AR^0=y7_*&0+7e;dAvB{6wYdYYEZYH5L z(^&&6Bf~u`VZn^_%U|DAzB1O-ydfuz>35AmV&brR{*#Fd7q{Lpi=8#ZU$Vl^>$p93 zLLo8!DVf(Lt-g)$o5tJ9iRC71wB zFXZyNg`SQT*@gcSrbg(NMs!G{%ap~*8){XZ+(#I*0VFxnV*U_acXeLY6p&Paw;Jl%}JYlF}3?=F*T4D8h*Vj<%Rkb(Cx2x4o) zSLi4O0cH3$F+)5Tgw9vFRie*2GU2LW1a|WJ7Yz4YzCwS)R4qA?slvRGlq%t2^=Tx` zsrdBHZ0dYxy)GTwQv;q$gB(~ExxY1L7UOqb522Lq(T-l=anByM(iE_B+-($#D-K2T zxZF9x*DIUWPg1m86?9U{T~kFD(KqMre)kn#8^&TliUu4IV}#gr^NgHc1p-s#TJ)7PN zaGSO~1D%H~u=C_0(XV*XZ@yry=_8;W<2? zCt-tnt625m1}@_))@1>3cU<1p(}G`KNP4pcws_nQN$;Bn2c+o&-pg%#`kI$7ZAH~7 z2C6&I!v{uyC=CE!DqVt(ig_7jWb?5)o!1LBTS}2bF{ekLiOxD}I!_?3uKsAva5Pac zJp#})HP9MZ3(ZGT$=QYj0Ls;ztA%CVGOZX@4r@;t+bw1WoV)t^hep|GN>)j zBxdgV&g;Ft{;Iqa-L@RMzA&MjVUrzL>KvoboS&uP5=)!MvX%lPDQ^|;pNH#hDdPkt zS%_QMw~7)qUXK2!)Ee!_`gB(>;z0YMdw<$gXyrEJ@r99$nN2L}I}vs+4cDF{l}+ba zq}iv*1$o%)$W0Ji>KN4I$Oh?PXv5tL7L9>+B@R`g|H36MG(0*pzIJhInCQy)_(W#W(g>Nm5%i#L+QlqPDaA>K8|j>PosBuI*B*{iH`KyvWP5K z``w{f<&BJEszSKn@yE_7J>70W2xqj_#-p!aOpwF6dTB8y%-a=I{Js^^jW43(*Ba#O>Ans(QR6zdqQL=F}E&sKA?zv3VJ2l&ZYw zvvO470hK8?Ip(J8%~giF7Js#)NIk+&8Sfg6v@98|HnfdmYh}8r<@z6H_BOvDyuOhhkHybFbu*DfaCvX$ph3#T?eDX0X+A~ zJxKS8Dunvp=}Q%<-}-}ALctlw67cVd5oO?4e}9WmM5flKIqjU^rEb>kfLBjyA@9z= h{DKG09t$qNS#TEBMOU>h7<6SpswV(5d-1Qa{{xS3kR<>B literal 0 HcmV?d00001 diff --git a/content/news/025/index.md b/content/news/025/index.md index 9175bc093..82f7b0a95 100644 --- a/content/news/025/index.md +++ b/content/news/025/index.md @@ -582,6 +582,34 @@ jam][whats-the-word-results]! [whats-the-word-egui]: https://github.com/mvlabat/bevy_egui [whats-the-word-results]: https://itch.io/jam/rusty-jam/results +## [Humankind's Encyclopedia][humankind-twi] + +![Humankind's logo](humankind-wiki.jpeg) + +[Humankind] is a Civilization-like game from [Amplitude Studios], +out of Early Access a few weeks ago. +While the game itself isn't written in Rust, +its [gorgeous encyclopedia][humankind-wiki] and persona sharing service +[are written using rocket.rs][humankind-twi]. + +Since the encyclopedia has a big constraint of being used inside an embedded +in-game browser that has a bit of performance issues with full JS frameworks +the team opted for server-side rendering with the [Tera] template framework. + +> I had people working on that without any prior rust experience, +> and they were ready to code in no time thanks to good language documentation +> & useful compiler messages. +> +> We didn't do anything particularly complex, but the safety of Rust combined +> with performance enabled us to make this run for way less $$. +> You don't have to do complex system programming to profit from Rust's benefits. + +[Humankind]: https://store.steampowered.com/app/1124300/HUMANKIND +[humankind-twi]: https://twitter.com/SobertKaos/status/1429812457820786694 +[humankind-wiki]: https://humankind-encyclopedia.games2gether.com/en-us +[Amplitude Studios]: https://www.amplitude-studios.com +[Tera]: https://github.com/Keats/tera + ## Engine Updates ### [rg3d] @@ -780,6 +808,25 @@ hopefully will be helpful to other egui backends as well! [godot-egui]: https://github.com/setzer22/godot-egui +## [Dimforge][dimforge] + +[![Dimforge logo](dimforge.png)][dimforge] + +[Dimforge][dimforge] creates open-source Rust crates for numerical simulation. +Some of the [recent updates][dimforge-update]: + +- [New user-guide for Rapier’s JS bindings][rapier-js-docs]. +- [nalgebra] v0.29 brings better soundness and non-Copy types support. +- [Rapier] 0.11 brings a full set of joint limits. +- The work on unbreakable reduced-coordinates joints for Rapier + is also in progress. + +[dimforge]: https://dimforge.com +[dimforge-update]: https://dimforge.com/blog/2021/08/15/the-last-two-months-in-dimforge +[Rapier]: https://rapier.rs +[rapier-js-docs]: https://rapier.rs/docs/user_guides/javascript/getting_started_js +[nalgebra]: https://nalgebra.org + ## Popular Workgroup Issues in Github