placeholder-project

Temp project
git clone git://archive.git.mtrnord.blog/MTRNord/placeholder-project.git
Log | Files | Refs

commit 5f425167a60589e1625c442e42c983351f89d378
Author: MTRNord <mtrnord1@gmail.com>
Date:   Tue,  2 Apr 2024 11:08:12 +0200

Initial commit

Diffstat:
A.cargo/config.toml | 11+++++++++++
A.gitignore | 1+
ACargo.lock | 7849+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ACargo.toml | 38++++++++++++++++++++++++++++++++++++++
Aassets/matrix_office.ldtk | 2++
Aassets/settings.ron | 29+++++++++++++++++++++++++++++
Aassets/tilesets/WA_Decoration.png | 0
Aassets/tilesets/WA_Exterior.png | 0
Aassets/tilesets/WA_Miscellaneous.png | 0
Aassets/tilesets/WA_Other_Furniture.png | 0
Aassets/tilesets/WA_Room_Builder.png | 0
Aassets/tilesets/WA_Seats.png | 0
Aassets/tilesets/WA_Special_Zones.png | 0
Aassets/tilesets/WA_Tables.png | 0
Aassets/tilesets/WA_User_Interface.png | 0
Aassets/tilesets/matrix-logo.png | 0
Aassets/tilesets/matrix-logo.svg | 18++++++++++++++++++
Aassets/tilesets/test_room_autolayer.intgrid.png | 0
Aassets/tilesets/user.png | 0
Asrc/main.rs | 211+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/networking/client.rs | 205+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/networking/mod.rs | 176+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/networking/protocol.rs | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/networking/server.rs | 185+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/player.rs | 60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/wall.rs | 10++++++++++
26 files changed, 8877 insertions(+), 0 deletions(-)

diff --git a/.cargo/config.toml b/.cargo/config.toml @@ -0,0 +1,11 @@ +[target.wasm32-unknown-unknown] +runner = "wasm-server-runner" + +[target.x86_64-pc-windows-msvc] +rustflags = ["-C", "link-arg=-fuse-ld=lld"] + +[target.x86_64-pc-windows-gnu] +rustflags = ["-C", "link-arg=-fuse-ld=lld"] + +[target.x86_64-unknown-linux-gnu] +rustflags = ["-C", "linker=clang", "-C", "link-arg=-fuse-ld=lld"] diff --git a/.gitignore b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock @@ -0,0 +1,7849 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "accesskit" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74a4b14f3d99c1255dcba8f45621ab1a2e7540a0009652d33989005a4d0bfc6b" + +[[package]] +name = "accesskit_consumer" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" +dependencies = [ + "accesskit", +] + +[[package]] +name = "accesskit_macos" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" +dependencies = [ + "accesskit", + "accesskit_consumer", + "objc2 0.3.0-beta.3.patch-leaks.3", + "once_cell", +] + +[[package]] +name = "accesskit_windows" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" +dependencies = [ + "accesskit", + "accesskit_consumer", + "once_cell", + "paste", + "static_assertions", + "windows 0.48.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45f8f7c9f66d454d5fd8e344c8c8c7324b57194e1041b955519fc58a01e77a25" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_windows", + "raw-window-handle", + "winit", +] + +[[package]] +name = "accessory" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "850bb534b9dc04744fbbb71d30ad6d25a7e4cf6dc33e223c81ef3a92ebab4e0b" +dependencies = [ + "macroific", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "alsa" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37fe60779335388a88c01ac6c3be40304d1e349de3ada3b15f7808bb90fa9dce" +dependencies = [ + "alsa-sys", + "bitflags 2.5.0", + "libc", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "android-activity" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" +dependencies = [ + "android-properties", + "bitflags 2.5.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_log-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +dependencies = [ + "serde", +] + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "as_variant" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38fa22307249f86fb7fad906fcae77f2564caeb56d7209103c551cd1cf4798f" + +[[package]] +name = "ash" +version = "0.37.3+1.3.251" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" +dependencies = [ + "libloading 0.7.4", +] + +[[package]] +name = "assign" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f093eed78becd229346bf859eec0aa4dd7ddde0757287b2b4107a1f09c80002" + +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +dependencies = [ + "concurrent-queue", + "event-listener 5.2.0", + "event-listener-strategy 0.5.1", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-compat" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f68a707c1feb095d8c07f8a65b9f506b117d30af431cab89374357de7c11461b" +dependencies = [ + "futures-core", + "futures-io", + "once_cell", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-executor" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10b3e585719c2358d2660232671ca8ca4ddb4be4ce8a1842d6c2dc8685303316" +dependencies = [ + "async-lock", + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", +] + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "async-task" +version = "4.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" + +[[package]] +name = "async-trait" +version = "0.1.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom", + "instant", + "pin-project-lite", + "rand", + "tokio", +] + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bevy" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea370412c322af887c9115442d8f2ec991b652f163a1d8920ecaf08cae63f2bc" +dependencies = [ + "bevy_internal", +] + +[[package]] +name = "bevy_a11y" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6192db480a04d4a0ad5d89a2fbd78ccca5ce902829a49ec2d1dbc213222ed8b1" +dependencies = [ + "accesskit", + "bevy_app", + "bevy_derive", + "bevy_ecs", +] + +[[package]] +name = "bevy_animation" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef3bbaf9233c428d8dd4b66a41b5381e41c67da860d9dc2118a8e6610ec874c" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_time", + "bevy_transform", + "bevy_utils", +] + +[[package]] +name = "bevy_app" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b508824497f3a3a2fab8398dc3944a4d4adddcc30ee25cd6d45b0a57336549ce" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "downcast-rs", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf224b57fb65e1cde921afe0b343c2d595531dbf882c41abad01bbc665a05c4" +dependencies = [ + "async-broadcast", + "async-fs", + "async-lock", + "bevy_app", + "bevy_asset_macros", + "bevy_ecs", + "bevy_log", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bevy_winit", + "blake3", + "crossbeam-channel", + "downcast-rs", + "futures-io", + "futures-lite", + "js-sys", + "parking_lot", + "ron", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_asset_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "684c855651e7734740b76ada0e7daed116c46d393f9031cc45c4fe9ad5829548" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "bevy_audio" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0af1796b7e56c2f49de5be72fb2aadb8f9310d6173d70040fd2eff1c7cb29009" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "cpal", + "rodio", +] + +[[package]] +name = "bevy_core" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1a8f4722fb978d308b6311f3dd61f6885165055ad05ce3dfc1b2fd001bb017e" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bytemuck", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568659c43c8f1805f434b5fc0f8e700c263391403f899312bb0e4bc8d8b9ca70" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bitflags 2.5.0", + "radsort", + "serde", +] + +[[package]] +name = "bevy_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de77523d154e220a740e568a89f52fac7de481374bdecbbbeb283a37580ba34" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b5b031eeafc17bed997313ca15c8e4ed8b97fe2e9ef48e980833e4bf5cfa0e7" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_log", + "bevy_time", + "bevy_utils", + "const-fnv1a-hash", + "sysinfo", +] + +[[package]] +name = "bevy_ecs" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a027175613f630a51273c0f8ae909dd54ea3ce72eb573f456056553f79918ac" +dependencies = [ + "async-channel", + "bevy_ecs_macros", + "bevy_ptr", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "downcast-rs", + "fixedbitset", + "rustc-hash", + "serde", + "thiserror", + "thread_local", +] + +[[package]] +name = "bevy_ecs_ldtk" +version = "0.9.0" +source = "git+https://github.com/theshortcut/bevy_ecs_ldtk?rev=ef84e85e958c988e35bcd5e700d33f8cdb8015d1#ef84e85e958c988e35bcd5e700d33f8cdb8015d1" +dependencies = [ + "bevy", + "bevy_ecs_ldtk_macros", + "bevy_ecs_tilemap", + "derive-getters", + "derive_more", + "hex", + "paste", + "path-clean", + "regex", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "bevy_ecs_ldtk_macros" +version = "0.9.0" +source = "git+https://github.com/theshortcut/bevy_ecs_ldtk?rev=ef84e85e958c988e35bcd5e700d33f8cdb8015d1#ef84e85e958c988e35bcd5e700d33f8cdb8015d1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55dbbb6300f08cef5983497970db8545d3cbda6ee4f410a6c6742b7b6bbfd3af" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "bevy_ecs_tilemap" +version = "0.12.0" +source = "git+https://github.com/StarArawn/bevy_ecs_tilemap#25def41e029626bb5e84fe7aca1f16a1d6beccdc" +dependencies = [ + "bevy", + "log", + "regex", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df72ac1273fcdb8105736c42815442ae1291f1f577e34cb7e9d18f732103e2f0" +dependencies = [ + "bevy_macro_utils", + "encase_derive_impl", +] + +[[package]] +name = "bevy_gilrs" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02146d8a92ac322717185005a17b488e74b2ec08ca3f9eb8a7cadb7f0486cb70" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_log", + "bevy_time", + "bevy_utils", + "gilrs", + "thiserror", +] + +[[package]] +name = "bevy_gizmos" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66e9965860d505e2ea4144850904cefd8b528f59477061df8563194dc954ad58" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_gizmos_macros", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_transform", + "bevy_utils", +] + +[[package]] +name = "bevy_gizmos_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e689be764256a5a0d1f01c5f1dbaa3439e98a1338bf88b496db184d28e00c9" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "bevy_gltf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0cd8fd1c1ce3a57ca96eaee05f406ad65865efd02606e5f288b5f7767d8c6f" +dependencies = [ + "base64", + "bevy_animation", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_hierarchy", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_tasks", + "bevy_transform", + "bevy_utils", + "gltf", + "percent-encoding", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b2999d1e5bb877b475c9b2d17643d5fb47fc4cc49ea48ba3ab5a6b00ed850a6" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_log", + "bevy_reflect", + "bevy_utils", +] + +[[package]] +name = "bevy_input" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c22481e4290e2eca68b0c1f5f0a826f185d8f5e40e05c86bb6044dcfe3a04b3" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "smol_str", + "thiserror", +] + +[[package]] +name = "bevy_internal" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ac9275cc7f4bce41dff1e62b853933e242f9e5c076d89f06156cf743097d6a0" +dependencies = [ + "bevy_a11y", + "bevy_animation", + "bevy_app", + "bevy_asset", + "bevy_audio", + "bevy_core", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_gilrs", + "bevy_gizmos", + "bevy_gltf", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_ptr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_sprite", + "bevy_tasks", + "bevy_text", + "bevy_time", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bevy_window", + "bevy_winit", +] + +[[package]] +name = "bevy_log" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c7b4e2443654d68b6f8c54e5f1ce3a16c8a9af10f4832390dcae36c1323307" +dependencies = [ + "android_log-sys", + "bevy_app", + "bevy_ecs", + "bevy_utils", + "console_error_panic_hook", + "tracing-log 0.1.4", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bbbf88fc577a21ee9994feed2253ee9838b63fb976783b7a549edfbe07c6764" +dependencies = [ + "proc-macro2", + "quote", + "rustc-hash", + "syn 2.0.57", + "toml_edit 0.21.1", +] + +[[package]] +name = "bevy_math" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d30721f36a0b5f9ad39deb140c50b85cbbaefebab8d10bd20d9de1c9572f968" +dependencies = [ + "glam", + "serde", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc081a695c3513f09fdc640bf7f66cd73c47eb479da50312bf9710ee6927729d" +dependencies = [ + "glam", +] + +[[package]] +name = "bevy_pbr" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d90401eb58acb1c9627f11f75b076bfdeab2af9a4aea4540cb525efc5782b613" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.5.0", + "bytemuck", + "fixedbitset", + "radsort", + "smallvec", + "thread_local", +] + +[[package]] +name = "bevy_ptr" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea003584000ef02b73800cc7cb62ee74792fff431e6a8df36863c43bf56fb491" + +[[package]] +name = "bevy_rapier2d" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1f2ef2ae7fcf68ccb33f95c1dfc7c679bbc0e33b7f2e461353073065ff6e1e" +dependencies = [ + "bevy", + "bitflags 2.5.0", + "log", + "nalgebra", + "rapier2d", +] + +[[package]] +name = "bevy_reflect" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1101dbd44ae35e5c66802e46cfba1182e49f6163c824bee380d4acab5b2f640" +dependencies = [ + "bevy_math", + "bevy_ptr", + "bevy_reflect_derive", + "bevy_utils", + "downcast-rs", + "erased-serde", + "glam", + "serde", + "smol_str", + "thiserror", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a8791d5841a6db862571f709d7ee70c2a5eb1634c3a4329817d04f0e307c2d" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.57", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75bbb48471f8cd06f5253e271f9b793695f5b821fc9d39a875497905578d9867" +dependencies = [ + "async-channel", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_encase_derive", + "bevy_hierarchy", + "bevy_log", + "bevy_math", + "bevy_mikktspace", + "bevy_reflect", + "bevy_render_macros", + "bevy_tasks", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.5.0", + "bytemuck", + "codespan-reporting", + "downcast-rs", + "encase", + "futures-lite", + "hexasphere", + "image", + "js-sys", + "ktx2", + "naga", + "naga_oil", + "ruzstd", + "serde", + "thiserror", + "thread_local", + "wasm-bindgen", + "web-sys", + "wgpu", +] + +[[package]] +name = "bevy_render_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffd61a89e7a1b55c78a0aef1fcadd0247fe74a101c00f831791db73d63465051" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "bevy_scene" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368b989251241efb590976e309e4778ed9d04eb896c37ea6b874a374432a0b3e" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "serde", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_sprite" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f52d807086d2c92bc37ee770aa6dbb442b62cdc5665b9c6dd32629b8fae05e4" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bitflags 2.5.0", + "bytemuck", + "fixedbitset", + "guillotiere", + "radsort", + "rectangle-pack", + "thiserror", +] + +[[package]] +name = "bevy_tasks" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40be36aeec06b8f0eb87894922c6a7fbd8f2a5c8e77dcb9dcbf77641046988c0" +dependencies = [ + "async-channel", + "async-executor", + "async-task", + "concurrent-queue", + "futures-lite", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f0e51919e13c0c39ecdffcf843e8a8d95fd8861023b02b3ee486d3fa4b6003" +dependencies = [ + "ab_glyph", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_transform", + "bevy_utils", + "bevy_window", + "glyph_brush_layout", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_time" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06fc48cf59acd2b1c52e61787b5bb3db1a0f923cc6ccc68c0d8ab2b5894cfd28" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "crossbeam-channel", + "thiserror", +] + +[[package]] +name = "bevy_transform" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b962ae4253f5413b64a839ab8e8d63bc3e3db45f41d06b6ddc7886acdcb5d0f5" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", + "thiserror", +] + +[[package]] +name = "bevy_ui" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3449b963573a56b484cf4f8883f1b5b8eaccaaeda8f28a70c006e3291450f77" +dependencies = [ + "bevy_a11y", + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bytemuck", + "taffy", + "thiserror", +] + +[[package]] +name = "bevy_utils" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac758c2e8509a4a260b7a91f920be3beee6ab9e76e388494240ac5d672779159" +dependencies = [ + "ahash", + "bevy_utils_proc_macros", + "getrandom", + "hashbrown", + "nonmax", + "petgraph", + "smallvec", + "thiserror", + "tracing", + "uuid", + "web-time 0.2.4", +] + +[[package]] +name = "bevy_utils_proc_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "014c80f466ed01821a2e602d63cd5076915c1af5de5fa3c074cc4a9ca898ada7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "bevy_window" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa0c2a1e580b3b0ad0c928a5e250c8375c6a8a70d8b0f483b23d3bf5b670cc1a" +dependencies = [ + "bevy_a11y", + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "raw-window-handle", + "smol_str", +] + +[[package]] +name = "bevy_winit" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2c408d459172758a4cfa37e3452d4ea0898101ec2b6d92aa3eb698511bef389" +dependencies = [ + "accesskit_winit", + "approx", + "bevy_a11y", + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_math", + "bevy_tasks", + "bevy_utils", + "bevy_window", + "crossbeam-channel", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.5.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.57", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitcode_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ab471e684e2f6f3c3071361e2c30e41d7543f505658daae3ceb89c202d933e" +dependencies = [ + "packagemerge", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "bitcode_lightyear_patch" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c82d186a0148ef9a83a4c8129acf71485a273a5650fcb47cbf66d361615dc660" +dependencies = [ + "bitcode_derive", + "bytemuck", + "from_bytes_or_zeroed", + "residua-zigzag", + "serde", + "simdutf8", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +dependencies = [ + "serde", +] + +[[package]] +name = "bitmaps" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6" + +[[package]] +name = "blake3" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq 0.3.0", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-sys" +version = "0.1.0-beta.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +dependencies = [ + "objc-sys 0.2.0-beta.2", +] + +[[package]] +name = "block-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" +dependencies = [ + "objc-sys 0.3.2", +] + +[[package]] +name = "block2" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +dependencies = [ + "block-sys 0.1.0-beta.1", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "block2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" +dependencies = [ + "block-sys 0.2.1", + "objc2 0.4.1", +] + +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel", + "async-lock", + "async-task", + "fastrand", + "futures-io", + "futures-lite", + "piper", + "tracing", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" + +[[package]] +name = "bytemuck" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +dependencies = [ + "serde", +] + +[[package]] +name = "bytesize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "calloop" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +dependencies = [ + "bitflags 2.5.0", + "log", + "polling", + "rustix", + "slab", + "thiserror", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +dependencies = [ + "calloop", + "rustix", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + +[[package]] +name = "cc" +version = "1.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg-vis" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3a2c3bf5fc10fe2ca157564fbe08a4cb2b0a7d2ff3fe2f9683e65d5e7c7859c" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + +[[package]] +name = "chrono" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets 0.52.4", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + +[[package]] +name = "clang-sys" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +dependencies = [ + "glob", + "libc", + "libloading 0.8.3", +] + +[[package]] +name = "clap" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim 0.11.0", +] + +[[package]] +name = "clap_derive" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "const-fnv1a-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_panic" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b" + +[[package]] +name = "const_soft_float" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "constgebra" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1aaf9b65849a68662ac6c0810c8893a765c960b907dd7cfab9c4a50bf764fbc" +dependencies = [ + "const_soft_float", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "core-graphics" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "coreaudio-rs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" +dependencies = [ + "bitflags 1.3.2", + "core-foundation-sys", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" +dependencies = [ + "alsa", + "core-foundation-sys", + "coreaudio-rs", + "dasp_sample", + "jni", + "js-sys", + "libc", + "mach2", + "ndk", + "ndk-context", + "oboe", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.54.0", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + +[[package]] +name = "curve25519-dalek" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "platforms", + "rustc_version", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "cxx" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff4dc7287237dd438b926a81a1a5605dad33d286870e5eee2db17bf2bcd9e92a" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47c6c8ad7c1a10d3ef0fe3ff6733f4db0d78f08ef0b13121543163ef327058b" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn 2.0.57", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "701a1ac7a697e249cdd8dc026d7a7dafbfd0dbcd8bd24ec55889f2bc13dd6287" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b404f596046b0bb2d903a9c786b875a126261b52b7c3a64bbb66382c41c771df" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "d3d12" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" +dependencies = [ + "bitflags 2.5.0", + "libloading 0.8.3", + "winapi", +] + +[[package]] +name = "darling" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 2.0.57", +] + +[[package]] +name = "darling_macro" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "dasp_sample" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" + +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + +[[package]] +name = "deadpool" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb84100978c1c7b37f09ed3ce3e5f843af02c2a2c431bae5b19230dad2c1b490" +dependencies = [ + "async-trait", + "deadpool-runtime", + "num_cpus", + "tokio", +] + +[[package]] +name = "deadpool-runtime" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63dfa964fe2a66f3fde91fc70b267fe193d822c7e603e2a675a49a7f46ad3f49" +dependencies = [ + "tokio", +] + +[[package]] +name = "deadpool-sqlite" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8010e36e12f3be22543a5e478b4af20aeead9a700dd69581a5e050a070fc22c" +dependencies = [ + "deadpool", + "deadpool-sync", + "rusqlite", +] + +[[package]] +name = "deadpool-sync" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8db70494c13cae4ce67b4b4dafdaf828cf0df7237ab5b9e2fcabee4965d0a0a" +dependencies = [ + "deadpool-runtime", +] + +[[package]] +name = "delegate-display" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98a85201f233142ac819bbf6226e36d0b5e129a47bd325084674261c82d4cd66" +dependencies = [ + "macroific", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "der_derive", + "flagset", + "zeroize", +] + +[[package]] +name = "der_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fe87ce4529967e0ba1dcf8450bab64d97dfd5010a6256187ffe2e43e6f0e049" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive-getters" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2c35ab6e03642397cdda1dd58abbc05d418aef8e36297f336d5aba060fe8df" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "displaydoc" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading 0.8.3", +] + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "serde", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand_core", + "serde", + "sha2", + "subtle", + "zeroize", +] + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + +[[package]] +name = "encase" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ed933078d2e659745df651f4c180511cd582e5b9414ff896e7d50d207e3103" +dependencies = [ + "const_panic", + "encase_derive", + "glam", + "thiserror", +] + +[[package]] +name = "encase_derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4ce1449c7d19eba6cc0abd231150ad81620a8dce29601d7f8d236e5d431d72a" +dependencies = [ + "encase_derive_impl", +] + +[[package]] +name = "encase_derive_impl" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92959a9e8d13eaa13b8ae8c7b583c3bf1669ca7a8e7708a088d12587ba86effc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum_delegate" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8ea75f31022cba043afe037940d73684327e915f88f62478e778c3de914cd0a" +dependencies = [ + "enum_delegate_lib", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "enum_delegate_lib" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e1f6c3800b304a6be0012039e2a45a322a093539c45ab818d9e6895a39c90fe" +dependencies = [ + "proc-macro2", + "quote", + "rand", + "syn 1.0.109", +] + +[[package]] +name = "enum_dispatch" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b73807008a3c7f171cc40312f37d95ef0396e048b5848d775f54b1a4dd4a0d3" +dependencies = [ + "serde", +] + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "euclid" +version = "0.22.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +dependencies = [ + "event-listener 5.2.0", + "pin-project-lite", +] + +[[package]] +name = "eyeball" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42482893d982111055ce4b24234d6250396d3785767c6b04cedd84612a0b80fb" +dependencies = [ + "futures-core", + "readlock", + "tracing", +] + +[[package]] +name = "eyeball-im" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021fab29d9670be5867b16d56a95c29a12c3c1bb654e7d589010a028716d625d" +dependencies = [ + "futures-core", + "imbl", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fancy_constructor" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f71f317e4af73b2f8f608fac190c52eac4b1879d2145df1db2fe48881ca69435" +dependencies = [ + "macroific", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "fastrand" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f" + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flagset" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb3aa5e95cf9aabc17f060cfa0ced7b83f042390760ca53bf09df9968acaa1" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "from_bytes_or_zeroed" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d25934a78435889223e575c7b0fc36a290c5a312e7a7ae901f10587792e142a" + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gilrs" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "499067aa54af19f88732dc418f61f23d5912de1518665bb0eca034ca0d07574c" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c132270a155f2548e67d66e731075c336c39098afc555752f3df8f882c720e" +dependencies = [ + "core-foundation", + "inotify", + "io-kit-sys", + "js-sys", + "libc", + "libudev-sys", + "log", + "nix", + "uuid", + "vec_map", + "wasm-bindgen", + "web-sys", + "windows 0.54.0", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glam" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glow" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gltf" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b78f069cf941075835822953c345b9e1edd67ae347b81ace3aea9de38c2ef33" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", + "serde_json", +] + +[[package]] +name = "gltf-derive" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "438ffe1a5540d75403feaf23636b164e816e93f6f03131674722b3886ce32a57" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "gltf-json" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "655951ba557f2bc69ea4b0799446bae281fa78efae6319968bdd2c3e9a06d8e1" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc32c2334f00ca5ac3695c5009ae35da21da8c62d255b5b96d56e2597a637a38" +dependencies = [ + "ab_glyph", + "approx", + "xi-unicode", +] + +[[package]] +name = "governor" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" +dependencies = [ + "cfg-if", + "dashmap", + "futures", + "futures-timer", + "no-std-compat", + "nonzero_ext", + "parking_lot", + "portable-atomic", + "quanta", + "rand", + "smallvec", + "spinning_top", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.5.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "gpu-allocator" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" +dependencies = [ + "log", + "presser", + "thiserror", + "winapi", + "windows 0.52.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" +dependencies = [ + "bitflags 2.5.0", + "gpu-descriptor-types", + "hashbrown", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "grid" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eec1c01eb1de97451ee0d60de7d81cf1e72aabefb021616027f3d1c3ec1c723c" + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "h2" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashlink" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "hassle-rs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" +dependencies = [ + "bitflags 2.5.0", + "com", + "libc", + "libloading 0.8.3", + "thiserror", + "widestring", + "winapi", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexasphere" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f33ddb7f7143d9e703c072e88b98cd8b9719f174137a671429351bd2ee43c02a" +dependencies = [ + "constgebra", + "glam", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icrate" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" +dependencies = [ + "block2 0.3.0", + "dispatch", + "objc2 0.4.1", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-traits", + "png", +] + +[[package]] +name = "imbl" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978d142c8028edf52095703af2fad11d6f611af1246685725d6b850634647085" +dependencies = [ + "bitmaps", + "imbl-sized-chunks", + "rand_core", + "rand_xoshiro", + "serde", + "version_check", +] + +[[package]] +name = "imbl-sized-chunks" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "144006fb58ed787dcae3f54575ff4349755b00ccc99f4b4873860b654be1ed63" +dependencies = [ + "bitmaps", +] + +[[package]] +name = "include_dir" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indexed_db_futures" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cc2083760572ee02385ab8b7c02c20925d2dd1f97a1a25a8737a238608f1152" +dependencies = [ + "accessory", + "cfg-if", + "delegate-display", + "fancy_constructor", + "js-sys", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown", + "serde", +] + +[[package]] +name = "inflections" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" + +[[package]] +name = "inotify" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "io-kit-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" +dependencies = [ + "core-foundation-sys", + "mach2", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "itertools" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a9b56eb56058f43dc66e58f40a214b2ccbc9f3df51861b63d51dec7b65bc3f" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "iyes_perf_ui" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a49f5aa5866dadfdd274c45eddc0a94c84ad1ce0c02c27bcb33c34a20b961f9e" +dependencies = [ + "bevy", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "js_int" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d937f95470b270ce8b8950207715d71aa8e153c0d44c6684d59397ed4949160a" +dependencies = [ + "serde", +] + +[[package]] +name = "js_option" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68421373957a1593a767013698dbf206e2b221eefe97a44d98d18672ff38423c" +dependencies = [ + "serde", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading 0.8.3", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "konst" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d712a8c49d4274f8d8a5cf61368cb5f3c143d149882b1a2918129e53395fdb0" +dependencies = [ + "const_panic", + "konst_kernel", + "typewit", +] + +[[package]] +name = "konst_kernel" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac6ea8c376b6e208a81cf39b8e82bebf49652454d98a4829e907dac16ef1790" +dependencies = [ + "typewit", +] + +[[package]] +name = "ktx2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87d65e08a9ec02e409d27a0139eaa6b9756b4d81fe7cde71f6941a83730ce838" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lewton" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" +dependencies = [ + "byteorder", + "ogg", + "tinyvec", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets 0.52.4", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +dependencies = [ + "bitflags 2.5.0", + "libc", + "redox_syscall 0.4.1", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" +dependencies = [ + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "libwebrtc" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf058ddf2b9aa82a7453cb9a7060db9c89d2942f86c5d3cd8637a213346ae4d" +dependencies = [ + "cxx", + "jni", + "js-sys", + "lazy_static", + "livekit-protocol", + "log", + "parking_lot", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webrtc-sys", +] + +[[package]] +name = "lightyear" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "410945fe163a11eee759ffbe8beff893d259e276ce1823ff63ec5b18b8e249ba" +dependencies = [ + "anyhow", + "async-compat", + "base64", + "bevy", + "bitcode_lightyear_patch", + "byteorder", + "bytes", + "cfg-if", + "chacha20poly1305", + "chrono", + "console_error_panic_hook", + "crossbeam-channel", + "derive_more", + "enum_delegate", + "enum_dispatch", + "futures-util", + "getrandom", + "governor", + "hashbrown", + "instant", + "lightyear_macros", + "nonzero_ext", + "paste", + "rand", + "ringbuffer", + "seahash", + "self_cell", + "serde", + "thiserror", + "tokio", + "tokio-tungstenite 0.21.0", + "tracing", + "tracing-log 0.2.0", + "tracing-subscriber", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "lightyear_macros" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acc977b2d3f117608514cc692340599953f7666235c878f02f44e58f51bd9ad0" +dependencies = [ + "anyhow", + "darling", + "proc-macro2", + "quote", + "serde", + "syn 2.0.57", + "uuid", +] + +[[package]] +name = "link-cplusplus" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9" +dependencies = [ + "cc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "livekit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212ed7272bbe3fddcc5b3a5e7137bd5c8df53670dc54cdb01e82ae065746e3a3" +dependencies = [ + "futures-util", + "lazy_static", + "libwebrtc", + "livekit-api", + "livekit-protocol", + "log", + "parking_lot", + "prost", + "serde", + "serde_json", + "thiserror", + "tokio", +] + +[[package]] +name = "livekit-api" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e20c3fc3de5944ce6b5c8da4084cf828bbae7216671e32e83b767ce61feeb7e0" +dependencies = [ + "futures-util", + "livekit-protocol", + "log", + "parking_lot", + "prost", + "reqwest", + "scopeguard", + "serde", + "sha2", + "thiserror", + "tokio", + "tokio-tungstenite 0.20.1", + "url", +] + +[[package]] +name = "livekit-protocol" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a1bd23257110be29d024d8d816adff70df18ea1d22ceb1aab6f3ad4aab0d523" +dependencies = [ + "futures-util", + "parking_lot", + "pbjson", + "pbjson-types", + "prost", + "prost-types", + "serde", + "thiserror", + "tokio", +] + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "mach2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +dependencies = [ + "libc", +] + +[[package]] +name = "macroific" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05c00ac596022625d01047c421a0d97d7f09a18e429187b341c201cb631b9dd" +dependencies = [ + "macroific_attr_parse", + "macroific_core", + "macroific_macro", +] + +[[package]] +name = "macroific_attr_parse" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd94d5da95b30ae6e10621ad02340909346ad91661f3f8c0f2b62345e46a2f67" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "macroific_core" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13198c120864097a565ccb3ff947672d969932b7975ebd4085732c9f09435e55" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "macroific_macro" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c9853143cbed7f1e41dc39fee95f9b361bec65c8dc2a01bf609be01b61f5ae" +dependencies = [ + "macroific_attr_parse", + "macroific_core", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matrix-pickle" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fd26463ce5d86b8d9bb9c4142d453198ba22fb91bd46d3c9f144ae699d821d" +dependencies = [ + "matrix-pickle-derive", + "thiserror", +] + +[[package]] +name = "matrix-pickle-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93779aa78d39c2fe34746287b10a866192cf8af1b81767fff76bd64099acc0f5" +dependencies = [ + "proc-macro-crate 2.0.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "matrix-rpg-rs" +version = "0.1.0" +dependencies = [ + "async-compat", + "bevy", + "bevy_ecs_ldtk", + "bevy_rapier2d", + "cfg-if", + "clap", + "crossbeam-channel", + "derive_more", + "iyes_perf_ui", + "lightyear", + "livekit", + "matrix-sdk", + "rand", + "serde", +] + +[[package]] +name = "matrix-sdk" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "336687e5fc8b33661a31681e988a67e9a3090c7fb1a8323a7f71eeaabad642ec" +dependencies = [ + "anymap2", + "aquamarine", + "as_variant", + "async-channel", + "async-stream", + "async-trait", + "backoff", + "bytes", + "bytesize", + "cfg-vis", + "event-listener 4.0.3", + "eyeball", + "eyeball-im", + "futures-core", + "futures-util", + "gloo-timers", + "http 0.2.12", + "imbl", + "indexmap", + "matrix-sdk-base", + "matrix-sdk-common", + "matrix-sdk-indexeddb", + "matrix-sdk-sqlite", + "mime", + "mime2ext", + "reqwest", + "ruma", + "serde", + "serde_html_form", + "serde_json", + "tempfile", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "url", + "urlencoding", + "zeroize", +] + +[[package]] +name = "matrix-sdk-base" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00891954d0826a94f1d130f46cbca64176003a234c1be5d9d282970d31cf0c87" +dependencies = [ + "as_variant", + "async-trait", + "bitflags 2.5.0", + "eyeball", + "eyeball-im", + "futures-util", + "matrix-sdk-common", + "matrix-sdk-crypto", + "matrix-sdk-store-encryption", + "once_cell", + "ruma", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "matrix-sdk-common" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb365a626ab6f6c6a2422cfe2565522f19accb06706c6d04bca8f0f71df29c9f" +dependencies = [ + "async-trait", + "futures-core", + "futures-util", + "gloo-timers", + "instant", + "ruma", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "matrix-sdk-crypto" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72aaeca3deb1387a63cd8c689270bd499b9eac3a594c2aaec72d7441ff00cd09" +dependencies = [ + "aes", + "as_variant", + "async-trait", + "bs58", + "byteorder", + "cbc", + "cfg-if", + "ctr", + "eyeball", + "futures-core", + "futures-util", + "hkdf", + "hmac", + "itertools 0.12.1", + "matrix-sdk-common", + "pbkdf2 0.12.2", + "rand", + "rmp-serde", + "ruma", + "serde", + "serde_json", + "sha2", + "subtle", + "thiserror", + "tokio", + "tokio-stream", + "tracing", + "ulid", + "vodozemac", + "zeroize", +] + +[[package]] +name = "matrix-sdk-indexeddb" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad388005c5d4ed2ff38f405d52aa7fa606f4e1ab51baf5f2504721124ed4a58b" +dependencies = [ + "anyhow", + "async-trait", + "base64", + "getrandom", + "gloo-utils", + "indexed_db_futures", + "js-sys", + "matrix-sdk-base", + "matrix-sdk-crypto", + "matrix-sdk-store-encryption", + "ruma", + "serde", + "serde-wasm-bindgen", + "serde_json", + "thiserror", + "tokio", + "tracing", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "matrix-sdk-sqlite" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20bd36bc5fa7ecd93516b242ba27466196d52b4a8743d85dd883a67bd6db11dc" +dependencies = [ + "async-trait", + "deadpool-sqlite", + "itertools 0.12.1", + "matrix-sdk-base", + "matrix-sdk-crypto", + "matrix-sdk-store-encryption", + "rmp-serde", + "ruma", + "rusqlite", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "vodozemac", +] + +[[package]] +name = "matrix-sdk-store-encryption" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a7e3162e9f982a4c57ab46df01a4775f697dec8899738bf62d7e97b63faa61c" +dependencies = [ + "blake3", + "chacha20poly1305", + "displaydoc", + "getrandom", + "hmac", + "pbkdf2 0.12.2", + "rand", + "rmp-serde", + "serde", + "serde_json", + "sha2", + "thiserror", + "zeroize", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "metal" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +dependencies = [ + "bitflags 2.5.0", + "block", + "core-graphics-types", + "foreign-types 0.5.0", + "log", + "objc", + "paste", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime2ext" +version = "0.1.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a85a5069ebd40e64b1985773cc81addbe9d90d7ecf60e7b5475a57ad584c70" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "naga" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" +dependencies = [ + "bit-set", + "bitflags 2.5.0", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "pp-rs", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "naga_oil" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ea62ae0f2787456afca7209ca180522b41f00cbe159ee369eba1e07d365cd1" +dependencies = [ + "bit-set", + "codespan-reporting", + "data-encoding", + "indexmap", + "naga", + "once_cell", + "regex", + "regex-syntax 0.8.3", + "rustc-hash", + "thiserror", + "tracing", + "unicode-ident", +] + +[[package]] +name = "nalgebra" +version = "0.32.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea4908d4f23254adda3daa60ffef0f1ac7b8c3e9a864cf3cc154b251908a2ef" +dependencies = [ + "approx", + "glam", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.5.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "no-std-compat" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nonmax" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" + +[[package]] +name = "nonzero_ext" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-sys" +version = "0.2.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3.patch-leaks.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +dependencies = [ + "block2 0.2.0-alpha.6", + "objc-sys 0.2.0-beta.2", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "objc2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +dependencies = [ + "objc-sys 0.3.2", + "objc2-encode 3.0.0", +] + +[[package]] +name = "objc2-encode" +version = "2.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +dependencies = [ + "objc-sys 0.2.0-beta.2", +] + +[[package]] +name = "objc2-encode" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "oboe" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" +dependencies = [ + "jni", + "ndk", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" +dependencies = [ + "cc", +] + +[[package]] +name = "ogg" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "orbclient" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" +dependencies = [ + "libredox", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owned_ttf_parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "packagemerge" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0efcf6ee55f8f7a24333bc8d1dd0e541a6cedf903dbc07ae6479d7f8ff32ed08" +dependencies = [ + "itertools 0.4.19", +] + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "parry2d" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996b83a7a12522b395c54f4ba59593b782e8004794c0212a2f487ed7ac6e419" +dependencies = [ + "approx", + "arrayvec", + "bitflags 1.3.2", + "downcast-rs", + "either", + "nalgebra", + "num-derive", + "num-traits", + "rustc-hash", + "simba", + "slab", + "smallvec", + "spade", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "path-clean" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" + +[[package]] +name = "pbjson" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90" +dependencies = [ + "base64", + "serde", +] + +[[package]] +name = "pbjson-build" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735" +dependencies = [ + "heck 0.4.1", + "itertools 0.11.0", + "prost", + "prost-types", +] + +[[package]] +name = "pbjson-types" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12" +dependencies = [ + "bytes", + "chrono", + "pbjson", + "pbjson-build", + "prost", + "prost-build", + "serde", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkcs7" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d79178be066405e0602bf3035946edef6b11b3f9dde46dfe5f8bfd7dea4b77e7" +dependencies = [ + "der", + "spki", + "x509-cert", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + +[[package]] +name = "png" +version = "0.17.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "pp-rs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + +[[package]] +name = "prettyplease" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" +dependencies = [ + "proc-macro2", + "syn 2.0.57", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" + +[[package]] +name = "prost" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2" +dependencies = [ + "bytes", + "heck 0.4.1", + "itertools 0.11.0", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 2.0.57", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" +dependencies = [ + "anyhow", + "itertools 0.11.0", + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "prost-types" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" +dependencies = [ + "prost", +] + +[[package]] +name = "quanta" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" +dependencies = [ + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi", + "web-sys", + "winapi", +] + +[[package]] +name = "quick-xml" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radsort" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core", +] + +[[package]] +name = "range-alloc" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" + +[[package]] +name = "rapier2d" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48a3ec4ae89e0837c0ff6f29af32a8e5d78dfabe2273dcd945cfaf3f5d2b1501" +dependencies = [ + "approx", + "arrayvec", + "bit-vec", + "bitflags 1.3.2", + "crossbeam", + "downcast-rs", + "nalgebra", + "num-derive", + "num-traits", + "parry2d", + "rustc-hash", + "simba", +] + +[[package]] +name = "raw-cpuid" +version = "11.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d86a7c4638d42c44551f4791a20e687dbb4c3de1f33c43dd71e355cd429def1" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "readlock" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7b323e7196daa571c8584de958be19e92941c41f845776fe06babfe8fa280a2" + +[[package]] +name = "rectangle-pack" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body", + "hyper", + "hyper-rustls", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-native-certs", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "winreg", +] + +[[package]] +name = "residua-zigzag" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b37805477eee599a61753230f511ae94d737f69b536e468e294723ad5f1b75f" + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "ringbuffer" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df6368f71f205ff9c33c076d170dd56ebf68e8161c733c0caa07a7a5509ed53" + +[[package]] +name = "rmp" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + +[[package]] +name = "robust" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30" + +[[package]] +name = "rodio" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b1bb7b48ee48471f55da122c0044fcc7600cfcc85db88240b89cb832935e611" +dependencies = [ + "cpal", + "lewton", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64", + "bitflags 2.5.0", + "serde", + "serde_derive", +] + +[[package]] +name = "ruma" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2779c38df072964c63476259d9300efb07d0d1a7178c6469893636ce0c547a36" +dependencies = [ + "assign", + "js_int", + "js_option", + "ruma-client-api", + "ruma-common", + "ruma-events", + "ruma-federation-api", +] + +[[package]] +name = "ruma-client-api" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "641837258fa214a70823477514954ef0f5d3bc6ae8e1d5d85081856a33103386" +dependencies = [ + "assign", + "bytes", + "http 0.2.12", + "js_int", + "js_option", + "maplit", + "ruma-common", + "ruma-events", + "serde", + "serde_html_form", + "serde_json", +] + +[[package]] +name = "ruma-common" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bca4c33c50e47b4cdceeac71bdef0c04153b0e29aa992d9030ec14a62323e85" +dependencies = [ + "as_variant", + "base64", + "bytes", + "form_urlencoded", + "getrandom", + "http 0.2.12", + "indexmap", + "js-sys", + "js_int", + "konst", + "percent-encoding", + "rand", + "regex", + "ruma-identifiers-validation", + "ruma-macros", + "serde", + "serde_html_form", + "serde_json", + "thiserror", + "tracing", + "url", + "uuid", + "wildmatch", +] + +[[package]] +name = "ruma-events" +version = "0.27.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d20a52770e5a9fb30b7a1c14ba8b3dcf76dadc01674e58e40094f78e6bd5e3f1" +dependencies = [ + "as_variant", + "indexmap", + "js_int", + "js_option", + "percent-encoding", + "regex", + "ruma-common", + "ruma-identifiers-validation", + "ruma-macros", + "serde", + "serde_json", + "thiserror", + "tracing", + "url", + "wildmatch", +] + +[[package]] +name = "ruma-federation-api" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1901c1f27bc327652d58af2a130c73acef3198abeccd24cee97f7267fdf3fe7" +dependencies = [ + "js_int", + "ruma-common", + "ruma-events", + "serde", + "serde_json", +] + +[[package]] +name = "ruma-identifiers-validation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf8ad1259274f2f57c20901bd1cc5e4a8f23169d1c1d887b6338b02f058e9b41" +dependencies = [ + "js_int", + "thiserror", +] + +[[package]] +name = "ruma-macros" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0280534a4b3e34416f883285fac4f9c408cd0b737890ae66f3e7a7056d14be80" +dependencies = [ + "once_cell", + "proc-macro-crate 2.0.0", + "proc-macro2", + "quote", + "ruma-identifiers-validation", + "serde", + "syn 2.0.57", + "toml", +] + +[[package]] +name = "rusqlite" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a78046161564f5e7cd9008aff3b2990b3850dc8e0349119b98e8f251e099f24d" +dependencies = [ + "bitflags 2.5.0", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "ruzstd" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" +dependencies = [ + "byteorder", + "derive_more", + "twox-hash", +] + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "safe_arch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scratch" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sctk-adwaita" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "security-framework" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "self_cell" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" + +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_bytes" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "serde_html_form" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de514ef58196f1fc96dcaef80fe6170a1ce6215df9687a93fe8300e773fefc5" +dependencies = [ + "form_urlencoded", + "indexmap", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_json" +version = "1.0.115" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "rand_core", +] + +[[package]] +name = "simba" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +dependencies = [ + "bitflags 2.5.0", + "calloop", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix", + "thiserror", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smol_str" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spade" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61addf9117b11d1f5b4bf6fe94242ba25f59d2d4b2080544b771bd647024fd00" +dependencies = [ + "hashbrown", + "num-traits", + "robust", + "smallvec", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spinning_top" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "svg_fmt" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83ba502a3265efb76efb89b0a2f7782ad6f2675015d4ce37e4b547dda42b499" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11a6ae1e52eb25aab8f3fb9fca13be982a373b8f1157ca14b897a825ba4a2d35" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sysinfo" +version = "0.30.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c385888ef380a852a16209afc8cfad22795dd8873d69c9a14d2e2088f118d18" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "windows 0.52.0", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "taffy" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c2287b6d7f721ada4cddf61ade5e760b2c6207df041cac9bfaa192897362fd3" +dependencies = [ + "arrayvec", + "grid", + "num-traits", + "slotmap", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.20.1", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.21.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.9", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.5", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log 0.2.0", +] + +[[package]] +name = "tracing-wasm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "ttf-parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 0.2.12", + "httparse", + "log", + "rand", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.1.0", + "httparse", + "log", + "rand", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "typewit" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fb9ae6a3cafaf0a5d14c2302ca525f9ae8e07a0f0e6949de88d882c37a6e24" +dependencies = [ + "typewit_proc_macros", +] + +[[package]] +name = "typewit_proc_macros" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e36a83ea2b3c704935a01b4642946aadd445cea40b10935e3f8bd8052b8193d6" + +[[package]] +name = "ulid" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34778c17965aa2a08913b57e1f34db9b4a63f5de31768b55bf20d2795f921259" +dependencies = [ + "getrandom", + "rand", + "web-time 1.1.0", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +dependencies = [ + "getrandom", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "vodozemac" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2790dffeecc522299d72d9a855c43adb0c23ba1dc1112d79a651fdf3beb2a356" +dependencies = [ + "aes", + "arrayvec", + "base64", + "cbc", + "curve25519-dalek", + "ed25519-dalek", + "getrandom", + "hkdf", + "hmac", + "matrix-pickle", + "pkcs7", + "prost", + "rand", + "serde", + "serde_bytes", + "serde_json", + "sha2", + "subtle", + "thiserror", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.57", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wayland-backend" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" +dependencies = [ + "bitflags 2.5.0", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.5.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" +dependencies = [ + "rustix", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +dependencies = [ + "dlib", + "log", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webrtc-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a44db03f1ad32e8bcc8ba603d45910cb24465b9c8bca134de3829bb51ea5ace" +dependencies = [ + "cc", + "cxx", + "cxx-build", + "glob", + "log", + "webrtc-sys-build", +] + +[[package]] +name = "webrtc-sys-build" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f2ff5b6905670641bb9661d8eebe7318e0b775092fe2f96771fa88b92d45b62" +dependencies = [ + "fs2", + "regex", + "reqwest", + "scratch", + "semver", + "zip", +] + +[[package]] +name = "wgpu" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b1213b52478a7631d6e387543ed8f642bc02c578ef4e3b49aca2a29a7df0cb" +dependencies = [ + "arrayvec", + "cfg-if", + "cfg_aliases", + "js-sys", + "log", + "naga", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f6b033c2f00ae0bc8ea872c5989777c60bc241aac4e58b24774faa8b391f78" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.5.0", + "cfg_aliases", + "codespan-reporting", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f972c280505ab52ffe17e94a7413d9d54b58af0114ab226b9fc4999a47082e" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.5.0", + "block", + "cfg_aliases", + "core-graphics-types", + "d3d12", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.3", + "log", + "metal", + "naga", + "ndk-sys", + "objc", + "once_cell", + "parking_lot", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" +dependencies = [ + "bitflags 2.5.0", + "js-sys", + "web-sys", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "wide" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89beec544f246e679fc25490e3f8e08003bc4bf612068f325120dad4cea02c1c" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "widestring" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" + +[[package]] +name = "wildmatch" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "939e59c1bc731542357fdaad98b209ef78c8743d652bb61439d16b16a79eb025" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-implement" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "windows-interface" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "windows-result" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + +[[package]] +name = "winit" +version = "0.29.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.5.0", + "bytemuck", + "calloop", + "cfg_aliases", + "core-foundation", + "core-graphics", + "cursor-icon", + "icrate", + "js-sys", + "libc", + "log", + "memmap2", + "ndk", + "ndk-sys", + "objc2 0.4.1", + "once_cell", + "orbclient", + "percent-encoding", + "raw-window-handle", + "redox_syscall 0.3.5", + "rustix", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time 0.2.4", + "windows-sys 0.48.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading 0.8.3", + "once_cell", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + +[[package]] +name = "x509-cert" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" +dependencies = [ + "const-oid", + "der", + "spki", +] + +[[package]] +name = "xcursor" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.5.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" + +[[package]] +name = "xml-rs" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.57", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq 0.1.5", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.10+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "matrix-rpg-rs" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +async-compat = "0.2.3" +bevy = { version = "0.13", features = ["wayland"] } +bevy_ecs_ldtk = { git = "https://github.com/theshortcut/bevy_ecs_ldtk", rev = "ef84e85e958c988e35bcd5e700d33f8cdb8015d1", version = "0.9.0" } +bevy_rapier2d = "0.25.0" +cfg-if = "1.0.0" +clap = { version = "4.5.4", features = ["derive"] } +crossbeam-channel = "0.5.12" +derive_more = "0.99.17" +iyes_perf_ui = "0.2.3" +lightyear = { version = "0.12.0", features = [ "websocket", "render"] } +livekit = "0.3.2" +matrix-sdk = "0.7.1" +rand = "0.8.5" +serde = "1.0.197" + +[patch.crates-io] +bevy_ecs_tilemap = { git = "https://github.com/StarArawn/bevy_ecs_tilemap" } + +# Enable a small amount of optimization in debug mode +[profile.dev] +opt-level = 1 + +# Enable high optimizations for dependencies (incl. Bevy), but not for our code: +[profile.dev.package."*"] +opt-level = 3 + +[profile.release] +opt-level = 'z' +lto = true +codegen-units = 1 diff --git a/assets/matrix_office.ldtk b/assets/matrix_office.ldtk @@ -0,0 +1 @@ +{"__header__":{"fileType":"LDtk Project JSON","app":"LDtk","doc":"https://ldtk.io/json","schema":"https://ldtk.io/files/JSON_SCHEMA.json","appAuthor":"Sebastien 'deepnight' Benard","appVersion":"1.5.3","url":"https://ldtk.io"},"iid":"13e86260-d7b0-11ee-8fc4-0dbc43328c50","jsonVersion":"1.5.3","appBuildId":473703,"nextUid":79,"identifierStyle":"Lowercase","toc":[],"worldLayout":"Free","worldGridWidth":256,"worldGridHeight":256,"defaultLevelWidth":256,"defaultLevelHeight":256,"defaultPivotX":0,"defaultPivotY":0,"defaultGridSize":32,"defaultEntityWidth":32,"defaultEntityHeight":32,"bgColor":"#40465B","defaultLevelBgColor":"#696A79","minifyJson":true,"externalLevels":false,"exportTiled":false,"simplifiedExport":false,"imageExportMode":"None","exportLevelBg":true,"pngFilePattern":null,"backupOnSave":false,"backupLimit":10,"backupRelPath":null,"levelNamePattern":"Level_%idx","tutorialDesc":null,"customCommands":[],"flags":[],"defs":{"layers":[{"__type":"Entities","identifier":"entities","type":"Entities","uid":77,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":0.6,"hideInList":false,"hideFieldsWhenInactive":true,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":null,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Entities","identifier":"floorlayer","type":"Entities","uid":3,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":0.6,"hideInList":false,"hideFieldsWhenInactive":true,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":null,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"on_table","type":"Tiles","uid":21,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":20,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"tables","type":"Tiles","uid":17,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":16,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"seats_behind","type":"Tiles","uid":19,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":18,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"furniture","type":"Tiles","uid":13,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":12,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"outdoor_decoration","type":"Tiles","uid":25,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":24,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"wall_decoration","type":"Tiles","uid":27,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":null,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"walls_visuals","type":"Tiles","uid":1,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":2,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"ui","type":"Tiles","uid":29,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":30,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"floor","type":"Tiles","uid":14,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":2,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"outdoorfloor","type":"Tiles","uid":23,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":24,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"element_teleport_layer","type":"Tiles","uid":31,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":11,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"matrix_teleport_layer","type":"Tiles","uid":32,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":11,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"start","type":"Tiles","uid":22,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":11,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"IntGrid","identifier":"walls","type":"IntGrid","uid":76,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[{"value":1,"identifier":"Wall","color":"#000000","tile":null,"groupUid":0}],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":null,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"IntGrid","identifier":"test_room_autolayer","type":"IntGrid","uid":35,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[{"value":2,"identifier":"floor","color":"#BE4A2F","tile":null,"groupUid":0},{"value":3,"identifier":"walls","color":"#D77643","tile":null,"groupUid":0},{"value":1,"identifier":"wall_top","color":"#000000","tile":null,"groupUid":1}],"intGridValuesGroups":[{"uid":1,"identifier":"Walls_top","color":null}],"autoRuleGroups":[{"uid":60,"name":"Walls","color":null,"icon":null,"active":true,"isOptional":false,"rules":[{"uid":61,"active":true,"size":3,"tileRectsIds":[[200],[201]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,1,1,0,3,1,0,3,1],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":4124523,"perlinScale":0.2,"perlinOctaves":2},{"uid":70,"active":true,"size":3,"tileRectsIds":[[200],[201]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,0,3,3,0,3,3,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":4124523,"perlinScale":0.2,"perlinOctaves":2},{"uid":71,"active":true,"size":3,"tileRectsIds":[[200],[201]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[1,1,0,1,3,0,1,3,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":4124523,"perlinScale":0.2,"perlinOctaves":2},{"uid":73,"active":true,"size":5,"tileRectsIds":[[200],[201]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,1,0,0,0,0,1,1,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":4124523,"perlinScale":0.2,"perlinOctaves":2},{"uid":62,"active":true,"size":5,"tileRectsIds":[[225],[226]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,1,1,0,0,0,3,1,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5899866,"perlinScale":0.2,"perlinOctaves":2},{"uid":67,"active":true,"size":3,"tileRectsIds":[[225],[226]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[3,3,0,3,3,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5899866,"perlinScale":0.2,"perlinOctaves":2},{"uid":69,"active":true,"size":5,"tileRectsIds":[[225],[226]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,1,1,0,0,0,1,3,0,0,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5899866,"perlinScale":0.2,"perlinOctaves":2},{"uid":72,"active":true,"size":7,"tileRectsIds":[[225],[226]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5899866,"perlinScale":0.2,"perlinOctaves":2}],"usesWizard":false,"requiredBiomeValues":[],"biomeRequirementMode":0},{"uid":44,"name":"Floor","color":null,"icon":null,"active":true,"isOptional":false,"rules":[{"uid":41,"active":true,"size":1,"tileRectsIds":[[350],[352],[353],[355],[356],[358],[360],[362],[375],[377],[378],[380],[383],[385],[387]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[2],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":306639,"perlinScale":0.2,"perlinOctaves":2}],"usesWizard":false,"requiredBiomeValues":[],"biomeRequirementMode":0},{"uid":38,"name":"Walls Top","color":null,"icon":null,"active":true,"isOptional":false,"rules":[{"uid":42,"active":true,"size":5,"tileRectsIds":[[29]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,3,1,0,0,0,3,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":2965774,"perlinScale":0.2,"perlinOctaves":2},{"uid":40,"active":true,"size":5,"tileRectsIds":[[28]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,3,0,0,0,0,3,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":7036573,"perlinScale":0.2,"perlinOctaves":2},{"uid":63,"active":true,"size":5,"tileRectsIds":[[53]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,3,0,0,0,0,3,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5594401,"perlinScale":0.2,"perlinOctaves":2},{"uid":65,"active":true,"size":5,"tileRectsIds":[[54]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,3,3,0,0,0,3,3,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":2659362,"perlinScale":0.2,"perlinOctaves":2},{"uid":56,"active":true,"size":5,"tileRectsIds":[[104]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,3,0,0,0,0,3,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":6718359,"perlinScale":0.2,"perlinOctaves":2},{"uid":57,"active":true,"size":3,"tileRectsIds":[[102]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[0,0,0,0,1,0,0,1,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":788014,"perlinScale":0.2,"perlinOctaves":2}],"usesWizard":false,"requiredBiomeValues":[],"biomeRequirementMode":0}],"autoSourceLayerDefUid":null,"tilesetDefUid":2,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null}],"entities":[{"identifier":"area","uid":4,"tags":[],"exportToToc":false,"allowOutOfBounds":false,"doc":null,"width":32,"height":32,"resizableX":true,"resizableY":true,"minWidth":32,"maxWidth":null,"minHeight":32,"maxHeight":null,"keepAspectRatio":false,"tileOpacity":1,"fillOpacity":0.25,"lineOpacity":1,"hollow":false,"color":"#BE4A2F","renderMode":"Rectangle","showName":false,"tilesetId":null,"tileRenderMode":"FitInside","tileRect":null,"uiTileRect":null,"nineSliceBorders":[],"maxCount":0,"limitScope":"PerLevel","limitBehavior":"PreventAdding","pivotX":0,"pivotY":0,"fieldDefs":[{"identifier":"focusable","doc":null,"__type":"Bool","uid":5,"type":"F_Bool","isArray":false,"canBeNull":false,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":null,"max":null,"regex":null,"acceptFileTypes":null,"defaultOverride":{"id":"V_Bool","params":[true]},"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null},{"identifier":"jitsiRoom","doc":null,"__type":"String","uid":6,"type":"F_String","isArray":false,"canBeNull":true,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":null,"max":null,"regex":null,"acceptFileTypes":null,"defaultOverride":null,"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null},{"identifier":"jitsiTrigger","doc":null,"__type":"String","uid":7,"type":"F_String","isArray":false,"canBeNull":true,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":null,"max":null,"regex":"/onaction/g","acceptFileTypes":null,"defaultOverride":null,"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null},{"identifier":"zoom_margin","doc":null,"__type":"Float","uid":8,"type":"F_Float","isArray":false,"canBeNull":true,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":0,"max":1,"regex":null,"acceptFileTypes":null,"defaultOverride":{"id":"V_Float","params":[1]},"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null},{"identifier":"entity_id","doc":"Mandatory id to match the entity when postprocessing","__type":"Int","uid":9,"type":"F_Int","isArray":false,"canBeNull":false,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":null,"max":null,"regex":null,"acceptFileTypes":null,"defaultOverride":null,"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null}]},{"identifier":"player","uid":78,"tags":[],"exportToToc":false,"allowOutOfBounds":false,"doc":null,"width":32,"height":32,"resizableX":false,"resizableY":false,"minWidth":null,"maxWidth":null,"minHeight":null,"maxHeight":null,"keepAspectRatio":false,"tileOpacity":1,"fillOpacity":0.08,"lineOpacity":0,"hollow":false,"color":"#D77643","renderMode":"Tile","showName":true,"tilesetId":75,"tileRenderMode":"FitInside","tileRect":{"tilesetUid":75,"x":64,"y":0,"w":16,"h":16},"uiTileRect":null,"nineSliceBorders":[],"maxCount":1,"limitScope":"PerLevel","limitBehavior":"MoveLastOne","pivotX":0,"pivotY":0,"fieldDefs":[]}],"tilesets":[{"__cWid":25,"__cHei":40,"identifier":"wa_room_builder","uid":2,"relPath":"tilesets/WA_Room_Builder.png","embedAtlas":null,"pxWid":800,"pxHei":1280,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"0000000000010000000000000110110100000000000000000011011010110101010000000000000000000000000001111111101010101010000000111111100000000000010000011111111010101010100000001111111000000000000000000111111111010110110000000011111111101011011000000001111111000000000000000000111111101000100101000000011111110000010010100000001111111000000000000000000111111110010010101010000011111110011000010101000001111111000000000000000000111111100000000000000000000000000011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000110000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","averageColors":"00000000000000000000000000000000000000000000f5440000000000000000000000000000000000000000000000000000f544f5440000f544f5440000f655000000000000000076540000000000000000000000000000000000000000000000000000f544f5440000f544f5440000f6550000f655f6550000f5440000f5449665f544000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f544f544f544f544f544f544f544f3330000f5440000f5440000f6550000f4440000f4440000000000000000000000000000f544feeefeeefeeefeeefeeef544000000000000000000000000000000000000000000000000f33300000000000000000000f544feeefeeefeeefeeefeeef544f4440000f4440000f4440000f4440000f4440000f4440000000000000000000000000000f544fdb7fdb7fdb7fdb7fdb7f544000000000000000000000000000000000000000000000000000000000000000000000000f544fdb7fdb7fdb7fdb7fdb7f544ffd4ffd40000feee0000feeefeee0000feeefeee00000000000000000000000000000000f444f544f544f544fdb7fdb7f544ffd7ffd70000feee0000feeefeee0000feeefeee00000000000000000000000000000000f544ffd4ffd4f544fdb7fdb7f544000000000000000000000000000000000000000000000000000000000000000000000000f544ffd7ffd7f655fdb7fdb7f5440000feee0000adde0000feee00000000feee0000f8310000000000000000000000000000f544f989f989feeefdb7fdb7f544000000000000adee0000feee00000000feee0000fcbb0000000000000000000000000000f544f989f989feeefdb7fdb7f544000000000000000000000000000000000000000000000000000000000000000000000000f544f989f989f989fdb7fdb7f544fdb70000f852fa840000fa84fa840000fddd0000f5670000f22400000000000000000000f544f544f544f544fa86f544f544fa740000f751fda50000fa8400000000f9890000f6570000f71100000000000000000000fcbbfcbbfcbbfcbbfdb7fcbbfcbb000000000000000000000000000000000000000000000000000000000000000000000000fcbbfcbbfcbbfcbbfdb7fcbbfcbb00000000000000000000000000000000000000005c845c8400000000000000000000000000000000000000000000000000008c950000fb84fb84fb8400007642764276420000aa64aa640000000000000000000000000000000000000000000000000000cc840000cb84bb84cb840000ca64c963ca640000ab74ab7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c8500003c850000000000000d959c85000000009c850d9500000000000000000000000000000000000000000000000000003c8500003c85000000000d959c857c85000000007c859c850d95000000000000000000000000000000000000000000000000000000000000000000001c857c851a630a630a631a637c851c850000000000000000000000000000000000000000000000000000000000000000000000001a63bc840a630a63bc841a630000000000000000000000000000000000000000000000000000000000000000000000000a74bc847b84000000007b84bc840a74000000000000000000000000000000000000000000000000000000000000000000001c847b7400000000000000007b741c84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ccc2cdd2dcb2dcb2dcb2dcb0000000000000000000000000000000000000000000000000000000000000000000000000000addd9eee6edc6edc3edc3edc0000fdddfddd0000edddeddd0000eeeeedee000000002dcb2dcb0000000000000000000000000000000000000000000000000000feeefeee0000eeeeeeee0000eeeeeeee00000000aedc9edd0000000000000000000000008ddd7dee8edc7edc5dcb5edb0000bdddbddd000000000000000000000000000000002dcb2dcb0000000000000000000000004ddd4ddd0ccb0dcb0ba900000000feeefeee00000000000000000000000000000000addd9edd0000000000000000000000000bcc0bcc000000000000000000004ddd4ddd00000000000000000000000000000000000000000000000000000000000000009a745a634a634a63396319634963396300000000996400000000000000000000000000000000000000000000000000000000da747a633a634a63596339636963296300000000da64000000000000000000000000000000000000000000000000000000009ca65da64da64da63ca61ca64ca63c96000000009ca800000000000000000000000000000000000000000000000000000000dda67da63da64da65ca63ca66ca62b9600000000dcb8000000000000000000000000000000000000000000000000000000009dcb5eee4eee4eee3ddd1ddd4ddd3ccd000000009ccb00000000000000000000000000000000000000000000000000000000dedb7eee3eee4eee5ddd3ddd6ddd2ccc00000000ddcb00000000000000000000000000000000000000000000000000000000"}},{"__cWid":6,"__cHei":2,"identifier":"special_tiles","uid":11,"relPath":"tilesets/WA_Special_Zones.png","embedAtlas":null,"pxWid":192,"pxHei":64,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[{"tileId":2,"data":"{\n \"collides\": true\n}"}],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"100000100000","averageColors":"ffff7ed67e666ea77e6d6e68f000766e686c65c676ee6a76"}},{"__cWid":12,"__cHei":13,"identifier":"other_furniture","uid":12,"relPath":"tilesets/WA_Other_Furniture.png","embedAtlas":null,"pxWid":384,"pxHei":416,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011100000001011100000000000000000000000000000000000000000000010000000","averageColors":"5c855c850000000000000000000000000000000000000000f964f964fa74fa740000bb84cc854d954d950000fb84fb85e964e963f963f96300006b746b74ea74db740000fa75f875000000005a635a63000000000000000000000000e874e8648abb8abb00002ccd1bbc2bcc000000000000000000000000000000000000fcbb7bcc7bcc1abb1cab1b9b000000000000000000000000000000000000000000000000000000000000f852f852f8520000fa84fa84fa8400000000000000000000f852f852f8525742fa84fa84fa845973ba730000000000008642a752864200008863a9638863000000000000000000000a9b2cab24364642364206410000000000000000000000002cbbfcbbfdbcf642f64226426642464216425642000000002cbbfbab2bab0000f6422642686348531853596300000000"}},{"__cWid":10,"__cHei":27,"identifier":"tables","uid":16,"relPath":"tilesets/WA_Tables.png","embedAtlas":null,"pxWid":320,"pxHei":864,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"000000000011010111010000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100110000111011100000000000000000000000110001000011101110000000000000","averageColors":"6d956d955d956c9500006bcc6bcc6bccebcc6bccfc95fc95ec95fc950000fbccfbccfbccebccfbcc7b857b858b857c8500007aab7bbb7aab7aab7bbb00000000000000000000000000000000000000008edc8edc8edc000000004edc4edc0000000000007cba7cba9ba900000000bdcbbdcbbdcb000000000000000000000000000000000000000000000000eedcadca0000000000000000000000009dcafedceedc2a9800008edc00000000000000002a98eedceedc00000000eedc00005edc8edc5edc0000eedceedc2edc0000ecb900009cb9fcb99cb92edceedcecb9acb90000000000000000000000009cb9fcb900000000000000000000000000000000000000005eee8eee000000000000000000000000000000005ea78ea70000bc940000bc94ceee000000000000543384330000000000000000000000000000000000000000000000000000000000000000000000008da58da5fda5fda50000fda50000accbaccb00003a743a745a745a7400004a8400008aa98baa00000000000000000000000000000000000000000000fd95fda4fd940000fdbbfdcefdbb000000000000fda5fda5fda40000fdbbfdcefdbb000000000000bb84ac94bb840000cbaacbacbbaa0000000000000000000000000000000000000000000000000000fedcfffffedc0000ffffffffffff000000000000fedcfffffedc0000ffffffffffff000000000000cdcbceeebdcb0000eeeeeeeeeeee000000000000"}},{"__cWid":13,"__cHei":14,"identifier":"seats","uid":18,"relPath":"tilesets/WA_Seats.png","embedAtlas":null,"pxWid":416,"pxHei":448,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"00000000000000100100010010000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000","averageColors":"4ddb4dcb4ddb458a458a458a0000000000000000000000000000fdcbfdcbfdcbf579f579f5790000fdcbfdcbfdcbf579f579f5794ddb1edc2edc0edc2edc2edc0000000000001edc1edc00000000fdcb3dcbfcba3cbafdcbfdcb0000fdcbfcbafdcbfdcb000000003ba93ba93ba93fc53fc53fc500001fd51bb900003e631e630000baa8eaa8baa8ceb4feb4ceb40000dec4caa80000bd53dd6300001aab1aab000000005baa5baa00001aab00000aaa0aaa00000000b999b999aa879a87aa99aa990000ca98ba879a999a99000000000000000000000000000000000000000000000000000000000000799968884a994a9929992999288828884999388800000000000000000000000000001a981a98198719872a982987000000000000ea73ea7300006b846b840000fccb7bba5c950000000000000000185208520852a973a9730000fccb76797dba7bac7eb5000000007b846b846b840000000000003766000000000000000000000000"}},{"__cWid":10,"__cHei":11,"identifier":"misc","uid":20,"relPath":"tilesets/WA_Miscellaneous.png","embedAtlas":null,"pxWid":320,"pxHei":352,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"00000000000000000000000000000000000001000000100000000000000000000000000000000000000000000000000000000000000000","averageColors":"9bcc679a4aaa4aaa1546154517772545254517779cdd6445154525451545254525562445244525561bbb1bbb0000a999655665561ddd6eee0fff00006aaa6aaa00001cba2cba1cba1ccdfccd0ccc0000879b979b879bcedcffec6edc4557000000000000479a579a479a6dcb7ddb3cba365676561cca1cba5777277748772678277826775545000000000000000028880000266837782667377900004ca9000000000000000000000000000000000000000000007cca6ba96a647db84a7329872ba70000000000008cca8ccb7dcb7c964a812cb83eed000000000000"}},{"__cWid":25,"__cHei":34,"identifier":"exterior","uid":24,"relPath":"tilesets/WA_Exterior.png","embedAtlas":null,"pxWid":800,"pxHei":1088,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010010010010000000000000000000000000000000000000000000000000000000000000111101111000000000000000011110111100000000000000001111011110000000000000000101001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111110000000011111111111111000000000001111111111111111000000000111111111111000000000000011111111111100000000100001111111111110000000000000111111111111000000000000011111111111100000000100001111111111110000000000000111111111111","averageColors":"b7a3b6920000b9c3b8b30000bbb3baa30000b8a3b7920000b7a4b79300000000000000000000000000000000000000000000e681e4610000e8b2e6910000e9a2e7810000e681e5610000e683e4620000000000000000000000000000000000000000000065426442000065626562000066526552000065526542000065526442000000000000000000000000000000000000000000004682e8a3446148b2eac346914aa2ecc448814681e8a345614682e8a4446200000000000000000000000000000000000000007571f581735077a2f8b275817991f9a276717671f68174507583f683745300000000000000000000000000000000000000001231b54212311351b56213411441b65213411231b54213311242b542123100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f792f692f793f6930000f472f472f372f3720000000000000000000000000000000000000000000000000000000000000000f692f792f693f7930000f582f472f273f2720000000000000000000000000000000000000000000000000000000000000000f792f692f793f6930000f472f472f372f3720000000000000000000000000000000000000000000000000000000000000000f681f461f683f4620000f582f472f273f26300000000000000000000000000000000000000000000000000000000000000003472335200003592347200003183316300000000000000000000000000000000000000000000000000000000000000000000b472c3620000b582c4720000b183c17300000000000000000000000000000000000000000000000000000000000000000000b462b4520000b572b4720000b273b26300007472736288a48572000000000000000000000000000000000000000000000000036264620000047165820251016261730000a462a352979395620000000000000000000000000000000000000000000000004462f46243524582f58244624173f173416300000000000000000000000000000000000000000000000000000000000000005362d45243524471d57244615173d36341620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013830000000015920000000000000000000000000000000000000000000000000000000096a29581c691c591559145811372f37313721472f4721472000000000000000000000000000000000000000000000000000058975796899868865998499800003251000000003351000000000000000000000000000000000000000000000000000000000dc51dc50dc61eed1eed1dec56941361147114710000000000000000000000000000000000000000000000000000000000002cc54dc52cc52eed3eed2eed1d781d783a723a7200000000000000000000000000000000000000000000000000000000000000001cc500001eed2eed0ddc1d781d783a723a720000000000000000000000000000000000000000000000000000000000002ca12ba11da02eed1ddc00001d78196516683a720000000000000000000000000000000000000000000000000000000000001db239901ca21eec1add169a28752975196a0000000000000000000000000000000000000000000000000000000000000000f6a3f6a0fac3f9b5f9b50000b5918591747084702edd00000000faa9faa9faa9f999f48bf48bf48bf8b5f8b4f8b4f8b5f8a5faa9f2330000000000004ddc5591859135913ec51c7700000000faa9faa9faa9faa9f343f333f343f8b5f9b5f9b5f9b5f9b5f37df2aff799fade00008bbaa591859025910000000000000000f9aaf9aafaa9f998f38bf38bf38bf8a4f9b5f9b5f9b5f9b50000000000000000000000000000043215320432000000000000f9aaf9aafaa9faa9f2aff3aef2aff9b5f9b5f9b5f9b5f9b5c963d753a963a9645643153256436753f9646753000000000000faa9faa9faa9faa9f2aff2aff2aff9b5f9a6f896f8a5f9b5c974e764c753c754544400000000143235321432000000000000faa9f988faa9f2aff2aff7adf2aff2aff79cf998f898f7990000000015551555755575552555032158530321000000000000f39ff964f39ff7aef3aef2aff6abf2aff9c6f9a6f8a5f79948643754556655654555455515651321f9641321000000000000f9b5f884f9b5fab8f2aff877f765f9b5fac6fac7fac7f798a864976335653565846784564444032288530322000000000000f9b5f9b5f9b5f9b5f9b5f9b5f9b5f9b5f9c6fac6f9b5f799"}},{"__cWid":3,"__cHei":1,"identifier":"matrixlogo","uid":26,"relPath":"tilesets/matrix-logo.png","embedAtlas":null,"pxWid":96,"pxHei":32,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"000","averageColors":"300030003000"}},{"__cWid":13,"__cHei":21,"identifier":"user_interface","uid":30,"relPath":"tilesets/WA_User_Interface.png","embedAtlas":null,"pxWid":416,"pxHei":672,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000001000000000000000000000000000000000000011100000000000000000000000","averageColors":"2112dfffd0e7d35fdfe2df450000000000000000000000000000633443346aaa33336445433400000000f2a600001777adee177753343434322363342112222300000000f35c00002777fdde277742232334733433345435433400000000fbb300004458c333445842233334666733344445433300000000fb350000224b124b224b43343445322333343324854500000000f2b6000000000000000053342223000000000000000000000000fb450000000000000000000000000000000000000000000000000000000000000000000055ad5ec75c55000072233223322332233223222322232223222304be0ed70d43000032232223222322232223122312231223122356ad5ec75c5500007aaa3aaa3aaa3aaa3aaa2aaa2aaa2aaa2aaa2555a333255500003aaa2aaa2aaa2aaa2aaa1aaa1aaa1aaa1aaa099928880999000071a531a531a531a531a521a521a521a521a52777ffff2777000031a521a521a521a521a511a511a511a511a50887122208870000724b324b324b324b324b224b224b224b224b1777aeee17770000324b224b224b224b224b124b124b124b124b2777ffff277700007aa23aa23aa23aa23aa22aa22aa22aa22aa208871222088700003aa22aa22aa22aa22aa21aa21aa21aa21aa2adddaeeeaddd00007b343b343b343b343b342b342b342b342b34feeefffffeee00003b342b342b342b342b341b341b341b341b341333122213330000000000000000000000000000000000000000"}},{"__cWid":8,"__cHei":8,"identifier":"user","uid":75,"relPath":"tilesets/user.png","embedAtlas":null,"pxWid":128,"pxHei":128,"tileGridSize":16,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"0000000000000000000000000001000100000000000000000000000000010001","averageColors":"5da75da85da75da84b774a774b774a776c965c966c965c9669555955695559556ca86ca86ca86ca86a775a776a775a776ca86ca85ca8f9f55a885a885a88f9f55eba5eca5eba5eca4a8a4a8a4a8a4a8a6dc95dc96dc95dc967695769676957696dbb6dbb6dbb6dbb697a598a697a598a6dba6dba5dbaf9f55a895a895a89f9f5"}}],"enums":[],"externalEnums":[],"levelFields":[]},"levels":[{"identifier":"level_0","iid":"13e88970-d7b0-11ee-8fc4-1506233b34d6","uid":0,"worldX":-512,"worldY":-320,"worldDepth":0,"pxWid":1056,"pxHei":672,"__bgColor":"#696A79","bgColor":null,"useAutoIdentifier":true,"bgRelPath":null,"bgPos":null,"bgPivotX":0.5,"bgPivotY":0.5,"__smartColor":"#ADADB5","__bgPos":null,"externalRelPath":null,"fieldInstances":[],"layerInstances":[{"__identifier":"entities","__type":"Entities","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"de515780-d7b0-11ee-9c16-036cc1399f27","levelId":0,"layerDefUid":77,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":4959938,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"floorlayer","__type":"Entities","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"f41b7c80-d7b0-11ee-92be-cff17510b118","levelId":0,"layerDefUid":3,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3971335,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"on_table","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":20,"__tilesetRelPath":"tilesets/WA_Miscellaneous.png","iid":"d9047d50-d7b0-11ee-bac6-2b677c1af41d","levelId":0,"layerDefUid":21,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":8097068,"overrideTilesetUid":null,"gridTiles":[{"px":[192,160],"src":[0,32],"f":0,"t":10,"d":[171],"a":1}],"entityInstances":[]},{"__identifier":"tables","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":16,"__tilesetRelPath":"tilesets/WA_Tables.png","iid":"8acdc100-d7b0-11ee-bac6-ef97ebc36f86","levelId":0,"layerDefUid":17,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":5312860,"overrideTilesetUid":null,"gridTiles":[{"px":[160,160],"src":[0,128],"f":0,"t":40,"d":[170],"a":1},{"px":[192,160],"src":[32,128],"f":0,"t":41,"d":[171],"a":1},{"px":[160,192],"src":[0,160],"f":0,"t":50,"d":[203],"a":1},{"px":[192,192],"src":[32,160],"f":0,"t":51,"d":[204],"a":1}],"entityInstances":[]},{"__identifier":"seats_behind","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":18,"__tilesetRelPath":"tilesets/WA_Seats.png","iid":"a75a68a0-d7b0-11ee-bac6-930ebfb6473b","levelId":0,"layerDefUid":19,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":2817471,"overrideTilesetUid":null,"gridTiles":[{"px":[192,160],"src":[224,96],"f":0,"t":46,"d":[171],"a":1}],"entityInstances":[]},{"__identifier":"furniture","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":12,"__tilesetRelPath":"tilesets/WA_Other_Furniture.png","iid":"d61e1bb0-d7b0-11ee-bac6-cb01099be1a4","levelId":0,"layerDefUid":13,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":1632038,"overrideTilesetUid":null,"gridTiles":[{"px":[96,64],"src":[320,32],"f":0,"t":22,"d":[69],"a":1},{"px":[128,64],"src":[352,32],"f":0,"t":23,"d":[70],"a":1},{"px":[160,64],"src":[320,32],"f":0,"t":22,"d":[71],"a":1},{"px":[192,64],"src":[352,32],"f":0,"t":23,"d":[72],"a":1},{"px":[224,64],"src":[320,32],"f":0,"t":22,"d":[73],"a":1},{"px":[256,64],"src":[352,32],"f":0,"t":23,"d":[74],"a":1},{"px":[96,96],"src":[320,64],"f":0,"t":34,"d":[102],"a":1},{"px":[128,96],"src":[352,64],"f":0,"t":35,"d":[103],"a":1},{"px":[160,96],"src":[320,64],"f":0,"t":34,"d":[104],"a":1},{"px":[192,96],"src":[352,64],"f":0,"t":35,"d":[105],"a":1},{"px":[224,96],"src":[320,64],"f":0,"t":34,"d":[106],"a":1},{"px":[256,96],"src":[352,64],"f":0,"t":35,"d":[107],"a":1},{"px":[96,128],"src":[320,96],"f":0,"t":46,"d":[135],"a":1},{"px":[128,128],"src":[352,96],"f":0,"t":47,"d":[136],"a":1},{"px":[160,128],"src":[320,96],"f":0,"t":46,"d":[137],"a":1},{"px":[192,128],"src":[352,96],"f":0,"t":47,"d":[138],"a":1},{"px":[224,128],"src":[320,96],"f":0,"t":46,"d":[139],"a":1},{"px":[256,128],"src":[352,96],"f":0,"t":47,"d":[140],"a":1}],"entityInstances":[]},{"__identifier":"outdoor_decoration","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":24,"__tilesetRelPath":"tilesets/WA_Exterior.png","iid":"fcb59380-d7b0-11ee-bac6-71ef2915912a","levelId":0,"layerDefUid":25,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3937992,"overrideTilesetUid":null,"gridTiles":[{"px":[64,384],"src":[0,448],"f":0,"t":350,"d":[398],"a":1},{"px":[96,384],"src":[32,448],"f":0,"t":351,"d":[399],"a":1},{"px":[128,384],"src":[64,448],"f":0,"t":352,"d":[400],"a":1},{"px":[64,416],"src":[0,480],"f":0,"t":375,"d":[431],"a":1},{"px":[96,416],"src":[32,480],"f":0,"t":376,"d":[432],"a":1},{"px":[128,416],"src":[64,480],"f":0,"t":377,"d":[433],"a":1},{"px":[320,416],"src":[0,448],"f":0,"t":350,"d":[439],"a":1},{"px":[352,416],"src":[32,448],"f":0,"t":351,"d":[440],"a":1},{"px":[384,416],"src":[64,448],"f":0,"t":352,"d":[441],"a":1},{"px":[576,416],"src":[0,448],"f":0,"t":350,"d":[447],"a":1},{"px":[608,416],"src":[32,448],"f":0,"t":351,"d":[448],"a":1},{"px":[640,416],"src":[64,448],"f":0,"t":352,"d":[449],"a":1},{"px":[64,448],"src":[0,512],"f":0,"t":400,"d":[464],"a":1},{"px":[96,448],"src":[32,512],"f":0,"t":401,"d":[465],"a":1},{"px":[128,448],"src":[64,512],"f":0,"t":402,"d":[466],"a":1},{"px":[128,448],"src":[352,416],"f":0,"t":336,"d":[466],"a":1},{"px":[160,448],"src":[384,416],"f":0,"t":337,"d":[467],"a":1},{"px":[320,448],"src":[0,480],"f":0,"t":375,"d":[472],"a":1},{"px":[352,448],"src":[32,480],"f":0,"t":376,"d":[473],"a":1},{"px":[384,448],"src":[0,608],"f":0,"t":475,"d":[474],"a":1},{"px":[384,448],"src":[64,480],"f":0,"t":377,"d":[474],"a":1},{"px":[416,448],"src":[32,608],"f":0,"t":476,"d":[475],"a":1},{"px":[512,448],"src":[0,640],"f":0,"t":500,"d":[478],"a":1},{"px":[544,448],"src":[32,640],"f":0,"t":501,"d":[479],"a":1},{"px":[576,448],"src":[64,640],"f":0,"t":502,"d":[480],"a":1},{"px":[576,448],"src":[0,480],"f":0,"t":375,"d":[480],"a":1},{"px":[608,448],"src":[32,480],"f":0,"t":376,"d":[481],"a":1},{"px":[640,448],"src":[64,480],"f":0,"t":377,"d":[482],"a":1},{"px":[768,448],"src":[96,640],"f":0,"t":503,"d":[486],"a":1},{"px":[800,448],"src":[128,640],"f":0,"t":504,"d":[487],"a":1},{"px":[832,448],"src":[160,640],"f":0,"t":505,"d":[488],"a":1},{"px":[832,448],"src":[64,992],"f":0,"t":777,"d":[488],"a":1},{"px":[864,448],"src":[0,832],"f":0,"t":650,"d":[489],"a":1},{"px":[896,448],"src":[0,832],"f":0,"t":650,"d":[490],"a":1},{"px":[928,448],"src":[96,992],"f":0,"t":778,"d":[491],"a":1},{"px":[128,480],"src":[0,640],"f":0,"t":500,"d":[499],"a":1},{"px":[128,480],"src":[352,448],"f":0,"t":361,"d":[499],"a":1},{"px":[160,480],"src":[32,640],"f":0,"t":501,"d":[500],"a":1},{"px":[160,480],"src":[384,448],"f":0,"t":362,"d":[500],"a":1},{"px":[192,480],"src":[64,640],"f":0,"t":502,"d":[501],"a":1},{"px":[224,480],"src":[0,736],"f":0,"t":575,"d":[502],"a":1},{"px":[224,480],"src":[0,448],"f":0,"t":350,"d":[502],"a":1},{"px":[256,480],"src":[32,736],"f":0,"t":576,"d":[503],"a":1},{"px":[256,480],"src":[32,448],"f":0,"t":351,"d":[503],"a":1},{"px":[288,480],"src":[64,448],"f":0,"t":352,"d":[504],"a":1},{"px":[288,480],"src":[352,416],"f":0,"t":336,"d":[504],"a":1},{"px":[320,480],"src":[0,512],"f":0,"t":400,"d":[505],"a":1},{"px":[320,480],"src":[384,416],"f":0,"t":337,"d":[505],"a":1},{"px":[352,480],"src":[32,512],"f":0,"t":401,"d":[506],"a":1},{"px":[384,480],"src":[64,512],"f":0,"t":402,"d":[507],"a":1},{"px":[384,480],"src":[352,416],"f":0,"t":336,"d":[507],"a":1},{"px":[416,480],"src":[384,416],"f":0,"t":337,"d":[508],"a":1},{"px":[448,480],"src":[0,736],"f":0,"t":575,"d":[509],"a":1},{"px":[480,480],"src":[32,736],"f":0,"t":576,"d":[510],"a":1},{"px":[512,480],"src":[0,672],"f":0,"t":525,"d":[511],"a":1},{"px":[544,480],"src":[32,672],"f":0,"t":526,"d":[512],"a":1},{"px":[576,480],"src":[64,672],"f":0,"t":527,"d":[513],"a":1},{"px":[576,480],"src":[0,512],"f":0,"t":400,"d":[513],"a":1},{"px":[608,480],"src":[32,512],"f":0,"t":401,"d":[514],"a":1},{"px":[640,480],"src":[0,448],"f":0,"t":350,"d":[515],"a":1},{"px":[640,480],"src":[64,512],"f":0,"t":402,"d":[515],"a":1},{"px":[672,480],"src":[32,448],"f":0,"t":351,"d":[516],"a":1},{"px":[704,480],"src":[0,736],"f":0,"t":575,"d":[517],"a":1},{"px":[704,480],"src":[64,448],"f":0,"t":352,"d":[517],"a":1},{"px":[736,480],"src":[32,736],"f":0,"t":576,"d":[518],"a":1},{"px":[768,480],"src":[96,672],"f":0,"t":528,"d":[519],"a":1},{"px":[800,480],"src":[128,672],"f":0,"t":529,"d":[520],"a":1},{"px":[832,480],"src":[160,672],"f":0,"t":530,"d":[521],"a":1},{"px":[832,480],"src":[64,1024],"f":0,"t":802,"d":[521],"a":1},{"px":[832,480],"src":[64,992],"f":0,"t":777,"d":[521],"a":1},{"px":[864,480],"src":[0,832],"f":0,"t":650,"d":[522],"a":1},{"px":[896,480],"src":[0,832],"f":0,"t":650,"d":[523],"a":1},{"px":[928,480],"src":[96,1024],"f":0,"t":803,"d":[524],"a":1},{"px":[928,480],"src":[96,992],"f":0,"t":778,"d":[524],"a":1},{"px":[128,512],"src":[0,672],"f":0,"t":525,"d":[532],"a":1},{"px":[160,512],"src":[32,672],"f":0,"t":526,"d":[533],"a":1},{"px":[192,512],"src":[64,672],"f":0,"t":527,"d":[534],"a":1},{"px":[224,512],"src":[0,480],"f":0,"t":375,"d":[535],"a":1},{"px":[256,512],"src":[32,480],"f":0,"t":376,"d":[536],"a":1},{"px":[288,512],"src":[64,480],"f":0,"t":377,"d":[537],"a":1},{"px":[288,512],"src":[352,448],"f":0,"t":361,"d":[537],"a":1},{"px":[320,512],"src":[96,640],"f":0,"t":503,"d":[538],"a":1},{"px":[320,512],"src":[384,448],"f":0,"t":362,"d":[538],"a":1},{"px":[352,512],"src":[128,640],"f":0,"t":504,"d":[539],"a":1},{"px":[384,512],"src":[160,640],"f":0,"t":505,"d":[540],"a":1},{"px":[384,512],"src":[352,448],"f":0,"t":361,"d":[540],"a":1},{"px":[416,512],"src":[384,448],"f":0,"t":362,"d":[541],"a":1},{"px":[512,512],"src":[0,704],"f":0,"t":550,"d":[544],"a":1},{"px":[544,512],"src":[32,704],"f":0,"t":551,"d":[545],"a":1},{"px":[576,512],"src":[64,704],"f":0,"t":552,"d":[546],"a":1},{"px":[640,512],"src":[0,480],"f":0,"t":375,"d":[548],"a":1},{"px":[672,512],"src":[32,480],"f":0,"t":376,"d":[549],"a":1},{"px":[704,512],"src":[64,480],"f":0,"t":377,"d":[550],"a":1},{"px":[768,512],"src":[96,704],"f":0,"t":553,"d":[552],"a":1},{"px":[800,512],"src":[128,704],"f":0,"t":554,"d":[553],"a":1},{"px":[832,512],"src":[160,704],"f":0,"t":555,"d":[554],"a":1},{"px":[832,512],"src":[64,1056],"f":0,"t":827,"d":[554],"a":1},{"px":[832,512],"src":[64,1024],"f":0,"t":802,"d":[554],"a":1},{"px":[832,512],"src":[64,992],"f":0,"t":777,"d":[554],"a":1},{"px":[864,512],"src":[0,832],"f":0,"t":650,"d":[555],"a":1},{"px":[896,512],"src":[0,832],"f":0,"t":650,"d":[556],"a":1},{"px":[928,512],"src":[96,1056],"f":0,"t":828,"d":[557],"a":1},{"px":[928,512],"src":[96,1024],"f":0,"t":803,"d":[557],"a":1},{"px":[928,512],"src":[96,992],"f":0,"t":778,"d":[557],"a":1},{"px":[128,544],"src":[0,704],"f":0,"t":550,"d":[565],"a":1},{"px":[160,544],"src":[32,704],"f":0,"t":551,"d":[566],"a":1},{"px":[160,544],"src":[0,736],"f":0,"t":575,"d":[566],"a":1},{"px":[192,544],"src":[64,704],"f":0,"t":552,"d":[567],"a":1},{"px":[192,544],"src":[32,736],"f":0,"t":576,"d":[567],"a":1},{"px":[224,544],"src":[0,512],"f":0,"t":400,"d":[568],"a":1},{"px":[256,544],"src":[32,512],"f":0,"t":401,"d":[569],"a":1},{"px":[288,544],"src":[64,512],"f":0,"t":402,"d":[570],"a":1},{"px":[320,544],"src":[96,672],"f":0,"t":528,"d":[571],"a":1},{"px":[352,544],"src":[128,672],"f":0,"t":529,"d":[572],"a":1},{"px":[384,544],"src":[160,672],"f":0,"t":530,"d":[573],"a":1},{"px":[480,544],"src":[0,608],"f":0,"t":475,"d":[576],"a":1},{"px":[512,544],"src":[32,608],"f":0,"t":476,"d":[577],"a":1},{"px":[608,544],"src":[0,736],"f":0,"t":575,"d":[580],"a":1},{"px":[640,544],"src":[32,736],"f":0,"t":576,"d":[581],"a":1},{"px":[640,544],"src":[0,512],"f":0,"t":400,"d":[581],"a":1},{"px":[672,544],"src":[32,512],"f":0,"t":401,"d":[582],"a":1},{"px":[704,544],"src":[64,512],"f":0,"t":402,"d":[583],"a":1},{"px":[736,544],"src":[0,608],"f":0,"t":475,"d":[584],"a":1},{"px":[768,544],"src":[32,608],"f":0,"t":476,"d":[585],"a":1},{"px":[832,544],"src":[64,1056],"f":0,"t":827,"d":[587],"a":1},{"px":[832,544],"src":[64,1024],"f":0,"t":802,"d":[587],"a":1},{"px":[864,544],"src":[0,832],"f":0,"t":650,"d":[588],"a":1},{"px":[896,544],"src":[0,832],"f":0,"t":650,"d":[589],"a":1},{"px":[928,544],"src":[96,1056],"f":0,"t":828,"d":[590],"a":1},{"px":[928,544],"src":[96,1024],"f":0,"t":803,"d":[590],"a":1},{"px":[320,576],"src":[96,704],"f":0,"t":553,"d":[604],"a":1},{"px":[352,576],"src":[128,704],"f":0,"t":554,"d":[605],"a":1},{"px":[384,576],"src":[160,704],"f":0,"t":555,"d":[606],"a":1},{"px":[832,576],"src":[64,1056],"f":0,"t":827,"d":[620],"a":1},{"px":[864,576],"src":[0,832],"f":0,"t":650,"d":[621],"a":1},{"px":[896,576],"src":[0,832],"f":0,"t":650,"d":[622],"a":1},{"px":[928,576],"src":[96,1056],"f":0,"t":828,"d":[623],"a":1}],"entityInstances":[]},{"__identifier":"wall_decoration","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":26,"__tilesetRelPath":"tilesets/matrix-logo.png","iid":"c9ff6930-d7b0-11ee-bac6-3914f694b92f","levelId":0,"layerDefUid":27,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":895449,"overrideTilesetUid":26,"gridTiles":[{"px":[768,384],"src":[0,0],"f":0,"t":0,"d":[420],"a":1},{"px":[800,384],"src":[32,0],"f":0,"t":1,"d":[421],"a":1},{"px":[832,384],"src":[64,0],"f":0,"t":2,"d":[422],"a":1}],"entityInstances":[]},{"__identifier":"walls_visuals","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"626ba620-d7b0-11ee-92be-11c3dc3566b0","levelId":0,"layerDefUid":1,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":9760451,"overrideTilesetUid":2,"gridTiles":[{"px":[64,64],"src":[96,32],"f":0,"t":28,"d":[68],"a":1},{"px":[96,64],"src":[128,128],"f":0,"t":104,"d":[69],"a":1},{"px":[128,64],"src":[128,128],"f":0,"t":104,"d":[70],"a":1},{"px":[160,64],"src":[128,128],"f":0,"t":104,"d":[71],"a":1},{"px":[192,64],"src":[128,128],"f":0,"t":104,"d":[72],"a":1},{"px":[224,64],"src":[128,128],"f":0,"t":104,"d":[73],"a":1},{"px":[256,64],"src":[128,128],"f":0,"t":104,"d":[74],"a":1},{"px":[288,64],"src":[320,192],"f":0,"t":160,"d":[75],"a":1},{"px":[320,64],"src":[128,128],"f":0,"t":104,"d":[76],"a":1},{"px":[352,64],"src":[128,128],"f":0,"t":104,"d":[77],"a":1},{"px":[384,64],"src":[128,128],"f":0,"t":104,"d":[78],"a":1},{"px":[416,64],"src":[128,128],"f":0,"t":104,"d":[79],"a":1},{"px":[448,64],"src":[128,128],"f":0,"t":104,"d":[80],"a":1},{"px":[480,64],"src":[128,128],"f":0,"t":104,"d":[81],"a":1},{"px":[512,64],"src":[128,128],"f":0,"t":104,"d":[82],"a":1},{"px":[544,64],"src":[128,128],"f":0,"t":104,"d":[83],"a":1},{"px":[576,64],"src":[128,128],"f":0,"t":104,"d":[84],"a":1},{"px":[608,64],"src":[128,128],"f":0,"t":104,"d":[85],"a":1},{"px":[640,64],"src":[128,128],"f":0,"t":104,"d":[86],"a":1},{"px":[672,64],"src":[128,128],"f":0,"t":104,"d":[87],"a":1},{"px":[704,64],"src":[128,128],"f":0,"t":104,"d":[88],"a":1},{"px":[736,64],"src":[128,128],"f":0,"t":104,"d":[89],"a":1},{"px":[768,64],"src":[128,128],"f":0,"t":104,"d":[90],"a":1},{"px":[800,64],"src":[128,128],"f":0,"t":104,"d":[91],"a":1},{"px":[832,64],"src":[128,128],"f":0,"t":104,"d":[92],"a":1},{"px":[864,64],"src":[128,128],"f":0,"t":104,"d":[93],"a":1},{"px":[896,64],"src":[128,128],"f":0,"t":104,"d":[94],"a":1},{"px":[928,64],"src":[128,128],"f":0,"t":104,"d":[95],"a":1},{"px":[960,64],"src":[128,32],"f":0,"t":29,"d":[96],"a":1},{"px":[64,96],"src":[64,128],"f":0,"t":102,"d":[101],"a":1},{"px":[96,96],"src":[0,256],"f":0,"t":200,"d":[102],"a":1},{"px":[128,96],"src":[32,256],"f":0,"t":201,"d":[103],"a":1},{"px":[160,96],"src":[0,256],"f":0,"t":200,"d":[104],"a":1},{"px":[192,96],"src":[32,256],"f":0,"t":201,"d":[105],"a":1},{"px":[224,96],"src":[0,256],"f":0,"t":200,"d":[106],"a":1},{"px":[256,96],"src":[32,256],"f":0,"t":201,"d":[107],"a":1},{"px":[288,96],"src":[64,128],"f":0,"t":102,"d":[108],"a":1},{"px":[320,96],"src":[96,256],"f":0,"t":203,"d":[109],"a":1},{"px":[352,96],"src":[96,256],"f":0,"t":203,"d":[110],"a":1},{"px":[384,96],"src":[96,256],"f":0,"t":203,"d":[111],"a":1},{"px":[416,96],"src":[96,256],"f":0,"t":203,"d":[112],"a":1},{"px":[448,96],"src":[96,256],"f":0,"t":203,"d":[113],"a":1},{"px":[480,96],"src":[96,256],"f":0,"t":203,"d":[114],"a":1},{"px":[512,96],"src":[96,256],"f":0,"t":203,"d":[115],"a":1},{"px":[544,96],"src":[96,256],"f":0,"t":203,"d":[116],"a":1},{"px":[576,96],"src":[96,256],"f":0,"t":203,"d":[117],"a":1},{"px":[608,96],"src":[96,256],"f":0,"t":203,"d":[118],"a":1},{"px":[640,96],"src":[96,256],"f":0,"t":203,"d":[119],"a":1},{"px":[672,96],"src":[96,256],"f":0,"t":203,"d":[120],"a":1},{"px":[704,96],"src":[96,256],"f":0,"t":203,"d":[121],"a":1},{"px":[736,96],"src":[96,256],"f":0,"t":203,"d":[122],"a":1},{"px":[768,96],"src":[96,256],"f":0,"t":203,"d":[123],"a":1},{"px":[800,96],"src":[96,256],"f":0,"t":203,"d":[124],"a":1},{"px":[832,96],"src":[96,256],"f":0,"t":203,"d":[125],"a":1},{"px":[864,96],"src":[96,256],"f":0,"t":203,"d":[126],"a":1},{"px":[896,96],"src":[96,256],"f":0,"t":203,"d":[127],"a":1},{"px":[928,96],"src":[96,256],"f":0,"t":203,"d":[128],"a":1},{"px":[960,96],"src":[64,128],"f":0,"t":102,"d":[129],"a":1},{"px":[64,128],"src":[64,128],"f":0,"t":102,"d":[134],"a":1},{"px":[96,128],"src":[0,288],"f":0,"t":225,"d":[135],"a":1},{"px":[128,128],"src":[32,288],"f":0,"t":226,"d":[136],"a":1},{"px":[160,128],"src":[0,288],"f":0,"t":225,"d":[137],"a":1},{"px":[192,128],"src":[32,288],"f":0,"t":226,"d":[138],"a":1},{"px":[224,128],"src":[0,288],"f":0,"t":225,"d":[139],"a":1},{"px":[256,128],"src":[32,288],"f":0,"t":226,"d":[140],"a":1},{"px":[288,128],"src":[64,128],"f":0,"t":102,"d":[141],"a":1},{"px":[320,128],"src":[96,288],"f":0,"t":228,"d":[142],"a":1},{"px":[352,128],"src":[96,288],"f":0,"t":228,"d":[143],"a":1},{"px":[384,128],"src":[96,288],"f":0,"t":228,"d":[144],"a":1},{"px":[416,128],"src":[96,288],"f":0,"t":228,"d":[145],"a":1},{"px":[448,128],"src":[96,288],"f":0,"t":228,"d":[146],"a":1},{"px":[480,128],"src":[96,288],"f":0,"t":228,"d":[147],"a":1},{"px":[512,128],"src":[96,288],"f":0,"t":228,"d":[148],"a":1},{"px":[544,128],"src":[96,288],"f":0,"t":228,"d":[149],"a":1},{"px":[576,128],"src":[96,288],"f":0,"t":228,"d":[150],"a":1},{"px":[608,128],"src":[96,288],"f":0,"t":228,"d":[151],"a":1},{"px":[640,128],"src":[96,288],"f":0,"t":228,"d":[152],"a":1},{"px":[672,128],"src":[96,288],"f":0,"t":228,"d":[153],"a":1},{"px":[704,128],"src":[96,288],"f":0,"t":228,"d":[154],"a":1},{"px":[736,128],"src":[96,288],"f":0,"t":228,"d":[155],"a":1},{"px":[768,128],"src":[96,288],"f":0,"t":228,"d":[156],"a":1},{"px":[800,128],"src":[96,288],"f":0,"t":228,"d":[157],"a":1},{"px":[832,128],"src":[96,288],"f":0,"t":228,"d":[158],"a":1},{"px":[864,128],"src":[96,288],"f":0,"t":228,"d":[159],"a":1},{"px":[896,128],"src":[96,288],"f":0,"t":228,"d":[160],"a":1},{"px":[928,128],"src":[96,288],"f":0,"t":228,"d":[161],"a":1},{"px":[960,128],"src":[64,128],"f":0,"t":102,"d":[162],"a":1},{"px":[64,160],"src":[64,128],"f":0,"t":102,"d":[167],"a":1},{"px":[288,160],"src":[192,64],"f":0,"t":56,"d":[174],"a":1},{"px":[960,160],"src":[64,128],"f":0,"t":102,"d":[195],"a":1},{"px":[64,192],"src":[64,128],"f":0,"t":102,"d":[200],"a":1},{"px":[288,192],"src":[0,256],"f":0,"t":200,"d":[207],"a":1},{"px":[960,192],"src":[64,128],"f":0,"t":102,"d":[228],"a":1},{"px":[64,224],"src":[64,128],"f":0,"t":102,"d":[233],"a":1},{"px":[288,224],"src":[0,288],"f":0,"t":225,"d":[240],"a":1},{"px":[960,224],"src":[64,128],"f":0,"t":102,"d":[261],"a":1},{"px":[64,256],"src":[64,128],"f":0,"t":102,"d":[266],"a":1},{"px":[288,256],"src":[0,480],"f":0,"t":375,"d":[273],"a":1},{"px":[960,256],"src":[64,128],"f":0,"t":102,"d":[294],"a":1},{"px":[64,288],"src":[64,128],"f":0,"t":102,"d":[299],"a":1},{"px":[288,288],"src":[192,32],"f":0,"t":31,"d":[306],"a":1},{"px":[960,288],"src":[64,128],"f":0,"t":102,"d":[327],"a":1},{"px":[64,320],"src":[64,128],"f":0,"t":102,"d":[332],"a":1},{"px":[288,320],"src":[64,128],"f":0,"t":102,"d":[339],"a":1},{"px":[960,320],"src":[64,128],"f":0,"t":102,"d":[360],"a":1},{"px":[64,352],"src":[96,64],"f":0,"t":53,"d":[365],"a":1},{"px":[96,352],"src":[128,128],"f":0,"t":104,"d":[366],"a":1},{"px":[128,352],"src":[128,128],"f":0,"t":104,"d":[367],"a":1},{"px":[160,352],"src":[128,128],"f":0,"t":104,"d":[368],"a":1},{"px":[192,352],"src":[128,128],"f":0,"t":104,"d":[369],"a":1},{"px":[224,352],"src":[128,128],"f":0,"t":104,"d":[370],"a":1},{"px":[256,352],"src":[128,128],"f":0,"t":104,"d":[371],"a":1},{"px":[288,352],"src":[320,128],"f":0,"t":110,"d":[372],"a":1},{"px":[320,352],"src":[128,128],"f":0,"t":104,"d":[373],"a":1},{"px":[352,352],"src":[128,128],"f":0,"t":104,"d":[374],"a":1},{"px":[384,352],"src":[128,128],"f":0,"t":104,"d":[375],"a":1},{"px":[416,352],"src":[128,128],"f":0,"t":104,"d":[376],"a":1},{"px":[448,352],"src":[128,128],"f":0,"t":104,"d":[377],"a":1},{"px":[480,352],"src":[128,128],"f":0,"t":104,"d":[378],"a":1},{"px":[512,352],"src":[128,128],"f":0,"t":104,"d":[379],"a":1},{"px":[544,352],"src":[128,128],"f":0,"t":104,"d":[380],"a":1},{"px":[576,352],"src":[128,128],"f":0,"t":104,"d":[381],"a":1},{"px":[608,352],"src":[128,128],"f":0,"t":104,"d":[382],"a":1},{"px":[640,352],"src":[128,128],"f":0,"t":104,"d":[383],"a":1},{"px":[672,352],"src":[128,128],"f":0,"t":104,"d":[384],"a":1},{"px":[704,352],"src":[128,128],"f":0,"t":104,"d":[385],"a":1},{"px":[736,352],"src":[128,128],"f":0,"t":104,"d":[386],"a":1},{"px":[768,352],"src":[128,128],"f":0,"t":104,"d":[387],"a":1},{"px":[800,352],"src":[128,128],"f":0,"t":104,"d":[388],"a":1},{"px":[832,352],"src":[416,64],"f":0,"t":63,"d":[389],"a":1},{"px":[864,352],"src":[448,64],"f":0,"t":64,"d":[390],"a":1},{"px":[896,352],"src":[448,64],"f":0,"t":64,"d":[391],"a":1},{"px":[928,352],"src":[480,64],"f":0,"t":65,"d":[392],"a":1},{"px":[960,352],"src":[128,64],"f":0,"t":54,"d":[393],"a":1},{"px":[64,384],"src":[320,352],"f":0,"t":285,"d":[398],"a":1},{"px":[96,384],"src":[320,352],"f":0,"t":285,"d":[399],"a":1},{"px":[128,384],"src":[320,352],"f":0,"t":285,"d":[400],"a":1},{"px":[160,384],"src":[320,352],"f":0,"t":285,"d":[401],"a":1},{"px":[192,384],"src":[320,352],"f":0,"t":285,"d":[402],"a":1},{"px":[224,384],"src":[320,352],"f":0,"t":285,"d":[403],"a":1},{"px":[256,384],"src":[320,352],"f":0,"t":285,"d":[404],"a":1},{"px":[288,384],"src":[320,352],"f":0,"t":285,"d":[405],"a":1},{"px":[320,384],"src":[320,352],"f":0,"t":285,"d":[406],"a":1},{"px":[352,384],"src":[320,352],"f":0,"t":285,"d":[407],"a":1},{"px":[384,384],"src":[320,352],"f":0,"t":285,"d":[408],"a":1},{"px":[416,384],"src":[320,352],"f":0,"t":285,"d":[409],"a":1},{"px":[448,384],"src":[320,352],"f":0,"t":285,"d":[410],"a":1},{"px":[480,384],"src":[320,352],"f":0,"t":285,"d":[411],"a":1},{"px":[512,384],"src":[320,352],"f":0,"t":285,"d":[412],"a":1},{"px":[544,384],"src":[320,352],"f":0,"t":285,"d":[413],"a":1},{"px":[576,384],"src":[320,352],"f":0,"t":285,"d":[414],"a":1},{"px":[608,384],"src":[320,352],"f":0,"t":285,"d":[415],"a":1},{"px":[640,384],"src":[320,352],"f":0,"t":285,"d":[416],"a":1},{"px":[672,384],"src":[320,352],"f":0,"t":285,"d":[417],"a":1},{"px":[704,384],"src":[320,352],"f":0,"t":285,"d":[418],"a":1},{"px":[736,384],"src":[320,352],"f":0,"t":285,"d":[419],"a":1},{"px":[768,384],"src":[320,352],"f":0,"t":285,"d":[420],"a":1},{"px":[800,384],"src":[320,352],"f":0,"t":285,"d":[421],"a":1},{"px":[832,384],"src":[320,352],"f":0,"t":285,"d":[422],"a":1},{"px":[864,384],"src":[320,1216],"f":1,"t":960,"d":[423],"a":1},{"px":[896,384],"src":[320,1216],"f":0,"t":960,"d":[424],"a":1},{"px":[928,384],"src":[320,352],"f":0,"t":285,"d":[425],"a":1},{"px":[960,384],"src":[320,352],"f":0,"t":285,"d":[426],"a":1},{"px":[64,416],"src":[320,352],"f":0,"t":285,"d":[431],"a":1},{"px":[96,416],"src":[320,352],"f":0,"t":285,"d":[432],"a":1},{"px":[128,416],"src":[320,352],"f":0,"t":285,"d":[433],"a":1},{"px":[160,416],"src":[320,352],"f":0,"t":285,"d":[434],"a":1},{"px":[192,416],"src":[320,352],"f":0,"t":285,"d":[435],"a":1},{"px":[224,416],"src":[320,352],"f":0,"t":285,"d":[436],"a":1},{"px":[256,416],"src":[320,352],"f":0,"t":285,"d":[437],"a":1},{"px":[288,416],"src":[320,352],"f":0,"t":285,"d":[438],"a":1},{"px":[320,416],"src":[320,352],"f":0,"t":285,"d":[439],"a":1},{"px":[352,416],"src":[320,352],"f":0,"t":285,"d":[440],"a":1},{"px":[384,416],"src":[320,352],"f":0,"t":285,"d":[441],"a":1},{"px":[416,416],"src":[320,352],"f":0,"t":285,"d":[442],"a":1},{"px":[448,416],"src":[320,352],"f":0,"t":285,"d":[443],"a":1},{"px":[480,416],"src":[320,352],"f":0,"t":285,"d":[444],"a":1},{"px":[512,416],"src":[320,352],"f":0,"t":285,"d":[445],"a":1},{"px":[544,416],"src":[320,352],"f":0,"t":285,"d":[446],"a":1},{"px":[576,416],"src":[320,352],"f":0,"t":285,"d":[447],"a":1},{"px":[608,416],"src":[320,352],"f":0,"t":285,"d":[448],"a":1},{"px":[640,416],"src":[320,352],"f":0,"t":285,"d":[449],"a":1},{"px":[672,416],"src":[320,352],"f":0,"t":285,"d":[450],"a":1},{"px":[704,416],"src":[320,352],"f":0,"t":285,"d":[451],"a":1},{"px":[736,416],"src":[320,352],"f":0,"t":285,"d":[452],"a":1},{"px":[768,416],"src":[320,352],"f":0,"t":285,"d":[453],"a":1},{"px":[800,416],"src":[320,352],"f":0,"t":285,"d":[454],"a":1},{"px":[832,416],"src":[320,352],"f":0,"t":285,"d":[455],"a":1},{"px":[864,416],"src":[320,1248],"f":1,"t":985,"d":[456],"a":1},{"px":[896,416],"src":[320,1248],"f":0,"t":985,"d":[457],"a":1},{"px":[928,416],"src":[320,352],"f":0,"t":285,"d":[458],"a":1},{"px":[960,416],"src":[320,352],"f":0,"t":285,"d":[459],"a":1}],"entityInstances":[]},{"__identifier":"ui","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":30,"__tilesetRelPath":"tilesets/WA_User_Interface.png","iid":"b0c73c60-d7b0-11ee-bac6-f77771722a98","levelId":0,"layerDefUid":29,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":2709547,"overrideTilesetUid":null,"gridTiles":[{"px":[352,160],"src":[160,576],"f":0,"t":239,"d":[176],"a":1},{"px":[384,160],"src":[192,576],"f":0,"t":240,"d":[177],"a":1},{"px":[416,160],"src":[256,192],"f":0,"t":86,"d":[178],"a":1},{"px":[352,192],"src":[256,576],"f":0,"t":242,"d":[209],"a":1},{"px":[384,192],"src":[224,576],"f":0,"t":241,"d":[210],"a":1}],"entityInstances":[]},{"__identifier":"floor","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"f71b3cd0-d7b0-11ee-bac6-356daeb081ff","levelId":0,"layerDefUid":14,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":780396,"overrideTilesetUid":null,"gridTiles":[{"px":[96,160],"src":[0,480],"f":0,"t":375,"d":[168],"a":1},{"px":[128,160],"src":[0,480],"f":0,"t":375,"d":[169],"a":1},{"px":[160,160],"src":[0,480],"f":0,"t":375,"d":[170],"a":1},{"px":[192,160],"src":[0,480],"f":0,"t":375,"d":[171],"a":1},{"px":[224,160],"src":[0,480],"f":0,"t":375,"d":[172],"a":1},{"px":[256,160],"src":[0,480],"f":0,"t":375,"d":[173],"a":1},{"px":[320,160],"src":[160,448],"f":0,"t":355,"d":[175],"a":1},{"px":[352,160],"src":[160,448],"f":0,"t":355,"d":[176],"a":1},{"px":[384,160],"src":[160,448],"f":0,"t":355,"d":[177],"a":1},{"px":[416,160],"src":[160,448],"f":0,"t":355,"d":[178],"a":1},{"px":[448,160],"src":[160,448],"f":0,"t":355,"d":[179],"a":1},{"px":[480,160],"src":[160,448],"f":0,"t":355,"d":[180],"a":1},{"px":[512,160],"src":[160,448],"f":0,"t":355,"d":[181],"a":1},{"px":[544,160],"src":[160,448],"f":0,"t":355,"d":[182],"a":1},{"px":[576,160],"src":[160,448],"f":0,"t":355,"d":[183],"a":1},{"px":[608,160],"src":[160,448],"f":0,"t":355,"d":[184],"a":1},{"px":[640,160],"src":[160,448],"f":0,"t":355,"d":[185],"a":1},{"px":[672,160],"src":[160,448],"f":0,"t":355,"d":[186],"a":1},{"px":[704,160],"src":[160,448],"f":0,"t":355,"d":[187],"a":1},{"px":[736,160],"src":[160,448],"f":0,"t":355,"d":[188],"a":1},{"px":[768,160],"src":[160,448],"f":0,"t":355,"d":[189],"a":1},{"px":[800,160],"src":[160,448],"f":0,"t":355,"d":[190],"a":1},{"px":[832,160],"src":[160,448],"f":0,"t":355,"d":[191],"a":1},{"px":[864,160],"src":[160,448],"f":0,"t":355,"d":[192],"a":1},{"px":[896,160],"src":[160,448],"f":0,"t":355,"d":[193],"a":1},{"px":[928,160],"src":[160,448],"f":0,"t":355,"d":[194],"a":1},{"px":[96,192],"src":[0,480],"f":0,"t":375,"d":[201],"a":1},{"px":[128,192],"src":[0,480],"f":0,"t":375,"d":[202],"a":1},{"px":[160,192],"src":[0,480],"f":0,"t":375,"d":[203],"a":1},{"px":[192,192],"src":[0,480],"f":0,"t":375,"d":[204],"a":1},{"px":[224,192],"src":[0,480],"f":0,"t":375,"d":[205],"a":1},{"px":[256,192],"src":[0,480],"f":0,"t":375,"d":[206],"a":1},{"px":[320,192],"src":[160,448],"f":0,"t":355,"d":[208],"a":1},{"px":[352,192],"src":[160,448],"f":0,"t":355,"d":[209],"a":1},{"px":[384,192],"src":[160,448],"f":0,"t":355,"d":[210],"a":1},{"px":[416,192],"src":[160,448],"f":0,"t":355,"d":[211],"a":1},{"px":[448,192],"src":[160,448],"f":0,"t":355,"d":[212],"a":1},{"px":[480,192],"src":[160,448],"f":0,"t":355,"d":[213],"a":1},{"px":[512,192],"src":[160,448],"f":0,"t":355,"d":[214],"a":1},{"px":[544,192],"src":[160,448],"f":0,"t":355,"d":[215],"a":1},{"px":[576,192],"src":[160,448],"f":0,"t":355,"d":[216],"a":1},{"px":[608,192],"src":[160,448],"f":0,"t":355,"d":[217],"a":1},{"px":[640,192],"src":[160,448],"f":0,"t":355,"d":[218],"a":1},{"px":[672,192],"src":[160,448],"f":0,"t":355,"d":[219],"a":1},{"px":[704,192],"src":[160,448],"f":0,"t":355,"d":[220],"a":1},{"px":[736,192],"src":[160,448],"f":0,"t":355,"d":[221],"a":1},{"px":[768,192],"src":[160,448],"f":0,"t":355,"d":[222],"a":1},{"px":[800,192],"src":[160,448],"f":0,"t":355,"d":[223],"a":1},{"px":[832,192],"src":[160,448],"f":0,"t":355,"d":[224],"a":1},{"px":[864,192],"src":[160,448],"f":0,"t":355,"d":[225],"a":1},{"px":[896,192],"src":[160,448],"f":0,"t":355,"d":[226],"a":1},{"px":[928,192],"src":[160,448],"f":0,"t":355,"d":[227],"a":1},{"px":[96,224],"src":[0,480],"f":0,"t":375,"d":[234],"a":1},{"px":[128,224],"src":[0,480],"f":0,"t":375,"d":[235],"a":1},{"px":[160,224],"src":[0,480],"f":0,"t":375,"d":[236],"a":1},{"px":[192,224],"src":[0,480],"f":0,"t":375,"d":[237],"a":1},{"px":[224,224],"src":[0,480],"f":0,"t":375,"d":[238],"a":1},{"px":[256,224],"src":[0,480],"f":0,"t":375,"d":[239],"a":1},{"px":[320,224],"src":[160,448],"f":0,"t":355,"d":[241],"a":1},{"px":[352,224],"src":[160,448],"f":0,"t":355,"d":[242],"a":1},{"px":[384,224],"src":[160,448],"f":0,"t":355,"d":[243],"a":1},{"px":[416,224],"src":[160,448],"f":0,"t":355,"d":[244],"a":1},{"px":[448,224],"src":[160,448],"f":0,"t":355,"d":[245],"a":1},{"px":[480,224],"src":[160,448],"f":0,"t":355,"d":[246],"a":1},{"px":[512,224],"src":[160,448],"f":0,"t":355,"d":[247],"a":1},{"px":[544,224],"src":[160,448],"f":0,"t":355,"d":[248],"a":1},{"px":[576,224],"src":[160,448],"f":0,"t":355,"d":[249],"a":1},{"px":[608,224],"src":[160,448],"f":0,"t":355,"d":[250],"a":1},{"px":[640,224],"src":[160,448],"f":0,"t":355,"d":[251],"a":1},{"px":[672,224],"src":[160,448],"f":0,"t":355,"d":[252],"a":1},{"px":[704,224],"src":[160,448],"f":0,"t":355,"d":[253],"a":1},{"px":[736,224],"src":[160,448],"f":0,"t":355,"d":[254],"a":1},{"px":[768,224],"src":[160,448],"f":0,"t":355,"d":[255],"a":1},{"px":[800,224],"src":[160,448],"f":0,"t":355,"d":[256],"a":1},{"px":[832,224],"src":[160,448],"f":0,"t":355,"d":[257],"a":1},{"px":[864,224],"src":[160,448],"f":0,"t":355,"d":[258],"a":1},{"px":[896,224],"src":[160,448],"f":0,"t":355,"d":[259],"a":1},{"px":[928,224],"src":[160,448],"f":0,"t":355,"d":[260],"a":1},{"px":[96,256],"src":[0,480],"f":0,"t":375,"d":[267],"a":1},{"px":[128,256],"src":[0,480],"f":0,"t":375,"d":[268],"a":1},{"px":[160,256],"src":[0,480],"f":0,"t":375,"d":[269],"a":1},{"px":[192,256],"src":[0,480],"f":0,"t":375,"d":[270],"a":1},{"px":[224,256],"src":[0,480],"f":0,"t":375,"d":[271],"a":1},{"px":[256,256],"src":[0,480],"f":0,"t":375,"d":[272],"a":1},{"px":[320,256],"src":[160,448],"f":0,"t":355,"d":[274],"a":1},{"px":[352,256],"src":[160,448],"f":0,"t":355,"d":[275],"a":1},{"px":[384,256],"src":[160,448],"f":0,"t":355,"d":[276],"a":1},{"px":[416,256],"src":[160,448],"f":0,"t":355,"d":[277],"a":1},{"px":[448,256],"src":[160,448],"f":0,"t":355,"d":[278],"a":1},{"px":[480,256],"src":[160,448],"f":0,"t":355,"d":[279],"a":1},{"px":[512,256],"src":[160,448],"f":0,"t":355,"d":[280],"a":1},{"px":[544,256],"src":[160,448],"f":0,"t":355,"d":[281],"a":1},{"px":[576,256],"src":[160,448],"f":0,"t":355,"d":[282],"a":1},{"px":[608,256],"src":[160,448],"f":0,"t":355,"d":[283],"a":1},{"px":[640,256],"src":[160,448],"f":0,"t":355,"d":[284],"a":1},{"px":[672,256],"src":[160,448],"f":0,"t":355,"d":[285],"a":1},{"px":[704,256],"src":[160,448],"f":0,"t":355,"d":[286],"a":1},{"px":[736,256],"src":[160,448],"f":0,"t":355,"d":[287],"a":1},{"px":[768,256],"src":[160,448],"f":0,"t":355,"d":[288],"a":1},{"px":[800,256],"src":[160,448],"f":0,"t":355,"d":[289],"a":1},{"px":[832,256],"src":[160,448],"f":0,"t":355,"d":[290],"a":1},{"px":[864,256],"src":[160,448],"f":0,"t":355,"d":[291],"a":1},{"px":[896,256],"src":[160,448],"f":0,"t":355,"d":[292],"a":1},{"px":[928,256],"src":[160,448],"f":0,"t":355,"d":[293],"a":1},{"px":[96,288],"src":[0,480],"f":0,"t":375,"d":[300],"a":1},{"px":[128,288],"src":[0,480],"f":0,"t":375,"d":[301],"a":1},{"px":[160,288],"src":[0,480],"f":0,"t":375,"d":[302],"a":1},{"px":[192,288],"src":[0,480],"f":0,"t":375,"d":[303],"a":1},{"px":[224,288],"src":[0,480],"f":0,"t":375,"d":[304],"a":1},{"px":[256,288],"src":[0,480],"f":0,"t":375,"d":[305],"a":1},{"px":[320,288],"src":[160,448],"f":0,"t":355,"d":[307],"a":1},{"px":[352,288],"src":[160,448],"f":0,"t":355,"d":[308],"a":1},{"px":[384,288],"src":[160,448],"f":0,"t":355,"d":[309],"a":1},{"px":[416,288],"src":[160,448],"f":0,"t":355,"d":[310],"a":1},{"px":[448,288],"src":[160,448],"f":0,"t":355,"d":[311],"a":1},{"px":[480,288],"src":[160,448],"f":0,"t":355,"d":[312],"a":1},{"px":[512,288],"src":[160,448],"f":0,"t":355,"d":[313],"a":1},{"px":[544,288],"src":[160,448],"f":0,"t":355,"d":[314],"a":1},{"px":[576,288],"src":[160,448],"f":0,"t":355,"d":[315],"a":1},{"px":[608,288],"src":[160,448],"f":0,"t":355,"d":[316],"a":1},{"px":[640,288],"src":[160,448],"f":0,"t":355,"d":[317],"a":1},{"px":[672,288],"src":[160,448],"f":0,"t":355,"d":[318],"a":1},{"px":[704,288],"src":[160,448],"f":0,"t":355,"d":[319],"a":1},{"px":[736,288],"src":[160,448],"f":0,"t":355,"d":[320],"a":1},{"px":[768,288],"src":[160,448],"f":0,"t":355,"d":[321],"a":1},{"px":[800,288],"src":[160,448],"f":0,"t":355,"d":[322],"a":1},{"px":[832,288],"src":[160,448],"f":0,"t":355,"d":[323],"a":1},{"px":[864,288],"src":[160,448],"f":0,"t":355,"d":[324],"a":1},{"px":[896,288],"src":[160,448],"f":0,"t":355,"d":[325],"a":1},{"px":[928,288],"src":[160,448],"f":0,"t":355,"d":[326],"a":1},{"px":[96,320],"src":[0,480],"f":0,"t":375,"d":[333],"a":1},{"px":[128,320],"src":[0,480],"f":0,"t":375,"d":[334],"a":1},{"px":[160,320],"src":[0,480],"f":0,"t":375,"d":[335],"a":1},{"px":[192,320],"src":[0,480],"f":0,"t":375,"d":[336],"a":1},{"px":[224,320],"src":[0,480],"f":0,"t":375,"d":[337],"a":1},{"px":[256,320],"src":[0,480],"f":0,"t":375,"d":[338],"a":1},{"px":[320,320],"src":[160,448],"f":0,"t":355,"d":[340],"a":1},{"px":[352,320],"src":[160,448],"f":0,"t":355,"d":[341],"a":1},{"px":[384,320],"src":[160,448],"f":0,"t":355,"d":[342],"a":1},{"px":[416,320],"src":[160,448],"f":0,"t":355,"d":[343],"a":1},{"px":[448,320],"src":[160,448],"f":0,"t":355,"d":[344],"a":1},{"px":[480,320],"src":[160,448],"f":0,"t":355,"d":[345],"a":1},{"px":[512,320],"src":[160,448],"f":0,"t":355,"d":[346],"a":1},{"px":[544,320],"src":[160,448],"f":0,"t":355,"d":[347],"a":1},{"px":[576,320],"src":[160,448],"f":0,"t":355,"d":[348],"a":1},{"px":[608,320],"src":[160,448],"f":0,"t":355,"d":[349],"a":1},{"px":[640,320],"src":[160,448],"f":0,"t":355,"d":[350],"a":1},{"px":[672,320],"src":[160,448],"f":0,"t":355,"d":[351],"a":1},{"px":[704,320],"src":[160,448],"f":0,"t":355,"d":[352],"a":1},{"px":[736,320],"src":[160,448],"f":0,"t":355,"d":[353],"a":1},{"px":[768,320],"src":[160,448],"f":0,"t":355,"d":[354],"a":1},{"px":[800,320],"src":[160,448],"f":0,"t":355,"d":[355],"a":1},{"px":[832,320],"src":[160,448],"f":0,"t":355,"d":[356],"a":1},{"px":[864,320],"src":[160,448],"f":0,"t":355,"d":[357],"a":1},{"px":[896,320],"src":[160,448],"f":0,"t":355,"d":[358],"a":1},{"px":[928,320],"src":[160,448],"f":0,"t":355,"d":[359],"a":1},{"px":[864,352],"src":[160,448],"f":0,"t":355,"d":[390],"a":1},{"px":[896,352],"src":[160,448],"f":0,"t":355,"d":[391],"a":1},{"px":[864,384],"src":[160,448],"f":0,"t":355,"d":[423],"a":1},{"px":[896,384],"src":[160,448],"f":0,"t":355,"d":[424],"a":1},{"px":[864,416],"src":[160,448],"f":0,"t":355,"d":[456],"a":1},{"px":[896,416],"src":[160,448],"f":0,"t":355,"d":[457],"a":1}],"entityInstances":[]},{"__identifier":"outdoorfloor","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":24,"__tilesetRelPath":"tilesets/WA_Exterior.png","iid":"d1c43aa0-d7b0-11ee-bac6-79b8dad265bc","levelId":0,"layerDefUid":23,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":2185977,"overrideTilesetUid":null,"gridTiles":[{"px":[64,448],"src":[96,800],"f":0,"t":628,"d":[464],"a":1},{"px":[96,448],"src":[128,800],"f":0,"t":629,"d":[465],"a":1},{"px":[128,448],"src":[128,800],"f":0,"t":629,"d":[466],"a":1},{"px":[160,448],"src":[128,800],"f":0,"t":629,"d":[467],"a":1},{"px":[192,448],"src":[96,800],"f":0,"t":628,"d":[468],"a":1},{"px":[224,448],"src":[128,800],"f":0,"t":629,"d":[469],"a":1},{"px":[256,448],"src":[128,800],"f":0,"t":629,"d":[470],"a":1},{"px":[288,448],"src":[96,800],"f":0,"t":628,"d":[471],"a":1},{"px":[320,448],"src":[128,800],"f":0,"t":629,"d":[472],"a":1},{"px":[352,448],"src":[96,800],"f":0,"t":628,"d":[473],"a":1},{"px":[384,448],"src":[128,800],"f":0,"t":629,"d":[474],"a":1},{"px":[416,448],"src":[128,800],"f":0,"t":629,"d":[475],"a":1},{"px":[448,448],"src":[128,800],"f":0,"t":629,"d":[476],"a":1},{"px":[480,448],"src":[128,800],"f":0,"t":629,"d":[477],"a":1},{"px":[512,448],"src":[128,800],"f":0,"t":629,"d":[478],"a":1},{"px":[544,448],"src":[128,800],"f":0,"t":629,"d":[479],"a":1},{"px":[576,448],"src":[96,800],"f":0,"t":628,"d":[480],"a":1},{"px":[608,448],"src":[128,800],"f":0,"t":629,"d":[481],"a":1},{"px":[640,448],"src":[96,800],"f":0,"t":628,"d":[482],"a":1},{"px":[672,448],"src":[96,800],"f":0,"t":628,"d":[483],"a":1},{"px":[704,448],"src":[96,800],"f":0,"t":628,"d":[484],"a":1},{"px":[736,448],"src":[96,800],"f":0,"t":628,"d":[485],"a":1},{"px":[768,448],"src":[96,800],"f":0,"t":628,"d":[486],"a":1},{"px":[800,448],"src":[96,800],"f":0,"t":628,"d":[487],"a":1},{"px":[832,448],"src":[128,800],"f":0,"t":629,"d":[488],"a":1},{"px":[864,448],"src":[128,800],"f":0,"t":629,"d":[489],"a":1},{"px":[896,448],"src":[96,800],"f":0,"t":628,"d":[490],"a":1},{"px":[928,448],"src":[96,800],"f":0,"t":628,"d":[491],"a":1},{"px":[960,448],"src":[128,800],"f":0,"t":629,"d":[492],"a":1},{"px":[64,480],"src":[96,800],"f":0,"t":628,"d":[497],"a":1},{"px":[96,480],"src":[128,800],"f":0,"t":629,"d":[498],"a":1},{"px":[128,480],"src":[128,800],"f":0,"t":629,"d":[499],"a":1},{"px":[160,480],"src":[96,800],"f":0,"t":628,"d":[500],"a":1},{"px":[192,480],"src":[96,800],"f":0,"t":628,"d":[501],"a":1},{"px":[224,480],"src":[96,800],"f":0,"t":628,"d":[502],"a":1},{"px":[256,480],"src":[96,800],"f":0,"t":628,"d":[503],"a":1},{"px":[288,480],"src":[96,800],"f":0,"t":628,"d":[504],"a":1},{"px":[320,480],"src":[96,800],"f":0,"t":628,"d":[505],"a":1},{"px":[352,480],"src":[128,800],"f":0,"t":629,"d":[506],"a":1},{"px":[384,480],"src":[128,800],"f":0,"t":629,"d":[507],"a":1},{"px":[416,480],"src":[96,800],"f":0,"t":628,"d":[508],"a":1},{"px":[448,480],"src":[128,800],"f":0,"t":629,"d":[509],"a":1},{"px":[480,480],"src":[96,800],"f":0,"t":628,"d":[510],"a":1},{"px":[512,480],"src":[128,800],"f":0,"t":629,"d":[511],"a":1},{"px":[544,480],"src":[96,800],"f":0,"t":628,"d":[512],"a":1},{"px":[576,480],"src":[128,800],"f":0,"t":629,"d":[513],"a":1},{"px":[608,480],"src":[96,800],"f":0,"t":628,"d":[514],"a":1},{"px":[640,480],"src":[96,800],"f":0,"t":628,"d":[515],"a":1},{"px":[672,480],"src":[128,800],"f":0,"t":629,"d":[516],"a":1},{"px":[704,480],"src":[96,800],"f":0,"t":628,"d":[517],"a":1},{"px":[736,480],"src":[128,800],"f":0,"t":629,"d":[518],"a":1},{"px":[768,480],"src":[96,800],"f":0,"t":628,"d":[519],"a":1},{"px":[800,480],"src":[128,800],"f":0,"t":629,"d":[520],"a":1},{"px":[832,480],"src":[128,800],"f":0,"t":629,"d":[521],"a":1},{"px":[864,480],"src":[128,800],"f":0,"t":629,"d":[522],"a":1},{"px":[896,480],"src":[128,800],"f":0,"t":629,"d":[523],"a":1},{"px":[928,480],"src":[128,800],"f":0,"t":629,"d":[524],"a":1},{"px":[960,480],"src":[128,800],"f":0,"t":629,"d":[525],"a":1},{"px":[64,512],"src":[96,800],"f":0,"t":628,"d":[530],"a":1},{"px":[96,512],"src":[128,800],"f":0,"t":629,"d":[531],"a":1},{"px":[128,512],"src":[128,800],"f":0,"t":629,"d":[532],"a":1},{"px":[160,512],"src":[96,800],"f":0,"t":628,"d":[533],"a":1},{"px":[192,512],"src":[96,800],"f":0,"t":628,"d":[534],"a":1},{"px":[224,512],"src":[96,800],"f":0,"t":628,"d":[535],"a":1},{"px":[256,512],"src":[128,800],"f":0,"t":629,"d":[536],"a":1},{"px":[288,512],"src":[128,800],"f":0,"t":629,"d":[537],"a":1},{"px":[320,512],"src":[96,800],"f":0,"t":628,"d":[538],"a":1},{"px":[352,512],"src":[128,800],"f":0,"t":629,"d":[539],"a":1},{"px":[384,512],"src":[96,800],"f":0,"t":628,"d":[540],"a":1},{"px":[416,512],"src":[128,800],"f":0,"t":629,"d":[541],"a":1},{"px":[448,512],"src":[128,800],"f":0,"t":629,"d":[542],"a":1},{"px":[480,512],"src":[96,800],"f":0,"t":628,"d":[543],"a":1},{"px":[512,512],"src":[128,800],"f":0,"t":629,"d":[544],"a":1},{"px":[544,512],"src":[96,800],"f":0,"t":628,"d":[545],"a":1},{"px":[576,512],"src":[96,800],"f":0,"t":628,"d":[546],"a":1},{"px":[608,512],"src":[96,800],"f":0,"t":628,"d":[547],"a":1},{"px":[640,512],"src":[128,800],"f":0,"t":629,"d":[548],"a":1},{"px":[672,512],"src":[128,800],"f":0,"t":629,"d":[549],"a":1},{"px":[704,512],"src":[128,800],"f":0,"t":629,"d":[550],"a":1},{"px":[736,512],"src":[96,800],"f":0,"t":628,"d":[551],"a":1},{"px":[768,512],"src":[128,800],"f":0,"t":629,"d":[552],"a":1},{"px":[800,512],"src":[128,800],"f":0,"t":629,"d":[553],"a":1},{"px":[832,512],"src":[128,800],"f":0,"t":629,"d":[554],"a":1},{"px":[864,512],"src":[128,800],"f":0,"t":629,"d":[555],"a":1},{"px":[896,512],"src":[128,800],"f":0,"t":629,"d":[556],"a":1},{"px":[928,512],"src":[128,800],"f":0,"t":629,"d":[557],"a":1},{"px":[960,512],"src":[96,800],"f":0,"t":628,"d":[558],"a":1},{"px":[64,544],"src":[128,800],"f":0,"t":629,"d":[563],"a":1},{"px":[96,544],"src":[96,800],"f":0,"t":628,"d":[564],"a":1},{"px":[128,544],"src":[128,800],"f":0,"t":629,"d":[565],"a":1},{"px":[160,544],"src":[128,800],"f":0,"t":629,"d":[566],"a":1},{"px":[192,544],"src":[128,800],"f":0,"t":629,"d":[567],"a":1},{"px":[224,544],"src":[128,800],"f":0,"t":629,"d":[568],"a":1},{"px":[256,544],"src":[96,800],"f":0,"t":628,"d":[569],"a":1},{"px":[288,544],"src":[96,800],"f":0,"t":628,"d":[570],"a":1},{"px":[320,544],"src":[96,800],"f":0,"t":628,"d":[571],"a":1},{"px":[352,544],"src":[128,800],"f":0,"t":629,"d":[572],"a":1},{"px":[384,544],"src":[96,800],"f":0,"t":628,"d":[573],"a":1},{"px":[416,544],"src":[96,800],"f":0,"t":628,"d":[574],"a":1},{"px":[448,544],"src":[96,800],"f":0,"t":628,"d":[575],"a":1},{"px":[480,544],"src":[128,800],"f":0,"t":629,"d":[576],"a":1},{"px":[512,544],"src":[96,800],"f":0,"t":628,"d":[577],"a":1},{"px":[544,544],"src":[96,800],"f":0,"t":628,"d":[578],"a":1},{"px":[576,544],"src":[128,800],"f":0,"t":629,"d":[579],"a":1},{"px":[608,544],"src":[96,800],"f":0,"t":628,"d":[580],"a":1},{"px":[640,544],"src":[96,800],"f":0,"t":628,"d":[581],"a":1},{"px":[672,544],"src":[96,800],"f":0,"t":628,"d":[582],"a":1},{"px":[704,544],"src":[96,800],"f":0,"t":628,"d":[583],"a":1},{"px":[736,544],"src":[96,800],"f":0,"t":628,"d":[584],"a":1},{"px":[768,544],"src":[96,800],"f":0,"t":628,"d":[585],"a":1},{"px":[800,544],"src":[128,800],"f":0,"t":629,"d":[586],"a":1},{"px":[832,544],"src":[96,800],"f":0,"t":628,"d":[587],"a":1},{"px":[864,544],"src":[128,800],"f":0,"t":629,"d":[588],"a":1},{"px":[896,544],"src":[96,800],"f":0,"t":628,"d":[589],"a":1},{"px":[928,544],"src":[96,800],"f":0,"t":628,"d":[590],"a":1},{"px":[960,544],"src":[128,800],"f":0,"t":629,"d":[591],"a":1},{"px":[64,576],"src":[96,800],"f":0,"t":628,"d":[596],"a":1},{"px":[96,576],"src":[96,800],"f":0,"t":628,"d":[597],"a":1},{"px":[128,576],"src":[96,800],"f":0,"t":628,"d":[598],"a":1},{"px":[160,576],"src":[96,800],"f":0,"t":628,"d":[599],"a":1},{"px":[192,576],"src":[96,800],"f":0,"t":628,"d":[600],"a":1},{"px":[224,576],"src":[96,800],"f":0,"t":628,"d":[601],"a":1},{"px":[256,576],"src":[96,800],"f":0,"t":628,"d":[602],"a":1},{"px":[288,576],"src":[96,800],"f":0,"t":628,"d":[603],"a":1},{"px":[320,576],"src":[96,800],"f":0,"t":628,"d":[604],"a":1},{"px":[352,576],"src":[128,800],"f":0,"t":629,"d":[605],"a":1},{"px":[384,576],"src":[128,800],"f":0,"t":629,"d":[606],"a":1},{"px":[416,576],"src":[128,800],"f":0,"t":629,"d":[607],"a":1},{"px":[448,576],"src":[96,800],"f":0,"t":628,"d":[608],"a":1},{"px":[480,576],"src":[96,800],"f":0,"t":628,"d":[609],"a":1},{"px":[512,576],"src":[96,800],"f":0,"t":628,"d":[610],"a":1},{"px":[544,576],"src":[96,800],"f":0,"t":628,"d":[611],"a":1},{"px":[576,576],"src":[128,800],"f":0,"t":629,"d":[612],"a":1},{"px":[608,576],"src":[128,800],"f":0,"t":629,"d":[613],"a":1},{"px":[640,576],"src":[128,800],"f":0,"t":629,"d":[614],"a":1},{"px":[672,576],"src":[96,800],"f":0,"t":628,"d":[615],"a":1},{"px":[704,576],"src":[128,800],"f":0,"t":629,"d":[616],"a":1},{"px":[736,576],"src":[96,800],"f":0,"t":628,"d":[617],"a":1},{"px":[768,576],"src":[96,800],"f":0,"t":628,"d":[618],"a":1},{"px":[800,576],"src":[96,800],"f":0,"t":628,"d":[619],"a":1},{"px":[832,576],"src":[128,800],"f":0,"t":629,"d":[620],"a":1},{"px":[864,576],"src":[128,800],"f":0,"t":629,"d":[621],"a":1},{"px":[896,576],"src":[96,800],"f":0,"t":628,"d":[622],"a":1},{"px":[928,576],"src":[96,800],"f":0,"t":628,"d":[623],"a":1},{"px":[960,576],"src":[128,800],"f":0,"t":629,"d":[624],"a":1}],"entityInstances":[]},{"__identifier":"element_teleport_layer","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"42fbfa30-d7b0-11ee-bac6-210db21b03d2","levelId":0,"layerDefUid":31,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":9110959,"overrideTilesetUid":null,"gridTiles":[{"px":[352,160],"src":[160,0],"f":0,"t":5,"d":[176],"a":1},{"px":[384,160],"src":[160,0],"f":0,"t":5,"d":[177],"a":1},{"px":[352,192],"src":[160,0],"f":0,"t":5,"d":[209],"a":1},{"px":[384,192],"src":[160,0],"f":0,"t":5,"d":[210],"a":1}],"entityInstances":[]},{"__identifier":"matrix_teleport_layer","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"722ae370-d7b0-11ee-bac6-cbacaa0fe990","levelId":0,"layerDefUid":32,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":6438177,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"start","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"b64e2890-d7b0-11ee-bac6-0dc65fe1679b","levelId":0,"layerDefUid":22,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":7281494,"overrideTilesetUid":null,"gridTiles":[{"px":[864,448],"src":[32,0],"f":0,"t":1,"d":[489],"a":1},{"px":[896,448],"src":[32,0],"f":0,"t":1,"d":[490],"a":1},{"px":[864,480],"src":[32,0],"f":0,"t":1,"d":[522],"a":1},{"px":[896,480],"src":[32,0],"f":0,"t":1,"d":[523],"a":1},{"px":[864,512],"src":[32,0],"f":0,"t":1,"d":[555],"a":1},{"px":[896,512],"src":[32,0],"f":0,"t":1,"d":[556],"a":1},{"px":[864,544],"src":[32,0],"f":0,"t":1,"d":[588],"a":1},{"px":[896,544],"src":[32,0],"f":0,"t":1,"d":[589],"a":1},{"px":[864,576],"src":[32,0],"f":0,"t":1,"d":[621],"a":1},{"px":[896,576],"src":[32,0],"f":0,"t":1,"d":[622],"a":1}],"entityInstances":[]},{"__identifier":"walls","__type":"IntGrid","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"c1d97060-d7b0-11ee-9c16-eb03fb2b0b86","levelId":0,"layerDefUid":76,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"autoLayerTiles":[],"seed":3697551,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"test_room_autolayer","__type":"IntGrid","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"783f8fb0-d7b0-11ee-bac6-4334377119a6","levelId":0,"layerDefUid":35,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"autoLayerTiles":[],"seed":185189,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]}],"__neighbours":[]},{"identifier":"level_element","iid":"d7e25560-d7b0-11ee-bac6-f36c1fd24d4e","uid":28,"worldX":1184,"worldY":-640,"worldDepth":0,"pxWid":992,"pxHei":640,"__bgColor":"#696A79","bgColor":null,"useAutoIdentifier":false,"bgRelPath":null,"bgPos":null,"bgPivotX":0.5,"bgPivotY":0.5,"__smartColor":"#ADADB5","__bgPos":null,"externalRelPath":null,"fieldInstances":[],"layerInstances":[{"__identifier":"entities","__type":"Entities","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"de51a5a0-d7b0-11ee-9c16-1fab36c3e4b8","levelId":28,"layerDefUid":77,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":6474875,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"floorlayer","__type":"Entities","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"d7e27c70-d7b0-11ee-bac6-e52471eda00c","levelId":28,"layerDefUid":3,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":7336133,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"on_table","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":20,"__tilesetRelPath":"tilesets/WA_Miscellaneous.png","iid":"d7e27c71-d7b0-11ee-bac6-3d6b60dc9f21","levelId":28,"layerDefUid":21,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3524341,"overrideTilesetUid":null,"gridTiles":[{"px":[192,96],"src":[0,128],"f":0,"t":40,"d":[99],"a":1},{"px":[224,96],"src":[32,128],"f":0,"t":41,"d":[100],"a":1},{"px":[256,96],"src":[64,128],"f":0,"t":42,"d":[101],"a":1},{"px":[192,128],"src":[0,160],"f":0,"t":50,"d":[130],"a":1},{"px":[224,128],"src":[32,160],"f":0,"t":51,"d":[131],"a":1},{"px":[256,128],"src":[64,160],"f":0,"t":52,"d":[132],"a":1}],"entityInstances":[]},{"__identifier":"tables","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":16,"__tilesetRelPath":"tilesets/WA_Tables.png","iid":"d7e27c72-d7b0-11ee-bac6-6762fbdbd676","levelId":28,"layerDefUid":17,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":5867330,"overrideTilesetUid":null,"gridTiles":[{"px":[192,256],"src":[160,0],"f":0,"t":5,"d":[254],"a":1},{"px":[224,256],"src":[192,0],"f":0,"t":6,"d":[255],"a":1},{"px":[256,256],"src":[224,0],"f":0,"t":7,"d":[256],"a":1},{"px":[192,288],"src":[160,32],"f":0,"t":15,"d":[285],"a":1},{"px":[224,288],"src":[192,32],"f":0,"t":16,"d":[286],"a":1},{"px":[256,288],"src":[224,32],"f":0,"t":17,"d":[287],"a":1},{"px":[192,320],"src":[160,32],"f":0,"t":15,"d":[316],"a":1},{"px":[224,320],"src":[192,32],"f":0,"t":16,"d":[317],"a":1},{"px":[256,320],"src":[224,32],"f":0,"t":17,"d":[318],"a":1},{"px":[192,352],"src":[160,32],"f":0,"t":15,"d":[347],"a":1},{"px":[224,352],"src":[192,32],"f":0,"t":16,"d":[348],"a":1},{"px":[256,352],"src":[224,32],"f":0,"t":17,"d":[349],"a":1},{"px":[192,384],"src":[160,64],"f":0,"t":25,"d":[378],"a":1},{"px":[224,384],"src":[192,64],"f":0,"t":26,"d":[379],"a":1},{"px":[256,384],"src":[224,64],"f":0,"t":27,"d":[380],"a":1}],"entityInstances":[]},{"__identifier":"seats_behind","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":18,"__tilesetRelPath":"tilesets/WA_Seats.png","iid":"d7e27c73-d7b0-11ee-bac6-2deb77474758","levelId":28,"layerDefUid":19,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":9526857,"overrideTilesetUid":null,"gridTiles":[{"px":[160,288],"src":[96,288],"f":1,"t":120,"d":[284],"a":1},{"px":[288,288],"src":[96,288],"f":0,"t":120,"d":[288],"a":1},{"px":[160,320],"src":[96,288],"f":1,"t":120,"d":[315],"a":1},{"px":[288,320],"src":[96,288],"f":0,"t":120,"d":[319],"a":1},{"px":[160,352],"src":[96,288],"f":1,"t":120,"d":[346],"a":1},{"px":[288,352],"src":[96,288],"f":0,"t":120,"d":[350],"a":1}],"entityInstances":[]},{"__identifier":"furniture","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":12,"__tilesetRelPath":"tilesets/WA_Other_Furniture.png","iid":"d7e27c74-d7b0-11ee-bac6-498f975ff2ac","levelId":28,"layerDefUid":13,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":7823085,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"outdoor_decoration","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":24,"__tilesetRelPath":"tilesets/WA_Exterior.png","iid":"d7e2a380-d7b0-11ee-bac6-3f9e357e50f1","levelId":28,"layerDefUid":25,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":8328124,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"wall_decoration","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":26,"__tilesetRelPath":"tilesets/matrix-logo.png","iid":"d7e2a381-d7b0-11ee-bac6-99d06c2d5f2e","levelId":28,"layerDefUid":27,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":1698875,"overrideTilesetUid":26,"gridTiles":[{"px":[96,96],"src":[0,0],"f":0,"t":0,"d":[96],"a":1},{"px":[128,96],"src":[32,0],"f":0,"t":1,"d":[97],"a":1},{"px":[160,96],"src":[64,0],"f":0,"t":2,"d":[98],"a":1}],"entityInstances":[]},{"__identifier":"walls_visuals","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"d7e2a382-d7b0-11ee-bac6-053cf6a76790","levelId":28,"layerDefUid":1,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":6095843,"overrideTilesetUid":null,"gridTiles":[{"px":[64,64],"src":[96,32],"f":0,"t":28,"d":[64],"a":1},{"px":[96,64],"src":[128,128],"f":0,"t":104,"d":[65],"a":1},{"px":[128,64],"src":[128,128],"f":0,"t":104,"d":[66],"a":1},{"px":[160,64],"src":[128,128],"f":0,"t":104,"d":[67],"a":1},{"px":[192,64],"src":[128,128],"f":0,"t":104,"d":[68],"a":1},{"px":[224,64],"src":[128,128],"f":0,"t":104,"d":[69],"a":1},{"px":[256,64],"src":[128,128],"f":0,"t":104,"d":[70],"a":1},{"px":[288,64],"src":[128,128],"f":0,"t":104,"d":[71],"a":1},{"px":[320,64],"src":[128,128],"f":0,"t":104,"d":[72],"a":1},{"px":[352,64],"src":[128,32],"f":0,"t":29,"d":[73],"a":1},{"px":[64,96],"src":[64,128],"f":0,"t":102,"d":[95],"a":1},{"px":[96,96],"src":[256,256],"f":0,"t":208,"d":[96],"a":1},{"px":[128,96],"src":[160,256],"f":0,"t":205,"d":[97],"a":1},{"px":[160,96],"src":[192,256],"f":0,"t":206,"d":[98],"a":1},{"px":[192,96],"src":[160,256],"f":0,"t":205,"d":[99],"a":1},{"px":[224,96],"src":[192,256],"f":0,"t":206,"d":[100],"a":1},{"px":[256,96],"src":[160,256],"f":0,"t":205,"d":[101],"a":1},{"px":[288,96],"src":[192,256],"f":0,"t":206,"d":[102],"a":1},{"px":[320,96],"src":[288,256],"f":0,"t":209,"d":[103],"a":1},{"px":[352,96],"src":[64,128],"f":0,"t":102,"d":[104],"a":1},{"px":[64,128],"src":[64,128],"f":0,"t":102,"d":[126],"a":1},{"px":[96,128],"src":[256,288],"f":0,"t":233,"d":[127],"a":1},{"px":[128,128],"src":[160,288],"f":0,"t":230,"d":[128],"a":1},{"px":[160,128],"src":[192,288],"f":0,"t":231,"d":[129],"a":1},{"px":[192,128],"src":[160,288],"f":0,"t":230,"d":[130],"a":1},{"px":[224,128],"src":[192,288],"f":0,"t":231,"d":[131],"a":1},{"px":[256,128],"src":[160,288],"f":0,"t":230,"d":[132],"a":1},{"px":[288,128],"src":[192,288],"f":0,"t":231,"d":[133],"a":1},{"px":[320,128],"src":[288,288],"f":0,"t":234,"d":[134],"a":1},{"px":[352,128],"src":[64,128],"f":0,"t":102,"d":[135],"a":1},{"px":[64,160],"src":[64,128],"f":0,"t":102,"d":[157],"a":1},{"px":[352,160],"src":[64,128],"f":0,"t":102,"d":[166],"a":1},{"px":[64,192],"src":[64,128],"f":0,"t":102,"d":[188],"a":1},{"px":[352,192],"src":[64,128],"f":0,"t":102,"d":[197],"a":1},{"px":[64,224],"src":[64,128],"f":0,"t":102,"d":[219],"a":1},{"px":[352,224],"src":[64,128],"f":0,"t":102,"d":[228],"a":1},{"px":[64,256],"src":[64,128],"f":0,"t":102,"d":[250],"a":1},{"px":[352,256],"src":[64,128],"f":0,"t":102,"d":[259],"a":1},{"px":[64,288],"src":[64,128],"f":0,"t":102,"d":[281],"a":1},{"px":[352,288],"src":[64,128],"f":0,"t":102,"d":[290],"a":1},{"px":[64,320],"src":[64,128],"f":0,"t":102,"d":[312],"a":1},{"px":[352,320],"src":[64,128],"f":0,"t":102,"d":[321],"a":1},{"px":[64,352],"src":[64,128],"f":0,"t":102,"d":[343],"a":1},{"px":[352,352],"src":[64,128],"f":0,"t":102,"d":[352],"a":1},{"px":[64,384],"src":[64,128],"f":0,"t":102,"d":[374],"a":1},{"px":[352,384],"src":[64,128],"f":0,"t":102,"d":[383],"a":1},{"px":[64,416],"src":[64,128],"f":0,"t":102,"d":[405],"a":1},{"px":[352,416],"src":[64,128],"f":0,"t":102,"d":[414],"a":1},{"px":[64,448],"src":[64,128],"f":0,"t":102,"d":[436],"a":1},{"px":[352,448],"src":[64,128],"f":0,"t":102,"d":[445],"a":1},{"px":[64,480],"src":[96,64],"f":0,"t":53,"d":[467],"a":1},{"px":[96,480],"src":[128,128],"f":0,"t":104,"d":[468],"a":1},{"px":[128,480],"src":[128,128],"f":0,"t":104,"d":[469],"a":1},{"px":[160,480],"src":[128,128],"f":0,"t":104,"d":[470],"a":1},{"px":[192,480],"src":[128,128],"f":0,"t":104,"d":[471],"a":1},{"px":[224,480],"src":[128,128],"f":0,"t":104,"d":[472],"a":1},{"px":[256,480],"src":[128,128],"f":0,"t":104,"d":[473],"a":1},{"px":[288,480],"src":[128,128],"f":0,"t":104,"d":[474],"a":1},{"px":[320,480],"src":[128,128],"f":0,"t":104,"d":[475],"a":1},{"px":[352,480],"src":[128,64],"f":0,"t":54,"d":[476],"a":1},{"px":[64,512],"src":[320,384],"f":0,"t":310,"d":[498],"a":1},{"px":[96,512],"src":[320,384],"f":0,"t":310,"d":[499],"a":1},{"px":[128,512],"src":[320,384],"f":0,"t":310,"d":[500],"a":1},{"px":[160,512],"src":[320,384],"f":0,"t":310,"d":[501],"a":1},{"px":[192,512],"src":[320,384],"f":0,"t":310,"d":[502],"a":1},{"px":[224,512],"src":[320,384],"f":0,"t":310,"d":[503],"a":1},{"px":[256,512],"src":[320,384],"f":0,"t":310,"d":[504],"a":1},{"px":[288,512],"src":[320,384],"f":0,"t":310,"d":[505],"a":1},{"px":[320,512],"src":[320,384],"f":0,"t":310,"d":[506],"a":1},{"px":[352,512],"src":[320,384],"f":0,"t":310,"d":[507],"a":1},{"px":[64,544],"src":[320,384],"f":0,"t":310,"d":[529],"a":1},{"px":[96,544],"src":[320,384],"f":0,"t":310,"d":[530],"a":1},{"px":[128,544],"src":[320,384],"f":0,"t":310,"d":[531],"a":1},{"px":[160,544],"src":[320,384],"f":0,"t":310,"d":[532],"a":1},{"px":[192,544],"src":[320,384],"f":0,"t":310,"d":[533],"a":1},{"px":[224,544],"src":[320,384],"f":0,"t":310,"d":[534],"a":1},{"px":[256,544],"src":[320,384],"f":0,"t":310,"d":[535],"a":1},{"px":[288,544],"src":[320,384],"f":0,"t":310,"d":[536],"a":1},{"px":[320,544],"src":[320,384],"f":0,"t":310,"d":[537],"a":1},{"px":[352,544],"src":[320,384],"f":0,"t":310,"d":[538],"a":1}],"entityInstances":[]},{"__identifier":"ui","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":30,"__tilesetRelPath":"tilesets/WA_User_Interface.png","iid":"b0c78a80-d7b0-11ee-bac6-bf503144adbf","levelId":28,"layerDefUid":29,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":1991201,"overrideTilesetUid":null,"gridTiles":[{"px":[96,160],"src":[160,576],"f":0,"t":239,"d":[158],"a":1},{"px":[128,160],"src":[192,576],"f":0,"t":240,"d":[159],"a":1},{"px":[160,160],"src":[256,192],"f":0,"t":86,"d":[160],"a":1},{"px":[96,192],"src":[256,576],"f":0,"t":242,"d":[189],"a":1},{"px":[128,192],"src":[224,576],"f":0,"t":241,"d":[190],"a":1}],"entityInstances":[]},{"__identifier":"floor","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"d7e2a383-d7b0-11ee-bac6-6f2be83afbf2","levelId":28,"layerDefUid":14,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3071547,"overrideTilesetUid":null,"gridTiles":[{"px":[96,160],"src":[320,448],"f":0,"t":360,"d":[158],"a":1},{"px":[128,160],"src":[320,448],"f":0,"t":360,"d":[159],"a":1},{"px":[160,160],"src":[320,448],"f":0,"t":360,"d":[160],"a":1},{"px":[192,160],"src":[320,448],"f":0,"t":360,"d":[161],"a":1},{"px":[224,160],"src":[320,448],"f":0,"t":360,"d":[162],"a":1},{"px":[256,160],"src":[320,448],"f":0,"t":360,"d":[163],"a":1},{"px":[288,160],"src":[320,448],"f":0,"t":360,"d":[164],"a":1},{"px":[320,160],"src":[320,448],"f":0,"t":360,"d":[165],"a":1},{"px":[96,192],"src":[320,448],"f":0,"t":360,"d":[189],"a":1},{"px":[128,192],"src":[320,448],"f":0,"t":360,"d":[190],"a":1},{"px":[160,192],"src":[320,448],"f":0,"t":360,"d":[191],"a":1},{"px":[192,192],"src":[320,448],"f":0,"t":360,"d":[192],"a":1},{"px":[224,192],"src":[320,448],"f":0,"t":360,"d":[193],"a":1},{"px":[256,192],"src":[320,448],"f":0,"t":360,"d":[194],"a":1},{"px":[288,192],"src":[320,448],"f":0,"t":360,"d":[195],"a":1},{"px":[320,192],"src":[320,448],"f":0,"t":360,"d":[196],"a":1},{"px":[96,224],"src":[320,448],"f":0,"t":360,"d":[220],"a":1},{"px":[128,224],"src":[320,448],"f":0,"t":360,"d":[221],"a":1},{"px":[160,224],"src":[320,448],"f":0,"t":360,"d":[222],"a":1},{"px":[192,224],"src":[320,448],"f":0,"t":360,"d":[223],"a":1},{"px":[224,224],"src":[320,448],"f":0,"t":360,"d":[224],"a":1},{"px":[256,224],"src":[320,448],"f":0,"t":360,"d":[225],"a":1},{"px":[288,224],"src":[320,448],"f":0,"t":360,"d":[226],"a":1},{"px":[320,224],"src":[320,448],"f":0,"t":360,"d":[227],"a":1},{"px":[96,256],"src":[320,448],"f":0,"t":360,"d":[251],"a":1},{"px":[128,256],"src":[320,448],"f":0,"t":360,"d":[252],"a":1},{"px":[160,256],"src":[320,448],"f":0,"t":360,"d":[253],"a":1},{"px":[192,256],"src":[320,448],"f":0,"t":360,"d":[254],"a":1},{"px":[224,256],"src":[320,448],"f":0,"t":360,"d":[255],"a":1},{"px":[256,256],"src":[320,448],"f":0,"t":360,"d":[256],"a":1},{"px":[288,256],"src":[320,448],"f":0,"t":360,"d":[257],"a":1},{"px":[320,256],"src":[320,448],"f":0,"t":360,"d":[258],"a":1},{"px":[96,288],"src":[320,448],"f":0,"t":360,"d":[282],"a":1},{"px":[128,288],"src":[320,448],"f":0,"t":360,"d":[283],"a":1},{"px":[160,288],"src":[320,448],"f":0,"t":360,"d":[284],"a":1},{"px":[192,288],"src":[320,448],"f":0,"t":360,"d":[285],"a":1},{"px":[224,288],"src":[320,448],"f":0,"t":360,"d":[286],"a":1},{"px":[256,288],"src":[320,448],"f":0,"t":360,"d":[287],"a":1},{"px":[288,288],"src":[320,448],"f":0,"t":360,"d":[288],"a":1},{"px":[320,288],"src":[320,448],"f":0,"t":360,"d":[289],"a":1},{"px":[96,320],"src":[320,448],"f":0,"t":360,"d":[313],"a":1},{"px":[128,320],"src":[320,448],"f":0,"t":360,"d":[314],"a":1},{"px":[160,320],"src":[320,448],"f":0,"t":360,"d":[315],"a":1},{"px":[192,320],"src":[320,448],"f":0,"t":360,"d":[316],"a":1},{"px":[224,320],"src":[320,448],"f":0,"t":360,"d":[317],"a":1},{"px":[256,320],"src":[320,448],"f":0,"t":360,"d":[318],"a":1},{"px":[288,320],"src":[320,448],"f":0,"t":360,"d":[319],"a":1},{"px":[320,320],"src":[320,448],"f":0,"t":360,"d":[320],"a":1},{"px":[96,352],"src":[320,448],"f":0,"t":360,"d":[344],"a":1},{"px":[128,352],"src":[320,448],"f":0,"t":360,"d":[345],"a":1},{"px":[160,352],"src":[320,448],"f":0,"t":360,"d":[346],"a":1},{"px":[192,352],"src":[320,448],"f":0,"t":360,"d":[347],"a":1},{"px":[224,352],"src":[320,448],"f":0,"t":360,"d":[348],"a":1},{"px":[256,352],"src":[320,448],"f":0,"t":360,"d":[349],"a":1},{"px":[288,352],"src":[320,448],"f":0,"t":360,"d":[350],"a":1},{"px":[320,352],"src":[320,448],"f":0,"t":360,"d":[351],"a":1},{"px":[96,384],"src":[320,448],"f":0,"t":360,"d":[375],"a":1},{"px":[128,384],"src":[320,448],"f":0,"t":360,"d":[376],"a":1},{"px":[160,384],"src":[320,448],"f":0,"t":360,"d":[377],"a":1},{"px":[192,384],"src":[320,448],"f":0,"t":360,"d":[378],"a":1},{"px":[224,384],"src":[320,448],"f":0,"t":360,"d":[379],"a":1},{"px":[256,384],"src":[320,448],"f":0,"t":360,"d":[380],"a":1},{"px":[288,384],"src":[320,448],"f":0,"t":360,"d":[381],"a":1},{"px":[320,384],"src":[320,448],"f":0,"t":360,"d":[382],"a":1},{"px":[96,416],"src":[320,448],"f":0,"t":360,"d":[406],"a":1},{"px":[128,416],"src":[320,448],"f":0,"t":360,"d":[407],"a":1},{"px":[160,416],"src":[320,448],"f":0,"t":360,"d":[408],"a":1},{"px":[192,416],"src":[320,448],"f":0,"t":360,"d":[409],"a":1},{"px":[224,416],"src":[320,448],"f":0,"t":360,"d":[410],"a":1},{"px":[256,416],"src":[320,448],"f":0,"t":360,"d":[411],"a":1},{"px":[288,416],"src":[320,448],"f":0,"t":360,"d":[412],"a":1},{"px":[320,416],"src":[320,448],"f":0,"t":360,"d":[413],"a":1},{"px":[96,448],"src":[320,448],"f":0,"t":360,"d":[437],"a":1},{"px":[128,448],"src":[320,448],"f":0,"t":360,"d":[438],"a":1},{"px":[160,448],"src":[320,448],"f":0,"t":360,"d":[439],"a":1},{"px":[192,448],"src":[320,448],"f":0,"t":360,"d":[440],"a":1},{"px":[224,448],"src":[320,448],"f":0,"t":360,"d":[441],"a":1},{"px":[256,448],"src":[320,448],"f":0,"t":360,"d":[442],"a":1},{"px":[288,448],"src":[320,448],"f":0,"t":360,"d":[443],"a":1},{"px":[320,448],"src":[320,448],"f":0,"t":360,"d":[444],"a":1}],"entityInstances":[]},{"__identifier":"outdoorfloor","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":24,"__tilesetRelPath":"tilesets/WA_Exterior.png","iid":"d7e2a384-d7b0-11ee-bac6-bf8b4ea8cb04","levelId":28,"layerDefUid":23,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":9274126,"overrideTilesetUid":null,"gridTiles":[{"px":[384,64],"src":[96,800],"f":0,"t":628,"d":[74],"a":1},{"px":[384,64],"src":[96,352],"f":0,"t":278,"d":[74],"a":1},{"px":[416,64],"src":[128,800],"f":0,"t":629,"d":[75],"a":1},{"px":[416,64],"src":[128,352],"f":0,"t":279,"d":[75],"a":1},{"px":[448,64],"src":[128,800],"f":0,"t":629,"d":[76],"a":1},{"px":[480,64],"src":[96,800],"f":0,"t":628,"d":[77],"a":1},{"px":[512,64],"src":[96,800],"f":0,"t":628,"d":[78],"a":1},{"px":[544,64],"src":[96,800],"f":0,"t":628,"d":[79],"a":1},{"px":[576,64],"src":[96,800],"f":0,"t":628,"d":[80],"a":1},{"px":[608,64],"src":[128,800],"f":0,"t":629,"d":[81],"a":1},{"px":[640,64],"src":[128,800],"f":0,"t":629,"d":[82],"a":1},{"px":[640,64],"src":[0,640],"f":0,"t":500,"d":[82],"a":1},{"px":[672,64],"src":[128,800],"f":0,"t":629,"d":[83],"a":1},{"px":[672,64],"src":[32,640],"f":0,"t":501,"d":[83],"a":1},{"px":[704,64],"src":[128,800],"f":0,"t":629,"d":[84],"a":1},{"px":[704,64],"src":[64,640],"f":0,"t":502,"d":[84],"a":1},{"px":[736,64],"src":[128,800],"f":0,"t":629,"d":[85],"a":1},{"px":[768,64],"src":[96,800],"f":0,"t":628,"d":[86],"a":1},{"px":[800,64],"src":[96,800],"f":0,"t":628,"d":[87],"a":1},{"px":[832,64],"src":[128,800],"f":0,"t":629,"d":[88],"a":1},{"px":[864,64],"src":[96,800],"f":0,"t":628,"d":[89],"a":1},{"px":[896,64],"src":[96,800],"f":0,"t":628,"d":[90],"a":1},{"px":[384,96],"src":[96,800],"f":0,"t":628,"d":[105],"a":1},{"px":[384,96],"src":[0,608],"f":0,"t":475,"d":[105],"a":1},{"px":[384,96],"src":[96,384],"f":0,"t":303,"d":[105],"a":1},{"px":[416,96],"src":[128,800],"f":0,"t":629,"d":[106],"a":1},{"px":[416,96],"src":[0,640],"f":0,"t":500,"d":[106],"a":1},{"px":[416,96],"src":[32,608],"f":0,"t":476,"d":[106],"a":1},{"px":[416,96],"src":[128,384],"f":0,"t":304,"d":[106],"a":1},{"px":[448,96],"src":[128,800],"f":0,"t":629,"d":[107],"a":1},{"px":[448,96],"src":[32,640],"f":0,"t":501,"d":[107],"a":1},{"px":[480,96],"src":[96,800],"f":0,"t":628,"d":[108],"a":1},{"px":[480,96],"src":[64,640],"f":0,"t":502,"d":[108],"a":1},{"px":[480,96],"src":[288,416],"f":0,"t":334,"d":[108],"a":1},{"px":[512,96],"src":[96,800],"f":0,"t":628,"d":[109],"a":1},{"px":[512,96],"src":[320,416],"f":0,"t":335,"d":[109],"a":1},{"px":[544,96],"src":[128,800],"f":0,"t":629,"d":[110],"a":1},{"px":[576,96],"src":[128,800],"f":0,"t":629,"d":[111],"a":1},{"px":[608,96],"src":[128,800],"f":0,"t":629,"d":[112],"a":1},{"px":[608,96],"src":[288,416],"f":0,"t":334,"d":[112],"a":1},{"px":[640,96],"src":[128,800],"f":0,"t":629,"d":[113],"a":1},{"px":[640,96],"src":[0,672],"f":0,"t":525,"d":[113],"a":1},{"px":[640,96],"src":[320,416],"f":0,"t":335,"d":[113],"a":1},{"px":[672,96],"src":[96,800],"f":0,"t":628,"d":[114],"a":1},{"px":[672,96],"src":[32,672],"f":0,"t":526,"d":[114],"a":1},{"px":[672,96],"src":[192,672],"f":0,"t":531,"d":[114],"a":1},{"px":[704,96],"src":[128,800],"f":0,"t":629,"d":[115],"a":1},{"px":[704,96],"src":[64,672],"f":0,"t":527,"d":[115],"a":1},{"px":[704,96],"src":[224,672],"f":0,"t":532,"d":[115],"a":1},{"px":[704,96],"src":[96,352],"f":0,"t":278,"d":[115],"a":1},{"px":[736,96],"src":[96,800],"f":0,"t":628,"d":[116],"a":1},{"px":[736,96],"src":[128,352],"f":0,"t":279,"d":[116],"a":1},{"px":[768,96],"src":[96,800],"f":0,"t":628,"d":[117],"a":1},{"px":[800,96],"src":[128,800],"f":0,"t":629,"d":[118],"a":1},{"px":[832,96],"src":[128,800],"f":0,"t":629,"d":[119],"a":1},{"px":[832,96],"src":[288,96],"f":0,"t":84,"d":[119],"a":1},{"px":[864,96],"src":[128,800],"f":0,"t":629,"d":[120],"a":1},{"px":[864,96],"src":[32,768],"f":0,"t":601,"d":[120],"a":1},{"px":[864,96],"src":[320,96],"f":0,"t":85,"d":[120],"a":1},{"px":[896,96],"src":[128,800],"f":0,"t":629,"d":[121],"a":1},{"px":[896,96],"src":[352,96],"f":0,"t":86,"d":[121],"a":1},{"px":[384,128],"src":[128,800],"f":0,"t":629,"d":[136],"a":1},{"px":[384,128],"src":[0,640],"f":0,"t":500,"d":[136],"a":1},{"px":[384,128],"src":[96,416],"f":0,"t":328,"d":[136],"a":1},{"px":[416,128],"src":[96,800],"f":0,"t":628,"d":[137],"a":1},{"px":[416,128],"src":[32,640],"f":0,"t":501,"d":[137],"a":1},{"px":[416,128],"src":[0,672],"f":0,"t":525,"d":[137],"a":1},{"px":[416,128],"src":[128,416],"f":0,"t":329,"d":[137],"a":1},{"px":[448,128],"src":[128,800],"f":0,"t":629,"d":[138],"a":1},{"px":[448,128],"src":[64,640],"f":0,"t":502,"d":[138],"a":1},{"px":[448,128],"src":[32,672],"f":0,"t":526,"d":[138],"a":1},{"px":[480,128],"src":[96,800],"f":0,"t":628,"d":[139],"a":1},{"px":[480,128],"src":[96,640],"f":0,"t":503,"d":[139],"a":1},{"px":[480,128],"src":[64,672],"f":0,"t":527,"d":[139],"a":1},{"px":[480,128],"src":[288,448],"f":0,"t":359,"d":[139],"a":1},{"px":[512,128],"src":[128,800],"f":0,"t":629,"d":[140],"a":1},{"px":[512,128],"src":[128,640],"f":0,"t":504,"d":[140],"a":1},{"px":[512,128],"src":[320,448],"f":0,"t":360,"d":[140],"a":1},{"px":[544,128],"src":[128,800],"f":0,"t":629,"d":[141],"a":1},{"px":[544,128],"src":[160,640],"f":0,"t":505,"d":[141],"a":1},{"px":[576,128],"src":[96,800],"f":0,"t":628,"d":[142],"a":1},{"px":[608,128],"src":[128,800],"f":0,"t":629,"d":[143],"a":1},{"px":[608,128],"src":[288,448],"f":0,"t":359,"d":[143],"a":1},{"px":[640,128],"src":[96,800],"f":0,"t":628,"d":[144],"a":1},{"px":[640,128],"src":[0,704],"f":0,"t":550,"d":[144],"a":1},{"px":[640,128],"src":[320,448],"f":0,"t":360,"d":[144],"a":1},{"px":[672,128],"src":[96,800],"f":0,"t":628,"d":[145],"a":1},{"px":[672,128],"src":[32,704],"f":0,"t":551,"d":[145],"a":1},{"px":[672,128],"src":[192,704],"f":0,"t":556,"d":[145],"a":1},{"px":[704,128],"src":[96,800],"f":0,"t":628,"d":[146],"a":1},{"px":[704,128],"src":[64,704],"f":0,"t":552,"d":[146],"a":1},{"px":[704,128],"src":[224,704],"f":0,"t":557,"d":[146],"a":1},{"px":[704,128],"src":[96,384],"f":0,"t":303,"d":[146],"a":1},{"px":[736,128],"src":[128,800],"f":0,"t":629,"d":[147],"a":1},{"px":[736,128],"src":[128,384],"f":0,"t":304,"d":[147],"a":1},{"px":[768,128],"src":[96,800],"f":0,"t":628,"d":[148],"a":1},{"px":[800,128],"src":[96,800],"f":0,"t":628,"d":[149],"a":1},{"px":[832,128],"src":[128,800],"f":0,"t":629,"d":[150],"a":1},{"px":[832,128],"src":[288,128],"f":0,"t":109,"d":[150],"a":1},{"px":[864,128],"src":[320,128],"f":0,"t":110,"d":[151],"a":1},{"px":[896,128],"src":[128,800],"f":0,"t":629,"d":[152],"a":1},{"px":[896,128],"src":[352,128],"f":0,"t":111,"d":[152],"a":1},{"px":[384,160],"src":[96,800],"f":0,"t":628,"d":[167],"a":1},{"px":[384,160],"src":[0,672],"f":0,"t":525,"d":[167],"a":1},{"px":[416,160],"src":[128,800],"f":0,"t":629,"d":[168],"a":1},{"px":[416,160],"src":[32,672],"f":0,"t":526,"d":[168],"a":1},{"px":[416,160],"src":[0,704],"f":0,"t":550,"d":[168],"a":1},{"px":[416,160],"src":[288,96],"f":0,"t":84,"d":[168],"a":1},{"px":[448,160],"src":[128,800],"f":0,"t":629,"d":[169],"a":1},{"px":[448,160],"src":[64,672],"f":0,"t":527,"d":[169],"a":1},{"px":[448,160],"src":[32,704],"f":0,"t":551,"d":[169],"a":1},{"px":[448,160],"src":[320,96],"f":0,"t":85,"d":[169],"a":1},{"px":[480,160],"src":[96,800],"f":0,"t":628,"d":[170],"a":1},{"px":[480,160],"src":[96,672],"f":0,"t":528,"d":[170],"a":1},{"px":[480,160],"src":[64,704],"f":0,"t":552,"d":[170],"a":1},{"px":[480,160],"src":[352,96],"f":0,"t":86,"d":[170],"a":1},{"px":[512,160],"src":[96,800],"f":0,"t":628,"d":[171],"a":1},{"px":[512,160],"src":[128,672],"f":0,"t":529,"d":[171],"a":1},{"px":[544,160],"src":[96,800],"f":0,"t":628,"d":[172],"a":1},{"px":[544,160],"src":[160,672],"f":0,"t":530,"d":[172],"a":1},{"px":[576,160],"src":[96,800],"f":0,"t":628,"d":[173],"a":1},{"px":[576,160],"src":[288,96],"f":0,"t":84,"d":[173],"a":1},{"px":[608,160],"src":[128,800],"f":0,"t":629,"d":[174],"a":1},{"px":[608,160],"src":[320,96],"f":0,"t":85,"d":[174],"a":1},{"px":[640,160],"src":[128,800],"f":0,"t":629,"d":[175],"a":1},{"px":[640,160],"src":[352,96],"f":0,"t":86,"d":[175],"a":1},{"px":[672,160],"src":[96,800],"f":0,"t":628,"d":[176],"a":1},{"px":[672,160],"src":[0,640],"f":0,"t":500,"d":[176],"a":1},{"px":[704,160],"src":[96,800],"f":0,"t":628,"d":[177],"a":1},{"px":[704,160],"src":[32,640],"f":0,"t":501,"d":[177],"a":1},{"px":[704,160],"src":[96,416],"f":0,"t":328,"d":[177],"a":1},{"px":[736,160],"src":[128,800],"f":0,"t":629,"d":[178],"a":1},{"px":[736,160],"src":[64,640],"f":0,"t":502,"d":[178],"a":1},{"px":[736,160],"src":[128,416],"f":0,"t":329,"d":[178],"a":1},{"px":[768,160],"src":[128,800],"f":0,"t":629,"d":[179],"a":1},{"px":[768,160],"src":[96,640],"f":0,"t":503,"d":[179],"a":1},{"px":[800,160],"src":[128,800],"f":0,"t":629,"d":[180],"a":1},{"px":[800,160],"src":[128,640],"f":0,"t":504,"d":[180],"a":1},{"px":[832,160],"src":[96,800],"f":0,"t":628,"d":[181],"a":1},{"px":[832,160],"src":[160,640],"f":0,"t":505,"d":[181],"a":1},{"px":[832,160],"src":[288,160],"f":0,"t":134,"d":[181],"a":1},{"px":[864,160],"src":[96,800],"f":0,"t":628,"d":[182],"a":1},{"px":[864,160],"src":[320,160],"f":0,"t":135,"d":[182],"a":1},{"px":[896,160],"src":[96,800],"f":0,"t":628,"d":[183],"a":1},{"px":[896,160],"src":[352,160],"f":0,"t":136,"d":[183],"a":1},{"px":[384,192],"src":[128,800],"f":0,"t":629,"d":[198],"a":1},{"px":[384,192],"src":[0,704],"f":0,"t":550,"d":[198],"a":1},{"px":[416,192],"src":[128,800],"f":0,"t":629,"d":[199],"a":1},{"px":[416,192],"src":[32,704],"f":0,"t":551,"d":[199],"a":1},{"px":[416,192],"src":[288,128],"f":0,"t":109,"d":[199],"a":1},{"px":[448,192],"src":[320,128],"f":0,"t":110,"d":[200],"a":1},{"px":[480,192],"src":[128,800],"f":0,"t":629,"d":[201],"a":1},{"px":[480,192],"src":[96,704],"f":0,"t":553,"d":[201],"a":1},{"px":[480,192],"src":[352,128],"f":0,"t":111,"d":[201],"a":1},{"px":[512,192],"src":[128,800],"f":0,"t":629,"d":[202],"a":1},{"px":[512,192],"src":[128,704],"f":0,"t":554,"d":[202],"a":1},{"px":[512,192],"src":[96,352],"f":0,"t":278,"d":[202],"a":1},{"px":[544,192],"src":[96,800],"f":0,"t":628,"d":[203],"a":1},{"px":[544,192],"src":[160,704],"f":0,"t":555,"d":[203],"a":1},{"px":[544,192],"src":[128,352],"f":0,"t":279,"d":[203],"a":1},{"px":[576,192],"src":[96,800],"f":0,"t":628,"d":[204],"a":1},{"px":[576,192],"src":[288,128],"f":0,"t":109,"d":[204],"a":1},{"px":[608,192],"src":[320,128],"f":0,"t":110,"d":[205],"a":1},{"px":[640,192],"src":[128,800],"f":0,"t":629,"d":[206],"a":1},{"px":[640,192],"src":[352,128],"f":0,"t":111,"d":[206],"a":1},{"px":[672,192],"src":[128,800],"f":0,"t":629,"d":[207],"a":1},{"px":[672,192],"src":[0,672],"f":0,"t":525,"d":[207],"a":1},{"px":[704,192],"src":[128,800],"f":0,"t":629,"d":[208],"a":1},{"px":[704,192],"src":[32,672],"f":0,"t":526,"d":[208],"a":1},{"px":[736,192],"src":[96,800],"f":0,"t":628,"d":[209],"a":1},{"px":[736,192],"src":[64,672],"f":0,"t":527,"d":[209],"a":1},{"px":[736,192],"src":[32,768],"f":0,"t":601,"d":[209],"a":1},{"px":[736,192],"src":[288,416],"f":0,"t":334,"d":[209],"a":1},{"px":[768,192],"src":[96,800],"f":0,"t":628,"d":[210],"a":1},{"px":[768,192],"src":[96,672],"f":0,"t":528,"d":[210],"a":1},{"px":[768,192],"src":[320,416],"f":0,"t":335,"d":[210],"a":1},{"px":[800,192],"src":[96,800],"f":0,"t":628,"d":[211],"a":1},{"px":[800,192],"src":[128,672],"f":0,"t":529,"d":[211],"a":1},{"px":[800,192],"src":[32,768],"f":0,"t":601,"d":[211],"a":1},{"px":[832,192],"src":[128,800],"f":0,"t":629,"d":[212],"a":1},{"px":[832,192],"src":[160,672],"f":0,"t":530,"d":[212],"a":1},{"px":[864,192],"src":[96,800],"f":0,"t":628,"d":[213],"a":1},{"px":[896,192],"src":[96,800],"f":0,"t":628,"d":[214],"a":1},{"px":[384,224],"src":[128,800],"f":0,"t":629,"d":[229],"a":1},{"px":[416,224],"src":[128,800],"f":0,"t":629,"d":[230],"a":1},{"px":[416,224],"src":[288,160],"f":0,"t":134,"d":[230],"a":1},{"px":[448,224],"src":[96,800],"f":0,"t":628,"d":[231],"a":1},{"px":[448,224],"src":[0,608],"f":0,"t":475,"d":[231],"a":1},{"px":[448,224],"src":[320,160],"f":0,"t":135,"d":[231],"a":1},{"px":[480,224],"src":[128,800],"f":0,"t":629,"d":[232],"a":1},{"px":[480,224],"src":[0,640],"f":0,"t":500,"d":[232],"a":1},{"px":[480,224],"src":[192,672],"f":0,"t":531,"d":[232],"a":1},{"px":[480,224],"src":[32,608],"f":0,"t":476,"d":[232],"a":1},{"px":[480,224],"src":[352,160],"f":0,"t":136,"d":[232],"a":1},{"px":[512,224],"src":[96,800],"f":0,"t":628,"d":[233],"a":1},{"px":[512,224],"src":[32,640],"f":0,"t":501,"d":[233],"a":1},{"px":[512,224],"src":[224,672],"f":0,"t":532,"d":[233],"a":1},{"px":[512,224],"src":[96,384],"f":0,"t":303,"d":[233],"a":1},{"px":[544,224],"src":[128,800],"f":0,"t":629,"d":[234],"a":1},{"px":[544,224],"src":[64,640],"f":0,"t":502,"d":[234],"a":1},{"px":[544,224],"src":[128,384],"f":0,"t":304,"d":[234],"a":1},{"px":[576,224],"src":[96,800],"f":0,"t":628,"d":[235],"a":1},{"px":[576,224],"src":[288,160],"f":0,"t":134,"d":[235],"a":1},{"px":[608,224],"src":[128,800],"f":0,"t":629,"d":[236],"a":1},{"px":[608,224],"src":[32,768],"f":0,"t":601,"d":[236],"a":1},{"px":[608,224],"src":[320,160],"f":0,"t":135,"d":[236],"a":1},{"px":[640,224],"src":[128,800],"f":0,"t":629,"d":[237],"a":1},{"px":[640,224],"src":[288,416],"f":0,"t":334,"d":[237],"a":1},{"px":[640,224],"src":[352,160],"f":0,"t":136,"d":[237],"a":1},{"px":[672,224],"src":[96,800],"f":0,"t":628,"d":[238],"a":1},{"px":[672,224],"src":[0,704],"f":0,"t":550,"d":[238],"a":1},{"px":[672,224],"src":[320,416],"f":0,"t":335,"d":[238],"a":1},{"px":[704,224],"src":[128,800],"f":0,"t":629,"d":[239],"a":1},{"px":[704,224],"src":[32,704],"f":0,"t":551,"d":[239],"a":1},{"px":[736,224],"src":[128,800],"f":0,"t":629,"d":[240],"a":1},{"px":[736,224],"src":[64,704],"f":0,"t":552,"d":[240],"a":1},{"px":[736,224],"src":[288,448],"f":0,"t":359,"d":[240],"a":1},{"px":[768,224],"src":[96,800],"f":0,"t":628,"d":[241],"a":1},{"px":[768,224],"src":[96,704],"f":0,"t":553,"d":[241],"a":1},{"px":[768,224],"src":[320,448],"f":0,"t":360,"d":[241],"a":1},{"px":[800,224],"src":[128,800],"f":0,"t":629,"d":[242],"a":1},{"px":[800,224],"src":[128,704],"f":0,"t":554,"d":[242],"a":1},{"px":[832,224],"src":[96,800],"f":0,"t":628,"d":[243],"a":1},{"px":[832,224],"src":[160,704],"f":0,"t":555,"d":[243],"a":1},{"px":[864,224],"src":[96,800],"f":0,"t":628,"d":[244],"a":1},{"px":[896,224],"src":[96,800],"f":0,"t":628,"d":[245],"a":1},{"px":[384,256],"src":[96,800],"f":0,"t":628,"d":[260],"a":1},{"px":[416,256],"src":[96,800],"f":0,"t":628,"d":[261],"a":1},{"px":[448,256],"src":[96,800],"f":0,"t":628,"d":[262],"a":1},{"px":[480,256],"src":[128,800],"f":0,"t":629,"d":[263],"a":1},{"px":[480,256],"src":[0,672],"f":0,"t":525,"d":[263],"a":1},{"px":[480,256],"src":[192,704],"f":0,"t":556,"d":[263],"a":1},{"px":[512,256],"src":[128,800],"f":0,"t":629,"d":[264],"a":1},{"px":[512,256],"src":[32,672],"f":0,"t":526,"d":[264],"a":1},{"px":[512,256],"src":[224,704],"f":0,"t":557,"d":[264],"a":1},{"px":[512,256],"src":[96,416],"f":0,"t":328,"d":[264],"a":1},{"px":[544,256],"src":[96,800],"f":0,"t":628,"d":[265],"a":1},{"px":[544,256],"src":[64,672],"f":0,"t":527,"d":[265],"a":1},{"px":[544,256],"src":[128,416],"f":0,"t":329,"d":[265],"a":1},{"px":[576,256],"src":[128,800],"f":0,"t":629,"d":[266],"a":1},{"px":[608,256],"src":[128,800],"f":0,"t":629,"d":[267],"a":1},{"px":[640,256],"src":[96,800],"f":0,"t":628,"d":[268],"a":1},{"px":[640,256],"src":[288,448],"f":0,"t":359,"d":[268],"a":1},{"px":[672,256],"src":[96,800],"f":0,"t":628,"d":[269],"a":1},{"px":[672,256],"src":[320,448],"f":0,"t":360,"d":[269],"a":1},{"px":[704,256],"src":[128,800],"f":0,"t":629,"d":[270],"a":1},{"px":[736,256],"src":[128,800],"f":0,"t":629,"d":[271],"a":1},{"px":[768,256],"src":[96,800],"f":0,"t":628,"d":[272],"a":1},{"px":[800,256],"src":[128,800],"f":0,"t":629,"d":[273],"a":1},{"px":[832,256],"src":[128,800],"f":0,"t":629,"d":[274],"a":1},{"px":[832,256],"src":[288,96],"f":0,"t":84,"d":[274],"a":1},{"px":[864,256],"src":[128,800],"f":0,"t":629,"d":[275],"a":1},{"px":[864,256],"src":[320,96],"f":0,"t":85,"d":[275],"a":1},{"px":[896,256],"src":[96,800],"f":0,"t":628,"d":[276],"a":1},{"px":[896,256],"src":[352,96],"f":0,"t":86,"d":[276],"a":1},{"px":[384,288],"src":[96,800],"f":0,"t":628,"d":[291],"a":1},{"px":[416,288],"src":[96,800],"f":0,"t":628,"d":[292],"a":1},{"px":[448,288],"src":[128,800],"f":0,"t":629,"d":[293],"a":1},{"px":[480,288],"src":[128,800],"f":0,"t":629,"d":[294],"a":1},{"px":[480,288],"src":[0,704],"f":0,"t":550,"d":[294],"a":1},{"px":[512,288],"src":[128,800],"f":0,"t":629,"d":[295],"a":1},{"px":[512,288],"src":[32,704],"f":0,"t":551,"d":[295],"a":1},{"px":[544,288],"src":[128,800],"f":0,"t":629,"d":[296],"a":1},{"px":[544,288],"src":[64,704],"f":0,"t":552,"d":[296],"a":1},{"px":[544,288],"src":[288,416],"f":0,"t":334,"d":[296],"a":1},{"px":[576,288],"src":[128,800],"f":0,"t":629,"d":[297],"a":1},{"px":[576,288],"src":[320,416],"f":0,"t":335,"d":[297],"a":1},{"px":[608,288],"src":[128,800],"f":0,"t":629,"d":[298],"a":1},{"px":[640,288],"src":[96,800],"f":0,"t":628,"d":[299],"a":1},{"px":[640,288],"src":[96,640],"f":0,"t":503,"d":[299],"a":1},{"px":[672,288],"src":[128,800],"f":0,"t":629,"d":[300],"a":1},{"px":[672,288],"src":[128,640],"f":0,"t":504,"d":[300],"a":1},{"px":[704,288],"src":[96,800],"f":0,"t":628,"d":[301],"a":1},{"px":[704,288],"src":[160,640],"f":0,"t":505,"d":[301],"a":1},{"px":[736,288],"src":[128,800],"f":0,"t":629,"d":[302],"a":1},{"px":[768,288],"src":[128,800],"f":0,"t":629,"d":[303],"a":1},{"px":[768,288],"src":[288,416],"f":0,"t":334,"d":[303],"a":1},{"px":[800,288],"src":[96,800],"f":0,"t":628,"d":[304],"a":1},{"px":[800,288],"src":[320,416],"f":0,"t":335,"d":[304],"a":1},{"px":[832,288],"src":[128,800],"f":0,"t":629,"d":[305],"a":1},{"px":[832,288],"src":[288,128],"f":0,"t":109,"d":[305],"a":1},{"px":[864,288],"src":[320,128],"f":0,"t":110,"d":[306],"a":1},{"px":[896,288],"src":[128,800],"f":0,"t":629,"d":[307],"a":1},{"px":[896,288],"src":[352,128],"f":0,"t":111,"d":[307],"a":1},{"px":[384,320],"src":[96,800],"f":0,"t":628,"d":[322],"a":1},{"px":[416,320],"src":[128,800],"f":0,"t":629,"d":[323],"a":1},{"px":[416,320],"src":[288,96],"f":0,"t":84,"d":[323],"a":1},{"px":[448,320],"src":[96,800],"f":0,"t":628,"d":[324],"a":1},{"px":[448,320],"src":[96,640],"f":0,"t":503,"d":[324],"a":1},{"px":[448,320],"src":[320,96],"f":0,"t":85,"d":[324],"a":1},{"px":[480,320],"src":[128,800],"f":0,"t":629,"d":[325],"a":1},{"px":[480,320],"src":[128,640],"f":0,"t":504,"d":[325],"a":1},{"px":[480,320],"src":[352,96],"f":0,"t":86,"d":[325],"a":1},{"px":[512,320],"src":[96,800],"f":0,"t":628,"d":[326],"a":1},{"px":[512,320],"src":[160,640],"f":0,"t":505,"d":[326],"a":1},{"px":[544,320],"src":[128,800],"f":0,"t":629,"d":[327],"a":1},{"px":[544,320],"src":[288,448],"f":0,"t":359,"d":[327],"a":1},{"px":[576,320],"src":[128,800],"f":0,"t":629,"d":[328],"a":1},{"px":[576,320],"src":[320,448],"f":0,"t":360,"d":[328],"a":1},{"px":[608,320],"src":[128,800],"f":0,"t":629,"d":[329],"a":1},{"px":[640,320],"src":[96,800],"f":0,"t":628,"d":[330],"a":1},{"px":[640,320],"src":[96,672],"f":0,"t":528,"d":[330],"a":1},{"px":[640,320],"src":[192,672],"f":0,"t":531,"d":[330],"a":1},{"px":[672,320],"src":[128,800],"f":0,"t":629,"d":[331],"a":1},{"px":[672,320],"src":[128,672],"f":0,"t":529,"d":[331],"a":1},{"px":[672,320],"src":[224,672],"f":0,"t":532,"d":[331],"a":1},{"px":[704,320],"src":[96,800],"f":0,"t":628,"d":[332],"a":1},{"px":[704,320],"src":[96,640],"f":0,"t":503,"d":[332],"a":1},{"px":[704,320],"src":[160,672],"f":0,"t":530,"d":[332],"a":1},{"px":[736,320],"src":[96,800],"f":0,"t":628,"d":[333],"a":1},{"px":[736,320],"src":[128,640],"f":0,"t":504,"d":[333],"a":1},{"px":[736,320],"src":[0,608],"f":0,"t":475,"d":[333],"a":1},{"px":[768,320],"src":[96,800],"f":0,"t":628,"d":[334],"a":1},{"px":[768,320],"src":[160,640],"f":0,"t":505,"d":[334],"a":1},{"px":[768,320],"src":[32,608],"f":0,"t":476,"d":[334],"a":1},{"px":[768,320],"src":[288,448],"f":0,"t":359,"d":[334],"a":1},{"px":[800,320],"src":[96,800],"f":0,"t":628,"d":[335],"a":1},{"px":[800,320],"src":[320,448],"f":0,"t":360,"d":[335],"a":1},{"px":[832,320],"src":[128,800],"f":0,"t":629,"d":[336],"a":1},{"px":[832,320],"src":[288,160],"f":0,"t":134,"d":[336],"a":1},{"px":[864,320],"src":[128,800],"f":0,"t":629,"d":[337],"a":1},{"px":[864,320],"src":[320,160],"f":0,"t":135,"d":[337],"a":1},{"px":[896,320],"src":[128,800],"f":0,"t":629,"d":[338],"a":1},{"px":[896,320],"src":[352,160],"f":0,"t":136,"d":[338],"a":1},{"px":[384,352],"src":[96,800],"f":0,"t":628,"d":[353],"a":1},{"px":[416,352],"src":[96,800],"f":0,"t":628,"d":[354],"a":1},{"px":[416,352],"src":[288,128],"f":0,"t":109,"d":[354],"a":1},{"px":[448,352],"src":[320,128],"f":0,"t":110,"d":[355],"a":1},{"px":[480,352],"src":[96,800],"f":0,"t":628,"d":[356],"a":1},{"px":[480,352],"src":[128,672],"f":0,"t":529,"d":[356],"a":1},{"px":[480,352],"src":[352,128],"f":0,"t":111,"d":[356],"a":1},{"px":[512,352],"src":[128,800],"f":0,"t":629,"d":[357],"a":1},{"px":[512,352],"src":[160,672],"f":0,"t":530,"d":[357],"a":1},{"px":[544,352],"src":[96,800],"f":0,"t":628,"d":[358],"a":1},{"px":[576,352],"src":[128,800],"f":0,"t":629,"d":[359],"a":1},{"px":[576,352],"src":[288,416],"f":0,"t":334,"d":[359],"a":1},{"px":[608,352],"src":[128,800],"f":0,"t":629,"d":[360],"a":1},{"px":[608,352],"src":[320,416],"f":0,"t":335,"d":[360],"a":1},{"px":[640,352],"src":[96,800],"f":0,"t":628,"d":[361],"a":1},{"px":[640,352],"src":[96,704],"f":0,"t":553,"d":[361],"a":1},{"px":[640,352],"src":[192,704],"f":0,"t":556,"d":[361],"a":1},{"px":[672,352],"src":[96,800],"f":0,"t":628,"d":[362],"a":1},{"px":[672,352],"src":[128,704],"f":0,"t":554,"d":[362],"a":1},{"px":[672,352],"src":[224,704],"f":0,"t":557,"d":[362],"a":1},{"px":[672,352],"src":[288,96],"f":0,"t":84,"d":[362],"a":1},{"px":[704,352],"src":[96,800],"f":0,"t":628,"d":[363],"a":1},{"px":[704,352],"src":[96,672],"f":0,"t":528,"d":[363],"a":1},{"px":[704,352],"src":[160,704],"f":0,"t":555,"d":[363],"a":1},{"px":[704,352],"src":[320,96],"f":0,"t":85,"d":[363],"a":1},{"px":[736,352],"src":[96,800],"f":0,"t":628,"d":[364],"a":1},{"px":[736,352],"src":[128,672],"f":0,"t":529,"d":[364],"a":1},{"px":[736,352],"src":[32,768],"f":0,"t":601,"d":[364],"a":1},{"px":[736,352],"src":[352,96],"f":0,"t":86,"d":[364],"a":1},{"px":[768,352],"src":[128,800],"f":0,"t":629,"d":[365],"a":1},{"px":[768,352],"src":[160,672],"f":0,"t":530,"d":[365],"a":1},{"px":[800,352],"src":[128,800],"f":0,"t":629,"d":[366],"a":1},{"px":[832,352],"src":[128,800],"f":0,"t":629,"d":[367],"a":1},{"px":[864,352],"src":[96,800],"f":0,"t":628,"d":[368],"a":1},{"px":[896,352],"src":[128,800],"f":0,"t":629,"d":[369],"a":1},{"px":[384,384],"src":[128,800],"f":0,"t":629,"d":[384],"a":1},{"px":[416,384],"src":[128,800],"f":0,"t":629,"d":[385],"a":1},{"px":[416,384],"src":[288,160],"f":0,"t":134,"d":[385],"a":1},{"px":[448,384],"src":[128,800],"f":0,"t":629,"d":[386],"a":1},{"px":[448,384],"src":[96,704],"f":0,"t":553,"d":[386],"a":1},{"px":[448,384],"src":[0,640],"f":0,"t":500,"d":[386],"a":1},{"px":[448,384],"src":[320,160],"f":0,"t":135,"d":[386],"a":1},{"px":[480,384],"src":[128,800],"f":0,"t":629,"d":[387],"a":1},{"px":[480,384],"src":[128,704],"f":0,"t":554,"d":[387],"a":1},{"px":[480,384],"src":[32,640],"f":0,"t":501,"d":[387],"a":1},{"px":[480,384],"src":[352,160],"f":0,"t":136,"d":[387],"a":1},{"px":[512,384],"src":[128,800],"f":0,"t":629,"d":[388],"a":1},{"px":[512,384],"src":[160,704],"f":0,"t":555,"d":[388],"a":1},{"px":[512,384],"src":[64,640],"f":0,"t":502,"d":[388],"a":1},{"px":[544,384],"src":[128,800],"f":0,"t":629,"d":[389],"a":1},{"px":[576,384],"src":[128,800],"f":0,"t":629,"d":[390],"a":1},{"px":[576,384],"src":[288,448],"f":0,"t":359,"d":[390],"a":1},{"px":[608,384],"src":[96,800],"f":0,"t":628,"d":[391],"a":1},{"px":[608,384],"src":[320,448],"f":0,"t":360,"d":[391],"a":1},{"px":[640,384],"src":[128,800],"f":0,"t":629,"d":[392],"a":1},{"px":[672,384],"src":[96,800],"f":0,"t":628,"d":[393],"a":1},{"px":[672,384],"src":[288,128],"f":0,"t":109,"d":[393],"a":1},{"px":[704,384],"src":[320,128],"f":0,"t":110,"d":[394],"a":1},{"px":[736,384],"src":[128,800],"f":0,"t":629,"d":[395],"a":1},{"px":[736,384],"src":[128,704],"f":0,"t":554,"d":[395],"a":1},{"px":[736,384],"src":[352,128],"f":0,"t":111,"d":[395],"a":1},{"px":[768,384],"src":[96,800],"f":0,"t":628,"d":[396],"a":1},{"px":[768,384],"src":[160,704],"f":0,"t":555,"d":[396],"a":1},{"px":[800,384],"src":[96,800],"f":0,"t":628,"d":[397],"a":1},{"px":[800,384],"src":[0,640],"f":0,"t":500,"d":[397],"a":1},{"px":[832,384],"src":[96,800],"f":0,"t":628,"d":[398],"a":1},{"px":[832,384],"src":[32,640],"f":0,"t":501,"d":[398],"a":1},{"px":[864,384],"src":[128,800],"f":0,"t":629,"d":[399],"a":1},{"px":[864,384],"src":[64,640],"f":0,"t":502,"d":[399],"a":1},{"px":[896,384],"src":[96,800],"f":0,"t":628,"d":[400],"a":1},{"px":[384,416],"src":[96,800],"f":0,"t":628,"d":[415],"a":1},{"px":[384,416],"src":[0,640],"f":0,"t":500,"d":[415],"a":1},{"px":[416,416],"src":[96,800],"f":0,"t":628,"d":[416],"a":1},{"px":[416,416],"src":[0,640],"f":0,"t":500,"d":[416],"a":1},{"px":[416,416],"src":[32,640],"f":0,"t":501,"d":[416],"a":1},{"px":[448,416],"src":[96,800],"f":0,"t":628,"d":[417],"a":1},{"px":[448,416],"src":[32,640],"f":0,"t":501,"d":[417],"a":1},{"px":[448,416],"src":[64,640],"f":0,"t":502,"d":[417],"a":1},{"px":[448,416],"src":[0,672],"f":0,"t":525,"d":[417],"a":1},{"px":[480,416],"src":[96,800],"f":0,"t":628,"d":[418],"a":1},{"px":[480,416],"src":[64,640],"f":0,"t":502,"d":[418],"a":1},{"px":[480,416],"src":[32,672],"f":0,"t":526,"d":[418],"a":1},{"px":[512,416],"src":[128,800],"f":0,"t":629,"d":[419],"a":1},{"px":[512,416],"src":[64,672],"f":0,"t":527,"d":[419],"a":1},{"px":[512,416],"src":[288,416],"f":0,"t":334,"d":[419],"a":1},{"px":[544,416],"src":[128,800],"f":0,"t":629,"d":[420],"a":1},{"px":[544,416],"src":[320,416],"f":0,"t":335,"d":[420],"a":1},{"px":[576,416],"src":[128,800],"f":0,"t":629,"d":[421],"a":1},{"px":[608,416],"src":[128,800],"f":0,"t":629,"d":[422],"a":1},{"px":[640,416],"src":[96,800],"f":0,"t":628,"d":[423],"a":1},{"px":[672,416],"src":[128,800],"f":0,"t":629,"d":[424],"a":1},{"px":[672,416],"src":[288,160],"f":0,"t":134,"d":[424],"a":1},{"px":[704,416],"src":[128,800],"f":0,"t":629,"d":[425],"a":1},{"px":[704,416],"src":[320,160],"f":0,"t":135,"d":[425],"a":1},{"px":[736,416],"src":[128,800],"f":0,"t":629,"d":[426],"a":1},{"px":[736,416],"src":[352,160],"f":0,"t":136,"d":[426],"a":1},{"px":[768,416],"src":[128,800],"f":0,"t":629,"d":[427],"a":1},{"px":[800,416],"src":[128,800],"f":0,"t":629,"d":[428],"a":1},{"px":[800,416],"src":[0,672],"f":0,"t":525,"d":[428],"a":1},{"px":[832,416],"src":[96,800],"f":0,"t":628,"d":[429],"a":1},{"px":[832,416],"src":[32,672],"f":0,"t":526,"d":[429],"a":1},{"px":[832,416],"src":[288,96],"f":0,"t":84,"d":[429],"a":1},{"px":[864,416],"src":[96,800],"f":0,"t":628,"d":[430],"a":1},{"px":[864,416],"src":[64,672],"f":0,"t":527,"d":[430],"a":1},{"px":[864,416],"src":[320,96],"f":0,"t":85,"d":[430],"a":1},{"px":[896,416],"src":[128,800],"f":0,"t":629,"d":[431],"a":1},{"px":[896,416],"src":[352,96],"f":0,"t":86,"d":[431],"a":1},{"px":[384,448],"src":[96,800],"f":0,"t":628,"d":[446],"a":1},{"px":[384,448],"src":[0,672],"f":0,"t":525,"d":[446],"a":1},{"px":[416,448],"src":[96,800],"f":0,"t":628,"d":[447],"a":1},{"px":[416,448],"src":[0,672],"f":0,"t":525,"d":[447],"a":1},{"px":[416,448],"src":[0,640],"f":0,"t":500,"d":[447],"a":1},{"px":[416,448],"src":[32,672],"f":0,"t":526,"d":[447],"a":1},{"px":[448,448],"src":[128,800],"f":0,"t":629,"d":[448],"a":1},{"px":[448,448],"src":[32,672],"f":0,"t":526,"d":[448],"a":1},{"px":[448,448],"src":[32,640],"f":0,"t":501,"d":[448],"a":1},{"px":[448,448],"src":[64,672],"f":0,"t":527,"d":[448],"a":1},{"px":[448,448],"src":[0,704],"f":0,"t":550,"d":[448],"a":1},{"px":[480,448],"src":[96,800],"f":0,"t":628,"d":[449],"a":1},{"px":[480,448],"src":[64,672],"f":0,"t":527,"d":[449],"a":1},{"px":[480,448],"src":[64,640],"f":0,"t":502,"d":[449],"a":1},{"px":[480,448],"src":[32,704],"f":0,"t":551,"d":[449],"a":1},{"px":[512,448],"src":[128,800],"f":0,"t":629,"d":[450],"a":1},{"px":[512,448],"src":[96,640],"f":0,"t":503,"d":[450],"a":1},{"px":[512,448],"src":[64,704],"f":0,"t":552,"d":[450],"a":1},{"px":[512,448],"src":[288,448],"f":0,"t":359,"d":[450],"a":1},{"px":[544,448],"src":[128,800],"f":0,"t":629,"d":[451],"a":1},{"px":[544,448],"src":[128,640],"f":0,"t":504,"d":[451],"a":1},{"px":[544,448],"src":[320,448],"f":0,"t":360,"d":[451],"a":1},{"px":[576,448],"src":[128,800],"f":0,"t":629,"d":[452],"a":1},{"px":[576,448],"src":[160,640],"f":0,"t":505,"d":[452],"a":1},{"px":[608,448],"src":[128,800],"f":0,"t":629,"d":[453],"a":1},{"px":[608,448],"src":[96,352],"f":0,"t":278,"d":[453],"a":1},{"px":[640,448],"src":[96,800],"f":0,"t":628,"d":[454],"a":1},{"px":[640,448],"src":[128,352],"f":0,"t":279,"d":[454],"a":1},{"px":[672,448],"src":[96,800],"f":0,"t":628,"d":[455],"a":1},{"px":[672,448],"src":[288,96],"f":0,"t":84,"d":[455],"a":1},{"px":[704,448],"src":[128,800],"f":0,"t":629,"d":[456],"a":1},{"px":[704,448],"src":[0,640],"f":0,"t":500,"d":[456],"a":1},{"px":[704,448],"src":[320,96],"f":0,"t":85,"d":[456],"a":1},{"px":[736,448],"src":[128,800],"f":0,"t":629,"d":[457],"a":1},{"px":[736,448],"src":[32,640],"f":0,"t":501,"d":[457],"a":1},{"px":[736,448],"src":[192,672],"f":0,"t":531,"d":[457],"a":1},{"px":[736,448],"src":[352,96],"f":0,"t":86,"d":[457],"a":1},{"px":[768,448],"src":[128,800],"f":0,"t":629,"d":[458],"a":1},{"px":[768,448],"src":[64,640],"f":0,"t":502,"d":[458],"a":1},{"px":[768,448],"src":[224,672],"f":0,"t":532,"d":[458],"a":1},{"px":[800,448],"src":[128,800],"f":0,"t":629,"d":[459],"a":1},{"px":[800,448],"src":[0,704],"f":0,"t":550,"d":[459],"a":1},{"px":[832,448],"src":[96,800],"f":0,"t":628,"d":[460],"a":1},{"px":[832,448],"src":[32,704],"f":0,"t":551,"d":[460],"a":1},{"px":[832,448],"src":[0,640],"f":0,"t":500,"d":[460],"a":1},{"px":[832,448],"src":[288,128],"f":0,"t":109,"d":[460],"a":1},{"px":[864,448],"src":[320,128],"f":0,"t":110,"d":[461],"a":1},{"px":[896,448],"src":[128,800],"f":0,"t":629,"d":[462],"a":1},{"px":[896,448],"src":[64,640],"f":0,"t":502,"d":[462],"a":1},{"px":[896,448],"src":[352,128],"f":0,"t":111,"d":[462],"a":1},{"px":[384,480],"src":[96,800],"f":0,"t":628,"d":[477],"a":1},{"px":[384,480],"src":[0,704],"f":0,"t":550,"d":[477],"a":1},{"px":[416,480],"src":[128,800],"f":0,"t":629,"d":[478],"a":1},{"px":[416,480],"src":[0,704],"f":0,"t":550,"d":[478],"a":1},{"px":[416,480],"src":[0,640],"f":0,"t":500,"d":[478],"a":1},{"px":[416,480],"src":[0,672],"f":0,"t":525,"d":[478],"a":1},{"px":[416,480],"src":[32,704],"f":0,"t":551,"d":[478],"a":1},{"px":[448,480],"src":[128,800],"f":0,"t":629,"d":[479],"a":1},{"px":[448,480],"src":[32,704],"f":0,"t":551,"d":[479],"a":1},{"px":[448,480],"src":[32,640],"f":0,"t":501,"d":[479],"a":1},{"px":[448,480],"src":[32,672],"f":0,"t":526,"d":[479],"a":1},{"px":[448,480],"src":[64,704],"f":0,"t":552,"d":[479],"a":1},{"px":[480,480],"src":[128,800],"f":0,"t":629,"d":[480],"a":1},{"px":[480,480],"src":[64,704],"f":0,"t":552,"d":[480],"a":1},{"px":[480,480],"src":[64,640],"f":0,"t":502,"d":[480],"a":1},{"px":[480,480],"src":[64,672],"f":0,"t":527,"d":[480],"a":1},{"px":[512,480],"src":[128,800],"f":0,"t":629,"d":[481],"a":1},{"px":[512,480],"src":[96,672],"f":0,"t":528,"d":[481],"a":1},{"px":[544,480],"src":[96,800],"f":0,"t":628,"d":[482],"a":1},{"px":[544,480],"src":[128,672],"f":0,"t":529,"d":[482],"a":1},{"px":[576,480],"src":[96,800],"f":0,"t":628,"d":[483],"a":1},{"px":[576,480],"src":[160,672],"f":0,"t":530,"d":[483],"a":1},{"px":[608,480],"src":[96,800],"f":0,"t":628,"d":[484],"a":1},{"px":[608,480],"src":[96,384],"f":0,"t":303,"d":[484],"a":1},{"px":[640,480],"src":[128,800],"f":0,"t":629,"d":[485],"a":1},{"px":[640,480],"src":[128,384],"f":0,"t":304,"d":[485],"a":1},{"px":[672,480],"src":[96,800],"f":0,"t":628,"d":[486],"a":1},{"px":[672,480],"src":[288,128],"f":0,"t":109,"d":[486],"a":1},{"px":[704,480],"src":[320,128],"f":0,"t":110,"d":[487],"a":1},{"px":[736,480],"src":[128,800],"f":0,"t":629,"d":[488],"a":1},{"px":[736,480],"src":[32,672],"f":0,"t":526,"d":[488],"a":1},{"px":[736,480],"src":[192,704],"f":0,"t":556,"d":[488],"a":1},{"px":[736,480],"src":[352,128],"f":0,"t":111,"d":[488],"a":1},{"px":[768,480],"src":[96,800],"f":0,"t":628,"d":[489],"a":1},{"px":[768,480],"src":[64,672],"f":0,"t":527,"d":[489],"a":1},{"px":[768,480],"src":[224,704],"f":0,"t":557,"d":[489],"a":1},{"px":[800,480],"src":[96,800],"f":0,"t":628,"d":[490],"a":1},{"px":[800,480],"src":[0,608],"f":0,"t":475,"d":[490],"a":1},{"px":[832,480],"src":[96,800],"f":0,"t":628,"d":[491],"a":1},{"px":[832,480],"src":[0,672],"f":0,"t":525,"d":[491],"a":1},{"px":[832,480],"src":[32,608],"f":0,"t":476,"d":[491],"a":1},{"px":[832,480],"src":[288,160],"f":0,"t":134,"d":[491],"a":1},{"px":[864,480],"src":[96,800],"f":0,"t":628,"d":[492],"a":1},{"px":[864,480],"src":[32,672],"f":0,"t":526,"d":[492],"a":1},{"px":[864,480],"src":[320,160],"f":0,"t":135,"d":[492],"a":1},{"px":[896,480],"src":[96,800],"f":0,"t":628,"d":[493],"a":1},{"px":[896,480],"src":[64,672],"f":0,"t":527,"d":[493],"a":1},{"px":[896,480],"src":[352,160],"f":0,"t":136,"d":[493],"a":1},{"px":[384,512],"src":[96,800],"f":0,"t":628,"d":[508],"a":1},{"px":[416,512],"src":[96,800],"f":0,"t":628,"d":[509],"a":1},{"px":[416,512],"src":[0,672],"f":0,"t":525,"d":[509],"a":1},{"px":[416,512],"src":[0,704],"f":0,"t":550,"d":[509],"a":1},{"px":[448,512],"src":[128,800],"f":0,"t":629,"d":[510],"a":1},{"px":[448,512],"src":[32,672],"f":0,"t":526,"d":[510],"a":1},{"px":[448,512],"src":[32,704],"f":0,"t":551,"d":[510],"a":1},{"px":[480,512],"src":[128,800],"f":0,"t":629,"d":[511],"a":1},{"px":[480,512],"src":[64,672],"f":0,"t":527,"d":[511],"a":1},{"px":[480,512],"src":[64,704],"f":0,"t":552,"d":[511],"a":1},{"px":[512,512],"src":[96,800],"f":0,"t":628,"d":[512],"a":1},{"px":[512,512],"src":[96,704],"f":0,"t":553,"d":[512],"a":1},{"px":[544,512],"src":[96,800],"f":0,"t":628,"d":[513],"a":1},{"px":[544,512],"src":[128,704],"f":0,"t":554,"d":[513],"a":1},{"px":[576,512],"src":[96,800],"f":0,"t":628,"d":[514],"a":1},{"px":[576,512],"src":[160,704],"f":0,"t":555,"d":[514],"a":1},{"px":[608,512],"src":[96,800],"f":0,"t":628,"d":[515],"a":1},{"px":[608,512],"src":[96,416],"f":0,"t":328,"d":[515],"a":1},{"px":[640,512],"src":[128,800],"f":0,"t":629,"d":[516],"a":1},{"px":[640,512],"src":[128,416],"f":0,"t":329,"d":[516],"a":1},{"px":[672,512],"src":[128,800],"f":0,"t":629,"d":[517],"a":1},{"px":[672,512],"src":[288,160],"f":0,"t":134,"d":[517],"a":1},{"px":[704,512],"src":[128,800],"f":0,"t":629,"d":[518],"a":1},{"px":[704,512],"src":[0,704],"f":0,"t":550,"d":[518],"a":1},{"px":[704,512],"src":[320,160],"f":0,"t":135,"d":[518],"a":1},{"px":[736,512],"src":[96,800],"f":0,"t":628,"d":[519],"a":1},{"px":[736,512],"src":[32,704],"f":0,"t":551,"d":[519],"a":1},{"px":[736,512],"src":[352,160],"f":0,"t":136,"d":[519],"a":1},{"px":[768,512],"src":[96,800],"f":0,"t":628,"d":[520],"a":1},{"px":[768,512],"src":[64,704],"f":0,"t":552,"d":[520],"a":1},{"px":[800,512],"src":[128,800],"f":0,"t":629,"d":[521],"a":1},{"px":[832,512],"src":[96,800],"f":0,"t":628,"d":[522],"a":1},{"px":[832,512],"src":[0,704],"f":0,"t":550,"d":[522],"a":1},{"px":[864,512],"src":[128,800],"f":0,"t":629,"d":[523],"a":1},{"px":[864,512],"src":[32,704],"f":0,"t":551,"d":[523],"a":1},{"px":[896,512],"src":[96,800],"f":0,"t":628,"d":[524],"a":1},{"px":[896,512],"src":[64,704],"f":0,"t":552,"d":[524],"a":1},{"px":[384,544],"src":[96,800],"f":0,"t":628,"d":[539],"a":1},{"px":[416,544],"src":[128,800],"f":0,"t":629,"d":[540],"a":1},{"px":[416,544],"src":[0,704],"f":0,"t":550,"d":[540],"a":1},{"px":[448,544],"src":[96,800],"f":0,"t":628,"d":[541],"a":1},{"px":[448,544],"src":[32,704],"f":0,"t":551,"d":[541],"a":1},{"px":[480,544],"src":[96,800],"f":0,"t":628,"d":[542],"a":1},{"px":[480,544],"src":[64,704],"f":0,"t":552,"d":[542],"a":1},{"px":[512,544],"src":[96,800],"f":0,"t":628,"d":[543],"a":1},{"px":[544,544],"src":[128,800],"f":0,"t":629,"d":[544],"a":1},{"px":[576,544],"src":[96,800],"f":0,"t":628,"d":[545],"a":1},{"px":[608,544],"src":[128,800],"f":0,"t":629,"d":[546],"a":1},{"px":[640,544],"src":[96,800],"f":0,"t":628,"d":[547],"a":1},{"px":[672,544],"src":[96,800],"f":0,"t":628,"d":[548],"a":1},{"px":[704,544],"src":[128,800],"f":0,"t":629,"d":[549],"a":1},{"px":[736,544],"src":[96,800],"f":0,"t":628,"d":[550],"a":1},{"px":[768,544],"src":[96,800],"f":0,"t":628,"d":[551],"a":1},{"px":[800,544],"src":[128,800],"f":0,"t":629,"d":[552],"a":1},{"px":[832,544],"src":[128,800],"f":0,"t":629,"d":[553],"a":1},{"px":[864,544],"src":[128,800],"f":0,"t":629,"d":[554],"a":1},{"px":[896,544],"src":[96,800],"f":0,"t":628,"d":[555],"a":1}],"entityInstances":[]},{"__identifier":"element_teleport_layer","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"42fc2140-d7b0-11ee-bac6-a513923976fb","levelId":28,"layerDefUid":31,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3453731,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"matrix_teleport_layer","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"722b0a80-d7b0-11ee-bac6-9f35b87444b8","levelId":28,"layerDefUid":32,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":4855165,"overrideTilesetUid":null,"gridTiles":[{"px":[96,160],"src":[160,0],"f":0,"t":5,"d":[158],"a":1},{"px":[128,160],"src":[160,0],"f":0,"t":5,"d":[159],"a":1},{"px":[96,192],"src":[160,0],"f":0,"t":5,"d":[189],"a":1},{"px":[128,192],"src":[160,0],"f":0,"t":5,"d":[190],"a":1}],"entityInstances":[]},{"__identifier":"start","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"d7e2a386-d7b0-11ee-bac6-77f02559e567","levelId":28,"layerDefUid":22,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":18453,"overrideTilesetUid":null,"gridTiles":[{"px":[96,416],"src":[32,0],"f":0,"t":1,"d":[406],"a":1},{"px":[128,416],"src":[32,0],"f":0,"t":1,"d":[407],"a":1},{"px":[96,448],"src":[32,0],"f":0,"t":1,"d":[437],"a":1},{"px":[128,448],"src":[32,0],"f":0,"t":1,"d":[438],"a":1}],"entityInstances":[]},{"__identifier":"walls","__type":"IntGrid","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"c1d9be80-d7b0-11ee-9c16-d32f7bb172d0","levelId":28,"layerDefUid":76,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"autoLayerTiles":[],"seed":1078922,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"test_room_autolayer","__type":"IntGrid","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"783fddd0-d7b0-11ee-bac6-cd5ba6bc4944","levelId":28,"layerDefUid":35,"pxOffsetX":0,"pxOffsetY":0,"visible":false,"optionalRules":[],"intGridCsv":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"autoLayerTiles":[{"px":[384,96],"src":[64,128],"f":0,"t":102,"d":[57,105],"a":1},{"px":[896,96],"src":[64,128],"f":0,"t":102,"d":[57,121],"a":1},{"px":[384,128],"src":[64,128],"f":0,"t":102,"d":[57,136],"a":1},{"px":[896,128],"src":[64,128],"f":0,"t":102,"d":[57,152],"a":1},{"px":[384,160],"src":[64,128],"f":0,"t":102,"d":[57,167],"a":1},{"px":[896,160],"src":[64,128],"f":0,"t":102,"d":[57,183],"a":1},{"px":[384,192],"src":[64,128],"f":0,"t":102,"d":[57,198],"a":1},{"px":[896,192],"src":[64,128],"f":0,"t":102,"d":[57,214],"a":1},{"px":[384,224],"src":[64,128],"f":0,"t":102,"d":[57,229],"a":1},{"px":[896,224],"src":[64,128],"f":0,"t":102,"d":[57,245],"a":1},{"px":[384,256],"src":[64,128],"f":0,"t":102,"d":[57,260],"a":1},{"px":[896,256],"src":[64,128],"f":0,"t":102,"d":[57,276],"a":1},{"px":[384,288],"src":[64,128],"f":0,"t":102,"d":[57,291],"a":1},{"px":[896,288],"src":[64,128],"f":0,"t":102,"d":[57,307],"a":1},{"px":[384,320],"src":[64,128],"f":0,"t":102,"d":[57,322],"a":1},{"px":[896,320],"src":[64,128],"f":0,"t":102,"d":[57,338],"a":1},{"px":[384,352],"src":[64,128],"f":0,"t":102,"d":[57,353],"a":1},{"px":[896,352],"src":[64,128],"f":0,"t":102,"d":[57,369],"a":1},{"px":[384,384],"src":[64,128],"f":0,"t":102,"d":[57,384],"a":1},{"px":[896,384],"src":[64,128],"f":0,"t":102,"d":[57,400],"a":1},{"px":[384,416],"src":[64,128],"f":0,"t":102,"d":[57,415],"a":1},{"px":[896,416],"src":[64,128],"f":0,"t":102,"d":[57,431],"a":1},{"px":[384,448],"src":[64,128],"f":0,"t":102,"d":[57,446],"a":1},{"px":[896,448],"src":[64,128],"f":0,"t":102,"d":[57,462],"a":1},{"px":[416,64],"src":[128,128],"f":0,"t":104,"d":[56,75],"a":1},{"px":[448,64],"src":[128,128],"f":0,"t":104,"d":[56,76],"a":1},{"px":[480,64],"src":[128,128],"f":0,"t":104,"d":[56,77],"a":1},{"px":[512,64],"src":[128,128],"f":0,"t":104,"d":[56,78],"a":1},{"px":[544,64],"src":[128,128],"f":0,"t":104,"d":[56,79],"a":1},{"px":[576,64],"src":[128,128],"f":0,"t":104,"d":[56,80],"a":1},{"px":[608,64],"src":[128,128],"f":0,"t":104,"d":[56,81],"a":1},{"px":[640,64],"src":[128,128],"f":0,"t":104,"d":[56,82],"a":1},{"px":[672,64],"src":[128,128],"f":0,"t":104,"d":[56,83],"a":1},{"px":[704,64],"src":[128,128],"f":0,"t":104,"d":[56,84],"a":1},{"px":[736,64],"src":[128,128],"f":0,"t":104,"d":[56,85],"a":1},{"px":[768,64],"src":[128,128],"f":0,"t":104,"d":[56,86],"a":1},{"px":[800,64],"src":[128,128],"f":0,"t":104,"d":[56,87],"a":1},{"px":[832,64],"src":[128,128],"f":0,"t":104,"d":[56,88],"a":1},{"px":[864,64],"src":[128,128],"f":0,"t":104,"d":[56,89],"a":1},{"px":[416,480],"src":[128,128],"f":0,"t":104,"d":[56,478],"a":1},{"px":[448,480],"src":[128,128],"f":0,"t":104,"d":[56,479],"a":1},{"px":[480,480],"src":[128,128],"f":0,"t":104,"d":[56,480],"a":1},{"px":[512,480],"src":[128,128],"f":0,"t":104,"d":[56,481],"a":1},{"px":[544,480],"src":[128,128],"f":0,"t":104,"d":[56,482],"a":1},{"px":[576,480],"src":[128,128],"f":0,"t":104,"d":[56,483],"a":1},{"px":[608,480],"src":[128,128],"f":0,"t":104,"d":[56,484],"a":1},{"px":[640,480],"src":[128,128],"f":0,"t":104,"d":[56,485],"a":1},{"px":[672,480],"src":[128,128],"f":0,"t":104,"d":[56,486],"a":1},{"px":[704,480],"src":[128,128],"f":0,"t":104,"d":[56,487],"a":1},{"px":[736,480],"src":[128,128],"f":0,"t":104,"d":[56,488],"a":1},{"px":[768,480],"src":[128,128],"f":0,"t":104,"d":[56,489],"a":1},{"px":[800,480],"src":[128,128],"f":0,"t":104,"d":[56,490],"a":1},{"px":[832,480],"src":[128,128],"f":0,"t":104,"d":[56,491],"a":1},{"px":[864,480],"src":[128,128],"f":0,"t":104,"d":[56,492],"a":1},{"px":[896,480],"src":[128,64],"f":0,"t":54,"d":[65,493],"a":1},{"px":[384,480],"src":[96,64],"f":0,"t":53,"d":[63,477],"a":1},{"px":[384,64],"src":[96,32],"f":0,"t":28,"d":[40,74],"a":1},{"px":[896,64],"src":[128,32],"f":0,"t":29,"d":[42,90],"a":1},{"px":[416,160],"src":[256,480],"f":0,"t":383,"d":[41,168],"a":1},{"px":[448,160],"src":[64,480],"f":0,"t":377,"d":[41,169],"a":1},{"px":[480,160],"src":[320,480],"f":0,"t":385,"d":[41,170],"a":1},{"px":[512,160],"src":[192,448],"f":0,"t":356,"d":[41,171],"a":1},{"px":[544,160],"src":[96,448],"f":0,"t":353,"d":[41,172],"a":1},{"px":[576,160],"src":[384,480],"f":0,"t":387,"d":[41,173],"a":1},{"px":[608,160],"src":[0,480],"f":0,"t":375,"d":[41,174],"a":1},{"px":[640,160],"src":[0,480],"f":0,"t":375,"d":[41,175],"a":1},{"px":[672,160],"src":[256,448],"f":0,"t":358,"d":[41,176],"a":1},{"px":[704,160],"src":[0,480],"f":0,"t":375,"d":[41,177],"a":1},{"px":[736,160],"src":[320,448],"f":0,"t":360,"d":[41,178],"a":1},{"px":[768,160],"src":[192,448],"f":0,"t":356,"d":[41,179],"a":1},{"px":[800,160],"src":[64,480],"f":0,"t":377,"d":[41,180],"a":1},{"px":[832,160],"src":[192,448],"f":0,"t":356,"d":[41,181],"a":1},{"px":[864,160],"src":[160,480],"f":0,"t":380,"d":[41,182],"a":1},{"px":[416,192],"src":[64,448],"f":0,"t":352,"d":[41,199],"a":1},{"px":[448,192],"src":[0,480],"f":0,"t":375,"d":[41,200],"a":1},{"px":[480,192],"src":[64,480],"f":0,"t":377,"d":[41,201],"a":1},{"px":[512,192],"src":[320,480],"f":0,"t":385,"d":[41,202],"a":1},{"px":[544,192],"src":[256,448],"f":0,"t":358,"d":[41,203],"a":1},{"px":[576,192],"src":[256,480],"f":0,"t":383,"d":[41,204],"a":1},{"px":[608,192],"src":[0,480],"f":0,"t":375,"d":[41,205],"a":1},{"px":[640,192],"src":[320,480],"f":0,"t":385,"d":[41,206],"a":1},{"px":[672,192],"src":[96,448],"f":0,"t":353,"d":[41,207],"a":1},{"px":[704,192],"src":[320,448],"f":0,"t":360,"d":[41,208],"a":1},{"px":[736,192],"src":[64,448],"f":0,"t":352,"d":[41,209],"a":1},{"px":[768,192],"src":[160,480],"f":0,"t":380,"d":[41,210],"a":1},{"px":[800,192],"src":[96,448],"f":0,"t":353,"d":[41,211],"a":1},{"px":[832,192],"src":[384,480],"f":0,"t":387,"d":[41,212],"a":1},{"px":[864,192],"src":[64,448],"f":0,"t":352,"d":[41,213],"a":1},{"px":[416,224],"src":[320,480],"f":0,"t":385,"d":[41,230],"a":1},{"px":[448,224],"src":[256,480],"f":0,"t":383,"d":[41,231],"a":1},{"px":[480,224],"src":[320,480],"f":0,"t":385,"d":[41,232],"a":1},{"px":[512,224],"src":[0,448],"f":0,"t":350,"d":[41,233],"a":1},{"px":[544,224],"src":[0,480],"f":0,"t":375,"d":[41,234],"a":1},{"px":[576,224],"src":[256,480],"f":0,"t":383,"d":[41,235],"a":1},{"px":[608,224],"src":[96,480],"f":0,"t":378,"d":[41,236],"a":1},{"px":[640,224],"src":[256,448],"f":0,"t":358,"d":[41,237],"a":1},{"px":[672,224],"src":[64,480],"f":0,"t":377,"d":[41,238],"a":1},{"px":[704,224],"src":[192,448],"f":0,"t":356,"d":[41,239],"a":1},{"px":[736,224],"src":[384,448],"f":0,"t":362,"d":[41,240],"a":1},{"px":[768,224],"src":[320,448],"f":0,"t":360,"d":[41,241],"a":1},{"px":[800,224],"src":[384,448],"f":0,"t":362,"d":[41,242],"a":1},{"px":[832,224],"src":[0,448],"f":0,"t":350,"d":[41,243],"a":1},{"px":[864,224],"src":[64,448],"f":0,"t":352,"d":[41,244],"a":1},{"px":[416,256],"src":[64,480],"f":0,"t":377,"d":[41,261],"a":1},{"px":[448,256],"src":[0,448],"f":0,"t":350,"d":[41,262],"a":1},{"px":[480,256],"src":[96,448],"f":0,"t":353,"d":[41,263],"a":1},{"px":[512,256],"src":[0,448],"f":0,"t":350,"d":[41,264],"a":1},{"px":[544,256],"src":[320,480],"f":0,"t":385,"d":[41,265],"a":1},{"px":[576,256],"src":[160,448],"f":0,"t":355,"d":[41,266],"a":1},{"px":[608,256],"src":[64,448],"f":0,"t":352,"d":[41,267],"a":1},{"px":[640,256],"src":[320,448],"f":0,"t":360,"d":[41,268],"a":1},{"px":[672,256],"src":[64,448],"f":0,"t":352,"d":[41,269],"a":1},{"px":[704,256],"src":[64,448],"f":0,"t":352,"d":[41,270],"a":1},{"px":[736,256],"src":[0,480],"f":0,"t":375,"d":[41,271],"a":1},{"px":[768,256],"src":[64,480],"f":0,"t":377,"d":[41,272],"a":1},{"px":[800,256],"src":[320,480],"f":0,"t":385,"d":[41,273],"a":1},{"px":[832,256],"src":[0,448],"f":0,"t":350,"d":[41,274],"a":1},{"px":[864,256],"src":[96,448],"f":0,"t":353,"d":[41,275],"a":1},{"px":[416,288],"src":[192,448],"f":0,"t":356,"d":[41,292],"a":1},{"px":[448,288],"src":[0,448],"f":0,"t":350,"d":[41,293],"a":1},{"px":[480,288],"src":[0,480],"f":0,"t":375,"d":[41,294],"a":1},{"px":[512,288],"src":[160,480],"f":0,"t":380,"d":[41,295],"a":1},{"px":[544,288],"src":[256,448],"f":0,"t":358,"d":[41,296],"a":1},{"px":[576,288],"src":[320,448],"f":0,"t":360,"d":[41,297],"a":1},{"px":[608,288],"src":[160,448],"f":0,"t":355,"d":[41,298],"a":1},{"px":[640,288],"src":[0,448],"f":0,"t":350,"d":[41,299],"a":1},{"px":[672,288],"src":[384,480],"f":0,"t":387,"d":[41,300],"a":1},{"px":[704,288],"src":[64,480],"f":0,"t":377,"d":[41,301],"a":1},{"px":[736,288],"src":[320,480],"f":0,"t":385,"d":[41,302],"a":1},{"px":[768,288],"src":[256,480],"f":0,"t":383,"d":[41,303],"a":1},{"px":[800,288],"src":[0,448],"f":0,"t":350,"d":[41,304],"a":1},{"px":[832,288],"src":[96,480],"f":0,"t":378,"d":[41,305],"a":1},{"px":[864,288],"src":[160,480],"f":0,"t":380,"d":[41,306],"a":1},{"px":[416,320],"src":[384,480],"f":0,"t":387,"d":[41,323],"a":1},{"px":[448,320],"src":[256,448],"f":0,"t":358,"d":[41,324],"a":1},{"px":[480,320],"src":[256,448],"f":0,"t":358,"d":[41,325],"a":1},{"px":[512,320],"src":[160,480],"f":0,"t":380,"d":[41,326],"a":1},{"px":[544,320],"src":[320,448],"f":0,"t":360,"d":[41,327],"a":1},{"px":[576,320],"src":[64,480],"f":0,"t":377,"d":[41,328],"a":1},{"px":[608,320],"src":[64,448],"f":0,"t":352,"d":[41,329],"a":1},{"px":[640,320],"src":[96,448],"f":0,"t":353,"d":[41,330],"a":1},{"px":[672,320],"src":[160,448],"f":0,"t":355,"d":[41,331],"a":1},{"px":[704,320],"src":[0,448],"f":0,"t":350,"d":[41,332],"a":1},{"px":[736,320],"src":[192,448],"f":0,"t":356,"d":[41,333],"a":1},{"px":[768,320],"src":[384,448],"f":0,"t":362,"d":[41,334],"a":1},{"px":[800,320],"src":[320,448],"f":0,"t":360,"d":[41,335],"a":1},{"px":[832,320],"src":[64,480],"f":0,"t":377,"d":[41,336],"a":1},{"px":[864,320],"src":[192,448],"f":0,"t":356,"d":[41,337],"a":1},{"px":[416,352],"src":[256,480],"f":0,"t":383,"d":[41,354],"a":1},{"px":[448,352],"src":[96,448],"f":0,"t":353,"d":[41,355],"a":1},{"px":[480,352],"src":[64,448],"f":0,"t":352,"d":[41,356],"a":1},{"px":[512,352],"src":[160,480],"f":0,"t":380,"d":[41,357],"a":1},{"px":[544,352],"src":[160,448],"f":0,"t":355,"d":[41,358],"a":1},{"px":[576,352],"src":[320,448],"f":0,"t":360,"d":[41,359],"a":1},{"px":[608,352],"src":[320,448],"f":0,"t":360,"d":[41,360],"a":1},{"px":[640,352],"src":[96,448],"f":0,"t":353,"d":[41,361],"a":1},{"px":[672,352],"src":[384,448],"f":0,"t":362,"d":[41,362],"a":1},{"px":[704,352],"src":[320,480],"f":0,"t":385,"d":[41,363],"a":1},{"px":[736,352],"src":[0,448],"f":0,"t":350,"d":[41,364],"a":1},{"px":[768,352],"src":[160,480],"f":0,"t":380,"d":[41,365],"a":1},{"px":[800,352],"src":[320,448],"f":0,"t":360,"d":[41,366],"a":1},{"px":[832,352],"src":[384,480],"f":0,"t":387,"d":[41,367],"a":1},{"px":[864,352],"src":[64,480],"f":0,"t":377,"d":[41,368],"a":1},{"px":[416,384],"src":[384,480],"f":0,"t":387,"d":[41,385],"a":1},{"px":[448,384],"src":[0,480],"f":0,"t":375,"d":[41,386],"a":1},{"px":[480,384],"src":[64,448],"f":0,"t":352,"d":[41,387],"a":1},{"px":[512,384],"src":[160,480],"f":0,"t":380,"d":[41,388],"a":1},{"px":[544,384],"src":[192,448],"f":0,"t":356,"d":[41,389],"a":1},{"px":[576,384],"src":[384,448],"f":0,"t":362,"d":[41,390],"a":1},{"px":[608,384],"src":[0,448],"f":0,"t":350,"d":[41,391],"a":1},{"px":[640,384],"src":[160,448],"f":0,"t":355,"d":[41,392],"a":1},{"px":[672,384],"src":[320,480],"f":0,"t":385,"d":[41,393],"a":1},{"px":[704,384],"src":[320,448],"f":0,"t":360,"d":[41,394],"a":1},{"px":[736,384],"src":[384,480],"f":0,"t":387,"d":[41,395],"a":1},{"px":[768,384],"src":[64,448],"f":0,"t":352,"d":[41,396],"a":1},{"px":[800,384],"src":[320,480],"f":0,"t":385,"d":[41,397],"a":1},{"px":[832,384],"src":[160,448],"f":0,"t":355,"d":[41,398],"a":1},{"px":[864,384],"src":[384,448],"f":0,"t":362,"d":[41,399],"a":1},{"px":[416,416],"src":[64,448],"f":0,"t":352,"d":[41,416],"a":1},{"px":[448,416],"src":[64,448],"f":0,"t":352,"d":[41,417],"a":1},{"px":[480,416],"src":[0,480],"f":0,"t":375,"d":[41,418],"a":1},{"px":[512,416],"src":[192,448],"f":0,"t":356,"d":[41,419],"a":1},{"px":[544,416],"src":[384,480],"f":0,"t":387,"d":[41,420],"a":1},{"px":[576,416],"src":[96,480],"f":0,"t":378,"d":[41,421],"a":1},{"px":[608,416],"src":[256,448],"f":0,"t":358,"d":[41,422],"a":1},{"px":[640,416],"src":[256,480],"f":0,"t":383,"d":[41,423],"a":1},{"px":[672,416],"src":[192,448],"f":0,"t":356,"d":[41,424],"a":1},{"px":[704,416],"src":[320,480],"f":0,"t":385,"d":[41,425],"a":1},{"px":[736,416],"src":[384,448],"f":0,"t":362,"d":[41,426],"a":1},{"px":[768,416],"src":[256,448],"f":0,"t":358,"d":[41,427],"a":1},{"px":[800,416],"src":[160,480],"f":0,"t":380,"d":[41,428],"a":1},{"px":[832,416],"src":[320,448],"f":0,"t":360,"d":[41,429],"a":1},{"px":[864,416],"src":[96,480],"f":0,"t":378,"d":[41,430],"a":1},{"px":[416,448],"src":[384,448],"f":0,"t":362,"d":[41,447],"a":1},{"px":[448,448],"src":[0,480],"f":0,"t":375,"d":[41,448],"a":1},{"px":[480,448],"src":[64,480],"f":0,"t":377,"d":[41,449],"a":1},{"px":[512,448],"src":[192,448],"f":0,"t":356,"d":[41,450],"a":1},{"px":[544,448],"src":[320,448],"f":0,"t":360,"d":[41,451],"a":1},{"px":[576,448],"src":[256,448],"f":0,"t":358,"d":[41,452],"a":1},{"px":[608,448],"src":[96,448],"f":0,"t":353,"d":[41,453],"a":1},{"px":[640,448],"src":[160,448],"f":0,"t":355,"d":[41,454],"a":1},{"px":[672,448],"src":[192,448],"f":0,"t":356,"d":[41,455],"a":1},{"px":[704,448],"src":[320,448],"f":0,"t":360,"d":[41,456],"a":1},{"px":[736,448],"src":[96,480],"f":0,"t":378,"d":[41,457],"a":1},{"px":[768,448],"src":[0,448],"f":0,"t":350,"d":[41,458],"a":1},{"px":[800,448],"src":[64,480],"f":0,"t":377,"d":[41,459],"a":1},{"px":[832,448],"src":[192,448],"f":0,"t":356,"d":[41,460],"a":1},{"px":[864,448],"src":[96,448],"f":0,"t":353,"d":[41,461],"a":1},{"px":[384,544],"src":[32,288],"f":0,"t":226,"d":[72,539],"a":1},{"px":[416,128],"src":[0,288],"f":0,"t":225,"d":[69,137],"a":1},{"px":[448,128],"src":[32,288],"f":0,"t":226,"d":[67,138],"a":1},{"px":[480,128],"src":[32,288],"f":0,"t":226,"d":[67,139],"a":1},{"px":[512,128],"src":[32,288],"f":0,"t":226,"d":[67,140],"a":1},{"px":[544,128],"src":[32,288],"f":0,"t":226,"d":[67,141],"a":1},{"px":[576,128],"src":[0,288],"f":0,"t":225,"d":[67,142],"a":1},{"px":[608,128],"src":[32,288],"f":0,"t":226,"d":[67,143],"a":1},{"px":[640,128],"src":[0,288],"f":0,"t":225,"d":[67,144],"a":1},{"px":[672,128],"src":[0,288],"f":0,"t":225,"d":[67,145],"a":1},{"px":[704,128],"src":[32,288],"f":0,"t":226,"d":[67,146],"a":1},{"px":[736,128],"src":[32,288],"f":0,"t":226,"d":[67,147],"a":1},{"px":[768,128],"src":[32,288],"f":0,"t":226,"d":[67,148],"a":1},{"px":[800,128],"src":[0,288],"f":0,"t":225,"d":[67,149],"a":1},{"px":[832,128],"src":[32,288],"f":0,"t":226,"d":[67,150],"a":1},{"px":[416,544],"src":[32,288],"f":0,"t":226,"d":[67,540],"a":1},{"px":[448,544],"src":[32,288],"f":0,"t":226,"d":[67,541],"a":1},{"px":[480,544],"src":[32,288],"f":0,"t":226,"d":[67,542],"a":1},{"px":[512,544],"src":[0,288],"f":0,"t":225,"d":[67,543],"a":1},{"px":[544,544],"src":[0,288],"f":0,"t":225,"d":[67,544],"a":1},{"px":[576,544],"src":[32,288],"f":0,"t":226,"d":[67,545],"a":1},{"px":[608,544],"src":[32,288],"f":0,"t":226,"d":[67,546],"a":1},{"px":[640,544],"src":[0,288],"f":0,"t":225,"d":[67,547],"a":1},{"px":[672,544],"src":[0,288],"f":0,"t":225,"d":[67,548],"a":1},{"px":[704,544],"src":[32,288],"f":0,"t":226,"d":[67,549],"a":1},{"px":[736,544],"src":[32,288],"f":0,"t":226,"d":[67,550],"a":1},{"px":[768,544],"src":[0,288],"f":0,"t":225,"d":[67,551],"a":1},{"px":[800,544],"src":[32,288],"f":0,"t":226,"d":[67,552],"a":1},{"px":[832,544],"src":[0,288],"f":0,"t":225,"d":[67,553],"a":1},{"px":[864,544],"src":[0,288],"f":0,"t":225,"d":[67,554],"a":1},{"px":[896,544],"src":[32,288],"f":0,"t":226,"d":[67,555],"a":1},{"px":[864,128],"src":[32,288],"f":0,"t":226,"d":[62,151],"a":1},{"px":[384,512],"src":[0,256],"f":0,"t":200,"d":[73,508],"a":1},{"px":[416,96],"src":[32,256],"f":0,"t":201,"d":[71,106],"a":1},{"px":[448,96],"src":[32,256],"f":0,"t":201,"d":[70,107],"a":1},{"px":[480,96],"src":[32,256],"f":0,"t":201,"d":[70,108],"a":1},{"px":[512,96],"src":[0,256],"f":0,"t":200,"d":[70,109],"a":1},{"px":[544,96],"src":[0,256],"f":0,"t":200,"d":[70,110],"a":1},{"px":[576,96],"src":[32,256],"f":0,"t":201,"d":[70,111],"a":1},{"px":[608,96],"src":[32,256],"f":0,"t":201,"d":[70,112],"a":1},{"px":[640,96],"src":[32,256],"f":0,"t":201,"d":[70,113],"a":1},{"px":[672,96],"src":[32,256],"f":0,"t":201,"d":[70,114],"a":1},{"px":[704,96],"src":[32,256],"f":0,"t":201,"d":[70,115],"a":1},{"px":[736,96],"src":[0,256],"f":0,"t":200,"d":[70,116],"a":1},{"px":[768,96],"src":[32,256],"f":0,"t":201,"d":[70,117],"a":1},{"px":[800,96],"src":[32,256],"f":0,"t":201,"d":[70,118],"a":1},{"px":[832,96],"src":[32,256],"f":0,"t":201,"d":[70,119],"a":1},{"px":[416,512],"src":[32,256],"f":0,"t":201,"d":[70,509],"a":1},{"px":[448,512],"src":[32,256],"f":0,"t":201,"d":[70,510],"a":1},{"px":[480,512],"src":[32,256],"f":0,"t":201,"d":[70,511],"a":1},{"px":[512,512],"src":[0,256],"f":0,"t":200,"d":[70,512],"a":1},{"px":[544,512],"src":[0,256],"f":0,"t":200,"d":[70,513],"a":1},{"px":[576,512],"src":[0,256],"f":0,"t":200,"d":[70,514],"a":1},{"px":[608,512],"src":[0,256],"f":0,"t":200,"d":[70,515],"a":1},{"px":[640,512],"src":[0,256],"f":0,"t":200,"d":[70,516],"a":1},{"px":[672,512],"src":[0,256],"f":0,"t":200,"d":[70,517],"a":1},{"px":[704,512],"src":[0,256],"f":0,"t":200,"d":[70,518],"a":1},{"px":[736,512],"src":[32,256],"f":0,"t":201,"d":[70,519],"a":1},{"px":[768,512],"src":[32,256],"f":0,"t":201,"d":[70,520],"a":1},{"px":[800,512],"src":[0,256],"f":0,"t":200,"d":[70,521],"a":1},{"px":[832,512],"src":[32,256],"f":0,"t":201,"d":[70,522],"a":1},{"px":[864,512],"src":[32,256],"f":0,"t":201,"d":[70,523],"a":1},{"px":[896,512],"src":[0,256],"f":0,"t":200,"d":[70,524],"a":1},{"px":[864,96],"src":[0,256],"f":0,"t":200,"d":[61,120],"a":1}],"seed":5926386,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]}],"__neighbours":[]}],"worlds":[],"dummyWorldIid":"13e86261-d7b0-11ee-8fc4-adde36f3cac9"} +\ No newline at end of file diff --git a/assets/settings.ron b/assets/settings.ron @@ -0,0 +1,28 @@ +Settings( + client: ClientSettings( + inspector: true, + client_id: 0, + client_port: 0, // the OS will assign a random open port + server_addr: "127.0.0.1", + server_port: 5001, + transport: Udp, + //server_port: 5002, + //transport: WebSocket, + ), + server: ServerSettings( + headless: true, + inspector: false, + transport: [ + Udp( + local_port: 5001 + ), + WebSocket( + local_port: 5002 + ) + ], + ), + shared: SharedSettings( + protocol_id: 0, + private_key: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), + ) +) +\ No newline at end of file diff --git a/assets/tilesets/WA_Decoration.png b/assets/tilesets/WA_Decoration.png Binary files differ. diff --git a/assets/tilesets/WA_Exterior.png b/assets/tilesets/WA_Exterior.png Binary files differ. diff --git a/assets/tilesets/WA_Miscellaneous.png b/assets/tilesets/WA_Miscellaneous.png Binary files differ. diff --git a/assets/tilesets/WA_Other_Furniture.png b/assets/tilesets/WA_Other_Furniture.png Binary files differ. diff --git a/assets/tilesets/WA_Room_Builder.png b/assets/tilesets/WA_Room_Builder.png Binary files differ. diff --git a/assets/tilesets/WA_Seats.png b/assets/tilesets/WA_Seats.png Binary files differ. diff --git a/assets/tilesets/WA_Special_Zones.png b/assets/tilesets/WA_Special_Zones.png Binary files differ. diff --git a/assets/tilesets/WA_Tables.png b/assets/tilesets/WA_Tables.png Binary files differ. diff --git a/assets/tilesets/WA_User_Interface.png b/assets/tilesets/WA_User_Interface.png Binary files differ. diff --git a/assets/tilesets/matrix-logo.png b/assets/tilesets/matrix-logo.png Binary files differ. diff --git a/assets/tilesets/matrix-logo.svg b/assets/tilesets/matrix-logo.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="75px" height="32px" viewBox="0 0 75 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 55 (78076) - https://sketchapp.com --> + <title>matrix logo white</title> + <desc>Created with Sketch.</desc> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="matrix-logo-white" fill="#000000" fill-rule="nonzero"> + <polygon id="Path" points="0.936314791 0.73220178 0.936314791 31.2495668 3.12942478 31.2495668 3.12942478 31.9817685 0.094721871 31.9817685 0.094721871 9.49554896e-05 3.12942478 9.49554896e-05 3.12942478 0.73220178"></polygon> + <path d="M9.38571429,10.4066469 L9.38571429,11.951003 L9.42961441,11.951003 C9.8409292,11.3631335 10.3363464,10.9066825 10.9167193,10.5830742 C11.496713,10.2600356 12.1615676,10.0978516 12.9104298,10.0978516 C13.6298989,10.0978516 14.287263,10.237911 14.8819532,10.5170801 C15.4768331,10.796724 15.9285398,11.2891632 16.2369785,11.9952522 C16.5745259,11.4953116 17.0334387,11.0539585 17.6138116,10.6715727 C18.1938053,10.2893769 18.8803729,10.0978516 19.6736094,10.0978516 C20.2757901,10.0978516 20.8335967,10.1715371 21.3480721,10.3186231 C21.8617889,10.4657092 22.302402,10.7010089 22.6696271,11.0245223 C23.0364728,11.3483205 23.3228192,11.7711573 23.5288559,12.2928427 C23.7343236,12.8154777 23.8372946,13.4438932 23.8372946,14.1795134 L23.8372946,21.8126053 L20.7089128,21.8125104 L20.7089128,15.3485104 C20.7089128,14.9663145 20.694311,14.6059585 20.664823,14.2674421 C20.6351454,13.9294006 20.5547408,13.6354184 20.4225664,13.3850208 C20.2902971,13.1351929 20.0954488,12.936451 19.83878,12.78927 C19.581732,12.6427537 19.2328066,12.5687834 18.7922882,12.5687834 C18.3517699,12.5687834 17.9955436,12.6538635 17.723799,12.8224095 C17.4518647,12.9918101 17.2390961,13.2125816 17.085019,13.4843442 C16.930847,13.7567715 16.8279709,14.0654718 16.7766751,14.4112997 C16.725,14.7567478 16.6994943,15.106184 16.6994943,15.4591335 L16.6994943,21.8126053 L13.571397,21.8126053 L13.571397,15.4149792 C13.571397,15.0767478 13.5637168,14.7420297 13.5495891,14.4112997 C13.5346081,14.0801899 13.4724083,13.7750979 13.3620417,13.495454 C13.2518647,13.2162849 13.0682048,12.9918101 12.8112516,12.8224095 C12.5542035,12.6538635 12.1760746,12.5687834 11.6767699,12.5687834 C11.5297092,12.5687834 11.3351454,12.6019228 11.0930784,12.6682967 C10.8507269,12.7344807 10.6155815,12.859727 10.3881163,13.043276 C10.160177,13.2272997 9.96580278,13.4920356 9.80423515,13.8373887 C9.64257269,14.1832166 9.56188369,14.6352047 9.56188369,15.1940178 L9.56188369,21.8125104 L6.43388116,21.8126053 L6.43388116,10.4066469 L9.38571429,10.4066469 Z" id="Path"></path> + <path d="M25.8417193,12.0835608 C26.1645702,11.5980534 26.5759798,11.208546 27.0754741,10.914089 C27.5745891,10.6200119 28.1360936,10.4105401 28.7604614,10.2853887 C29.3845449,10.1605223 30.0125158,10.0977567 30.6439949,10.0977567 C31.2168774,10.0977567 31.7967762,10.1383976 32.3842604,10.2190148 C32.9716498,10.3002018 33.5078382,10.4584926 33.9925411,10.6935074 C34.4771492,10.9287122 34.8735777,11.2562136 35.1821113,11.6751573 C35.4905499,12.0942908 35.6447219,12.6495905 35.6447219,13.3409614 L35.6447219,19.2751098 C35.6447219,19.7905282 35.674115,20.2826825 35.7329962,20.7532819 C35.7913085,21.2241662 35.8942794,21.5771157 36.0412453,21.8123205 L32.869153,21.8123205 C32.8102718,21.6357033 32.7623894,21.4557626 32.725885,21.2717389 C32.6889064,21.0881899 32.6632111,20.9006528 32.648799,20.7093175 C32.1493995,21.2241662 31.5617257,21.5845223 30.8866308,21.7904807 C30.2108723,21.9958694 29.5206068,22.099181 28.8156448,22.099181 C28.2720607,22.099181 27.7653603,22.0329021 27.2954488,21.900724 C26.8253477,21.7682611 26.4143173,21.5624926 26.0618837,21.2825638 C25.7093552,21.0035846 25.4340076,20.6505401 25.2357459,20.224095 C25.0374842,19.7976499 24.9382111,19.2897329 24.9382111,18.7016736 C24.9382111,18.0547418 25.0518963,17.5213769 25.2799305,17.1026231 C25.5073957,16.6832047 25.8009482,16.3487715 26.1612516,16.0984688 C26.5208913,15.848546 26.9320164,15.6610089 27.3948167,15.5360475 C27.8573325,15.411181 28.3235461,15.3121424 28.7935525,15.2381721 C29.2635588,15.1648665 29.7260746,15.1058991 30.1814791,15.0618398 C30.6366941,15.0175905 31.040708,14.9513116 31.3931416,14.8630979 C31.74567,14.7748843 32.0244311,14.6464095 32.2302781,14.4771039 C32.4355563,14.3079881 32.5310367,14.0616736 32.5166245,13.7378754 C32.5166245,13.3998338 32.4616308,13.1312047 32.3514539,12.9327478 C32.2413717,12.7342908 32.0944058,12.5796083 31.9109355,12.469365 C31.7272756,12.3591217 31.5143173,12.2855312 31.2721555,12.2485935 C31.0297092,12.2123205 30.7687737,12.1935193 30.4901075,12.1935193 C29.8732301,12.1935193 29.388622,12.3259822 29.0360936,12.5907181 C28.6837547,12.855454 28.4777181,13.2969021 28.4192162,13.9143976 L25.2911188,13.9143976 C25.3349241,13.1792522 25.5182048,12.5685935 25.8417193,12.0835608 Z M32.0208281,16.5068724 C31.8226612,16.5729614 31.6096081,16.6279407 31.3821429,16.6721899 C31.1543932,16.7163442 30.9158344,16.7531869 30.666182,16.7824332 C30.4163401,16.8121543 30.1666877,16.8487122 29.917225,16.8928665 C29.6820796,16.9366409 29.4508217,16.9959881 29.2234513,17.0691988 C28.995512,17.1431691 28.7972503,17.2422077 28.6285714,17.3671691 C28.4594185,17.4922255 28.323641,17.6506113 28.2208597,17.8413769 C28.1179836,18.0326172 28.0666877,18.2754184 28.0666877,18.5694955 C28.0666877,18.8486647 28.1179836,19.0843442 28.2208597,19.2751098 C28.323641,19.466635 28.4634008,19.6173294 28.6395702,19.7275727 C28.8157396,19.837816 29.0212073,19.9152047 29.2565424,19.9590742 C29.4912137,20.0033234 29.7335651,20.0253531 29.9833123,20.0253531 C30.6000948,20.0253531 31.0772124,19.9226113 31.4153287,19.7164629 C31.7529709,19.5107893 32.0024336,19.2642849 32.1642857,18.9772344 C32.3256637,18.6905638 32.4249368,18.4006647 32.4617257,18.1061128 C32.4981353,17.8120356 32.5167193,17.5766409 32.5167193,17.4002136 L32.5167193,16.2307418 C32.3843552,16.3487715 32.2191846,16.4405935 32.0208281,16.5068724 Z" id="Shape"></path> + <path d="M43.8835335,10.4066469 L43.8835335,12.5025045 L41.5926675,12.5025045 L41.5926675,18.150362 C41.5926675,18.679549 41.6806574,19.0326884 41.8570164,19.2090208 C42.0329962,19.385543 42.3857143,19.4737567 42.9144121,19.4737567 C43.0906764,19.4737567 43.2593552,19.4665401 43.4210177,19.451727 C43.5824905,19.4372938 43.7367573,19.4148843 43.8835335,19.385638 L43.8835335,21.8124154 C43.6191846,21.8565697 43.3253477,21.885816 43.002402,21.900819 C42.6793616,21.9149674 42.363622,21.9226588 42.0551833,21.9226588 C41.5705752,21.9226588 41.1114728,21.8894243 40.6783502,21.8231454 C40.2449431,21.7571513 39.8632111,21.6287715 39.5328698,21.4373412 C39.2023388,21.2463858 38.9415929,20.9739585 38.7508217,20.6210089 C38.5596713,20.2683442 38.4643805,19.8048665 38.4643805,19.2309555 L38.4643805,12.5025045 L36.5699431,12.5025045 L36.5699431,10.4066469 L38.4643805,10.4066469 L38.4643805,6.98710979 L41.5925727,6.98710979 L41.5925727,10.4066469 L43.8835335,10.4066469 Z" id="Path"></path> + <path d="M48.3553729,10.4066469 L48.3553729,12.5246291 L48.3994627,12.5246291 C48.5460493,12.1713947 48.7442162,11.8444629 48.994153,11.5426944 C49.2439001,11.2414955 49.5300569,10.9838813 49.8531922,10.7706113 C50.176043,10.5577211 50.5213654,10.3922136 50.8888748,10.274184 C51.2556258,10.156724 51.637737,10.0976617 52.0343552,10.0976617 C52.2399178,10.0976617 52.4672882,10.1346944 52.717225,10.208095 L52.717225,13.1203798 C52.5701643,13.0907537 52.3939001,13.0649258 52.1885272,13.0430861 C51.982775,13.0209614 51.7846081,13.0098516 51.5936473,13.0098516 C51.0208597,13.0098516 50.5362516,13.1057567 50.1399178,13.2967122 C49.7433944,13.4879525 49.4240518,13.7487953 49.1816056,14.0798101 C48.9393489,14.4109199 48.7664033,14.796724 48.6637168,15.2380772 C48.5610303,15.6791454 48.5096397,16.1574362 48.5096397,16.672095 L48.5096397,21.8123205 L45.3815424,21.8123205 L45.3815424,10.4066469 L48.3553729,10.4066469 Z" id="Path"></path> + <path d="M54.0388748,8.64161424 L54.0388748,6.06043917 L57.1672566,6.06043917 L57.1672566,8.64161424 L54.0388748,8.64161424 Z M57.1672566,10.4066469 L57.1672566,21.8124154 L54.0388748,21.8124154 L54.0388748,10.4066469 L57.1672566,10.4066469 Z" id="Shape"></path> + <polygon id="Path" points="58.7972503 10.4066469 62.365866 10.4066469 64.37067 13.3849258 66.3533818 10.4066469 69.8119153 10.4066469 66.0670354 15.7456142 70.2747155 21.8125104 66.7058154 21.8125104 64.3265803 18.216546 61.9472503 21.8125104 58.4449115 21.8125104 62.542225 15.8119881"></polygon> + <polygon id="Path" points="74.0938369 31.2495668 74.0938369 0.73220178 71.9007269 0.73220178 71.9007269 9.49554896e-05 74.9356195 9.49554896e-05 74.9356195 31.9817685 71.9007269 31.9817685 71.9007269 31.2495668"></polygon> + </g> + </g> +</svg> diff --git a/assets/tilesets/test_room_autolayer.intgrid.png b/assets/tilesets/test_room_autolayer.intgrid.png Binary files differ. diff --git a/assets/tilesets/user.png b/assets/tilesets/user.png Binary files differ. diff --git a/src/main.rs b/src/main.rs @@ -0,0 +1,211 @@ +use std::net::{Ipv4Addr, SocketAddr}; + +use bevy::{ + log::{Level, LogPlugin}, + prelude::*, + scene::ron, + window::PresentMode, +}; +use bevy_ecs_ldtk::prelude::*; +use clap::Parser; +use iyes_perf_ui::{PerfUiCompleteBundle, PerfUiPlugin}; +use lightyear::{ + connection::netcode::ClientId, + shared::log::add_log_layer, + transport::{io::TransportConfig, LOCAL_SOCKET}, +}; +use networking::{ + client::ClientPluginGroup, server::ServerPluginGroup, ClientSettings, ClientTransports, + ServerTransports, Settings, +}; +use wall::WallBundle; + +mod networking; +mod player; +mod wall; + +#[derive(Parser, PartialEq, Debug)] +enum Cli { + #[cfg(not(target_family = "wasm"))] + /// The program will act both as a server and as a client + ListenServer, + #[cfg(not(target_family = "wasm"))] + /// Dedicated server + Server, + /// The program will act as a client + Client, +} + +fn main() { + cfg_if::cfg_if! { + if #[cfg(target_family = "wasm")] { + let client_id = rand::random::<u64>(); + let cli = Cli::Client { + client_id: Some(client_id) + }; + } else { + let cli = Cli::parse(); + } + } + let settings_str = include_str!("../assets/settings.ron"); + let settings = ron::de::from_str::<Settings>(settings_str).unwrap(); + run(settings, cli); +} + +fn run(settings: Settings, cli: Cli) { + match cli { + #[cfg(not(target_family = "wasm"))] + Cli::ListenServer => { + // create client app + let (from_server_send, from_server_recv) = crossbeam_channel::unbounded(); + let (to_server_send, to_server_recv) = crossbeam_channel::unbounded(); + let transport_config = TransportConfig::LocalChannel { + recv: from_server_recv, + send: to_server_send, + }; + // when communicating via channels, we need to use the address `LOCAL_SOCKET` for the server + let client_id = rand::random::<u64>(); + let mut client_app = + client_app(settings.clone(), LOCAL_SOCKET, client_id, transport_config); + + // create server app + let extra_transport_configs = vec![TransportConfig::Channels { + // even if we communicate via channels, we need to provide a socket address for the client + channels: vec![(LOCAL_SOCKET, to_server_recv, from_server_send)], + }]; + let mut server_app = server_app(settings, extra_transport_configs); + + // run both the client and server apps + std::thread::spawn(move || server_app.run()); + client_app.run(); + } + #[cfg(not(target_family = "wasm"))] + Cli::Server => { + let mut app = server_app(settings, vec![]); + app.run(); + } + Cli::Client => { + let server_addr = SocketAddr::new( + settings.client.server_addr.into(), + settings.client.server_port, + ); + let transport_config = get_client_transport_config(settings.client.clone()); + let client_id = rand::random::<u64>(); + let mut app = client_app(settings, server_addr, client_id, transport_config); + app.run(); + } + } +} + +/// Build the client app +fn client_app( + settings: Settings, + server_addr: SocketAddr, + client_id: ClientId, + transport_config: TransportConfig, +) -> App { + let mut app = App::new(); + // NOTE: create the default plugins first so that the async task pools are initialized + // use the default bevy logger for now + // (the lightyear logger doesn't handle wasm) + app.add_plugins( + DefaultPlugins + .build() + .set(LogPlugin { + level: Level::INFO, + filter: "wgpu=error,bevy_render=info".to_string(), + update_subscriber: Some(add_log_layer), + }) + .set(WindowPlugin { + primary_window: Some(Window { + title: "Matrix RPG".into(), + present_mode: PresentMode::AutoVsync, + prevent_default_event_handling: false, + ..default() + }), + ..default() + }) + .set(ImagePlugin::default_nearest()), + ); + if settings.client.inspector { + app.add_plugins(PerfUiPlugin); + } + app.add_plugins(LdtkPlugin) + .insert_resource(LevelSelection::index(0)) + .insert_resource(LdtkSettings { + set_clear_color: SetClearColor::FromLevelBackground, + ..Default::default() + }) + .add_systems(Startup, move |mut commands: Commands| { + if settings.client.inspector { + commands.spawn(PerfUiCompleteBundle::default()); + } + }) + .register_ldtk_int_cell::<WallBundle>(1) + .add_plugins(player::PlayerPlugin); + let client_plugin_group = ClientPluginGroup::new( + // use the cli-provided client id if it exists, otherwise use the settings client id + client_id, + server_addr, + transport_config, + settings.shared, + ); + app.add_plugins(client_plugin_group.build()); + app +} + +/// Build the server app +fn server_app(settings: Settings, extra_transport_configs: Vec<TransportConfig>) -> App { + let mut app = App::new(); + if !settings.server.headless { + app.add_plugins(DefaultPlugins.build().disable::<LogPlugin>()); + } else { + app.add_plugins(MinimalPlugins); + } + app.add_plugins(LogPlugin { + level: Level::INFO, + filter: "wgpu=error,bevy_render=info".to_string(), + update_subscriber: Some(add_log_layer), + }); + + if settings.server.inspector { + app.add_plugins(PerfUiPlugin); + } + app.add_systems(Startup, move |mut commands: Commands| { + if settings.client.inspector { + commands.spawn(PerfUiCompleteBundle::default()); + } + }); + let mut transport_configs = get_server_transport_configs(settings.server.transport); + transport_configs.extend(extra_transport_configs); + let server_plugin_group = ServerPluginGroup::new(transport_configs, settings.shared); + app.add_plugins(server_plugin_group.build()); + app +} + +/// Parse the server transport settings into a list of `TransportConfig` that are used to configure the lightyear server +fn get_server_transport_configs(settings: Vec<ServerTransports>) -> Vec<TransportConfig> { + settings + .iter() + .map(|t| match t { + ServerTransports::Udp { local_port } => TransportConfig::UdpSocket(SocketAddr::new( + Ipv4Addr::UNSPECIFIED.into(), + *local_port, + )), + ServerTransports::WebSocket { local_port } => TransportConfig::WebSocketServer { + server_addr: SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), *local_port), + }, + }) + .collect() +} + +/// Parse the client transport settings into a `TransportConfig` that is used to configure the lightyear client +fn get_client_transport_config(settings: ClientSettings) -> TransportConfig { + let server_addr = SocketAddr::new(settings.server_addr.into(), settings.server_port); + let client_addr = SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), settings.client_port); + match settings.transport { + #[cfg(not(target_family = "wasm"))] + ClientTransports::Udp => TransportConfig::UdpSocket(client_addr), + ClientTransports::WebSocket => TransportConfig::WebSocketClient { server_addr }, + } +} diff --git a/src/networking/client.rs b/src/networking/client.rs @@ -0,0 +1,205 @@ +use std::net::SocketAddr; + +use bevy::app::PluginGroupBuilder; +use bevy::prelude::*; +use bevy::utils::Duration; + +use bevy_ecs_ldtk::LdtkWorldBundle; +use lightyear::prelude::client::*; +use lightyear::prelude::*; + +use crate::player::PlayerBundle; + +use super::protocol::{ + protocol, ClientMut, Components, Inputs, MatrixRPGGameProto, PlayerId, PlayerPosition, +}; +use super::{shared_config, shared_movement_behaviour, SharedSettings}; + +pub struct ClientPluginGroup { + lightyear: ClientPlugin<MatrixRPGGameProto>, +} + +impl ClientPluginGroup { + pub(crate) fn new( + client_id: u64, + server_addr: SocketAddr, + transport_config: TransportConfig, + shared_settings: SharedSettings, + ) -> ClientPluginGroup { + let auth = Authentication::Manual { + server_addr, + client_id, + private_key: shared_settings.private_key, + protocol_id: shared_settings.protocol_id, + }; + let link_conditioner = LinkConditionerConfig { + incoming_latency: Duration::from_millis(200), + incoming_jitter: Duration::from_millis(20), + incoming_loss: 0.05, + }; + let config = ClientConfig { + shared: shared_config(), + net: NetConfig::Netcode { + auth, + config: NetcodeConfig::default(), + io: IoConfig::from_transport(transport_config).with_conditioner(link_conditioner), + }, + interpolation: InterpolationConfig { + delay: InterpolationDelay::default(), + custom_interpolation_logic: false, + }, + ..default() + }; + let plugin_config = PluginConfig::new(config, protocol()); + ClientPluginGroup { + lightyear: ClientPlugin::new(plugin_config), + } + } +} + +impl PluginGroup for ClientPluginGroup { + fn build(self) -> PluginGroupBuilder { + PluginGroupBuilder::start::<Self>() + .add(self.lightyear) + .add(MatrixRPGClientPlugin) + .add(super::SharedPlugin) + } +} + +pub struct MatrixRPGClientPlugin; + +impl Plugin for MatrixRPGClientPlugin { + fn build(&self, app: &mut App) { + app.add_systems(Startup, init); + app.add_systems(PreUpdate, handle_connection.after(MainSet::ReceiveFlush)); + // Inputs have to be buffered in the FixedPreUpdate schedule + app.add_systems( + FixedPreUpdate, + buffer_input.in_set(InputSystemSet::BufferInputs), + ); + app.add_systems(FixedUpdate, player_movement); + app.add_systems(Update, spawn_player); + } +} + +// Startup system for the client +pub(crate) fn init(mut commands: Commands, mut client: ClientMut, asset_server: Res<AssetServer>) { + let mut camera = Camera2dBundle::default(); + camera.projection.scale = 0.5; + camera.transform.translation.x += 1920.0 / 4.0; + camera.transform.translation.y += 1080.0 / 4.0; + commands.spawn(camera); + + commands.spawn(LdtkWorldBundle { + ldtk_handle: asset_server.load("matrix_office.ldtk"), + ..Default::default() + }); + + let _ = client.connect(); +} + +pub(crate) fn handle_connection(mut commands: Commands, metadata: Res<GlobalMetadata>) { + // the `GlobalMetadata` resource holds metadata related to the client + // once the connection is established. + if metadata.is_changed() { + if let Some(client_id) = metadata.client_id { + commands.spawn(TextBundle::from_section( + format!("Client {}", client_id), + TextStyle { + font_size: 30.0, + color: Color::WHITE, + ..default() + }, + )); + } + } +} + +// System that reads from peripherals and adds inputs to the buffer +pub(crate) fn buffer_input(mut client: ClientMut, keypress: Res<ButtonInput<KeyCode>>) { + let mut direction = super::protocol::Direction { + up: false, + down: false, + left: false, + right: false, + }; + if keypress.pressed(KeyCode::KeyW) || keypress.pressed(KeyCode::ArrowUp) { + direction.up = true; + } + if keypress.pressed(KeyCode::KeyS) || keypress.pressed(KeyCode::ArrowDown) { + direction.down = true; + } + if keypress.pressed(KeyCode::KeyA) || keypress.pressed(KeyCode::ArrowLeft) { + direction.left = true; + } + if keypress.pressed(KeyCode::KeyD) || keypress.pressed(KeyCode::ArrowRight) { + direction.right = true; + } + if !direction.is_none() { + return client.add_input(Inputs::Direction(direction)); + } + if keypress.pressed(KeyCode::Space) { + return client.add_input(Inputs::Spawn); + } + // info!("Sending input: {:?} on tick: {:?}", &input, client.tick()); + client.add_input(Inputs::None) +} + +// The client input only gets applied to predicted entities that we own +// This works because we only predict the user's controlled entity. +// If we were predicting more entities, we would have to only apply movement to the player owned one. +#[allow(clippy::type_complexity)] +fn player_movement( + mut position_query: Query< + (&mut Transform, &mut PlayerPosition), + (With<Predicted>, Without<Camera>), + >, + mut cameras: Query<&mut Transform, With<Camera>>, + mut input_reader: EventReader<InputEvent<Inputs>>, +) { + if <Components as SyncMetadata<PlayerPosition>>::mode() != ComponentSyncMode::Full { + return; + } + for input in input_reader.read() { + if let Some(input) = input.input() { + for (mut transform, position) in position_query.iter_mut() { + // NOTE: be careful to directly pass Mut<PlayerPosition> + // getting a mutable reference triggers change detection, unless you use `as_deref_mut()` + transform.translation = Vec3::new(position.x, position.y, transform.translation.z); + let pos = transform.translation; + for mut transform in &mut cameras { + transform.translation.x = pos.x; + transform.translation.y = pos.y; + } + shared_movement_behaviour(position, input); + } + } + } +} + +/// Spawn a player when the space command is pressed +fn spawn_player( + mut commands: Commands, + players: Query<&PlayerId, With<PlayerPosition>>, + metadata: Res<GlobalMetadata>, +) { + // return early if we still don't have access to the client id + let Some(client_id) = metadata.client_id else { + return; + }; + + // Only spawn other players + for player_id in players.iter() { + if player_id.0 == client_id { + return; + } + } + info!("got spawn input"); + commands.spawn(( + PlayerBundle::new(client_id, Vec2::ZERO), + // IMPORTANT: this lets the server know that the entity is pre-predicted + // when the server replicates this entity; we will get a Confirmed entity which will use this entity + // as the Predicted version + ShouldBePredicted::default(), + )); +} diff --git a/src/networking/mod.rs b/src/networking/mod.rs @@ -0,0 +1,176 @@ +use std::net::Ipv4Addr; + +use bevy::prelude::*; +use bevy::render::RenderPlugin; +use bevy::utils::Duration; + +use lightyear::{ + client::components::Confirmed, prelude::*, shared::events::components::ComponentInsertEvent, +}; +use serde::{Deserialize, Serialize}; + +use crate::player::{AnimationIndices, AnimationTimer}; + +use self::protocol::{Inputs, PlayerId, PlayerPosition}; + +pub mod client; +pub mod protocol; +#[cfg(not(target_family = "wasm"))] +pub mod server; + +pub fn shared_config() -> SharedConfig { + SharedConfig { + client_send_interval: Duration::default(), + server_send_interval: Duration::from_millis(40), + // server_send_interval: Duration::from_millis(100), + tick: TickConfig { + tick_duration: Duration::from_secs_f64(1.0 / 64.0), + }, + } +} + +pub struct SharedPlugin; + +impl Plugin for SharedPlugin { + fn build(&self, app: &mut App) { + if app.is_plugin_added::<RenderPlugin>() { + app.add_systems(PostUpdate, (draw_elements, spawn_tiles)); + // app.add_plugins(LogDiagnosticsPlugin { + // filter: Some(vec![ + // IoDiagnosticsPlugin::BYTES_IN, + // IoDiagnosticsPlugin::BYTES_OUT, + // ]), + // ..default() + // }); + } + } +} + +// This system defines how we update the player's positions when we receive an input +pub(crate) fn shared_movement_behaviour(mut position: Mut<PlayerPosition>, input: &Inputs) { + const MOVE_SPEED: f32 = 10.0; + if let Inputs::Direction(direction) = input { + if direction.up { + position.y += MOVE_SPEED; + } + if direction.down { + position.y -= MOVE_SPEED; + } + if direction.left { + position.x -= MOVE_SPEED; + } + if direction.right { + position.x += MOVE_SPEED; + } + } +} + +pub fn spawn_tiles( + mut commands: Commands, + asset_server: Res<AssetServer>, + mut texture_atlas_layouts: ResMut<Assets<TextureAtlasLayout>>, + mut new_players: EventReader<ComponentInsertEvent<PlayerId>>, +) { + let texture = asset_server.load("tilesets/user.png"); + let layout = TextureAtlasLayout::from_grid(Vec2::new(16.0, 16.0), 8, 8, None, None); + let texture_atlas_layout = texture_atlas_layouts.add(layout); + + for player_event in new_players.read() { + let entity = player_event.entity(); + info!("Spawning tile"); + // Use only the subset of sprites in the sheet that make up the run animation + let animation_indices = AnimationIndices { first: 0, last: 3 }; + let atlas = TextureAtlas { + layout: texture_atlas_layout.clone(), + index: animation_indices.first, + }; + if let Some(mut e) = commands.get_entity(entity) { + e.with_children(|parent| { + parent.spawn(( + AnimationTimer(Timer::from_seconds(0.3, TimerMode::Repeating)), + animation_indices, + SpriteSheetBundle { + transform: Transform::from_xyz(0., 0., 17.).with_scale(Vec3::splat(2.0)), + texture: texture.clone(), + atlas, + ..default() + }, + )); + }); + } + } +} + +/// System that draws the player's boxes and cursors +pub fn draw_elements(mut gizmos: Gizmos, players: Query<&PlayerPosition, Without<Confirmed>>) { + for position in &players { + gizmos.rect_2d( + Vec2::new(position.x, position.y), + 0.0, + Vec2::ONE * 40.0, + Color::GREEN, + ); + } +} + +#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] +pub enum ClientTransports { + #[cfg(not(target_family = "wasm"))] + Udp, + WebSocket, +} + +#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] +pub enum ServerTransports { + Udp { local_port: u16 }, + WebSocket { local_port: u16 }, +} + +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct ServerSettings { + /// If true, disable any rendering-related plugins + pub headless: bool, + + /// If true, enable bevy_inspector_egui + pub inspector: bool, + + /// Which transport to use + pub transport: Vec<ServerTransports>, +} + +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct ClientSettings { + /// If true, enable bevy_inspector_egui + pub inspector: bool, + + /// The client id + pub client_id: u64, + + /// The client port to listen on + pub client_port: u16, + + /// The ip address of the server + pub server_addr: Ipv4Addr, + + /// The port of the server + pub server_port: u16, + + /// Which transport to use + pub transport: ClientTransports, +} + +#[derive(Copy, Clone, Debug, Deserialize, Serialize)] +pub struct SharedSettings { + /// An id to identify the protocol version + pub protocol_id: u64, + + /// a 32-byte array to authenticate via the Netcode.io protocol + pub private_key: [u8; 32], +} + +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct Settings { + pub server: ServerSettings, + pub client: ClientSettings, + pub shared: SharedSettings, +} diff --git a/src/networking/protocol.rs b/src/networking/protocol.rs @@ -0,0 +1,82 @@ +use derive_more::{Add, Mul}; + +use bevy::prelude::*; +use lightyear::prelude::*; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)] +pub struct Direction { + pub(crate) up: bool, + pub(crate) down: bool, + pub(crate) left: bool, + pub(crate) right: bool, +} + +impl Direction { + pub(crate) fn is_none(&self) -> bool { + !self.up && !self.down && !self.left && !self.right + } +} + +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] +pub enum Inputs { + Direction(Direction), + Delete, + Spawn, + // NOTE: we NEED to provide a None input so that the server can distinguish between lost input packets and 'None' inputs + None, +} +impl UserAction for Inputs {} + +#[derive(Message, Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct Message1(pub usize); + +#[message_protocol(protocol = "MatrixRPGGameProto")] +pub enum Messages { + Message1(Message1), +} + +#[derive(Component, Message, Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct PlayerId(pub ClientId); + +// `Deref` and `DerefMut` are from bevy +// `Add` and `Mul` are from the derive_more crate +#[derive( + Component, Message, Serialize, Deserialize, Clone, Debug, PartialEq, Deref, DerefMut, Add, Mul, +)] +pub struct PlayerPosition(pub Vec2); + +impl std::ops::Mul<f32> for &PlayerPosition { + type Output = PlayerPosition; + + fn mul(self, rhs: f32) -> Self::Output { + PlayerPosition(self.0 * rhs) + } +} + +#[component_protocol(protocol = "MatrixRPGGameProto")] +pub enum Components { + #[sync(once)] + PlayerId(PlayerId), + #[sync(full)] + PlayerPosition(PlayerPosition), +} + +#[derive(Channel)] +pub struct Channel1; + +protocolize! { + Self = MatrixRPGGameProto, + Message = Messages, + Component = Components, + Input = Inputs, +} + +pub(crate) fn protocol() -> MatrixRPGGameProto { + let mut protocol = MatrixRPGGameProto::default(); + protocol.add_channel::<Channel1>(ChannelSettings { + mode: ChannelMode::OrderedReliable(ReliableSettings::default()), + ..default() + }); + protocol +} diff --git a/src/networking/server.rs b/src/networking/server.rs @@ -0,0 +1,185 @@ +use bevy::app::PluginGroupBuilder; +use bevy::prelude::*; +use bevy::utils::Duration; + +use lightyear::prelude::server::*; +use lightyear::prelude::*; + +use crate::networking::shared_movement_behaviour; + +use super::{protocol::*, shared_config, SharedSettings}; + +// Plugin group to add all server-related plugins +pub struct ServerPluginGroup { + pub(crate) lightyear: ServerPlugin<MatrixRPGGameProto>, +} + +impl ServerPluginGroup { + pub(crate) fn new( + transport_configs: Vec<TransportConfig>, + shared_settings: SharedSettings, + ) -> ServerPluginGroup { + // Step 1: create the io (transport + link conditioner) + let link_conditioner = LinkConditionerConfig { + incoming_latency: Duration::from_millis(200), + incoming_jitter: Duration::from_millis(20), + incoming_loss: 0.05, + }; + let mut net_configs = vec![]; + for transport_config in transport_configs { + net_configs.push(NetConfig::Netcode { + config: NetcodeConfig::default() + .with_protocol_id(shared_settings.protocol_id) + .with_key(shared_settings.private_key), + io: IoConfig::from_transport(transport_config) + .with_conditioner(link_conditioner.clone()), + }); + } + + // Step 2: define the server configuration + let config = ServerConfig { + shared: shared_config(), + net: net_configs, + ..default() + }; + + // Step 3: create the plugin + let plugin_config = PluginConfig::new(config, protocol()); + ServerPluginGroup { + lightyear: ServerPlugin::new(plugin_config), + } + } +} + +impl PluginGroup for ServerPluginGroup { + fn build(self) -> PluginGroupBuilder { + PluginGroupBuilder::start::<Self>() + .add(self.lightyear) + .add(MatrixRPGServerPlugin) + .add(super::SharedPlugin) + } +} + +// Plugin for server-specific logic +pub struct MatrixRPGServerPlugin; + +impl Plugin for MatrixRPGServerPlugin { + fn build(&self, app: &mut App) { + app.add_systems(Startup, init); + // Re-adding Replicate components to client-replicated entities must be done in this set for proper handling. + app.add_systems( + PreUpdate, + (replicate_players).in_set(MainSet::ClientReplication), + ); + // the physics/FixedUpdates systems that consume inputs should be run in this set + app.add_systems(FixedUpdate, movement); + //app.add_systems(Update, send_message); + app.add_systems(Update, handle_disconnections); + } +} + +pub(crate) fn init(mut commands: Commands) { + commands.spawn(Camera2dBundle::default()); + commands.spawn(TextBundle::from_section( + "Server", + TextStyle { + font_size: 30.0, + color: Color::WHITE, + ..default() + }, + )); +} + +/// Server disconnection system, delete all player entities upon disconnection +pub(crate) fn handle_disconnections( + mut disconnections: EventReader<DisconnectEvent>, + mut commands: Commands, + player_entities: Query<(Entity, &PlayerId)>, +) { + for disconnection in disconnections.read() { + let client_id = disconnection.context(); + for (entity, player_id) in player_entities.iter() { + if player_id.0 == *client_id { + commands.entity(entity).despawn(); + } + } + } +} + +/// Read client inputs and move players +pub(crate) fn movement( + mut position_query: Query<(&mut PlayerPosition, &PlayerId)>, + mut input_reader: EventReader<InputEvent<Inputs>>, + tick_manager: Res<TickManager>, +) { + for input in input_reader.read() { + let client_id = input.context(); + if let Some(input) = input.input() { + debug!( + "Receiving input: {:?} from client: {:?} on tick: {:?}", + input, + client_id, + tick_manager.tick() + ); + + for (position, player_id) in position_query.iter_mut() { + if player_id.0 == *client_id { + // NOTE: be careful to directly pass Mut<PlayerPosition> + // getting a mutable reference triggers change detection, unless you use `as_deref_mut()` + shared_movement_behaviour(position, input); + } + } + } + } +} + +// // NOTE: you can use either: +// // - ServerMut (which is a wrapper around a bunch of resources used in lightyear) +// // - ResMut<ConnectionManager>, which is the actual resource used to send the message in this case. This is more optimized +// // because it enables more parallelism +// /// Send messages from server to clients (only in non-headless mode, because otherwise we run with minimal plugins +// /// and cannot do input handling) +// pub(crate) fn send_message( +// mut server: ResMut<ServerConnectionManager>, +// input: Option<Res<ButtonInput<KeyCode>>>, +// ) { +// if input.is_some_and(|input| input.pressed(KeyCode::KeyM)) { +// let message = Message1(5); +// info!("Send message: {:?}", message); +// server +// .send_message_to_target::<Channel1, Message1>(Message1(5), NetworkTarget::All) +// .unwrap_or_else(|e| { +// error!("Failed to send message: {:?}", e); +// }); +// } +// } + +// Replicate the pre-spawned entities back to the client +// Note that this needs to run before FixedUpdate, since we handle client inputs in the FixedUpdate schedule (subject to change) +// And we want to handle deletion properly +pub(crate) fn replicate_players( + mut commands: Commands, + mut player_spawn_reader: EventReader<ComponentInsertEvent<PlayerPosition>>, +) { + for event in player_spawn_reader.read() { + debug!("received player spawn event: {:?}", event); + let client_id = event.context(); + let entity = event.entity(); + + // for all cursors we have received, add a Replicate component so that we can start replicating it + // to other clients + if let Some(mut e) = commands.get_entity(entity) { + e.insert(Replicate { + // we want to replicate back to the original client, since they are using a pre-spawned entity + replication_target: NetworkTarget::All, + // NOTE: even with a pre-spawned Predicted entity, we need to specify who will run prediction + // NOTE: Be careful to not override the pre-spawned prediction! we do not need to enable prediction + // because there is a pre-spawned predicted entity + prediction_target: NetworkTarget::Only(vec![*client_id]), + // we want the other clients to apply interpolation for the player + interpolation_target: NetworkTarget::AllExcept(vec![*client_id]), + ..default() + }); + } + } +} diff --git a/src/player.rs b/src/player.rs @@ -0,0 +1,60 @@ +use bevy::prelude::*; +use lightyear::{connection::netcode::ClientId, shared::replication::components::NetworkTarget}; + +use crate::networking::protocol::{PlayerId, PlayerPosition, Replicate}; + +/// Plugin for spawning the player and controlling them. +pub struct PlayerPlugin; + +impl Plugin for PlayerPlugin { + fn build(&self, app: &mut App) { + app.add_systems(Update, animate_sprite); + } +} + +#[derive(Component)] +pub struct AnimationIndices { + pub first: usize, + pub last: usize, +} + +#[derive(Component, Deref, DerefMut)] +pub struct AnimationTimer(pub Timer); + +fn animate_sprite( + time: Res<Time>, + mut query: Query<(&AnimationIndices, &mut AnimationTimer, &mut TextureAtlas)>, +) { + for (indices, mut timer, mut atlas) in &mut query { + timer.tick(time.delta()); + if timer.just_finished() { + atlas.index = if atlas.index == indices.last { + indices.first + } else { + atlas.index + 1 + }; + } + } +} + +#[derive(Bundle)] +pub struct PlayerBundle { + id: PlayerId, + pub position: PlayerPosition, + replicate: Replicate, +} + +impl PlayerBundle { + pub(crate) fn new(id: ClientId, position: Vec2) -> Self { + Self { + id: PlayerId(id), + position: PlayerPosition(position), + replicate: Replicate { + // prediction_target: NetworkTarget::None, + prediction_target: NetworkTarget::Only(vec![id]), + interpolation_target: NetworkTarget::AllExcept(vec![id]), + ..default() + }, + } + } +} diff --git a/src/wall.rs b/src/wall.rs @@ -0,0 +1,10 @@ +use bevy::prelude::*; +use bevy_ecs_ldtk::prelude::*; + +#[derive(Default, Component)] +pub struct Wall; + +#[derive(Default, Bundle, LdtkIntCell)] +pub struct WallBundle { + wall: Wall, +}