From 6791cbabe7aefae3d3672e3a8183728d81504473 Mon Sep 17 00:00:00 2001 From: FelekDevYT Date: Tue, 19 May 2026 21:50:24 +0300 Subject: [PATCH 1/6] added nice docs --- .github/workflows/deploy.yml | 31 +- .gitignore | 20 + README.md | 1 + blog/2019-05-28-first-blog-post.mdx | 12 + blog/2019-05-29-long-blog-post.mdx | 44 + blog/2021-08-01-mdx-blog-post.mdx | 24 + .../docusaurus-plushie-banner.jpeg | Bin 0 -> 96122 bytes blog/2021-08-26-welcome/index.mdx | 29 + blog/authors.yml | 25 + blog/tags.yml | 19 + docs/.vitepress/config.mts | 154 - docs/.vitepress/theme/index.ts | 16 - docs/.vitepress/theme/style.css | 139 - docs/api/features/globals.md | 20 - docs/api/features/irusherhack.md | 161 - docs/api/index.md | 84 - docs/features/hud/index.md | 0 docs/features/index.md | 0 docs/features/modules/index.md | 2 - docs/features/windows/index.md | 0 docs/guide/help/hwid.md | 27 - docs/guide/help/index.md | 12 - docs/guide/index.md | 5 - docs/guide/introduction/account.md | 4 - docs/guide/introduction/installation.md | 4 - docs/guides/account.mdx | 11 + docs/guides/baritone.mdx | 8 + docs/guides/click-gui.mdx | 75 + docs/guides/installation.mdx | 32 + docs/guides/macros-keybinds.mdx | 28 + docs/guides/plugins.mdx | 13 + docs/index.md | 18 - docs/intro.mdx | 47 + docs/modules/chat/announcer.mdx | 30 + docs/modules/chat/anti-spam.mdx | 25 + docs/modules/chat/armor-alert.mdx | 19 + docs/modules/chat/auto-reply.mdx | 18 + docs/modules/chat/chat-append.mdx | 18 + docs/modules/chat/chat-colors.mdx | 8 + docs/modules/chat/extra-chat.mdx | 31 + docs/modules/chat/fancy-chat.mdx | 13 + docs/modules/chat/green-text.mdx | 12 + docs/modules/chat/greeter.mdx | 18 + docs/modules/chat/lag-detector.mdx | 15 + docs/modules/chat/rusher-crypt.mdx | 14 + docs/modules/chat/spammer.mdx | 19 + docs/modules/chat/timestamps.mdx | 22 + docs/modules/chat/translate.mdx | 21 + docs/modules/combat/anchor.mdx | 23 + docs/modules/combat/aura.mdx | 40 + docs/modules/combat/auto-armor.mdx | 19 + docs/modules/combat/auto-crystal.mdx | 55 + docs/modules/combat/auto-disconnect.mdx | 30 + docs/modules/combat/auto-exp.mdx | 25 + docs/modules/combat/auto-surround.mdx | 34 + docs/modules/combat/auto-totem.mdx | 29 + docs/modules/combat/auto-trap.mdx | 38 + docs/modules/combat/auto-web.mdx | 33 + docs/modules/combat/bow-aimbot.mdx | 24 + docs/modules/combat/bow-spam.mdx | 16 + docs/modules/combat/criticals.mdx | 19 + docs/modules/combat/hole-filler.mdx | 32 + docs/modules/combat/hotbar-replenish.mdx | 29 + docs/modules/combat/ignite.mdx | 26 + docs/modules/combat/pvpinfo.mdx | 26 + docs/modules/combat/quiver.mdx | 21 + docs/modules/combat/trigger-bot.mdx | 29 + docs/modules/commands/bind.mdx | 10 + docs/modules/commands/breed.mdx | 7 + docs/modules/commands/clear.mdx | 7 + docs/modules/commands/config.mdx | 13 + docs/modules/commands/connect.mdx | 7 + docs/modules/commands/coords.mdx | 7 + docs/modules/commands/credits.mdx | 7 + docs/modules/commands/deadcoords.mdx | 7 + docs/modules/commands/disconnect.mdx | 7 + docs/modules/commands/drawn.mdx | 7 + docs/modules/commands/enemy.mdx | 10 + docs/modules/commands/fakeplayer.mdx | 11 + docs/modules/commands/findstronghold.mdx | 7 + docs/modules/commands/friend.mdx | 10 + docs/modules/commands/hclip.mdx | 7 + docs/modules/commands/help.mdx | 8 + docs/modules/commands/macro.mdx | 13 + docs/modules/commands/modules.mdx | 7 + docs/modules/commands/namemc.mdx | 7 + docs/modules/commands/notify.mdx | 7 + docs/modules/commands/openfolder.mdx | 7 + docs/modules/commands/panic.mdx | 7 + docs/modules/commands/peek.mdx | 7 + docs/modules/commands/pitch.mdx | 7 + docs/modules/commands/plugin.mdx | 8 + docs/modules/commands/prefix.mdx | 7 + docs/modules/commands/reload.mdx | 7 + docs/modules/commands/reset.mdx | 9 + docs/modules/commands/send.mdx | 7 + docs/modules/commands/shutdown.mdx | 7 + docs/modules/commands/toggle.mdx | 7 + docs/modules/commands/vclip.mdx | 7 + docs/modules/commands/yaw.mdx | 8 + docs/modules/features.mdx | 7 + docs/modules/hud/armor.mdx | 12 + docs/modules/hud/biome.mdx | 10 + docs/modules/hud/crystal-counter.mdx | 10 + docs/modules/hud/direction.mdx | 14 + docs/modules/hud/dub-counter.mdx | 13 + docs/modules/hud/feature-list.mdx | 17 + docs/modules/hud/hunger.mdx | 12 + docs/modules/hud/inventory.mdx | 10 + docs/modules/hud/keystrokes.mdx | 10 + docs/modules/hud/logo.mdx | 7 + docs/modules/hud/macro-list.mdx | 13 + docs/modules/hud/memory.mdx | 10 + docs/modules/hud/online-time.mdx | 7 + docs/modules/hud/ping.mdx | 10 + docs/modules/hud/player-count.mdx | 10 + docs/modules/hud/player-view.mdx | 8 + docs/modules/hud/position.mdx | 17 + docs/modules/hud/potion-effects.mdx | 14 + docs/modules/hud/profile.mdx | 10 + docs/modules/hud/queue.mdx | 11 + docs/modules/hud/tps.mdx | 13 + docs/modules/hud/watermark.mdx | 8 + docs/modules/misc/anti-afk.mdx | 21 + docs/modules/misc/anti-aim.mdx | 17 + docs/modules/misc/anti-hunger.mdx | 14 + docs/modules/misc/anti-packet.mdx | 16 + docs/modules/misc/anti-quit.mdx | 13 + docs/modules/misc/auto-accept.mdx | 15 + docs/modules/misc/auto-mount.mdx | 17 + docs/modules/misc/auto-nametag.mdx | 22 + docs/modules/misc/auto-reconnect.mdx | 13 + docs/modules/misc/auto-respawn.mdx | 13 + docs/modules/misc/auto-shear.mdx | 19 + docs/modules/misc/auto-trader.mdx | 18 + docs/modules/misc/extra-chest.mdx | 26 + docs/modules/misc/extra-craft.mdx | 17 + docs/modules/misc/extra-screenshot.mdx | 13 + docs/modules/misc/extra-sign.mdx | 20 + docs/modules/misc/extra-tab.mdx | 22 + docs/modules/misc/extra-tooltips.mdx | 30 + docs/modules/misc/gamemode.mdx | 12 + docs/modules/misc/hitbox-ignore.mdx | 16 + docs/modules/misc/no-force-rotate.mdx | 8 + docs/modules/misc/notifier.mdx | 22 + docs/modules/misc/ping-spoof.mdx | 17 + docs/modules/misc/portal-gui.mdx | 8 + docs/modules/misc/skin-blink.mdx | 15 + docs/modules/movement/auto-walk.mdx | 20 + docs/modules/movement/boat-fly.mdx | 31 + docs/modules/movement/elytra-flight.mdx | 77 + docs/modules/movement/elytra-tweaks.mdx | 24 + docs/modules/movement/entity-control.mdx | 18 + docs/modules/movement/entity-speed.mdx | 18 + docs/modules/movement/flight.mdx | 24 + docs/modules/movement/ice-speed.mdx | 16 + docs/modules/movement/inventory-move.mdx | 26 + docs/modules/movement/jesus.mdx | 17 + docs/modules/movement/no-fall.mdx | 18 + docs/modules/movement/no-jump-delay.mdx | 16 + docs/modules/movement/no-slow.mdx | 24 + docs/modules/movement/parkour.mdx | 17 + docs/modules/movement/safewalk.mdx | 19 + docs/modules/movement/speed.mdx | 23 + docs/modules/movement/sprint.mdx | 19 + docs/modules/movement/step.mdx | 25 + docs/modules/movement/trident-tweaks.mdx | 26 + docs/modules/movement/velocity.mdx | 27 + docs/modules/movement/water-speed.mdx | 22 + docs/modules/player/antiLevitation.mdx | 14 + docs/modules/player/auto-eat.mdx | 21 + docs/modules/player/auto-fish.mdx | 15 + docs/modules/player/auto-mine.mdx | 21 + docs/modules/player/auto-tool.mdx | 22 + docs/modules/player/auto-wither.mdx | 16 + docs/modules/player/blink.mdx | 12 + docs/modules/player/chorus-control.mdx | 16 + docs/modules/player/fast-use.mdx | 20 + docs/modules/player/ghost-hand.mdx | 14 + docs/modules/player/inventory-cleaner.mdx | 26 + docs/modules/player/middle-click.mdx | 20 + docs/modules/player/multi-task.mdx | 8 + docs/modules/player/packet-logger.mdx | 18 + docs/modules/player/phase.mdx | 15 + docs/modules/player/portal-god-mode.mdx | 8 + docs/modules/player/reach.mdx | 15 + docs/modules/player/rotation-lock.mdx | 22 + docs/modules/player/shulker-ception.mdx | 12 + docs/modules/player/swing.mdx | 16 + docs/modules/player/tick-shift.mdx | 16 + docs/modules/player/xcarry.mdx | 14 + docs/modules/render/block-outline.mdx | 15 + docs/modules/render/borders.mdx | 25 + docs/modules/render/boss-stach.mdx | 14 + docs/modules/render/breadcrumbs.mdx | 17 + docs/modules/render/break-esp.mdx | 21 + docs/modules/render/chams.mdx | 18 + docs/modules/render/crosshair.mdx | 22 + docs/modules/render/esp.mdx | 37 + docs/modules/render/free-look.mdx | 17 + docs/modules/render/freecam.mdx | 16 + docs/modules/render/fullbright.mdx | 8 + docs/modules/render/hitmarkers.mdx | 15 + docs/modules/render/hole-esp.mdx | 26 + docs/modules/render/logout-spots.mdx | 18 + docs/modules/render/nametags.mdx | 33 + docs/modules/render/no-render.mdx | 21 + docs/modules/render/rainbow-enchant.mdx | 13 + docs/modules/render/range-circle.mdx | 18 + docs/modules/render/search.mdx | 31 + docs/modules/render/tracers.mdx | 21 + docs/modules/render/trajectories.mdx | 21 + docs/modules/render/view-clip.mdx | 12 + docs/modules/render/view-model.mdx | 26 + docs/modules/render/xray.mdx | 9 + docs/modules/render/zooom.mdx | 18 + docs/modules/world/air-place.mdx | 14 + docs/modules/world/auto-tunnel.mdx | 19 + docs/modules/world/avoid.mdx | 18 + docs/modules/world/base-finder.mdx | 28 + docs/modules/world/block-tweaks.mdx | 12 + docs/modules/world/client-side-time.mdx | 12 + docs/modules/world/environment.mdx | 19 + docs/modules/world/fast-break.mdx | 45 + docs/modules/world/fast-place.mdx | 15 + docs/modules/world/liquid-interact.mdx | 8 + docs/modules/world/mob-owner.mdx | 12 + docs/modules/world/new-chunks.mdx | 24 + docs/modules/world/no-glitch-blocks.mdx | 13 + docs/modules/world/no-mine-animation.mdx | 8 + docs/modules/world/nuker.mdx | 26 + docs/modules/world/scaffold.mdx | 33 + docs/modules/world/self-block.mdx | 16 + docs/modules/world/source-removed.mdx | 18 + docs/modules/world/timer.mdx | 13 + docs/modules/world/waypoints.mdx | 27 + docs/public/rh-head_256x256.png | Bin 1120 -> 0 bytes docs/support/exit-codes.mdx | 19 + docs/support/help.mdx | 26 + docs/support/hwid.mdx | 49 + docs/support/troubleshooting.mdx | 35 + docusaurus.config.js | 71 + package-lock.json | 20326 +++++++++++++++- package.json | 47 +- sidebars.js | 35 + src/css/custom.css | 36 + src/pages/index.js | 40 + src/pages/index.module.css | 88 + src/pages/markdown-page.mdx | 7 + .../commands/index.md => static/.nojekyll | 0 static/img/logo.png | Bin 0 -> 2642 bytes static/img/rusher-logo.png | Bin 0 -> 497475 bytes 252 files changed, 23452 insertions(+), 1901 deletions(-) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 blog/2019-05-28-first-blog-post.mdx create mode 100644 blog/2019-05-29-long-blog-post.mdx create mode 100644 blog/2021-08-01-mdx-blog-post.mdx create mode 100644 blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg create mode 100644 blog/2021-08-26-welcome/index.mdx create mode 100644 blog/authors.yml create mode 100644 blog/tags.yml delete mode 100644 docs/.vitepress/config.mts delete mode 100644 docs/.vitepress/theme/index.ts delete mode 100644 docs/.vitepress/theme/style.css delete mode 100644 docs/api/features/globals.md delete mode 100644 docs/api/features/irusherhack.md delete mode 100644 docs/api/index.md delete mode 100644 docs/features/hud/index.md delete mode 100644 docs/features/index.md delete mode 100644 docs/features/modules/index.md delete mode 100644 docs/features/windows/index.md delete mode 100644 docs/guide/help/hwid.md delete mode 100644 docs/guide/help/index.md delete mode 100644 docs/guide/index.md delete mode 100644 docs/guide/introduction/account.md delete mode 100644 docs/guide/introduction/installation.md create mode 100644 docs/guides/account.mdx create mode 100644 docs/guides/baritone.mdx create mode 100644 docs/guides/click-gui.mdx create mode 100644 docs/guides/installation.mdx create mode 100644 docs/guides/macros-keybinds.mdx create mode 100644 docs/guides/plugins.mdx delete mode 100644 docs/index.md create mode 100644 docs/intro.mdx create mode 100644 docs/modules/chat/announcer.mdx create mode 100644 docs/modules/chat/anti-spam.mdx create mode 100644 docs/modules/chat/armor-alert.mdx create mode 100644 docs/modules/chat/auto-reply.mdx create mode 100644 docs/modules/chat/chat-append.mdx create mode 100644 docs/modules/chat/chat-colors.mdx create mode 100644 docs/modules/chat/extra-chat.mdx create mode 100644 docs/modules/chat/fancy-chat.mdx create mode 100644 docs/modules/chat/green-text.mdx create mode 100644 docs/modules/chat/greeter.mdx create mode 100644 docs/modules/chat/lag-detector.mdx create mode 100644 docs/modules/chat/rusher-crypt.mdx create mode 100644 docs/modules/chat/spammer.mdx create mode 100644 docs/modules/chat/timestamps.mdx create mode 100644 docs/modules/chat/translate.mdx create mode 100644 docs/modules/combat/anchor.mdx create mode 100644 docs/modules/combat/aura.mdx create mode 100644 docs/modules/combat/auto-armor.mdx create mode 100644 docs/modules/combat/auto-crystal.mdx create mode 100644 docs/modules/combat/auto-disconnect.mdx create mode 100644 docs/modules/combat/auto-exp.mdx create mode 100644 docs/modules/combat/auto-surround.mdx create mode 100644 docs/modules/combat/auto-totem.mdx create mode 100644 docs/modules/combat/auto-trap.mdx create mode 100644 docs/modules/combat/auto-web.mdx create mode 100644 docs/modules/combat/bow-aimbot.mdx create mode 100644 docs/modules/combat/bow-spam.mdx create mode 100644 docs/modules/combat/criticals.mdx create mode 100644 docs/modules/combat/hole-filler.mdx create mode 100644 docs/modules/combat/hotbar-replenish.mdx create mode 100644 docs/modules/combat/ignite.mdx create mode 100644 docs/modules/combat/pvpinfo.mdx create mode 100644 docs/modules/combat/quiver.mdx create mode 100644 docs/modules/combat/trigger-bot.mdx create mode 100644 docs/modules/commands/bind.mdx create mode 100644 docs/modules/commands/breed.mdx create mode 100644 docs/modules/commands/clear.mdx create mode 100644 docs/modules/commands/config.mdx create mode 100644 docs/modules/commands/connect.mdx create mode 100644 docs/modules/commands/coords.mdx create mode 100644 docs/modules/commands/credits.mdx create mode 100644 docs/modules/commands/deadcoords.mdx create mode 100644 docs/modules/commands/disconnect.mdx create mode 100644 docs/modules/commands/drawn.mdx create mode 100644 docs/modules/commands/enemy.mdx create mode 100644 docs/modules/commands/fakeplayer.mdx create mode 100644 docs/modules/commands/findstronghold.mdx create mode 100644 docs/modules/commands/friend.mdx create mode 100644 docs/modules/commands/hclip.mdx create mode 100644 docs/modules/commands/help.mdx create mode 100644 docs/modules/commands/macro.mdx create mode 100644 docs/modules/commands/modules.mdx create mode 100644 docs/modules/commands/namemc.mdx create mode 100644 docs/modules/commands/notify.mdx create mode 100644 docs/modules/commands/openfolder.mdx create mode 100644 docs/modules/commands/panic.mdx create mode 100644 docs/modules/commands/peek.mdx create mode 100644 docs/modules/commands/pitch.mdx create mode 100644 docs/modules/commands/plugin.mdx create mode 100644 docs/modules/commands/prefix.mdx create mode 100644 docs/modules/commands/reload.mdx create mode 100644 docs/modules/commands/reset.mdx create mode 100644 docs/modules/commands/send.mdx create mode 100644 docs/modules/commands/shutdown.mdx create mode 100644 docs/modules/commands/toggle.mdx create mode 100644 docs/modules/commands/vclip.mdx create mode 100644 docs/modules/commands/yaw.mdx create mode 100644 docs/modules/features.mdx create mode 100644 docs/modules/hud/armor.mdx create mode 100644 docs/modules/hud/biome.mdx create mode 100644 docs/modules/hud/crystal-counter.mdx create mode 100644 docs/modules/hud/direction.mdx create mode 100644 docs/modules/hud/dub-counter.mdx create mode 100644 docs/modules/hud/feature-list.mdx create mode 100644 docs/modules/hud/hunger.mdx create mode 100644 docs/modules/hud/inventory.mdx create mode 100644 docs/modules/hud/keystrokes.mdx create mode 100644 docs/modules/hud/logo.mdx create mode 100644 docs/modules/hud/macro-list.mdx create mode 100644 docs/modules/hud/memory.mdx create mode 100644 docs/modules/hud/online-time.mdx create mode 100644 docs/modules/hud/ping.mdx create mode 100644 docs/modules/hud/player-count.mdx create mode 100644 docs/modules/hud/player-view.mdx create mode 100644 docs/modules/hud/position.mdx create mode 100644 docs/modules/hud/potion-effects.mdx create mode 100644 docs/modules/hud/profile.mdx create mode 100644 docs/modules/hud/queue.mdx create mode 100644 docs/modules/hud/tps.mdx create mode 100644 docs/modules/hud/watermark.mdx create mode 100644 docs/modules/misc/anti-afk.mdx create mode 100644 docs/modules/misc/anti-aim.mdx create mode 100644 docs/modules/misc/anti-hunger.mdx create mode 100644 docs/modules/misc/anti-packet.mdx create mode 100644 docs/modules/misc/anti-quit.mdx create mode 100644 docs/modules/misc/auto-accept.mdx create mode 100644 docs/modules/misc/auto-mount.mdx create mode 100644 docs/modules/misc/auto-nametag.mdx create mode 100644 docs/modules/misc/auto-reconnect.mdx create mode 100644 docs/modules/misc/auto-respawn.mdx create mode 100644 docs/modules/misc/auto-shear.mdx create mode 100644 docs/modules/misc/auto-trader.mdx create mode 100644 docs/modules/misc/extra-chest.mdx create mode 100644 docs/modules/misc/extra-craft.mdx create mode 100644 docs/modules/misc/extra-screenshot.mdx create mode 100644 docs/modules/misc/extra-sign.mdx create mode 100644 docs/modules/misc/extra-tab.mdx create mode 100644 docs/modules/misc/extra-tooltips.mdx create mode 100644 docs/modules/misc/gamemode.mdx create mode 100644 docs/modules/misc/hitbox-ignore.mdx create mode 100644 docs/modules/misc/no-force-rotate.mdx create mode 100644 docs/modules/misc/notifier.mdx create mode 100644 docs/modules/misc/ping-spoof.mdx create mode 100644 docs/modules/misc/portal-gui.mdx create mode 100644 docs/modules/misc/skin-blink.mdx create mode 100644 docs/modules/movement/auto-walk.mdx create mode 100644 docs/modules/movement/boat-fly.mdx create mode 100644 docs/modules/movement/elytra-flight.mdx create mode 100644 docs/modules/movement/elytra-tweaks.mdx create mode 100644 docs/modules/movement/entity-control.mdx create mode 100644 docs/modules/movement/entity-speed.mdx create mode 100644 docs/modules/movement/flight.mdx create mode 100644 docs/modules/movement/ice-speed.mdx create mode 100644 docs/modules/movement/inventory-move.mdx create mode 100644 docs/modules/movement/jesus.mdx create mode 100644 docs/modules/movement/no-fall.mdx create mode 100644 docs/modules/movement/no-jump-delay.mdx create mode 100644 docs/modules/movement/no-slow.mdx create mode 100644 docs/modules/movement/parkour.mdx create mode 100644 docs/modules/movement/safewalk.mdx create mode 100644 docs/modules/movement/speed.mdx create mode 100644 docs/modules/movement/sprint.mdx create mode 100644 docs/modules/movement/step.mdx create mode 100644 docs/modules/movement/trident-tweaks.mdx create mode 100644 docs/modules/movement/velocity.mdx create mode 100644 docs/modules/movement/water-speed.mdx create mode 100644 docs/modules/player/antiLevitation.mdx create mode 100644 docs/modules/player/auto-eat.mdx create mode 100644 docs/modules/player/auto-fish.mdx create mode 100644 docs/modules/player/auto-mine.mdx create mode 100644 docs/modules/player/auto-tool.mdx create mode 100644 docs/modules/player/auto-wither.mdx create mode 100644 docs/modules/player/blink.mdx create mode 100644 docs/modules/player/chorus-control.mdx create mode 100644 docs/modules/player/fast-use.mdx create mode 100644 docs/modules/player/ghost-hand.mdx create mode 100644 docs/modules/player/inventory-cleaner.mdx create mode 100644 docs/modules/player/middle-click.mdx create mode 100644 docs/modules/player/multi-task.mdx create mode 100644 docs/modules/player/packet-logger.mdx create mode 100644 docs/modules/player/phase.mdx create mode 100644 docs/modules/player/portal-god-mode.mdx create mode 100644 docs/modules/player/reach.mdx create mode 100644 docs/modules/player/rotation-lock.mdx create mode 100644 docs/modules/player/shulker-ception.mdx create mode 100644 docs/modules/player/swing.mdx create mode 100644 docs/modules/player/tick-shift.mdx create mode 100644 docs/modules/player/xcarry.mdx create mode 100644 docs/modules/render/block-outline.mdx create mode 100644 docs/modules/render/borders.mdx create mode 100644 docs/modules/render/boss-stach.mdx create mode 100644 docs/modules/render/breadcrumbs.mdx create mode 100644 docs/modules/render/break-esp.mdx create mode 100644 docs/modules/render/chams.mdx create mode 100644 docs/modules/render/crosshair.mdx create mode 100644 docs/modules/render/esp.mdx create mode 100644 docs/modules/render/free-look.mdx create mode 100644 docs/modules/render/freecam.mdx create mode 100644 docs/modules/render/fullbright.mdx create mode 100644 docs/modules/render/hitmarkers.mdx create mode 100644 docs/modules/render/hole-esp.mdx create mode 100644 docs/modules/render/logout-spots.mdx create mode 100644 docs/modules/render/nametags.mdx create mode 100644 docs/modules/render/no-render.mdx create mode 100644 docs/modules/render/rainbow-enchant.mdx create mode 100644 docs/modules/render/range-circle.mdx create mode 100644 docs/modules/render/search.mdx create mode 100644 docs/modules/render/tracers.mdx create mode 100644 docs/modules/render/trajectories.mdx create mode 100644 docs/modules/render/view-clip.mdx create mode 100644 docs/modules/render/view-model.mdx create mode 100644 docs/modules/render/xray.mdx create mode 100644 docs/modules/render/zooom.mdx create mode 100644 docs/modules/world/air-place.mdx create mode 100644 docs/modules/world/auto-tunnel.mdx create mode 100644 docs/modules/world/avoid.mdx create mode 100644 docs/modules/world/base-finder.mdx create mode 100644 docs/modules/world/block-tweaks.mdx create mode 100644 docs/modules/world/client-side-time.mdx create mode 100644 docs/modules/world/environment.mdx create mode 100644 docs/modules/world/fast-break.mdx create mode 100644 docs/modules/world/fast-place.mdx create mode 100644 docs/modules/world/liquid-interact.mdx create mode 100644 docs/modules/world/mob-owner.mdx create mode 100644 docs/modules/world/new-chunks.mdx create mode 100644 docs/modules/world/no-glitch-blocks.mdx create mode 100644 docs/modules/world/no-mine-animation.mdx create mode 100644 docs/modules/world/nuker.mdx create mode 100644 docs/modules/world/scaffold.mdx create mode 100644 docs/modules/world/self-block.mdx create mode 100644 docs/modules/world/source-removed.mdx create mode 100644 docs/modules/world/timer.mdx create mode 100644 docs/modules/world/waypoints.mdx delete mode 100644 docs/public/rh-head_256x256.png create mode 100644 docs/support/exit-codes.mdx create mode 100644 docs/support/help.mdx create mode 100644 docs/support/hwid.mdx create mode 100644 docs/support/troubleshooting.mdx create mode 100644 docusaurus.config.js create mode 100644 sidebars.js create mode 100644 src/css/custom.css create mode 100644 src/pages/index.js create mode 100644 src/pages/index.module.css create mode 100644 src/pages/markdown-page.mdx rename docs/features/commands/index.md => static/.nojekyll (100%) create mode 100644 static/img/logo.png create mode 100644 static/img/rusher-logo.png diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e60f257..afc2012 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,9 +1,9 @@ -name: Deploy VitePress site to Pages +name: Deploy to GitHub Pages on: push: - branches: [master] - + branches: + - main workflow_dispatch: permissions: @@ -11,10 +11,6 @@ permissions: pages: write id-token: write -concurrency: - group: pages - cancel-in-progress: false - jobs: build: runs-on: ubuntu-latest @@ -23,32 +19,31 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm - - name: Setup Pages - uses: actions/configure-pages@v4 + - name: Install dependencies - run: npm ci - - name: Build with VitePress - run: | - npm run docs:build - touch docs/.vitepress/dist/.nojekyll + run: npm install + + - name: Build website + run: npm run build + - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: - path: docs/.vitepress/dist + path: build deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} - needs: build runs-on: ubuntu-latest - name: Deploy + needs: build steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2d6de3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff2a5ad --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# RusherHack documentation built on **dinosaurus** \ No newline at end of file diff --git a/blog/2019-05-28-first-blog-post.mdx b/blog/2019-05-28-first-blog-post.mdx new file mode 100644 index 0000000..a62ee55 --- /dev/null +++ b/blog/2019-05-28-first-blog-post.mdx @@ -0,0 +1,12 @@ +--- +slug: first-blog-post +title: First Blog Post +authors: [slorber, yangshun] +tags: [hola, docusaurus] +--- + +Lorem ipsum dolor sit amet... + +{/* truncate */} + +...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2019-05-29-long-blog-post.mdx b/blog/2019-05-29-long-blog-post.mdx new file mode 100644 index 0000000..681cf0e --- /dev/null +++ b/blog/2019-05-29-long-blog-post.mdx @@ -0,0 +1,44 @@ +--- +slug: long-blog-post +title: Long Blog Post +authors: yangshun +tags: [hello, docusaurus] +--- + +This is the summary of a very long blog post, + +Use a `{/*` `truncate` `*/}` comment to limit blog post size in the list view. + +{/* truncate */} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2021-08-01-mdx-blog-post.mdx b/blog/2021-08-01-mdx-blog-post.mdx new file mode 100644 index 0000000..0c4b4a4 --- /dev/null +++ b/blog/2021-08-01-mdx-blog-post.mdx @@ -0,0 +1,24 @@ +--- +slug: mdx-blog-post +title: MDX Blog Post +authors: [slorber] +tags: [docusaurus] +--- + +Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). + +:::tip + +Use the power of React to create interactive blog posts. + +::: + +{/* truncate */} + +For example, use JSX to create an interactive button: + +```js + +``` + + diff --git a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..11bda0928456b12f8e53d0ba5709212a4058d449 GIT binary patch literal 96122 zcmb4pbySp3_%AIb($d}CN{6sCNbJIblrCK=AuXwZ)Y2^7EXyvibPLiUv2=*iETNcDDZ-!M(5gfan1QF);-jEfp=>|F`_>!=WO^Jtthn$K}Goqr%0f!u{8e!-9i@ zhmU(NIR8g*@o?}7?okromonkv{J(|wy~6vi^xrZLIX*599wk2Ieb#lAbZ*fz97a4{ zJY7PbSOUsOwNy1OwNzXx4iXOC|2z)keOwmKpd-&ia_{g7{tN#ng-gPNcc1#tlkjM! zO6lT6;ZU0JB&4eA(n2(-bp-FTi8b+f7%9WKh({QCB8bELa9lXp#GSXVPIvbL=ZA)_ zoqe{#7VMtQs`;Ng5O8q3j-8IgrN#}94v)TX4^NlszBRSzdq}A`TxwFd3|y~ciPQw? z%W89mZQrCUNI$g^7Oh9(UFDIP_r7lI7lWz&hZ1*kZ$baGz-#@nL4S(s3tjnk2vk5* zGnL>!jFf8k?c!+McUT=ympT%ld*3}>E?g-5z9LI_yzT>@2o6r3i2v)t?KwGOxzsp5 z--7^Xa4<>>P6hlaW!G1-kpn0Y2dq(kdhFvvV+2FM0)3np}3GKzTt;)#GZ=Z?W z!}GMkBmSB3taZb*d{@PnL&d_l(Ks(Z2Nbb?3HFfuIKl`Y+P!9$uuAsc53|NzT!gCE z{M_rr@ucO9AC$3tNI(^d8!3^&0lCM-kw_(|g&{O!)%`pqf8E|0W;wYyy}6&z6(2B; zRYt1FlHZ2C7vc@FdKzC@n?}jobe2D9^;P-sa5`IfwpE1e6#N|6qQw8o+38045pxM* z_59Aq@8~>dJCtqhns#jEI~z0hACBNUZ;I~qj_$}bPXswGCwZz`c=)~lO#R;=sD(%9 za&bUY81NY4aNY25K5M9{QQ`EOS{V4jzXdWnDdV2b8HKe6T<|X$Q%nTAemPnPhtCab z@I(`E5U22@kW&(;Pynv}zWp62&;CfRX7N~Ze4eAlaDu!0dW=(x2_An*}x3G&V2kUsI=T|3LqH$PFPB?r*Kh zT<(BanS8n8ZL2f{u<*C=c;#&Iv3z05|BtwHPyLVX$JfSZ-nPRGyw_WdBUAS?NhDHJ zmzyA*oPZ~V;9d%;G25NPBOfQ-_D`B?F5{09Gw9nt9ehQ4_7uLZZQvbQt_P+|;LlMZ8=jss zF^Gm7)AuJd!9`>njaJZ$iVyWbd6|Twl_cKuZ2N()vsz1j@E37vPyKyt=e2GqZ^MR~ zXIy^LItyv$VNEn)MYm=|*3p-TDZIgKxoy7MI3JQa*lF%)ARPfF;fs*DQ?da`y7oEU zh_lgIWD}kW>MyGS)zaY65j&?~?T{j(I0L8nXp-HVZ_c&_z>K4Vi_<5qV_D*Pmntfm zcZuH8?M-w;z;3X$(8R`DMJ?#^m#o9ZLE0Ismu8& zDF)Q?Teh3z;(@8v6Q-&8=w`afg3mLQ85XKF=>ht;Mk<9C({@^a!<@Wn&e@#S*tGZT zflx~uFh89d7#69BINhL^;7=1nNyD(`#`N(kcJFxJH1wC-G z;3~)5?Zx+e8gBGJEGIZpXCR@*4E3T{e~F3|np7zaFTW*H$6lk=q&W<9@%|HhT)JsG zi?G)xD*Su@aGq|R2%ww6-{29RSlN?n22{r1v7(>8AqB`_W!ed6MbYgY>Lr~WdJ&67xXmBw;p)KRhD8c| zJPCE$_%TC!QMW^NN%e0n5R2!O>QuB$oNP`QHKU(-$F6g084quR%O&2C0<#jZqHNw4 zg}XntN)!#<#jr(XMe}^|UlLdeBP*t#i${&;_yuBmDs$W2O;1E|sSj=;W^ zSyF|!M=xm-QCXVU7mQ}V(~7UrsKOIK5r4^7F*g0VH)w1<|34dC_`UQC*oTu=+B`9* z4Jh>4me{%44wl;7BDJkvDDWJ6SL?-=_fdbjK&XRp5Vk`9;#>i?%Motv>V(|7;A}}O zU8%V37GK!!mZHZ`7L5Ns*ztfB%;y+ar#4rSN%qi@zDw*8HNT7L@UTW-9V>6VIrIS2`w$ZVxrD_Pvo4;!t)?he`;kX47HQS z-ZH7w(v&VJyMNj9a9hr72G+d({AQb?zG8>o3fA&C9sA)(_LXsqbK3q#_q2In;XuQA z;NKnzM$3uO)*k{JyOnxO7id4ceg~27qWT|x^KLg)9iN9N9QmA0xoo+VRJA$ z_etyG#Z~#aXRpU(?tAXq{@pX43OnVh@LXP_K@+?k9bogc$6N&(^|_I7ezWOoTLFK- zq`ji~=M!@gj*9u2?}O^~rbKuIaGHS#4~<7S&j`ui!Fw}>9T~O9Fj^ zyN};L5Oen^`4*<%c5`ifzl|RH{yv(l$yZoAGe7Vxi@NG$b$bfy@^r|37dNU}^yhDP zg3>=6>ltZV(tkMK&y2yjHjZAHEU1)`Px7LL-ApPAQyMeeb~^%^Tw+x_#AO& zwY9CqLCRqDuj8Hhori(`zOq4#X2@itHGeu;Oe8noy z;iV-)*{@MgVV=ZE;SQoB`g@sly`(oumzOeyw^%x9Ge`JZfNAQ3n*xKER#RJN$@N3` zX|n~{{3NG=HSLm3|GFI)m9jjMj&1 zi`#yIC*L7GD%~$4EPts}*Rd@VTe(M6jJF8MDif>-iGqb9>Q9zYo92egEmZacG>pIx zT3XS%Wn7uU37^#?IO>Y1N%%BY>lt24Jq!#rl0 zE|_4f751``XY#Kqndv+Y0tJc@_=K|OoS7Hcx$j7now-)jIS@SJ7Z`qR{;qwEN!yw( zrtTrDt}LdyQl>pCJEisU{ExS-0(RC(8z?xeh0uYie&4|@NL1Kt!PTFRbK~9VJLd%? zyjj}ixr`csCmc9SDb<>2>GnCHm-i(a=t69-_MDt5ksjAVU7k>i!(BOET#;8#cwKh0 zjS=YVlpYl!E7+!y;RpeY=C=*|<%&Oh2+5qCv^JIR3Of1ue9k7N`?6YW;A+{c(pyeP z^ZpjVK^#7%E}QYRtS*uaK_K$Oyoq3%xOCV3?n&qBv}Qc;N8FQ2O#u{>slaV21l1Fc)AyIlbfdX7AExO{F?eOvERYJb;Ni zckPYRgfT@0Y4PwO%7BY@l#2<^fKapIft)oU2O*-JU&?8;Z7Q467Gqyc1RGqTp3zqn z_F<{stV*oYnEE+<1}A|K7({3kbdJ=r67p>3|7YtA6(Iw>`GxKnm1Ve>A@&z9Vvu8H`OuD7{B zMq(lkGSK&awU^aqf~Hx?^P4cUl^^fU&*kPEt$t4z0-PMDv!U}pIKO<9Sv;GRJ{qnc zM#0V^%Zxa5H(Iv{@2xzz5#$zpTWxaaiu@Y4QU89(yi{9^PHM{|J_i?6y zgf4QjZLTyomqcSjIJKGS3lb zSwmVhHvq>|mo6iNA+%kh;XIm9P0(Wjl%N@e!Uo|`7fqKQ0Yb{?nwhp%!%@R7IgQ(J zLdJbRkfT+8-daWy0_~Aj4@&Z<8;^K*_MKdo=%J+qo&7AP5Y>3CZDQwLk>VrP-iE3l z8mvBgeWl{(67&r>s zolqo}wttX5$056wr+?q;8$fEMMrSIe%AQCqi$0{Qt{6t|=rBnTL`u#0;b>^^q~bHE zp{uMeEEOF+C@Bea`ih=v`oWzl`fF0@xNrw_gl78Y95SqUn_wnsHu&(x4lD7hc2>u& z+c4)a*}b=lY{4v4Y@S1w5Z2f!Jq8LAqHhf&HyFe+xH zbfYn zuHOaD(3Z44uZnBo`1Un7x{2QW9QCOpsNS-qWe%Q$F)qV<&9q&PJhD?RJ@V!6b{5RuzyJ7cBd?%j{&sd zks}NY{pGQJFNu*E%g=q^iNCa_pTISw{g5lr<;sbC9@&D4|{$QCRNde}1aaR*iIJ>SkWWj9GmQq+0=}_`Y_Ek-oPg#tRE%68|XT zB;g{AmDK0gbP&>?-)o<(f8r}>S&x@WpxLhLJ6!VHvd^8m{d!dr7T3pz$ zkn$>3T~Nk?bRK9XEGr-E(p1z!l=>NOIE93eV1Q}%M}o=Jc(kJdFI%%?IHjKWBv=F- zs0kf#$k+|N^0Kmxpqs_13OW!7mM)n&4n{0j?O}zqJVqRfO0L;*JN}9tgHPRp+@oVB zL^!D_@iZhfor|uMCvR_WYBUa3qK1;a0Sidz=3nvFUmND_0QX-%no0}PDmmBm$!Q>E22?Y^dsKW0G}?bkHM8iy?HUZJe3D3p>1 z{o>d|o2RGDul?wm_UifFO%C!~|FkRJ8a~u-1G`aKtr9TmNLt2fx<)$)zT|Y_bZ~;j zZ}|?5bT+5#t2#Z&ZjZ&(>}e~tx(OssxQ3R?$4(c{8| zA{yv+v62$*(TsZHW7*HdBc_*TZp57AA09eH5#R)*7`b!#100}{HOmdQKm_miUqlBW zZD@x|#G<>fCMXis0q5cF%MdAB0y4U4`ufgyXagAF75QILp?OQMg)oJ-I5tcXNTV3c z^LdROg=LH8OWSuduIFYH>yoIy>?K#m=7i9g&A;qZckd=Qq`Af993c<1HC+HF3?3TA z@mXTS>d{;Y^&|CQE)x8(;Ecs0QHElH1xI&d6&Uq}k*an~<;wvD&Gm?=IaRXC4_2t+ z687TAZDvFH`P_rv+O+vii*ILLDq&e;Enb4GCZxSUyr*?BG*S{dy(~hS+d8%Ae9{Q0 zDFTsg9%WffrG!4@g#5<1DSfOuyKOqS6anp;I0|{^ z)V|zlQP!t&b3wI~7AJ(b|n}V$)IB5Fya)0*qVbt^^Xy>&KoM5@G zgv~8hvW8mIQ#^U!=(x z9?eBPZ$ao`DWyTW$iz!Q`hLz+KZ&*med242vVjHA{9$>d~E!>k~8H`e}5Ob?c^7D<+;Pp*!^~!b~jcszphKaneeErmWa|Ii2Oi~ ztGB4PTrExmF%PO~Rlw{5G?R45H%J2)zC4d?gLsc0?I}+&@ z{srJv;THoXHj*l`5Q|Tga(WP!7MOqS|4vLj8TW$CZa(*>1?6`$ z@pb*I!r>YumfjryY$QPZ&5ybh7ImdJ=}jf0R&Il)Rm8;{T#`EZ(8$4xK5)i|(J2>A zM(ECw(3nO!P|NY%80nn9)0)$_wQ6EY)@tA=fiw6Ckl?6%O@ z>iR~gE<@*gj8f=2)9R#xOOTiDw+cG>OO%J1<=dA?ehZH`uc}v z5rU~T1mqht0WB?l44gV3*5~ubC7^VJ?0P zaXK-^Pxha#1TpdkU7p`ESsU|D+8lTCPuba3r1}NxZiE&_I8Tx1G@)B3Ie#b@e%d`@ znIB6?VVd@|FiiIY5+r1dt`0*7CSknIt4x^I8lcbofDCyRBVB4u4goFQzHpkSVflWC zwCjG0O1Gn0h4%24jU*=Xv{Dg1GblXO54Wq$@-$o{ecO2#8L)Ph46``+>pER>c+GW$ zM(_lX8sW#qMTjI&_xnpy7&J=2N6?X_`pi{1qV%(bZ`?B|_=-Wqy}i#QMBhD-9s2~c zy7b9>k)dilS&g_J-(ltH!~Gud%K0oYXy7WObRVqWIQWFXU?{rDV z3ggo;zJQqxIwniw*YYRCIa)*_EWpICGC#=Rny3r;`R@LdNvYW-FgcO%z3NicRCZ1~ zr^>u8=iAvGHtZ*OTiMpv9AW!t^yU%s#0J_1Jj(G-;n1NVwt|-9p@r5g=&hhj z1nyyZ3~Dv2^qB>>zG(RzSlG|YU8v?0scfBa?5rKq+S(q|BL=E&8z;zIi-JpLE}t{X zC$jXzp9eAMETY=;3mQg({0eFdgYQ^9w`8`P{pXzAibKLGsLZIHeGwLV?3;0NhcJD* zW=jF6I?uh7cnonu|01<_;8Y**Gym3BCvZ@ivavgH{8Ys)L0)!KpF3kN<)NbxWqoIg zk}H!2P(+*L^U;+}sAL7~{4z9T$5;N&FXJ@lEb!F(Tz^mLXIY+Xoa8TCE}?oMt@2dF zf>B7vRnrXYt*^{_10oHxyR&QIX*_A69}X}I)WsaK?lU?w zy$^EMqSM;=o9rGpvC;Y5hd$=({MVCGg0~qSRl?QF2fWElYI_6-(v`Ds8JXMNUh~@d zWH?o5p$-i}&}iI?V3Q`#uX{eS$DhkUlnCO>r#B_^e^(O7Q{_t^=vWq6c#OCzKhoO0 z>32c(onMuwu)W}-EUGQg%KW%{PX{kY`i8q`F3DM`^r z!$)9ld2-fLN3WUry+VwXhmA^BUOO{*tc=o0;~`%Ca<(w=m6pWoO?LAFnnITD$;4f1 zdH)T)1!-l2iUHo|F5wV+q=!``)Qy~Ut5}0LPVcL+PVN=`-kE|*wA&=vLJE}>MFf9) zLt!6O^ZQ)(vglM}uzOPd0QN`M;WPw^X&aoW#x|kYoR#)bCHgEbGjry|844*9YTYBCxxj0&FM9T;FV9bu>;C5|_XUj%`lRr>o+m|j2w35a*LG`KiegseN*Vq||f zpKo+14SwyV7d7ICZYcB%nnqii`@U>;LT4X6c&u$(mMQCPn=5W1>fVq*>-%eSmqRPC z!MqV{0CK-po#-m}|GiC9*)!(f7%0~@X2uh8`BJ~{dz*Ync9O1wkf5C)WL3naIzopG zHvd`1UOoEtlLa?}QOao@HL{F{mI*K65TO$*SkruGJ9cH}2ju9?KuX(8@a1Zyo$)6p zZyW0qF;H_NM7dV)Yj^I?H(w9Wej^ra@(z+8`+Jgw!rYedJu7|k=mo4iUFPzl(M6VS zbbu2fb6_=)UQm-WUL;&3oCNw^s!y0Hb?(x+elVSM>w^f#=jtvUb~6Iia>Q`3alZ4| z!j996r)(u@83OLDw6YetLb4iWm7+S)t#!mEva~OF7%~>=+DuYL@me!-;)J-gNC*Ur zA|;5H1@Y8rW7RV?MKh$mP_*+bS%!1)S_h2SJYQ~+R#cC`zu~d? zOI^f%5GtC|SSF%ErwSjA*`s8rtbF=>d9`-kELhy1S3P;&3;1gB$_sWdlY5=>)|YCs zaAGeo=f|WwwRBBaT#s|qO#D)%Q;5EdbB`@>l^)%EEnYRfsTcDFB&!5TF%z-b@a2FtQSU0aD;eRfc&CPic*R+ zQbd1TSU857kART6jzOmnmq^G8r~e1=S?LE$yfUi^VJk6D{f@%0hFYyxTKCqM!_Lku zY?H0EO#0bF4(UWmhPVFYySswtbAxQ}j15fDU32FbfyU}l-O@JSrLX?sX!Q*h5_tkQ zCtcr27j3zI(b3|TZI*t(-ta7BCGeIEc_ZQV{Wlg-iBLFWy!|NdWvue9$0BQj_1$Bp zr`qiuEt0~v+OhZwhq8Mi1 zIw8~;Sm0}2 z`#Z_V*`Gtl7e<#qj`xO|P7M?WmGffQxcNF+x<%-$!L__0mD(0f9Rop;vZfa(V)yz1 zE-cIPoYeHN29k7N$0WLjCYs!YP+iwDozf(gSe6H*1g^^7?82$E% zS+c>;5q8OK9qMVDD}$)M@dR40nw293G2)zguH2&?cwoLJ@+eF4v=>g#%A}>R(~ovXE-mGs73s_&xby_%f}MF1omBoV~8zG)9FCUxZl+03&8 zMo*Rg6u22p>bxtf#)@PI_~o$3n#$C2TEy|2cqEvo=<>YQ3@_0OPn8mh1#_wmn~5Yn z(=m}EIZ6e^^W+<*D*Jjsy+Jv`4jwSyeGF%ijP4W1RK5u=$1-9FkUWy?o?OtxR0Px>TvF0%+;luL8uZWYWuM&>2#N1M!zIM~ zhjVaUQF{cRG%+=sIXEzp>C($LdH*Y4BMVuE%5!^vX=7DW4mYLY6uXrMul&O?U)Dw# zT)+#OII#l7ZY~8)(sLEwpPp#0)67O3m?;PGuT61U+pnzyzr?t(-rRHH-%+c;ob;ZTF5`H3a7k^Wg8X94FwFi1kV+$_Yy zXTvfH$(d}PRhZAsIbAPRB9M;(jZWnP1ImuH&&>3^RlXX)u(sWW=FPKFU!tUjb@pL} zM|#Mo$rf7F^D~+khXrUzlW0<>wk`hb=gjg)=96tX2ReSt$^b7Zi2q0`^>L2Mr9tR% z440)8CVH`A)GyCarH4?V9@etZ*faJIXV6V}Fcnz?m-2gUUh~mrxZIeajFUNrlTk{Z zd8sQm@el1OA7qu!%gLx;NRQwm8FDb6!>VPO-c&0AgXL|~UNoYcW=DhKeWW1RH!C%o zA;q+nA4?I~DVn>yGN`g6aYj&?iA7Z#onO?v!NtxbNE^W&*y$}dlE!C{o7m@c%*fS0 zz_~2;b#I7Ri799%3IhVZ4E5H3XZZel*OWLYUV9D0Tcg>O##T|P>{`(AY+jFhL5fu` zuynS{@E;DK%W}HBYW8cB&UoQgH6{>)SrjCR^|%5U4({A*VAW|PXETk@a8a6(dRzwt z#{=^6uZG6(CCb&TCN=!S5#mZI6Qm5iRyHud%LsK8(y}cz$?%hxRVbYcSk(jQ)Hf*q zwl`RXgq%Vq2>?qiQLj(sikZ5M2--71+VIB4>t#QF5kY>+0 zvdrvFUKb|@`qYA_DY~F8uSs*wtSyZjru;0Jd3f;q2xc^|l4;ainHm0GyTBPE^x351Nfhu+U_zM%JNv5tRNY(SJLI>_cH|`_% zBv}sM>s)u6&ftbT2iCAIbVYfaUdPKoAvKRr(h$g%l=euf!4+uP{uuJ2-j;C-gh79tNgvD!v);u3L54L8bMpdHOxBezyB$J z6t|CIWiq(2k-xMuIlq+@%c*oUf)auDn&NzqLb-t?B`)P6`sEjdLaw{t=0WE!psHKgYc`L8 zG7f5fbN<5Tc|Sc;VfuD8K7LsFY}c)XgtW)}UzLZ%PN2{=X%SF}l%n5@+mX^Tghf)C zQT&=hLLvxe&MK4|eJ=aMDkZi-%i5#;LRBB}9{5$@0{+NM_YoNPz_<(gyMe8_SQH4* zYs|(<2TOk`SN+|6){TN8HLBf=AL?Q5Wca0h;$bU05=f4Q$Ce1foxm6^F#KFxsX?$Dq%n7L@)AR}- z&sp2&#EosZM2gM29vW25{lhV-Z1N)rJ*7vJCt41#dOcxI`~uT!F-f|GtYZ5$j>V<= zK@HEb<0GW9P6e=bcVm#Ty6$x8j)|034zm=W^ZG!o-(MwhvzB207jL{j#Wr zf3d4_jvjQH2}PJ^fXo642QaQa6SIkfo=`<$&eyhn3IQPVc8GcDB52|H1>8Iut^!rs zC*ZD{x=G}jXK(yQf)&(+qxcckLnigZ_sae;{8ma1@=cIYvEfv1*!;%B!dd$t&bjiX zjLpiO1-g7WV!!s2{{sGJM4)42K)c}T-{uU*qv<>aOU}lXLmg2AOHj#J zki~HRbZ)>CvNm`r6BJX`hu2KeqCd0XlcA$ofF_0`t48MYK62h`5peGP1hV>0lG|m| zgWJRC+n9plKb-fsjCaB)bz?)}0q9?6jnI+-?$-r+K$|Br+H^=3@NtAFT4l z2Pi-M&*wPOB{W@wZ-O;n;LC&fOFKV-3^r~IIPJgH(Qpu5xoI2h@Hq2uu%{?y_46MT z`3othZz2iH{As=P+;}S0rE#`E2WqQPfr4&cPe(9Ktb~6jBPFsV>h*v;I40yZ>^Xz|QmC-`*#T zuCmXO#@x)`YmiZR8qy(gIa|mxze9-8a>4X|+Ry(%r`IIcXF4{gloG(w0Zv|e)-5$B zFR9*Ql(r&d+E;8rd(IRG-B*ayI(PfB-?UL~Sow+1Y4{mk=}6!wG{<3bm8%d8uUrRX zmFS*Vz0j+ynQUc{u++Nh%~FHPUOSb49r9StxA6XyKILE2qHS&1_qO5K(7%#T@HtKcx?+ZQBOAI6 zjSor!Q1@$2J=(O_HaIy^gFP2A$xAdmljhq5dELa!}A8tv_9E>5Ol!F@<`mu)dHKWLPv8lunR z;OOt%(~^s#z~1uT!@rASj6#`Nmj}}IFv3aFcO!H^@q(MZJTTgRp^!Gf+__|qf~;VN zi>pFV$ZLa%?x)U?-2o`@C8FW}Sz-J?zzrs5rzwS@>I5oZ6ywRw%hp6$!RgmP|KjOf z!Sh%rRz+hvQp&hGy~Ukxr0p=@*{0=yDy-nJ>BKdX*G$(+(b3QMum+kWNg2&~*QLko z*W@&s%qtW~J;Y)|y`9@2H=L8(Ewaykmwe8eGoQM|69>+i-|K}6x>gKS#w+7x7QlqV zWPRPKP-iA@jC;mm8gxvChZQj)VB*g`$U?84Q`ZhG`5L zQy;))-`BdwToBd$!x@&Xywj>yJyqDa&Man!bBR~&6<*P2C(knRy+@s&_;u$^UKHfL zNBExjJ*17XN{9=moVp>;T)*+>pweV zkqpPE)($ap_+Oan)#DL9H~w}L?k(hvtBW4IV&9$Cr4Od_f)RzC^~L1!`|># z%$v-L4zH~s{FG?hm6~J@(`5 z@`I*$QL}m!U@6E;u3tZdA;Zy|LK$qFd~)|2nDUAgHx~`vsT?0SUx3qCZrY@j7kjfD*hyUc~L86s!14rk9 zgm*6%*gqkK0`bL+Zg+j~XHVFSQIBw7*$Z#)kkG2!y5a9)CjoMF^wVLI<^@ zIG0@Qu4%nMp-ild>IADcH2JQf~6e)%OI_(LGI%=;Kq6B!MtwqJ^yI{BcJTot62W z%=0 zbQhF7T1G#I`ri6IHd>meOq$Q8)X(GW#bd(F)mbI8kpinT ztcWRAGA676;jNDmc4Og6y_9kq(M=rWX@cp?m6rf0*rdu-)K<>Pl>UVBuCkK;` zE%u(=@;kY8LZ<%Va5u)$DW+4IR+nq}t^s|@&qsqC0%3oF0?sUF&WnEMCqfs>yj(5T znL-zyT3Tji@~Wl=s}l>LUS5xfJ{EDzVgjIvR62OTN4g;;v})iI#h>;DcD@91_qzDW z4k~tTj{CRg!qXZztF^-rE9H6ZkV_hxOJEk=Evxad%L7+x-rYG^W}-O~#KxuhzLF(Q zs@zanss)5G^SfRH11hS^wy?u*oxD&rZ7PiIDg?raN(ethc!mQqycn%QvGm*LuxCLD zSnd~+!|TdT&_PGUrD7M!_R2e-i#>k5rw$dZnE-)||r z{~(#lp0ApHDfmZ|v2cj{#F@HP=l}0w(_) zGeJ5XB1na1WHT-Z-S)q+lLKXa>`ib2Ks?g;6g6K7UV(DTZiQ6)YLAW~{sVO{hYd#3 zxUvg3(}g)twI|k_tgjwEIH^zN3E8*vHGATJvELu65&wMd`D?_S%K!-5w1suU8oUi` ze#ByP=JKgEAxBE((U*1&>YvH3Bymg9d5uVGeH@#^EbZs)3=vj* zwK7Csa~K^WrQcd8S1V4_4*G|KzI{^6qEcA(=|(7*p9RcL zvH#{5WVmcVY}8!{9QfO2t#ViWuM{KKGl8%<_ak8SSHNo3moDDO%2O5h$Y#+KsI|&? ze>BfDv$!X*$H?PlKE0qos)z)U-*J(|1BTX=yj(npJQR-8lIjmR~dItB?C2n@$pB!cNsR5 zK5{z!)dO;|_`@(l%_Dfkl9vsQpgZZ=+>PHA7I#=nI{A%u8aDU@(3|CE;ITiS_g}K+ z+j4HWL_5PSZR!s@B$tiWPD0Y0Z_}Fd-{&w@#=qKXeV*iq;n?4!o31ITo~peGdD6RP zL)JRZF7#(0r7Tb-Kr(K*VL&y?pk6%z%B2P3q%w?8Pi}!)7^{%(h3#lLetDvy86fV= zrzs3s^%Cwm**F+$JcQCJO8#;Rt$F>2{lVg71E1WJ5ODHmq}=-@={M!K)74q;j?S0e z{7ybdS+(1Cdd|64Th+$dym>)4mx78OKXo2~2b3+wzb|Fv(u^B4^*uj>xB}!R{kTk= z5X_rHExdjM(p>%_CNwOCEIDYjlpG%f)zddv6IYKmnwEl0@*iz!Y}9hgO_DFw*LREf zYcNJ!8GQ3yZMOKS^m=7-|Bv^A*d-P=>?-pQ$7r9g2zkL`vD&gc9(x<(oi=9c9fijw ztSC)C`wxeP^F~-QweLweujxbKcM@FW3#O~3o4dOo$jJxR>uHqeN;u!Xd-W=WMhY^4 zwzy-o=FUFO&d*6xIy=%{^8Z7(cCx}^13R{V#lww>EBP?0N)vi`_;Dcc+B3|g#X1c> z?~C|Le+_+~7RfF5=J8@31G7m zM=`oCXAzQ74^b>8J$whv-7@|-LM!YgpgMGINiCOaz`eVy+37UX05SMx+!HKgZ}EzE zXNHLfss0ZK$^>_^T_bD{@@p~lt~&2|Q+)m2Plw5B#Mq zZ%U1q1Enk~em{-#KOgChb5IgWUoza8W1|)l!K8=E_lMkx{V67XAqnBMY1pPw2~;c* z0sT#HyrV1RcXU45((e1-3Q7Au$iHSspbL&YRT&I!OI+b@jM>!dSg55jX{HyC%DIoW`z`S5PqL@5|`)uqbMf)IUiAjl;~6xqZl`ucoX92I1oFr{e5CZMaKqh zaBpKe73<%LGi-4hUkb>Ih1u==f!_p&GBIB?kIcGjBxUWhDz11}vH$R3IPQ!;Np_4V zc`ldT7@(aOVv{iUUPv>fSx-+WC|&F%{x8+j`!ebzQeg_aV(Q9*QWmnl#*CcP){tLU zR~k085wAh-AomA&?#&hkEAJCb7~%`-wDA4qci?Q~M(B+93x1=WkMj2SqdrsrWyz#} zI26mgu$dFH%geihk2g(DeoMDI4Y~kYfkO7@ozI?3bX%n19Sw~{u>@Oh+q{8R-47(q zPLm-teKi5*Hb&bS@|QZ}uC=~P+;IN6Gcs6uTs%6+Z%*d~kT(Tn)X;pA% z@}8fJt{Dg0EWPo+x@z|y_@zpXK0Y3g9X^UcDB8c`LLWjS5&h1~q00VQad&-}rYd=r zR|t2ZY8eGQI2`-Fd2P~DH1|kG4~#nixZCj|wWVA>OiyIeciM;`m~@F*R!=o31(^br*KA?tX^-F7{h&T8AWNnC z)f%$21ZI#-3XqVEC>E@qENo=z-09+Mk^O6uc5IdhslPlUAxa?+l>VvL|u z8XD#0Diu)I?e&Lmz^RRfM@}4F!fpj$Ra&D=fkE#uex+uWcBtLytOCZzVeCp4EIG&7 z1;)85WaVQ6;vBQ?O``-V{cpl;3l!E?bv8E1pf z*4-Cr;l6Of{#z-GK3{%o%^0`MZ@uHF}IQSMGprgcE&ew-Cphi;0hR`(ZS zXjyl6HW@|_ESk`<()^;l5zWoOmjChlmeTlaWRAGD=+4|^vEsmq&)?eRyTO;3nAaQVVFDfhL%CP|I)%{xfOuOruQNZ}KD?m$g{&_zMl)R6hSBpM$^)r{ zGSEAdwFY|ZtniZbSfz5I0#f(|s1rqAK!&cbO5;H%=|`e!>=D^;e5-DVZE6{8JDot5 zPP^(jzI+x|l4x$vDlpzojUBG3M8tRSD!AD?_?VtUK6@#Y|5@jUA=J!g<4Ka%)D3W4 zaxQe)eR;!hjBF(Ohl1o#rhOO%xfxh6Mpr@)NI*7@9ju()M@uy-dfJ{1!r-ie8XkRq zc3lN8jY`9c1^%QfgUb5(CJkLjFJGrmh;TNp)7GIzI0W>YRqMqn~7A3Kc3Xb6IsnPY)5Q z+NbAt(vD3^bM&3eHH$+PR@*C?l0)$&x8;|jcMH9z!9w1}p@J<{Vy#?+Yo*mKZ68Zi zOQ*bV5>6jt3`;2S68F-H0({j*N-#zP*pjnPn%$yBe-#-H5t(IuVzx~pt=_g#8m`h& zHn`MeHJo>=R$RHX=3vC}?PK(EiZJZe%liLmw7ew z9}2#c6s5xQ4=FCqY2`OF9Kk+fVaFT#SqnQ3{y)z``V!0W5K=r+9@f^Z&d3OR+R@BC z!>-!0eCND--r(&w23n6U#NDhVU_N-8L>EGvKayuTGkY!&q zNl|s@s~RtY=O}bfjBOTgE_KD80$3M)gi`Y6;DQ}4CU3gC7A>GBVk`P}KYrziiiA5l zoYydmN>Sge+r}7{Av1)H@Z)Pk95g})syE^(YU5tBWfhh z1QzZdYqg&?(|FH!XUd5POA-C77~7#x-2N$@J=T1 zxAtN;sT!ToKa`X*9?@p#UaT+ErD{tHk02)KgtND3R?u@E){-k`~{iv`-7Cb(UPvIz*x+y`H8^t|47Z4le2s+UkiDJYZ(N8!{YizpWTUjBdkS^RX z#0UJokY?3#(K)^rYgLA*6;bLp9n0oVrBfrSkkE!CcX4rXQ7&geQbxYKx(y|DO6^#F zeP-tSm8%bDDGVSh_UdE7J)o)g;ygr%tV~(CQ^|QAqE!)`$Ire055+cFm94?vrn$Gw zVw7OkDxeKLzMP37gkeu*uF$f+KSWNCew;;Fpi%Ee2-Zwiv0{fzOb8>ph#I49hDB17 zQU^_q0xWcY!4xmMc>NiFIL~vEZds67CBT72Y!0)SQ-{6bTIUuwB3SmrrNrMU= zZj%Or_i%oRoB4!V`3Jz!RqHs zEHAY2{A*C-hK+mqwCDT=T&V&gOUrd8`Hjl|*z#p4p3dM+gQH+pHoJQAs-jNHhRWMs zqNpT#bPlD^Day3yabbN^(7|1;(6Huam5Qstv@7KqlWby7UD}0w{$RVo3*2KIyiR)D zlc}-k*u-7{DBT0vF==T=``f`Kp{{YhPqThlC@>mHVZ0V$OgZ@#LrBXnGHxI{oTDyP zG`*4_{-a{R0+sLUnQ{kWEL-X?G&S?5$!GeFP{X{%El@ zN0y7Qh;!aS2Iqoa+F_UUeHxlL5w%W^yJ_G9Wq18sde^>(tP0oL85 zy5&d$<6$S|elkNp9&xGCSc2yUI3DnJ55V0|mcD&w8VXge6xo>AysBYrQ}y-y-QD}6 zq>h+>g8?R7nN$HbCC49kKanFY@ng+8Or02L?-=dYeL{+G{Fp`MH4W8CPB`lt>lf-( zpa%i&rbDjpm$y7pmyzja`=EF)UMGLW3N_V6Bq|g}8BfWI>OsYcU@>G9SolRNLa z17o9N-_<(uFKeW0MQ=(sW^qa167e-5*((q@jQWR?x7oyB>ER6>W0a6Sr~&Vk^RW%L zLf4|Cg(B&Wh{Xz@Bmu(8QNLV9(us+k?J)y5V#+aFH#T`W5OXNlG$NqGV`&Upg< z3HLO}e1}G0-4fWW|LhitCa(naUZrkxiPY5At-`?lRuX=Lx}gaB zLsmh|$EMgm$mn1Hh4Ma}2XCUl&B=Bl+Sc}Ta)~t+DoK##lYeoBG zjY>Ao4es9^4Vo%O37SozE6)u5uN9dyc58^UQCOD#^YOt>1$d0|GZOgwk3iykY3ihV zT}H^K>55;Wfb+FZePC4({9b^hMm=QUC|()QL*eZgau-W&MvCGpGaJ#t^myz)Rm7D+ zauZ>OI}GvUetbi3V>#E*W9~RUI4<{M?Dw_Dl#4qlIge~An7dAmCYj_?><4f4-0}G_ zwWY<7%pVLzk+mhDn}g#ic`fglH8=x3wN?c%i)<^P-z~oART{apnwNjty}HT{ZhH*g zYvtMh9XgSdQ;_ALz=2tfE0B;#3V>t__fEYGWCJ;)HA3k88h1>GUI$QQ2E~?N*!?~+5@A<5|!P`no!y(nP zEbQ7gl5`3>Ge9vTHnV!|^HC~9FV5Ry(X!to8(Y`;pG94H%X{6;zot{BzbgmhvdlX~ zI<&01@H(q`n~yrAtHg}%FiKBbsF3a?Y7RpA`Odlfb6xt=Gkt!_>ei6&9`~#k zX^hp@6K4!nI7vzrzprD2u-}tN6eamOC_{>uKF$vtRL>)^A5eUYhj4-7i-9baE+1fE z0LV&Mz)8&dx5^z+LJGT(>HT)~r-gj}eMqiL?bjsptZqhQN@}}mOT~M9grvZX;u@in zB-3zBZLIQvPWmx@fh0eS)R+`MicJOTeS>|>Zew4~g+oWjq^PNk%SL(7sC-=ihi;9& zIp@U3N&rN+&pJF!zhp_db*-00BPoIB#amiy+hl^>M;Q-@D+j+vQlycX^Z$(=iStnM z`I;BK%$P%*PJy5@kSj`E|aXm;pN7{3qg_jw0(b8EmBxvA~odK89odU>E? z<$q7s%0RGg`Y~uuvD#Tu6h2!W(n@kx$KVA0tHQcACy5KGK?lF@*s<0%t>5QUeN z{~O`|d7C}5CUfQPa~r1}A*@&E|ME#+C=Gw@@M?bsIKP>_aplB9CG+`T_M zfQFexK`k6JcqQ%0AVrj#D!l9iKBoqoa#=tZ$UaUz#IDxK07O?74zqa!6J353i`5;Ns zkO{}Z`qYu?e8fWPX|KuM-HzPRk=ndt*!Q<;b5Qs=B&R*V?}mn+jH^JdopCOxU~xyFVA z9^{5Lh4Sf>;5*T+0=|>Nkb&0Zzw(V4S8|-TT~rS?_G(E<0=v=ix6I58OgA2;I6tc{ zRCQSQZzz8R#!?|KpdwM8O?(a;y?ph^s6}C@aMF5Ug=VcG#kC6|lhzF%WWiW8Z!rb` zu{iZf66-I0z8Udamig4BQq;oY2S0ZGiF=a+>o=AB1uJegziiIzh&B?` z{h3qveWx{8Q3daH$@pJ`cu;>#=2Gf3t>J zwsT>#q~cLEZ4Adh8!-KDIPi$)OxyutdGl>lGQ^*`F)LPh{Cw|^Z|lWB6iXn}n@We@ zOA59NYzi@_a7vaMf*2DH#sYNs&0+K3E;}8QJl6iCsqrHZLhk}l^(arcJwH4|%<{qQ zEb+MYD(rXeshQ^Rl_VxlB&^(jv8m_uG1nxAt3|tGwm>|s{5eS2Ojz3U%yDtgIuP4& zWXJO&q%wZjU4P<3&T-l#X9x^G@LnOrptddyMrm-+?QNZ%rvi%5zEC{=wVx76O`b`7 zM=tsi`@_IuJ^xTuH&NOjWBaPbLdojE&%f-NGH*jBkb_v5_?uVa2l~Yna+=zkd-V4o z%AKYGl|pSIQ4!_U;Psl;d@@xYa^jkf+fD(;e^p?0y5(J$rP9`Hf2&dsg(&-Zs>>Sl zi|0%_ccxSHOO0DmFy|s{;?II-$=7wK^&WgdA{~}1VP;s_y>3jrTj}g)8^qJe!5K@k zR6j9EyLE{o)`AJv>NpOZOB)5DhK|Pj_2}q^4u%#S2gLngzutG7fYrDHLpsdRs44 zZ3m8$EKX(?q_qV}rgd5~0z2ndVfMkP#rOHt6qcq?pe@^QR9^71Ah+XwNQ?liVn;uP z*koOot=<3=+=<+CL-se3EH#D_bLWap{4YyTGk~A|<*yGnU*`9`deuFjO$Sfgje)=`^V|HS6u@z>eQ*WsnF~3x zy+VIFFEM-EX+x^pz%k)4i2orm9Vds8L;~o#&pdv8bnTY;=1W?T`|^V)lU6$f00`jy ztK6rq!#^lL#~^zHd9*eJq-LkK+&2BRmOfU4->hF*QD&z$S5#foEX z!L6;N?it3Qln1}!$wFvVYX;Fh5VW5_#dm)YaU!d|k^d{q;WR2L1pwrzyKK#2XAIZu zXRJw5vwzr>-q%cTYDo9xNY8?Ci4X4wFTfy?l2oCo?IlMU<>NFf*Bsey0KgU0R#BVv zt$4I~xAUNi%&U;BFl+A_#VW#CWw*M48bDd{ui(WN-*{97Hw>3pys={{K_ME&NaZEq z!S}GVpjmkrBeDQti;L%BsTg{|sa$1cCUY*yl=&j{*6v=!xV;@FnRCqK!?bfxXpLyj841U};$t1xVqn=gPpETH4SEv;qm6nDt;5hN= zK=;=I5^mLh6iGrALZrtJkUFU}C+qf{Ge8hmT3a~QU54*%x-{DAFk`?g?y>z3gMJeK+Su$@X*Vv5Vo4B$Ka$lY+0TR@;Yj-aG;x zqIzLm!CMglHkljED?|!{#iLYwY~}vzs;lXhSq2&kstw=|Dxw<13HyjRgxcBn`IJYd z9l5w&_iiR;H{W2-@)Y9E5@wfLSHW4%W-BYJApTDBs~=4bcCBghvo$L&5{}Rd_d<|@ z=(B33K<$~_Y8&!$i>gpl(~ss$UrCl|!&dkd<7ac#!2z_GF^YHzZ3&!~IU{AjsD#yo zjbHL)ZRH|>(;+FF^)ga9y7zEATvBMlehwIp1g4=Lg7*UcV4EBdKAaoA-J#tk2D=zD z%o=%Gk6pFq@s*hg$`I9$EHQ));IeWp37i|=)(mo0yV|v-^+1Oq{{SPk!=?c3=~DObIBN^b_8H}Waj9&;f3{}) zn98RvNZIj_@kfE~7_CAA`y=J`yO(z&f~cg$9iCz;9^GvD zJbUMW(BWo^z|gtixNm2I&+~?-8)sb4B?q^xBSRpp66Co+W~S@_lox2Im@ocIO#hdc zB2BiDnJE!5$tzwy8Afz|Sr{o0L(2m4zqAzfzqIsuv|9&_*x@E*H%!M&*%t z_ihG`=RoFd&h0!Mk}`8VFi7snEcN;05K^(YM|O8^$o)p?0G(hMyh=)UVWE=Eo-MPf zV>(w<_pATi;8>I}{_bp`NjZ|sa`X}IQG#Ln>u$ssFz?u56e1EPJckbAjw*i9FuNxZ zyy+*vlJ&mprb-qrfaKIKTh*y=QLFr+f=s$HIbd&Lk~^seuV!9kn*^^GlpgcEpzfpo z@Fsq(>KBbBLu(npRyW1@nZ!*^PR~yWrF+d5G_>eS z)T1Ie#uYs}gG0+`d?r=RUHb)RNK00wU*BjP4|~P^B4z^^pAvTwZ5Prwhd>T&nnSd4 z7ojq#;T?tXExMj`5my{ku<#%+NJ@2E0j+JRoBQ*QXbl6YEFfAbB7%q3UgWJ}d-+}E zPq*-}`-}-uBYHFIMSqERaB}YKycS7W3+M@uvm!D~_eg7a85wBT(# zHBf$S3cISPKi}?@70(i}fFuw7uIxUx;uu|)WEG_Yec;xT5=P-RbeQ1!ZSjE=yzClF z2KHLxi|fypEHf{oCpv_w1MJi7kI>hO0m6gW9*fCDk?tLTFk?$_3K;1FxpssHM@bk6C)*^B5v^>{;ll zUpVFO=t_a?o3}HG=;xe*S(}358(rS*i3J7~@nhNKh_Sk(0^Ny^%E$OP*>nkAuNny; z>4sn!9#`#)z{X2SB9f=No{gp~hp!!QMCY+cGNH5*FA((`yM^K#qf%yEXc_d?S5o_E z3hY#J8pawOoesHzIq;>$820+_T2o<#cT%oM><@;06Z0PCpi^F@h5jn0w%cD1<42!o zhgiY+T)=`LUCergd-Y)>7spWZHlXP`aott0c>oeGBcmrex2DU`I=C{GIXTt$eUp0! ze0&c-&rik^KeqB%!z2 zydJ{VhI6VC=OMPzGC*leTsj+L*D$$?PPX;dzD-Q`bY zCz9Y=36=*-!qaHX=$til9$e)1RX>J)@`^J((VrsaK010&qh0cAaATRD|JD6sM9Ap+ z0v#IzS^8uAzg>LD=*oyj^ooxd$jdJys|7g12YRMol{Zmn+7y%Y<0Cm6ltcYm9< z5qSPw7wxOPrDj^}5}ZS08%4!ouH);a!bIOc;#6YLR-hnS@7NV(8X`6giQCC{OYua_ zU~csVM|$cj8$~Nyd4`RPwEFkP2YyC8iKf2x=cc3w+H?t?HtJ?}J^9Vw zajDo>jX&MPj>9yOM{Kf4UE4l3>6YD#Ji-y7Vd#az?0UNQ7NjL5*vzMaQFlwe{2xkJ zxi4_)kyaz!C~c;-SY`1@OoLav7J=Zt5!6MX9q3Qgj&Epf<J#!@j{ zr^gzU)Fo5VD)(Np z%sZQqPLy9y=LJqggM9tALED^$>U^5vMd&)|AaHxhW>R~C%^B`T_dW9^DMwSJ%)UXK z-BmHoe=`C3!d6I?7swFp|cZmq3TDEZ~z#)U*hF3_xl zo-*DgX>##9sgw6r=O}^Ya*3&ocwF>i&|C}x^jD#z8(2(Gm;?F}-T>onfVdQDCD(yM zJc`u?``X8$-@)`&tjZ0AC;Q6tOzEtVTDipth=!Ss@%&s-K8BdQi~} z$*Nf2V|p~16L0(k*h+X}R&A0R;{ghF0%_lU{VPNx)^t$2*i-LMUC4PWf$xe4MKK=7 z$BnI{lvLsQQMp5I{>#prOI%i)6lpm-Y{fBaki-9D0X)m0F&CRFKkJ@dI)h2^?v<@D znP(|`mY&D*fv=PJ)e7P;B8%>|c|C}tJZH;#u$)hNE>}SHi@NWyjLF^tN5s^3NnX7^ zTa`t}Q{K7L?|wG@hL0DnXxP55_r0{a=bqU;jDj{Q1;`A)b*AJ<&gXr~W+!#`#ypNr z*F$)dsWOk&=3!^r>MO=^KZ&R&%pxjW%coNj+apkV#TU4Ix?pK+%-=>D(+v5ujq6Vz zvp+LB9LyRX*7mbmBPAhP*aYhlRUhbS!p}zp={X6>oN?|A`yGWvrbpUw)Hqg=?UO~|FfB1A z&NhSl&bzw$bVtvzC0o4r=i7m7PB_W>=}jS47uuwaXMLI*x5qmG`~pqa&4>lr3wJj~ zyIwJZcwXS*>_hnfn2UG#z4ENvhXwDPV~HCkv`49Fhmz+6^@VCSk4>MpBjZ?Wh`4m~ z1G&>v1L0G4FiF^FgFeDvMw@_tC>RF)YhlsGcpew+E{ae3zyG1YLkz+!%*-Bn{&4DE z3Y)FBy1WV119(h;q863N`sb(i7FAq%oEe+Yv+sttUs2ES-CLSIwiqS(3!wag?Q)vV z1?j05^nKo>=~u6b8`uAo|BJ@)j}h$?kvY2JYuJuU%gXYVY%y@^^J=A`k?3C*!=rm) zs{ArL+hsJG&mGBPHq#9!t3AO@6h;n&Zz~jCKkTiSMQz7K-^DQ7i~NeHa%(?FbljO; zKYV9!Aa!&RESVfS;xhG%Y!y~)785qLvXO6i%qfaS zqWip9C?u#MSvOx}EsScvh+>heH|+Cy>HQxX8mYMg^4LX8#2`#D{!){ZE;rYDgZx6s z9rvx{{8eh>m5iM>g)4HuQR1UB;hpE3Yfy^Zp-zhoabuLwDh7jrjotk1sP&jBcC$ zHXiPT(iPS_{$=lJ{D1@bXLeQ7Zl)QqRxWPVDr`SX>xf>|96 z%biHutnmDk?EJK>%<4}GblY`O?>8!9yjwN~C0)}PVXmVSb!sA4*!X$?8J)YCYuEXzGQR z?61(MkNp;5F3i-jk+X8en%X7Hg6g*&my0{=A+Gn!y0s4Fd5R5+r?|72>%I#Pe$7~8 z@#m$>Vlc0=3OLjo;(9+!si{Yhy3DmUSsBAcBaE4Nlh2IGKJ0Q}_bqrgo3%+?k>l#; z*R#_f)+zp`TPlqG3M)gmrw+bX`D9r2;%m1-Se~RWqo0-dpO-#YaI5%JZR78)k=HWo zCvuX?)r;2_g)hJUvDadENnCwsBz;=6$MxIcivR97 zqkW$2?H?R+_5x+Nyizdu^v4ZDf<*E{W>imh!>C%%Lq{;s#~rCSMRzGahYs%a6e_Nv z8M8zL64AE{-%*v*>teBEaPhV#Z71%#`AA-cAK$y9x!L^;NlkhIA4LlyloIE}@AzwK zyKMo}jjkn1TCm7c`V}H(eZ%e!a={%yYeN5cX@OLU1sgH#Bzt5Vo7$a8OG&r z2W=h^HAyHx{y`kth|EXd^)c0>6Hu8hTkvhr7f6lx+^=D2yy1LA!)i!yDS981cskt6 zwmR?XR<)DDn?n8YmSPNTiS|0*n{98ppL@+n`qSs{DevvGo%Xm4QO>s!eqZq4R-9+X zbXQ^FZa`JO|M^C{(A}<`V(;xhE6Y|f?`)#*yDsR2=0u0k)1CL>?AZH)yJL4&yq@~t zRrDtLr}~U)*F~br>MunLCnPLdKfls_&b}>;4`)lRY>P!x{6Krh?mRV?0>0}TXh<(B${6&2%$5mSf@9kBynHoD^M~e&UD>OQiJ*#3GfmIFEzesmu zdSmjJ2OF3zG88K%!LsT%5--66kAj1b0omnXGCHYoBYjmNUG6y>F06albWKM^3YzAM zLOA_T!#?f#M=n1Kc3zj3Zt#(I?1yi%Edu%fP)^8Q@4C24b|N3hVdYGvLodl?_FrtX z+KF!c^62Y9^ayo+glGKLu?4>^ zvyf3glsq-BRP&^~BK-3NF#g+88Dh)){I`1&VM{SAxWU*jyz=Es&R-@TEy>*n)+Q=}>w4j6hk6Tb3dlPf8OM)5yd7paA_**}u%{1BF0#La$^j*VR-lM-H< zAQ3}ju6h!e8b3Y?dWBqZoX=SPsB;rpws-OG2=$I7ame=*EHD_y0545{3eICGzW(}K ziM#52b_(2d>LOBuN3-nB8nhiAB?zW%*7kr*Vnxlors=s&wmm!%#a>l^E_C%gDk2IG zcrG4BT5JHA;#hRllgsQeopgu&og9+(`-NS(xg<9uTjZJoy7)f-Dop??;+%7*MRv!p zMy@-vkg{)X>4;(_MjjYZ|1I5#eD2tD$q^k0xgd$^Q~;yuu64Xg8T#;-=UbYjml3%A zuC#PN(W%^V6UEywyEy&*yTsTSk6UcbST8%^cG)J~!0%ZN_!TXeWbO?;+tA$1cLMcQ z)da~-_Ol9Q2N68Ys=ax09%h(`lP#|ih3#q-D_?k?nzxZ(ycmA+`Xu@MTO0H6w(lv}WphpkSk2R%y@a+}w%=Dj=ra|FO z9KI?qO4^(~4$j1-H{mqQ^6LL3S1!gju(NqQ#7#-NWtwkPMn+@kHQZd5U5{ckwG%w_ z{Q;b3JbT&@_I{_~A4)faQwk33oe57t!I}R*6io;3j&BK0ij2{F-`yc8f~PXSn(@Cm zO6R=zswtn_f$^E0dNEH=LZiS_dXLhlie}B)Bd89y-2iLo1>Hx?t_u$_Qg4dnq|zU! zl39PgIU%{9rpAj_0bO2%bf}o0CbNP=5NR0BKNK5P5iUESF9!~K=Qk?`;uX!+V&Ja# zvNvD1$ZR)Q4Hy2ty8TPbJX`#|5W~I0x%9l=YW@yy?}f(*x=BFZwqu!fvmu*lLIV@{ zv+jO5{z~nkH@F8TV<|{n?^vUf5Zuor%GALH`oqQd_r{iU6Br^>o(j3A5zQYn9zXr?utt7`pgFS}tHP z;>eod$#{kfkk?y?A|f_(1)1AAx@yw0c|ZOlGm=>Vx5~CkR@ac8I!@uT!@0pHAkL^= zr9S%Art?Zq*bvCWkD1ZBVYcMgqE*q{TWYU&W6(68ZBJfQKvV+`a95 z$kg?1+}?_bcy%*t>AmP`GEVu+wU}Q?MnL3h!&V;CuV4Vv-`*L;^205&)prsqngQ2C z!ZWI_cH6PFe1dAl#V-C<+2Fl-%6TI(n?7AHQ>X2@k5R*(w-JO*~_p*_8r)rEdvt)(%1opc+d;mAL6X zuE-s5WJH{OFm}$_Hcs?#Z5r$#-`2HXE76m@kkjx}GI~qHYyjEFM&Zn9U*>WYk_&V& z>JLOh)@y;+zW-3hvH$cg1g0e8x|PoXRcavO{6^;WJ=aQWI> zl@Qxl*oxEN*lX!CLxH-dSLsR)NY>RQ%=Zi2yRzt~doHvkB!dm_!b*^pT_+n^Cq6dw zePq9<`0Is)$=AtPp_w0G>|w~arFoTzMn`-BWOiG9D6cB0=2 zb|L%sOU})ZA^RVS>}#RxpAVTs&+Q8&Kb>{+u0Si|#1hgc(+h|LdWDy-7#FD_`Lq@h z#LAH8ol9vAw8sLk>u6rqy57BnFO2ITqLLT#@U~z3?QBOl8p&y$_T4<^GBa<_9+T_e zMKPDFbl|;OKY()SC^^NnH!6pTS=}sb{Y%+DluM5% zq+2E7s&WkJJr>1nvSH0QNg8L>Eh&ZOY|qkiPTUCbwH#u9e0lYR?Kt^^@L!6w*Hwmi z4r_VKx1$#^yShXaixB>dQyUVunc7?)h+>Q~Q-(5AW&0t}{HyMk`PdRIVsi;b8h`TDOn2|f0oOrC$ zFEBlF#WT=0ppub>;GlO;_BKC0zVu!z^`9i8 zD}UyS+ZB^dF?k=Zdn@s9Y3G1QF9T@zD^8YJ3ah`qH>46UrOJc8ToLJu@=xrrlX70ch-_HhY%Lo>p(GxYhWuWSgV@DB(- zxz-lO9|CKujx?}_G3T{dN!1QADJ|1Y=_W#FrST;QxOvWg?YCAA2C(qvgf9lp&SZ7^jU^RI9&##^FcmXpC}1m${*k6P)UTgRc>tUmRR?1bMvNXV=e$bWNV+9C zWOf=EQu@s%O8d!LXfBS&8c1WzOqoKRp6){dML+CIfmEJ45$WW}!kkH1Z&4F87%d>a z{8n)JnjbMn-_TNXbBF(&Rpq2-{f%|JwgIsfTCe9+Jq>pTg?3mzP;0Ug2FY1{X(4$X z_SH>mInwo`TsMy#>8RkkBaH8C=74YEF^5ajjS&-*U2!;y<=1jljylOihO)#cQwH;1 zOzt`#o6ERW+9ovaI5}>fGKMHh)LOo@Y!OtK;a>qCM;HD*kPZ;k$;$(8mry1{iAX35 zB0qIeQ{zzKV_y$t+E;(`u2hXGjs`Nq+Q@!iVeo%d%TV5qdU_Ef(r;~92r;4}2ryzX z6lQg#Y}?Lo=TyVbCt>~CPg3rJlL`NN)`~3)W?3gHOc|=o{RU!TotZ{(hU<`s5oN{y zaK?!%iCZ4)T!TLrX98UZFor^gvdC)EfsMV(k85C~m+GuFVI%)g5arsV8Gj>Tf2NhT z8RjL%}d(D883%z*1Q^w|z9+c2rYR8X*&mYd5HOgdWqHod9!4+O- z9c--@h;1K}DiJ4xZbZy4&WC@HGqY`qWke#ls@u#>G#JT3nYHYS9knaWXo)q8b2S|S zy>?YdN0rq{H%SS%Q|3&WNK~goPRDdW1z5rRfe!;IoqlkFFQ_$azb}Zf%@^BAa1MCx z6~eRa&pJGH(u}3E{x&7<9_|GQj#I`QXvB$Emf9}t6n&DaV=Adja_rzwDq{+TCaOjM zz%Je355aO$Yn*c{r(A!F@Wy6#I~mw1z2~!XT5w7~e7&otoRY3G)J{hH<$xejTa_{5 zBBtO{0Mjur+-xEghZ?t#yC}&z7ZnCHw*>kZGmtDdvqA!?Cp^?MV#MSu1Nk*6?5&jc zca~#gh>6{ySDG22$Xf&+V}m=r?ui{-R$hab_kk=<6*%mfW%!MvIP;joEJ_)>{G#(r zIi`c(NI=3CWHJL%3hOvaFOzL!!lMSQR4~6`9V8GJI2b9T1AtX>jLUHYWCLh~Xlv?P zm9ne0Y;oC4-A)ho%GOZ@Qt2d5kp>aR1P4v`lv|jT`mfB8&M(|FM@499#iBT_CU7SB z5NhT0UFuK1i+Ae02EYYuV+5^6J$-0wEB^9TwJ$EG1s}bvuM&=#OtdPGrHMTMu(+21 zt+JiEG>~s1&)XcSW;c)(kCcS~4VrP9ccThDWGdj0nD|-V*VeIC-T`zV`QA6_Y5ksz z;c$^}yULUUbg#1PHH1w-zazp*@ty6I!s4UE8^6W8`t+P)jFX&vFI5^0gEQ%JUd5#t z2g~D|h0_mbF=p(jk$yecROsSub}LgMDkx0QdS8Rd0=|-4#f@tqitZza>@)TuO`J+T z$dfTz6+Wg=>&8HWi*_-Kie(M0ev`z%hFNF$bWt&5YwN>afT1{5P*=NWywAySJ1L$JcBw^{`n+U-#An5|U zd8?3OQxeh1WO2d&m{h(g-`!D`(aI~7JVtIEA!@Ib%XE>9cU+c?i(!gY2EG~mI-mn; zPa!1^-yE}7d{0VaX&1vR0Zee$l7Qi$S1D=qvv6ala^QOjQA^~6nR7RWPDWhdZ@xLu zkwEirWBO#%7B51OE*;r2axH;l!i@?4?q9$f1ynfA@V9!NW>}^iuYUja(g6^~0N;ha zdQ5}w_Zz<7TbRSsVdh62yAJ2LK(@$J4~%@-HQ^AZdZBOmQT8RPoGzupRMgMq2nDDy zr+S*e$cX!T+4f9JVW!Z~(2-k&(T)hZ`*&p!Is4Ogc4_O)%;l0uGxBH!i!GP0O96l)v0d$r%oTK=iW>cW(`SkYIV{J z84N;GoK;qK<-?mtKd6A=qg~=GD`xM$YubvQHnZBu1u?}!1P2lhpYUJWLwy@lR0gZL zI1zd3`I$gb2$i`8PII_6`gg2U5ZgZ3S(`yndRm-1*f<>7%nD+_ihzuK;=(p!{yZzK zMGA81mm-hZms32I|Ap-cxYBUR@RoWN!9W@-_z*#0#tP@pyP~sx4OrT{f{AG51)Ta8 zDE84U%wX+K$q;a9Gvv#0>VQ zb($|PezRL|f3OaFdl?wssRqNlV_9cZ+A*XOKx-cuTT@F{PiESPE03CRE{~s8@@2<^ zD|^s>vtEjD`S}a2u7*!c;wjEGQ`ly54QUWXmM)f_VR5BtNx}i~7V(|Li^@&HHxtgr90J5Xt^1nt zsYDhvJ8`+Ngdn0T(|5(}1ed9$!z#&;0YaKHjd8&QjX#lA9$J_u&D$Zg{qQ6F^=tVk zD-#?QOPTanCrml$Oi=9i5v^14Ygn!r_lz=LyoaBR%)R-*0LFMZzORcW_D~OQR(MPj zlE+OXM76@dC?P|VB0IS^Ta-zGlrB5{5cRe=d+Suk1Wfmw=@xiz-t1?5+t7aYpJA9+ z;@dgu*ev3Phm_f}%mQQcB&IcNGH{Z&zydg193PJ*0+`aTo~Ink&B~N9$}*~)S;;Er zziZvkV3|h}jh;xZjx)Q@{hWlCoJV=pQN{UpWD9fXj_1cFUTIS-i6R8fQa$oP*8qNz zxoeFU#PJdf)98`Jy{~e>?(Ge5bSmB<3|2vHqk2EI|toYyXGB z`keTfH2DSivi&>`{yXsw^ep#CeAyFL7L{#pC0+B}|4bT|d3(fS69!TXLLdCtP7?OM z+G(3BTZ%LQE-hzh2_xuRqPnAYRgH;PdLYbvz(8kq5mK?Hh!S&!F0VjEW_NtWw$&vv z6PdqeE!pD1#b`2w)ud;$D6y5I1n+6i)tI-)`P@CkC`&L~XLs4+Njz*x#%f6ghDks; zBj0E}yEF46!o04PLBVVs2JilWWMIH?s%9NLRIjD`IFAJMv$#~Wow+uf0=0O@Ad)o| z=GN2*rdn@ctf?x$U|Yi5gD4jq9BB*9ALO!fM=YK$uSVI8GMc8a<$0AquB~10Kmdnv zJ5j~Bz~x=}RL)wugdL?kkA5z-cp%Y0RMx93=6DIBf#}5rAiaE@gs}AzE$%WRh*yF| zM$Xb!&f0^;GR~6n{l-g{E%cuW)V!1zU>lq_H0b8KwaH^WKtDN%z&zP3`WaCnU|Wfs z`&F1!<+y+VI$vQYydg(mTd-_G)%t|;BYHye1`jZ=Kv_cNs5_Edp}%irJko^N+EGej z&(P{45-}*obdTv!K=tL&y?gtKbyHPhr0gP=d@#dSen1yqsnLV;6yL#OU%I?O-^mg) zN)z5muIvSd|4wrDL|5v9ey|->r(r$VAowcrX02^GozdEA5XLD18CB9yuO<2xwj&!6 zo3?`cwVFhJ>^`w9Em~H0R?c>wbo^7sqBC><%UBBz^bDbiZ37~}wMu$#R+_faeHjtm zz>#KV&PoUo=Mv`oLW)ce?!?_A<^cL3A`=QsxX%B>(YePn`M-a>5F5r04s*8I<}{}{ z=4=}_XHroVHgXP0M29hB7&hl)hKf=-C6(lSPIIV;GEu2ilB80fpYQLV`>*@HACLDR z_x--E*ZXxnU#*((&QNyl0Iuosd?x+2YDlL=fu^ckws`d5+SCC!jQCAasaxSsF^qCw z4zEyqHD(@Ji+7cL$pNWl0g>nL*T5& zOuDk>Upu7k^-SZ)t61Xoxy`{+Kg$A6I7k$@3nJb}ox-@)^usa;IJ7pJPx^%!SnR-# z_yrRDSwH%fu~%Ah1J#24Ozxm~6dCsfd%Z%P@5mDoaypSqhqSiT=&a}d%>K?d`aeXf zY6+2Ut`Y&H6gd&L*vD!p6WT*Q#+vuq^@27?m>61H4s{APdoM-?5yY?mlo6tPV2Vb$ z-#_}wAPT8@6}ZDj-8rBZP)V<;9~#M@4N#{bRL<;0i&EYAwK@eDkv{4s3>6u{ZRr-~ zr^R7&PS&jk3Ti2zj6FawwO%=5`#VRy6-`)B+Z1;3V53n^#zI$DJ1$5c)G<6s++aB8 z_IV7Z?eCO71U=OfFe&UZl(JFd*&4&z_{KemfiuCcKmb?EyqIKIw`wjWv!Je$w{J~9J99(VL0!cqt{~Lo1S#^2gAVgg z|JVRzuH?5=ZF#g%MXbv}QJ+1BHczFa&E-QIZVT~q53mvT>tO(`H=VxV0ix^)rNPXc3b8Ub;afd z`18;Zbw8)$@~TTpLaT%pbHv&UwwGc*A+DOy8m;OHCVFSm=N33F`O!q%7f=JNtFmCN zO$-GduA4#r02IaCw95Q;I5J`}?xC`1BmA;uV?i%;WtG514-F3eD+Hc*$Um{xF>m5^ zq~N})tL*9#+=+~H_GuH*3zT*FSOKR1Gzul7`V5R&9hEXj1pCG!jrb1u-`G>53=R0u z&Sd_MpIobk(@4;pL<>K;7QL$|bpJ@vQz)yqh3Z(MKG1o1DAXx3dfofAeJX&fcu1aW zD5!rB>IX6A4%F4$H9#g}O6*Z!We7u)BG@l$IKgr7q>nrw+&Ae>?K5q;WtH1aLN|fG z_nsBBxx6}eD?uv>LmZ=wJ{98T^T``@EZi^h8ZMFJiM+cdUUSc|Z{oLvK?e7t9l5^U zU!l*x^^)3YM;fbf>^wLg&Mu~*A##A!ukv!H+wXGUuDR@_p` z3!M!aa;J=t6OG)5t`9ykE;qKVP*qf|8nIiSVtt{j91cG+ny}-8S#!p@+P2zn`w)7A z2>yVf2Qm&+cY7DZ8%TW_hckrCTpiLF4r5qg+m4Po+7~1mb4*$;W}Fo_WxY(?4_yjw%I@FYP~n4dfG??^|TLYyP{8NX97=Hn;>dOsRA9z2!dsVJ?r8d_UasGA%~s}_DdW#dF;a?~Se zQu6#=5rRss@RKB*R!ORP1i+aS=9X?>CYlA_(hGKH%g_V$(m{99f=9pRY&7Pa_Oq0< zNIaeh?`PCr?`uc}<&8;<`R1oNt33#8^(bT-K)jWHDV#$69n{U8h{rTltMMbHHW5Y} zcQjgJE~j4I*a-0DhcKa>{ipyBUk)G_wt+E61<9Kn5AQ5c3wqOOx}=7!6~94&rXNE8b13#U6)az z$u-~M(_d0|+kCXyvC|`i{gH<^g%rq*mk94q;w_bl!yK@dN6n>Gtq_lc=Y!A#*^Vv2 zIl&Y|-k0atBSFU=<-FcFJ*rpuL?T>Hd)<=_r5>rzdK>f0-2U?LV_s>Fm8pG@L%p@f zL&RWN$v|u08RaJqzOQod$~RF<>yeXY8cYSfnT!>6b_(k!M1#bolGtn+9R&?E%o5}% z#IVmiq#j6i%}z(g(qbXNAia<41=RjfZ`Dqz4fPZ?cEH%&TD0fN{tX|jmt{_sm`t9c zLxzzSabv1I!{lOc=DYOWO!O*KULnr?B*#_!G?5zP8cOTg9P-fQSjh2yD>Xs4wLE{~ z`=Sax4BfEn5ubuo{md&O=shLocm*)<<&kJ$O-b9j)!aS&N1-M5GsAH|$){pSg^aYe zxWJ0cEvg&T$yYQ<)!QReD95)+-lZBxt zIIGH;K1`a{FAuV{JL+*Swv0V-$Xr?`31l=-z*eVg!)RV(k!0YacnVp3pdWcS*AmzQ zY>`B*ouqjh4(M8Lgtq`obLku2GGW)|cFa>Rla=%jQ9)wt4Hh#qaT!=hy_6(M0G=55 zRNd*61$CE)GfS1}jVd8Tswvf)&Z)JM6n|I=VA@mauQ{;i?$Vl0sdW}r+y+#@8Z+-r zZ=MpZ%yO~|E>mk$`|UB63%N@sYk7QwtzOog*6YCe1kil(hDF*7`lUP$l9~Mjk2#;$5 z{erdi-29?`3;36z{V7H6rBC~5^xT?)Yn-t}9vi6)NCZ*;{<63r zk*Nck(#)*yv}e26;a$RvjQvapI3^hoZHJsY;_YDb= z{@cf;zg1481cl^?rn_WG@*Y?Mj~QZyW_qQO!o~5<+(`Vk(I=+HHZGEwJ4|aE1tagH zHI^N2I0LVzeJ%A2*;4&#cXebj^CbSa@-O<8G75>>KqA;p8}yHAw9Y-ARqVGv$<6H6 z0VLB6?Msyd+_F=%MM|3F2Ub;>5ENH;LP-4Qm$J z0{d&f^N-xg1iuzyl}-U+G3KGP?85jmF>=RoeO!i9flhHA&~y(haGt-RxvZeg9X~Tn z%m2k5cok9P&Hi$$Vx&XTakEj8*Xz0elZ z&R1{*vv)pJk$RH7U+TO<=m^j24A-)-U*=gZ+X1#tCOexGP}_F3V9MhmEHTm*hc1V9hoz&eRC4s^ z>N6E3=U%a7VvwHpB1ngc)##zs_#G2h_7M|Ayl(m-$^e-naE1ul!8)}XxrmR9%=E++ zwTS~*Vzl;R&l0Orf6fMaj`x?1f9}dprKTtiY#vP|;}%C?VQrD-Wrnq|pcG1f7hub> z+;9kHcJh6QTCc!X(RX|nr}by`je6+U482}I3`25-0A!9G7gW=;_%?qvS}QYj8`iUT0^5MOll@y^iX(yy zAs)<;7jaWP@_YH1CKqCoOr*X`HU*_a{xbJ&eNG*=6qdnM6y#sCNb z3IxI)2fk&B9WX?2R0j}kW^&iafBw0c8GcqMVU>(=vgodWFhhCmHALLddFY?akYXG; zG$iYqBNcJ8SEu0+PP_HEeKm`$I8dIkQ}rdT0x^1zmwA~q znxJWNK)%xpX;(i2NmXNR*7wUTHiVXCX;LOb;J0?O@k$WJY7(?#b!-&f-%gzrx`%>X zB-YnT)s2MSU?0xBCv~4+Xh}}h}KW4Vio*14ljj_ggT6X=hH1gPFnoPF~HCtV}l>OO^TZG6LFX8LuT$nLeDZx z{;lSYW*8HUZoA_U^5|@LEk;x5Z6j99El!q6=w5zrkMV8G20E2jMFLe7c!B2{oGZm-k-^NKFR`1Hsx<_9D;~hRA&^3{VC-dV7}y!1-oK3uA)!-8>HJQk$SdAn2awW55ppcuH z;R~_!PmGHbOkWObgL6|zF9>!1nx_3ooALptf8-`wdr|^nt&~CB@NQW|dCI~~5KJs% zU>W1oJ;!73(^fDY>Lg}whVR_aJiTdEm|ZmXa!(m++rg}3v>B)ib{5-a8dxx96ww9R z1(~%E`{_Q3y(=&gL(`ITFe59jo}&d!=ERI@=6@S~wGo}?R)WsX<*nfsUbe~?t$w^K z7}?`>>VZr>s!B=JB`D%crWclUIT`vB1k3U|i@v)?3XN+VW{*haH?eNTh5oV3+a zPWRRU%(bBdtxefYV%+x0`vD0smnw;9eP_7OaIA~*ycRWD5ytB#J{1w#?5jOcYnjiX zUDeGI>7}fFO^aEJ9_nn`;Ly;|fJmdKHcm$^AG|Fd%e0E&;|$f}5JPiwUnzduCuZzx zUKw`H+tAbu_}Ku& z64on&PP%m^Fj+(GYtJhPzD#vmCd&7*8tLJ6%XW(uu~q7V7kHE;oT40P82){{Wv04jhEqF6O|W=PjvBan$Gr->phV@BQ7D zAusP|u6w4Kq#y3<74X+4lUX6dmmi>friZRvqDantAZxGV>v}MbOd$KWmiD>y@NT?>SuxdX|8wH2x^m^4Qs;E=WaV$kI+DB%)9nc7#-vB^29KEeFQ>w^ohg!=N6i3)} zz>k!3w9cuB5k}tSo;LQovD$c+&mxObnBBbiTy$7dp=6 zB;gNYwKy|Qs~c{o7N6flq4WxfD!BfE9dzui+8R@FpMnf*`P^q;o7+e-fHoA!0&RQT zR#s16?$jE{^gg||q_7MklI0`#_oN8$BhPLS{Ugz1afkn1@6h>| zOEZJcVb`ZO@N(m6y`sg|;*EINqG)^rBdq;uWCbfGzYC61pEv9WSNkC&@$ZqpTAFux z&GWRAf?*y<5T<%Sxu<-0bQ?ZqH&2u2G>AtT-lIWX+~gYQP8vj+N#8?zL@*il>TY(9 z9QS=*b3c9-j2U3f?1>dp<~ZdpC+%h!t2Xx>0NeRo@_YIP^8}JWiIAe;OY;3j;lKSxXkIN5c1-;;6gb?{ZGxBrt>nJV zy8ZQE%GJ4k)YV*mdPVtZu@{?K%K>LP${o7B=n>~C23V~j z*ZJWCQj>#^%G|WXk@o&jtkr=`E?>8>rxiIM(TGe+ITG;2Mp)pQ#`%fPDa($TIb3K) zP`M_5WVO^;?QdCL%`Ij>tIFByc!2L#ogj}}d(Kc`1L0+NCk^yVj<}*mE1_zpLQ;r0282sjj4Q6ZNRm#iyVPZ={o!fxIE7 zYdJB6(h>TEcf)zVU1Q0mt;WBlg$iPaJO2S!@K@!=l2NOdEKB9mA!@^E-toB7U8U>% zD^zBM{5#-$!COOup)gWZ0#&rBF*MMK46fBBKgp4LNP(%C|MD&KI1T*mVe?I*#&mTr zz^)bL&2%0u&u@XCq-?R@gU(|kUlz<21@LJHm3t$`m7Br{+|F^qv9!}6C+Hu2+wH4_ zYBINiOzeB5;`hucQBcd!`?av<>#KwaLTvDCaRD~lpvNpUEZ<5rm>KD%d@T)Qf0s{k zr&>rqOcFfU1)nP{RXr<(>UB_m0ghfvU%OxzU{%c;Z+h-H%^QnT|JJE!ZIHfme{2*in3c3D{f$I z?whD5D{u+1YI>nnV(-8U1NkH9^Tt9BB$?2<)m~$QYs~1|m)QnovX&@Yre13cKru`Q z+))X__Vx#(`%VAbCl9-sTs-K|lzAPs(#{NqB8PL7tmSu==W+5e=p85`1R$3vCS$5$ z2hWKuM@-Cp{?RvNHUWoe93k*#DyER=`=gdxbwTkdw$sr7&sO3!BeZA^wI)As(h687 zn53`S%)^WV-#EJAZxBG=DFP=y?I0$XJKlS-c3?kl)Zjv>xd1vICTH>h=f7CVN zti4-s_9U=~*n4@(W3i>7W%1>P2b01seZ~aa=08^@J|sgVPV((jkMxmrvPy*UK;NM_ zWGTU`*|Lk-uZ2-8O`QloL@0OWdqcy|BUyG!3NjZU7XhfAX?}{(OG@&X{3crby0azH zz6^&x)#|@an=zu|*J8fon!C7(f^v9cwU&T*TSD`cGZhH-meCe1 z0mU$?STgdSYG`bk!QcpwHLsFuKpdZMnb{_54j7DYSRP@PSY<&=Us}oLr#&_3kEONz z;%|$VrY5MaL61(AKzz;L5PwA`ea#9ly@EPGo$3{5Lo`*?rNkZvmso58vhfcv~>@h&0N1OHt7A>fP%yY^|{pyU|!4W&@J^oBEYoZ=d}ru{6znBOXo z{Y0o#T}0|2jmQQ$HMuYPF`CF$kCr|hQt--wo1ynr@EfR-#fW8%OKYR%%}c-1T~A1` zAReKO0J_2j;rpViS%ft zZyiN#MBt_BKEf7oB{Ql;e%o>!$5hcb7f0)O=UNhBhuC>mk~bkw;cBDbdu)=}wrr;$)<9o~gCe zwRfyup=!Q`fZ0Ar;5P6L^!zR6FiP3vG)0tDYS156dh7v-d zooj9*L%S?tZ)2it+9ox;vZo=4zBZWYMlT+m2QP8exw&<{COPB0d`(4gkQmjQqfSI% zex!}Pq6AU?2#nsc?0pu6O8R0DGT`1O`ADsgpG`#Ef=N*uV(Q@hTKRp0NYWa^1x6@%2PIeIsQtkOmuL7CRI)Ky#0mEA5nI#= z#xNzFci>3B`?hAEf1y}DO@h$#ToKXYp}hl-^C3!Kz?#;D05mb}=JLG}{ootd}AJ&qfWu(d0)-=(MIWjm^lD6TqD~Xi4#|`$MB|{UX3ICldkN;<%%|y5_b!@}4S4 z7Gy$9T)(N0s!{s=aDmKOR->G_QwHZC&N-;xAz9jhnc5GIxOwvDT<38_&Dzsy_`A;i zez(6Pb_`=)iLJA?vr3SOqJZt0yj7iXJLISv|0a&@6S#Q7YxGjj^LNXW_T9BQI!2hgfW84SgoB z$F(*y@W0j*=s$bcnwwW@3Iw689KYoGP$YuTM+oi^y{}6>{#2;LPiNP*S*0 zHT4QN@}3ajk14)2B+8Aa+a=WGvP(2LD9?=()GoB~u3$|29Y;fChfFk5ZG?AR*vAMf z2#@Fl!g&(|eu}&tSsP7Vvz$zw7$t#Xg(d91smUeW!;QAwTV(SdsInDe!W_8xUeq|? zO2X^*;{Wy`#g_y%%`fcn7wIP9<9R%u9j`V@WON$-xq!b(ID=XWIih~79v4_#EE4Nd z*iK&@qIcS^tJW&9J@n#CHf&N9tWgC7VQGQqSS7mTaWKP1us!c?GVa|YpijENY{M>ELgzoir)r)8&@im zyUX!P+^K{6adkjZTOjJypkj_?R9OB^L{r8Xr2%ntnV+8`U`r2mi__hC1|W~o z)Ok%~BW|h=GeoWya=oOd%MFzMrV!0OK=mF@Ri)v|29!Xq6*Pel`D?F*nn>H`p0mfm z7_$~gAFtURE^F?~5AN0UnQniQ70~JHg3UN`P4HNm!bypaP>R{wsLh6Z7~y`hGRfIw z11$=GXL@_%wd+;~;$7|V$3rH7Z|F7UsOX{5$6Sv2=Mj7H|MsnO68hMs;sy$YK#QQv zY2wH|Xdi4!r9T~A-5f1b{L?z|S|yeG zid*J22A{pDn(RPph-Tc>`I?FSgFm#P!7D;S;t3<~(c#Xe@VV?wLinDrEv<&wxYh4N zh|5Y3`NFI{lCh`RxmmW#tMaBZgc?QlQDt-23p@rqW?Bq7m0ki7LT)X%_frBBgZI@> z9S<%03jmajJioK8>f%b+vt7{OHjnqAbptK4A|Z+^y3q5oz$evy$Qt%td*M+L;K=JEC}K-NZX=+SO6rkP4Ch1f;xUMa(6w&DFUo5$x0*Y+gu zyS)WpQ(Wxl1xB+JL zQI+s>XHf__>n`qKrBCHij$UtFu;5{2{7}J~pAKlQnN<4C(H@Q6xJ#OPK!Lm?r?lzQ zU5CDP=R^zGb?o-0KYv{jIzxA z3kV zkBi{v=Z{nDO8SZ5`cHIn*wd0pI~@HtchRD!waC4I@(Y!b z=hFo4A05BMAJHu>t5DVt_6e>tBI<4+!!Z04PC88#0=WBH5#gxU2tUKexKE;1YX)*3p{Q(!^Q$?k)aQ|>ZCW1g9ayrMgr-7xOgnE*`2cpqH#1ujhnsfr zyWGDPh;A#9)X$K~SoM)9rmL^(=@Qf3V_ePH1|AS;ci>+gj^X}Af(HKSb5l>vag2vK z`^mz{Fe*uOGbn@4u7;0P8dbZ#)+!uoi^4s((| z8F5V*^8gjIB2DSIA9vyMoKJchgB`y2e>cYkTMM7r2TjPLo8xn1%5CUi%VW zWnhlxu;p~Ha(}ltA}JuXT6DJ5)y)K|0EiFBQr3bbH%4v*;i4b ziOC=_6ZKfsVYPRrKoFn;4X7R&hTB^Xsw=L%1!SBNc(|!=JXq@U0fT>9pr&$_Gn1?# zmS%qa@Am}gu1vfhhDdN0xV8)A#_7=G47ct3ltupJn#f9y8ZU`vjWiW(2c5&j5L3ir zu*EKYmA4N(uHh(r?}us~xdHVcqp$N>quBz#E8u70ZFGn9$>;7D8hC|eYF*jt;*)bN zet2jusu%}djXcVao;sK-VH)r5ryd@2kRw`7GifYWyd%MEtog7D6E5UEG#!UO14=k~ z_9cribg?#O4ca$;kndegV;Dt_A<*c;)u!irqZOczWl~JQAS=CKeMtDgbK;@Z!`WU( zVrF`A4fQSjHh|PR3j~YvSBiTRmY@~4o8Q!I0y*VG6WjlGJxA3YBh*_};Fe#Ki(`4N z({0%%!x+8vK4U8L6|0j@2@#ABK=?t(8wg*j`x@TKtmjLI`4k%{W-#?f7~I<4)r#vZ z;1^o3R?3cE=Db;ZDlo;H;^eJnb2~}dM-G-6pla9ro&x3;@1Q|rjAfSdbCA%`&~Heu zAk(l#oAN<4VG63F;AuI3P<;(*g0OL)n?jxp!_rBwqzzj=K9pJ^O+vUD$NX%#X4@vW z%03PTJ%UD7O>?ZKLQq!tB98oK9TwZkD>HpNz+uK{j14eDX}}X1=^yP)>M;xk^2Nop zlf9`2VNJ0xp=Wujg*(-KWJAi;`(^w`RmG&}JXX2JUOpvUEvOO_uoN>v4-G6PsRyk)fiv$?f=gfZLycGc z>n7X={wR|=<)tL=hlF9A$<{~rBztyUHmo+_mDpQ%!T93f7DG}6@87%3`;t`C(d7z^;+F?d+=c@mD4-J6(>NI*NhWwXV?CDG)t~E4HP5T8x&7?3 z3zNdF1$P<(*z;;SW#!{oB@xX+27_PHvk>Ih22(zyJj9TfDG^L9GqTNR@aU*ME!3S;v}!NF70Pw?Uh*dq zw}AKfiXl!Q%Zv$E{6gItSsE6-5;&~SsK>Olu1mWC$msN%tU}^~c5PacOLF@l_W}5M z)VfQ3sYl)!an>4ce-3fA-*s2wX{CWn{#7K>C~%P3n-tnQm@^UXAh2rs6ZEnmP}Oxw zoYr?vfbijM&N$ge;ZpunqvWZH2^zVX5n<|523u-9V#K8GDbdH$T#(A{839$tIP8X z8kmku>;`O@Zp;2fC+Mr&ak;rug+@lIStuun+NzWtv)8t&BsYVuDLWO!EqPxHCj|j3 zk>M_`j|ylSi8iAGlfuT+_>d!KgC?a=Y>j~q9};!}O6t25+n$;u>gwY3tmPDi>cQ+a z4Te{6kMc`gxBVVi0?Z^;0Mnw7@-7AB6cpbFcLJBGHqHbChzLM6IZ?&Vj56}QU-~Y( z<_}2Y#%UWG?|Uq_rM58qJGH4T}R3u26> z>L4oX1%_Okc;$veqz`s#;cw|?ZNI>o>we;yWc!sRQY zrS?!z1ofW~om7jUJ&-*cr0?Z{1qnXEQCWa|Qn`GLvC+X?MG1OGK(JbfFG|(_Rvk15 zFimbfjRa@0xGlwn_lg*rMkz8=drbn~Y2rrXi6v_H$ZrjUhWxR=VulJX>#pMLHZF%V zH(TSn9c@+~lVh1#&s}Hu+RYW9#Rp0!?Nim{EKsLHAnI#HMwwxbF3ulB^_86^n%GIk zlk2{B-Gw4@Vv=^8xD)p5`he`~aH1I8$Py$KL+2(cY@8y6Z)0}$wiQ^}yYBh{gB|rk zt>xR)kf*;`Dm#!BIMZ|01N?B!F2)$I+YlV?sh^-4Jq(i5qZV9xj&AW0C8M0;3TbKf z^e9uooov-~h_(FnyN>2OD#s)9uy0gGka~JV&6C4d)P>kcQsSX z>1@{Zb@_gIm6~VWqke_Iq$Vp4n`pjonYWZ>&At>r7{+o+l<-`eJSntGcsn;jscAHi z@G!=E$%lLpCkuCpmdQB00&S{UzzY3BYXf(dEfn(fa?=eQ@&sIWMF&m`IXD|_wHups zuA7qNrQZmBONq!-7>g}TRHc}jS*PWfvkE&gBZqUdbDiI6FRSN z&NA!q9vB*8ANOL1wMj7070r`RxYK(xy7!EjX}VCwTzm4{ag zNghP~{x@M#&l=%-dJ{v7$hc4eX3vK~Z#G8&hT~K6lmNKyENeO|f7+_4&~|A*On=_J zwJlZbLR7K!jxU2X1;s{Lv;*VM0s6*drz32kw#saC6` zq(Vr13OwszIG0D%Q`{rq0?U>^_ljKWYqfj4F_}Mh#i7RSpnWJI!ib)gBPScERS4)z zJ1Q_@K`MUB_VVaGxU}f{)_NdYK(gI*H*<=dr?MuMcBN3i9aE$O)GAr@?0C_fd$oj} z-m|%FMUEYW}_1B%NYY3|y2_nrsaa%2L6$_Jm1d_l_XmsZFyz43$xf)Jf zi_R21x*0lRm<>B?oB*$OD6lND=NRA!d!GJNwZ}cSP&~F($tOty4jhouj~zoE5VJ&{ z@GjRt1&;nqmuHZvuQL=(Q{_Xf1r8NlSaYL4AfA{=Ux*yFgHjG!rX<)y9R|6La3Uvgej zc+}Wk%_ig$S|z zj3EMw0Ei<1PXyZu5Wx|p@=z6!?g`;gH*w;w+A;mYUJdC^MSqT5BL`A%a?s(TQ{5AY z1F#4)*c&q7AVNx0I;3W_R3Qf_#xS{+5(ekx-v~3<`vnj+x6{EjbbFRB#EVPr(}rRO zY1-1{lBc3vYf%U-?ohiuXK%L`1|aVffj@=~2E>ZSe(xbrUhWg$LthK*6WqgJg9Cv8 zA+0PDqW_=Gk8@V9{@eGj;-B%}P5XZSx9{TJpMTB!g)V&k^XGN+mTHR~w7pu>tKTx> zR`;JTwZBhgm@lvB=B=?WyU2gM9w}krWNpIX}$T4=-%j5Q+-GB|6ZkI`t$Ff z!KNzf9KX?|*LKj=+jzq=*%6_9{`<}Ka;rS6`M0GXL)SX)5?|E}N)J$fM|B{AIGq~o zTif4tg0foAyt&_X{?o<3=VpFevuwrB@%^mLg+LJ_rFZFRvd%yOeXQtudr~S`w#z`hF04T>8~vA!_V&3&Zk&%(Qdf!3+2z}PyYS%YVcgva(l19 zh(EY*{PaW%P~;NmzRERpWLnj8n>yxQBfkx7v6tCHek$NbI3+y4tE=U#;1z8HIW_<0 zvVAiH^&*B}(#mFaHS5nku-mbVyn;zpsj!Ywf7a#vDLJK{)CpWj8KyUp;9u6HW0kw5 zx+k7SE}H&4T=+QYrEk-Qy+AWUI&J3X8NZX*FVf4OV+KRWQVvq(E)e_d{r~N&fxw(D zI=0rW(Ynq(EU9un<+un~sdsJ>GeEuZpSc#hQfB1YuR(B?3i56idUrDSn)S^}fvc6R zFiE97QVjbHS+S4!$yXQju9OKBx<~Q7-DYG%>b>Fm>lY-eY{}HcT`<9S`4W7^d*Q4o zCm-x#`IVo}`SoQ{W>U)Xk7HERmop=`d?kE9&KD#vEXCj^f5Cmr>I{ahSC(Fi$=rD~ z8Jm0{grj(A|NK;bp^Jj~na?x7%)fTOS)WW7Z2Tdb>SdLG)vA##JSDE7;d-Xrdz{>T zJ67@Et(1`d`M-cischRxl=VauWI_6G-I}aeZN}1Tm&hN9cOU4TbdLP^S~PrOMd);b z|0Utay_#8+!|dBd0>_1pzD-T6b5bpX+3fE>_MBst_@eiecKhw*vyPTV-Ou+$(NhKv zMZ7TbmNCHm&Qi*K)(%pcsatryTwLDROqcFMD=Xg!vMCM8etA)zqiN&6D|IDuxTFRk z^dYVJkNCZUq%PWC9K4>1_NTO@-xjINKir2Jk0MPZmG=h>ZC_$utp2ca*zO4V8Zu8D zmEDk~`+oIL@(xD{8&I&piiNkGIsB=5)2MB+z=Kyfe1QM4{~c?y1LB`8(gJ{}2W$|@ z`!77RHa}dcerGS;d0qDb8M&K1`$n5m>)!k%?=9X0u0Auv3$Pk)~zR^KT=PlEzYTq8*vU?-&C-qC|0yRiST+=v3cpzs}DbCWt6iS zK3E^S>S!g8Kbpro>-y0PVZ>^|Ae~i0$JGxFmmfGpJ~FV% zu3KVyav;*H#Fn$smD7uFqfbSCNT}P@-wb!eHhnIfXT2|J{GMARLrT5T2Y6(8JN3%- z{$94iv!QzlGBeem9Mx~mL~U65$7uK+I-Bog`|XfU5}AGBo}OR#_B`$Jn#eVBMB~Rt zuhW*{qDOtXWTxdkF=eRf9{62*2oj?Burh6Ynwx4Ov07x?@niHcjxhv1&aOB`|QOp$1WB0tMLRKE0ZhAnL9C z1K9NRnw5$1O?{d6L@&{k#F@ghkQ>5`rU`S$l?n^~#HsnfNy5;&mj)p zY7w)EK3i)OXVR-gzeKG5^gV3-X!aBQsb%KQ4Uszhgji}FMRAUWAibS@c<8rE&)MUZ zDS)A0{#{)sY>kiJtFu>*Pq@PF-Q-#ABAwn9qsI$Zm9G{RT^oM$%bIed1#3{DeNQdw zo$e2-OvjXscTMQyL^0vZqA?`@;KbaAn|$q|LTY>?p5TMMlrB6n0h9&8NF&MF+gaOBTG`xEzIa5v}ucLVO8 zY5$x@i|D_9rpon&;+#dL;%b@W|GIle0!zN-H+Y<3%z0Z2Xj|8b?Oy1NdbaO5Kw0jM ze=+U-&1rd9qe+!hFWUI!%060*YTpTM^A2;v(gJ9gEsWTh#3=Da&Rfr)M&K0Obye}89o{9ol!(Kat#z+L2f zNSSeAhVSrK^Jl^L{MFOH7PQmNGGngoA*z%p;COa8d6`1G8oyzX2^v8L42bsbjpbd1Be;IPnaYHE4#C$s6Bx1@`Vs^1TW-?zX(q=E6>7u`($&|t>eP%85PTR)RjW<8$XDVTWUQ%T`-lkQ9Bje z8p)$ZBjbm8_|+a|4w3xRZANaz+%Ut~Y)S4&lVagb1&V3qW7jj!=T`uizGvH*$*lM+ zp8Yh4{CxJo>cGMCCx)$ilXjoBxL~H;0r-6^hug@0pM+-`uf5*cm6*}@J^uFJK0HI^ zwS>rpXStrkK4VpIDM%=xhw$m@bcxC z7x#Bxtsh}MPHVlfwqrsA3FOdAoMl9@Q>QV zm_1V5zoUD?{Bx%ZOv&PlLwn8H!leiqk;d-lIaG0UW)Nlva8E*`^!lZ%GYRSsT+c3q z)L*&_N~OO2(f_#lZt&muyf;6OJZ&pmbQw>{0Nv}`z<%j_76`nr&@|7&3Vu+(^zC!U zX34ED_x#SC?FBz}{($a6T3&e}`^3Kw>_=fnbu63~dM$KK^{0Sycc&PK&iK(EwQ7(< zlstN4eBZfCm68Q-AAwfBb-Ywx@aX9N(xgKuXgtYI{gQmnq4VYON|Ddc7av+ZRu}6d zuzng%)P)6{_-|hiH#us>cB5!nZGF_!-FIoBs}zZC%UMC#pS}btU@e+$X1)d|jJcls zykchi>())94q(N2y=%uj{}SS1!op1vhjTAqo6K#699^Bd8>THVC30yVGMYFkVYn@} zTHE~Vw8sgdKrf2sBli|zxI^C(JpTPn-U*R7%a2?0i&qf1ww5kKz~kSDQ@bjEF6t?b zp)KUxm;cg?O2a(ge!>Cr=W`~$1;=Hq7;4m|4^?}F@n-*Xq*B%!Q;UzKEo z_UG(g>wBhJ5|i;pvb$6#A?D(F7iH7*d+FJME3T)-*mt%A4-R}>-@GPN;6Wp>G`vkuD~d0($$Y zAH;Gq{!C&StyuzCHCD&o5~89Q$AkaEWEQ~BkG4%82{cU$sonf(kzef_u)KmCS3SEu zEusA7)_iM5g8j5*v)<<9CmFlm;7UuSx{<`(;yxuS4*&69S)Z(O?=S8W;7{hs@T(T+ zvxN^FkG%S{Xa)1XKr5D!E1qNDwz{=?rt0n9ceC(+lv^ zku0_R7a`|mv-uMn56Ba>{;ag*m$n!{z8(av>VF|&UvC^QaPm*Qo=a>z5JPyFb%-|4 z&X;}{oa`0RZeFWu$@VC-f!vrzImj{xZ)46`!th_g)Vsjtve}*s$Za?s%dz<_lc5-q zLGpUwvd*tKZ#`|cAG`oxW2c?`ZzB;7u8$7{OKE%Ty!UQ^XB0AbVW0Bz1cw`6Em|Se z6YxYGM1Paj_m$ziZS9|jhJBn`%VbPjWSN_<5gEw}S$X)$>PAFvbq>Y$z))&-_2FvH<^N4m` z;WNpc`5?p%pJe5`$F>GPWyZ-qM6hG8!Mn%XW&MCdKlOmNEz3;wpE=oQmCDSVX>41B z@SVd_J>}55XYpXKXRa5hm|&mr#!P?-ivJ&Ym zmt+`at1=`T63|=3TPtS9CJE)5>{wc6KlJi$ye#mx%Rhm)hGwwCZLE9BAO_1}uXa%D zWfv~q!j4}*0yr*=vhk8n8PqWGnZ%Cxg9JOgZ2HAi?bJiIP3A)x+zApFii@)G79DV% z@w+k9@XyO;i_2}?6&Z&dkE!Qn&R!V7V`mN0aKs6>BfRA{xE`UGY|nAj=!nZ__&H`1 z{pSuAVeSJS^$s_QdX3ujztkBt)=lcbfPu9#$GEn>*oqJT}Z6G5F3I;V#)2g)0Zv0(N#%cW87leQk$>CSoox$+lY@VD7{U%WRW_ zp+2LB$m3UzAZ`tpsY2_!#^^@!-@tVcK@xRlaL;V8gQ-Cl%sM6|;&^D{~=v-!c>RBFog z80%<4gO=-6TJ!0bw>-{kuK0OJ@c?z()$uva2QaF5yb=`7?(I(hh&OYJy(m+umC? zcpW@tl32jUc3Eak;z7Xm2XaGvnZSqdF7f4$)$#TV;yi_%C_}RB&L7U#ZC_hwa#m$|@Gi;By+XNaHnxFToT9reNFE*+!`w2@)pIFDjm+%#~U-#d}0DWkq={!mFJ0jXKcOvvGNz#`FdTx zkC6APA%l3&#&hoglYnxYCj(#1^=}>7_*?y?=%UE*mJ_Tk00@N7{dSrB;rzHX-!Y&` zs2I#H#QU3iE?W^2FD+{A;;rE4>i5pRK8xwl5vp8U7uK@+pALa(#tHU0Ar@G(AhU;t&V5@8+VMM@b<3e*We%JijhS|ncm;&^xP1g?P?FWMBrJoy zSrIS?oFC{UBzTuk2B!OxEV>qzZqbV*l63=vsl}38bz&KX=2<&z_T-e2O`H#PhgVT~ zY_aNl)WXLCA**DZW=SQY)w68m>aTr~?SPH8SvqzLQ{EQY!rv`|%OJXP42GRU6GWUc z-a8)NEQQ8pIpG1n+j&>dY+fNFW@L7bF8Dq9Lfh4=lGxb&SkG3G8~Y*CsY9#!S%&7{ zKkDdSxZq^4i0o$7j7dGG5^>U9vN#A&x$=F>yaxr+81_w)>BB9Z!3Bk!WH)ICQQAs7 z!^@+9nZg&rni^6D`EA?~A=4&iol7pH$UaZ-q|s((b!7Q}iw4~ekL(T4z&E6?#HNT^ z?({G7KmKKP-2V4CgQ5-UafS9cC1=a{!!c~J zm&A)x*d($R852DD5&c7E+aswh-NwPJ7kSqBP&^=(IAX>AR=+JiLHvO71ZBKq`A44- zlc(^#g(b02BE= zD(4V#;>%hYon=eoO zd*p-chwT1DFVm6)e$k&HKI0E?Ag15xZ-(;^Wc|I`@Y`*++k6mxzt#-@0775Gg1@t` z*>Bb{XBOSy#=-vIO87D9y`Azr-{IRy53D)6P{l1ewfo5XY@>lj3^(HNk_euP-{GUW#p37e~183V|B0|XisWa^NJPt7Nlj0q_ z{o17XEQR&swh#72sz^f1>=sG3OgWrq7+Debfs`|s?ukno>qry(KZ8T;AK5>X{R#Xn zKX3Gv{k{IrKkA9~Exsd6k7TraA^pGJ_zzgU6UA8z^27H0A7|9rWt}bNSM-PMYGz?6B8GSYx|F_^q}M zZ*wfHXITVIB|o&g!zpk-WsRBePdw&$`U@n*RM?P$3csyHt5(_NbGJ2%Nh_YM% z0J&)OKkEk%hIl?7_kRO1#lDemIc{H8$ChEyIFEmCdi=AGi^KRm*=6dTApZbs`y}2o zn`sXGw*0mHxBZp%uwPgw)9Tf^BuBZCgZ z4>Q#MtJCRV%=z9X**y~J5d-xy+N??MUYaXJiwNIW(eg}i@q zi2m4m;m3@SN!0FH(#t%bKAEq$1Lp(#gnYFx4+I}ze#rbldi7?y^I_uf;CYK>l1L!% z4-A4Nk5+hPgtmBiU!aUg^~a&t?_R&aaJ~@?mrMukq4E>!ZulrkePsR<`4Yae-@GQn z4}#&s+hvY1=0|cloyeOk^7)vbR&7T!e7qYZgNZXN<8SaCKJ*@McFFb=u-Cy#+LNn~(s^LX1b9iME-j^&ZzmO&BYmP~NNS%)Fm9Xau2%Pb(-jz%N+ z8!Vo;%zeaiDTJlE>u-nKB$JtE4xA!-m^fg+-H>~OfgH#`go4RCoO;-XBi0(*FAgT5 z65*T-UC%eK8Q?#8hoaT(khX6}8#dc)JUAnpo+N6_vTksNTfHw12Xo7KLyrz*oI3d^ zdh+%$d-3(~COAy><1vToVf)i5BS%gX;CMYtICIf9b0jl`553rk=G$*}8#p!$i##kTKaC)7K|gb#AqL)vG}$JzMU-bNP@eI1v#IoM7={VJZE= zt?}W$?|)Fi$LBuHwto)!KPTxu5+G0L)?$#ex@gQyvy5|i-x%NIln`Wi+B%=DqAL3c&S;00-58DGi zrhSF#{fJ8&*!3inF~hkJuNRwaG18hG;eEal0?q}f)qyz+XAt07)#^SHBaQjQ*fLz6 zbR+IymLaAP^=CfZ$%%!Q6Em-dUpCn`p3>*Z#$jf%^xn=MeBs=VF!6Zwi(&2#ggHf_ z@)f72t04Q(JOgDPY?6MLpl{A9-+UslzTt`3-bK{2x9~K^<{o@1O zjG2&qw{N?47Ed#oXLp47=MFPu$QQJ~*MSA}*pG|uwnQzrgiZG#n8>k>Fug>NP9>9j zu;XF>0Niu^N?)6M^YEK5WW&Mlct_6%>m&fXL|GPllJxY-p=1U>1sf2wmxTL_mh5Jix$hh z8*R2(d6r(Rw@3KQ&lnd7c|@7W)S?Y?5UlOA^^_{gV7`Bkj8n zch?UL_Z%|GEGH#7oC^pbvdcK^N$+eL`+_!gmRV;5VU~36Pm3J)J#3kZEaMvyA4XYx zj_lc-&TYIpI2&vM#uwO2X&h7IwsA8l!JYMW3nZUX%(K9=fzg(teV0S>ACV7S1Rm_> zM3zJx%Oi&}dgIiTpDmZZq)PmK zjQg3E5_AjW!W+x>QLF8S!pMy9ho|hXlWBfihYO?pLgOE>3nz*i!O0Koe1(zj%Pg`8 zEVH>`7FolISRsVWyxVQJo50I*{n)Z;93_(GJg))zUe}~Y)DYx)iIN@&Pfy$Ntw*X@ z$?q}=(6EFcvMz5&8ntb!(_tB5dbZyJ`|#fmCkgo+A|v=8m+bTFtnvOoi}pCg40wI? z`xnGT_0l81M^1?A{{Vyk!~iG|0RRF50s;X90|5a60RR910RRypF+ovbae)w#p|Qcy z@ZliwF#p;B2mt{A0Y4CoX5sYB{{ZXf{{Sa*iJz$d0Ok7J-X(o2>NAMF#fHD~f8}#6 zgZ}`dar$xfZ|FlmUOue(mpK0b(#yZ7eGUCD=tc~4xvB0M`f6X$htP8j{Y*(+E%~ZC zF-o>(G+y~5{{UjmrDyp;Bn61?>#`7>#e`w?BXHl;hkr-Et^WYvaXF6RxVVSVjJW*{ zrAU_sjG1t+4rlsbmsP}(EfBpn>1L?1= zVpsk%a^k`+CHRK_0QZljqra`fBr1yU)NgtnwS3ohY+?ni|StdKu771CMO~u zvf@CZyGuWYB?b?gnqvtS6}&lp*4xjZlUzA zqc0y*UrLoV1(|@?{z-lyXpCWc`qp9eKK{4#VZWtz%o$QsSMe;@F^Xp}@{-QUa_SNd ztDgZE$&_B;*NTc2Y_UnEnq|Q|BfqV}57OU>hv?E?F6F`Z1}-Wt+FR$6*Njv&P7lOx z1=bqeDFGvXBO@ZGJan$Q9}u{cNbX^_UM0(?GUbzboJ+*MK9}?s{{ZkgoK7W@@fR?g zeI5k7T*DnrM)Un9q;8%=aJsKS%!n zVjd&ErqS2cX8!>3S^AM@GVfpbU!kA;4uA8n{V)WfxpvbueGmQa5gO_S-?RWYVZdC) z#No+hVKrz75~6cpF+CHNSSQGt#0)6eXk5H^aPkw9Ebs+E3hm>#$1wRWG?Xi%dq~0% zt<9}}*mkN2oy6f`B}4wGlz*&`-emc)ZDvRYbDHr18v;0si}`9Yt8hamXjp$US1|*b zPrL%+Fo>8EK6074?uH`sJ{)}NAJmX%G=G_a&^xjlVy|+GBKO3@oX4b_W}5zxcS2V8 zG{2)sT|g4G^bUT7%)h+3ad8Z@23)w^!aA21nSbyFnLy{XMI%A+8G*YN#j8U_7dM38 zS#eVNgWWXz%LuO8VAKln2&$&DE(Vm~n|$771}EGKg}mw{7TiIXJk+}@-r}L>s93b- zR!}$G5e1_168q@88NcnHz*=>0VwdOej zx~T0*r9+wLZ_+ckU0z_$?ROmA#TF^_!2V&XVn6xc*NE%r{T)k}oP9GZ{{R;lW9!U* zmr=}N{{V{mA6cPMs?l}EdeqMq0dkwZIv*i;DJI6n|6sW@-kJQtxN z21)O5$}3hi4*|K4h&yuwE3GxS$Tul~2MvtEosd*s97I!<6v65+I=ht%B1EOO{7REJ zik1V~x8S3$|)F;WZGvGaiRIjgZtTvA4Lr6gyz< znyTH)Fyqw6phZdz^~4b|O;o+}2ISYdODROzv6UD5hWJ3x*~BHVp_l&vrc^B+)jMLa zl<_YD)xzM0IfDZu8$g%HWopx;FhXXyeaC`}2ySk9PWcTyWIqs7GjL4(SZZnX@$|2& z0Em5EL;nC5IE(atyOs61$I{N`FX&2QR^~g*+N<0v8RW&v>wv(SdLhKk+!CO00ySgs zQg0u%9JD<~M+7L2)oBx`Q7aEQRVis-cpzI6$HW-9xP5Q`04Bbxh&E0oMvncw61=N{ zs+0t$-P|XTQwmI7A~k`>gg^sPg4NLQ_u_`cf?h@m@(jYJjMeF z64Sgw<1+g-pq{6x8JQTCmlx(N5;={RQ0JTx)uWf>%m5KYFmJTn8Xj--r!Zf{f_Z%pEpeSYT<7?Y<162DX!lEnzo#rhGYwid)eqbkF zBNSnAq6S?#g$g-EfGbVGTQpU+%h9=3L7_6{7AoD6#SmU|JfM{Fy$B1%@etZSFvTa? zFb)1AyEX9)Imft$#2H1F^M2+MQ!&+$h}P~74MGqDs|6`&bU3(_U2~YuifDo@wz!o5 zvDnncRYCZVa4B^Fv^&vgnjW}ym+CDN<-`q$FFhQ77`0ETDj zafZIH(JoeEGdxFAiOe4TqfsW4)Cei?7Yce+(E~tw4902w(;U+fim#XG+G+Jd?x2|! z*$}GNc?`WJs=xU{i>=(5xNgQ}VTIDa+J&^ol*BN*I)BW3OkfG}{{YCm&Y;-OIz9d( zsurnF-ck~apxxs1^ZAafAMf)mAy=mi0CUJ`*QbAYb*o6+AbW}sT~807i|SlSDcq!F zrmIJu67NsQW&rPe#d2_QDnZCr_>R{+cFag>RF}3#8Y*24tf5{YeHbE9aI|ir3lwIX z&-sW@ZnL?P!xEk>2rxKaNMg2>OQfdEVidC9?kjPXmJ@DefUlU1r*eb2QH_~dPFrOw zrc;sxp!u0H!74WqwgA}KF<)`wh#D6aD=#n^3ohUdkyXaj+uX#{Q5nk`u|8pN(ap?= z3+gZ41sCQ8RXzkn3UchZKnI9l4Se$|ex2vEFx(53t-~$O)=aZbHe;E4$x=sf#} zAYF5a#Tz+cK%-+xtVYD`{7O-mZsP1x>4X|VSqkoR2f5jAs+n%F%|#gjjY|`_(cCWi z^BloY+QBF-&9N?+xZ8Ejut1}b)W(B)t|j4cd5U3YbpTdsCJoL3s&O8-UgJe~?}#v6 z#u~yW!u1A_j~3lQkjoIkG4U-F*(?LeMj`+e`uD#X$M_kA3VS0Wb?#H6--vEdWNiHI z0dTnhj{gAUDanGDL3r7l_#h>vP=P%7my>m`h1b8_am9Lx6x7rTbW0?NS<>PX4tK~w z{&fX8?pyRH?l<+f>h4@pZTdT(GknjKb^v+AD$07tsk7X@3+n#>`aoyhp)x9a7&rLk ztQ1)YJP}6A6^un&%p)egSVdZ(yvx{@UobA|FGHW3Ii%Wc^ti=~FX+Fbn|PZr$3`HU ztZ8(nAJ^Ivbnd`uCe7h>aQj*nGF7aP-577jlPjiDCy2dFKDSGa9sLYo**U60vB2Q& z{{Z<=iE`xgGYw=u8G=Z3aB7$+wT4V$DQKdHDJc|7QnKaluTZoQBDThP^weHft+#&S z2rkQZLNrF(Z0EQzmP~e$aJD@m-9%kn5sbN*?g-ORySk`oO3bv$xEs#n88B9-BDa^Q zBLAuukZl9MTw80X_tboQX~ zL8V-Za9GQZGbp_ROWTj;J7UX_z8ci9agZDw7vD9~dBHR@`n zp2@fp!wyF9ML^bdtNUn<(#rGy0Eb^wd5wJ=pE8c%j(CI*y<=o+*D$|mhg>AkBPxU8 z)Y-dj23Tb=GQCH$0|PR?B8AuHSmc$uZXnw!S97pInTla%B9O6z&>-d7B6}TmoYD2U zafTJoIdE1<}{u5sDECVF8x7Ns1f(V`z!0 zj2HYrXp)O)UFF_9B{D$xg#wVxG5!5ku4`2nv<5|e_>@a0AzY_>ElrkmMW%7Ti9iCk zoXSvfH=Mck6tQaMR$FjE+Q%~YB&g!zsP4%~qnFDlxT=ZKjR7T`GkU3+;km zC29jp#HDRe1U{gSE-Pk)QLwX9JXPFS0wqks++VT@&VzARS40M8EjTzya6U{L5z8q9 zRHocZx)xQ~1mAPoX^D9Ep3?C0sDqgEjT5<#3v{C5XH2`l>^Pn@6EoNR+<_;!%+cItxvANV_S6Y-iIfV+TVML(ij^|Dw=G%sW zzr0d~!7WO24HszU2|)ZsaNRnG2C6e+;8H#oXkbAxt5N#C~R8nl!0|~ z2S403x$5FJVO;H*5C#Fmt~JG9pHYkc#7@<}{=rUw8Mw_ln6qCp+LyTpbR7Ebqqee^ zd_y5EvR#*qho5rB(mF#q$58W>&^I;X`s?%T?WHYP2^g^V=7^XlB1(;h*S~xD@db3Qr8v}T3K*Wn9*sb zEpsR?R;mk{Dqw`>(TQdRR%vDBxR?wC7U|Iz%H?$e!?{aa@g3-z0*K9k7|R$#HW(@a>=;E=P)Ck%8LrG zh`9uO&ZQ?NCAaey6x2mrHbw5ia7FRdxt8?6gk?sS{$PV;3M}R~TIrPDU%WuuG7V}_ zHGjn8i)IyhnKDdY`w;N%A*Sdz9S-l9SWi|@@BIuL4Of5lXU_&WlSL4!2=U` zTimLuc$8tG?3|IALt^4o3;CB-Wqs;Z^QgK*TkZvoQEbAvses#N*iIG`H8mYf{v%{d z{!Mo=&i<7vG1R%V zeA8t%kduj0iNX&dY){Tq0Mp#Hjy%qAja*u}WI2$+&$?p^Q-qd*^v2+=*>9Pxd=^?7 zc1wFr@e@U;yP6yMim(h#VpL-3@e8=KsO_}OwcJ2v;*flhO5C)U5&j%RU!{E=M}Jhz zaK^r6N`xFkOfN)bvI|K~D*)0rgzt6siIOKo)UZl^A_NryWtEh%izTR6V_))84wHyA zV|CQVFA?Ytdx^7H(-=~BZ{{7(DLGz#mTbx?EbFt5AH=DpF;KF#m_p<45DIfX$?hW= z%aZt;VfsK1_4g96Hfmv6$=W#l!>wzM0W}=%7{*A}D|PBpD$$By9Rp;j!9ZqZVB%!J z%+L9#Wdk%f@c~;2O(HHPOJu|%(?T_Cn%s56wphmEmlVM)6U11m%u`)J z(8km#svN?lEy1vRluF<^gMvGXz?6h-G-_XPZ#>Lda|h{aMsPG>l%jx3tPO0haka-t zUQwy#jrPtVfELEv!H-==6$FblFKM7(H7&M41^YkpY%oPtw>XqmTi=LhiDQXthb#d% z@=Gt6o*>4eP@BNiO%CPJo@W=UlqfTs%oVW$VQ0*?YMwib0>whD#CY9qq9hrvqtSta z+qQ8l@p9G+TrjLES1_X#VpWEHK|2SSU?BxlX_!(!2bgvR9M)<8+1pVSuNi}ubY3`s zNrv-ram`BfOB3(z3bS$0x8`I3W;i7r!4EQvgi2gOq=2A1bDy{7Wcn=-yg6x0hEvqq z8n}7X#Ipv64xu3}(5;N50*)37rM$dF;OCyEU{e`*mKKoo#lTEs9Kl5@>A7!lv{{9a zg&PONb#4up5Zuks*HIrR3NSR=%mYi5R=9_Wd*&9dq1m4TCz2u79%bUk5h+5*?ZFiN ztmEl_TaNyT6U0_8(543AhK3U`6C`2v?J2sBf;r3l#4H?mhp+7lwg8m0QI0;FfEmYE zf*A!pj0Rm(1hFrfcEnzMedjBmM9$?!6^ux?9^l#9K(8waqXrkp`!NQMN~A;FZ!PX* zD_P=TbV~|#=23WAeT@v^80QF6gk~B}@6)|H>N*+=QPi(hoREht-eLu}TY?H2Du|5; zE3-$5pT%khpm9*D7rTPp#X^C2hK?7BQ#7E=!n{}7RAiP_lx|qS_Y`UNh9k_nLmkzZ z<`;D2f%;UitdJv47>WuYXlu+Usjg*^tz0V?#BNm^$LyB48oJLh7S197yhSe0m=^6^WU7@;pvuV~DDlJVlyl2-EhAFQ)3?SQVVH3&AQ7Z^`OgBTe@f zR1xN0GEWhqeAWo5cW_7@a|*0npmD5`S`V0taZ;w@84NaWJV0MC5UeD47016rTaHoO ztLI>~aZ(oB$`ei-&Ss$Ld4Pfq;P`=8yk<0EIg3JQ>zI~atyLvoIuT(WwO%v zmTH0j0LY`J)??*(KN8)g<2*|hk1fL+7v>WiEEv?wKd@uvl@Ri8DQTS|Y2<|(qU0;V z5d@>$aC(Romm3dq#LFk*3LMj1a}bt*OFU1@@c5Q0v*+R}F`nh&4g^sVvKvm=cXs#3 zKX~#YEh!p>u(S!l6)a16EQGtlKwxnN1zg231D)pCfLil0vAd~JrZ`^_TSnbXD$TPQ zUoPNbc;+nMGbj0uRWU~91|loVxZ|9~rN&6DD=-f81589wM($lKYWEqO;4>BkHyWT< zn3L4ndw(JBh))L9s07Z9U+f?Q;anseh)i4$%JjFrfD zy1~n6dyEwZfU6s?AMC|NHa!*5nVsEWFa_E3kFzQasYNTcjYl)GSsQIH9v~N)>~WOm zQwlgO2D=P8Hx)T)W>qpsq{~$)VNqZJ#lYM~g1neK?r3!20#X81brE^gO@SD#?WyOt zzq~-kJG)VFx3!F#frbY(;s|q}a@B$)0v>J&l|02hjm#W3&FUbax~j}}f*vDWwOGBe z6d}(LH9vWs_<$>zR@x$8cPyhW!U}&;fH;89o?>Lzlv)=L8iGM=K%7Lub_k{I)7fKG zwltFzpzoNX-JQVAKJyO1a~e^yHWaL8nARirm(VEXsMJwVAaJ8I$hZz%F>ehJUKJka z%y=1wi>iv*W-3Q86*7yb5vEe17r2xInL{&-K)Do)X5gAb!H(LOXPAJUQISp{#s2`y zxr>};BzF>2w!Vdk?FCH5W#(x4WaI4p<(-Ju`HU!+pNT@wdbwh>rUXe;!{n8zed6M& z97gDDh^zY7nDDaPPh{-0d4kRr+uHvC*luF;biFVh>n$A{{-V6UFp4!TT|)sfZ}(9e zv978rZIh^*T`J6y&DPhKCr`{Q+W@rqP3{?R;KMhFm1Jsy-anYy-Q;#|z2;Fz1wmGA z>IHkd|{Dfl(sjW6p8JwcZfsQk)KWfU)y7 zYNLPy%(!kB#ygdxWMh@wqbHa)*)>4!cT4D_X?=tVhxp}d7Hc>g<8intGo5KpY z=a%Nr1Z>?F!Axkxtw7)LMa1KSo-Z-ZBL&P=ajvHX>%_`MT<2^}2Ly8GQRr^y%bS+& z09P6R0PJ?7a^?Gk917k8H5z7vcNwFg7ay=;n_$x4jKpd+RRC)S<7IxDZq`g4z!W70 z7SHqZ0AG7Ubum!&1rdfVqfy4*^MY7%X3Yl(Jqpl@tG-BavWg}g|a^hxZJ$?b4;Ws=2)YM1TmH6VeW3xhh#X{B%MUqlvmjIV083i;Hd}S3C1*aMY%DNsO;)9g zbe3Y^0aauD{^|@Zh-527m1?H}EMOI+00Ix6Skbn1KArS)oawQ8Aa5j4jatDy2s)qjmdoeAO)?#hX!C$aOza^ScWIbQzo~> z1@x4`*`_U{-p} z?2x`X{lV6ofA$DG7!^ileBjm4#rH zSR-ha(H*r4)Wtxqi1sF~fIeA8F=DVwKoPi13AQc0SAmsSe-oye5F5TVj9LsZNrE}(tvhm16xtg-Xi$N7r8*H zlof_B&SGbY%{5BRb0es zP>7;pp-}5r9mpwK!e0JmZKJf}T*`-{_=kX8&r6M)#dQLdZ%`>h4(n0Mu_<)u!3nj; zm?Z&=5JJqx!1L55D&FP98lW**S*$(70@{EgtTdaS#U0u zvm+Rn;gy(bR2hiFGXh>em;x~zgk}Jv%o<9ULkkunS^P^&OLqB%LSfa*ma^SuVFT`H zY-xr8RS;FG#13Ub*)(+OR#w!dq6jHf8%mZDOjMPKNG^r|g~k3N2QW$vMPOa6q7vYvio zn`b=B)kJ7YMPEWJpounkz%_0-D|s;nW`SivtQl#xv_YfhI2kvptlsJ=cmr7r#Z672 zGL+h}1G^Xr=FBZyTyr!TsnX?iOzE?LV#C5q1XZTh&|ypon&4@M?@@F+M7 zcl|QdtvOQhN3h|(rE=WHU8~yW0~J`6Wk7cbA-_}ZBh0pSv{WU)1aXsa1p@13!2PBh z>luyK2RjII+hgF~#qn7MVOsEb8haP@pcWrp~Mu;v+Fo@EUv z{w2C(h`G4d%X~@#5QE<_FVhqYXpK)d3Oq!{b2>Ve8EwFKre$6w+6XHgOAKJQH2`g6 zhXG5p=bai9|aw%(PdFEMAh7wm;gJV4*2)gA(lVXljgxYUaIF-Nl-%QRWT|HCmVjuBD+e!LW9`#4Tm`Aq2cdNfs|2Hj5fTDf#+hdF~GmqRUWbTz%kxvfA; z9mFmKzz#EW0N{f06N<7Mig+SC*SO7(OOC3=N;!)I&_s=a6v>vNw6grg05a~Qu|H8I z@G*f-W=gM^Wo~98++-h#XCWCiokS6!v+*4=mSHV}V!^$&8F!H}q`hH=MYNEGs*0S) z@Cw$gJVkY3Hf>Oj2uNH_;Rh@$Ox*xo^$!9P#CH)CIa-#B!zYcll*@Y8ve2%)v}J#Y zU=O;BXk?_-l>XUFwuTp6(rfbp#}9XF9k{$rO@4HmRlFa!a=wWF0Gh{%R}}&RQW3!t zu~k)N_*qMU1vq;k&;x>0(Nd^}NYv0+f>~~eoK04~T7ms27Oc*Ee&en{EC3Eyqbu6*}05a=$1$c= zV^LcauxTT*olFCD$%}zo7%`p7bEWN`rNO`qTr<#01<>;ssbOCeJQF-hfwdq$PrU2_ z03e`M)OEnVV?xuHH3J1Ns4BJZ7Rn_qUCU@SUwFfG-RHPj0|v1$t3!Ew!p8-|iB1w4 z${r${CzdLJ-*V`9Ato@+Wom zLYH-vWqre@Hx5A#syfVW%U1IhbbOY}dkMG-ux;L23->CNDiK{)BaNSJ!Szz*pujvT z`o{RZVzQzN5{+fM@$6N=q1x?kQdHU`F$mqqP$Wpfjbc|bH}tqdDa$S}%49bfK-_3* zH0jsgauJsn_{18KV(q2D z>#3!tp~+HmV*}=Js-m}sdW}O36xJiK;rv7vRk)N4Ke%`g?q5h?L{(f8)0vaka=XTN zFws>DBdMQwm#P_9_Z;*@4DK>rrg0qQrztSek<<#{Z&;at>vt~D-O_a}gBkA9HNQrG(nh3`MYS1a4ukFrRFNs#)bilp9I!!iJZ*tW%sD4wQYz1Qu6>6 zWOsr9ps7+P5lp;6a~hOgsGR1(WpEs^ZwMNs>~_!kp`Zi;rCihP3@`+#jj?zlS!-7s za}J_Ybq5f%4%vA?m;w8!p~w^hEh%qM{{XONDP3e;XZ_T?np#@ruG+86Yz~*Wpbs4V z%~Y`5vN3)&D6r<&zr1fVzPXpLdovcwiPUIuD79MS#HpH`iXF=vCz(ONF+f{8iKiK% zC4ow#RPh6qn8e&)v_9?tBg_d%8;QkgT-dkNt`&&O6|SRiH7cS4x`Ykl3YnC`wG^g~ zD&5AkXoWVXzj2njS(RNv+kRjGL`u3mLtWbVg|%m#&7N4;#G;I1A&OQiTEQ1EQvxov zEN$i>wNkBF@e5K0`L8nR=3%2KiM5t_g;#RL=H@~o@0iEz|AHt0;iP zO;fKBnG0{96Cku)M#9L}UFeGn?{x^%CINdzM~6{-L-7#M+lqo@r@X|A^{Ci4hY^L= zI*hrXR<&7KV5^GdgwNhlcM0ji`+-OlR)8q|N(JO~{Kfmh(Q9*wY5Yu;OmPqZtUOLU z+(&%DWaY%QMUD@eiYrboF&pkNb6UHK(Kv{-o6JW_gi@EL=ii};8epmSAqo%n%0+Zz z9%YG+o+82WU;uI%x!Aep4XFieI$>;NmtQB$qWCOV%%JA4b;}M#D=WmuR|`-+@N--C z%#F0xBJ6$Q90ld-V1+9;3aCB6QO~(dLrB#{D@$EUrV531fC|JH_AuTU)|;#1a^5D4 z#8FcVT+5jtUmV%z5CB|+S9Z8R67?MkaW8n8f3h!4%nkT$kIW=E2viS@lIwEi1!!93 ztr7i+kg;33?h0l#)?9_^j`p&kfl{*2AQ!*9w|~$rVGeLrd0@Cu0Xcw0Ql$hPrpPx0 zlnlW%+Dja(#SjY^XPDM#G)&-un5@X@M*cg8EmTz)rmyBUA}sQJ{6{jW*gn$#04paM zRyS?U#G6uLZdZK~+n%DN>BU7?n~AIE_Y0RT_CpJA%zT1wxPld1>SG3oF4cTWEWD)^ z5VqG1#xgaC?RCBR+zz%y zz9F~aHJ`M2wp$P?Y>m|!%n6&DTw94^u4S~ki>L)-dXFi@TsG*$Q&z>D;wJ_(#CKJb z++wv6EyMzrh^p##>49!>Fe~qH08PgY8uJoSG5VR=Cg8yuIcCIiz0^*SCMv|3AB1l1 z<%0!!i7tir73WVdAflg{Yg(tNbRT&|s?O%JT?xQbikNUUxmm11r#OMGbBHZ1x!k*JnWwzOS?Xl_Z2QcJ z!M763T$L2E>2Ik(S&G~_3*@C&;7ZY~aPC@_?mS1N1HwIlcHQ6m%vz!axGgz(mJ*DV zm2llkOdN9>jXfgtFYhTzbK-8zXRSfgnD^M+p;%Sj#RnGgEEz|;fXZEJB2w+kh+Dp} z1icpLrUw@dORZdUP|)!eY_xL>4c9k0XP8mOFA!xbeMX}+yddWD%op_JBkSwI(GCKAy$SU9*bmu# z6>PSi&dLu5>Z5LLERhizozC?(%^~9M{avsiXrFASo`qtTc5`x>M71uO7ah^7sGxh` z`m|&ENz+nA7*d0EJ4;ZBlb#?Y$@-q838Xvi4s4;tzreTy&Y{JQn*ylYEUKyq7A6oA zO?z(104Jm}kWm~uMKmyqE&V&OUTjZ0+WL*EO-Qfg?9{W0E_$+xas@No@jiAX@RzJY zEwUo3A{FlX5h`Guq96AwUO8In@lYvFn>(($^mNR zKzSjOsH;p3Pv6Aof*H} zx#CMxxTX}FMnkn(>xR;`RYJCFy+~y3$tsw|8Rn(}Ca-S!#C*kka5* zzQWkG%UEx}bVa^@Wm#Me=}>F&rvRH)C4{a{1e}t>PC@*Opvwv))Ps%Wb0hj9Y&+tU zwY#=LMt2hvp^OX=3iVccg)0t)06!6Ae;9~Buph#^yU56nDnFb&F8RezbQwrpsxnV@HG*d=CKY z%e!R*eGfw3XJZTEIi1(Wg_>yS6c?ZmkG1u`eykT$!VL46iqE(9rjbTw(DpVZ5KA<* z%xDiL;ImNHE>LI0i#8QK}RNgVCf}h66>Q`|`=tXrUfIbU~vn9ykA|s0(`iRv@ z&@*y8y9-+Rks`hvlVs*V8dVZb)-*ax&<(_IaJ%_SJ3Ns*H2F%1egs*VJ3+G}>ga?O z(%haO1E9xY69vP=Q$rqC9JLJHcjEgmY-b6hMTNI-)JBfItg1h$eSZ$e`(}f*c-Bn$ z@aK}JN$=$fv>=D{b`6?@TG<@g0x_21R2BU+n7tb%{L>EJOvVekD)@1pU8e6IA6}a( zI0{e)iRM+3&Ks7Bg9M=Ej~a$h|B}sg4>(9$XxSESthCN)4m|N;vMxHCO@O*!guq(E z?~Ht-98)xJe1KAN6A*@*XuqW>A|DwT&nfbL!!vIIbl_&J>8K_n5!J>(ng0L;4R&lY z!Zk`4`#s4-+(!xH1*-Ir>|zFo3Y9=7|7He%+!FJ$mOZ2|VCX@2yxex`JEY;9Rya^( z6C||On|6oI5k%aOJUTl4o^Xff*NE{SC6C2)y0hI7U7g}1>;`*ko1Jg3PQp=yJhCdE zurG@vp?Ga-npYH=+5eW5ugFV-dw2+={r2SU#i<&l;hsIQV55+T&(7j`jB-kKUPuPjO<_Z6!nANLoHi@K~*m;gUNVE>&?=`=K22 z9fNCD-9Xjrqy5XKz(|&k09_c^r6<$&8SE=rw+cERA zy!QXcLP8=@KCS=?J`Nm4X$rJ3J3l*@@L zbk|m{hIFkNFNOV&6W9^Iz%{Z`2<3h3n2jly`XgzZVn<*Mts z;{nUR3f|F80tHikkHt;$=N}1s=37L@K1#i#o!j10*yHQ9$6r`@Ocm6ksg&*Rv-vGq zQHhh(71A%`C6OH1aL9q++hc^C8=V?!7C#YyT_e8x#I+2AI7H8(nl;0?+eJs`yRCi* z{|CrxW{Ojr95p%4HcP73zI!jHm*OVhuWa-1g}frvdfU}((8twvf^Ik)(~YP^DQBe^ zr&;tQGWT@9XHdhn$O7>R@Wn_njnbaiCL&0*wN5b8!NHu9`uMC6^>T;(A30@p9*oKK z9oq1I=yL!$v@Cv*OJ-aM#JYgC8^7cyyGa?RbswrxRrJq!Cc543Z%2ig|6lQN+8M)^PH}U&^sOr;=m4fsD zQ^Y(kr9^gx`hFInc99f+R&tQK+?cuwyX_yVGU@dY#`>t|#MhYj{}Q1e510c=G8`tc zF3KH1{Q%W|+Ce_~1Fkk~6;^3P!GU^TGkk(>-GHR@r;r-vI!9#y^Sup91mDKCnk^(y ze{JM&tP3SHu%@1oXgQ-Y?rH`SnI;9ssmIs9`+oQ=OU@hLw}MEqk#)A0Y~o^ec&wf2_PjvmfEl3*w2FTlLtAV8@(P z(rA8&bvMN92DTO-EGOQgM3Xltx&Y8U8>-4u2$st_DYoWd_tgd^sG3jp$3s7(p;6Hf zG5HFyNBj@sx(NWQC<@O5TR|UJoBsfPmfgB(CU%+wSgDvPFQPM3^%;)4YJ*d@lZWp} zss4b;eqH96q*LzDTi9YA2~qwVjMk?hz{Fa|&;v1Gi1WtXm-$2XZ*Z0xoR;iFm8tce z_?zZ--d}LA6QqQnT|`SLXI$_aEKgwbSkPSZq_hYUP&c5qko+|T-m}crN!SgONP`Y@ zZ5=B-zIqxAaSp`YT}V7AX4TWc6S@1PB(Mew%4I3b}*P8R)5BWWNr#-|(IcZ@Ox`;h-h9VBH zEhi*&qD=P|G8tqS^Ex)Sjg6~3tfAgWfrX`kpXP=GBe-i#zF#Qg(SfGCYat8k$F0m# z8U|bH#i_i*v1;n%A$39n_-_~_viT~%mEZKSKSFlp#tL_W=+k{`m(oEy7PBUMt`@BI zIQ-m*Sz*@t7VE+!d|(W)FOia(^iCU2r>bJ`i<)oQF@A%SS8~axe5S{IGleNcDwe*~ z2w3X?C=-2x+{wG#tS_9e#{h<#$MRMG74mSjJf2`gRAdRP($~E)$I=RThsJXR(L839 zd3tD2d<^VgqOv-qqrc~&@=KA|ST&+TLCF!NJV`%jS+tWe)r5BWO6Coo2PqA@@S%$v zTi8q!>S~;ig{#j8M@k3GFLI$LvF=;VdKhvzZQt z*SPle6Pg)(nG(d#n9aVr^GE@?D4i&v0osTL=MoJxJ5zjkzdhHQtUQo)Q8aEnB@Ssn zJK*YCXx4u6&NeWI!fds|Luz!lOT(E6(18A6W7efi&2Wkx(l?iv$+^n662i}d$%lEg3hH8mw;X>USf zo^{oa;>=Jh5DMGHLJzfhQ2m7K>zk>Us{EXV1tjH3+vZCIz`YLG~f1r zV^G+k+HP4vpk88fE?&|l`W3fl&-{J&y9KqFY8l|_Ss~xSg<;_9X8FKqE@;3XxOjQ# zQ^A0f9BlsZTy4^Qy$tBkn!4OLr|?L7enZ0nK#OVe@_^}%YnUqwSkW<6MT7*QV#g-( zW*JdcTuiubN02qiHlB`(ZeEeG$?K9|{@nk<05XZGXEI)im6TRZ7+04aP9|J@`jWhl zUuykzOS1Lyy~k}uFs3a3cbsY%5K$Os1j9v>^^?tB64FMfqRw*aQUeNwdM6Hv_4E;H zypHN26p5f5iI6}jk7LN<_ctUf?NqaObz0Xz1LBCI?^FRLP_UVgahmqkbTm^W^dD|V z#_x6*PwO@1~n3Er0LHqF_$mw(re`)Ccn4? z0;zv0D0?W&7qI)IPy`hn?;j_6p!R4+NG|67W>RbIXq@p_k$q7(#{9l#qj$d5E)m+ttYj)StP8dB9Ie6*9bYs+V+5+QBBz?E6}C&KffgP0dR5KIV-onex|`jVSF2%g(#{JiN+ZC1&3$ zSBOIMQvw7zr-Ln?l^hEFLFw{$y3d|Zy5PLSIB@g^4M%e`WY~9c2;M>`hOWRc ztb=kscT)@nX)EazqPPlS$UZoA;cJtUIE3c2BQ@sdee>du(FBQMb=*VD&nHU>abT3P z9AN<%g2}Z3bQcOK-^Q|HLibrTp{yl!Yg#S~(NrBjgbHsA+Z25gDuP67@@Ai+4NK(t zg;5vchq?~$_&=Sdn{eXSxT9I}Y?M^jB+_h&5l;|ql_ep}_ruAbv$)w06)kRke11b0 z>5eRWT2K8&=)Q33N4PQN&mrCR*^GsL-J}>NFHEmC85NV6KCMD#6m9&R*D0!ePFm!s z!{1=Z-4*oAf)Emo7;a#9e}vhfqYtP%!sx(0kGGX-A8g3cxWQ1b>kgn_Qp-d{EP)Q9 z6ghCM3DH(oBJ|ZEJ7GZO6>;fKvmVCoy-9Rp+EudDosc89O{u$!6pKD3 z!-Dn@sm3uyf1*9;=FX!+<)*gFv#Gix*q3WJ;w;_X+R2THbM38o@VWT1z(t0y;6KZ* zKl31$#h05OBXavXtM5f3w4sBFFT(<-)HyMd9mUXx%)XO7cHI*6(UH zp#<+UBi@TL{S|TRlQkk%B;Ynbsmk}IG)u7xL|=G_tNGRp61*k}ud@KJ=CkmI=Uaiw z3AKGnmRI?9&Ix{BZgK5hfr#u0=SxYanm~$oy{KZPHXEH}g;U%SAI;NuN%U3~jpCSU zw^>)6I1{>t(;Q~y_YV+zE*_{f=Yqjde1)J{rCnx{xEi7?D$=rP&!;Z^@#IHUxZ!6_ z;@Al!FIiszwD{1Y%0q9g>~ktD;kwmK_OO$JyWheLbX&;n&aW67N7=;?( zX)0KQ+QUa^BYUsunAA@7d7-cUTgof1{5p8UPqeAZAGD9co*-A9&T`D3pCklEkRkzF zwPAzv3}G6>!@rIE11hch4i)6%42{20ZdMeiuPv`rmA;y-O6UWVBqHYH(mYgy4!N4? z@J3Z}*Ek!3mVJCx!cXdAJS8^g1XX6qo>`0LK!f>r%3Sd-%9q9O9B`__Pr zXN?rfVFE=4_FWgP@#H(;cS5RLfcPOUb8LD$@<{&);^{-Ow|4l<6II?$eKeD2JkE~E z&Pa&=md_(i*9ckH+cDZ8r|d20`^qaAxkK=duQ7?bgXg_zq-ZRzV2y+~>LSd$=@$Um zara>KE#1-6Wg@%GNRN&YD1}h?iUf^8C>;=^b8#l6qLy4w`@k!c7|)WzGQQISHYdkL z#YeS{`zt_BqTO5BWk9{B8hCiRP37K;u?K;8C)f8Z{7!4FG$I|!bsM>AS!rVmLn7b@ zz4iE)^i~tKiaSJ(zxv5<7Y<_5(UsHG=uc5B_^yt%&O5e!d$hwJ&AXv&-t%XEF3vLh&g+wyn_1u}j-eSMzDs=0+VJfcor5S} zr%l2_$77TI8Xyq(1X+d1q_G+=8$M(XwtIrGe-8$)Xad_+^EwXHM!amLx%DudLb1g$ zM6Oo)Lq+?P9!?9265pu&4_^}W)WqSkHb8mzZ^WxH%BXVSoonZ=^V|Ff!-hbRZ%0Sbnxk^mXjaMJi5(twBM2duLttLrp?4=w4&Visn5`^Ah|_HvgcV?Z#DjjKElPD1iY&Jab;B*)gsa-(}@LNT>QUCP>N1i%!NC?Z4ZT zqMz4#aWykZd#XoL4|Dy2r+;96%fn`-?J}O@k7X2)>R5E^ayXgFOq8>#<;j!ZKsVc$ zQq|8G(7bmaEf7D4HhE&o9+zOe3lWaU{JWF*neuO`yqWQwR;Sz27NM=DMIzD>g2`_u zs;;r{1G#=ZGlDzDKM|+NGBl`MI6YAGnF?X@u9{?x*|nMNNWpYXzYj?4br@j^2!VQf zbuVquR-D8ZRlVUl@x9rTgtPI{M+nmIb+I<)39#AAYQw0a)Z_+iOU;^>mZIYG9Pl)^FYg|H*xL8*ciMMWeA@1zLY6Yd;az&OX+4p4h>z(t?ZJ6c~|gGl9()EDRq8 zLasK9WGxLHHogyAN357L3w{ZP*m-fUNV{7UdioVo2ge~$^?~wc(xW=AKYX+S-)j-8 zp?SJ=Iu;N^ZzemUNz};CXt4ra^|lL}s-JUYYRjkUzUh|`DzArUPo?W0Zd@bNB?cD! zxCr~wKYou~ROZ7QU~(_ZNMYF48;o=nk7A7qH89tVd2$HeBoWj#$XD)_IHH2U3^rF| zSG=)SWGDO^57p;M-WOjgp+9?cNlJln9Xww~Mub4^YcR#uDD|@>ar(oEu;)dw?WSy z*n1>taP}HgtuiZ^Y1+&)u!q(EFQv=q@xn>M=UNJfenpTrSy~$PH{GF4&E zSJB0lpFfIJ!tTpk@*N2YAHOgZ?zjMly*~!<6wK2WrCam4ouK{uIK-%QB|?OfE-Xph z*NR`*57^)@lP|}wi}?z z&VR)MPY|;9_em3&)=AAvDK#y^n>i)J!S}e}3RgJw_UONY%+zU5j%L-;(YvhKV}pjZ zyIu|1KB9pKw4ehFb~*o%sOjv&CseP^>MM{9_P*Pf0`UP=DzjXuOC&ZO-S~M({Kq=E z!d>m%_i?AsGbfB`txz7iFn$%vQgU$xx7mLH@2RgJRP74e=$=Ipz(y!BP^e7qha>k^PkwXU?HJfh_VPMFmheI zsm}#Kry^DtphKK(7M>BQ$Li~@ZPL?NKemKjlyRN1z4L75KcsmYgLZQ}$Xsi$E?vlb zUH|!YZ;(ynI65(42I3@tAZ+WdhovhD#MVuaMRLPn<~J>^1ITmm)}%=e*e?VMr7p!8 z+X}ZxOJ}?KpEeCOIXQlx9}PY?Ol6bu`c4}W98~$FE&OZJ!i4cs1U!Dpe^hPGf4{c3 z(WB2;_RA+Mjeqi7wd4d&id!dBlr_gATG=fecZmr3tpDT9ngc&D5A$^gjwRalZe68< zwfbH522N#}<+p}IoYpi+SZ?;l=pDq5j@FU-jA~JcI*oL6x)2>cMOq150L)W1hj8EXxf0 zW57Pk$8)mK^SF4Bkt4XbC+PI0OFfves@z3GlwM8EqY!uL3z>l{+%-IDcJHLtBF^E1jhGzQ{ znN~uvjYzkpW?QYWIY)?G(wTR-R;WKGm9)~ky|qPh&?@zbRr#e>_5fUY#P}lTK5}%p zQwvd7`P`I(SR^#m#V8^7`Z5zs$7mZh6wLN$HNbVvC=0G}nXrM0AYh!*M9d429d z>Fs@xvBHXvQcskC7V{>V$FY6pVn~#^SiIqt)`%>dB!C@FBRUc4NtSh-GSxi8CwU{O z_w2u7Bps%bToy!7RNeOPqw?)zuR3z@Be7>vOurVjR#q820V+5%;4jNALItK>u^aNv zQ$dw)>7F{ENK7v=e^Xh9x^hyD^_HgtFK2VK*|&MH^8Ab2WFE<)d~yY6_O&(2(zS?7 zh>_pa@LWyg)y;%-C0*y$zgf|lp)>*sQ4GD@I20RRL~95lQ-O5{LaXU(wTrroOLf77 z9HzjS(l{}3mIYr`o~oV4lg83M)A0*(dEYnCi<2nmdhpBJoP~rGz!x$%9lw~|efanv zjnM_KZhIHB+dDq}%*9H&*mzrIa!}bZl~t4IC4AT_vx$(Dy$E4?$03ORc#4p7PT(bm zJO7#?T627UJCux^>%hEs=O@|!@2NtyEJ6Lz#mQxrY&PAv!SFJ~(AqSP*rWFJiz@XM z(LsMpnsxU1(~hm$#J+AHcZzdyiIp+q&EZdX-5L=Q!DnJAJ8HsPb2yrlLf+uK}I ze=bZ-5M9JuBLtq-eIwpNNRe7oD@k6%N{%?>=x8lIz{%Gz9-+6n3wZfZ4{fHD>ThrQ zn(AT<*1I2rE@%bsZQbW%1L$)rQkgCFQao^EPkn|w!>mlzFkky z?EvkflOwZL;>s8S!Bc+m2S8o8zJT39UqJkE3 zQYfxuGaltmaJTc-ZkGMQ%c80ZvrLpvevpHy&W-oBWK<4S^+C*b9WpcZx=r6~t$HP# z@BKA1aN2WPWnST3sH!DzrwzW2?8@UpY^}dyv|wUDI=A-TsmgmY!51m*L*PeMD* zs{MZeRfR-z-i$KiE^Gs#D@f!MghPHY&{pP1;BWAOO5)%AyuvGXMNuIFOY);F74~#T zbV0)ktb?wh0d_FGg2b|rSfX`WkE0Rx?X^7RV2=43c^}rq?^mP&)A#U&i9+bz^=P2Y z`>f$qg&Fl99)u{0o{rRq+a!XEn#8XCImZHt>eh>5{8o=_E>~gu0ZCW$aFr-lY{20=~CDAo|=w5S(Mprftcb_8lY;5ySDET_ekFc1^ zW%}@u0GFw?HcxLbzd37&n$Ddj3mJLqF4jOaeWvh|F|Qy+yesnX#n5p9!YOWebT~Y= zL@_RIP=n`Nev#*)oRx#OFfF`ZF!LEqfKLo=_YUSIIyka(Z&-)MJ0ozVhUjrba7~21cfB z5B61U7ZB|z0W`xGTkCvfTEhWx#6)Iq4IwcfvpKEDYkd?*pbS(*gIc~Npw z`C-QE)lRw84M^A=&bN!}OjY@Y+UE_ZtnDVmGcayG_9QcjmSJY+VOD9QoK-;S(|HlQ zAdA5(X^^~6D?fKI?WV|SH27? zh_R{|uhcMKrmlFZT;;6(5=rF{iJ~%5$mFe%7>QLx*OQDG|9wKinqTdcZH*$Lb|sCh z1XCgc-Vo^nafUT)O@OC?ha!h~6GstqvrkGc^?jV%b;lyx^E%AZBW&mQFW)2Km}>$l zt!~FmU`PLBxe30Lw3Q?MDwlk(>W{$*(|`(5*!$@+yUyyk{{YJ=b?Ns(KcNh|gdxMd zONsff+`1AUky#KW6w%H;&h*(}K!9nte8UA%$~nl6sQTy|k|t>`0}oq&6UOJx|LWQw zJyw)^{FzW?Ou%#ntYFl#eRG3fwxiokrcwJnfQnA2XH7}`-ZhS~T#T1v)w(Km?PIh| z!E;@F4I(fPe}P@z*1_}bl?qw zL;|I<;aVU68!Se?pUtx(d`?-hl5!nTD7y#PamTV`Dbv&FYuga2^yaCOSw7aAU=ooB zT;#OeAeagc+_1x|K&!5%-d1bAQ4J&aOU@PdcCV;CcM{tKmPDXgogp@)15tB!T*}Pu z_AdT236?NJdj0NOeVRrrizt<`;yd9sqMW!>v2GeTRz2nfJ&o4+do!OJBiO&Dr0@gIY-jWv7Z9icwrk}FsPrsG7H?V%fb$=%H7FOB6q(hAlpuZA%MhL^)Y>X!ICz#qw5jzFI z&)JHA(P%PtVOl5I*?RmT0a4fGYN|R(td(Z)_7qeuwGFAQ|06_J&-@o+v+3haU$dtrbvx7T$p+qzOlV;m`X~}pRo-Sk_d_{ zv$|s~+|V(7EKucoiZ<$T*0M5-+2c&zu)gJy{~Wl>QwSfiDKb*Ky!>sSr0urUUHIee zyJ4PYpZ#vijG~UAl({uuIF8d4^Ma%hh^h^@h*R z)`0cZ?TcjNH||$Neq?P@LC3FbjE*9PT|yzsTuOW0cLnQp4&A(o@YlHZ}E+t!yms#?9fx%HOGUCxj4J zTnmntD#{rvY<*~L3I5oNc3EmJZ12p8gA}ZU*bKAdjw{bdvR!qA)iB!!0p4YAL`;pG zv=zIST`>{SGo)Rt=U`>7%&^%=>1qgx{iG<)D;}Ga4=d29M?MV%#5Gs?xPwMi&e*I7 zd(vgD(j_YY5L_u<&iS5d2#tzqUNV5{&)`SkGL$9f!qDllo%8T9Ph>@_J4N5o`vbcC zj*Y40%v)~G_oAw+vci8L&YRxSR4!}n_ogYb@{N~LW!r+>j~UbYPasi9O%wh#X+l#U@v z=PkWvEr{wGzmR(EVFUHM%828mMEALVj;}~Ko+ju>l0C{*nA|p3Up7avNU42WY|qc# z_*3ZIne95sm}OA4^}R5p#SO8+^4qZPl}fhZAo!kM!5@ed_|c@6a^q*q-*ZNtjvpI* z)kp#wB9m15fQup4B@j(U`9{?+*;DJ7?N`YW4bIYz^q_Gqz-x8mNLJZg3P^lE>6oe{ z=Rhm`x+Z?!XVkdh?{7mAO|@}T+kXJbve}NmI0>wsUaE@nXY!52LEXad#$@_4O*GQ^ zi6nGAM&>O{Q*Ms*i7JY3jeJD&AHY+&=#m7NH8}N=?Ap8T6%7iJ0zTL$QXB6mPP6p7 zoh7Vno}CW`EboCLLjwI*>7=c*bBSKO&P^_FC~_iH-9DOrw|<*d2gtKC@nlEvXli^$ z#h%^9#Z9Xf#Z4%+3>x$FX@)uyvPE(XHVy%eBG>Sovn}&gbdg?}NF)2vwrl9dpbi+b zSd;x)efnc!Snw?gD{gbH(Z05RvV~H*LKe~cOUoUfptO&2B!0V^`<%O&mFIY18Dv_X z9p#yN4cEZG41mMh_B8WO^Ie@zQZ?iepq@R3C`GO-FO7%Ghdp?0e>J;8nhVV{EU>*_ zQr4m93JVJIXfTzTwg%fj%=w>~MEM*Cz<=0Xt)SBuRy(-(){-X!Zsb247`d-jt#oc& zmFpX(SQ@_m+t{p0_-e;)(Kp_ElkC{UYVk3X@Rx?dR6Np~uQEF5xYwc|lWDg1Acr2D)J4|^}?re-Rq)2x@ro$JO$K!s3Kr|6N zH-bT;K-XFrvmgfW{#t{(RN=t;e{QcLzYc1`~CyJqUR_@ zzzzMdfsJ(-4>S2B+Zq0YBUQ=O^^k*uzC{_5fx57eTs+hU+Pg7U$U2c^y_xa`IH{uC zZXpRY1P9AL7y94Mjf=O$-IybZ;S5g@LF{;GX5Otg5rv=1t%J%wMKFZfq?9rDmA$5J zB=-D%6i!@n$y6}!Nfz+w##tDI2tf}s(w#Cu&wxFIY&+He04)-&>DrDx=g-77>?zl$ z1rftX@dR>}%ldYWg1n@H(E|U*5l7PKme&PZ`PYW3hRb&9T}Os6Kk$tf>jfpoe%J+P zittAT;ab1BwmrCNwp}3JEzClK?(HN)M(__stFptzE%i`Mlu1JM0Ea4)1{nnvF{x-5 z%$G~OKjrkVL=ar{Qs8`~1f&~C_W507lRgry~ zY&5Re{M2-VnPI-=l8fADK0)0w&e4%$8(_1+=`8Y7g{AISwl+O6NQA9SR%nmHCTQ3j zNNTk;q1y}2NSm&p%b*C@=7byzAUluOgzwpudsL>AwFJ}ym7b9pU3w@^&^zEcnl2Nbc(KNrPSzoHSe8G}BvCte0gVF#b=L?}@z0dS&ytd%%kd_AjDEY<;LgHbKB0;n~f=kk;jKBWz*j@0G ztzy|dZ4g8OCg<$xF!YK7n57OzgQ|Sm`FEY{`$+2{x-C25tuAjkR@-nEbl;LJ zSk=;x8R&Pl6yp%o5z0twiNwM1$p;J!#?UPGYmuYMxjlvAR4jMic@H`l_E+H@(Ze)0j3VaM?i`Kz?V!dK>aE5p) zXO)il?u6hc^hx5p@3yRYOl}-dA5~w8G&yUncCh)Nny>|+Tf3RFxNyNcsA5`?Ht(}> zMWdf6o-Oa*4GzEh{01Lyf!>sQ>05*G9MuJTI*htb&UD}6QPXuQB}wao5Cj!m%(Knr zT-q>VwB_!IG);Z1egEyxRPy?Or_FAm*C?1+h7N_I$jKxzS)!|2cm~>iajx z>p<$c-c>cZz|8**%LY?uUC>XTGZh!mYCbLx*8YKCF>%01Rmna=n=;2-mPsWaC^b_Q zvb>;0o?mF(eEo!KaXv}AB6RejL{+5rE7=QQOY=R1|eX0f6 z&k_w1a+e?E_4Kn?yz6R7pPocrc<_pIwwNhFqe-~9#XV1xy757m+OXLw0vh=<#dZ%X z(GBmfQsVGp6^jRj2_&{oJYIHj$=VO^r8~t~ua&1z&$6qIPO{qfjm6!P;yZ1ylm#~R zCYHaC%d6%q9)a4@VQV*!u)5TJV^g_e+g^n)8meG|%K(~=SYo8B#cF(Q2lb0}N^g4s z%KocIjuKvU*>RWLb4yZ>nxPX&==X_nLxP1>ROxb)+d-0)O-FSnJq#i-rCc)Yi=3bj zfZ5=)RXw;q6X84@b?L!l{MoI^2^oxL?t#9$_Vb=)UGF%lE%0w*+sh|5sg0fq?|g6M z@k^{S1>W0Et33vZZ850B$3XKMGFEF%GIlpKlaF-rnZ?ZiydDZz87FuFAPlu#bd%{~ zFU+H3^HIOe1jbg&j#PMHBo z`8GZ00DS{SER~Iuoe`jv1Q&a^`&U$L-DH?zO91uPs^_c^yB#wXda~rdY5WK1Q1MLH zQ3nVwtyd^mu5;*ZhP=Xx$vrGykBdz-dAPaOV)dxd26!manCmCoE2hjN=rjPa&y+_B zK!b%e<3_zY@kEw>a}*+1riIGfbkIyN`_KL_dc>C=5i@4kd|B0~q5gVx$aH0>!3X~C zswmlPgDRAE_yj>rzLy{nj0>J5YBEO?japp(1CUvU*#WnF9CM(11aVp>cmDf(Viubj zU6!wR9j!|dk{n@T$N_~|PNYl7;`STA1H0`sdUy7fn@l1h>Mk7RxBh$?OueXxR&n>h zNww=yeQYFe8CxMcy3Qr@Q#=f$u7NhFm*NLT$jKo#3tdjwH2=l701D(PmVt3Qd*Ey)M>tfE?%!=mqxQKJZXdi z<6E`9Gg>-KZB5j%kbRG=UGPK{j=D#$(~po&kC8( zC5X9>3a75!J)2BMlrbAIS5RjnpS+l?_tKB0}oM`2vAgDK^Z%uH8P_@PFFaE z*E|oFVu`V004+{-)3Xg^?{z(Xi}M z1J_aJ(8KNr2mNjpozMSD&;q^{2!7n38Xh<5FHf3yL;*CFh*7{dA0_prK`Zoxb+K%s zC_2H%o8~@_4+G?bCP*$)$kU;7yB;Dw!^8OpX^=LKIO$v%oMy|<`!`j(ZgL+A@?|D$ z6&20STiDQPe;|a0aDaZtYs)KOXG=DJxpTNaTbADsA52arD9{8hR=K%C0-gAOjtEDG z^x*1Pd$RJ~o_w5@&F(rW`q_1c^$)!@`_w-3!q884`t3cEm%2goV#HWwMbUZX%v8j# z?H$_>>OwU}n8Yye`EPu>G@u}EqCAWKye4cs$O{exC3sHSn}%5wx7G_4E8Le5TIz8V ze{b}SETa8t&Ft?F)po7eQv7_y?Bx+v@^-#G_F(9Ct!;_}V{liDPO8UtjkSr1S4ocl z+i)}X);)kzS$zQ9C_D_3>Y<{BKkW=CG4pm!2ZQ6T;lG7H>MrGcvUR<4`V_rtsHM|w zl>DV&^I;N@p4<3>l=&Y({P3FUH>xc{1w*C0uqWBG%m-%L7XTvHho|`m?=es8qbC$1 z!JWHrx&xXCrC0$CX$d}dP(|a!*Q+TlKlqr1>-p`Nz-ccJ@V=sf-=WQBDgi*JFUfES z0~zoOWtElT(Dcprbd_<&)y&RFrg}cF(*(7xOh>J6<;|qFECnZwqE;)u(-An%LyWNM z;+w-?+3;#OVvEg)c9U&(r&$vY62w-7LTv5(cvZ{izqkQhHCcZOl^pn;=XZ>!syv?+Sd2oO6{&dCRXR$-1voG6STs8i8HA zW`I<*^8{P^Qosk5H zvvBq8Wwqpyvvx+|?t24*=`?PyjT3?ycRo-y`OCAGd;p~ipcLtQj>_jz03OvIukz%_ zhCud&v_G}RKGPo8kD-+V?On`nOVmr5hF%tQj6D8}Z?K9=l?0lE8g#eFTAfnm4rl-1 z=$LHs^L}(iE;h63HhN|06495NqRDSmY&L$t6H?&8cNixxVa531P%iSduK36Z^|&L-Muv& zHHTa$8O_TtE0i{RF^PkdSJx&fR$@}ZogEpTW}fN|C=xZ4OmRnht=mU_eda&@;4AC})i?F&DU)Y#~@q(CLX79Tk4 z9r~q5-<=37IcFsjmBU$<&PNQ+Ku0v?TLO1#yh3cFR1o^6G7R_6NbeF1T8Cwsk7eii zN_{FLKMY~#fy3fjj(lO$A^{3YQKU9Iv*`^eEzs?g8Wvw!s2akeak8iG@#vmnOg6)w zDQviqBH!I%@L4M zoUStoFa2mLjGz3JKO$s7hw>}xw5pXNXlKiuc6dKNW1 zk2t9Fve}IZg8-uMN8rIJi%5GB*uw&ekb~ScAtn1GVXeU0IC7b=h$aoqGZu>$n8=`u zVbCGeIw-(ZLy>?Edwtg=m~6j}h2I9XN1~t#s<9H8p3i@hLYGCfy;fz%3gA{hp`%e0 zo9>>vxGA=Ci#L2R;zJ!mo`H#7w`8OtHzQ>Ee!d+H3MdkoQIt>2QVjvbPOWL>i}JbO zFMybayK7C-0{eVXoQOrnn#2?e;1OCPF-ptqgl6Qi1b$c%GEQ9; zrC~v}-K{OC6zYx|6mZG+x1tHUSE9?=I(|$1(N;sqfOSwq!JUhWv}ffmo*t=m1)q7l zU5YwpOKOOdZF`mM$%G=i@$g0J`AnoLs{>n|dw_jhYyNvBqr`@YAZCvadl?Oloh0fB z$p}tZ;33P4n7&ErVo^)s*D;0v(<=nNJLaBYUA=-3<0fv7eR=`GfTH~~3#0z#2<%bi zs>)UE?8{<)!Hw8NAul|kc8vA`%t*_p^~VBWm)A8_RpZT=(mgrNwc(90zHONfn{q%` zj5+>mT!(>}y2{HcriUU66js@pI_abr4c%nhD43_={#FpUkcX#Ux&+57Z!dKD8p*j& zeQw0zXGh(X{V+eNgbYY3H&7Us{~upW2%l7&)nt9rOUB{Rxj)H%=R_Fw2 zmn!kuZZZ0YDP zCLxz8mBHC{BFH70S+9P=M54E~Lkt?|iKZSTTI)VC0%lY_{tW48V0~_~7{cuORWIL! z5B@z%^|_qfq{q(!ba}0vX{B3*2xeDy3FLfav;LZ-E!hm5+2cqy5E8m^Jx&U9|i z7M72_<*}M~IXkcY6>&rRFr&o@Qq7~A|9YmU8=Tz&m38SC{|n;qUl^@udJ{e$JkSS& zvW)Smy&#KNi>xEAgS6?b#|29xl9k2H&;@U>X){?Cbo4KqHi)Lp7{#jN+M%-gGdW0smx0BQj*inTgqG)PZCr85`GGRY zC<=VlgvkOp;3fl`jg109GE!HfulDwsg@qi{Kg`cn7!FaJQ6=}mtlcCGx z7!%Kkuz+5S2M0gCpdlwh#d++i3#n2VU!rp{%9R>64LhBddCBwgnn*7;hK9*^gYHKZtl>VY;vGX1L}B zFUgOp@K&wUj?gB%ggTRYntS+bt}P!YB-oc05RUCZHf8!dN3sc1I&S6d%qId4C1zd| zSKXTd*6@B1aw8#}G>`>!^-?jD_~pTOQ*sWygO=lVNsNiTtOScfkreq_9fbJI@t&wi zgd%fK-D#@e@YkF0_X}z1{_j3V%eGF=)VgK=&I}l9=q&39=#B=K$-ccJLARYsty`84 z0G4i{;hmN>%|t|Rc@tS{YnqZkJ{7lrANT@{2+T0eUigKgE_Z<$*vWwfbi+)U8lfgo zH|j&>1l+%NVKX~`2Pb6Gxf}i=OWRtC_eE92uJhA<<518v<~qM zNGfg@f5bu6z~l%CllO{VNpe)v#T_5#a;eiE{{U<;aA8&cr zWJ?WU5~{{4GLG)EQh>o%648XbOiLiVzz9ouTGtmqN9 zsM)+g;bq>Trm!yaF2DoKxzfGWK?JLvX7wrY?Uz`rc2sl{soZ3sYFlju%+AILWwivf z@P@jV*~AnrR@cl_#u%g6neskmjU0Bx45t`PL8Za%F9waW!_;v3AyIb77}RoKUTfk4 zmWxk-H<#@VzZpP16~D~yJy>!me$tE+xI^H8Od_mMjbVOZIDUaQ%viH5rvS~hVBo%Y zH!!NmAT%l*Sr&;<7!R74V|4n3l;^2J#-BY!?f8agvRw_!IlTCa1%n}Et(XYzYzxRn zU8~$pqG0>YD$e7OMr^O{6Dx7KLZhVfsLT|~uf%9yj^{G-`-s2X1r%RUvkHpAl|xiV z7^Y;k_?3qk?l+OQ>HyRO``i#lQe~=h@d#2{%#|=PNJke;d2RWMvZ+O_4S~lQhP+vc zGu!wjvLI{O`OSyK3DP=Tv`Uo9^ZuebEm`;f094N5tavXjIGYy*T(F%u2w8wkrg2^_ z0@+wI#K|Av@8J03Ei+PY6u4)lEz< z!VPUyWz9!ms?|V87j^sn#g$f+HmQgZF}swurcMY_*6&Ozn?B$I?)`3I71qWfC?mz* zC0lnxsPuvH2Z=t>B{1wT%i*U7a^Y2P23XP^Gc~YH2p(o!D_bQam5Ex_5!I2qw^3Ub z2b$b#Xw(>TTqc3|ltk3G%XyhY9bSGTvQFxtd2{Xn1RoO9)vL%mSOREQUe9k478Tw+ z#?=eJu(+w99Whw>fi^mq<6}uvelfW~jDEWrWm-1H-O|C#w;qP#9?z0NL z&@R6sC{k;gou!=o#Y&V{nR382 zALcc3EF0cGeMCbGd!Y*;cuVbN0k~$mY?<8Eq%of{wU9bss%oE5S!JN$6apz=BWjW5 z`enTRp@IfQ&e)fVbJRmP+%_)!Ooo$d9rBi1vVk zMS~vY;^bBu$+w6gc14WB>P6D(EY-j;p}qS50BSm=yJGl>#X5i(Ri)xBOLXFziUnUa z)Eo3sbnz*o&e_Nz?g}a#tOAn9d4)ol9lMH!M7&J`9Mt5SbQLXi1O27(n4pS);ZD+N6{v|rvhSpe$j`I~QR@a$Y zg%!Y&Ay?T?a1lz%5Z|a&V;}wf#cZJmFv6(}S@81>#_ha>!v{9qx_EvXejza6FJWl# z%a@8;h~SSLOPBB&ZHuoF$-YTbTwb0Tm8#-cm>a#tvvpWbVM~Jer_8G83$~y_Ta1t{ znXSSMa-R{{Q^D?8y>kJK8k9{f!COoB;wnnLd10`!opUQ-w3L}+aREz?K4OZ{_TmIs zSXLt)tJ(yVHqFD}2Q?JwUN2DC1^q^bZ2sWDConX#E0PceS*jwCsI9XB1;;RNF#wD* z;3A7$_H`8MiDndhY6Mn((@Sm_q2Zi`XDB+Q>_Yxp3ki@_a7vgQMZ`_O?geTs%M7yy zD5Wx%V%1?L>@ecD_NHLCP!BD)2m)Vlnv&IFBqT7Ya^mr?H}3wXf^{xx>!KOXy`c4} zYz!v};_%}-rB?BWY}=WGQzS{yXsk$SFnJ;d_)qx zuA&y3>Y|jTV6IS?(yY|6Wn`$Cv+XpBzT;VVgLpG6EpFxem5%cT_!uo0^A;+}VBU~I z!e)h*RlaTE{KV)uWM23s@*ux#HBWk+HpLCpFjjQ#KY8jag8VS~)y&Cj;h9BW#LM)j z5s2ScnDTU2+Y>PrYOje;x>JZ(n3s)?ArhR9B`(aSi?qbpS7OYh5+;GQU*$2ZSic?4 z1HbArl-mx;d`hT%3v0$ouQM}86P&~zQDVZFe((vQqAkt7Kr;~T=9a+DE-GThOpHDc z*i2iq`k!ll&_|)pWtmx6C4n-mtzvGixrHuYw8X4mBxui4tIi;+9^`b605*4f zmKCV;h`F0B%^EpFL5XS<i!dp)B?vne8#9S6vW*(`CxXOnfDgLFMz6mTv2+= z@*scqW?E3rVGTIFuo`mRJ;wku6`Riz)KMDs0;@H831!;0xF`j7xaP|=QN*QKQ_Mx( zRc0}4g;n^7qGtEzS}Vq}D1|9snQRnL-NujkGqBI`D2a06fmC}hRJ2bHcLE%++Rq|E0nvB)m~%O)mIhF$ZG1EqxUKjTiuB(8mqrV<`;#TxrflQXs`+@+7se>3`Ck6?U z+|(-qk1cpS>JR~P);r_nn}z3@$mYDo0{0ZP)t)0ocYTcAqOJ<_cFYLo$k?p^01@cC zVl1vb6C-xY0l&y6O zt6ll#V5srpb4ogxXm3#AS8g-7O7U}uYU$lT2NH#c$t%Alv-3Gfi#kUrv^nk1^A;Nm z)LzMEkBR+#;kOyw*0qeq46#+>Z3U{K`F9;a&{>P71W4rHdz5X3`w(n3ajA8=Q1O~8 zyaxQt1e?XYgEbiTredE=#&H*AWDP<#W>G*?1G-h>?uAw>Jo6Ql*tXrwVE!UfR(ZZ7 zYc1Ab7n0Twa7Ed*uB9~!G{JTUIXuC>6U0WU>FH-moi~o4Y@zYFmV#d*FPVXeDYuP5 z`P{b(H8n*FtV3YrY2M+gQO!gZZuypluNaj9k>EIj6m8cLDS2~I(?-ndDrE^^arS{u z*Aeip9WQ3D0tn@p8#@-sS3&)I?3+ne!INu36fb@=9oj>@H>;!MNJy zQ04(D7lRLBpbfEVP*KpZRsGOtG@)XYWH3GqADD_plN=A2_yDxNSN)H|gACh1n;7I7 z%zFpOhufZ0)YMwJ2?`{q+dSEvLA?9&AmSzXE$TUAV=TkwLLc+7r_ z+(MT8*D+fm>|a^wwMOv9rYmN1KgDDcDv7EDmGe=r-^EGlz^{{Y0Y zc#c zQ2+{+i)CsA1;KDSRIr##&m;oYQ8=JxqA+}l^m&38CpjKp#ATT+F77r`zvQ*xS82>c zKjkt}M|D!$b8@3deKEy{xlToc7lXHOQl%auZCaGW;#F<|wWH=fwyV2Qk5Z*<75gA; zox;V8z^73(g$kuW_vo=*y{{S%rJ>&BLxF%okF`7=>9j>3xiw*D;|N3?wer7=S~2P2OH*dZetTLlUj5Y-%k+(n4WYxR%1dFcK74+@Z8OyC>Y%!A1&d1aKj4!Jh z%ZCK0T6{|JP}kA7D5#V*=C$&5?ISa4!steqv*pSUz+Sud&OEYZf|DBV>>64$ZCuD>6dh9cC) z=urv|`j(G&?6+UUO1uNEBc)YwqVN)sg=5~ifb!fRT?vDj`L@6Qz(B<-jlb-~wpjHR zM7qH)6foB$Zm-Qp9)?{5KNf!bh%L7;Xbe7M0-f#(&0^*u<_#7ATjmu)v(%_rywoF$ zm&5K{PyzFA`{o!?sMX^4`Invm1F$jtLnfv|9cA?`$;u*&A=`psy_3rWCz}3#)mVyh znvURN15vcFFbEwVsHnhODb2L>>VNedh*@9UYpC02KhyzcmywNN<0r(j;HP&Rk(ax^ zVuW6K;st?J3L{!q@WH1i^A(I#bDQH+b&}?8+l{RrC6=r&m;j(x7kP;&^F+38f##!s zEdo6b?p%Xy3B&-#j^Lm`e&1)Nzf7j$6;t~j|NfSP`ttSoI1QLR#{=>R>R|>h}twvSltBC4%0Fv1R3*lI0 zzO*rByDgZ@J9%`Dy_K8*&jH>NdEHM&kQ}Zuz_fTSx15vtO zt1_O;+Q$iXYUl1?j>##n4{;VDjeRfiF3yUd5xkHfoh*<_tg@@QWtDCslRqq4SyA%G zOD-Bm#GotZaZn{WF$JeyKF}(Hjbi1|pc-WbZ)_U?w{sDxEY}gx<0a_gHCOz?5mYNs z>ImZwPk4$J5iGATs@5Q3VCv%6h@r1ETNRIGS+FFGrhxHu)H;}?ihI)P{s&zzr-BQkKP=O5w#9yB8Z z!>PxaxWFB~!faaZGt^r7#JxJJEz6@7q3Tv#hQR*-f36!w`VMg&8PGhyaq@oYaYzgA z%&!+Y+(mfNWf#P)0kw4vmoM7}JAu~ig;3JULbrDi{h)Z(pW`re9_msvqeBy6jqRBL zJ1bsbh^ovsYSbuzTwOfND@A-%EYp01S`62BQKg(BVL;X1E+UHA!NjUJek$M%X{}q# zK%&#ja?HAeYl16KMfsG}juuOI4P9s7#LOtw zI)W4fX4!Q~W$`dCF69x7jI}b-n`H}K6?%cRVdhjVhWok5QbJmCRKa#xETY|&9Vk(l z((V`|{{T{hl6gm#(+RWGEkOY2h6P;?#I~9YuHYzfC?Uk4$qKe1)F@!$VU)cyn*cjy zfikr|-RwJ=g2gWYPVQnJsa%KNQQ5qUQp;5X02O3YW>;n6F|a}|Dp=C*{KuiDEem?o z`DYgdCBYBBFoboUM*jdZiy3PAORBu@7X&#HsGFmQ?J3x=52*Z=)67!d1W+==#6QhS z5C}RU-^4>c?=fzbh6m31C^D2N@=!e+^2Gp927;;IYzvsK?94y_H5{PJsG{#@ycm58 z_=;_LS~#03n%%*!bFq!4{6N3ga*(U_6s%Pj8n44?%O+{~zO?A(R!Bv(rn<>|nfwJ;hnSf<)@lvuSp-bQT<@f>GImf&t2&><2 zDiY32yp0sYxZS&3VbeaP%cqG-B$V@|on=lwNZl+3+A52EROE9IxuPS&SxaiN+#(T0 z0+#fh4x{>K4duvnU4@mM^-DSNw=FtVaCi@^>sE-cc>J=H(Q=?khwS znZiA~eLzMukC27RzmhisJ8|Lv%+Hrpys-c`DO*srdN&4_d4Q2{!kN5 zOPcOJtXK;!HbaZxMhN5Xe?nDVW$G=D3w^u(@VLr8u5MTZb{{2dEZs z3@5}x)1sxDP-i-eNQ!eF&)NR~c$cIFVZ`Eu=H<>put%(=FHi-img-xQb6z2A3=8Dfn%tGqQt6amdP~@mc;$mgrQl=M&QQxUp z?hm1HrLnnyA$7j>(=n=8W&~japHPMTk@_OPh>R@lvQ&dq=jKrj6}57lexb94%30=D zXjaK*!>NFnnh8e)3CATL#AVA-w|O4AwxJsljOH43bjph;7Q!tl{6tG>gH<`(isB7A zN&|qwN_i0v78QaB^mAO#1kAx1)G!Vhz~jbcySuqjy$#LHo)z&6Lj?Uqu&WnS8CMNe zRT@0SV+7c3U3h>MtK8)>=3ZE5#MrFenMH8;bfN4$K z9ba=eZhm7_v4$&TsVi*FH)x~aV*c`BD#FVw{37`8vNfepqvSxM?#LG zfi|Bo|14YzI^_b+=VG#q+^X@d|K|%ph>rvc#Eck!{ zII2_(6@9_0j=pA0(!fc6e9Y<_x^WpOFL#+;MK-I#!~oFk6NsTzZReQi*4r#oEGd5j zGdU`c)YaSfE3P8WxSV+|UmFM#<^7aU!`7(1_&?cN;3{sDs3$ z#eD=Bs8|(0kbk(C489J0^{5$T!5z6fsG?-I+jlp#QKDewzAK^P~k@QI1k*S z1Y`&I{{6}_(YBuvVIxf`1_Ei$#xms~RYF%c+%}AyjJ*r(EMaf&1n&>#TolDCrZ5Uy z69`wydy1+ud(5|Hd6Xf^<|7EzTvZqGJr%`q0l-$+IW1CucTBA4IN2F>K+Fzkg$I@*bzAMv?g7<3L&9H3ZIdJ<$P&85diMpR z?zI$*qm#Jld?+q7ETErgh=$xwZHvD3I97!)#*Xy(jVLCSb+X{|5|wG66FqF=TG>#( zMHR^urG^Y`26K!aU^&#-xpxR97Z<6IY)QId2tvg4kv5pZ9XgOHkAbY<5u^3fY*W*Ku3~qd1;I+runFjJoO| zS5d-+nG~=!eZzNHd0+;a7QH@ZGmzZh)OAaiftNXskYkvGPueGVmnU#m@!Z%{E0`E+ z*ecwD{_MHNI3=xa%HN4k1_jahxabSgjmIk6rwkvMM}fd780xqUkVG4E>RohYh6*cu z%R`Xw&UWxWcv&wOsLF;&a7r$c=5z(E?r^X-a6o$Ci~wP=P8oF=4K*27%$4&AE5F2` zPAgLqwi4hrT?>{$4XNaZ#1$yZ9snb5>Nq;W@C2ygLpf9#nQN>}(ok}Fh~P7IEZQ%u zT*@lASQ;m+wk(o=6zhBBd^B@_WJHDFk6#6^PS6uOO?wF+*J{<9k{ zLf9&@n;v4;Qc(3Osw{VlfUq}I5KILMlqD!P=2(Ub=3rNHkCb&wVJT5_AbVP)(6H%_ zd1J4cUd}7i9xIt)8?`ijiD*O5pDgZp!xJN76TH6Vrm2Hrj#eC{qp3nQdYOg5ODbA7 z<^o-Z?nF}A;FQ=XMC?Q;tO{=lBTC$JnaSPE=eRZESmY`qvGX_P zE9Cf>+6?-gFtONtl@g&AThy@_Ji=KHS^offju#TVo>_XbQOA3jeqgUNsW2Tt#YJ3h zP-loD#mvfEu^eG(!MFex+_j<^p|0iRrHZ&#AeQE$*Oi2=f(sZ5^zM}Yp&CCZtpQJ+ z#mXlk=K;#_MgV&}4tOrG54c4Ut{5nZYZB({t|RKVmqTxhjqe=J;7XuLrme+;9dlG`*_@U9Hx?F>rXz#x@3(9&7u6E8*mgRKw(-;$pmm2`s&0 z^AlQH>6o!X5mK;Qx7UzmQN?UBK^2`;Kvv706DV>ea8OG*ocU8;`o3zxyc-CTe zeX{psUS^anolC16kVKsZWt5|B5#FAqkOJGb6sw|9>bE@sTyqRodLflg4B{v&2ksOW zJsXBZG07QWlda4{B5qfDnc5sap}v$z8b(v|s zkg{@dFr^uKOUtQXC*mZx;y(pKgwe^UmZ!uPjZx2;nM`*L(aU5gL!jbiOzvyV`pi!N z#J78SgFzNp4_C|-!ZoLND$MTs+zyJ&rJ(zb^rgf{Mz;$Fv2oJsqiYCRrtn!~`w(hrxz+PdbxP}z~ zEeyW+{6QQ8j;aRLm&kV?Q3fsqN}M@`*yV=ot-{zP)^epg?Kc_)n;d>+7aY?9gaaU6 zpbE=;)DG@blJYX`U9+gq7twl;gO+nKw6*sF2Gn_tuIem}_C<8nFLBE@x*&l=c+3%_ zUCPB*)Iku#R}euQ<~eRUt|Jz=GwCi1mR!rLo`Z8ibbqlaYYV`!=ohM%4u7Q2Ys$M; zDJdwRmJC#=;}J$pO2~yozyr)c7kml3GreXY(R9S&mBT#`ZXg@4dV#&`j?c&u)cM_y z)TPZB1_Lw8NZ(SPsqShz>_sCnN1GTikzH~*lsOJP$D{#7fphajW`(w^mAJyRtBF9) zYcj;QYX&)%u;S^$LTMCc-4lqwEQTx$u7V`#9I_$}CDcv<90WCsLTCnQn2ZQU$tgA+ zO=z?}ceQZ?sOD53Yl_J}U=(eMk(~Y`%GwEZbGVolX6uL?v>Ra4Wntz8tqWfSqE(hl zus5gy(7CW~v0m>Kw|``VO@fxFH3ph*xR?VFDV#(ys<)U$r=~F@Z&9hU z5p68bC{Bu=5!`ufioX%4>R?=>;s)-YnaWrlcOA+H`MOaC zDR_u%A)VC8U+y;xa>9o!489_&yj;%((J&G{)~Zqco|wq-Eh_##(W6niy~0qPVpys~ z$QTBU$2mL1>-;12D~i}ha%rqb0m;EoUPmNmm=21K3JHrKR#Vw4_exWAS>F?RHK>g+p6QHbTJ2Jmvl%5N{skO@ZNOl`(WY#@$KWuz>W~ z{7Rrb=FGu^+LwlZpkoZ<_Y?3acvT<7E3mGjf?X9dX_y>Cx~ZE4 zB(>CP5OyXbe9+1zoK~ftIl9acG9#$|Zf` zmmzQm2bp@+LljC3*OsPWvpFBn9BKfK?LXbcA*X4@`-6x~Cp()!EGg<)V4;|>!-LtN znG5Y0hT;fz> ztNVpt%mVwZE_}qyOvkIo6N(u57CwmYX}%%`O?7c?9A-ODlv`bnCL7dI4?I)@1%DGZ z3^DB-;>Wks6QMLWG;6EsHgd5CZdXBr}W${SKp5GW%dtg%Yg<~2k4hN|woOKUC7 z-EZ7#ZvOGL)?d^Nuq_epD6v+<)K6pyrFe)Li@V0+;)!0L1gf4Pb^Dj}1;D%9#bz{m zj%Jqx{?kx5|2zfn9@ZGMJa8TERob~OMfccE&sg@2Uygzwg6pF;U0q8(TIl&moZLm}$5SSa1^& zE;mZusc)LI2A|0jfmmt7BR;;-imEo70lS(-K#4(LVC+C3d=j9?_YB@eMI`rE zr$jItF*cYR9oASCa!hrIkyi0|gh+=c20!er1azVXjbP8XE#$bwx;`@$6UjBMes?g} z2BNq(`IjA?VqJkxFH*;y(H)%Y7RwxufYMs9^GmoI(Vfz0DI)9n1}7U=MMQk6TtGFgZ5$D)scle$oJOV<=ZKqg>}oD*{OdB2qxy-l zn%rtuy&{EH!k8}Ac$U?p3WgRtmqA6yxGJvU75YIIS-n{=P7U~jWmdS9sL}bG6teV+ zmg@B{pkCu;HsPqsfnv*L#d^dHTT}auT{?r5IGJ(zWxIE&NMV$DnKS#9wzVycVra&3 z4Pl7eTbJFk<>d^p&jABMs`<84ZH+F;{6!)aE0zA(lMc*k`;D-alE+z^FYzCY2zD+| zurON)P(WLWPKn;7cTqhKBG90Lre5QoV^gTO#cNc?q)d7GKvJBL2T?Le!H$=fIr9(| z6|0*oSYtjy*if}PbIfUe8;zq?@f!uUvo8bsT+Pun3(y|pqf|f@!K01FgVW|ry&i-vBY z_yh-OntWnqr2_~cOm@nQwqnyu-f9|Z)og0V4|vyC16v!kfyyYtzS)&`VqpOLo?@$Q zfvJOZuTiVB?9^siS}x(V3h@+7G(@E}7`MxXg-1K?D~Lown&UE;gFm>bZgDM0Vc@tV z=yQl@ej13?uNRSKnp(7#4C7&$N(5!a~`2afKbeV`bP6zcLdPt8Gp|*@(+p* z`R}H^kSieb!r6^QHmOl6hCKk*POj2R{k5DEQEv&I9#@io?AnP<>paTP>8#{@~k zSehkDR;p61l&)r5sDcZ2M7>7fjZ{T5%&Xi-X=7Yg|%{xp@ z*u+~c>gsfQ=m}u0?48lhgW+Q>(;w-0l+}H(lL4ppa z_-9}0EoKF%6GmV*%MWlWWxA9NK=qlqQj|(o3Bbxbnrazq=m!3S!eaps2o9h?xm7Ln zFv|w*XF5BE(c2dQ!_)%2t1W4oC8uh%TPo2zJ7w!I$yt?DIO++u|X^d{4ah=t4y^DzTf;vD;&vC2PlaWV?)e8kRpiA=800ae2`87!LI z8I#wkg-aFPPJZzWpAyWb1qse-XHDI*s)1|^31_$nenrgi)V5=YZ6Gl`P@o_n8AurS5h+m! zsDz{ng#jqJ)|6UADiQ|~2nY&NWP^Y z=GfoNR2lVO2 z6m&+2aRHFc@isxRZC7#1&R_#wB4x`lwrXrdCEnvL7^q6aCU*o3_=VbqMkNhO5nVt$ wKpILcj-V)js1>P1Lda?XP~+)J)HMLPN~z2RY67P)Dhz!OpoHO^!co-!*$upTsQ>@~ literal 0 HcmV?d00001 diff --git a/blog/2021-08-26-welcome/index.mdx b/blog/2021-08-26-welcome/index.mdx new file mode 100644 index 0000000..a21bccd --- /dev/null +++ b/blog/2021-08-26-welcome/index.mdx @@ -0,0 +1,29 @@ +--- +slug: welcome +title: Welcome +authors: [slorber, yangshun] +tags: [facebook, hello, docusaurus] +--- + +[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). + +Here are a few tips you might find useful. + +{/* truncate */} + +Simply add Markdown files (or folders) to the `blog` directory. + +Regular blog authors can be added to `authors.yml`. + +The blog post date can be extracted from filenames, such as: + +- `2019-05-30-welcome.md` +- `2019-05-30-welcome/index.md` + +A blog post folder can be convenient to co-locate blog post images: + +![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) + +The blog supports tags as well! + +**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/blog/authors.yml b/blog/authors.yml new file mode 100644 index 0000000..0fd3987 --- /dev/null +++ b/blog/authors.yml @@ -0,0 +1,25 @@ +yangshun: + name: Yangshun Tay + title: Ex-Meta Staff Engineer, Co-founder GreatFrontEnd + url: https://linkedin.com/in/yangshun + image_url: https://github.com/yangshun.png + page: true + socials: + x: yangshunz + linkedin: yangshun + github: yangshun + newsletter: https://www.greatfrontend.com + +slorber: + name: Sébastien Lorber + title: Docusaurus maintainer + url: https://sebastienlorber.com + image_url: https://github.com/slorber.png + page: + # customize the url of the author page at /blog/authors/ + permalink: '/all-sebastien-lorber-articles' + socials: + x: sebastienlorber + linkedin: sebastienlorber + github: slorber + newsletter: https://thisweekinreact.com diff --git a/blog/tags.yml b/blog/tags.yml new file mode 100644 index 0000000..bfaa778 --- /dev/null +++ b/blog/tags.yml @@ -0,0 +1,19 @@ +facebook: + label: Facebook + permalink: /facebook + description: Facebook tag description + +hello: + label: Hello + permalink: /hello + description: Hello tag description + +docusaurus: + label: Docusaurus + permalink: /docusaurus + description: Docusaurus tag description + +hola: + label: Hola + permalink: /hola + description: Hola tag description diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts deleted file mode 100644 index 5603ea7..0000000 --- a/docs/.vitepress/config.mts +++ /dev/null @@ -1,154 +0,0 @@ -import {DefaultTheme, defineConfig } from 'vitepress' - -export default defineConfig({ - title: "RusherHack Documentation", - base: "/documentation", - head: [ - ['link', { rel: 'icon', href: 'rh-head_256x256.png' }] - ], - description: "Documentation for all things related to RusherHack.", - themeConfig: { - logo: 'rh-head_256x256.png', - search: { - provider: 'local' - }, - nav: [ - { text: 'Guide', link: '/guide/' }, - { text: 'Features', link: '/features/' }, - { text: 'API', link: '/api/' }, - ], - sidebar: { - '/': { base: '/', items: sidebarBase() }, - '/guide/': { base: '/guide/', items: sidebarGuide() }, - '/features/': { base: '/features/', items: sidebarFeatures() }, - '/api/': { base: '/api/', items: sidebarAPI() }, - }, - socialLinks: [ - { icon: { - svg: "Site" //replace with an icon - }, link: 'https://rusherhack.org/' - }, - { icon: 'github', link: 'https://github.com/RusherDevelopment' }, - { icon: 'youtube', link: 'https://www.youtube.com/@RusherDevelopment' } - ], - footer: { - copyright: '© 2024 Rusher Development LLC - All Rights Reserved', - message: 'RusherHack and Rusher Development LLC are not affiliated with Mojang AB.' - } - } -}) - -function sidebarBase(): DefaultTheme.SidebarItem[] { - return [ - { - text: 'Guide', - link: 'guide' - }, - { - text: 'Features', - link: 'features' - }, - { - text: 'API', - link: 'api' - } - ] -} - -function sidebarGuide(): DefaultTheme.SidebarItem[] { - return [ - { - text: 'Introduction', - collapsed: false, - items: [ - { text: 'Account', link: 'introduction/account' }, - { text: 'Installation', link: 'introduction/installation' } - ] - }, - { - text: 'Help', //will have info about help related things; opening help ticket, emailing, etc - collapsed: false, - items: [ - { text: 'Getting Help', link: 'help/' }, - { text: 'HWID', link: 'help/hwid' } - ] - } - ] -} - -function sidebarFeatures(): DefaultTheme.SidebarItem[] { - return [ - { - text: 'Modules', link: 'modules/', - collapsed: false, - items: [ - { - text: 'Client', - collapsed: false, - items: [ - { text: 'ClickGUI', link: 'modules/features/clickgui' } //just an example, in future this should be automatically generated - ] - }, - { - text: 'Movement', - collapsed: true, - items: [ - { text: 'Velocity', link: 'modules/movement/velocity' } //just an example, in future this should be automatically generated - ] - } - ] - }, - { - text: 'HUD Elements', link: 'hud/', - collapsed: true, - items: [ - ] - }, - { - text: 'Commands', link: 'commands/', - collapsed: true, - items: [ - ] - }, - { - text: 'Windows', link: 'windows/', - collapsed: true, - items: [ - ] - } - ] -} - -function sidebarAPI(): DefaultTheme.SidebarItem[] { - return [ - { - text: 'Information', - collapsed: false, - items: [ - { text: 'Getting Started', link: 'index' } - ] - }, - { - text: 'org.rusherhack.client.api', - collapsed: true, - items: [ - { text: 'Globals', link: 'features/globals' }, - { text: 'IRusherHack', link: 'features/irusherhack' }, - { - text: 'utils', - collapsed: true, - items: [ - { text: 'BufferUtils', link: 'features/bufferutils' }, - ] - } - ] - }, - { - text: 'Core', - collapsed: true, - items: [ - - ] - } - ] -} diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts deleted file mode 100644 index 7f29bd8..0000000 --- a/docs/.vitepress/theme/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { h } from 'vue' -import type { Theme } from 'vitepress' -import DefaultTheme from 'vitepress/theme' -import './style.css' - -export default { - extends: DefaultTheme, - Layout: () => { - return h(DefaultTheme.Layout, null, { - // https://vitepress.dev/guide/extending-default-theme#layout-slots - }) - }, - enhanceApp({ app, router, siteData }) { - // ... - } -} satisfies Theme diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css deleted file mode 100644 index d63aee8..0000000 --- a/docs/.vitepress/theme/style.css +++ /dev/null @@ -1,139 +0,0 @@ -/** - * Customize default theme styling by overriding CSS variables: - * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css - */ - -/** - * Colors - * - * Each colors have exact same color scale system with 3 levels of solid - * colors with different brightness, and 1 soft color. - * - * - `XXX-1`: The most solid color used mainly for colored text. It must - * satisfy the contrast ratio against when used on top of `XXX-soft`. - * - * - `XXX-2`: The color used mainly for hover state of the button. - * - * - `XXX-3`: The color for solid background, such as bg color of the button. - * It must satisfy the contrast ratio with pure white (#ffffff) text on - * top of it. - * - * - `XXX-soft`: The color used for subtle background such as custom container - * or badges. It must satisfy the contrast ratio when putting `XXX-1` colors - * on top of it. - * - * The soft color must be semi transparent alpha channel. This is crucial - * because it allows adding multiple "soft" colors on top of each other - * to create a accent, such as when having inline code block inside - * custom containers. - * - * - `default`: The color used purely for subtle indication without any - * special meanings attched to it such as bg color for menu hover state. - * - * - `brand`: Used for primary brand colors, such as link text, button with - * brand theme, etc. - * - * - `tip`: Used to indicate useful information. The default theme uses the - * brand color for this by default. - * - * - `warning`: Used to indicate warning to the users. Used in custom - * container, badges, etc. - * - * - `danger`: Used to show error, or dangerous message to the users. Used - * in custom container, badges, etc. - * -------------------------------------------------------------------------- */ - - :root { - --vp-c-default-1: var(--vp-c-gray-1); - --vp-c-default-2: var(--vp-c-gray-2); - --vp-c-default-3: var(--vp-c-gray-3); - --vp-c-default-soft: var(--vp-c-gray-soft); - - --vp-c-brand-1: var(--vp-c-indigo-1); - --vp-c-brand-2: var(--vp-c-indigo-2); - --vp-c-brand-3: var(--vp-c-indigo-3); - --vp-c-brand-soft: var(--vp-c-indigo-soft); - - --vp-c-tip-1: var(--vp-c-brand-1); - --vp-c-tip-2: var(--vp-c-brand-2); - --vp-c-tip-3: var(--vp-c-brand-3); - --vp-c-tip-soft: var(--vp-c-brand-soft); - - --vp-c-warning-1: var(--vp-c-yellow-1); - --vp-c-warning-2: var(--vp-c-yellow-2); - --vp-c-warning-3: var(--vp-c-yellow-3); - --vp-c-warning-soft: var(--vp-c-yellow-soft); - - --vp-c-danger-1: var(--vp-c-red-1); - --vp-c-danger-2: var(--vp-c-red-2); - --vp-c-danger-3: var(--vp-c-red-3); - --vp-c-danger-soft: var(--vp-c-red-soft); -} - -/** - * Component: Button - * -------------------------------------------------------------------------- */ - -:root { - --vp-button-brand-border: transparent; - --vp-button-brand-text: var(--vp-c-white); - --vp-button-brand-bg: var(--vp-c-brand-3); - --vp-button-brand-hover-border: transparent; - --vp-button-brand-hover-text: var(--vp-c-white); - --vp-button-brand-hover-bg: var(--vp-c-brand-2); - --vp-button-brand-active-border: transparent; - --vp-button-brand-active-text: var(--vp-c-white); - --vp-button-brand-active-bg: var(--vp-c-brand-1); -} - -/** - * Component: Home - * -------------------------------------------------------------------------- */ - -:root { - --vp-home-hero-name-color: transparent; - --vp-home-hero-name-background: -webkit-linear-gradient( - 120deg, - #bd34fe 30%, - #41d1ff - ); - - --vp-home-hero-image-background-image: linear-gradient( - -45deg, - #bd34fe 50%, - #47caff 50% - ); - --vp-home-hero-image-filter: blur(44px); -} - -@media (min-width: 640px) { - :root { - --vp-home-hero-image-filter: blur(56px); - } -} - -@media (min-width: 960px) { - :root { - --vp-home-hero-image-filter: blur(68px); - } -} - -/** - * Component: Custom Block - * -------------------------------------------------------------------------- */ - -:root { - --vp-custom-block-tip-border: transparent; - --vp-custom-block-tip-text: var(--vp-c-text-1); - --vp-custom-block-tip-bg: var(--vp-c-brand-soft); - --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft); -} - -/** - * Component: Algolia - * -------------------------------------------------------------------------- */ - -.DocSearch { - --docsearch-primary-color: var(--vp-c-brand-1) !important; -} - diff --git a/docs/api/features/globals.md b/docs/api/features/globals.md deleted file mode 100644 index 9a80425..0000000 --- a/docs/api/features/globals.md +++ /dev/null @@ -1,20 +0,0 @@ -org.rusherhack.client.api.Globals - -# Globals - -```java -public interface Globals { - Minecraft mc = Minecraft.getInstance(); -} -``` - ---- - -### Fields - ---- - -#### `mc` - -- **Type:** `Minecraft` -- **Description:** The Minecraft instance \ No newline at end of file diff --git a/docs/api/features/irusherhack.md b/docs/api/features/irusherhack.md deleted file mode 100644 index 70d7af8..0000000 --- a/docs/api/features/irusherhack.md +++ /dev/null @@ -1,161 +0,0 @@ -org.rusherhack.client.api.IRusherHack - -# IRusherHack - -```java -public interface IRusherHack { - IEventBus getEventBus(); - IFeatureManager getModuleManager(); - ICommandManager getCommandManager(); - IHudManager getHudManager(); - IWindowManager getWindowManager(); - IThemeManager getThemeManager(); - IBindManager getBindManager(); - IRelationManager getRelationManager(); - IRotationManager getRotationManager(); - INotificationManager getNotificationManager(); - IChunkProcessor getChunkProcessor(); - IServerState getServerState(); - IInteractions interactions(); - ILogger createLogger(String name); - String getVersion(); - Path getConfigPath(); - IRenderer2D getRenderer2D(); - IRenderer3D getRenderer3D(); - Fonts fonts(); - Colors colors(); - Entities entities(); -} -``` - ---- - -### Methods - ---- - -#### `getEventBus` - -- **Type:** [`IEventBus`](irusherhack.md) -- **Description:** Returns the event bus instance - -### `getModuleManager` - -- **Type:** [`IFeatureManager`](irusherhack.md) -- **Description:** Returns the module manager instance - -### `getCommandManager` - -- **Type:** [`ICommandManager`](irusherhack.md) -- **Description:** Returns the command manager instance - -### `getHudManager` - -- **Type:** [`IHudManager`](irusherhack.md) -- **Description:** Returns the HUD manager instance - -### `getWindowManager` - -- **Type:** [`IWindowManager`](irusherhack.md) -- **Description:** Returns the window manager instance - -### `getThemeManager` - -- **Type:** [`IThemeManager`](irusherhack.md) -- **Description:** Returns the theme manager instance - -### `getBindManager` - -- **Type:** [`IBindManager`](irusherhack.md) -- **Description:** Returns the bind manager instance - -### `getRelationManager` - -- **Type:** [`IRelationManager`](irusherhack.md) -- **Description:** Returns the relation manager instance - -### `getRotationManager` - -- **Type:** [`IRotationManager`](irusherhack.md) -- **Description:** Returns the rotation manager instance - -### `getNotificationManager` - -- **Type:** [`INotificationManager`](irusherhack.md) -- **Description:** Returns the notification manager instance - -### `getChunkProcessor` - -- **Type:** [`IChunkProcessor`](irusherhack.md) -- **Description:** Returns the chunk processor instance - -### `getServerState` - -- **Type:** [`IServerState`](irusherhack.md) -- **Description:** Returns the server state instance - -### `interactions` - -- **Type:** [`IInteractions`](irusherhack.md) -- **Description:** Returns the interactions instance - -### `createLogger` - -- **Type:** [`ILogger`](irusherhack.md) -- **Description:** Creates a new logger with the specified name -- **Parameters:** - -| Type | Name | Description | -|----------|--------|------------------------| -| `String` | `name` | The name of the logger | - -- **Usage:** - ```java - ILogger logger = RusherHackAPI.createLogger("My Plugin"); - - logger.info("Hello, world!"); - logger.warn("This is a warning!"); - logger.error("This is an error!"); - logger.debug("This is a debug message!"); - ``` -- **See:** [org.rusherhack.core.logging.Logger](irusherhack.md) & [org.rusherhack.core.logging.ILogger](irusherhack.md) - -### `getVersion` - -- **Type:** `String` -- **Description:** Returns the version of the client - -### `getConfigPath` - -- **Type:** `Path` -- **Description:** Returns the path to the configuration directory - -### `getRenderer2D` - -- **Type:** [`IRenderer2D`](irusherhack.md) -- **Description:** Returns the 2D renderer instance - -### `getRenderer3D` - -- **Type:** [`IRenderer3D`](irusherhack.md) -- **Description:** Returns the 3D renderer instance - -### `fonts` - -- **Type:** [`Fonts`](irusherhack.md) -- **Description:** Contains methods for accessing general font renderer instances -- **See:** [Fonts](#fonts) - -### `colors` - -- **Type:** [`Colors`](irusherhack.md) -- **Description:** Allows access to the user's color preferences, as well as entities most prominent color -- **See:** [Colors](#colors) - -### `entities` - -- **Type:** [`Entities`](irusherhack.md) -- **Description:** Contains methods for determining the type of an entity -- **See:** [Entities](#entities) - ---- diff --git a/docs/api/index.md b/docs/api/index.md deleted file mode 100644 index c0ee09d..0000000 --- a/docs/api/index.md +++ /dev/null @@ -1,84 +0,0 @@ -# Getting Started - -::: warning -Plugins are in BETA and are not fully supported. DO NOT enable plugins if you don't know what you are doing. -::: - -To enable plugins, add the jvm flag: `-Drusherhack.enablePlugins=true`, create a folder -called `plugins` in the `.minecraft/rusherhack` folder, and drop plugin .jar files into it. - -## Installation - -### Prerequisites - -- [Java](https://nodejs.org/) version 17 or higher. -- An ide or text editor. Below are some recommended ones: - - [IntelliJ IDEA](https://www.jetbrains.com/idea/) - - [VSCode](https://code.visualstudio.com/) - -::: code-group - -```sh [https] -$ git clone https://github.com/RusherDevelopment/example-plugin.git -``` - -```sh [ssh] -$ git clone git@github.com:RusherDevelopment/example-plugin.git -``` - -```sh [Github CLI] -$ gh repo clone RusherDevelopment/example-plugin -``` - -::: - -## File Structure - -When you clone the repository, you should see the following file structure: - -``` -. -├─ gradle/wrapper -│ ├─ gradle-wrapper.jar -│ └─ gradle-wrapper.properties -├─ src/main -│ ├─ java -│ │ └─ org/example -│ │ └─ ExampleCommand.java -│ │ └─ ExampleHudElement.java -│ │ └─ ExampleModule.java -│ │ └─ ExamplePlugin.java -│ └─ resources -│ └─ rusherhack-plugin.json -│ └─ exampleplugin/graphics -│ └─ rh_head.png -├─ .gitignore -├─ LICENSE -├─ build.gradle -├─ gradlew -├─ gradlew.bat -└─ settings.gradle -``` - -This is the basic file structure of the plugin. You can add more files and folders as you see fit. - -## The Config File - -All of your plugins information is stored in the `rusherhack-plugin.json` file. This file is used to identify your plugin and provide information to the user and the client. - - -```json -// .src/main/resources/rusherhack-plugin.json -{ - "Plugin-Class": "org.example.ExamplePlugin", - "Name": "Example Plugin", - "Version": "${plugin_version}", - "Description": "Example rusherhack plugin", - "Authors": [ - "John200410" - ], - "Minecraft-Versions": [ - "1.20.1" - ] -} -``` diff --git a/docs/features/hud/index.md b/docs/features/hud/index.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/features/index.md b/docs/features/index.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/features/modules/index.md b/docs/features/modules/index.md deleted file mode 100644 index bb6c7dc..0000000 --- a/docs/features/modules/index.md +++ /dev/null @@ -1,2 +0,0 @@ -A module is a feature that aids the user and helps them perform a task -// fix this \ No newline at end of file diff --git a/docs/features/windows/index.md b/docs/features/windows/index.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/guide/help/hwid.md b/docs/guide/help/hwid.md deleted file mode 100644 index a1f703a..0000000 --- a/docs/guide/help/hwid.md +++ /dev/null @@ -1,27 +0,0 @@ -# HWID - -This page will explain what HWID is, why, and how it is used within RusherHack. - -## **What is HWID (Hardware ID)?** - -HWID stands for Hardware ID, which is a unique identifier tied to your computer. -It is used by us, to uniquely identify and verify that your account isn't being used on -someone else's computer. The HWID is generated based on over several -hardware components to create a unique identifier for your system. -Since each computer's hardware setup is different, the resulting HWID is -unique to that specific machine. - -We employ a HWID-based licensing or security model that can tie an account or license to a -particular computer, making it more difficult to share or transfer accounts between people (Known as account sharing which -is against the ToS). - -HWIDs are primarily used for: - -- Preventing unauthorized access (e.g., stopping RusherHack from being reused on multiple computers) -- Enforcing single-user licenses to prevent account sharing - -## **A second HWID** - -RusherHack does allow multiple (max of 2) computers to be used under the same license -if certain conditions are met, if you need to use more than 2 computers, -you will need to purchase an additional license. \ No newline at end of file diff --git a/docs/guide/help/index.md b/docs/guide/help/index.md deleted file mode 100644 index 876d24c..0000000 --- a/docs/guide/help/index.md +++ /dev/null @@ -1,12 +0,0 @@ -Having an issue with RusherHack? Reach out to the support team, and we will try our best to assist you! - -Different methods of getting help: -- Discord - - To get access to the RusherHack Discord server, you must link your account in the [installer](../introduction/installation) - - `#support-and-hwid` channel -- Email rusherbot2b2t@gmail.com - - Direct contact with the developer - - Usually responds in under 24 hours -- Support Ticket - - Direct contact with the developer - - Usually responds in under 24 hours \ No newline at end of file diff --git a/docs/guide/index.md b/docs/guide/index.md deleted file mode 100644 index 3665803..0000000 --- a/docs/guide/index.md +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to the official documentation for RusherHack! - -It was created to support the documentation needs of -RusherHacks plugin system, however, it can be used for -finding out general information about RusherHack and its features. \ No newline at end of file diff --git a/docs/guide/introduction/account.md b/docs/guide/introduction/account.md deleted file mode 100644 index a4dddc5..0000000 --- a/docs/guide/introduction/account.md +++ /dev/null @@ -1,4 +0,0 @@ -After purchasing RusherHack, you are emailed a License Key. - -This License Key is used to create your RusherHack account, and used to recover your account if you are unable to login. -You should keep this saved where you won't lose it. \ No newline at end of file diff --git a/docs/guide/introduction/installation.md b/docs/guide/introduction/installation.md deleted file mode 100644 index 907bf79..0000000 --- a/docs/guide/introduction/installation.md +++ /dev/null @@ -1,4 +0,0 @@ -The RusherHack installer can be downloaded from the user panel. - -The installer is a Java (.jar) app. -You need Java installed on your system to open the installer. \ No newline at end of file diff --git a/docs/guides/account.mdx b/docs/guides/account.mdx new file mode 100644 index 0000000..a6b1c02 --- /dev/null +++ b/docs/guides/account.mdx @@ -0,0 +1,11 @@ +# Account management + +The License Key is sent to your email after purchase. It is required to create your account in the installer. + +:::important Lost License Key +If you have lost your License Key, you can request it to be re-sent via the official dashboard. +::: + +## Password reset + +If you need to reset your password, follow the link on the login page and use the "Use email instead" option. \ No newline at end of file diff --git a/docs/guides/baritone.mdx b/docs/guides/baritone.mdx new file mode 100644 index 0000000..cc4c0cc --- /dev/null +++ b/docs/guides/baritone.mdx @@ -0,0 +1,8 @@ +# Baritone + +## Baritone +RusherHack comes with built-in Baritone integration for pathfinding and automation. + +:::important +For detailed Baritone commands, please refer to the official [Baritone Documentation](https://github.com/cabaletta/baritone/blob/master/USAGE.md). +::: \ No newline at end of file diff --git a/docs/guides/click-gui.mdx b/docs/guides/click-gui.mdx new file mode 100644 index 0000000..20fc19f --- /dev/null +++ b/docs/guides/click-gui.mdx @@ -0,0 +1,75 @@ +# ClickGUI & Colors + +Global interface settings and color management for RusherHack. + +--- + +# ClickGUI + +The main graphical user interface for managing modules and their settings. + +## Settings + +- **Scale** — *The size of the interface.* +- **AllowExternalModulesInDefaultCategories** — *Display modules from installed Plugins within the primary categories (Combat, Movement, etc.) instead of a separate Plugin tab.* + +:::tip Interface Scaling +If the ClickGUI is too large to navigate, you can manually reset the scale using the command: `*clickgui scale `. A value of `1.0` is default. +::: + +## Commands + +- `clickgui` +- `clickgui [value]` +- `clickgui scale ` + +--- + +# Colors + +Global configuration for client themes, entity visuals, and storage highlights. + +## Settings + +### Rainbow Settings +- **Mode** (Enum) — *The style of the rainbow animation:* `Static`, `Horizontal`, `Vertical`. +- **Speed** — *How fast the rainbow cycles.* +- **Saturation** — *The intensity of the color.* +- **Brightness** — *The lightness of the color.* +- **Start / End** — *The range of the color spectrum to cycle through.* + +### Entities +- **Friends** — *Color for players on your friends list.* +- **Enemies** — *Color for players on your enemies list.* +- **Players** — *Default color for other players.* +- **Hostiles** — *Color for hostile mobs (Zombies, Creepers, etc.).* +- **Passives** — *Color for passive mobs (Cows, Sheep, etc.).* +- **Neutrals** — *Color for neutral mobs (Pigmen, Golems).* +- **EndCrystals** — *Color for End Crystals.* +- **Vehicles** — *Color for Boats and Minecarts.* +- **Items** — *Color for dropped items on the ground.* +- **Misc** — *Color for other entities (Experience Orbs, etc.).* + +:::info Priority +Friend and Enemy colors will always take priority over the generic 'Players' color setting. +::: + +### Block Entities +- **Chests** — *Color for standard chests.* +- **EnderChests** — *Color for Ender chests.* +- **ShulkerBoxes** — *Color for all shulker boxes.* +- **Barrels** — *Color for barrels.* +- **Misc** — *Color for other storage (Hoppers, Dispensers, Furnaces).* + +### Distance Colors +- **Far** — *The color applied to objects at a distance.* +- **Close** — *The color applied to objects nearby.* + +:::tip Dynamic Visuals +Distance colors are particularly useful for modules like **Tracers** or **ESP**, allowing you to visually gauge proximity based on color shifting. +::: + +## Commands + +- `colors` +- `colors [value]` \ No newline at end of file diff --git a/docs/guides/installation.mdx b/docs/guides/installation.mdx new file mode 100644 index 0000000..f740c94 --- /dev/null +++ b/docs/guides/installation.mdx @@ -0,0 +1,32 @@ +# Installation + +How to set up RusherHack for different versions of Minecraft. + +:::info Fabric Mod +RusherHack for modern versions of Minecraft is a **Fabric mod**. You must have the [Fabric Loader](https://fabricmc.net/) installed to use it. +::: + +## Download +You can download the rusherhack installer from the official dashboard: + [accounts.rusherhack.org](https://accounts.rusherhack.org/) + +## Java Requirements + +:::warning Critical: Match your Java version! +Using the wrong Java version is the most common cause of crashes. +- **Java 8**: Required for Minecraft **1.12.2** +- **Java 17**: Required for Minecraft **1.20.1 - 1.20.4** +- **Java 21**: Required for Minecraft **1.20.6 and higher** +::: + +## Installation Steps +1. Run the downloaded RusherHack installer (`.jar`). +2. Log in with your account. +3. Select your desired Minecraft version. +4. Click **Install**. + +--- + +:::tip Having Issues? +If you encounter any problems during installation (like a gray window or antivirus blocks), please refer to our **[Troubleshooting Guide](../support/troubleshooting.mdx)**. +::: \ No newline at end of file diff --git a/docs/guides/macros-keybinds.mdx b/docs/guides/macros-keybinds.mdx new file mode 100644 index 0000000..fa7deb4 --- /dev/null +++ b/docs/guides/macros-keybinds.mdx @@ -0,0 +1,28 @@ +# Macros & Keybinds + +:::note +Macros and Keybinds allow you to automate your gameplay and access features instantly. +::: + +## Macros +Macros execute a sequence of commands when a key is pressed. + +- `macro create ` — Create a macro. +- `macro add ` — Add a command (no prefix needed). +- `macro delete ` — Remove a macro. + +:::tip Pro Tip +You can add multiple commands to a single macro to create complex automation chains! +::: + +## Keybinds +Manage how you toggle your modules. + +### Via ClickGui +1. Open ClickGui. +2. Right-click a module. +3. Select **Bind** and press any key. + +:::info +To remove a bind in ClickGui, press the **Delete** key while the binding state is active. +::: \ No newline at end of file diff --git a/docs/guides/plugins.mdx b/docs/guides/plugins.mdx new file mode 100644 index 0000000..a031d61 --- /dev/null +++ b/docs/guides/plugins.mdx @@ -0,0 +1,13 @@ +# Plugins + +:::danger Experimental Feature +Plugins are custom add-ons written by third-party developers. **Use them at your own risk.** They may cause game instability or security concerns. +::: + +## How to use +You can find the official list of approved plugins and installation guides here: + [RusherHack Plugins GitHub](https://github.com/RusherDevelopment/rusherhack-plugins) + +:::info Support +If you have issues with a specific plugin, please contact the plugin author or use the `#coding-and-plugins` channel in our Discord. +::: \ No newline at end of file diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 698f386..0000000 --- a/docs/index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -# https://vitepress.dev/reference/default-theme-home-page -layout: home - -hero: - name: "RusherHack" - tagline: Documentation for all things related to RusherHack. # *insert something here about anyone being able to learn about rusherhack's features and the plugin api* - image: - src: rh-head_256x256.png - alt: logo - actions: - - theme: brand - text: Get started - link: guide/ - - theme: alt - text: Purchase - link: https://rusherhack.org/ ---- diff --git a/docs/intro.mdx b/docs/intro.mdx new file mode 100644 index 0000000..27691d6 --- /dev/null +++ b/docs/intro.mdx @@ -0,0 +1,47 @@ +--- +sidebar_position: 1 +--- + + +# Introduction + +Welcome to the official **RusherHack** documentation. + +RusherHack is a **Player Assistance Utility Mod** with features designed specifically for anarchy servers like 2b2t, Constantiam, oldfag.org, and many more. + +--- + +## Quick start + +If you are new to RusherHack, here is how to get started quickly: + +1. **Installation:** Follow our [Installation Guide](./guides/installation) to set up the client for your Minecraft version. +2. **Account Setup:** Learn how to use your license key in the [Account Management](./guides/account) section. +3. **Opening the Menu:** By default, the **ClickGUI** is opened using the `P` key. +4. **Commands:** All commands in RusherHack use the `*` prefix by default (e.g., `*help`). + +:::tip Pro Tip +You can change the command prefix at any time using the `*prefix ` command. +::: + +--- + +## How to use this Documentation + +The documentation is divided into several logical sections: + +- **Guides:** General tutorials for installation, account management, and macros. +- **Modules:** Detailed information about every feature, categorized by type (Combat, Movement, Render, etc.). +- **Commands:** A full list of chat commands for fine-tuning the client. +- **Support:** Troubleshooting for common errors and HWID reset information. + + +:::info Community & Support +Need more help? Join our official [Discord Server](https://discord.com/invite/nvcCyVKuWy) to interact with the community and get assistance from our support staff. +::: + +--- + +## Stay Safe + +Please note that mods like this are not allowed on some servers and we will not permit any usage outside of anarchy servers. \ No newline at end of file diff --git a/docs/modules/chat/announcer.mdx b/docs/modules/chat/announcer.mdx new file mode 100644 index 0000000..9ab7f0e --- /dev/null +++ b/docs/modules/chat/announcer.mdx @@ -0,0 +1,30 @@ +# Announcer + +Announces what you are doing in chat. + +## Settings + +- **ClientSide** — *Only show the messages to you.* +- **Others** — *Announce other player's actions.* +- **Delay** — *Delay in seconds between messages.* +- **Walking** (Category) + - **String** — Message to send when walking. +- **Break** (Category) + - **String** — Message to send when breaking blocks. +- **Place** (Category) + - **String** — Message to send when placing blocks. +- **Pickup** (Category) + - **String** — Message to send when picking up items. +- **XP** (Category) + - **String** — Message to send when gaining XP. +- **Eating** (Category) + - **String** — Message to send when eating. +- **Drinking** (Category) + - **String** — Message to send when drinking. +- **Time** (Category) — *Announce changes of the game time:* + - **Day**, **Noon**, **Sunset**, **Night**, **Midnight**, **Sunrise**. + +## Commands + +- `announcer` +- `announcer [value]` \ No newline at end of file diff --git a/docs/modules/chat/anti-spam.mdx b/docs/modules/chat/anti-spam.mdx new file mode 100644 index 0000000..9ff2e77 --- /dev/null +++ b/docs/modules/chat/anti-spam.mdx @@ -0,0 +1,25 @@ +# AntiSpam + +Remove spam from chat. + +## Settings + +- **Mode** (Enum): `Ignore`, `Hide`. +- **Debug** — Enable debug messages for spam filters. +- **Command** — Filter out repetitive commands. +- **Exclusions** (Category) + - **Friends** — Do not filter messages from friends. +- **Whispers** — Filter out spam from private messages. +- **Combine** (Category) + - **Depth** — How many messages to combine into one. +- **Frequency** (Category) + - **Messages** — Maximum number of messages allowed in a timeframe. + - **Time** — The timeframe for frequency checks. +- **Blacklist** (Category) + - **Words** — List of blocked words. + - **Regex** — Block messages matching a regular expression. + +## Commands + +- `antispam` +- `antispam [value]` \ No newline at end of file diff --git a/docs/modules/chat/armor-alert.mdx b/docs/modules/chat/armor-alert.mdx new file mode 100644 index 0000000..ffc8706 --- /dev/null +++ b/docs/modules/chat/armor-alert.mdx @@ -0,0 +1,19 @@ +# ArmorAlert + +Alerts you and other players when your or someone's armor durability is low. + +## Settings + +- **Render** — Visual representation of the low armor alert. +- **Notification** (Category) + - **Clientside** — Send notifications only to yourself. +- **Self** — Alert when your own armor is low. +- **Others** — Alert when other players' armor is low. +- **Friends** — Alert when friends' armor is low. +- **NoLongerLow Alert** — Send a notification when armor is repaired/swapped and no longer low. +- **Threshold** — The durability percentage to trigger the alert. + +## Commands + +- `armoralert` +- `armoralert [value]` \ No newline at end of file diff --git a/docs/modules/chat/auto-reply.mdx b/docs/modules/chat/auto-reply.mdx new file mode 100644 index 0000000..b777979 --- /dev/null +++ b/docs/modules/chat/auto-reply.mdx @@ -0,0 +1,18 @@ +# AutoReply + +Automatically reply to messages. + +## Settings + +- **TriggerText** — *The text needed in a chat message to trigger a reply.* +- **FriendText** — *The reply message to friends.* +- **NonFriendText** — *The reply message to non-friends.* +- **GlobalChat** — *Reply in global chat rather than in private message.* +- **Friends** — Only reply to players on your friends list. +- **FocusCheck** — *Only trigger while not actively tabbed into the game.* +- **Delay** — The delay before sending the reply. + +## Commands + +- `autoreply` +- `autoreply [value]` \ No newline at end of file diff --git a/docs/modules/chat/chat-append.mdx b/docs/modules/chat/chat-append.mdx new file mode 100644 index 0000000..bf6ac3e --- /dev/null +++ b/docs/modules/chat/chat-append.mdx @@ -0,0 +1,18 @@ +# ChatAppend + +Automatically adds text to your chat messages. + +## Settings + +- **Custom** (Category) — *Enable the ability to use custom text:* + - **Text** — The custom text to append. +- **Random** — *Append a random number at the end of your message.* +- **Prefix** — Text to add before your message. +- **Suffix** — Text to add after your message. +- **Between** — Text to insert between messages. +- **Separator** — The character used to separate original text from appended text. + +## Commands + +- `chatappend` +- `chatappend [value]` \ No newline at end of file diff --git a/docs/modules/chat/chat-colors.mdx b/docs/modules/chat/chat-colors.mdx new file mode 100644 index 0000000..e888f77 --- /dev/null +++ b/docs/modules/chat/chat-colors.mdx @@ -0,0 +1,8 @@ +# ChatColors + +Shows chat colors in chat clientside. + +## Commands + +- `chatcolors` +- `chatcolors [value]` \ No newline at end of file diff --git a/docs/modules/chat/extra-chat.mdx b/docs/modules/chat/extra-chat.mdx new file mode 100644 index 0000000..5733e56 --- /dev/null +++ b/docs/modules/chat/extra-chat.mdx @@ -0,0 +1,31 @@ +# ExtraChat + +Modify the game chat. + +## Settings + +- **MaxLines** — *Change the maximum amount of lines that the game chat can have before deleting them.* +- **PlayerHeads** — *Render head of the sender's skin* next to their message. +- **Preserve** — *Don't delete game chat when you leave a server.* +- **Background** — *Toggle the chat background.* +- **CustomFont** — Use a custom font for chat messages. +- **Animations** (Enum) — *Animate the entry of new chat messages:* + - `Off`, `Slide Up`, `Slide Right` +- **Length** — *How long the animation should play for.* +- **Mentions** (Category) + - **Self** — Notify when your name is mentioned. + - **Friends** — Notify when a friend is mentioned. + - **Highlight** (Sub-category): + - **Text** (Bold, Italic, Underline). + - **Background** — Color for the mention background. + - **Color** — Color for the mention text. + - **FriendColor** — *Use the global Friend color.* +- **Sound** — Play a sound when a mention or specific message is received. +- **IgnoreSelfMsgs** — Do not apply modifications to your own messages. +- **NameProtect** — *Redact your name from game-chat.* +- **StripBlankLines** — Remove empty lines from the chat box. + +## Commands + +- `extrachat` +- `extrachat [value]` \ No newline at end of file diff --git a/docs/modules/chat/fancy-chat.mdx b/docs/modules/chat/fancy-chat.mdx new file mode 100644 index 0000000..a21adb2 --- /dev/null +++ b/docs/modules/chat/fancy-chat.mdx @@ -0,0 +1,13 @@ +# FancyChat + +Makes your text look gamer. + +## Settings + +- **Mode** (Enum) — The style of the text transformation: + - `Nhack`, `Classic`, `Derp`, `Braille`, `Morse Code`, `L33t`, `Reverse`, `Md5`, `Uwu` + +## Commands + +- `fancychat` +- `fancyhcat [value]` \ No newline at end of file diff --git a/docs/modules/chat/green-text.mdx b/docs/modules/chat/green-text.mdx new file mode 100644 index 0000000..2873232 --- /dev/null +++ b/docs/modules/chat/green-text.mdx @@ -0,0 +1,12 @@ +# GreenText + +Puts '>' in front of your messages. + +## Settings + +- **Space** — Adds a space after the '>' character. + +## Commands + +- `greentext` +- `greentext [value]` \ No newline at end of file diff --git a/docs/modules/chat/greeter.mdx b/docs/modules/chat/greeter.mdx new file mode 100644 index 0000000..bfe12d4 --- /dev/null +++ b/docs/modules/chat/greeter.mdx @@ -0,0 +1,18 @@ +# Greeter + +Send a message when players join or leave the server. + +## Settings + +- **ClientSide** (Enum) — *Whether the messages should be written locally or in public game chat:* + - `Off`, `Chat`, `Hud` +- **Filter** (Enum): + - `All`, `Friends` +- **Joins** — The message to send when a player joins. +- **Leaves** — The message to send when a player leaves. +- **Delay** — The delay before sending the message. + +## Commands + +- `greeter` +- `greeter [value]` \ No newline at end of file diff --git a/docs/modules/chat/lag-detector.mdx b/docs/modules/chat/lag-detector.mdx new file mode 100644 index 0000000..434c7a7 --- /dev/null +++ b/docs/modules/chat/lag-detector.mdx @@ -0,0 +1,15 @@ +# LagDetector + +Prints a message in chat/on screen when the server is lagging. + +## Settings + +- **Delay** — The time in seconds to wait before considering the server lagging. +- **Render** — *Draws text on your screen when the server is lagging.* +- **Notification** — Send a system notification when lag is detected. +- **Clientside** — Only display the lag message to you. + +## Commands + +- `lagdetector` +- `lagdetector [value]` \ No newline at end of file diff --git a/docs/modules/chat/rusher-crypt.mdx b/docs/modules/chat/rusher-crypt.mdx new file mode 100644 index 0000000..8c499a4 --- /dev/null +++ b/docs/modules/chat/rusher-crypt.mdx @@ -0,0 +1,14 @@ +# RusherCrypt + +Encrypt and Decrypt chat messages that users with Decrypt online can see. + +## Settings + +- **Encrypt** — Automatically encrypt outgoing messages. +- **Decrypt** — Automatically decrypt incoming messages from other RusherHack users. +- **ChatObfuscation** — Obfuscates the chat while typing or viewing encrypted messages. + +## Commands + +- `rushercrypt` +- `rushercrypt [value]` \ No newline at end of file diff --git a/docs/modules/chat/spammer.mdx b/docs/modules/chat/spammer.mdx new file mode 100644 index 0000000..9eb3345 --- /dev/null +++ b/docs/modules/chat/spammer.mdx @@ -0,0 +1,19 @@ +# Spammer + +Spams chat. + +## Settings + +- **File** — *Choose which file to use for spammer.* +- **Mode** (Enum) — *Choose how messages are picked from the spammer file:* + - `In Order`, `Random` +- **Whisper** (Category) — *Privately message players on the server rather than post in public chat:* + - **Command** — The command used to whisper (e.g. /msg). +- **Delay** — The delay between messages. +- **RandomDelay** — Adds a random amount of time to the delay. + +## Commands + +- `spammer` +- `spammer [value]` +- `spammer reload` \ No newline at end of file diff --git a/docs/modules/chat/timestamps.mdx b/docs/modules/chat/timestamps.mdx new file mode 100644 index 0000000..2899ae6 --- /dev/null +++ b/docs/modules/chat/timestamps.mdx @@ -0,0 +1,22 @@ +# Timestamps + +Adds time stamps to chat messages. + +## Settings + +- **Time Color** — Customize the color of the timestamp. +- **Advanced** (Category) + - **Format** — The format of the time (e.g. HH:mm:ss). +- **24hr** — Use 24-hour time format. +- **Seconds** — Include seconds in the timestamp. +- **Milliseconds** — Include milliseconds in the timestamp. +- **AM/PM** — Use AM/PM time format. +- **Punctuation** (Enum): + - `Brackets`, `Parentheses`, `Curly Brackets`, `Arrow` +- **Punctuation Color** — Customize the color of the punctuation. +- **Space** — Adds a space after the timestamp. + +## Commands + +- `timestamps` +- `timestamps [value]` \ No newline at end of file diff --git a/docs/modules/chat/translate.mdx b/docs/modules/chat/translate.mdx new file mode 100644 index 0000000..1902b4d --- /dev/null +++ b/docs/modules/chat/translate.mdx @@ -0,0 +1,21 @@ +# Translate + +Translates messages in chat. + +## Settings + +- **Sending** (Category) + - **Notice** — Show a notice that your message was translated. +- **Receiving** (Category) + - **Notice** — Show a notice for incoming translated messages. + - **KeepOriginal** — Keep the original untranslated message in chat. +- **PrivateMessages** — Enable translation for private messages. +- **Input** (Enum) — The source language: + - *Albanian, Arabic, Bulgarian, Chinese, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hebrew, Hungarian, Indonesian, Italian, Japanese, Latvian, Lithuanian, Mongolian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Spanishmexico, Swedish, Turkish, Ukrainian, Vietnamese.* +- **Output** (Enum) — The target language: + - *Albanian, Arabic, Bulgarian, Chinese, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hebrew, Hungarian, Indonesian, Italian, Japanese, Latvian, Lithuanian, Mongolian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Spanishmexico, Swedish, Turkish, Ukrainian, Vietnamese.* + +## Commands + +- `translate` +- `translate [value]` \ No newline at end of file diff --git a/docs/modules/combat/anchor.mdx b/docs/modules/combat/anchor.mdx new file mode 100644 index 0000000..84c69e5 --- /dev/null +++ b/docs/modules/combat/anchor.mdx @@ -0,0 +1,23 @@ +# Anchor + +Stops your movement when you are over a hole. + +## Settings + +- **Height** — The maximum height at which the anchor will pull you down. +- **Center** (Category) + - **Range** — Distance to the center of the hole. + - **RayTrace** — Use raytracing to find the center. + - **Speed** — The speed at which you are pulled to the center. +- **Descend** (Category) + - **Speed** — The speed at which you are pulled down into the hole. +- **Doubles** — *Descend into double holes.* +- **AutoDisable** — Automatically disables the module after successfully anchoring. +- **PitchControl** — *Only descend while looking at set pitch.* + - **Pitch** — The required pitch to activate descending. +- **Delay** — The delay before re-anchoring. + +## Commands + +- `anchor` +- `anchor [value]` \ No newline at end of file diff --git a/docs/modules/combat/aura.mdx b/docs/modules/combat/aura.mdx new file mode 100644 index 0000000..db56695 --- /dev/null +++ b/docs/modules/combat/aura.mdx @@ -0,0 +1,40 @@ +# Aura + +Automatically attack entities nearby. + +## Settings + +- **Reach** — The maximum distance to attack entities. +- **HitDelay** (Category) + - **Delay** — The delay between attacks. + - **TPS Sync** — *Sync attack speed with server tps.* +- **AutoBlock** — *Automatically block with your shield* after attacking. +- **KeepSprint** — *Prevents the game from cancelling your sprint* when hitting an entity. +- **WeaponCheck** — *Only attack while holding a weapon* (Sword or Axe). +- **Rotate** (Category) + - **Speed** — Speed of rotation towards the target. + - **Timing** (Enum) — *Timing method used for attacking:* + - `Vanilla`, `Sequential` +- **Targets** (Category) — *Configure the entity types to target:* + - **Players** (Sub-category): + - **FriendProtect** — Do not attack players on your friends list. + - **PrioritizeEnemies** — Focus attacks on players on your enemies list. + - **EnemiesOnly** — Only attack enemies, ignoring other players. + - **IgnoreCreative** — Do not attack players in creative mode. + - **Hostiles** — Attack hostile mobs (Zombies, Skeletons, etc.). + - **Passives** — Attack passive mobs (Cows, Pigs, etc.). + - **IgnoreTamed** — Do not attack tamed animals. + - **IgnoreNamed** — Do not attack entities with name tags. + - **Neutrals** — Attack neutral mobs (Pigmen, Golems, etc.). + - **Vehicles** — Attack boats and minecarts. + - **Projectiles** — Attack incoming projectiles. + - **ArmorStands** — Attack armor stands. +- **Priority** (Enum) — *How targets are prioritized:* + - `Angle`, `Distance`, `Health` +- **PauseWhileEating** — Pause attacking while you are using an item. +- **DisableOnDeath** — Automatically disable the module when you die. + +## Commands + +- `aura` +- `aura [value]` \ No newline at end of file diff --git a/docs/modules/combat/auto-armor.mdx b/docs/modules/combat/auto-armor.mdx new file mode 100644 index 0000000..bf32ebf --- /dev/null +++ b/docs/modules/combat/auto-armor.mdx @@ -0,0 +1,19 @@ +# AutoArmor + +Automatically equips your best armor. + +## Settings + +- **Delay** — The delay between armor swaps. +- **Soft** — *Never replace armor already in the slot* if it's already occupied. +- **Inventory** — *Allow AutoArmor while inside of inventory* screen. +- **BindingCurse** — Respect the Curse of Binding and do not attempt to swap those items. +- **ElytraPriority** — Prioritize equipping an Elytra over a chestplate. +- **BlastPriority** — Prioritize Blast Protection armor. +- **Durability** (Category) + - **Threshold** — Minimum durability percentage before swapping armor. + +## Commands + +- `autoarmor` +- `autoarmor [value]` \ No newline at end of file diff --git a/docs/modules/combat/auto-crystal.mdx b/docs/modules/combat/auto-crystal.mdx new file mode 100644 index 0000000..3a53fca --- /dev/null +++ b/docs/modules/combat/auto-crystal.mdx @@ -0,0 +1,55 @@ +# AutoCrystal + +Automatically places and explodes end crystals for crystal pvp. + +## Settings + +### Targeting +- **Targeting** — *How targets are selected:* + - **Players** (FriendProtect, PrioritizeEnemies [EnemiesOnly], IgnoreCreative). + - **Hostiles**, **Passives** (IgnoreTamed, IgnoreNamed), **Neutrals**, **Vehicles**. + - **Priority** (Enum): `Angle`, `Damage`, `Damage Ratio`, `Crystal Distance`, `Distance`, `Health`. + - **CheckLimit** — *Maximum targets to check while selecting.* +- **Render (Target ESP)**: + - **Color**, **Fill**, **Outline** (Width), **DepthTest**. + +### Explode +- **Speed** — *Maximum crystal attacks per second.* +- **Range** — *Maximum range to crystal.* +- **WallRange** — *Maximum range to crystal if it is hidden.* +- **HitAttempts** — *Maximum times you can attack a crystal.* +- **TicksExisted** — *Minimum ticks a crystal must exist* before breaking. +- **DamageCalcs**: `MinDamage`, `SelfDamageLimit`, `SelfDamageRatio`, `IgnoreRatioUnder`. +- **Instant**: `MSWait` (Milliseconds to wait before hitting). +- **ClientSync** — *Sync breaking with the client.* +- **AntiWeakness** — *Switch to a weapon when you have weakness:* + - **Return**: `Ticks` (Ticks to wait until you swap back). +- **WhileEating**, **WhileMining**. +- **Render (Crystal ESP)**: `Swing`, `Color`, `Fill`, `Outline` (Width), `DepthTest`. + +### Place +- **Speed** — *Maximum crystal places per second.* +- **Range**, **WallRange**, **IgnoreTicks**. +- **DamageCalcs**: `MinDamage`, `SelfDamageLimit`, `SelfDamageRatio`, `IgnoreRatioUnder`. +- **Instant**: `MSWait` (Milliseconds to wait before placing). +- **Await**: `Timeout` (Ticks to pause placing). +- **ClientSync**, **1.12.2**, **CrystalPvP.CC**, **IgnoreTerrain**. +- **AutoSwitch**: `Mode` (Switch, Swap), `Silent`, `Return` (Ticks). +- **FacePlace**: `Health`, `ArmorPercent`, `NonFullArmor`, `Speed`, `Force` (Bind). +- **WhileEating**, **WhileMining**. +- **Render (Place renders)**: `Swing`, `Damage` (CustomFont, Color), `Box` (Mode: Static, Slide, Fade; SlideSpeed, FadeSpeed, Color, Fill, Outline, DepthTest). + +### Rotate & Predict +- **Rotate**: `Timing` (Vanilla, Sequential, Alternate, Instant), `Constant` (Ticks), `WaitForRotate` (UnpauseWait), `ExplodeSpeed`, `PlaceSpeed`, `RandomizeSpeed`, `StrictDir` (Off, Normal, Strict). +- **Predict**: `Motion` (TargetExtrapolation, SelfExtrapolation). + +### Miscellaneous +- **PauseAtHP** — *Health to pause on.* +- **Priority** (Enum) — *What action should run first:* `Explode`, `Place`. +- **Metadata** — *What to display on hud:* `Target`, `CrystalCount`, `Damages`, `Speeds`. +- **Debug Options**: `Debug`, `Debug2`, `VisualDebug`, `VisualDebug2`. + +## Commands + +- `autocrystal` +- `autocrystal [value]` \ No newline at end of file diff --git a/docs/modules/combat/auto-disconnect.mdx b/docs/modules/combat/auto-disconnect.mdx new file mode 100644 index 0000000..40aebde --- /dev/null +++ b/docs/modules/combat/auto-disconnect.mdx @@ -0,0 +1,30 @@ +# AutoDisconnect + +Automatically logs you out when you have low health. + +## Settings + +- **AutoToggle** — *Disable after disconnecting* to prevent an infinite loop. +- **IllegalDisconnect** — *Disconnects by kicking the player from the server* using invalid packets. + - **AlwaysOn** — Constantly keep this method active. +- **StopAutoRC** — *Disable AutoReconnect* while this module is active. +- **Health** (Category) + - **Amount** — The health threshold to trigger a disconnect. + - **TotemCheck** — *Don't disconnect if holding totem.* + - **Threshold** — Disconnect if your totem count drops below this. +- **TotemPop** — Disconnect as soon as one of your totems pops. +- **LethalCrystal** — Disconnect if a crystal is nearby that would kill you. +- **Proximity** (Category) — Disconnect if specific entities are within Range: + - **Players**, **Hostiles**, **Neutrals**, **Passives**, **EndCrystals**, **TNTMinecarts**. + - **Range** — The detection radius. + - **Coordinates** — Disconnect if you enter a specific range of set coordinates. + - **Range** — The radius around the coordinates. +- **Time** — Disconnect after being online for a specific amount of time. +- **YLevel** (Category) + - **Level** — Disconnect when falling below or rising above this Y level. + +## Commands + +- `autodisconnect` +- `autodisconnect [value]` +- `autodisconnect coordinates ` \ No newline at end of file diff --git a/docs/modules/combat/auto-exp.mdx b/docs/modules/combat/auto-exp.mdx new file mode 100644 index 0000000..f566604 --- /dev/null +++ b/docs/modules/combat/auto-exp.mdx @@ -0,0 +1,25 @@ +# AutoEXP + +Automatically repair your armor. + +## Settings + +- **Mode** (Enum) — Method for using experience bottles: + - `Macro`, `Auto` +- **Durability%** — *The percentage at which armor should be repaired.* +- **DynamicArmor** (Category) — *Takes off and reequips armor to reduce xp usage:* + - **Delay** — Delay between armor swaps. + - **PauseAutoArmor** — *Pause the AutoArmor module* while repairing. + - **Smart** — *Pauses while a player is in range.* + - **Range** — The detection radius. + - **AllowXCarry** — *Stores unequipped armor in your crafting slots.* + - **IgnoreElytra** — *Don't unequip your elytra if you are flying.* +- **AutoSwitch** (Category) — *Automatically switches to xp bottles:* + - **Silent** — *Switch server side only.* + - **Return** — *Returns to the previous item you were holding.* +- **Rotate** — Rotates your head downwards while throwing XP bottles. + +## Commands + +- `autoexp` +- `autoexp [value]` \ No newline at end of file diff --git a/docs/modules/combat/auto-surround.mdx b/docs/modules/combat/auto-surround.mdx new file mode 100644 index 0000000..3467610 --- /dev/null +++ b/docs/modules/combat/auto-surround.mdx @@ -0,0 +1,34 @@ +# AutoSurround + +Automatically surrounds your feet with obsidian. + +## Settings + +- **Mode** (Enum): `Active`, `Until Move`, `Macro`. +- **MoveDelay** — Delay before re-surrounding after moving. +- **Center** (Category) — *Centers the player* in the middle of the block: + - **Strict** — Uses stricter centering to avoid placement failure. +- **Dynamic** — *Widen surround if necessary* to cover larger areas. +- **Instant** (Category) — *Instantly place surround blocks:* + - **Grim** — *Grim bypass for instant rotations.* + - **Sync** — Sync placement with server ticks. +- **PlaceDelay** — Delay between placing blocks. +- **StrictDir** — Enforce strict placement direction checks. +- **Raytrace** — Use raytracing to verify block visibility. +- **Rotate** (Category) + - **Speed** — Speed of rotation. + - **Timing** (Enum) — *Rotation timing method used for placements:* + - `Vanilla`, `Sequential` +- **Swap** (Category) — *Automatically swaps to obsidian:* + - **Silent** — *Swap server side only.* + - **Return** — *Returns to the previous item you were holding.* +- **AntiCity** (Enum): `Off`, `Explode`, `Expand`. +- **AntiFacePlace** — Automatically places blocks to prevent face-placing. +- **DisableOnDeath** — Disables the module when you die. +- **Render** (Category) + - **Color**, **Width**, **DepthTest**. + +## Commands + +- `autosurround` +- `autosurround [value]` \ No newline at end of file diff --git a/docs/modules/combat/auto-totem.mdx b/docs/modules/combat/auto-totem.mdx new file mode 100644 index 0000000..ec7ab3b --- /dev/null +++ b/docs/modules/combat/auto-totem.mdx @@ -0,0 +1,29 @@ +# AutoTotem + +Automatically places a totem in your offhand. + +## Settings + +- **Mode** (Enum): `Normal`, `Health`. +- **Health** — The health threshold to swap to a totem. +- **AbsorptionCheck** — Include absorption hearts in health calculations. +- **AlternateItem** (Enum) — Item to hold when totems are not needed: + - `Crystal`, `Gapple`, `Crapple`, `Shield` +- **AutoBlock** (Category) — *Automatically blocks using your shield:* + - **OnlyInExplosionRange** — *Only block your shield near an explosion.* +- **AlternateWhen** (Category) — When to switch to the alternate item: + - **RequiresAutoCrystal**, **SwordUse**, **KeyHeld** (Toggle). +- **TotemWhen** (Category) — Specific triggers to force a totem: + - **FallDistance**, **NonFullArmor**, **LethalCrystal**. +- **HotbarPriority** — Prioritize taking totems from the hotbar. +- **Inventory** — Search the entire inventory for totems. +- **Delay** — The delay between offhand swaps. +- **Soft** — Do not replace an item if one is already in the offhand. +- **StopMotion** — Stops movement while swapping items. +- **StopEating** — Stops eating while swapping to a totem. +- **WhileEating** — Allow swapping while in the middle of eating. + +## Commands + +- `autototem` +- `autototem [value]` \ No newline at end of file diff --git a/docs/modules/combat/auto-trap.mdx b/docs/modules/combat/auto-trap.mdx new file mode 100644 index 0000000..d9bb3ed --- /dev/null +++ b/docs/modules/combat/auto-trap.mdx @@ -0,0 +1,38 @@ +--- +sidebar_position: 9 +--- + +# AutoTrap + +Automatically traps enemies with obsidian. + +## Settings + +- **Mode** (Enum) — When the module should attempt to trap: + - `Active`, `Until Move`, `Macro` +- **MoveDelay** — The delay before re-trapping after a target moves. +- **TrapType** (Enum) — The pattern used for trapping: + - `Normal`, `Minimal`, `Exposed` +- **FriendProtect** — Do not trap players on your friends list. +- **IgnoreSelf** — Prevent the module from accidentally trapping you. +- **LogoutSpots** — Keep traps active at locations where players have logged out. +- **AntiStep** — Places blocks to prevent the target from using Step to escape. +- **EnemyRange** — The maximum distance a target can be from you. +- **PlaceRange** — The maximum distance at which you can place blocks. +- **PlaceDelay** — The delay between placing individual blocks. +- **StrictDir** — Enforce strict direction checks for block placement. +- **Raytrace** — Use raytracing to verify block placement visibility. +- **Rotate** (Category) + - **Speed** — Speed of rotation towards placement positions. + - **Timing** (Enum) — *Rotation timing method used for placements:* + - `Vanilla`, `Sequential` +- **Swap** (Category) — *Automatically swaps to obsidian:* + - **Silent** — *Swap server side only.* + - **Return** — *Returns to the previous item you were holding.* +- **Render** (Category) + - **Color** — Customize the color of the trap preview. + +## Commands + +- `autotrap` +- `autotrap [value]` \ No newline at end of file diff --git a/docs/modules/combat/auto-web.mdx b/docs/modules/combat/auto-web.mdx new file mode 100644 index 0000000..192e5b0 --- /dev/null +++ b/docs/modules/combat/auto-web.mdx @@ -0,0 +1,33 @@ +--- +sidebar_position: 10 +--- + +# AutoWeb + +Automatically places web. + +## Settings + +- **Mode** (Enum): `Active`, `Macro`. +- **Target** (Enum) — Who to target with webs: + - `Players`, `Holes`, `Self` +- **WebDistance** — The distance to place webs from the target. +- **IgnoreOwnHole** — Do not place webs in the hole you are currently standing in. +- **Height** — The maximum height at which to place webs. +- **Range** — The maximum placement range. +- **Delay** — The delay between web placements. +- **StrictDir** — Enforce strict direction checks. +- **Raytrace** — Use raytracing for placement. +- **Rotate** (Category) + - **Speed** — Speed of rotation. + - **Timing** (Enum): `Vanilla`, `Sequential`. +- **Swap** (Category) — *Automatically swaps to obsidian:* + - **Silent** — *Swap server side only.* + - **Return** — *Returns to the previous item you were holding.* +- **Render** (Category) + - **Color** — The color of the placement render. + +## Commands + +- `autoweb` +- `autoweb [value]` \ No newline at end of file diff --git a/docs/modules/combat/bow-aimbot.mdx b/docs/modules/combat/bow-aimbot.mdx new file mode 100644 index 0000000..364902f --- /dev/null +++ b/docs/modules/combat/bow-aimbot.mdx @@ -0,0 +1,24 @@ +--- +sidebar_position: 11 +--- + +# BowAimbot + +Automatically aims your bow. + +## Settings + +- **Targets** (Category) — *Configure the entity types to target:* + - **Players** (Sub-category): + - **FriendProtect**, **PrioritizeEnemies** (EnemiesOnly), **IgnoreCreative**. + - **Hostiles** — Target hostile mobs. + - **Passives** (Sub-category): + - **IgnoreTamed**, **IgnoreNamed**. + - **Neutrals** — Target neutral mobs. + - **Vehicles** — Target boats and minecarts. +- **Extrapolation** — *How many ticks in the future to extrapolate* target movement. + +## Commands + +- `bowaimbot` +- `bowaimbot [value]` \ No newline at end of file diff --git a/docs/modules/combat/bow-spam.mdx b/docs/modules/combat/bow-spam.mdx new file mode 100644 index 0000000..108f379 --- /dev/null +++ b/docs/modules/combat/bow-spam.mdx @@ -0,0 +1,16 @@ +--- +sidebar_position: 12 +--- + +# BowSpam + +Spam arrows. + +## Settings + +- **Ticks** — The number of ticks to wait before releasing the bow string. Lower values spam faster. + +## Commands + +- `bowspam` +- `bowspam [value]` \ No newline at end of file diff --git a/docs/modules/combat/criticals.mdx b/docs/modules/combat/criticals.mdx new file mode 100644 index 0000000..9dfaeb8 --- /dev/null +++ b/docs/modules/combat/criticals.mdx @@ -0,0 +1,19 @@ +--- +sidebar_position: 13 +--- + +# Criticals + +Always do critical hits. + +## Settings + +- **Mode** (Enum) — Method to achieve critical hits: + - `Packet`, `Jump`, `Motion`, `Grim`, `Delay` +- **Strict** — Uses stricter checks to ensure critical hits on certain anticheats. +- **WhileSprinting** — *Allows criticals while sprinting.* + +## Commands + +- `criticals` +- `criticals [value]` \ No newline at end of file diff --git a/docs/modules/combat/hole-filler.mdx b/docs/modules/combat/hole-filler.mdx new file mode 100644 index 0000000..37b6a2f --- /dev/null +++ b/docs/modules/combat/hole-filler.mdx @@ -0,0 +1,32 @@ +--- +sidebar_position: 14 +--- + +# HoleFiller + +Automatically places blocks in holes. + +## Settings + +- **Mode** (Enum): `Active`, `Macro`. +- **Smart** (Category) — *Only fill holes near players:* + - **Distance** — The maximum distance from a player to consider a hole. +- **WhileIdle** — *Only fill holes while you aren't moving.* +- **Doubles** — *Fill double holes.* +- **SafeRange** — *Minimum distance to target holes.* +- **Range** — The maximum distance to place blocks. +- **Delay** — The delay between block placements. +- **StrictDir** — Enforce strict placement direction checks. +- **Raytrace** — Use raytracing to verify hole visibility. +- **Rotate** (Category) + - **Speed** — Speed of rotation. + - **Timing** (Enum): `Vanilla`, `Sequential`. +- **Swap** (Category) — *Automatically swaps to obsidian:* + - **Silent** — *Swap server side only.* + - **Return** — *Returns to the previous item you were holding.* +- **Render** (Category) + - **Color** — The color of the hole filler render. + +## Commands + +- `holefiller` \ No newline at end of file diff --git a/docs/modules/combat/hotbar-replenish.mdx b/docs/modules/combat/hotbar-replenish.mdx new file mode 100644 index 0000000..1551ce6 --- /dev/null +++ b/docs/modules/combat/hotbar-replenish.mdx @@ -0,0 +1,29 @@ +--- +sidebar_position: 15 +--- + +# HotbarReplenish + +Automatically replenishes items in your hotbar. + +## Settings + +- **Mode** (Enum): `Whitelist`, `Blacklist`. +- **WhileIdle** — Only replenish items while you are not moving or performing actions. +- **Inventory** — Pull items from your inventory to refill the hotbar. +- **Offhand** — Replenish items in your offhand slot. +- **Threshold** — The stack size at which the module will trigger a replenish. +- **Delay** — The delay between replenishing items. + +## Commands + +- `hotbarreplenish` +- `hotbarreplenish [value]` +- `hotbarreplenish blacklist remove ` +- `hotbarreplenish blacklist clear` +- `hotbarreplenish blacklist add ` +- `hotbarreplenish blacklist list` +- `hotbarreplenish whitelist clear` +- `hotbarreplenish whitelist remove ` +- `hotbarreplenish whitelist add ` +- `hotbarreplenish whitelist list` \ No newline at end of file diff --git a/docs/modules/combat/ignite.mdx b/docs/modules/combat/ignite.mdx new file mode 100644 index 0000000..a90b60b --- /dev/null +++ b/docs/modules/combat/ignite.mdx @@ -0,0 +1,26 @@ +--- +sidebar_position: 16 +--- + +# Ignite + +Light players up on fire with a flint and steel or fire charge. + +## Settings + +- **Reach** — The maximum distance to ignite targets. +- **Delay** — The delay between ignition attempts. +- **Swap** — Automatically swap to a flint and steel or fire charge. +- **Rotate** (Category) + - **Speed** — Speed of rotation towards the target. +- **Targets** (Category) — *Configure the entity types to target:* + - **Players** (Sub-category): `FriendProtect`, `PrioritizeEnemies` (EnemiesOnly), `IgnoreCreative`. + - **Hostiles** — Target hostile mobs. + - **Passives** (Sub-category): `IgnoreTamed`, `IgnoreNamed`. + - **Neutrals** — Target neutral mobs. + - **Vehicles** — Target boats and minecarts. + +## Commands + +- `ignite` +- `ignite [value]` \ No newline at end of file diff --git a/docs/modules/combat/pvpinfo.mdx b/docs/modules/combat/pvpinfo.mdx new file mode 100644 index 0000000..86c67ec --- /dev/null +++ b/docs/modules/combat/pvpinfo.mdx @@ -0,0 +1,26 @@ +--- +sidebar_position: 17 +--- + +# PvpInfo + +Sends you messages with info relating to pvp. + +## Settings + +- **Potions** (Category) + - **StrengthDetect** — Notify when a nearby player gains the Strength effect. + - **SelfRunOut** (Sub-category) — Notify when your own effects expire: + - `Strength`, `Absorption` +- **Pearls** — Notify when a player throws an ender pearl. +- **VisualRange** (Category) + - **Sound** — Play a sound when a player enters your visual range. + - **IgnoreFriends** — Do not notify for players on your friends list. +- **TotemPops** — Notify when a nearby player's totem pops. +- **SelfPops** — Notify when your own totem pops. +- **32k Detect** — Notify when a player is using a "32k" (super-enchanted) weapon. + +## Commands + +- `pvpinfo` +- `pvpinfo [value]` \ No newline at end of file diff --git a/docs/modules/combat/quiver.mdx b/docs/modules/combat/quiver.mdx new file mode 100644 index 0000000..7526dd0 --- /dev/null +++ b/docs/modules/combat/quiver.mdx @@ -0,0 +1,21 @@ +--- +sidebar_position: 18 +--- + +# Quiver + +Shoots yourself with positive potion effects. + +## Settings + +- **Self** (Category) + - **Cooldown** — The delay between shooting arrows at yourself. + - **WhileMoving** — Allow the module to function while you are moving. + - **Automatic** — Automatically shoots arrows when positive effects run out. + - **Macro** — Trigger shooting via a macro. +- **Others** — Allow shooting positive effect arrows at other players (friends). + +## Commands + +- `quiver` +- `quiver [value]` \ No newline at end of file diff --git a/docs/modules/combat/trigger-bot.mdx b/docs/modules/combat/trigger-bot.mdx new file mode 100644 index 0000000..32a68b7 --- /dev/null +++ b/docs/modules/combat/trigger-bot.mdx @@ -0,0 +1,29 @@ +--- +sidebar_position: 19 +--- + +# TriggerBot + +Automatically attack entities that are on your crosshair. + +## Settings + +- **WeaponCheck** — Only attack while holding a valid weapon (Sword or Axe). +- **AttackSpeed** — The speed at which the bot will click/attack. +- **Targets** (Category) — *Configure the entity types to target:* + - **Players** (Sub-category): + - **FriendProtect** — Do not attack friends. + - **PrioritizeEnemies** — Focus on enemies first. + - **EnemiesOnly** — Only attack players on your enemy list. + - **IgnoreCreative** — Do not attack players in creative mode. + - **Hostiles** — Target hostile mobs. + - **Passives** (Sub-category): + - **IgnoreTamed** — Do not attack tamed animals. + - **IgnoreNamed** — Do not attack entities with custom names. + - **Neutrals** — Target neutral mobs. + - **Vehicles** — Target boats and minecarts. + +## Commands + +- `triggerbot` +- `triggerbot [value]` \ No newline at end of file diff --git a/docs/modules/commands/bind.mdx b/docs/modules/commands/bind.mdx new file mode 100644 index 0000000..d94e05e --- /dev/null +++ b/docs/modules/commands/bind.mdx @@ -0,0 +1,10 @@ +# Bind + +Manage keybinds for features. + +## Syntax + +- `bind del ` +- `bind clear [key]` +- `bind add ` +- `bind list` \ No newline at end of file diff --git a/docs/modules/commands/breed.mdx b/docs/modules/commands/breed.mdx new file mode 100644 index 0000000..fff95bd --- /dev/null +++ b/docs/modules/commands/breed.mdx @@ -0,0 +1,7 @@ +# Breed + +Breeds animals around you. + +## Syntax + +- `breed [range]` \ No newline at end of file diff --git a/docs/modules/commands/clear.mdx b/docs/modules/commands/clear.mdx new file mode 100644 index 0000000..d9e5e85 --- /dev/null +++ b/docs/modules/commands/clear.mdx @@ -0,0 +1,7 @@ +# Clear + +Clear chat and console output. + +## Syntax + +- `clear` \ No newline at end of file diff --git a/docs/modules/commands/config.mdx b/docs/modules/commands/config.mdx new file mode 100644 index 0000000..04cd24f --- /dev/null +++ b/docs/modules/commands/config.mdx @@ -0,0 +1,13 @@ +# Config + +Manage your configs. + +## Syntax + +- `config` +- `config load ` +- `config reload` +- `config list` +- `config save` +- `config create ` +- `config delete ` \ No newline at end of file diff --git a/docs/modules/commands/connect.mdx b/docs/modules/commands/connect.mdx new file mode 100644 index 0000000..d7e7104 --- /dev/null +++ b/docs/modules/commands/connect.mdx @@ -0,0 +1,7 @@ +# Connect + +Connect to servers. + +## Syntax + +- `connect ` \ No newline at end of file diff --git a/docs/modules/commands/coords.mdx b/docs/modules/commands/coords.mdx new file mode 100644 index 0000000..3b99c6e --- /dev/null +++ b/docs/modules/commands/coords.mdx @@ -0,0 +1,7 @@ +# Coords + +Copy your current coords to your clipboard. + +## Syntax + +- `coords` \ No newline at end of file diff --git a/docs/modules/commands/credits.mdx b/docs/modules/commands/credits.mdx new file mode 100644 index 0000000..a828029 --- /dev/null +++ b/docs/modules/commands/credits.mdx @@ -0,0 +1,7 @@ +# Credits + +Get a list of contributors and their contributions. + +## Syntax + +- `credits` \ No newline at end of file diff --git a/docs/modules/commands/deadcoords.mdx b/docs/modules/commands/deadcoords.mdx new file mode 100644 index 0000000..2f8aaaa --- /dev/null +++ b/docs/modules/commands/deadcoords.mdx @@ -0,0 +1,7 @@ +# Deathcoords + +Tells you where you last died. + +## Syntax + +- `deathcoords` \ No newline at end of file diff --git a/docs/modules/commands/disconnect.mdx b/docs/modules/commands/disconnect.mdx new file mode 100644 index 0000000..c48a18c --- /dev/null +++ b/docs/modules/commands/disconnect.mdx @@ -0,0 +1,7 @@ +# Disconnect + +Disconnect from your current game session. + +## Syntax + +- `disconnect` \ No newline at end of file diff --git a/docs/modules/commands/drawn.mdx b/docs/modules/commands/drawn.mdx new file mode 100644 index 0000000..776159e --- /dev/null +++ b/docs/modules/commands/drawn.mdx @@ -0,0 +1,7 @@ +# Drawn + +Toggle visibility of a module in the FeatureList. + +## Syntax + +- `drawn ` \ No newline at end of file diff --git a/docs/modules/commands/enemy.mdx b/docs/modules/commands/enemy.mdx new file mode 100644 index 0000000..dc058b3 --- /dev/null +++ b/docs/modules/commands/enemy.mdx @@ -0,0 +1,10 @@ +# Enemy + +Mark a player as an enemy. + +## Syntax + +- `enemy clear` +- `enemy list` +- `enemy add [alias]` +- `enemy del ` \ No newline at end of file diff --git a/docs/modules/commands/fakeplayer.mdx b/docs/modules/commands/fakeplayer.mdx new file mode 100644 index 0000000..0717c3b --- /dev/null +++ b/docs/modules/commands/fakeplayer.mdx @@ -0,0 +1,11 @@ +# Fakeplayer + +Spawns a fake player in the world. + +## Syntax + +- `fakeplayer` +- `fakeplayer add [name]` +- `fakeplayer del [name]` +- `fakeplayer clear` +- `fakeplayer list` \ No newline at end of file diff --git a/docs/modules/commands/findstronghold.mdx b/docs/modules/commands/findstronghold.mdx new file mode 100644 index 0000000..cc63654 --- /dev/null +++ b/docs/modules/commands/findstronghold.mdx @@ -0,0 +1,7 @@ +# Findstronghold + +Triangulate where the coords to a stronghold can be. + +## Syntax + +- `findstronghold` \ No newline at end of file diff --git a/docs/modules/commands/friend.mdx b/docs/modules/commands/friend.mdx new file mode 100644 index 0000000..6d2a629 --- /dev/null +++ b/docs/modules/commands/friend.mdx @@ -0,0 +1,10 @@ +# Friend + +Mark a player as a friend. + +## Syntax + +- `friend list` +- `friend clear` +- `friend add [alias]` +- `friend del ` \ No newline at end of file diff --git a/docs/modules/commands/hclip.mdx b/docs/modules/commands/hclip.mdx new file mode 100644 index 0000000..cc3d755 --- /dev/null +++ b/docs/modules/commands/hclip.mdx @@ -0,0 +1,7 @@ +# Hclip + +Teleport horizontally. + +## Syntax + +- `hclip ` \ No newline at end of file diff --git a/docs/modules/commands/help.mdx b/docs/modules/commands/help.mdx new file mode 100644 index 0000000..1adac2e --- /dev/null +++ b/docs/modules/commands/help.mdx @@ -0,0 +1,8 @@ +# Help + +Shows a list of all commands. + +## Syntax + +- `help` +- `help ` \ No newline at end of file diff --git a/docs/modules/commands/macro.mdx b/docs/modules/commands/macro.mdx new file mode 100644 index 0000000..530bad9 --- /dev/null +++ b/docs/modules/commands/macro.mdx @@ -0,0 +1,13 @@ +# Macro + +Manage macros. + +## Syntax + +- `macro ` +- `macro create [key]` +- `macro delete ` +- `macro add ` +- `macro remove ` +- `macro bind ` +- `macro list [macro]` \ No newline at end of file diff --git a/docs/modules/commands/modules.mdx b/docs/modules/commands/modules.mdx new file mode 100644 index 0000000..ca24e28 --- /dev/null +++ b/docs/modules/commands/modules.mdx @@ -0,0 +1,7 @@ +# Modules + +Gets a list of modules. + +## Syntax + +- `modules` \ No newline at end of file diff --git a/docs/modules/commands/namemc.mdx b/docs/modules/commands/namemc.mdx new file mode 100644 index 0000000..55cd32b --- /dev/null +++ b/docs/modules/commands/namemc.mdx @@ -0,0 +1,7 @@ +# Namemc + +Opens up a namemc window with the provided name. + +## Syntax + +- `namemc ` \ No newline at end of file diff --git a/docs/modules/commands/notify.mdx b/docs/modules/commands/notify.mdx new file mode 100644 index 0000000..45044bd --- /dev/null +++ b/docs/modules/commands/notify.mdx @@ -0,0 +1,7 @@ +# Notify + +Toggles module toggle notifications. + +## Syntax + +- `notify ` \ No newline at end of file diff --git a/docs/modules/commands/openfolder.mdx b/docs/modules/commands/openfolder.mdx new file mode 100644 index 0000000..cc5fa92 --- /dev/null +++ b/docs/modules/commands/openfolder.mdx @@ -0,0 +1,7 @@ +# Openfolder + +Opens a folder to the rusherhack directory. + +## Syntax + +- `openfolder [subfolder]` \ No newline at end of file diff --git a/docs/modules/commands/panic.mdx b/docs/modules/commands/panic.mdx new file mode 100644 index 0000000..124a9fc --- /dev/null +++ b/docs/modules/commands/panic.mdx @@ -0,0 +1,7 @@ +# Panic + +Turn off all modules. + +## Syntax + +- `panic` \ No newline at end of file diff --git a/docs/modules/commands/peek.mdx b/docs/modules/commands/peek.mdx new file mode 100644 index 0000000..76029f2 --- /dev/null +++ b/docs/modules/commands/peek.mdx @@ -0,0 +1,7 @@ +# Peek + +Look into shulkers while you are holding them. + +## Syntax + +- `peek` \ No newline at end of file diff --git a/docs/modules/commands/pitch.mdx b/docs/modules/commands/pitch.mdx new file mode 100644 index 0000000..5f95122 --- /dev/null +++ b/docs/modules/commands/pitch.mdx @@ -0,0 +1,7 @@ +# Pitch + +Change your pitch. + +## Syntax + +- `pitch ` \ No newline at end of file diff --git a/docs/modules/commands/plugin.mdx b/docs/modules/commands/plugin.mdx new file mode 100644 index 0000000..b5c7e6b --- /dev/null +++ b/docs/modules/commands/plugin.mdx @@ -0,0 +1,8 @@ +# Plugin + +Manage rusherhack plugins. + +## Syntax + +- `plugin` +- `plugin ` \ No newline at end of file diff --git a/docs/modules/commands/prefix.mdx b/docs/modules/commands/prefix.mdx new file mode 100644 index 0000000..cd04e5f --- /dev/null +++ b/docs/modules/commands/prefix.mdx @@ -0,0 +1,7 @@ +# Prefix + +Change the chat command prefix. + +## Syntax + +- `prefix [prefix]` \ No newline at end of file diff --git a/docs/modules/commands/reload.mdx b/docs/modules/commands/reload.mdx new file mode 100644 index 0000000..60f787d --- /dev/null +++ b/docs/modules/commands/reload.mdx @@ -0,0 +1,7 @@ +# Reload + +Reloads RusherHack. + +## Syntax + +- `reload` \ No newline at end of file diff --git a/docs/modules/commands/reset.mdx b/docs/modules/commands/reset.mdx new file mode 100644 index 0000000..2352b57 --- /dev/null +++ b/docs/modules/commands/reset.mdx @@ -0,0 +1,9 @@ +# Reset + +Reset a feature's settings to their defaults. + +## Syntax + +- `reset [setting]` +- `reset modules` +- `reset all` \ No newline at end of file diff --git a/docs/modules/commands/send.mdx b/docs/modules/commands/send.mdx new file mode 100644 index 0000000..7c79470 --- /dev/null +++ b/docs/modules/commands/send.mdx @@ -0,0 +1,7 @@ +# Send + +Send a chat message to the server. + +## Syntax + +- `send ` \ No newline at end of file diff --git a/docs/modules/commands/shutdown.mdx b/docs/modules/commands/shutdown.mdx new file mode 100644 index 0000000..50f1bd3 --- /dev/null +++ b/docs/modules/commands/shutdown.mdx @@ -0,0 +1,7 @@ +# Shutdown + +Stop the client. + +## Syntax + +- `shutdown` \ No newline at end of file diff --git a/docs/modules/commands/toggle.mdx b/docs/modules/commands/toggle.mdx new file mode 100644 index 0000000..40b92b5 --- /dev/null +++ b/docs/modules/commands/toggle.mdx @@ -0,0 +1,7 @@ +# Toggle + +Toggle features on/off. + +## Syntax + +- `toggle [state]` \ No newline at end of file diff --git a/docs/modules/commands/vclip.mdx b/docs/modules/commands/vclip.mdx new file mode 100644 index 0000000..6baf70c --- /dev/null +++ b/docs/modules/commands/vclip.mdx @@ -0,0 +1,7 @@ +# Vclip + +Teleport vertically. + +## Syntax + +- `vclip ` \ No newline at end of file diff --git a/docs/modules/commands/yaw.mdx b/docs/modules/commands/yaw.mdx new file mode 100644 index 0000000..7ac04bf --- /dev/null +++ b/docs/modules/commands/yaw.mdx @@ -0,0 +1,8 @@ +# Yaw + +Change your yaw. + +## Syntax + +- `yaw ` +- `yaw ` \ No newline at end of file diff --git a/docs/modules/features.mdx b/docs/modules/features.mdx new file mode 100644 index 0000000..f9c92cd --- /dev/null +++ b/docs/modules/features.mdx @@ -0,0 +1,7 @@ +--- +sidebar_position: 1 +--- + +# Features + +**will be added later...** \ No newline at end of file diff --git a/docs/modules/hud/armor.mdx b/docs/modules/hud/armor.mdx new file mode 100644 index 0000000..c752beb --- /dev/null +++ b/docs/modules/hud/armor.mdx @@ -0,0 +1,12 @@ +# Armor + +Displays the durability and status of your equipped armor. + +## Settings + +- **Scale** — *Size of this hud element.* +- **Durability** (Enum) — How to display armor durability: + - `Off`, `Percentage`, `Whole` +- **Axis** (Enum): `X`, `Y`. +- **HotbarLock** (Category) + - **AutoAdjust** — Automatically adjusts position to avoid overlapping with the hotbar. \ No newline at end of file diff --git a/docs/modules/hud/biome.mdx b/docs/modules/hud/biome.mdx new file mode 100644 index 0000000..c75c111 --- /dev/null +++ b/docs/modules/hud/biome.mdx @@ -0,0 +1,10 @@ +# Biome + +Displays the current biome you are in. + +## Settings + +- **Color** — The color of the biome name. +- **Label** (Category) + - **Color** — The color of the "Biome" label. +- **Colon** — Toggle the colon between the label and the biome name. \ No newline at end of file diff --git a/docs/modules/hud/crystal-counter.mdx b/docs/modules/hud/crystal-counter.mdx new file mode 100644 index 0000000..9898c30 --- /dev/null +++ b/docs/modules/hud/crystal-counter.mdx @@ -0,0 +1,10 @@ +# CrystalCounter + +Displays the number of End Crystals in your inventory. + +## Settings + +- **Color** — The color of the crystal count value. +- **Label** (Category) + - **Color** — The color of the "Crystals" label. +- **Colon** — Toggle the colon between the label and the value. \ No newline at end of file diff --git a/docs/modules/hud/direction.mdx b/docs/modules/hud/direction.mdx new file mode 100644 index 0000000..a7e02b3 --- /dev/null +++ b/docs/modules/hud/direction.mdx @@ -0,0 +1,14 @@ +# Direction + +Displays the direction you are currently facing. + +## Settings + +- **Color** — The color of the direction text. +- **Axis** (Enum): `X`, `Y`. +- **Label** (Category) + - **Color** — Color of the labels. +- **Colon** — Toggle the colon after the label. +- **Yaw** — Display your current yaw rotation. +- **Pitch** — Display your current pitch rotation. +- **Facing** — Display the cardinal direction (North, South, etc.). \ No newline at end of file diff --git a/docs/modules/hud/dub-counter.mdx b/docs/modules/hud/dub-counter.mdx new file mode 100644 index 0000000..0802ead --- /dev/null +++ b/docs/modules/hud/dub-counter.mdx @@ -0,0 +1,13 @@ +# DubCounter + +Displays the number of "Dubs" (Double Chests) or shulkers nearby. + +## Settings + +- **Color** — The color of the counter text. +- **Axis** (Enum): `X`, `Y`. +- **Label** (Category) + - **Color** — The color of the labels. +- **Colon** — Toggle the colon after the label. +- **Singles** — Count single chests as well. +- **Shulkers** — Specifically count shulkers nearby. \ No newline at end of file diff --git a/docs/modules/hud/feature-list.mdx b/docs/modules/hud/feature-list.mdx new file mode 100644 index 0000000..32774b1 --- /dev/null +++ b/docs/modules/hud/feature-list.mdx @@ -0,0 +1,17 @@ +# FeatureList + +A list of enabled modules. + +## Settings + +- **Color** — The color of the module names in the list. +- **Animations** — Toggle animations when enabling/disabling modules. +- **ColorMode** (Enum) — How colors are applied to the list: + - `Dynamic`, `Static` +- **Sorting** (Enum) — How the list is ordered: + - `Lexicographical`, `Alphabetical` +- **Case** (Enum) — Text casing for module names: + - `Normal`, `Lower Case`, `Upper Case` +- **Metadata** (Enum) — How module settings/metadata are shown: + - `Brackets`, `Normal`, `Off` +- **MetadataColor** — Customize the color of the metadata text. \ No newline at end of file diff --git a/docs/modules/hud/hunger.mdx b/docs/modules/hud/hunger.mdx new file mode 100644 index 0000000..50efe7f --- /dev/null +++ b/docs/modules/hud/hunger.mdx @@ -0,0 +1,12 @@ +# Hunger + +Displays information about your hunger and saturation levels. + +## Settings + +- **Color** — The color of the hunger value. +- **Axis** (Enum): `X`, `Y`. +- **Label** (Category) + - **Color** — Color of the labels. +- **Colon** — Toggle the colon after the label. +- **Saturation** — Display your current saturation level. \ No newline at end of file diff --git a/docs/modules/hud/inventory.mdx b/docs/modules/hud/inventory.mdx new file mode 100644 index 0000000..c16dcc6 --- /dev/null +++ b/docs/modules/hud/inventory.mdx @@ -0,0 +1,10 @@ +# Inventory + +Displays a preview of your inventory on the HUD. + +## Settings + +- **Scale** — *Size of this hud element.* +- **Texture** (Enum) — The background texture of the preview: + - `Off`, `Full`, `Cut` +- **Color** — The color/tint of the inventory preview. \ No newline at end of file diff --git a/docs/modules/hud/keystrokes.mdx b/docs/modules/hud/keystrokes.mdx new file mode 100644 index 0000000..4380a4a --- /dev/null +++ b/docs/modules/hud/keystrokes.mdx @@ -0,0 +1,10 @@ +# Keystrokes + +Displays your current key presses on the HUD. + +## Settings + +- **Scale** — *Size of this hud element.* +- **Color** — Customize the color of the keys. +- **MouseButtons** — Toggle the display of Left and Right mouse buttons. +- **SpaceButton** — Toggle the display of the Space (jump) button. \ No newline at end of file diff --git a/docs/modules/hud/logo.mdx b/docs/modules/hud/logo.mdx new file mode 100644 index 0000000..d3d971c --- /dev/null +++ b/docs/modules/hud/logo.mdx @@ -0,0 +1,7 @@ +# Logo + +Displays the RusherHack logo on your HUD. + +## Settings + +- **Scale** — *Size of this hud element.* \ No newline at end of file diff --git a/docs/modules/hud/macro-list.mdx b/docs/modules/hud/macro-list.mdx new file mode 100644 index 0000000..f8b665e --- /dev/null +++ b/docs/modules/hud/macro-list.mdx @@ -0,0 +1,13 @@ +# MacroList + +Displays a list of your active macros on the HUD. + +## Settings + +- **Color** — The color of the macro names in the list. +- **Animations** — Toggle animations when macros are triggered or updated. +- **ColorMode** (Enum) — How colors are applied to the list: + - `Dynamic`, `Static` +- **Sorting** (Enum) — How the macros are ordered: + - `Lexicographical`, `Alphabetical` +- **Commands** — Toggle the display of the command associated with each macro. \ No newline at end of file diff --git a/docs/modules/hud/memory.mdx b/docs/modules/hud/memory.mdx new file mode 100644 index 0000000..62db442 --- /dev/null +++ b/docs/modules/hud/memory.mdx @@ -0,0 +1,10 @@ +# Memory + +Displays the amount of RAM currently used by Minecraft. + +## Settings + +- **Color** — The color of the memory usage value. +- **Label** (Category) + - **Color** — The color of the "Memory" label. +- **Colon** — Toggle the colon after the label. \ No newline at end of file diff --git a/docs/modules/hud/online-time.mdx b/docs/modules/hud/online-time.mdx new file mode 100644 index 0000000..c17373a --- /dev/null +++ b/docs/modules/hud/online-time.mdx @@ -0,0 +1,7 @@ +# OnlineTime + +Displays how long you have been connected to the current server. + +## Settings + +- **Color** — The color of the time value. \ No newline at end of file diff --git a/docs/modules/hud/ping.mdx b/docs/modules/hud/ping.mdx new file mode 100644 index 0000000..a00d5f8 --- /dev/null +++ b/docs/modules/hud/ping.mdx @@ -0,0 +1,10 @@ +# Ping + +Displays your current ping to the server. + +## Settings + +- **Color** — The color of the ping value. +- **Label** (Category) + - **Color** — The color of the "Ping" label. +- **Colon** — Toggle the colon between the label and the value. \ No newline at end of file diff --git a/docs/modules/hud/player-count.mdx b/docs/modules/hud/player-count.mdx new file mode 100644 index 0000000..1d04800 --- /dev/null +++ b/docs/modules/hud/player-count.mdx @@ -0,0 +1,10 @@ +# PlayerCount + +Displays the total number of players currently on the server. + +## Settings + +- **Color** — The color of the player count value. +- **Label** (Category) + - **Color** — The color of the "Players" label. +- **Colon** — Toggle the colon between the label and the value. \ No newline at end of file diff --git a/docs/modules/hud/player-view.mdx b/docs/modules/hud/player-view.mdx new file mode 100644 index 0000000..a2af879 --- /dev/null +++ b/docs/modules/hud/player-view.mdx @@ -0,0 +1,8 @@ +# PlayerView + +Displays a small 3D model of your player on the HUD. + +## Settings + +- **Scale** — *Size of this hud element.* +- **Forward** — Forces the player model to always face forward. \ No newline at end of file diff --git a/docs/modules/hud/position.mdx b/docs/modules/hud/position.mdx new file mode 100644 index 0000000..44d0633 --- /dev/null +++ b/docs/modules/hud/position.mdx @@ -0,0 +1,17 @@ +# Position + +Displays your current coordinates in the world. + +## Settings + +- **Color** — The color of the coordinate text. +- **Axis** (Enum) — Choose which axes to display: + - `X`, `Y` +- **Interdimensional** (Enum) — Display coordinates for other dimensions (Nether/Overworld): + - `Off`, `Separated`, `Combined`, `Differentiate` +- **InterdimensionalY** — Toggle the Y-level for interdimensional coordinates. +- **Label** (Category) + - **Colon** — Toggle the colon after the axis label. + - **Color** — Color of the labels. +- **Comma** — Use commas to separate X, Y, and Z. +- **Decimals** — Number of decimal places to show for coordinates. \ No newline at end of file diff --git a/docs/modules/hud/potion-effects.mdx b/docs/modules/hud/potion-effects.mdx new file mode 100644 index 0000000..be61fdd --- /dev/null +++ b/docs/modules/hud/potion-effects.mdx @@ -0,0 +1,14 @@ +# PotionEffects + +Displays your currently active potion effects and their remaining time. + +## Settings + +- **Color** — The color of the effect names. +- **Animations** — Toggle animations for the list (e.g., sliding when effects expire). +- **ColorMode** (Enum): `Dynamic`, `Static`. +- **Sorting** (Enum): `Lexicographical`, `Alphabetical`. +- **Icons** — Toggle the display of potion effect icons. +- **Duration** (Category) + - **Parentheses** — Enclose the remaining time in parentheses. + - **Color** — The color of the duration text. \ No newline at end of file diff --git a/docs/modules/hud/profile.mdx b/docs/modules/hud/profile.mdx new file mode 100644 index 0000000..49b5d90 --- /dev/null +++ b/docs/modules/hud/profile.mdx @@ -0,0 +1,10 @@ +# Profile + +Displays the current configuration profile name. + +## Settings + +- **Color** — The color of the profile name text. +- **Label** (Category) + - **Color** — The color of the "Profile" label. +- **Colon** — Toggle the display of a colon between the label and name. \ No newline at end of file diff --git a/docs/modules/hud/queue.mdx b/docs/modules/hud/queue.mdx new file mode 100644 index 0000000..d2d001c --- /dev/null +++ b/docs/modules/hud/queue.mdx @@ -0,0 +1,11 @@ +# Queue + +Displays your position in the server queue (e.g., for 2b2t). + +## Settings + +- **Color** — The color of the queue position text. +- **Axis** (Enum) — Choose which axes to display: + - `X`, `Y` +- **Normal** — Standard display mode. +- **Priority** — Display priority queue status if available. \ No newline at end of file diff --git a/docs/modules/hud/tps.mdx b/docs/modules/hud/tps.mdx new file mode 100644 index 0000000..852d3d8 --- /dev/null +++ b/docs/modules/hud/tps.mdx @@ -0,0 +1,13 @@ +# TPS + +Displays the server's Ticks Per Second (TPS). + +## Settings + +- **Color** — The color of the TPS value. +- **Label** (Category) + - **Color** — The color of the "TPS" label. +- **Colon** — Toggle the colon after the label. +- **Mode** (Enum) — Choose how to display TPS: + - `Ticks`, `Tick Length` +- **Clamped** — Clamps the TPS value to a maximum of 20.0. \ No newline at end of file diff --git a/docs/modules/hud/watermark.mdx b/docs/modules/hud/watermark.mdx new file mode 100644 index 0000000..a4cd287 --- /dev/null +++ b/docs/modules/hud/watermark.mdx @@ -0,0 +1,8 @@ +# Watermark + +Displays the client watermark on your screen. + +## Settings + +- **Color** — Customize the color of the watermark text. +- **Text** — Change the displayed text (e.g., "RusherHack"). \ No newline at end of file diff --git a/docs/modules/misc/anti-afk.mdx b/docs/modules/misc/anti-afk.mdx new file mode 100644 index 0000000..64c9975 --- /dev/null +++ b/docs/modules/misc/anti-afk.mdx @@ -0,0 +1,21 @@ +# AntiAFK + +Do things to prevent afk kick. + +## Settings + +- **Delay** — The delay between performing AFK actions. +- **FocusedCheck** — Only perform actions if the Minecraft window is not focused. +- **ActivityCheck** (Category) + - **Delay** — How long to wait for player inactivity before starting AntiAFK. +- **Jump** — Jump periodically. +- **Swing** — Swing your arm periodically. +- **Rotate** — Rotate your head periodically. +- **Sneak** — Sneak and unsneak periodically. +- **Move** — Move slightly back and forth. +- **/stats** — Automatically send the /stats command. + +## Commands + +- `antiafk` +- `antiafk [value]` \ No newline at end of file diff --git a/docs/modules/misc/anti-aim.mdx b/docs/modules/misc/anti-aim.mdx new file mode 100644 index 0000000..e52a09f --- /dev/null +++ b/docs/modules/misc/anti-aim.mdx @@ -0,0 +1,17 @@ +# AntiAim + +Makes you look crazy. + +## Settings + +- **Yaw** (Enum): `Reverse`, `Custom`, `Spin`, `Jitter`, `Sideways`, `Off`. +- **Pitch** (Enum): `Custom`, `Reverse`, `Down`, `Up`, `Stutter`, `Off`. +- **SpinSpeed** — Speed of rotation for the Spin mode. +- **CustomYaw** — The specific angle for Custom yaw mode. +- **CustomPitch** — The specific angle for Custom pitch mode. +- **2b2t** — Optimization for the 2b2t server. + +## Commands + +- `antiaim` +- `antiaim [value]` \ No newline at end of file diff --git a/docs/modules/misc/anti-hunger.mdx b/docs/modules/misc/anti-hunger.mdx new file mode 100644 index 0000000..a9e6b71 --- /dev/null +++ b/docs/modules/misc/anti-hunger.mdx @@ -0,0 +1,14 @@ +# AntiHunger + +Reduces hunger loss. + +## Settings + +- **ElytraCheck** — Do not apply AntiHunger while flying with an elytra. +- **Ground** — Spoofs the on-ground state to reduce hunger. +- **Sprint** — Reduces hunger loss while sprinting. + +## Commands + +- `antihunger` +- `antihunger [value]` \ No newline at end of file diff --git a/docs/modules/misc/anti-packet.mdx b/docs/modules/misc/anti-packet.mdx new file mode 100644 index 0000000..6e50b82 --- /dev/null +++ b/docs/modules/misc/anti-packet.mdx @@ -0,0 +1,16 @@ +# AntiPacket + +Allows you to cancel certain packets. + +## Settings + +- **Debug** — Show information about cancelled packets in the console. +- **Clientbound** (Category) — *Toggle packets to cancel from server:* + - AddEntity, AddExperienceOrb, AddPlayer, Animate, AwardStats, BlockChangedAck, BlockDestruction, BlockEntityData, BlockEvent, BlockUpdate, BossEvent, Bundle, ChangeDifficulty, ChunksBiomes, ClearTitles, CommandSuggestions, Commands, ContainerClose, ContainerSetContent, ContainerSetData, ContainerSetSlot, Cooldown, CustomChatCompletions, CustomPayload, DamageEvent, DeleteChat, Disconnect, DisguisedChat, EntityEvent, Explode, ForgetLevelChunk, GameEvent, HorseScreenOpen, HurtAnimation, InitializeBorder, KeepAlive, LevelChunkWithLight, LevelEvent, LevelParticles, LightUpdate, Login, MapItemData, MerchantOffers, MoveEntity.Pos, MoveEntity.PosRot, MoveEntity.Rot, MoveVehicle, OpenBook, OpenScreen, OpenSignEditor, Ping, PlaceGhostRecipe, PlayerAbilities, PlayerChat, PlayerCombatEnd, PlayerCombatEnter, PlayerCombatKill, PlayerInfoRemove, PlayerInfoUpdate, PlayerLookAt, PlayerPosition, Recipe, RemoveEntities, RemoveMobEffect, ResourcePack, Respawn, RotateHead, SectionBlocksUpdate, SelectAdvancementsTab, ServerData, SetActionBarText, SetBorderCenter, SetBorderLerpSize, SetBorderSize, SetBorderWarningDelay, SetBorderWarningDistance, SetCamera, SetCarriedItem, SetChunkCacheCenter, SetChunkCacheRadius, SetDefaultSpawnPosition, SetDisplayObjective, SetEntityData, SetEntityLink, SetEntityMotion, SetEquipment, SetExperience, SetHealth, SetObjective, SetPassengers, SetPlayerTeam, SetScore, SetSimulationDistance, SetSubtitleText, SetTime, SetTitleText, SetTitlesAnimation, Sound, SoundEntity, StopSound, SystemChat, TabList, TagQuery, TakeItemEntity, TeleportEntity, UpdateAdvancements, UpdateAttributes, UpdateEnabledFeatures, UpdateMobEffect, UpdateRecipes, UpdateTags. +- **Serverbound** (Category) — *Toggle packets to cancel from client:* + - AcceptTeleportation, BlockEntityTagQuery, ChangeDifficulty, Chat, ChatAck, ChatCommand, ChatSessionUpdate, ClientCommand, ClientInformation, CommandSuggestion, ContainerButtonClick, ContainerClick, ContainerClose, CustomPayload, EditBook, EntityTagQuery, Interact, JigsawGenerate, KeepAlive, LockDifficulty, MovePlayer.Pos, MovePlayer.PosRot, MovePlayer.Rot, MovePlayer.StatusOnly, MoveVehicle, PaddleBoat, PickItem, PlaceRecipe, PlayerAbilities, PlayerAction, PlayerCommand, PlayerInput, Pong, RecipeBookChangeSettings, RecipeBookSeenRecipe, RenameItem, ResourcePack, SeenAdvancements, SelectTrade, SetBeacon, SetCarriedItem, SetCommandBlock, SetCommandMinecart, SetCreativeModeSlot, SetJigsawBlock, SetStructureBlock, SignUpdate, Swing, TeleportToEntity, UseItem, UseItemOn. + +## Commands + +- `antipacket` +- `antipacket [value]` \ No newline at end of file diff --git a/docs/modules/misc/anti-quit.mdx b/docs/modules/misc/anti-quit.mdx new file mode 100644 index 0000000..91fe259 --- /dev/null +++ b/docs/modules/misc/anti-quit.mdx @@ -0,0 +1,13 @@ +# AntiQuit + +Prevents accidental disconnects and game closes. + +## Settings + +- **Disconnect** — Adds a confirmation prompt when trying to disconnect. +- **GameClose** — Adds a confirmation prompt when trying to close Minecraft. + +## Commands + +- `antiquit` +- `antiquit [value]` \ No newline at end of file diff --git a/docs/modules/misc/auto-accept.mdx b/docs/modules/misc/auto-accept.mdx new file mode 100644 index 0000000..1339925 --- /dev/null +++ b/docs/modules/misc/auto-accept.mdx @@ -0,0 +1,15 @@ +# AutoAccept + +Automatically accept tpa requests and duel requests. + +## Settings + +- **Deny** — Automatically deny requests from specific players. +- **Friends** — Automatically accept requests from friends. +- **TPA** — Automatically accept teleport requests. +- **Duels** — Automatically accept duel requests. + +## Commands + +- `autoaccept` +- `autoaccept [value]` \ No newline at end of file diff --git a/docs/modules/misc/auto-mount.mdx b/docs/modules/misc/auto-mount.mdx new file mode 100644 index 0000000..91051e9 --- /dev/null +++ b/docs/modules/misc/auto-mount.mdx @@ -0,0 +1,17 @@ +# AutoMount + +Automatically mount entities. + +## Settings + +- **Targets** (Category) — Choose which entities to mount automatically: + - **Horses**, **Donkeys**, **Llamas**, **Boats**, **Minecarts**, **Pigs**, **Beds**. +- **Range** — The maximum distance to reach for mounting. +- **Delay** — The delay between mounting attempts. +- **Tamed** — Only attempt to mount tamed entities. +- **Rotate** — Rotate towards the entity before mounting. + +## Commands + +- `automount` +- `automount [value]` \ No newline at end of file diff --git a/docs/modules/misc/auto-nametag.mdx b/docs/modules/misc/auto-nametag.mdx new file mode 100644 index 0000000..56521b2 --- /dev/null +++ b/docs/modules/misc/auto-nametag.mdx @@ -0,0 +1,22 @@ +# AutoNametag + +Automatically rename entities nearby. + +## Settings + +- **Mode** (Enum): `Blacklist`, `Whitelist`, `All`. +- **IgnoreNamed** — *Ignore already named entities.* +- **Swap** (Category) — *Automatically swaps to nametags:* + - **Silent** — *Swap server side only.* + - **Return** — *Returns to the previous item you were holding.* +- **Rotate** (Category) + - **Speed** — Speed of rotation towards the entity. +- **Range** — Maximum distance to rename entities. +- **Delay** — Delay between renaming. + +## Commands + +- `autonametag` +- `autonametag [value]` +- `autonametag whitelist list/clear/remove/add` +- `autonametag blacklist list/clear/remove/add` \ No newline at end of file diff --git a/docs/modules/misc/auto-reconnect.mdx b/docs/modules/misc/auto-reconnect.mdx new file mode 100644 index 0000000..09b8ad1 --- /dev/null +++ b/docs/modules/misc/auto-reconnect.mdx @@ -0,0 +1,13 @@ +# AutoReconnect + +Automatically reconnect to servers. + +## Settings + +- **Delay** — The delay in seconds before attempting to reconnect. +- **Hide** — Hide the AutoReconnect button on the disconnect screen. + +## Commands + +- `autoreconnect` +- `autoreconnect [value]` \ No newline at end of file diff --git a/docs/modules/misc/auto-respawn.mdx b/docs/modules/misc/auto-respawn.mdx new file mode 100644 index 0000000..be9d2ec --- /dev/null +++ b/docs/modules/misc/auto-respawn.mdx @@ -0,0 +1,13 @@ +# AutoRespawn + +Automatically respawn when you die. + +## Settings + +- **DeathCoords** — Automatically prints your death coordinates in chat. +- **Delay** — The delay before respawning. + +## Commands + +- `autorespawn` +- `autorespawn [value]` \ No newline at end of file diff --git a/docs/modules/misc/auto-shear.mdx b/docs/modules/misc/auto-shear.mdx new file mode 100644 index 0000000..a762029 --- /dev/null +++ b/docs/modules/misc/auto-shear.mdx @@ -0,0 +1,19 @@ +# AutoShear + +Automatically shears mobs. + +## Settings + +- **Range** — The maximum distance to reach and shear mobs. +- **AutoSwap** — Automatically switches to shears in your hotbar. +- **Rotate** — Rotates your head towards the mob being sheared. +- **Render** — Visualizes the shearing process or target. +- **Targets** (Category) — *Choose which entities to shear:* + - **Sheep** — Automatically shear wool from sheep. + - **MushroomCows** — Automatically shear mushrooms from Mooshrooms. + - **SnowGolems** — Automatically shear pumpkins from snow golems. + +## Commands + +- `autoshear` +- `autoshear [value]` \ No newline at end of file diff --git a/docs/modules/misc/auto-trader.mdx b/docs/modules/misc/auto-trader.mdx new file mode 100644 index 0000000..37bbc50 --- /dev/null +++ b/docs/modules/misc/auto-trader.mdx @@ -0,0 +1,18 @@ +# AutoTrader + +Automatically trades with villagers. + +## Settings + +- **Mode** (Enum): `All`, `Whitelist`. +- **AutoOpen** (Category) + - **Range** — Maximum distance to open trader. + - **Rotate** — Rotate towards the villager. +- **AutoClose** — Automatically close the trading GUI. +- **Delay** — Delay between trades. +- **Debug** — Show debug info for trades. + +## Commands + +- `autotrader` +- `autotrader trades ` \ No newline at end of file diff --git a/docs/modules/misc/extra-chest.mdx b/docs/modules/misc/extra-chest.mdx new file mode 100644 index 0000000..1717905 --- /dev/null +++ b/docs/modules/misc/extra-chest.mdx @@ -0,0 +1,26 @@ +# ExtraChest + +Automatically steal/fill items from containers. + +## Settings + +- **Buttons** — *Add Steal/Fill buttons to container guis.* +- **Mode** (Enum): `Steal`, `Fill`, `Drop`, `Off`. +- **StealMode** (Enum): `All`, `Whitelist`, `Blacklist`. +- **FillMode** (Enum): `All`, `Whitelist`, `Blacklist`. +- **DropMode** (Enum): `All`, `Whitelist`, `Blacklist`. +- **StealDelay** — Delay between stealing items. +- **FillDelay** — Delay between filling items. +- **DropDelay** — Delay between dropping items. +- **Search** (Category) + - **Save** — Save search queries. + - **Filter** — Filter items in the container. + - **Color** — Color of the search highlight. +- **ShulkerHighlight** (Category) + - **Color** — Color of the highlight for shulkers. + +## Commands + +- `extrachest` +- `extrachest [value]` +- `extrachest [item]` \ No newline at end of file diff --git a/docs/modules/misc/extra-craft.mdx b/docs/modules/misc/extra-craft.mdx new file mode 100644 index 0000000..88b68da --- /dev/null +++ b/docs/modules/misc/extra-craft.mdx @@ -0,0 +1,17 @@ +# ExtraCraft + +Modifications to crafting. + +## Settings + +- **AutoCraft** (Category) + - **Recipe** — Select the recipe to craft automatically. +- **FastCraft** — Speed up the crafting process. +- **Inventory** — Craft items using the player inventory. +- **Delay** — Delay between crafting actions. + +## Commands + +- `extracraft` +- `extracraft [value]` +- `extracraft get ` \ No newline at end of file diff --git a/docs/modules/misc/extra-screenshot.mdx b/docs/modules/misc/extra-screenshot.mdx new file mode 100644 index 0000000..4be512f --- /dev/null +++ b/docs/modules/misc/extra-screenshot.mdx @@ -0,0 +1,13 @@ +# ExtraScreenshot + +Upload your screenshots to the web automatically. + +## Settings + +- **Mode** (Enum): `Upload`, `Copy`. +- **Save** — Save the screenshot locally as well. + +## Commands + +- `extrascreenshot` +- `extrascreenshot [value]` \ No newline at end of file diff --git a/docs/modules/misc/extra-sign.mdx b/docs/modules/misc/extra-sign.mdx new file mode 100644 index 0000000..6b04a4e --- /dev/null +++ b/docs/modules/misc/extra-sign.mdx @@ -0,0 +1,20 @@ +# ExtraSign + +Modifications to signs. + +## Settings + +- **ColoredSigns** — Use color codes on signs. +- **AutoSign** (Category) + - **Line1**, **Line2**, **Line3**, **Line4** — Default text lines. + - **AutoUpdate** — Automatically update sign text. + - **AutoClose** — Automatically close the sign GUI after placing. +- **DateAppend** (Category) + - **Line** — Which line to append the date to. + - **Format** — The date format to use. +- **Strict** — Enforce strict sign editing checks. + +## Commands + +- `extrasign` +- `extrasign [value]` \ No newline at end of file diff --git a/docs/modules/misc/extra-tab.mdx b/docs/modules/misc/extra-tab.mdx new file mode 100644 index 0000000..2919129 --- /dev/null +++ b/docs/modules/misc/extra-tab.mdx @@ -0,0 +1,22 @@ +# ExtraTab + +Modifications to the tablist. + +## Settings + +- **Sorting** (Enum): `Normal`, `Friends`, `Ping`, `Length`. +- **Ping** (Enum): `Normal`, `Number`, `Off`. +- **OnlyShow** (Category) + - **Friends**, **Enemies**. +- **Players** — Toggle player names in the tablist. +- **MaxHeight** — *Change the maximum number of rows before creating a new column.* +- **Toggle** — Toggle the visibility of the tablist modification. +- **Colors** (Category) + - **Background**, **Item**, **Names**. + - **Self** (Sub-category): `Color`. + - **Friends**, **Enemies**. + +## Commands + +- `extratab` +- `extratab [value]` \ No newline at end of file diff --git a/docs/modules/misc/extra-tooltips.mdx b/docs/modules/misc/extra-tooltips.mdx new file mode 100644 index 0000000..b8068c5 --- /dev/null +++ b/docs/modules/misc/extra-tooltips.mdx @@ -0,0 +1,30 @@ +# ExtraTooltips + +Adds better item tooltips to the game. + +## Settings + +- **Maps** (Category) + - **Slot** — *Render map preview in the slot of the item.* + - **Cache** — *Save map images to a file.* + - **Scale** — Scale of the map preview. +- **Shulkers** (Category) + - **Summary** — Show a summary of items inside. + - **Locking** (Sub-category): `Bind`. + - **DynamicColor** — Use the shulker's color for the tooltip. + - **Color** — Static color for shulker tooltips. + - **ShowRevertedIllegals** — Display reverted illegal items. +- **EnderChests** (Category) + - **Color** — Color of the Ender Chest tooltip. +- **ChatEmbed** (Category) — *Preview image links posted in chat:* + - **Size**, **Enlarge**. +- **Books** (Category) + - **Scale** — Scale of the book preview. +- **Bees** — Show information about bees inside hives. +- **NBTData** — Show raw NBT data of items. +- **Size** — Show stack size in tooltips. + +## Commands + +- `extratooltips` +- `extratooltips [value]` \ No newline at end of file diff --git a/docs/modules/misc/gamemode.mdx b/docs/modules/misc/gamemode.mdx new file mode 100644 index 0000000..a035d5d --- /dev/null +++ b/docs/modules/misc/gamemode.mdx @@ -0,0 +1,12 @@ +# Gamemode + +Change your gamemode client-side. + +## Settings + +- **Gamemode** (Enum): `Survival`, `Creative`, `Spectator`, `Adventure`. + +## Commands + +- `gamemode` +- `gamemode [value]` \ No newline at end of file diff --git a/docs/modules/misc/hitbox-ignore.mdx b/docs/modules/misc/hitbox-ignore.mdx new file mode 100644 index 0000000..79a346b --- /dev/null +++ b/docs/modules/misc/hitbox-ignore.mdx @@ -0,0 +1,16 @@ +# HitboxIgnore + +Ignore entity hitboxes when mining. + +## Settings + +- **PickaxeOnly** — Only ignore hitboxes when holding a pickaxe. +- **RightClickCompatibility** — Enable compatibility for right-click actions. +- **Entities** (Category) — Choose which hitboxes to ignore: + - **Players**, **Crystals**, **Hostiles**, **Passives**, **Neutrals**, **Vehicles**. +- **Blocks** — Ignore specific block hitboxes. + +## Commands + +- `hitboxignore` +- `hitboxignore blocks [block]` \ No newline at end of file diff --git a/docs/modules/misc/no-force-rotate.mdx b/docs/modules/misc/no-force-rotate.mdx new file mode 100644 index 0000000..d7c4635 --- /dev/null +++ b/docs/modules/misc/no-force-rotate.mdx @@ -0,0 +1,8 @@ +# NoForceRotate + +Prevents the server from rotating you. + +## Commands + +- `noforcerotate` +- `noforcerotate [value]` \ No newline at end of file diff --git a/docs/modules/misc/notifier.mdx b/docs/modules/misc/notifier.mdx new file mode 100644 index 0000000..f4ce810 --- /dev/null +++ b/docs/modules/misc/notifier.mdx @@ -0,0 +1,22 @@ +# Notifier + +Get toast notifications on your computer. + +## Settings + +- **InGame** (Category) + - **Info** — Show general information notifications in-game. +- **Queue** — Notify when your position in the server queue changes. +- **Damage** — Notify when you take damage. +- **Death** — Notify when you die. +- **Disconnect** — Notify when you are disconnected from a server. +- **Mention** — Notify when your name is mentioned in chat. +- **Whisper** — Notify when you receive a private message. +- **TotemPop** — Notify when a totem is popped. +- **FocusedCheck** — Only send computer notifications if the Minecraft window is not focused. +- **ServerMessages** — Notify when specific server-side messages are received. + +## Commands + +- `notifications` +- `notifications [value]` \ No newline at end of file diff --git a/docs/modules/misc/ping-spoof.mdx b/docs/modules/misc/ping-spoof.mdx new file mode 100644 index 0000000..b6a9343 --- /dev/null +++ b/docs/modules/misc/ping-spoof.mdx @@ -0,0 +1,17 @@ +# PingSpoof + +Spoof your ping. + +## Settings + +- **Mode** (Enum) — The method of spoofing: + - `Spoof`, `Delay` +- **DelayMode** (Enum) — Direction of the delay: + - `Out` — Delay outgoing packets. + - `In` — Delay incoming packets. +- **Delay** — The amount of delay to apply (in milliseconds). + +## Commands + +- `pingspoof` +- `pingspoof [value]` \ No newline at end of file diff --git a/docs/modules/misc/portal-gui.mdx b/docs/modules/misc/portal-gui.mdx new file mode 100644 index 0000000..0bd7f9c --- /dev/null +++ b/docs/modules/misc/portal-gui.mdx @@ -0,0 +1,8 @@ +# PortalGui + +Allows you to open guis like chat while in a portal. + +## Commands + +- `portalgui` +- `portalgui [value]` \ No newline at end of file diff --git a/docs/modules/misc/skin-blink.mdx b/docs/modules/misc/skin-blink.mdx new file mode 100644 index 0000000..31c2f80 --- /dev/null +++ b/docs/modules/misc/skin-blink.mdx @@ -0,0 +1,15 @@ +# SkinBlink + +Flash skin layers on and off. + +## Settings + +- **Mode** (Enum): + - `All` — Toggle all layers at once. + - `Random` — Toggle skin layers randomly. +- **Delay** — The speed at which skin layers toggle. + +## Commands + +- `skinblink` +- `skinblink [value]` \ No newline at end of file diff --git a/docs/modules/movement/auto-walk.mdx b/docs/modules/movement/auto-walk.mdx new file mode 100644 index 0000000..6ae6441 --- /dev/null +++ b/docs/modules/movement/auto-walk.mdx @@ -0,0 +1,20 @@ +--- +sidebar_position: 1 +--- + +# AutoWalk + +Automatically walks. + +## Settings + +- **OnlyElytra** — Only automatically walk when you have an elytra equipped. +- **PauseWhileEating** — Stop walking while you are using or eating an item. +- **PauseOnLag** (Category) + - **Delay** — The delay before resuming walking after lag is detected. +- **Debug** — Displays debug information related to AutoWalk logic. + +## Commands + +- `autowalk` +- `autowalk [value]` \ No newline at end of file diff --git a/docs/modules/movement/boat-fly.mdx b/docs/modules/movement/boat-fly.mdx new file mode 100644 index 0000000..319ec71 --- /dev/null +++ b/docs/modules/movement/boat-fly.mdx @@ -0,0 +1,31 @@ +--- +sidebar_position: 2 +--- + +# BoatFly + +Fly with boats. + +## Settings + +- **Speed** — The horizontal speed of the boat fly. +- **Vertical** — The vertical speed of the boat fly. +- **FixYaw** — Locks the boat's rotation to your camera. +- **Duck** — Allows the boat to fly downwards. +- **NCP** (Category) + - **TicksToPause** — Amount of ticks to pause for NCP. + - **ConsecutiveLagBacks** — Threshold for lagbacks before stopping. +- **AntiKick** (Category) + - **Mode** — *(Enum)* The method used to prevent kicking. + - **Glide** — Slowly glides down to prevent detection. + - **Offset** — The y-offset for the antikick. + - **Frequency** — How often the antikick triggers. + - **Ascending** (Sub-category) + - **Frequency** — Frequency specifically for ascending movement. +- **ToggleOnDisconnect** — Automatically disables the module on disconnect. +- **BoatScale** — Modifies the visual size of the boat. + +## Commands + +- `boatfly` +- `boatfly [value]` \ No newline at end of file diff --git a/docs/modules/movement/elytra-flight.mdx b/docs/modules/movement/elytra-flight.mdx new file mode 100644 index 0000000..07bcd1a --- /dev/null +++ b/docs/modules/movement/elytra-flight.mdx @@ -0,0 +1,77 @@ +--- +sidebar_position: 3 +--- + +# ElytraFly + +Fly easier with elytras. + +## Settings + +- **Mode** (Enum) — The flight mode to use: + - `Control`, `Boost`, `Packet`, `Bounce`, `Off` +- **TakeOff** (Category) — Automatically take off when you jump: + - **Descending** — Only activate when you are falling back down; Useful for 1.12.2 servers. + - **Timer** — Uses timer to assist in taking off. +- **AutoRedeploy** — Automatically redeploy into elytra if the server un-deploys you. +- **PauseInLiquids** — Stops the module when you are in water or lava. + +### Control Settings +- **Acceleration** (Category): + - **Speed** — How fast you accelerate. + - **MaxSpeed** — The maximum speed allowed in this mode. +- **Speed** — Constant horizontal speed. +- **VerticalSpeed** — Speed when ascending or descending. +- **Fireworks** (Category) — Use firework rockets while flying: + - **Inventory** — Pull fireworks from inventory. + - **LagRedeploy** — Redeploy on lag detection. + - **NoIdle** — Don't use fireworks while idle. + - **DelayedAscend** — Delays ascending after using a firework. + - **Await** — Waits for specific conditions. + - **DelayMode** (Enum): `Dynamic`, `Static`. + - **StaticDelay** — The delay used in Static mode. +- **Ascend** (Enum): + - `Aim`, `Jump`, `Off` +- **GlideSpeed** — Speed while gliding without active input. + +### Boost Settings +- **Acceleration** (Category): `Speed`, `MaxSpeed`. +- **Automatic** (Category): + - **BoostTicks** — Number of ticks to boost for. + - **TargetY** — The minimum Y level to ascend to. + - **MaximumY** — The maximum Y level to ascend to. + - **EmergeSpeed** — Speed required to start ascending in km/h. + - **Constant** — Boost constantly. + - **Stabilize** — Hold glide while above TargetY. + - **EmergePitch** — Pitch used when emerging. + - **GainPitch** — Pitch used to gain altitude. +- **Speed** — Movement speed. +- **SpeedLimit** — Maximum speed to reach in km/h. +- **UpdatedNCP** — Increase speed after a rubberband. +- **PitchCheck** — Only boost while looking down. +- **UseForward** — Boost while holding forward. +- **Pause** — Pause boosting. + +### Packet Settings +- **Acceleration** (Category): `Speed`, `MaxSpeed`. +- **Speed** — Horizontal speed. +- **OnGround** — Stay on ground while flying. +- **AutoRestart** — Restarts the flight if stopped. +- **AntiAFK** — Prevents being kicked for AFK. + +### Bounce Settings +- **Acceleration** (Category): `Speed`, `MaxSpeed`. +- **PitchSpoof** (Category): + - **Pitch** — The spoofed pitch angle. + - **Control** — Only activate while looking down. +- **Packet** — Prevent durability loss. +- **Boost** (Category): `Speed`. +- **Delay** — Bypass 2b2t's anticheat. +- **AutoJump** — Automatically jump to start the bounce. + +- **Debug** — Shows debug information. + +## Commands + +- `elytrafly` +- `elytrafly [value]` \ No newline at end of file diff --git a/docs/modules/movement/elytra-tweaks.mdx b/docs/modules/movement/elytra-tweaks.mdx new file mode 100644 index 0000000..71af804 --- /dev/null +++ b/docs/modules/movement/elytra-tweaks.mdx @@ -0,0 +1,24 @@ +--- +sidebar_position: 4 +--- + +# ElytraTweaks + +Quality of life improvements for elytra flying. + +## Settings + +- **FixRocketDesync** — Fixes the desync that occurs when using firework rockets. +- **NoBounce** — Prevents the player from bouncing off blocks while flying. +- **Burst** (Category) + - **Delay** — The delay between burst speed applications. + - **Speed** — The speed of the burst. + - **MaxSpeed** — The maximum allowed burst speed. +- **GrimRocket** — Extend the lifespan of firework rockets on 2b2t. +- **OnGround** — Apply tweaks even when considered on the ground. +- **Inventory** — Allow tweaks to function while the inventory is open. + +## Commands + +- `elytratweaks` +- `elytratweaks [value]` \ No newline at end of file diff --git a/docs/modules/movement/entity-control.mdx b/docs/modules/movement/entity-control.mdx new file mode 100644 index 0000000..e78d3e2 --- /dev/null +++ b/docs/modules/movement/entity-control.mdx @@ -0,0 +1,18 @@ +--- +sidebar_position: 5 +--- + +# EntityControl + +Ride entities without saddles and modify their speed. + +## Settings + +- **Control** — Allows you to control entities without a saddle. +- **HorseJump** — Allows you to control horse jump height. +- **BoatFixYaw** — Locks the boat's rotation to your camera. + +## Commands + +- `entitycontrol` +- `entitycontrol [value]` \ No newline at end of file diff --git a/docs/modules/movement/entity-speed.mdx b/docs/modules/movement/entity-speed.mdx new file mode 100644 index 0000000..8bf8b8e --- /dev/null +++ b/docs/modules/movement/entity-speed.mdx @@ -0,0 +1,18 @@ +--- +sidebar_position: 6 +--- + +# EntitySpeed + +Make entities go faster. + +## Settings + +- **Speed** — The speed multiplier for the entity. +- **TPSSync** — *Syncs speed to the server TPS.* +- **Strict** — *Pause when approaching obstacle.* + +## Commands + +- `entityspeed` +- `entityspeed [value]` \ No newline at end of file diff --git a/docs/modules/movement/flight.mdx b/docs/modules/movement/flight.mdx new file mode 100644 index 0000000..723e63c --- /dev/null +++ b/docs/modules/movement/flight.mdx @@ -0,0 +1,24 @@ +--- +sidebar_position: 7 +--- + +# Flight + +Fly like a bird. + +## Settings + +- **Mode** (Enum) — The flight logic to use: + - `Normal`, `Creative` +- **Speed** — The horizontal movement speed while flying. +- **VerticalSpeed** — The speed of moving up or down. +- **AntiKick** (Category) + - **BobFix** — Prevents the view bobbing effect that can trigger some anti-cheats. +- **Acceleration** (Category) + - **Speed** — How fast you reach the maximum flight speed. + - **MaxSpeed** — The top speed allowed for acceleration. + +## Commands + +- `flight` +- `flight [value]` \ No newline at end of file diff --git a/docs/modules/movement/ice-speed.mdx b/docs/modules/movement/ice-speed.mdx new file mode 100644 index 0000000..8105272 --- /dev/null +++ b/docs/modules/movement/ice-speed.mdx @@ -0,0 +1,16 @@ +--- +sidebar_position: 8 +--- + +# IceSpeed + +Go fast on ice. + +## Settings + +- **Speed** — The multiplier for movement speed while on ice. + +## Commands + +- `icespeed` +- `icespeed [value]` \ No newline at end of file diff --git a/docs/modules/movement/inventory-move.mdx b/docs/modules/movement/inventory-move.mdx new file mode 100644 index 0000000..f62e7ef --- /dev/null +++ b/docs/modules/movement/inventory-move.mdx @@ -0,0 +1,26 @@ +--- +sidebar_position: 9 +--- + +# InventoryMove + +Move and look around while in an inventory screen. + +## Settings + +- **Mode** (Enum) — The bypass mode for different anticheats: + - `New Grim`, `Ncp`, `Vanilla` +- **Look** (Category) + - **Always** — Allows looking around at all times while in a screen. + - **Speed** — Adjusts the rotation speed while a screen is open. +- **Screens** (Category) — Choose which screens to allow movement in: + - **Containers** — Chests, shulkers, hoppers, etc. + - **ClickGui** — The RusherHack main menu. + - **HudEditor** — The HUD customization screen. + - **EscapeMenu** — The standard Minecraft pause menu. + - **Others** — Any other GUI screens not listed above. + +## Commands + +- `inventorymove` +- `inventorymove [value]` \ No newline at end of file diff --git a/docs/modules/movement/jesus.mdx b/docs/modules/movement/jesus.mdx new file mode 100644 index 0000000..1726589 --- /dev/null +++ b/docs/modules/movement/jesus.mdx @@ -0,0 +1,17 @@ +--- +sidebar_position: 10 +--- + +# Jesus + +Allows you to walk on water. + +## Settings + +- **Mode** (Enum) — The method used to walk on water: + - `Solid`, `Strict`, `Dolphin`, `Bouncy` + +## Commands + +- `jesus` +- `jesus [value]` \ No newline at end of file diff --git a/docs/modules/movement/no-fall.mdx b/docs/modules/movement/no-fall.mdx new file mode 100644 index 0000000..0b35152 --- /dev/null +++ b/docs/modules/movement/no-fall.mdx @@ -0,0 +1,18 @@ +--- +sidebar_position: 11 +--- + +# NoFall + +Stops fall damage on some servers. + +## Settings + +- **Mode** (Enum) — The bypass method for fall damage: + - `Packet`, `Grim`, `Anti`, `Tp`, `Legit` +- **Distance** — The minimum fall distance before NoFall activates. + +## Commands + +- `nofall` +- `nofall [value]` \ No newline at end of file diff --git a/docs/modules/movement/no-jump-delay.mdx b/docs/modules/movement/no-jump-delay.mdx new file mode 100644 index 0000000..cc6058d --- /dev/null +++ b/docs/modules/movement/no-jump-delay.mdx @@ -0,0 +1,16 @@ +--- +sidebar_position: 12 +--- + +# NoJumpDelay + +Removes the vanilla jump delay when holding jump button. + +## Settings + +- **Delay** — Adjusts the specific delay between jumps when the jump button is held. + +## Commands + +- `nojumpdelay` +- `nojumpdelay [value]` \ No newline at end of file diff --git a/docs/modules/movement/no-slow.mdx b/docs/modules/movement/no-slow.mdx new file mode 100644 index 0000000..285e09a --- /dev/null +++ b/docs/modules/movement/no-slow.mdx @@ -0,0 +1,24 @@ +--- +sidebar_position: 13 +--- + +# NoSlow + +Removes item slow down. + +## Settings + +- **Mode** (Enum) — The bypass mode for anticheats: + - `Grim`, `Ncp`, `Vanilla` +- **Items** — Prevents slowing down while using items (eating, drawing a bow, etc.). +- **Blocks** (Category) — Prevents slowing down when walking on specific blocks: + - **Ice** — Maintain normal speed on ice. + - **Webs** — Move at normal speed through cobwebs. + - **SoulSand** — No slow down on soul sand. + - **SlimeBlocks** — Maintain speed on slime blocks. +- **Sneak** — Removes the slow down effect while sneaking. + +## Commands + +- `noslow` +- `noslow [value]` \ No newline at end of file diff --git a/docs/modules/movement/parkour.mdx b/docs/modules/movement/parkour.mdx new file mode 100644 index 0000000..4151f0d --- /dev/null +++ b/docs/modules/movement/parkour.mdx @@ -0,0 +1,17 @@ +--- +sidebar_position: 14 +--- + +# Parkour + +Jumps when on the edge of blocks. + +## Settings + +- **OnlySprinting** — *Only jump when sprinting.* +- **Slabs** — *Jump from slabs.* + +## Commands + +- `parkour` +- `parkour [value]` \ No newline at end of file diff --git a/docs/modules/movement/safewalk.mdx b/docs/modules/movement/safewalk.mdx new file mode 100644 index 0000000..1a852ec --- /dev/null +++ b/docs/modules/movement/safewalk.mdx @@ -0,0 +1,19 @@ +--- +sidebar_position: 15 +--- + +# Safewalk + +Prevents you from walking off the edge of blocks. + +## Settings + +- **Slabs** — Applies safewalk logic specifically to slabs. +- **Riding** — *Prevents the entity you are riding from walking off blocks.* +- **Sneak** (Category) + - **2b2t** — Optimization for the 2b2t server anticheat. + +## Commands + +- `safewalk` +- `safewalk [value]` \ No newline at end of file diff --git a/docs/modules/movement/speed.mdx b/docs/modules/movement/speed.mdx new file mode 100644 index 0000000..825bfff --- /dev/null +++ b/docs/modules/movement/speed.mdx @@ -0,0 +1,23 @@ +--- +sidebar_position: 16 +--- + +# Speed + +Speeds up the player. + +## Settings + +- **Mode** (Enum) — The method used to increase movement speed: + - `Strafe`, `On Ground`, `Ground Strafe`, `Vanilla`, `Entity` +- **Strict** — Uses stricter checks to prevent rubberbanding on certain anticheats. +- **OnGroundStrict** — Applies strict speed logic specifically when on the ground. +- **Speed** — The multiplier for movement speed. +- **Timer** — Adjusts the game timer to speed up movement. +- **AutoSprint** — Automatically triggers sprinting while speed is active. +- **Water** — Allows the speed module to function while in water. + +## Commands + +- `speed` +- `speed [value]` \ No newline at end of file diff --git a/docs/modules/movement/sprint.mdx b/docs/modules/movement/sprint.mdx new file mode 100644 index 0000000..5d90809 --- /dev/null +++ b/docs/modules/movement/sprint.mdx @@ -0,0 +1,19 @@ +--- +sidebar_position: 17 +--- + +# Sprint + +Automatically sprint. + +## Settings + +- **Water** — Allows the player to sprint while in water. +- **AutoJump** — Automatically jumps while sprinting. +- **Omnidirectional** — *Lets you sprint in all directions.* + - **Strict** — *Bypass stricter anticheats.* + +## Commands + +- `sprint` +- `sprint [value]` \ No newline at end of file diff --git a/docs/modules/movement/step.mdx b/docs/modules/movement/step.mdx new file mode 100644 index 0000000..c3a731b --- /dev/null +++ b/docs/modules/movement/step.mdx @@ -0,0 +1,25 @@ +--- +sidebar_position: 18 +--- + +# Step + +Quickly step on blocks. + +## Settings + +- **Upwards** (Category) + - **Height** — The maximum height you can step up. + - **Riding** — Enable step while riding an entity. + - **Mode** (Enum): `Ncp`, `Vanilla`. + - **Timer** — Uses game timer to assist with stepping up. + - **PacketRate** — Adjusts the rate of packets sent during stepping. +- **Reverse** (Category) + - **Strict** — Uses stricter checks for downward movement. + - **Height** — The maximum height you can step down. + - **Speed** — The speed at which you step down. + +## Commands + +- `step` +- `step [value]` \ No newline at end of file diff --git a/docs/modules/movement/trident-tweaks.mdx b/docs/modules/movement/trident-tweaks.mdx new file mode 100644 index 0000000..d1e66fa --- /dev/null +++ b/docs/modules/movement/trident-tweaks.mdx @@ -0,0 +1,26 @@ +--- +sidebar_position: 19 +--- + +# TridentTweaks + +Tweak the way that Tridents work. + +## Settings + +- **Anywhere** — *Allows you to use tridents out of water.* +- **Instant** — *Allows you to instantly use tridents.* +- **Spam** (Category) — *Automatically use a trident while right clicking.* + - **Delay** — The delay between trident uses. +- **AutoBoost** (Category) — *Automatically use trident boost while moving.* + - **Delay** — The delay between automatic boosts. + - **PitchSpoof** (Sub-category) + - **Pitch** — The pitch angle used for the spoof. +- **GrimDisabler** (Category) — *Bypass grim movement checks when a trident is in your inventory.* + - **Inventory** — Scan inventory for tridents to use for the disabler. + - **Test** — Experimental testing for the disabler. + +## Commands + +- `tridenttweaks` +- `tridenttweaks [value]` \ No newline at end of file diff --git a/docs/modules/movement/velocity.mdx b/docs/modules/movement/velocity.mdx new file mode 100644 index 0000000..b6e3cc3 --- /dev/null +++ b/docs/modules/movement/velocity.mdx @@ -0,0 +1,27 @@ +--- +sidebar_position: 20 +--- + +# Velocity + +Reduces knockback velocity. + +## Settings + +- **Pushing** (Category) — Prevents being pushed by: + - **Entities** — Other players or mobs. + - **Water** — Flowing water. + - **Blocks** — Blocks like pistons. +- **Mode** (Enum) — The bypass method for knockback: + - `Vanilla`, `Grim`, `New Grim`, `Jump` +- **Horizontal** — The multiplier for horizontal knockback (0.0 for none). +- **Vertical** — The multiplier for vertical knockback (0.0 for none). +- **TransactionDelay** — Delay for transaction packets on certain anticheats. +- **PauseTicks** — Number of ticks to pause velocity after an event. +- **Debug** — Shows debug info related to knockback packets. +- **GrimMotionTest** — Experimental testing for Grim anticheat. + +## Commands + +- `velocity` +- `velocity [value]` \ No newline at end of file diff --git a/docs/modules/movement/water-speed.mdx b/docs/modules/movement/water-speed.mdx new file mode 100644 index 0000000..29c9fe1 --- /dev/null +++ b/docs/modules/movement/water-speed.mdx @@ -0,0 +1,22 @@ +--- +sidebar_position: 21 +--- + +# WaterSpeed + +Go faster in water. + +## Settings + +- **Lava** — Apply speed settings while in lava. +- **DepthStriderRequired** — Only activate if the player has Depth Strider enchantment. +- **Speed** — The horizontal speed multiplier. +- **Vertical** (Category) + - **UpwardsMult** — Multiplier for moving upwards. + - **DownwardsMult** — Multiplier for moving downwards. +- **LavaMultiplier** — Specific speed multiplier for lava movement. + +## Commands + +- `waterspeed` +- `waterspeed [value]` \ No newline at end of file diff --git a/docs/modules/player/antiLevitation.mdx b/docs/modules/player/antiLevitation.mdx new file mode 100644 index 0000000..f14974d --- /dev/null +++ b/docs/modules/player/antiLevitation.mdx @@ -0,0 +1,14 @@ +# AntiLevitation + +Removes the levitation effect. + +## Settings + +- **Mode** (Enum) — *Action taken when levitation is active:* + - `Remove` — Instantly removes the effect. + - `Fly` — Allows you to fly while the effect is active. + +## Commands + +- `antilevitation` +- `antilevitation [value]` \ No newline at end of file diff --git a/docs/modules/player/auto-eat.mdx b/docs/modules/player/auto-eat.mdx new file mode 100644 index 0000000..7e65451 --- /dev/null +++ b/docs/modules/player/auto-eat.mdx @@ -0,0 +1,21 @@ +# AutoEat + +Automatically eat when you are hungry. + +## Settings + +- **Mode** (Enum): `Hunger`, `Health`, `Both`. +- **Hunger** — The hunger level at which to start eating. +- **Health** — The health level at which to start eating. +- **UntilFull** — *Keep eating until health or hunger is completely filled.* +- **Return** — *Return to last held item* after eating. +- **Milk** — Automatically drink milk to clear effects. +- **GoldenApples** (Category) — *Use golden apples to refill hunger:* + - **Burning** — *Use enchanted golden apples for fire resistance* when on fire. +- **Chorus** — Use chorus fruit as a food source. +- **Poisonous** — Allow eating poisonous foods (like rotten flesh) if nothing else is available. + +## Commands + +- `autoeat` +- `autoeat [value]` \ No newline at end of file diff --git a/docs/modules/player/auto-fish.mdx b/docs/modules/player/auto-fish.mdx new file mode 100644 index 0000000..87a6c66 --- /dev/null +++ b/docs/modules/player/auto-fish.mdx @@ -0,0 +1,15 @@ +# AutoFish + +Automatically reels your fishing rod. + +## Settings + +- **AutoDisable** — Automatically disable the module after a successful catch. +- **AutoSwitch** — Switches to the fishing rod automatically. +- **CastDelay** — The delay before casting the rod again. +- **Mode** (Enum): `Normal`, `Particle`, `Sound`. + +## Commands + +- `autofish` +- `autofish [value]` \ No newline at end of file diff --git a/docs/modules/player/auto-mine.mdx b/docs/modules/player/auto-mine.mdx new file mode 100644 index 0000000..f48763b --- /dev/null +++ b/docs/modules/player/auto-mine.mdx @@ -0,0 +1,21 @@ +# AutoMine + +Automatically mines. + +## Settings + +- **Mode** (Enum): `Continuous`, `Feet`. +- **Focused** — Only mine when the Minecraft window is focused. +- **ThroughEntities** — Allow mining through players or mobs. +- **Targets** (Category) — *Configure the entity types to target:* + - **Players** (Sub-category): `FriendProtect`, `PrioritizeEnemies` (EnemiesOnly), `IgnoreCreative`. +- **RequirePickaxe** (Category) + - **Switch** — Automatically switch to a pickaxe when mining. +- **StrictDir** — Enforce strict direction checks. +- **Raytrace** — Use raytracing for block detection. +- **Rotate** — Rotate your head towards the block being mined. + +## Commands + +- `automine` +- `automine [value]` \ No newline at end of file diff --git a/docs/modules/player/auto-tool.mdx b/docs/modules/player/auto-tool.mdx new file mode 100644 index 0000000..2c8707a --- /dev/null +++ b/docs/modules/player/auto-tool.mdx @@ -0,0 +1,22 @@ +# AutoTool + +Automatically switch to the best tool. + +## Settings + +- **Attacking** (Category) + - **DisableShields** — *Use an axe to disable the targets shield.* + - **RequireAura** — Only switch tools when KillAura is active. +- **Mining** (Category) + - **Prefer** (Enum) — *Which enchant to prioritize for blocks benefit from both:* + - `Silktouch`, `Fortune` + - **DurabilityPriority** — *Always use the lowest durability tool.* +- **Return** — *Swap back to the previous item* after use. +- **Inventory** — *Pull tools out of the inventory* if they are not in the hotbar. +- **MinDurability** — Do not use tools with durability lower than this. +- **Delay** — The delay before switching tools. + +## Commands + +- `autotool` +- `autotool [value]` \ No newline at end of file diff --git a/docs/modules/player/auto-wither.mdx b/docs/modules/player/auto-wither.mdx new file mode 100644 index 0000000..d3169d2 --- /dev/null +++ b/docs/modules/player/auto-wither.mdx @@ -0,0 +1,16 @@ +# AutoWither + +Automatically spawn a wither. + +## Settings + +- **Delay** — Delay between placing blocks. +- **SilentSwap** — Swaps items without the client-side animation. +- **StrictDir** — Enforced direction checks. +- **Rotate** (Category) + - **Speed** — Speed of rotation. + +## Commands + +- `autowither` +- `autowither [value]` \ No newline at end of file diff --git a/docs/modules/player/blink.mdx b/docs/modules/player/blink.mdx new file mode 100644 index 0000000..ec707e7 --- /dev/null +++ b/docs/modules/player/blink.mdx @@ -0,0 +1,12 @@ +# Blink + +Holds your packets until you disable it. + +## Settings + +- **TimeLimit** — *Seconds after enabling in which blink will be disabled.* + +## Commands + +- `blink` +- `blink [value]` \ No newline at end of file diff --git a/docs/modules/player/chorus-control.mdx b/docs/modules/player/chorus-control.mdx new file mode 100644 index 0000000..92cd1ef --- /dev/null +++ b/docs/modules/player/chorus-control.mdx @@ -0,0 +1,16 @@ +# ChorusControl + +Know where chorus fruit will teleport you. + +## Settings + +- **Accept** — Automatically accept the teleportation. +- **Others** — Show teleport destinations for other players. +- **Box** — Render a box at the teleport destination. +- **Tracer** — Draw a line to the teleport destination. +- **Color** — Customize the color of the renders. + +## Commands + +- `choruscontrol` +- `choruscontrol [value]` \ No newline at end of file diff --git a/docs/modules/player/fast-use.mdx b/docs/modules/player/fast-use.mdx new file mode 100644 index 0000000..3abe6d6 --- /dev/null +++ b/docs/modules/player/fast-use.mdx @@ -0,0 +1,20 @@ +# FastUse + +Use items faster. + +## Settings + +- **Delay** — The delay between item uses. +- **EXP** (Category) + - **Pitch** — Force a specific pitch when throwing bottles. + - **Throw** — Automatically throw experience bottles. + - **SilentThrow** — Throw without the arm-swing animation. + +## Commands + +- `fastuse` +- `fastuse [value]` +- `fastuse whitelist clear` +- `fastuse whitelist remove ` +- `fastuse whitelist add ` +- `fastuse whitelist list` \ No newline at end of file diff --git a/docs/modules/player/ghost-hand.mdx b/docs/modules/player/ghost-hand.mdx new file mode 100644 index 0000000..2bc6a97 --- /dev/null +++ b/docs/modules/player/ghost-hand.mdx @@ -0,0 +1,14 @@ +# GhostHand + +Allows you to interact with blocks through walls. + +## Settings + +- **Render** (Category) + - **Color** — The color of the block being hovered through the wall. + - **SelectedColor** — The color of the currently selected block. + +## Commands + +- `ghosthand` +- `ghosthand [value]` \ No newline at end of file diff --git a/docs/modules/player/inventory-cleaner.mdx b/docs/modules/player/inventory-cleaner.mdx new file mode 100644 index 0000000..d2e2720 --- /dev/null +++ b/docs/modules/player/inventory-cleaner.mdx @@ -0,0 +1,26 @@ +# InventoryCleaner + +Cleans your inventory of items you specify. + +## Settings + +- **Mode** (Enum): `Blacklist`, `Whitelist`. +- **Delay** — Delay between dropping items. +- **Hotbar** — *Clean items from hotbar slots.* +- **Screens** (Category) — *Choose what screens the inventory cleaner will run in:* + - **Inventory** — *Run while the inventory is open.* + - **CraftingTable** — *Run while in a crafting table.* + - **Containers** — *Run while inside containers.* + +## Commands + +- `inventorycleaner` +- `inventorycleaner [value]` +- `inventorycleaner blacklist clear` +- `inventorycleaner blacklist delete [item]` +- `inventorycleaner blacklist add [item]` +- `inventorycleaner blacklist list` +- `inventorycleaner whitelist list` +- `inventorycleaner whitelist delete [item]` +- `inventorycleaner whitelist clear` +- `inventorycleaner whitelist add [item]` \ No newline at end of file diff --git a/docs/modules/player/middle-click.mdx b/docs/modules/player/middle-click.mdx new file mode 100644 index 0000000..aa84039 --- /dev/null +++ b/docs/modules/player/middle-click.mdx @@ -0,0 +1,20 @@ +# MiddleClick + +Actions for middle clicking. + +## Settings + +- **Friend** (Category) + - **Notification** — Send a notification when adding a friend via middle-click. +- **Pearl** (Category) + - **Delay** — Delay between throwing pearls with middle-click. +- **Firework** (Category) + - **Delay** — Delay between using fireworks with middle-click. +- **EntityNBT** — Copy NBT data of the clicked entity. +- **BlockNBT** — Copy NBT data of the clicked block. +- **BlockHitDebug** — Show debug information for the hit block. + +## Commands + +- `middleclick` +- `middleclick [value]` \ No newline at end of file diff --git a/docs/modules/player/multi-task.mdx b/docs/modules/player/multi-task.mdx new file mode 100644 index 0000000..1618e8b --- /dev/null +++ b/docs/modules/player/multi-task.mdx @@ -0,0 +1,8 @@ +# MultiTask + +Allows you to interact while eating. + +## Commands + +- `multitask` +- `multitask [value]` \ No newline at end of file diff --git a/docs/modules/player/packet-logger.mdx b/docs/modules/player/packet-logger.mdx new file mode 100644 index 0000000..a91a544 --- /dev/null +++ b/docs/modules/player/packet-logger.mdx @@ -0,0 +1,18 @@ +# PacketLogger + +Logs incoming and outgoing packets. + +## Settings + +- **Verbose** — Detailed logging of packet data. +- **ChatOutput** — Print logged packets to the game chat. +- **FileOutput** — Save logged packets to a local file. +- **Clientbound** (Category) — *Toggle specific incoming packets:* + - AddEntity, AddExperienceOrb, AddPlayer, Animate, AwardStats, BlockChangedAck, BlockDestruction, BlockEntityData, BlockEvent, BlockUpdate, BossEvent, Bundle, ChangeDifficulty, ChunksBiomes, ClearTitles, CommandSuggestions, Commands, ContainerClose, ContainerSetContent, ContainerSetData, ContainerSetSlot, Cooldown, CustomChatCompletions, CustomPayload, DamageEvent, DeleteChat, Disconnect, DisguisedChat, EntityEvent, Explode, ForgetLevelChunk, GameEvent, HorseScreenOpen, HurtAnimation, InitializeBorder, KeepAlive, LevelChunkWithLight, LevelEvent, LevelParticles, LightUpdate, Login, MapItemData, MerchantOffers, MoveEntity.Pos, MoveEntity.PosRot, MoveEntity.Rot, MoveVehicle, OpenBook, OpenScreen, OpenSignEditor, Ping, PlaceGhostRecipe, PlayerAbilities, PlayerChat, PlayerCombatEnd, PlayerCombatEnter, PlayerCombatKill, PlayerInfoRemove, PlayerInfoUpdate, PlayerLookAt, PlayerPosition, Recipe, RemoveEntities, RemoveMobEffect, ResourcePack, Respawn, RotateHead, SectionBlocksUpdate, SelectAdvancementsTab, ServerData, SetActionBarText, SetBorderCenter, SetBorderLerpSize, SetBorderSize, SetBorderWarningDelay, SetBorderWarningDistance, SetCamera, SetCarriedItem, SetChunkCacheCenter, SetChunkCacheRadius, SetDefaultSpawnPosition, SetDisplayObjective, SetEntityData, SetEntityLink, SetEntityMotion, SetEquipment, SetExperience, SetHealth, SetObjective, SetPassengers, SetPlayerTeam, SetScore, SetSimulationDistance, SetSubtitleText, SetTime, SetTitleText, SetTitlesAnimation, Sound, SoundEntity, StopSound, SystemChat, TabList, TagQuery, TakeItemEntity, TeleportEntity, UpdateAdvancements, UpdateAttributes, UpdateEnabledFeatures, UpdateMobEffect, UpdateRecipes, UpdateTags. +- **Serverbound** (Category) — *Toggle specific outgoing packets:* + - AcceptTeleportation, BlockEntityTagQuery, ChangeDifficulty, Chat, ChatAck, ChatCommand, ChatSessionUpdate, ClientCommand, ClientInformation, CommandSuggestion, ContainerButtonClick, ContainerClick, ContainerClose, CustomPayload, EditBook, EntityTagQuery, Interact, JigsawGenerate, KeepAlive, LockDifficulty, MovePlayer.Pos, MovePlayer.PosRot, MovePlayer.Rot, MovePlayer.StatusOnly, MoveVehicle, PaddleBoat, PickItem, PlaceRecipe, PlayerAbilities, PlayerAction, PlayerCommand, PlayerInput, Pong, RecipeBookChangeSettings, RecipeBookSeenRecipe, RenameItem, ResourcePack, SeenAdvancements, SelectTrade, SetBeacon, SetCarriedItem, SetCommandBlock, SetCommandMinecart, SetCreativeModeSlot, SetJigsawBlock, SetStructureBlock, SignUpdate, Swing, TeleportToEntity, UseItem, UseItemOn. + +## Commands + +- `packetlogger` +- `packetlogger [value]` \ No newline at end of file diff --git a/docs/modules/player/phase.mdx b/docs/modules/player/phase.mdx new file mode 100644 index 0000000..852d719 --- /dev/null +++ b/docs/modules/player/phase.mdx @@ -0,0 +1,15 @@ +# Phase + +Phase through blocks. + +## Settings + +- **Mode** (Enum): + - `Sand`, `Door`, `Vanilla`, `Pearl` +- **Speed** — The speed at which you move while phasing. +- **Throw** — *Key to throw the pearl* specifically for the Pearl mode. + +## Commands + +- `phase` +- `phase [value]` \ No newline at end of file diff --git a/docs/modules/player/portal-god-mode.mdx b/docs/modules/player/portal-god-mode.mdx new file mode 100644 index 0000000..56d9693 --- /dev/null +++ b/docs/modules/player/portal-god-mode.mdx @@ -0,0 +1,8 @@ +# PortalGodMode + +Go into god mode when you enter a portal. + +## Commands + +- `portalgodmode` +- `portalgodmode [value]` \ No newline at end of file diff --git a/docs/modules/player/reach.mdx b/docs/modules/player/reach.mdx new file mode 100644 index 0000000..103b784 --- /dev/null +++ b/docs/modules/player/reach.mdx @@ -0,0 +1,15 @@ +# Reach + +Extends your interaction distance. + +## Settings + +- **Mode** (Enum): + - `Normal`, `Infinite` +- **EntityReach** — Extends interaction range for entities (mobs/players). +- **BlockReach** — Extends interaction range for blocks. + +## Commands + +- `reach` +- `reach [value]` \ No newline at end of file diff --git a/docs/modules/player/rotation-lock.mdx b/docs/modules/player/rotation-lock.mdx new file mode 100644 index 0000000..bb53dd0 --- /dev/null +++ b/docs/modules/player/rotation-lock.mdx @@ -0,0 +1,22 @@ +# RotationLock + +Lock your yaw and pitch. + +## Settings + +- **Yaw** (Category) + - **Angles** — Snap yaw to specific angles. + - **Custom** (Sub-category) + - **Yaw** — Set a specific custom yaw value. +- **Pitch** (Category) + - **Angles** — Snap pitch to specific angles. + - **Custom** (Sub-category) + - **Pitch** — Set a specific custom pitch value. +- **WaypointLock** (Category) + - **Name** — Lock rotation towards a specific waypoint. +- **Hard** — Forcefully lock rotation, preventing any manual changes. + +## Commands + +- `rotationlock` +- `rotationlock [value]` \ No newline at end of file diff --git a/docs/modules/player/shulker-ception.mdx b/docs/modules/player/shulker-ception.mdx new file mode 100644 index 0000000..5566a18 --- /dev/null +++ b/docs/modules/player/shulker-ception.mdx @@ -0,0 +1,12 @@ +--- +sidebar_position: 18 +--- + +# ShulkerCeption + +Allows you to place shulkers inside of other shulkers in singleplayer. + +## Commands + +- `shulkerception` +- `shulkerception [value]` \ No newline at end of file diff --git a/docs/modules/player/swing.mdx b/docs/modules/player/swing.mdx new file mode 100644 index 0000000..729e91d --- /dev/null +++ b/docs/modules/player/swing.mdx @@ -0,0 +1,16 @@ +# Swing + +Modify swinging. + +## Settings + +- **Speed** — The speed of the swing animation. +- **NoSwing** (Category) + - **ClientSide** — Disable swing animation only on your side. + - **Strict** — Enforce no-swing packets strictly. +- **Offhand** — Swing with the offhand instead of the main hand. + +## Commands + +- `swing` +- `swing [value]` \ No newline at end of file diff --git a/docs/modules/player/tick-shift.mdx b/docs/modules/player/tick-shift.mdx new file mode 100644 index 0000000..ca547f0 --- /dev/null +++ b/docs/modules/player/tick-shift.mdx @@ -0,0 +1,16 @@ +# TickShift + +Queue up movements while standing still. + +## Settings + +- **Mode** (Enum): + - `Normal`, `Timer` +- **Ticks** — The number of ticks to queue up. +- **AutoDisable** — Automatically disable the module after the queued ticks are used. +- **2b2t** — Optimization for the 2b2t server. + +## Commands + +- `tickshift` +- `tickshift [value]` \ No newline at end of file diff --git a/docs/modules/player/xcarry.mdx b/docs/modules/player/xcarry.mdx new file mode 100644 index 0000000..b2a2ab1 --- /dev/null +++ b/docs/modules/player/xcarry.mdx @@ -0,0 +1,14 @@ +# XCarry + +Hold items in your crafting table slots. + +## Settings + +- **Cancel** — Cancel packets that clear crafting slots. +- **ShiftClick** — Allow shift-clicking items into crafting slots while XCarry is active. +- **ArmorSlots** — Keep items in armor slots even when they would normally be removed. + +## Commands + +- `xcarry` +- `xcarry [value]` \ No newline at end of file diff --git a/docs/modules/render/block-outline.mdx b/docs/modules/render/block-outline.mdx new file mode 100644 index 0000000..897f21c --- /dev/null +++ b/docs/modules/render/block-outline.mdx @@ -0,0 +1,15 @@ +# BlockOutline + +Highlights the block you are currently looking at. + +## Settings + +- **Thickness** — *The thickness of the outline.* +- **Depth** — *Render the outline through walls.* +- **Fill** — *Fill the highlighted block with a color.* +- **Color** — *The color of the outline and fill.* + +## Commands + +- `blockoutline` +- `blockoutline [value]` \ No newline at end of file diff --git a/docs/modules/render/borders.mdx b/docs/modules/render/borders.mdx new file mode 100644 index 0000000..9c70c90 --- /dev/null +++ b/docs/modules/render/borders.mdx @@ -0,0 +1,25 @@ +# Borders + +Shows chunk and region borders. + +## Settings + +- **YLevel** (Enum) — *The vertical position to render borders:* + - `Void`, `Sky`, `Player` +- **Chunk** (Category) — *Current chunk border settings:* + - **Color**, **Fill**, **Outline**. +- **MapArt** (Category) — *Current map art border settings:* + - **Color**, **Fill**, **Outline**. +- **Region** (Category) — *Current region border settings:* + - **Color**, **Fill**, **Outline**. +- **Axis** (Category) — *Axis lines settings:* + - **Color**. +- **Beacon** (Category) — *Beacon effect border settings:* + - **Color**, **Fill**, **Outline**. +- **SpawnerActivation** (Category) — *Spawner activation range border settings:* + - **Color**, **Fill**, **Outline**. + +## Commands + +- `borders` +- `borders [value]` \ No newline at end of file diff --git a/docs/modules/render/boss-stach.mdx b/docs/modules/render/boss-stach.mdx new file mode 100644 index 0000000..b7d62f3 --- /dev/null +++ b/docs/modules/render/boss-stach.mdx @@ -0,0 +1,14 @@ +# BossStack + +Modify the boss bars. + +## Settings + +- **Mode** (Enum) — *How to handle multiple boss bars:* + - `Stack` — Stack bars on top of each other. + - `Hide` — Do not render boss bars at all. + +## Commands + +- `bossstack` +- `bossstack [value]` \ No newline at end of file diff --git a/docs/modules/render/breadcrumbs.mdx b/docs/modules/render/breadcrumbs.mdx new file mode 100644 index 0000000..4a4d3e4 --- /dev/null +++ b/docs/modules/render/breadcrumbs.mdx @@ -0,0 +1,17 @@ +# BreadCrumbs + +Draws a line behind you as you move. + +## Settings + +- **Active** — *Toggle the recording of breadcrumbs.* +- **Width** — *The width of the breadcrumb line.* +- **Limit** — *The maximum amount of points to keep in memory.* +- **Color** — *The color of the line.* + +## Commands + +- `breadcrumbs` +- `breadcrumbs [value]` +- `breadcrumbs load ` +- `breadcrumbs save [name]` \ No newline at end of file diff --git a/docs/modules/render/break-esp.mdx b/docs/modules/render/break-esp.mdx new file mode 100644 index 0000000..df67a4b --- /dev/null +++ b/docs/modules/render/break-esp.mdx @@ -0,0 +1,21 @@ +# BreakESP + +Highlights blocks that are being broken by you or other players. + +## Settings + +- **IgnoreSelf** — *Do not show the highlight for blocks you are mining.* +- **Mode** (Enum) — *The animation style of the highlight:* + - `Static`, `In`, `Out`, `In Out` +- **StartColor** — *The starting color of the animation.* +- **EndColor** — *The ending color of the animation.* +- **Fill** — *Fill the box with color.* +- **Outline** (Category) + - **Width** — *The width of the outline.* + - **Static** — *Keep the outline size constant.* +- **DepthTest** — *Hide the highlight behind other blocks.* + +## Commands + +- `breakesp` +- `breakesp [value]` \ No newline at end of file diff --git a/docs/modules/render/chams.mdx b/docs/modules/render/chams.mdx new file mode 100644 index 0000000..376d239 --- /dev/null +++ b/docs/modules/render/chams.mdx @@ -0,0 +1,18 @@ +# Chams + +Change the way entity models are rendered, allowing you to see them through walls. + +## Settings + +- **Glint** — *Render the enchantment glint over the model.* +- **Fill Settings** (Category) + - **ColorMode** (Enum): `Static`, `Custom`. + - **Color** — *The color of the fill.* + - **Alpha** — *The transparency of the fill.* +- **Entities** (Category) — *Configure which entity types to apply Chams to:* + - **Players** (Self), **Hostiles**, **Passives**, **Neutrals**, **Vehicles**, **Items**, **Projectiles**, **EndCrystals**, **Others**. + +## Commands + +- `chams` +- `chams [value]` \ No newline at end of file diff --git a/docs/modules/render/crosshair.mdx b/docs/modules/render/crosshair.mdx new file mode 100644 index 0000000..6552dab --- /dev/null +++ b/docs/modules/render/crosshair.mdx @@ -0,0 +1,22 @@ +# Crosshair + +Custom crosshair management. + +## Settings + +- **Mode** (Enum) — *The style of the crosshair:* + - `Csgo`, `Debug` +- **Dynamic** — *Expands the crosshair while moving.* +- **Length** — *The length of the crosshair lines.* +- **Width** — *The thickness of the crosshair lines.* +- **Gap** — *The size of the gap in the center.* +- **DynamicGap** — *The maximum gap size when moving.* +- **Color** — *The color of the crosshair.* +- **Outline** — *Draw an outline around the crosshair.* +- **HOffset** — *Horizontal offset from the center.* +- **VOffset** — *Vertical offset from the center.* + +## Commands + +- `crosshair` +- `crosshair [value]` \ No newline at end of file diff --git a/docs/modules/render/esp.mdx b/docs/modules/render/esp.mdx new file mode 100644 index 0000000..5cf0dfa --- /dev/null +++ b/docs/modules/render/esp.mdx @@ -0,0 +1,37 @@ +# ESP + +Highlight entities and objects in the world. + +## Settings + +### Entities +- **Mode** (Enum): `Shader`, `Box`, `Csgo`, `Image`. +- **ColorMode** (Enum): `Static`, `Distance`. +- **Targets** (Category) — *Entity types to highlight:* + - **Players** (Self), **Hostiles**, **Passives**, **Neutrals**, **Vehicles**, **Items**, **Projectiles**, **EndCrystals**, **ItemFrames**, **Others**. + +### Storages +- **Mode** (Enum): `Shader`, `Box`, `Csgo`, `Image`. +- **ColorMode** (Enum): `Static`, `Distance`. +- **Range** — *Maximum distance to highlight storages.* +- **Targets** (Category): + - **Chests**, **EnderChests**, **ShulkerBoxes**, **Barrels**, **Dispensers**, **Furnaces**, **Hoppers**, **Others**. + +### Miscellaneous +- **ItemNames** (Category) + - **CustomFont**, **Scale**. +- **Light** (Category) — *Shows where mobs can spawn:* + - **Level**, **ThroughWalls**. +- **Tunnels** (Category) + - **Strictness**, **MinHeight**, **Render** (Lines, Quads), **Opacity**, **Color**, **LineWidth**. + +### Rendering Styles +- **Shader Settings** (Category) — *RainbowGradient, Fill (Flat, Dots, Lines), Opacity, Outline (Width, Fade).* +- **Box Settings** (Category) — *Fill Opacity, Outline Width.* +- **CSGO Settings** (Category) — *Thickness, Outline.* +- **Image Settings** (Category) — *Scale.* + +## Commands + +- `esp` +- `esp [value]` \ No newline at end of file diff --git a/docs/modules/render/free-look.mdx b/docs/modules/render/free-look.mdx new file mode 100644 index 0000000..2178721 --- /dev/null +++ b/docs/modules/render/free-look.mdx @@ -0,0 +1,17 @@ +# FreeLook + +Allows you to look around freely without changing your moving direction. + +## Settings + +- **Usage** (Enum) — *How the free look is activated:* + - `Hold`, `Toggle` +- **Camera** (Enum) — *Which perspective to use:* + - `First Person`, `Third Person` +- **Smooth** — *Enable smooth camera movement.* +- **OnlyPitch** — *Only allow vertical camera movement.* + +## Commands + +- `freelook` +- `freelook [value]` \ No newline at end of file diff --git a/docs/modules/render/freecam.mdx b/docs/modules/render/freecam.mdx new file mode 100644 index 0000000..1e16cfe --- /dev/null +++ b/docs/modules/render/freecam.mdx @@ -0,0 +1,16 @@ +# Freecam + +Control the camera separately from the player. + +## Settings + +- **Speed** — *The movement speed of the camera.* +- **Rotate** — *Rotates when you try using a block.* +- **Spectate** — *Lets you spectate from any entity's POV.* +- **Control** — *Temporarily control the player while this key is held.* +- **Debug** — *Show debug information.* + +## Commands + +- `freecam` +- `freecam [value]` \ No newline at end of file diff --git a/docs/modules/render/fullbright.mdx b/docs/modules/render/fullbright.mdx new file mode 100644 index 0000000..ace341a --- /dev/null +++ b/docs/modules/render/fullbright.mdx @@ -0,0 +1,8 @@ +# FullBright + +Makes the world bright so you can see in the dark. + +## Commands + +- `fullbright` +- `fullbright [value]` \ No newline at end of file diff --git a/docs/modules/render/hitmarkers.mdx b/docs/modules/render/hitmarkers.mdx new file mode 100644 index 0000000..c157ca8 --- /dev/null +++ b/docs/modules/render/hitmarkers.mdx @@ -0,0 +1,15 @@ +# Hitmarkers + +Call of Duty style hitmarkers when you damage an entity. + +## Settings + +- **Time** — *How long the hitmarker stays on screen.* +- **Scale** — *The size of the hitmarker.* +- **Targets** (Category) — *Configure which entities trigger hitmarkers:* + - **Players** (Self), **Hostiles**, **Passives**, **Neutrals**, **Vehicles**, **EndCrystals**, **Items**, **Projectiles**, **Others**. + +## Commands + +- `hitmarkers` +- `hitmarkers [value]` \ No newline at end of file diff --git a/docs/modules/render/hole-esp.mdx b/docs/modules/render/hole-esp.mdx new file mode 100644 index 0000000..0f251f2 --- /dev/null +++ b/docs/modules/render/hole-esp.mdx @@ -0,0 +1,26 @@ +# HoleESP + +ESP specifically for crystal-safe holes (Obsidian and Bedrock). + +## Settings + +- **Range** — *Detection radius for holes.* +- **Height** — *The render height of the hole highlight.* +- **Outline** (Category) + - **Thickness** — *Width of the hole outline.* +- **Glow** (Category) + - **Mode** (Enum): `Bottom`, `Top`. + - **Height** — *The height of the glow effect.* +- **Doubles** — *Highlight double holes.* +- **ObsidianColor** — *Color for obsidian holes.* +- **BedrockColor** — *Color for bedrock holes.* +- **DoubleColor** — *Color for double holes.* +- **CityESP** (Category) — *Highlight blocks that can be broken to 'city' a player:* + - **Range**, **Color**. +- **VoidESP** (Category) — *Highlight void holes:* + - **Range**, **Color**. + +## Commands + +- `holeesp` +- `holeesp [value]` \ No newline at end of file diff --git a/docs/modules/render/logout-spots.mdx b/docs/modules/render/logout-spots.mdx new file mode 100644 index 0000000..7c59303 --- /dev/null +++ b/docs/modules/render/logout-spots.mdx @@ -0,0 +1,18 @@ +# LogoutSpots + +Highlights where players have logged out of the server. + +## Settings + +- **Mode** (Enum) — *How to display the logout location:* + - `Coords`, `Distance`, `None` +- **Message** — *The message to show when a player logs out.* +- **Render** (Category) + - **Box** (Sub-category): `Color`, `LineWidth`. + - **Text** (Sub-category): `Scale`, `Health`, `Time`, `CustomFont`, `Color`. +- **Delete** — *Clear all saved logout spots.* + +## Commands + +- `logoutspots` +- `logoutspots [value]` \ No newline at end of file diff --git a/docs/modules/render/nametags.mdx b/docs/modules/render/nametags.mdx new file mode 100644 index 0000000..e6e2fd4 --- /dev/null +++ b/docs/modules/render/nametags.mdx @@ -0,0 +1,33 @@ +# Nametags + +Renders advanced nametags above entities with detailed information. + +## Settings + +- **Nameplate** (Category) + - **Background** (Sub-category): `Rounded` (Radius), `Color`. + - **Outline** (Sub-category): `Width`, `Color`. +- **Health** (Enum) — *How to display health:* + - `Off`, `Hp`, `Percentage` +- **Gamemode** — *Show player's gamemode.* +- **Ping** — *Show player's ping.* +- **TotemPops** — *Show how many totems the player has popped.* +- **EntityID** — *Show the entity's unique ID.* +- **HorseInfo** — *Show stats for horses.* +- **FriendColor** (Enum): `Off`, `Text`, `Background`. +- **Items** (Category) — *Show equipped items:* + - **Armor** (Reversed), **MainHand**, **OffHand**. + - **Durability** (Sub-category): `Scale`. + - **Enchants** (Sub-category): `Mode` (On, Below), `Simple` (Color), `Scale`. +- **ItemName** (Category) — `Scale`. +- **Scale** — *The overall size of the nametags.* +- **DistanceScaling** — *Scale larger when you move closer to the entity.* +- **CustomFont** — *Use the client custom font.* +- **MultiLine** — *Display information on multiple lines.* +- **Targets** (Category) — *Configure target entities:* + - **Players** (Self), **Hostiles**, **Passives**, **Neutrals**, **Items**, **ArmorStands**. + +## Commands + +- `nametags` +- `nametags [value]` \ No newline at end of file diff --git a/docs/modules/render/no-render.mdx b/docs/modules/render/no-render.mdx new file mode 100644 index 0000000..c3c0e13 --- /dev/null +++ b/docs/modules/render/no-render.mdx @@ -0,0 +1,21 @@ +# NoRender + +Prevents certain elements from being rendered to improve performance or visibility. + +## Settings + +- **Player** (Category) — `Overlays`, `Bobbing`, `Hurtcam`, `Blindness`, `TotemPop`. +- **UI** (Category) — `Background`, `Scoreboard`, `PotionOverlay`, `ToastNotifications`. +- **Entities** (Category) + - **Armor**, **FallingBlocks**, **Items**, **RidingEntity**, **ArmorStands**, **Projectiles**, **XP**. + - **ItemFrames** (Sub-category): `OccludeDistance`, `Entity`, `Item`, `MapDecorations`. +- **World** (Category) + - **Weather**, **Fog**, **BeaconBeams**, **CaveCulling**. + - **BlockEntityLimit** (Sub-category): `Limit`, `Range`. +- **Particles** (Category) + - `Fireworks`, `Barriers`, `Explosions`, `BlockBreak`, `Eating`, `Criticals`, `PotionEffects`, `TotemPops`, `Sprinting`. + +## Commands + +- `norender` +- `norender [value]` \ No newline at end of file diff --git a/docs/modules/render/rainbow-enchant.mdx b/docs/modules/render/rainbow-enchant.mdx new file mode 100644 index 0000000..7a36adb --- /dev/null +++ b/docs/modules/render/rainbow-enchant.mdx @@ -0,0 +1,13 @@ +# RainbowEnchant + +Makes the enchantment glint cycle through rainbow colors. + +## Settings + +- **Color** — *The base color for the rainbow effect.* +- **Strong** — *Increase the intensity of the glint.* + +## Commands + +- `rainbowenchant` +- `rainbowenchant [value]` \ No newline at end of file diff --git a/docs/modules/render/range-circle.mdx b/docs/modules/render/range-circle.mdx new file mode 100644 index 0000000..c7f6ddf --- /dev/null +++ b/docs/modules/render/range-circle.mdx @@ -0,0 +1,18 @@ +# RangeCircle + +Draws a circle at your feet indicating your hit range. + +## Settings + +- **Radius** — *The size of the circle.* +- **Thickness** — *Width of the circle line.* +- **Morph** — *Animate the circle shape.* +- **Others** (Category) + - **Radius** — *Show range circles for other players.* +- **Color** — *Color of the circle.* +- **RainbowMode** (Enum): `Solid`, `Dynamic`. + +## Commands + +- `rangecircle` +- `rangecircle [value]` \ No newline at end of file diff --git a/docs/modules/render/search.mdx b/docs/modules/render/search.mdx new file mode 100644 index 0000000..2751e1e --- /dev/null +++ b/docs/modules/render/search.mdx @@ -0,0 +1,31 @@ +# Search + +Search for specific blocks and entities in the world. + +## Settings + +- **Blocks** (Category) + - **Range** — *Maximum distance to search for blocks.* + - **Alert** — *Notify when a target block is found.* + - **Sound** — *Play a sound when a target block is found.* + - **IllegalBedrock** — *Specifically search for bedrock in illegal locations.* + - **ActivatedSpawners** — *Search for spawners that are currently active.* + - **IgnoreNaturalChests** — *Do not highlight chests generated by the world.* + - **IgnoreSingleChests** — *Only highlight double chests.* +- **Entities** (Category) + - **Range** — *Maximum distance to search for entities.* + - **Alert** — *Notify when a target entity is found.* + - **Sound** — *Play a sound when a target entity is found.* +- **Render Settings** (Category) + - **Box** — *Draw a box around the target.* + - **Tracer** — *Draw a line to the target.* + - **ColorMode** (Enum) — *Static, Rainbow.* + - **Color** — *The color of the render.* +- **Debug** — *Show debug information.* + +## Commands + +- `search` +- `search [value]` +- `search entities ` +- `search blocks ` \ No newline at end of file diff --git a/docs/modules/render/tracers.mdx b/docs/modules/render/tracers.mdx new file mode 100644 index 0000000..086a59b --- /dev/null +++ b/docs/modules/render/tracers.mdx @@ -0,0 +1,21 @@ +# Tracers + +Draws lines from your crosshair to entities. + +## Settings + +- **ColorMode** (Enum) — *The coloring logic:* + - `Static`, `Distance` +- **Transparency** — *Opacity of the tracer lines.* +- **HideF1** — *Hide tracers when the UI is hidden (F1).* +- **Targets** (Category) — *Configure which entities to trace:* + - **Players**, **Friends**, **Enemies**, **Hostiles**, **Passives**, **Neutrals**, **Vehicles**, **Crystals**, **Items**. +- **Spine** — *Draw the tracer to the entity's spine.* +- **Thickness** — *The width of the tracer line.* +- **Target** (Enum) — *Where on the entity to point the tracer:* + - `Feet`, `Body`, `Head` + +## Commands + +- `tracers` +- `tracers [value]` \ No newline at end of file diff --git a/docs/modules/render/trajectories.mdx b/docs/modules/render/trajectories.mdx new file mode 100644 index 0000000..18aa470 --- /dev/null +++ b/docs/modules/render/trajectories.mdx @@ -0,0 +1,21 @@ +# Trajectories + +Draws a line showing the path and landing spot of projectiles. + +## Settings + +- **Prediction** — *Calculate and show the impact point.* +- **Others** (Category) — *Show trajectories for other players:* + - **Players**, **Hostiles**. +- **AirBorne** (Category) — *Projectiles to track:* + - **Arrows**, **Fireballs**, **Pearls**. +- **BowDraw** — *Only show trajectory when a bow is being drawn.* +- **Target** (Category) — *Impact point render:* + - **Fill**, **Outline**. +- **Width** — *Thickness of the trajectory line.* +- **Color** — *Color of the trajectory line.* + +## Commands + +- `trajectories` +- `trajectories [value]` \ No newline at end of file diff --git a/docs/modules/render/view-clip.mdx b/docs/modules/render/view-clip.mdx new file mode 100644 index 0000000..bb3fea2 --- /dev/null +++ b/docs/modules/render/view-clip.mdx @@ -0,0 +1,12 @@ +# ViewClip + +Ignores block collision for the camera in third person, allowing you to see through walls. + +## Settings + +- **Distance** — *The maximum distance the camera can clip.* + +## Commands + +- `viewclip` +- `viewclip [value]` \ No newline at end of file diff --git a/docs/modules/render/view-model.mdx b/docs/modules/render/view-model.mdx new file mode 100644 index 0000000..a3bea51 --- /dev/null +++ b/docs/modules/render/view-model.mdx @@ -0,0 +1,26 @@ +# ViewModel + +Modify the position and appearance of your held items. + +## Settings + +- **Shader** (Category) — *Use outline shader from ESP module:* + - **Color**, **RainbowGradient**. +- **Fill** (Category) — *Fill the inside of the object:* + - **Filling** (Enum): `Flat`, `Dots`, `Lines`. + - **Opacity**. +- **Outline** (Category) — *Outline the object:* + - **Width**, **Fade**. +- **FOV** — *Change the field of view for the viewmodel.* +- **Hands** — *Toggle the visibility of your hands.* +- **Sway** — *Toggle vanilla motion sway.* +- **Shadow** — *Toggle vanilla item shadow.* +- **Left / Right** (Category) — *Modify specific hands:* + - **Scale** (X, Y, Z). + - **Rotate** (X, Y, Z). + - **Offset** (WhileEating, X, Y, Z). + +## Commands + +- `viewmodel` +- `viewmodel [value]` \ No newline at end of file diff --git a/docs/modules/render/xray.mdx b/docs/modules/render/xray.mdx new file mode 100644 index 0000000..fc75381 --- /dev/null +++ b/docs/modules/render/xray.mdx @@ -0,0 +1,9 @@ +# Xray + +Allows you to see specific blocks (like ores) through other blocks. + +## Commands + +- `xray` +- `xray [value]` +- `xray blocks ` \ No newline at end of file diff --git a/docs/modules/render/zooom.mdx b/docs/modules/render/zooom.mdx new file mode 100644 index 0000000..43ac5aa --- /dev/null +++ b/docs/modules/render/zooom.mdx @@ -0,0 +1,18 @@ +# Zoom + +Zooms your camera in, similar to Optifine. + +## Settings + +- **Usage** (Enum) — *Activation mode:* + - `Hold`, `Toggle` +- **Zoom** — *The amount of zoom to apply.* +- **Smooth** — *Enable smooth zooming animation.* +- **Reset** — *Reset zoom level when disabled.* +- **Scroll** — *Allow using the scroll wheel to change zoom level.* +- **Cinematic** — *Enable cinematic camera movement while zoomed.* + +## Commands + +- `zoom` +- `zoom [value]` \ No newline at end of file diff --git a/docs/modules/world/air-place.mdx b/docs/modules/world/air-place.mdx new file mode 100644 index 0000000..279aae9 --- /dev/null +++ b/docs/modules/world/air-place.mdx @@ -0,0 +1,14 @@ +# AirPlace + +Place blocks in midair. + +## Settings + +- **Grim** — Enable bypass for Grim anticheat. +- **Render** (Category) + - **Color** — The color of the placement preview. + +## Commands + +- `airplace` +- `airplace [value]` \ No newline at end of file diff --git a/docs/modules/world/auto-tunnel.mdx b/docs/modules/world/auto-tunnel.mdx new file mode 100644 index 0000000..6a6f6f3 --- /dev/null +++ b/docs/modules/world/auto-tunnel.mdx @@ -0,0 +1,19 @@ +# AutoTunnel + +Automatically tunnels through blocks. + +## Settings + +- **Height** — The height of the tunnel. +- **Width** — The width of the tunnel. +- **Range** — The mining range. +- **Delay** — The delay between mining blocks. +- **WhileMoving** — Continue tunneling while moving. +- **Rotate** — Rotate towards blocks being mined. +- **Render** — Show a preview of blocks to be mined. +- **AutoWalk** — Automatically walk forward while tunneling. + +## Commands + +- `autotunnel` +- `autotunnel [value]` \ No newline at end of file diff --git a/docs/modules/world/avoid.mdx b/docs/modules/world/avoid.mdx new file mode 100644 index 0000000..272b58f --- /dev/null +++ b/docs/modules/world/avoid.mdx @@ -0,0 +1,18 @@ +# Avoid + +Avoid dangerous stuff. + +## Settings + +- **Fire** — Prevent walking into fire. +- **Cactus** — Prevent walking into cacti. +- **Web** — Prevent walking into cobwebs. +- **Portal** — Prevent walking into portals. +- **Endermen** (Enum) — *Avoid looking into the eyes of endermen:* + - `Off`, `Avoid`, `Aggravate` +- **Unloaded** — Prevent walking into unloaded chunks. + +## Commands + +- `avoid` +- `avoid [value]` \ No newline at end of file diff --git a/docs/modules/world/base-finder.mdx b/docs/modules/world/base-finder.mdx new file mode 100644 index 0000000..d2465df --- /dev/null +++ b/docs/modules/world/base-finder.mdx @@ -0,0 +1,28 @@ +# BaseFinder + +AFK module to find bases/stashes with minimal effort. + +## Settings + +- **Logger** (Category) + - **Notification** (Sub-category): + - **CensorCoords** — Hide coordinates in notifications. +- **Sound** — Play a sound when a base/stash is found. +- **Beds** — Detect beds. +- **EndPortals** — Detect end portals. +- **IgnoreDungeonChests** — Ignore chests found in dungeons. +- **Shulkers** — Detect shulker boxes. +- **Chests** — Detect standard chests. +- **EnderChests** — Detect ender chests. +- **Skulls** — Detect player/mob heads. +- **Spawners** — Detect mob spawners. +- **Hoppers** — Detect hoppers. +- **Dispensers** — Detect dispensers/droppers. +- **Donkeys** — Detect donkeys. +- **Llamas** — Detect llamas. +- **ChestRequired** — Only notify if a chest is present. + +## Commands + +- `basefinder` +- `basefinder [value]` \ No newline at end of file diff --git a/docs/modules/world/block-tweaks.mdx b/docs/modules/world/block-tweaks.mdx new file mode 100644 index 0000000..8f91dd3 --- /dev/null +++ b/docs/modules/world/block-tweaks.mdx @@ -0,0 +1,12 @@ +# BlockTweaks + +Tweaks for block related actions. + +## Settings + +- **Abort** — *Allows you to stop and continue mining at the same break progress.* + +## Commands + +- `blocktweaks` +- `blocktweaks [value]` \ No newline at end of file diff --git a/docs/modules/world/client-side-time.mdx b/docs/modules/world/client-side-time.mdx new file mode 100644 index 0000000..07cad2d --- /dev/null +++ b/docs/modules/world/client-side-time.mdx @@ -0,0 +1,12 @@ +# ClientSideTime + +Set the time client-side. + +## Settings + +- **Time** — The time value to display (0-24000). + +## Commands + +- `clientsidetime` +- `clientsidetime [value]` \ No newline at end of file diff --git a/docs/modules/world/environment.mdx b/docs/modules/world/environment.mdx new file mode 100644 index 0000000..4111f0b --- /dev/null +++ b/docs/modules/world/environment.mdx @@ -0,0 +1,19 @@ +# Environment + +Modifies the environment. + +## Settings + +- **World** — *Changes the color of the world:* + - **Color** — Customize world lighting color. +- **Sky** — *Changes the color of the sky:* + - **Overworld** (Color) + - **Nether** (Color) + - **End** (Color) +- **Cloud** — *Changes the color of clouds:* + - **Color** — Customize cloud color. + +## Commands + +- `environment` +- `environment [value]` \ No newline at end of file diff --git a/docs/modules/world/fast-break.mdx b/docs/modules/world/fast-break.mdx new file mode 100644 index 0000000..51b6d5a --- /dev/null +++ b/docs/modules/world/fast-break.mdx @@ -0,0 +1,45 @@ +# FastBreak + +Break blocks faster. + +## Settings + +- **Mode** (Enum): `Normal`, `Packet`. +- **Speed** — The mining speed multiplier. +- **Delay** — *Ticks between destroying blocks.* +- **Instamine** — *Instantly mine some blocks that normally wouldn't be.* +- **TPSSync** — *Syncs mining to the server TPS.* +- **Grim** — *Grim bypass.* +- **Raytrace** — *Prevent mining through walls.* +- **Rotate** — *Rotates to the block you are currently mining.* +- **AutoSwitch** (Category) — *Automatically switches to best tool:* + - **Silent** (Sub-category): `MultiTask`. + - **Return** — *Returns to the previous item you were holding.* + - **Inventory** — *Pull tools out of inventory.* + - **UpdatedNCP** — *UpdatedNCP adjustments.* +- **InstantRebreak** — *Instantly break the last block you mined.* +- **AutoRebreak** — *Automatically remine the last block you mined.* +- **Queue** (Category) — *Queue up blocks to be mined:* + - **Priority** (Enum): `Newest`, `Oldest`, `Closest`. + - **CancelCurrent** — *Cancel the current mining progress.* + - **DoubleBreak** — *Breaks multiple blocks at the same time.* +- **PauseWhileEating** — Pause mining while using items. +- **Blocks** (Enum): `All`, `Blacklist`, `Whitelist`. +- **Abort** — *Bind to abort breaking.* +- **Render** (Category) + - **Mode** (Enum): `Static`, `In`, `Out`, `In Out`. + - **StartColor** — Starting color of the animation. + - **EndColor** — Ending color of the animation. + - **Fill** — *Fill the box.* + - **Outline** (Category): + - **Width** — *Width of outline.* + - **Static** — Keep outline static. + - **DepthTest** — *Hide hidden sides.* +- **Debug** — Show debug info. + +## Commands + +- `fastbreak` +- `fastbreak [value]` +- `fastbreak whitelist list/clear/add/remove` +- `fastbreak blacklist list/clear/remove/add` \ No newline at end of file diff --git a/docs/modules/world/fast-place.mdx b/docs/modules/world/fast-place.mdx new file mode 100644 index 0000000..6b1d022 --- /dev/null +++ b/docs/modules/world/fast-place.mdx @@ -0,0 +1,15 @@ +# FastPlace + +Place blocks faster. + +## Settings + +- **Mode** (Enum): `Whitelist`, `Blacklist`. +- **Delay** — *Tick delay after placing.* + +## Commands + +- `fastplace` +- `fastplace [value]` +- `fastplace whitelist list/clear/remove/add` +- `fastplace blacklist list/clear/remove/add` \ No newline at end of file diff --git a/docs/modules/world/liquid-interact.mdx b/docs/modules/world/liquid-interact.mdx new file mode 100644 index 0000000..2038a60 --- /dev/null +++ b/docs/modules/world/liquid-interact.mdx @@ -0,0 +1,8 @@ +# LiquidInteract + +Place blocks on top of water. + +## Commands + +- `liquidinteract` +- `liquidinteract [value]` \ No newline at end of file diff --git a/docs/modules/world/mob-owner.mdx b/docs/modules/world/mob-owner.mdx new file mode 100644 index 0000000..6d0a83d --- /dev/null +++ b/docs/modules/world/mob-owner.mdx @@ -0,0 +1,12 @@ +# MobOwner + +Tells you the identity of who tamed a mob. + +## Settings + +- **Pearls** — Attempt to show owner information for ender pearls. + +## Commands + +- `mobowner` +- `mobowner [value]` \ No newline at end of file diff --git a/docs/modules/world/new-chunks.mdx b/docs/modules/world/new-chunks.mdx new file mode 100644 index 0000000..3f0514f --- /dev/null +++ b/docs/modules/world/new-chunks.mdx @@ -0,0 +1,24 @@ +# NewChunks + +Highlights new chunks. + +## Settings + +- **Mode** (Enum): `Palette`, `Ores`, `Liquid Motion`. +- **Inverse** — Highlight old chunks instead of new ones. +- **Alerts** (Category) — *Alerts for new chunks:* + - **Sound**, **Chat**, **Log**. +- **Fresh** — *Ignores new sections under Y level 0.* +- **Render Settings** (Category) + - **Colors** (Sub-category): `Overworld`, `Nether`, `End`. + - **YLevel** (Enum): `Void`, `Sky`, `Player`, `Custom`. + - **CustomYLevel** — Set a specific Y level for the highlight. + - **Fill** — Toggle filling the highlighted chunk area. + - **Outline** (Category): + - **Width** — The thickness of the highlight outline. + +## Commands + +- `newchunks` +- `newchunks [value]` +- `newchunks clear` \ No newline at end of file diff --git a/docs/modules/world/no-glitch-blocks.mdx b/docs/modules/world/no-glitch-blocks.mdx new file mode 100644 index 0000000..2d18e63 --- /dev/null +++ b/docs/modules/world/no-glitch-blocks.mdx @@ -0,0 +1,13 @@ +# NoGlitchBlocks + +Prevents client-side ghost blocks. + +## Settings + +- **Place** — Prevents ghost blocks when placing. +- **Break** — Prevents ghost blocks when breaking. + +## Commands + +- `noglitchblocks` +- `noglitchblocks [value]` \ No newline at end of file diff --git a/docs/modules/world/no-mine-animation.mdx b/docs/modules/world/no-mine-animation.mdx new file mode 100644 index 0000000..1075e8e --- /dev/null +++ b/docs/modules/world/no-mine-animation.mdx @@ -0,0 +1,8 @@ +# NoMineAnimation + +Hides your block mining progress for other players. + +## Commands + +- `nomineanimation` +- `nomineanimation [value]` \ No newline at end of file diff --git a/docs/modules/world/nuker.mdx b/docs/modules/world/nuker.mdx new file mode 100644 index 0000000..6b00d8a --- /dev/null +++ b/docs/modules/world/nuker.mdx @@ -0,0 +1,26 @@ +# Nuker + +Destroy blocks around you. + +## Settings + +- **Mode** (Enum): `Survival`, `Creative`. +- **Targeting** (Enum): `Whitelist`, `Selective`, `All`. +- **ClickType** (Enum): `Left`, `Right`. +- **Break** (Enum): `Normal`, `Packet`. +- **Priority** (Enum): `Closest`, `Highest`, `Fastest`. +- **Range** — The maximum distance to break blocks. +- **Delay** — The delay between breaking blocks. +- **Strict** — Enforce strict direction checks. +- **Flatten** — Only break blocks above your feet level. +- **Rotate** (Category) + - **Speed** — Speed of rotation. +- **Render** (Category) + - **Color** — Color of the block breaking preview. + +## Commands + +- `nuker` +- `nuker [value]` +- `nuker select [block]` +- `nuker whitelist [block]` \ No newline at end of file diff --git a/docs/modules/world/scaffold.mdx b/docs/modules/world/scaffold.mdx new file mode 100644 index 0000000..f35a3bb --- /dev/null +++ b/docs/modules/world/scaffold.mdx @@ -0,0 +1,33 @@ +# Scaffold + +Automatically bridges and towers with blocks. + +## Settings + +- **Blocks** (Enum): `All`, `Blacklist`, `Whitelist`. +- **Swap** (Category): + - **Silent** — Swap server-side only. +- **Safewalk** (Category): + - **Sneak** — *Sneak at the edge of blocks.* +- **Expand** (Category) — *Place blocks around you:* + - **Range**, **OnlyForward**, **WhileMoving**. +- **Tower** (Category) — *Build up faster:* + - **Strict** — *Disable tower for certain blocks for Updated-NCP.* +- **StrictSprint** (Enum) — *Allows you to sprint on certain anticheats:* + - `Grim`, `Ncp`, `Off`. +- **HoldY** — *Allows you to jump without increasing height.* +- **Delay** — *Delay between block placements.* +- **StrictDir**, **Raytrace**. +- **Rotate** (Category) + - **Speed**. + - **Constant** (Category) — *Keep rotations for however many ticks for Updated-NCP:* + - **Ticks**. + - **Strict** — *Adjust rotations for Updated-NCP.* + - **Instant** — *Send rotations instantly.* +- **Render** (Category): + - **Color**, **Width**, **DepthTest**. + +## Commands + +- `scaffold` +- `scaffold whitelist/blacklist list/clear/remove/add` \ No newline at end of file diff --git a/docs/modules/world/self-block.mdx b/docs/modules/world/self-block.mdx new file mode 100644 index 0000000..4a971a2 --- /dev/null +++ b/docs/modules/world/self-block.mdx @@ -0,0 +1,16 @@ +# SelfBlock + +Glitches you inside of a block. + +## Settings + +- **InsideCheck** — Checks if you are already inside a block. +- **Rotate** — Rotate towards the block placement. +- **Center** — Center the player before placing. +- **Only** (Category): + - **Obsidian**, **EnderChests**, **Skulls**. + +## Commands + +- `selfblock` +- `selfblock [value]` \ No newline at end of file diff --git a/docs/modules/world/source-removed.mdx b/docs/modules/world/source-removed.mdx new file mode 100644 index 0000000..d3674c5 --- /dev/null +++ b/docs/modules/world/source-removed.mdx @@ -0,0 +1,18 @@ +# SourceRemover + +Blocks in nearby source blocks. + +## Settings + +- **Priority** (Enum): `Furthest`, `Lowest`. +- **Range**, **Delay**. +- **Rotate** (Category): `Speed`. +- **Raytrace**, **StrictDir**, **Swap**. +- **Water** (Category): + - **BubbleColumns** — Remove bubble column source blocks. +- **Lava** — Remove lava source blocks. +- **Render** (Category): `Color`. + +## Commands + +- `sourceremover` \ No newline at end of file diff --git a/docs/modules/world/timer.mdx b/docs/modules/world/timer.mdx new file mode 100644 index 0000000..5ed710d --- /dev/null +++ b/docs/modules/world/timer.mdx @@ -0,0 +1,13 @@ +# Timer + +Speeds up the game. + +## Settings + +- **Speed** — The multiplier for game speed. +- **TPS Sync** — Synchronize game speed with server TPS. + +## Commands + +- `timer` +- `timer [value]` \ No newline at end of file diff --git a/docs/modules/world/waypoints.mdx b/docs/modules/world/waypoints.mdx new file mode 100644 index 0000000..6f38d05 --- /dev/null +++ b/docs/modules/world/waypoints.mdx @@ -0,0 +1,27 @@ +# Waypoints + +Save points in the world and view them. + +## Settings + +- **Mode** (Enum): `Coords`, `Distance`, `None`. +- **Nametag** (Category): + - **CustomFont**, **Vertical**, **Scale**. +- **Beam** — Show a beacon-like beam at the waypoint. +- **Box** — Render a box at the waypoint. +- **Tracer** — Draw a line from the player to the waypoint. +- **AutoDisconnect** (Category): + - **Range** — Automatically disconnect when reaching range. +- **Color** — The color of the waypoint marker. + +## Commands + +- `waypoints` +- `waypoints [value]` +- `waypoints add ` +- `waypoints add [dimension] [server]` +- `waypoints add [dimension] [server]` +- `waypoints remove ` +- `waypoints toggle ` +- `waypoints list` +- `waypoints clear` \ No newline at end of file diff --git a/docs/public/rh-head_256x256.png b/docs/public/rh-head_256x256.png deleted file mode 100644 index f57a212a2483d34a13566d7b46590c4ed533add1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%U;1O92q}4%~QHyh;KLZ1c zkf)1dNX4ADcMY?qB#N|M?D;dZLGZ52hG`<(nr>ySy{mH|Xv1~ZC8COoQQ>t1{iSU+46Te_Q_k{d@86_4RQ*@9y7= z?SHqu{;z;KgMb=s(6(EV(_X(+Zjg+ljrkB~Z}X84`2OxgLCOCY56-^$xBb1n+xORd z7!-VHhH}3C_;>g9N#?qLyJpO}zpFSqz2yI^PxpbrdtZF|;@`WiUtj!dKRtZ$Z`%6% z%K!QQ-u~9VtZwk)=HzyWy|wxb9Ktk1(aZRMe0cf##lL&^?!EYzwpsG-{IZ%Fn_cx) zRaU$H|9QFiBF*i$u(p=Idq2l)@$cu)pD+G>dD;H|ndaAT(>ScZ$w!G<{$0Cbt|G9Q OVDNPHb6Mw<&;$Ulm=4$g diff --git a/docs/support/exit-codes.mdx b/docs/support/exit-codes.mdx new file mode 100644 index 0000000..5f9ffc2 --- /dev/null +++ b/docs/support/exit-codes.mdx @@ -0,0 +1,19 @@ +# Start Errors + +:::warning +Not all error fixes may be listed here, and if you are unable to fix the error using these instructions, please contact support at support@rusherhack.org or open a ticket on the Discord server. +::: + +## Key Terms +- **HWID (Hardware ID)** — your computer's unique ID. + +| Error code | Description | How to fix | +| :--- | :--- | :--- | +| **0x1000** | An attempt to verify the computer's HWID failed. This happens when changing a PC or its components. | Send an email to **support@rusherhack.org** with a request to reset your HWID or open a ticket on the Discord server. | +| **0x1200** | RusherHack loader can't find authentication files on your drive. | **Linux:**
1. Install Flatseal.
2. Enable "All user files" for Minecraft.
3. Or run: `sudo flatpak override --filesystem=home`

**Windows:**
1. Check antivirus.
2. Reinstall via RusherHack Installer. | +| **0x1250** | General profile authentication error | Reinstall RusherHack using the RusherHack Installer from your personal account. | +| **0x1400** | LoaderUpdateFailed: The loader found an update but was unable to install it. | 1. Check internet connection.
2. Try a VPN service.
3. Manually reinstall via RusherHackInstaller. | +| **0x1600** | InjectionFailed: Error injecting RusherHack into Minecraft | 1. Check game version.
2. Try running without other mods.
3. Update Java version. | +| **0x1650** | ClassLoaderError: Error initializing RusherHack files | 1. Try a different launcher.
2. Check for mod conflicts.
3. Check internet connection. | +| **0x1800** | Error connecting to RusherHack servers | 1. Check internet connection.
2. Use DNS: `1.1.1.1`
3. Try a VPN. | +| **No code** | The RusherHack and Minecraft versions don't match. | Check if you are using the correct version of Minecraft. | \ No newline at end of file diff --git a/docs/support/help.mdx b/docs/support/help.mdx new file mode 100644 index 0000000..410e25a --- /dev/null +++ b/docs/support/help.mdx @@ -0,0 +1,26 @@ +# Getting Help + +Having an issue with RusherHack? Reach out to the support team, and we will try our best to assist you! + +Below are the different methods of getting in touch with us. + +## Support Methods + +:::tip Discord (Recommended) +This is the fastest way to get help from both the staff and the community. +- **Access:** To get access to the RusherHack Discord server, you must link your account in the installer. +- **Channel:** `#support-and-hwid` +::: + +:::info Email +Direct contact with the developer via email. +- **Address:** `support@rusherhack.org` +- **Response Time:** Usually responds in under 24 hours. +::: + +--- + +### Before contacting support: +1. Check the [Start Errors](./exit-codes.mdx) page. +2. Ensure your Java and Drivers are up to date. +3. Try running RusherHack without other mods to rule out conflicts. \ No newline at end of file diff --git a/docs/support/hwid.mdx b/docs/support/hwid.mdx new file mode 100644 index 0000000..ee429bb --- /dev/null +++ b/docs/support/hwid.mdx @@ -0,0 +1,49 @@ +# HWID (Hardware ID) + +This page explains what HWID is, why it is used, and how it works within the RusherHack ecosystem. + +## What is HWID? + +**HWID** stands for **Hardware ID**, which is a unique identifier tied to your computer's hardware. We use it to verify that your account is being used on your own system and not shared with others. + +The identifier is generated by scanning several hardware components (like your CPU and Motherboard) to create a unique "fingerprint" for your machine. Because every setup is different, each HWID is unique to that specific computer. + +:::warning Account Sharing +Sharing or transferring accounts between users is strictly against our **Terms of Service (ToS)**. HWID tracking is the primary tool we use to enforce this rule. +::: + +### Why we use HWID: +- **Security:** Preventing unauthorized access to your account. +- **Licensing:** Ensuring that one license corresponds to one user. +- **Anti-Leak:** Preventing the client from being redistributed. + +--- + +## Multiple Devices (Second HWID) + +RusherHack allows you to use your license on up to **two (2)** computers at the same time, provided they both belong to you. + +:::info Device Limit +- **Max HWIDs:** 2 computers. +- If you need to use RusherHack on more than 2 machines, you must purchase an additional license. +::: + +### How to whitelist a secondary device +To get a second computer whitelisted, you must submit a request for review. Follow these steps **on the second device**: + +1. Open a support ticket in the `#support-tickets` channel on our Discord. +2. Start a screen recording (using OBS or a phone). **Ensure your Discord client is visible in the background.** +3. Download and run the [RusherHack Installer](https://accounts.rusherhack.org/). +4. In the Login screen, type the string `hwid` into both the **Username** and **Password** fields and click **Login**. +5. The installer will close, and your HWID will be automatically copied to your clipboard. +6. **Paste the HWID** into your support ticket. +7. Stop the recording and **upload the video** to the ticket for verification. + +--- + +## HWID Resets + +If you replace your computer or change major components (like the motherboard), your HWID will change, and you will likely need an **HWID Reset**. + +- **How to request:** You can request a reset by opening a ticket on Discord or by emailing `support@rusherhack.org`. +- **Requirements:** You may be asked to provide proof of purchase or explain the reason for the hardware change. \ No newline at end of file diff --git a/docs/support/troubleshooting.mdx b/docs/support/troubleshooting.mdx new file mode 100644 index 0000000..fd6916a --- /dev/null +++ b/docs/support/troubleshooting.mdx @@ -0,0 +1,35 @@ +# Troubleshooting + +If you are encountering issues while installing or launching RusherHack, check the solutions below. + +## Installer Issues + +:::tip Gray Window Fix +If the installer opens as an empty **Gray Window**, try running it via terminal: +`java -jar rusherhack-installer.jar` +::: + +:::tip Jar File Association (Jarfix) +If you are unable to open the RusherHack installer, there may be an issue with .jar file association. Download and run [Jarfix](https://johann.loefflmann.net/downloads/jarfix.exe) to resolve this. +::: + +--- + +## Launch & Antivirus + +:::warning Antivirus False Positives +Some antivirus software may prevent RusherHack from launching. You may need to exclude the installer or the `rusherhack-loader.jar` file from your antivirus scan. +::: + +--- + +## Compatibility + +:::info Other Versions (ViaFabric) +If you want to join a server on a Minecraft version that RusherHack does not natively support (e.g., 1.19.4), you can use the **ViaFabricPlus** mod alongside RusherHack. +::: + +--- + +## Still need help? +If your issue isn't listed here, please refer to the [Getting Help](./help.mdx) page or check your [Start Errors](./exit-codes.mdx). \ No newline at end of file diff --git a/docusaurus.config.js b/docusaurus.config.js new file mode 100644 index 0000000..6e7a7b6 --- /dev/null +++ b/docusaurus.config.js @@ -0,0 +1,71 @@ +import {themes as prismThemes} from 'prism-react-renderer'; + +const config = { + title: 'RusherHack Documentation', + tagline: 'Documentation for all things related to RusherHack.', + favicon: 'img/logo.png', + url: 'https://felekdevyt.github.io', + baseUrl: '/rusherhack-docs/', + organizationName: 'FelekDevYT', + projectName: 'rusherhack-docs', + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + presets: [ + [ + 'classic', + ({ + docs: { + sidebarPath: './sidebars.js', + }, + blog: false, + theme: { + customCss: './src/css/custom.css', + }, + }), + ], + ], + themeConfig: + ({ + colorMode: { + defaultMode: 'dark', + disableSwitch: false, + respectPrefersColorScheme: true, + }, + navbar: { + title: 'RusherHack Documentation', + logo: { + alt: 'RusherHack Logo', + src: 'img/logo.png', + }, + items: [ + {to: '/docs/intro', label: 'Guide', position: 'right'}, + {to: '/docs/modules/features', label: 'Features', position: 'right'}, + //{to: '/docs/api', label: 'API', position: 'right'}, + { + href: 'https://github.com/RusherDevelopment', + position: 'right', + className: 'header-github-link', + }, + { + href: 'https://www.youtube.com/@RusherDevelopment', + position: 'right', + className: 'header-youtube-link', + }, + ], + }, + footer: { + style: 'dark', + copyright: `RusherHack and Rusher Development LLC are not affiliated with Mojang AB.
© ${new Date().getFullYear()} Rusher Development LLC - All Rights Reserved`, + }, + prism: { + theme: prismThemes.github, + darkTheme: prismThemes.dracula, + }, + }), +}; + +export default config; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e63744a..c1a06f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1566 +1,19430 @@ { - "name": "documentation", + "name": "rusherhack-on-top", + "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { + "name": "rusherhack-on-top", + "version": "0.0.0", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/faster": "3.10.1", + "@docusaurus/preset-classic": "3.10.1", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "prism-react-renderer": "^2.3.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, "devDependencies": { - "vitepress": "^1.0.0-rc.44" + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/types": "3.10.1" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.18.1.tgz", + "integrity": "sha512-aehCadlWOGvrT91KUIZpC0MbB8KBW9yUuvTJFd2xesR7le/IsT4nJUnjCCZ4ZqZCeTcPHPV5mo//fZ5oxcSVYw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@algolia/autocomplete-core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", - "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", - "dev": true, + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.8.tgz", + "integrity": "sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA==", + "license": "MIT", "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", - "@algolia/autocomplete-shared": "1.9.3" + "@algolia/autocomplete-plugin-algolia-insights": "1.19.8", + "@algolia/autocomplete-shared": "1.19.8" } }, "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", - "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", - "dev": true, + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.8.tgz", + "integrity": "sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA==", + "license": "MIT", "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" + "@algolia/autocomplete-shared": "1.19.8" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", - "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" - }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz", + "integrity": "sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==", + "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, - "node_modules/@algolia/autocomplete-shared": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", - "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", - "dev": true, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" + "node_modules/@algolia/client-abtesting": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.52.1.tgz", + "integrity": "sha512-HmXOGBOAOJPounpBzBpuY0zDYeiCpxgHnQmuA7JO6ScukcBdGp3/XM9zJk5pJx/xNGD68mbPGXWpDxGtl6BwDQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz", - "integrity": "sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==", - "dev": true, + "node_modules/@algolia/client-analytics": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.52.1.tgz", + "integrity": "sha512-5oo4+I8iixie9vXhCyNFCzeIr8pqA3FQ//VsLHTDvZAV4ttYOPGvYHGQq5NSalrLx5Jc3dRro/5uDOlnUMcBJg==", + "license": "MIT", "dependencies": { - "@algolia/cache-common": "4.22.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/cache-common": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.22.1.tgz", - "integrity": "sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==", - "dev": true + "node_modules/@algolia/client-common": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.52.1.tgz", + "integrity": "sha512-qCDoZfx5MpX7XQzvQ3bC4tSEMkQWQMaF/ABtLuoze03Y/flR563CCSws02qIJ23oX7lxl92LsilZjINVyTdtLw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } }, - "node_modules/@algolia/cache-in-memory": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz", - "integrity": "sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==", - "dev": true, + "node_modules/@algolia/client-insights": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.52.1.tgz", + "integrity": "sha512-hnGs0/lsFJ2PWDxNBz7pxreXo/Xz7gxYRcfePBUjsH26ad0kU/sgnVZd9LwWBpsQv65z2jlb5dkyaB9WE9M9FQ==", + "license": "MIT", "dependencies": { - "@algolia/cache-common": "4.22.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/client-account": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.22.1.tgz", - "integrity": "sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==", - "dev": true, + "node_modules/@algolia/client-personalization": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.52.1.tgz", + "integrity": "sha512-2VxxNc/uBysyKvGeBdSM5n9eIDKH8kWD7wd9/yqbJAiVwU4Yv6tU1LSJusHKrXV/aCu1KW7t9Gug9QyeEmtn/Q==", + "license": "MIT", "dependencies": { - "@algolia/client-common": "4.22.1", - "@algolia/client-search": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/client-analytics": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.22.1.tgz", - "integrity": "sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==", - "dev": true, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.52.1.tgz", + "integrity": "sha512-O6mPtsw3xEfNOe6gWFpYLeAZAIljNa4Hgna3bq15PwyN7nbjTY0wXJFRbzs/0YVf75Br+SbOQUmjKxXYjDiSiQ==", + "license": "MIT", "dependencies": { - "@algolia/client-common": "4.22.1", - "@algolia/client-search": "4.22.1", - "@algolia/requester-common": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/client-common": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.22.1.tgz", - "integrity": "sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==", - "dev": true, + "node_modules/@algolia/client-search": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.52.1.tgz", + "integrity": "sha512-gA8oJOV1LnQQkDf91iebNnFInHuW0gRPEgLSOQ7EfipCEjYTHm5swm1DlH9H5RaRw4RrHuzHBegnlzc0MAstcg==", + "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/client-personalization": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.22.1.tgz", - "integrity": "sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==", - "dev": true, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", + "license": "MIT" + }, + "node_modules/@algolia/ingestion": { + "version": "1.52.1", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.52.1.tgz", + "integrity": "sha512-U9zZfc5xIu9wRxZkt+HceJUAD4VKHKbAyLSloJdEyMRmphXeibfrY9cxqIXBcmPeZzGhn3Imb35Dq8l19PkJhw==", + "license": "MIT", "dependencies": { - "@algolia/client-common": "4.22.1", - "@algolia/requester-common": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/client-search": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.22.1.tgz", - "integrity": "sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==", - "dev": true, + "node_modules/@algolia/monitoring": { + "version": "1.52.1", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.52.1.tgz", + "integrity": "sha512-a3SGNceHmkQfq77iG8Ka+w1pvwfZa/0lzEIgse30fL0kD+yKnd/dg0dQvSfFPAEt2f21DMcGkDSSeJlO3KdQjQ==", + "license": "MIT", "dependencies": { - "@algolia/client-common": "4.22.1", - "@algolia/requester-common": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/logger-common": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.22.1.tgz", - "integrity": "sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==", - "dev": true - }, - "node_modules/@algolia/logger-console": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.22.1.tgz", - "integrity": "sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==", - "dev": true, + "node_modules/@algolia/recommend": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.52.1.tgz", + "integrity": "sha512-z98QEguCFDpxb4S/PyrUK1igqF8tPsdbqOUUO6ON91vJ58w+Gwa6ncrI0oNXSFcrkxA5EqPKPQ2A1PBCn08TYQ==", + "license": "MIT", "dependencies": { - "@algolia/logger-common": "4.22.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz", - "integrity": "sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==", - "dev": true, + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.52.1.tgz", + "integrity": "sha512-CI7+/0I11QeZM59Uc8whd2or0kqzFVjpaPn9Qpwll/krHcBAxk24WkAQ6WX+IwDVMfpont4YGbKwAmCre3vE8Q==", + "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.22.1" + "@algolia/client-common": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/requester-common": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.22.1.tgz", - "integrity": "sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==", - "dev": true + "node_modules/@algolia/requester-fetch": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.52.1.tgz", + "integrity": "sha512-S6bDuw9byfOvm3T71cgdoZgrgnZq6hpdMLkx52Louh57nUAmvGQESz2aojOynQHjbTiV55smvAFbgn0qT4tJrg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } }, "node_modules/@algolia/requester-node-http": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz", - "integrity": "sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==", - "dev": true, + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.52.1.tgz", + "integrity": "sha512-tqZXM+54rWo4mk5jL5Z/flE11nPmNEdXwFBM5py9DkOmbjeCNemfVd45FyM97XdzfZ0dl9uOJC6PYn1FpkeyQg==", + "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.22.1" + "@algolia/client-common": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@algolia/transporter": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.22.1.tgz", - "integrity": "sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==", - "dev": true, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", "dependencies": { - "@algolia/cache-common": "4.22.1", - "@algolia/logger-common": "4.22.1", - "@algolia/requester-common": "4.22.1" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", - "dev": true, + "node_modules/@babel/compat-data": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", + "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { - "parser": "bin/babel-parser.js" + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@docsearch/css": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", - "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==", - "dev": true + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/@docsearch/js": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz", - "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==", - "dev": true, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", "dependencies": { - "@docsearch/react": "3.5.2", - "preact": "^10.0.0" + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@docsearch/react": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", - "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", - "dev": true, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz", + "integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==", + "license": "MIT", "dependencies": { - "@algolia/autocomplete-core": "1.9.3", - "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.5.2", - "algoliasearch": "^4.19.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.29.0", + "semver": "^6.3.1" }, - "peerDependencies": { - "@types/react": ">= 16.8.0 < 19.0.0", - "react": ">= 16.8.0 < 19.0.0", - "react-dom": ">= 16.8.0 < 19.0.0", - "search-insights": ">= 1 < 3" + "engines": { + "node": ">=6.9.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "search-insights": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz", + "integrity": "sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", + "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", + "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.5.tgz", + "integrity": "sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.4", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", + "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/postcss-alpha-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function-display-p3-linear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-content-alt-text": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-contrast-color-function": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", + "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz", + "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-light-dark-function": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", + "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", + "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", + "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", + "integrity": "sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-position-area-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz", + "integrity": "sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-property-rule-prelude-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-1.0.0.tgz", + "integrity": "sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-random-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", + "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", + "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-sign-functions": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", + "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", + "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-syntax-descriptor-syntax-production": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-syntax-descriptor-syntax-production/-/postcss-syntax-descriptor-syntax-production-1.0.1.tgz", + "integrity": "sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-system-ui-font-family": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz", + "integrity": "sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", + "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/utilities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/core": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.6.3.tgz", + "integrity": "sha512-rUOujwIpxJRgD7+kicVsI3D5sqBvdiRTquzWBpTEXZs8ZXfGbfzpus5HqumaNYTppN2HvH8E2yNuRwYdHJeOlA==", + "license": "MIT", + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@docsearch/css": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.6.3.tgz", + "integrity": "sha512-nlOwcXcsNAptQl4vlL4MA78qNJKO0Qlds5GuBjCoePgkebTXLSf8Qt1oyZ3YBshYupKXG9VRGEsk1zr23d+bzQ==", + "license": "MIT" + }, + "node_modules/@docsearch/react": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.6.3.tgz", + "integrity": "sha512-Bg2wdDsoQVlNCcEKuEJAU04tvHCqgx8rIu+uIoM4pRtcx3TBKJuXutJik3LTA8LRc9YEyHkrYUrmcC0D7BYf+g==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.19.2", + "@docsearch/core": "4.6.3", + "@docsearch/css": "4.6.3" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-core": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", + "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", + "@algolia/autocomplete-shared": "1.19.2" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", + "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.19.2" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-shared": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", + "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@docusaurus/babel": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.10.1.tgz", + "integrity": "sha512-DZzFO1K3v/GoEt1fx1DiYHF4en+PuhtQf1AkQJa5zu3CoeKSpr5cpQRUlz3jr0m44wyzmSXu9bVpfir+N4+8bg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.25.9", + "@babel/preset-env": "^7.25.9", + "@babel/preset-react": "^7.25.9", + "@babel/preset-typescript": "^7.25.9", + "@babel/runtime": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@docusaurus/logger": "3.10.1", + "@docusaurus/utils": "3.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/bundler": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.10.1.tgz", + "integrity": "sha512-HIqQPvbqnnQRe4NsBd1774KRarjXqS6wHsWELtyuSs1gCfvixJO2jUGH/OEBtr1Gvzpw+ze5CjGMvSJ8UE1KUw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@docusaurus/babel": "3.10.1", + "@docusaurus/cssnano-preset": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "babel-loader": "^9.2.1", + "clean-css": "^5.3.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.11.0", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.1.2", + "file-loader": "^6.2.0", + "html-minifier-terser": "^7.2.0", + "mini-css-extract-plugin": "^2.9.2", + "null-loader": "^4.0.1", + "postcss": "^8.5.4", + "postcss-loader": "^7.3.4", + "postcss-preset-env": "^10.2.1", + "terser-webpack-plugin": "^5.3.9", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "webpack": "^5.95.0", + "webpackbar": "^7.0.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/faster": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/faster": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.10.1.tgz", + "integrity": "sha512-3pf2fXXw0eVk8WnC3T4LIigRDupcpvngpKo9Vy7mYyBhuddc0klDUuZAIfzMoK6z05pdlk6EFC/vBSX43+1O5w==", + "license": "MIT", + "dependencies": { + "@docusaurus/babel": "3.10.1", + "@docusaurus/bundler": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cli-table3": "^0.6.3", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "core-js": "^3.31.1", + "detect-port": "^1.5.1", + "escape-html": "^1.0.3", + "eta": "^2.2.0", + "eval": "^0.1.8", + "execa": "^5.1.1", + "fs-extra": "^11.1.1", + "html-tags": "^3.3.1", + "html-webpack-plugin": "^5.6.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "open": "^8.4.0", + "p-map": "^4.0.0", + "prompts": "^2.4.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", + "react-loadable-ssr-addon-v5-slorber": "^1.0.3", + "react-router": "^5.3.4", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.4", + "semver": "^7.5.4", + "serve-handler": "^6.1.7", + "tinypool": "^1.0.2", + "tslib": "^2.6.0", + "update-notifier": "^6.0.2", + "webpack": "^5.95.0", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-dev-server": "^5.2.2", + "webpack-merge": "^6.0.1" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/faster": "*", + "@mdx-js/react": "^3.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@docusaurus/faster": { + "optional": true + } + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.1.tgz", + "integrity": "sha512-eNfHGcTKCSq6xmcavAkX3RRclHaE2xRCMParlDXLdXVP01/a2e/jKXMj/0ULnLFQSNwwuI62L0Ge8J+nZsR7UQ==", + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.5.4", + "postcss-sort-media-queries": "^5.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/faster": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/faster/-/faster-3.10.1.tgz", + "integrity": "sha512-XTZhE5C1gZ/DaYYMlSk02dwP5vhpQON5QHVz1s3892mSESAywgWanURpXEDAvt4GvGuq7s+XP8rTWHZvfaJmdQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.10.1", + "@rspack/core": "^1.7.10", + "@swc/core": "^1.7.39", + "@swc/html": "^1.13.5", + "browserslist": "^4.24.2", + "lightningcss": "^1.27.0", + "semver": "^7.5.4", + "swc-loader": "^0.2.6", + "tslib": "^2.6.0", + "webpack": "^5.95.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/types": "*" + } + }, + "node_modules/@docusaurus/logger": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.10.1.tgz", + "integrity": "sha512-oPjNFnfJsRCkePVjkGrxWGq4MvJKRQT0r9jOP0eRBTZ7Wr9FAbzdP/Gjs0I2Ss6YRkPoEgygKG112OkE6skvJw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.10.1.tgz", + "integrity": "sha512-GRmeb/wQ+iXRrFwcHBfgQhrJxGElgCsoTWZYDhccjsZVne1p8MK/EpQVIloXttz76TCe78kKD5AEG9n1xc1oxQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^2.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.1.tgz", + "integrity": "sha512-YoOZKUdGlp8xSYhuAkGdSo5Ydkbq4V4eK3sD8v0a2hloxCWdQbNBhkc+Ko9QyjpESc0BYcIGM5iHVAy5hdFV6w==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.10.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.10.1.tgz", + "integrity": "sha512-mmkgE6Q2+K74tnkou7tXlpDLvoCU/qkSa2GSQ3XUiHWvcebCoDQzS670RR3tO8PmaWlIyWWISYWzZLuMfxunRA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/theme-common": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "cheerio": "1.0.0-rc.12", + "combine-promises": "^1.1.0", + "feed": "^4.2.2", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "schema-dts": "^1.1.2", + "srcset": "^4.0.0", + "tslib": "^2.6.0", + "unist-util-visit": "^5.0.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.1.tgz", + "integrity": "sha512-2jRVrtzjf8LClGTHQlwlwuD3wQXRx3WEoF7XUarJ8Ou+0onV+SLtejsyfY9JLpfUh9hPhXM4pbBGkyAY4Bi3HQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/theme-common": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "@types/react-router-config": "^5.0.7", + "combine-promises": "^1.1.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "schema-dts": "^1.1.2", + "tslib": "^2.6.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.1.tgz", + "integrity": "sha512-huJpaRPMl42nsFwuCXvV8bVDj2MazuwRJIUylI/RSlmZeJssVoZXeCjVf1y+1Drtpa9SKcdGn8yoJ76IRJijtw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-css-cascade-layers": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.10.1.tgz", + "integrity": "sha512-r//fn+MNHkE1wCof8T29VAQezt1enGCpsFxoziBbvLgBM4JfXN2P3rxrBaavHmvLvm7lYkpJeitcDthwnmWCTw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.10.1.tgz", + "integrity": "sha512-9KqOpKNfAyqGZykRb9LhIT/vyRF6sm/ykhjj/39JvaJahDS+jZJE0Z1Wfz9q3DUNDTMNN0Q7u/kk4rKKU+IJuA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "fs-extra": "^11.1.1", + "react-json-view-lite": "^2.3.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.10.1.tgz", + "integrity": "sha512-8o0P1KtmgdYQHH+oInitPpRWI0Of5XednAX4+DMhQNSmGSRNrsEEHg1ebv35m9AgRClfAytCJ5jA9KvcASTyuA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.10.1.tgz", + "integrity": "sha512-pu3xIUo5o/zCMLfUY9BO5KOwSH0zIsAGyFRPvXHayFSA5XIhCU/SFuB0g0ZNjFn9niZLCaNvoeAuOGFJZq0fdw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "@types/gtag.js": "^0.0.20", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.10.1.tgz", + "integrity": "sha512-f6fyGHiCm7kJHBtAisGQS5oNBnpnMTYQZxDXeVrnw/3zWU+LMA22pr6UHGYkBKDbN+qPC5QHG3NuOfzQLq3+Lw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.10.1.tgz", + "integrity": "sha512-C26MbmmqgdjkDq1htaZ3aD7LzEDKFWXfpyQpt0EOUThuq5nV77zDaedV20yHcVo9p+3ey9aZ4pbHA0D3QcZTzg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "fs-extra": "^11.1.1", + "sitemap": "^7.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-svgr": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.10.1.tgz", + "integrity": "sha512-6SFxsmjWFkVLDmBUvFK6i72QjUwqyQFe4Ovz+SUJophJjOyVG3ZZG5IQpBC/kX/Gfv1yWeU9nWauH6F6Q7QX/Q==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "@svgr/core": "8.1.0", + "@svgr/webpack": "^8.1.0", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.10.1.tgz", + "integrity": "sha512-YO/FL8v1zmbxoTso6mjMz/RDjhaTJxb1UpFFTDdY5847LLDCeyYiYlrhyTbgN1RIN3xnkLKZ9Lj1x8hUzI4JOg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/plugin-content-blog": "3.10.1", + "@docusaurus/plugin-content-docs": "3.10.1", + "@docusaurus/plugin-content-pages": "3.10.1", + "@docusaurus/plugin-css-cascade-layers": "3.10.1", + "@docusaurus/plugin-debug": "3.10.1", + "@docusaurus/plugin-google-analytics": "3.10.1", + "@docusaurus/plugin-google-gtag": "3.10.1", + "@docusaurus/plugin-google-tag-manager": "3.10.1", + "@docusaurus/plugin-sitemap": "3.10.1", + "@docusaurus/plugin-svgr": "3.10.1", + "@docusaurus/theme-classic": "3.10.1", + "@docusaurus/theme-common": "3.10.1", + "@docusaurus/theme-search-algolia": "3.10.1", + "@docusaurus/types": "3.10.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.10.1.tgz", + "integrity": "sha512-VU1RK0qb2pab0si4r7HFK37cYco8VzqLj3u1PspVipSr/z/GPVKHO4/HXbnePqHoWDk8urjyGSeatH0NIMBM1A==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/plugin-content-blog": "3.10.1", + "@docusaurus/plugin-content-docs": "3.10.1", + "@docusaurus/plugin-content-pages": "3.10.1", + "@docusaurus/theme-common": "3.10.1", + "@docusaurus/theme-translations": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "copy-text-to-clipboard": "^3.2.0", + "infima": "0.2.0-alpha.45", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.5.4", + "prism-react-renderer": "^2.3.0", + "prismjs": "^1.29.0", + "react-router-dom": "^5.3.4", + "rtlcss": "^4.1.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.10.1.tgz", + "integrity": "sha512-0YtmIeoNo1fIw65LO8+/1dPgmDV86UmhMkow37gzjytuiCSQm9xob6PJy0L4kuQEMTLfUOGvkXvZr7GPrHquMA==", + "license": "MIT", + "dependencies": { + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^2.0.0", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^2.3.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.10.1.tgz", + "integrity": "sha512-OTaARARVZj2GvkJQjB+1jOIxntRaXea+G+fMsNqrZBAU1O1vJKDW22R7kECOHW27oJCLFN9HKaZeRrfAUyviug==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "^1.19.2", + "@docsearch/react": "^3.9.0 || ^4.3.2", + "@docusaurus/core": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/plugin-content-docs": "3.10.1", + "@docusaurus/theme-common": "3.10.1", + "@docusaurus/theme-translations": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "algoliasearch": "^5.37.0", + "algoliasearch-helper": "^3.26.0", + "clsx": "^2.0.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.10.1.tgz", + "integrity": "sha512-cLMyaKivjBVWKMJuWqyFVVgtqe8DPJNPkog0bn8W1MDVAKcPdxRFycBfC1We1RaNp7Rdk513bmtW78RR6OBxBw==", + "license": "MIT", + "dependencies": { + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.1.tgz", + "integrity": "sha512-XYMK8k1szDCFMw2V+Xyen0g7Kee1sP3dtFnl7vkGkZOkeAJ/oPDQPL8iz4HBKOo/cwU8QeV6onVjMqtP+tFzsw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/types/node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.10.1.tgz", + "integrity": "sha512-3ojeJry9xBYdJO6qoyyzqeJFSJBVx2mXhyDzSdjwL2+URFQMf+h25gG38iswGImicK0ELjTd1EL2xzk8hf3QPw==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "escape-string-regexp": "^4.0.0", + "execa": "^5.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "github-slugger": "^1.5.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "jiti": "^1.20.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "p-queue": "^6.6.2", + "prompts": "^2.4.2", + "resolve-pathname": "^3.0.0", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.10.1.tgz", + "integrity": "sha512-5mFSgEADtnFxFH7RLw02QA5MpU5JVUCj0MPeIvi/aF4Fi45tQRIuTwXoXDqJ+1VfQJuYJGz3SI63wmGz4HvXzA==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.10.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.10.1.tgz", + "integrity": "sha512-cRv1X69jwaWv47waglllgZVWzeBFLhl53XT/XED/83BerVBTC5FTP8WTcVl8Z6sZOegDSwitu/wpCSPCDOT6lg==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "fs-extra": "^11.2.0", + "joi": "^17.9.2", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.57.2.tgz", + "integrity": "sha512-SVjwklkpIV5wrynpYtuYnfYH1QF4/nDuLBX7VXdb+3miglcAgBVZb/5y0cOsehRV/9Vb+3UqhkMq3/NR3ztdkQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.2.tgz", + "integrity": "sha512-fhO8+iR2I+OCw668ISDJdn1aArc9zx033sWejIyzQ8RBeXa9bDSaUeA3ix0poYOfrj1KdOzytmYNv2/uLDfV6g==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.57.2.tgz", + "integrity": "sha512-nX2AdL6cOFwLdju9G4/nbRnYevmCJbh7N7hvR3gGm97Cs60uEjyd0rpR+YBS7cTg175zzl22pGKXR5USaQMvKg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "@jsonjoy.com/fs-print": "4.57.2", + "@jsonjoy.com/fs-snapshot": "4.57.2", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.2.tgz", + "integrity": "sha512-xhiegylRmhw43Ki2HO1ZBL7DQ5ja/qpRsL29VtQ2xuUHiuDGbgf2uD4p9Qd8hJI5P6RCtGYD50IXHXVq/Ocjcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.2.tgz", + "integrity": "sha512-18LmWTSONhoAPW+IWRuf8w/+zRolPFGPeGwMxlAhhfY11EKzX+5XHDBPAw67dBF5dxDErHJbl40U+3IXSDRXSQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-fsa": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.2.tgz", + "integrity": "sha512-rsPSJgekz43IlNbLyAM/Ab+ouYLWGp5DDBfYBNNEqDaSpsbXfthBn29Q4muFA9L0F+Z3mKo+CWlgSCXrf+mOyQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.57.2" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.57.2.tgz", + "integrity": "sha512-wK9NSow48i4DbDl9F1CQE5TqnyZOJ04elU3WFG5aJ76p+YxO/ulyBBQvKsessPxdo381Bc2pcEoyPujMOhcRqQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-utils": "4.57.2", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.2.tgz", + "integrity": "sha512-GdduDZuoP5V/QCgJkx9+BZ6SC0EZ/smXAdTS7PfMqgMTGXLlt/bH/FqMYaqB9JmLf05sJPtO0XRbAwwkEEPbVw==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", + "license": "MIT", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@module-federation/error-codes": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz", + "integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==", + "license": "MIT" + }, + "node_modules/@module-federation/runtime": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz", + "integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==", + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.22.0", + "@module-federation/runtime-core": "0.22.0", + "@module-federation/sdk": "0.22.0" + } + }, + "node_modules/@module-federation/runtime-core": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz", + "integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==", + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.22.0", + "@module-federation/sdk": "0.22.0" + } + }, + "node_modules/@module-federation/runtime-tools": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz", + "integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==", + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.22.0", + "@module-federation/webpack-bundler-runtime": "0.22.0" + } + }, + "node_modules/@module-federation/sdk": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz", + "integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==", + "license": "MIT" + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz", + "integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==", + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.22.0", + "@module-federation/sdk": "0.22.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", + "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" + } + }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@peculiar/asn1-cms": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.7.0.tgz", + "integrity": "sha512-hew63shtzzvBcSHbhm+cyAmKe6AIfinT9hzEqSPjDC6opTTMKmTkQ0gHuN2KsWlvqiKw1S/fS94fhag/FJkioQ==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "@peculiar/asn1-x509-attr": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-csr": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.7.0.tgz", + "integrity": "sha512-VVsAyGqErT9D1SY4aEqozThXMVI+ssVRiv2DDeYuvpBKLIgZ3hYs3Ay3u/VSoKq6ESFi9cf6rf3IOOzfwh7oMA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.7.0.tgz", + "integrity": "sha512-n7KEs/Q/wrB415cxy4fHOBhegp4NdJ15fkJPwcB/3/8iNBQC2L/N7SChJPKDJPZGYH0jD4Tg4/0vnHmwghnbKw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.7.0.tgz", + "integrity": "sha512-V/nrlQVmhg7lYAsM7E13UDL5erAwFv6kCIVFqNaMIHSVi7dngcT839JkRTkQBqznMG98l2XjxYk74ZztAohZzA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.7.0", + "@peculiar/asn1-pkcs8": "^2.7.0", + "@peculiar/asn1-rsa": "^2.7.0", + "@peculiar/asn1-schema": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.7.0.tgz", + "integrity": "sha512-9GTl1nE8Mx1kTZ+7QyYatDyKsm34QcWRBFkY1iPvWC3X4Dona5s/tlLiQsx5WzVdZqiMBZNYT0buyw4/vbhnjw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.7.0.tgz", + "integrity": "sha512-Bh7m+OuIaSEllPQcSd9OSp93F4ROWH7sbITWV8MI+8dwsjE5111/87VxiWVvYFKyww3vp39geLv9ENqhwWHcew==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.7.0", + "@peculiar/asn1-pfx": "^2.7.0", + "@peculiar/asn1-pkcs8": "^2.7.0", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "@peculiar/asn1-x509-attr": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.7.0.tgz", + "integrity": "sha512-/qvENQrXyTZURjMqSeofHul0JJt2sNSzSwk36pl2olkHbaioMQgrASDZAlHXl0xUlnVbHj0uGgOrBMTb5x2aJQ==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.7.0.tgz", + "integrity": "sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg==", + "license": "MIT", + "dependencies": { + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.7.0.tgz", + "integrity": "sha512-mUn9RRrkGDnG4ALfunDmzyRW5dg+sWCj/pfnCCqEHYbkGxEpvUt6iVJv8Yw1cyp6SWZ26ZE5oSmI5SqEaen15g==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.7.0.tgz", + "integrity": "sha512-NS8e7SOgXipkzUPLF/sce7ukpMpWjhxYsH0n6Y+bHYo4TTxOb95Zv7hqwSuL212mj5YxovjdOKQOgH1As3E94w==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz", + "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "license": "MIT", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "license": "ISC" + }, + "node_modules/@pnpm/npm-conf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", + "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", + "license": "MIT", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "license": "MIT" + }, + "node_modules/@rspack/binding": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.11.tgz", + "integrity": "sha512-2MGdy2s2HimsDT444Bp5XnALzNRxuBNc7y0JzyuqKbHBywd4x2NeXyhWXXoxufaCFu5PBc9Qq9jyfjW2Aeh06Q==", + "license": "MIT", + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.7.11", + "@rspack/binding-darwin-x64": "1.7.11", + "@rspack/binding-linux-arm64-gnu": "1.7.11", + "@rspack/binding-linux-arm64-musl": "1.7.11", + "@rspack/binding-linux-x64-gnu": "1.7.11", + "@rspack/binding-linux-x64-musl": "1.7.11", + "@rspack/binding-wasm32-wasi": "1.7.11", + "@rspack/binding-win32-arm64-msvc": "1.7.11", + "@rspack/binding-win32-ia32-msvc": "1.7.11", + "@rspack/binding-win32-x64-msvc": "1.7.11" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.11.tgz", + "integrity": "sha512-oduECiZVqbO5zlVw+q7Vy65sJFth99fWPTyucwvLJJtJkPL5n17Uiql2cYP6Ijn0pkqtf1SXgK8WjiKLG5bIig==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.11.tgz", + "integrity": "sha512-a1+TtTE9ap6RalgFi7FGIgkJP6O4Vy6ctv+9WGJy53E4kuqHR0RygzaiVxCI/GMc/vBT9vY23hyrpWb3d1vtXA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.11.tgz", + "integrity": "sha512-P0QrGRPbTWu6RKWfN0bDtbnEps3rXH0MWIMreZABoUrVmNQKtXR6e73J3ub6a+di5s2+K0M2LJ9Bh2/H4UsDUA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.11.tgz", + "integrity": "sha512-6ky7R43VMjWwmx3Yx7Jl7faLBBMAgMDt+/bN35RgwjiPgsIByz65EwytUVuW9rikB43BGHvA/eqlnjLrUzNBqw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.11.tgz", + "integrity": "sha512-cuOJMfCOvb2Wgsry5enXJ3iT1FGUjdPqtGUBVupQlEG4ntSYsQ2PtF4wIDVasR3wdxC5nQbipOrDiN/u6fYsdQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.11.tgz", + "integrity": "sha512-CoK37hva4AmHGh3VCsQXmGr40L36m1/AdnN5LEjUX6kx5rEH7/1nEBN6Ii72pejqDVvk9anEROmPDiPw10tpFg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-wasm32-wasi": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.11.tgz", + "integrity": "sha512-OtrmnPUVJMxjNa3eDMfHyPdtlLRmmp/aIm0fQHlAOATbZvlGm12q7rhPW5BXTu1yh+1rQ1/uqvz+SzKEZXuJaQ==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "1.0.7" + } + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.11.tgz", + "integrity": "sha512-lObFW6e5lCWNgTBNwT//yiEDbsxm9QG4BYUojqeXxothuzJ/L6ibXz6+gLMvbOvLGV3nKgkXmx8GvT9WDKR0mA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.11.tgz", + "integrity": "sha512-0pYGnZd8PPqNR68zQ8skamqNAXEA1sUfXuAdYcknIIRq2wsbiwFzIc0Pov1cIfHYab37G7sSIPBiOUdOWF5Ivw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.11.tgz", + "integrity": "sha512-EeQXayoQk/uBkI3pdoXfQBXNIUrADq56L3s/DFyM2pJeUDrWmhfIw2UFIGkYPTMSCo8F2JcdcGM32FGJrSnU0Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/core": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.11.tgz", + "integrity": "sha512-rsD9b+Khmot5DwCMiB3cqTQo53ioPG3M/A7BySu8+0+RS7GCxKm+Z+mtsjtG/vsu4Tn2tcqCdZtA3pgLoJB+ew==", + "license": "MIT", + "dependencies": { + "@module-federation/runtime-tools": "0.22.0", + "@rspack/binding": "1.7.11", + "@rspack/lite-tapable": "1.1.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@rspack/lite-tapable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", + "integrity": "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==", + "license": "MIT" + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@slorber/remark-comment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", + "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.1.0", + "micromark-util-symbol": "^1.0.1" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@swc/core": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.33.tgz", + "integrity": "sha512-jOlwnFV2xhuuZeAUILGFULeR6vDPfijEJ57evfocwznQldLU3w2cZ9bSDryY9ip+AsM3r1NJKzf47V2NXebkeQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.26" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.15.33", + "@swc/core-darwin-x64": "1.15.33", + "@swc/core-linux-arm-gnueabihf": "1.15.33", + "@swc/core-linux-arm64-gnu": "1.15.33", + "@swc/core-linux-arm64-musl": "1.15.33", + "@swc/core-linux-ppc64-gnu": "1.15.33", + "@swc/core-linux-s390x-gnu": "1.15.33", + "@swc/core-linux-x64-gnu": "1.15.33", + "@swc/core-linux-x64-musl": "1.15.33", + "@swc/core-win32-arm64-msvc": "1.15.33", + "@swc/core-win32-ia32-msvc": "1.15.33", + "@swc/core-win32-x64-msvc": "1.15.33" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.33.tgz", + "integrity": "sha512-N+L0uXhuO7FIfzqwgxmzv0zIpV0qEp8wPX3QQs2p4atjMoywup2JTeDlXPw+z9pWJGCae3JjM+tZ6myclI+2gA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.33.tgz", + "integrity": "sha512-/Il4QHSOhV4FekbsDtkrNmKbsX26oSysvgrRswa/RYOHXAkwXDbB4jaeKq6PsJLSPkzJ2KzQ061gtBnk0vNHfA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.33.tgz", + "integrity": "sha512-C64hBnBxq4viOPQ8hlx+2lJ23bzZBGnjw7ryALmS+0Q3zHmwO8lw1/DArLENw4Q18/0w5wdEO1k3m1wWNtKGqQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.33.tgz", + "integrity": "sha512-TRJfnJbX3jqpxRDRoieMzRiCBS5jOmXNb3iQXmcgjFEHKLnAgK1RZRU8Cq1MsPqO4jAJp/ld1G4O3fXuxv85uw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.33.tgz", + "integrity": "sha512-il7tYM+CpUNzieQbwAjFT1P8zqAhmGWNAGhQZBnxurXZ0aNn+5nqYFTEUKNZl7QibtT0uQXzTZrNGHCIj6Y1Og==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-ppc64-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.33.tgz", + "integrity": "sha512-ZtNBwN0Z7CFj9Il0FcPaKdjgP7URyKu/3RfH46vq+0paOBqLj4NYldD6Qo//Duif/7IOtAraUfDOmp0PLAufog==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-s390x-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.33.tgz", + "integrity": "sha512-De1IyajoOmhOYYjw/lx66bKlyDpHZTueqwpDrWgf5O7T6d1ODeJJO9/OqMBmrBQc5C+dNnlmIufHsp4QVCWufA==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.33.tgz", + "integrity": "sha512-mGTH0YxmUN+x6vRN/I6NOk5X0ogNktkwPnJ94IMvR7QjhRDwL0O8RXEDhyUM0YtwWrryBOqaJQBX4zruxEPRGw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.33.tgz", + "integrity": "sha512-hj628ZkSEJf6zMf5VMbYrG2O6QqyTIp2qwY6VlCjvIa9lAEZ5c2lfPblCLVGYubTeLJDxadLB/CxqQYOQABeEQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.33.tgz", + "integrity": "sha512-GV2oohtN2/5+KSccl86VULu3aT+LrISC8uzgSq0FRnikpD+Zwc+sBlXmoKQ+Db6jI57ITUOIB8jRkdGMABC29g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.33.tgz", + "integrity": "sha512-gtyvzSNR8DHKfFEA2uqb8Ld1myqi6uEg2jyeUq3ikn5ytYs7H8RpZYC8mdy4NXr8hfcdJfCLXPlYaqqfBXpoEQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.33.tgz", + "integrity": "sha512-d6fRqQSkJI+kmMEBWaDQ7TMl8+YjLYbwRUPZQ9DY0ORBJeTzOrG0twvfvlZ2xgw6jA0ScQKgfBm4vHLSLl5Hqg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/html": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.15.33.tgz", + "integrity": "sha512-PZIfmj5zYpAJ2eMptf0My2q9Bl8bkraW28+FD1pRnxOiYMrKrP5vL2tB2PdxMRjS0ziLFVM5HEuGFw8PxEDOaw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "@swc/html-darwin-arm64": "1.15.33", + "@swc/html-darwin-x64": "1.15.33", + "@swc/html-linux-arm-gnueabihf": "1.15.33", + "@swc/html-linux-arm64-gnu": "1.15.33", + "@swc/html-linux-arm64-musl": "1.15.33", + "@swc/html-linux-ppc64-gnu": "1.15.33", + "@swc/html-linux-s390x-gnu": "1.15.33", + "@swc/html-linux-x64-gnu": "1.15.33", + "@swc/html-linux-x64-musl": "1.15.33", + "@swc/html-win32-arm64-msvc": "1.15.33", + "@swc/html-win32-ia32-msvc": "1.15.33", + "@swc/html-win32-x64-msvc": "1.15.33" + } + }, + "node_modules/@swc/html-darwin-arm64": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.33.tgz", + "integrity": "sha512-zyO6uMBfLyCh55wundAxKX+8P/f98ecuyir4VX6nTmn6y7x37ndB8f01LUrd9Tiq6eEAvDXLiqEUvuGjEc7Pmg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-darwin-x64": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.15.33.tgz", + "integrity": "sha512-MaGunsY/J5l7Rb5OmoztEWh+ikooydT7nWkjiDovj7UfkB9HLk5sLr9O7ZdNGJ2u9dD6FX89SzMdA0Psm9NJrQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-arm-gnueabihf": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.15.33.tgz", + "integrity": "sha512-CrbUDjVl6/hQ1C5KPMiK4vxk/eOMjxkVELqwnOxsZ+aFVTv3L3YrGMaJ5H47vvIihkPhqiSOUPmMEFqxvqKmXg==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-arm64-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.33.tgz", + "integrity": "sha512-7tZ0IgmUslI9Extu/TpxJS0GjJoDx0j9zeq2cIidPdM/njSBpyRB7n4B292Q5WFVh7PcZl7WXqqqMczibQ27aA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-arm64-musl": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.15.33.tgz", + "integrity": "sha512-gYi2ainYZV2z+jwjp9UKuPVOf3c5q+NkH3QRDjqDrIPLagqDsYNjobi8p5oajGcPGFLNTcVw08VTcubJGChReA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-ppc64-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.15.33.tgz", + "integrity": "sha512-6CfzyVQSdD8ezFdxFve4J/b6qTgXIwYFWEvSdaJvXSgwTy976uUV5Ff1LOF86mt2zWMhZJX9DqmkGyIhepbyWw==", + "cpu": [ "ppc64" ], - "dev": true, - "optional": true, - "os": [ - "linux" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-s390x-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.15.33.tgz", + "integrity": "sha512-Msx1eniw95lhMHUSe3D5FXweKHtkHtzJLsHJDj920uL4Dm7UHqzwaCuZdCmzbkHnO96YjjQvAm266djg8wupmQ==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-x64-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.33.tgz", + "integrity": "sha512-JDNb4Uq+7g+23QuOtwWnP0/EqztWIHFFdQdeBIS5zx83YBG2dYRMdPAjnHJWh2YRZxdepd8q6S9MUIxpSrouAg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-x64-musl": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.15.33.tgz", + "integrity": "sha512-NSpZdbz4dj0pu1A0Z9l68Bll5HAzEMtBAeMe6jc4GEVfpIw6eeafQHm2/yMUEh09tgl8t9LzM9DycfdTZDjM4g==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-win32-arm64-msvc": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.15.33.tgz", + "integrity": "sha512-w7iho3/zS3lCDqgUZMDLMBO0ElX7j+KgvMb8BOrKqLDOSTDDj3lY/BClNJ7vBpAliI2kPQs/mUikdZyzi4MBjQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-win32-ia32-msvc": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.15.33.tgz", + "integrity": "sha512-6hJ2pBweSfZ38trYHXmzTBDpRNvqJgFl2PkIWdy4IXbV/Fv0v9Dqe0t9Gi2ZVEBpgI7PD6pF42AT4HmrNTVFyQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-win32-x64-msvc": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.15.33.tgz", + "integrity": "sha512-eaY/vNE7rkPKluJYjhOiQOA1tto5VbJOoD1C1xFTBmr9t7WsqYUfbQhYQy5A26/z83NNgtDwELM85rkMB+/vWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/types": { + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.26.tgz", + "integrity": "sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/gtag.js": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.20.tgz", + "integrity": "sha512-wwAbk3SA2QeU67unN7zPxjEHmPmlXwZXZvQEpbEUQuMCRGgKyE1m6XDuTUA9b6pCGb/GqJmdfMOY5LuDjJSbbg==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "license": "MIT" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.19.0" + } + }, + "node_modules/@types/prismjs": { + "version": "1.26.6", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz", + "integrity": "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", + "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "license": "MIT" + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", + "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", + "license": "ISC" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/algoliasearch": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.52.1.tgz", + "integrity": "sha512-fHA8+kXTbjagw3jkLiaS7KKrH8qe2DyOsiUhGlN4cdT77PEsfqXZl7ewDk1hsg+pJnPlnE50XtLxjR91iJOpmg==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.18.1", + "@algolia/client-abtesting": "5.52.1", + "@algolia/client-analytics": "5.52.1", + "@algolia/client-common": "5.52.1", + "@algolia/client-insights": "5.52.1", + "@algolia/client-personalization": "5.52.1", + "@algolia/client-query-suggestions": "5.52.1", + "@algolia/client-search": "5.52.1", + "@algolia/ingestion": "1.52.1", + "@algolia/monitoring": "1.52.1", + "@algolia/recommend": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.29.1.tgz", + "integrity": "sha512-6ck2YFudF2Pje7szQoPBiRFTGfd+1I+0I/WfLPGn0bj1kvrFoOQmNyedNiDxTk3/r4IfSLDYk+RA4G7u8H6+yA==", + "license": "MIT", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", + "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1js": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", + "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.5", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/autoprefixer": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.27", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.27.tgz", + "integrity": "sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.15.1", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", + "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "license": "ISC" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.2.tgz", + "integrity": "sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", + "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-blank-pseudo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz", + "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz", + "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==", + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz", + "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz", + "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssdb": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.8.0.tgz", + "integrity": "sha512-QbLeyz2Bgso1iRlh7IpWk6OKa3lLNGXsujVjDMPl9rOZpxKeiG69icLpbLCFxeURwmcdIfZqQyhlooKJYM4f8Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "MIT-0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", + "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.19", + "browserslist": "^4.23.0", + "cssnano-preset-default": "^6.1.2", + "postcss-discard-unused": "^6.0.5", + "postcss-merge-idents": "^6.0.3", + "postcss-reduce-idents": "^6.0.3", + "postcss-zindex": "^6.0.2" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.351", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.351.tgz", + "integrity": "sha512-9D7Iqx8RImSvCnOsj86rCH6eQjZFQoM04Jn6HnZVM0Nu/G58/gmKYQ1d12MZTbjQbQSTGI8nwEy07ErsA2slLA==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.1.0.tgz", + "integrity": "sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", + "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz", + "integrity": "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "license": "MIT" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "license": "MIT", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "license": "ISC" + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz", + "integrity": "sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/html-webpack-plugin/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "license": "MIT", + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.45", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.45.tgz", + "integrity": "sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.4.0.tgz", + "integrity": "sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-network-error": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.1.tgz", + "integrity": "sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", + "integrity": "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "license": "MIT", + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/launch-editor": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz", + "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.57.2.tgz", + "integrity": "sha512-2nWzSsJzrukurSDna4Z0WywuScK4Id3tSKejgu74u8KCdW4uNrseKRSIDg75C6Yw5ZRqBe0F0EtMNlTbUq8bAQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.57.2", + "@jsonjoy.com/fs-fsa": "4.57.2", + "@jsonjoy.com/fs-node": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-to-fsa": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "@jsonjoy.com/fs-print": "4.57.2", + "@jsonjoy.com/fs-snapshot": "4.57.2", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-space/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "license": "MIT", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", + "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-releases": { + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", + "license": "MIT" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/null-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", + "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/null-loader/node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/null-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/null-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/null-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "license": "MIT", + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "license": "ISC" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkijs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.0.tgz", + "integrity": "sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==", + "license": "BSD-3-Clause", + "dependencies": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz", + "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz", + "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz", + "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-custom-media": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz", + "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-properties": { + "version": "14.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz", + "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz", + "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", + "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-unused": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", + "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz", + "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-focus-within": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz", + "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz", + "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz", + "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-lab-function": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz", + "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-merge-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", + "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz", + "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz", + "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz", + "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.6.1.tgz", + "integrity": "sha512-yrk74d9EvY+W7+lO9Aj1QmjWY9q5NsKjK2V9drkOPZB/X6KZ0B3igKsHUYakb7oYVhnioWypQX3xGuePf89f3g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-alpha-function": "^1.0.1", + "@csstools/postcss-cascade-layers": "^5.0.2", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", + "@csstools/postcss-exponential-functions": "^2.0.9", + "@csstools/postcss-font-format-keywords": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.11", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", + "@csstools/postcss-initial": "^2.0.1", + "@csstools/postcss-is-pseudo-class": "^5.0.3", + "@csstools/postcss-light-dark-function": "^2.0.11", + "@csstools/postcss-logical-float-and-clear": "^3.0.0", + "@csstools/postcss-logical-overflow": "^2.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csstools/postcss-logical-resize": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.4", + "@csstools/postcss-media-minmax": "^2.0.9", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", + "@csstools/postcss-nested-calc": "^4.0.0", + "@csstools/postcss-normalize-display-values": "^4.0.1", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-position-area-property": "^1.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/postcss-property-rule-prelude-list": "^1.0.0", + "@csstools/postcss-random-function": "^2.0.1", + "@csstools/postcss-relative-color-syntax": "^3.0.12", + "@csstools/postcss-scope-pseudo-class": "^4.0.1", + "@csstools/postcss-sign-functions": "^1.1.4", + "@csstools/postcss-stepped-value-functions": "^4.0.9", + "@csstools/postcss-syntax-descriptor-syntax-production": "^1.0.1", + "@csstools/postcss-system-ui-font-family": "^1.0.0", + "@csstools/postcss-text-decoration-shorthand": "^4.0.3", + "@csstools/postcss-trigonometric-functions": "^4.0.9", + "@csstools/postcss-unset-value": "^4.0.0", + "autoprefixer": "^10.4.23", + "browserslist": "^4.28.1", + "css-blank-pseudo": "^7.0.1", + "css-has-pseudo": "^7.0.3", + "css-prefers-color-scheme": "^10.0.0", + "cssdb": "^8.6.0", + "postcss-attribute-case-insensitive": "^7.0.1", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^7.0.12", + "postcss-color-hex-alpha": "^10.0.0", + "postcss-color-rebeccapurple": "^10.0.0", + "postcss-custom-media": "^11.0.6", + "postcss-custom-properties": "^14.0.6", + "postcss-custom-selectors": "^8.0.5", + "postcss-dir-pseudo-class": "^9.0.1", + "postcss-double-position-gradients": "^6.0.4", + "postcss-focus-visible": "^10.0.1", + "postcss-focus-within": "^9.0.1", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^6.0.0", + "postcss-image-set-function": "^7.0.0", + "postcss-lab-function": "^7.0.12", + "postcss-logical": "^8.1.0", + "postcss-nesting": "^13.0.2", + "postcss-opacity-percentage": "^3.0.0", + "postcss-overflow-shorthand": "^6.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^10.0.0", + "postcss-pseudo-class-any-link": "^10.0.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^8.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz", + "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", + "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz", + "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", + "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", + "license": "MIT", + "dependencies": { + "sort-css-media-queries": "2.2.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.23" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/postcss-zindex": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", + "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz", + "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==", + "license": "MIT", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz", + "integrity": "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==", + "license": "MIT", + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.6" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-helmet-async": { + "name": "@slorber/react-helmet-async", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-json-view-lite": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz", + "integrity": "sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.3.tgz", + "integrity": "sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", + "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", + "license": "MIT", + "dependencies": { + "@pnpm/npm-conf": "^3.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-directive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", + "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-emoji": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", + "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.2", + "emoticon": "^4.0.1", + "mdast-util-find-and-replace": "^3.0.1", + "node-emoji": "^2.1.0", + "unified": "^11.0.4" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", + "license": "MIT" + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rtlcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", + "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/schema-dts": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz", + "integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==", + "license": "Apache-2.0" + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "license": "MIT", + "peer": true + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", + "license": "MIT", + "dependencies": { + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz", + "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==", + "license": "MIT", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "mime-types": "2.1.18", + "minimatch": "3.1.5", + "path-is-inside": "1.0.2", + "path-to-regexp": "3.3.0", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", + "license": "MIT" + }, + "node_modules/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/sitemap": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.3.tgz", + "integrity": "sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw==", + "license": "MIT", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", + "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", + "license": "MIT", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/srcset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "license": "MIT", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.8" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz", + "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==", + "license": "MIT", + "dependencies": { + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0", + "sax": "^1.5.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/swc-loader": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.7.tgz", + "integrity": "sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w==", + "license": "MIT", + "dependencies": { + "@swc/counter": "^0.1.3" + }, + "peerDependencies": { + "@swc/core": "^1.2.147", + "webpack": ">=2" + } + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.2.tgz", + "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/thingies": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.0.tgz", + "integrity": "sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==", + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/undici-types": { + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", - "cpu": [ - "x64" + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "node_modules/update-notifier/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "node_modules/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@shikijs/core": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.1.6.tgz", - "integrity": "sha512-kt9hhvrWTm0EPtRDIsoAZnSsFlIDBVBBI5CQewpA/NZCPin+MOKRXg+JiWc4y+8fZ/v0HzfDhu/UC+OTZGMt7A==", - "dev": true + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "node_modules/@shikijs/transformers": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.1.6.tgz", - "integrity": "sha512-R+eI1I9sQv0MCJyfR4kAG1G1SKSctw5ILszP0tHVrAgzSHWTpaHbXreZrDueahqtUCNHjt+MKmKJ8EMFtiitOQ==", - "dev": true, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { - "shiki": "1.1.6" + "punycode": "^2.1.0" } }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/linkify-it": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", - "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", - "dev": true + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } }, - "node_modules/@types/markdown-it": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz", - "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==", - "dev": true, + "node_modules/url-loader/node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "license": "MIT", "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@types/mdurl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", - "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", - "dev": true + "node_modules/url-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", - "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", - "dev": true + "node_modules/url-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", - "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", - "dev": true, + "node_modules/url-loader/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0", - "vue": "^3.2.25" + "node": ">= 0.6" } }, - "node_modules/@vue/compiler-core": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.19.tgz", - "integrity": "sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==", - "dev": true, + "node_modules/url-loader/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/shared": "3.4.19", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.19.tgz", - "integrity": "sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==", - "dev": true, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.4.19", - "@vue/shared": "3.4.19" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.19.tgz", - "integrity": "sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/compiler-core": "3.4.19", - "@vue/compiler-dom": "3.4.19", - "@vue/compiler-ssr": "3.4.19", - "@vue/shared": "3.4.19", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.6", - "postcss": "^8.4.33", - "source-map-js": "^1.0.2" + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.19.tgz", - "integrity": "sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.4.19", - "@vue/shared": "3.4.19" + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" } }, - "node_modules/@vue/devtools-api": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.0.15.tgz", - "integrity": "sha512-kgEYWosDyWpS1vFSuJNNWUnHkP+VkL3Y+9mw+rf7ex41SwbYL/WdC3KXqAtjiSrEs7r/FrHmUTh0BkINJPFkbA==", - "dev": true, - "dependencies": { - "@vue/devtools-kit": "^7.0.15" + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@vue/devtools-kit": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.0.15.tgz", - "integrity": "sha512-dT7OeCe1LUCIhHIb/yRR6Hn+XHh73r1o78onqCrxEKHdoZwBItiIeVnmJZPEUDFstIxfs+tJL231mySk3laTow==", - "dev": true, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", "dependencies": { - "@vue/devtools-shared": "^7.0.15", - "hookable": "^5.5.3", - "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", - "speakingurl": "^14.0.1" + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" }, - "peerDependencies": { - "vue": "^3.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@vue/devtools-shared": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.0.15.tgz", - "integrity": "sha512-fpfvMVvS7aDgO7x2JPFiTQ1MHcCc63/bE7yTgs278gMBybuO9b3hdiZ/k0Pw1rN+RefaU9yQiFA+5CCFc1D+6w==", - "dev": true, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", "dependencies": { - "rfdc": "^1.3.1" + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@vue/reactivity": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.19.tgz", - "integrity": "sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA==", - "dev": true, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", "dependencies": { - "@vue/shared": "3.4.19" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@vue/runtime-core": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.19.tgz", - "integrity": "sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw==", - "dev": true, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "license": "MIT", "dependencies": { - "@vue/reactivity": "3.4.19", - "@vue/shared": "3.4.19" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.19.tgz", - "integrity": "sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g==", - "dev": true, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", "dependencies": { - "@vue/runtime-core": "3.4.19", - "@vue/shared": "3.4.19", - "csstype": "^3.1.3" + "minimalistic-assert": "^1.0.0" } }, - "node_modules/@vue/server-renderer": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.19.tgz", - "integrity": "sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw==", - "dev": true, - "dependencies": { - "@vue/compiler-ssr": "3.4.19", - "@vue/shared": "3.4.19" - }, - "peerDependencies": { - "vue": "3.4.19" + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@vue/shared": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.19.tgz", - "integrity": "sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==", - "dev": true - }, - "node_modules/@vueuse/core": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.8.0.tgz", - "integrity": "sha512-G9Ok9fjx10TkNIPn8V1dJmK1NcdJCtYmDRyYiTMUyJ1p0Tywc1zmOoCQ2xhHYyz8ULBU4KjIJQ9n+Lrty74iVw==", - "dev": true, + "node_modules/webpack": { + "version": "5.106.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", + "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", + "license": "MIT", "dependencies": { - "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "10.8.0", - "@vueuse/shared": "10.8.0", - "vue-demi": ">=0.14.7" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "loader-runner": "^4.3.1", + "mime-db": "^1.54.0", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", - "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", - "dev": true, - "hasInstallScript": true, "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=12" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependenciesMeta": { - "@vue/composition-api": { + "webpack-cli": { "optional": true } } }, - "node_modules/@vueuse/integrations": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.8.0.tgz", - "integrity": "sha512-sw3P/7cXOfNLQfERp7P0IJ2ODjLE2C3BGXpBQJQkS309c1jbJak9yu4EnY70WaZjkj53aeWSFU6BbHrUxXJ7SA==", - "dev": true, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "license": "MIT", "dependencies": { - "@vueuse/core": "10.8.0", - "@vueuse/shared": "10.8.0", - "vue-demi": ">=0.14.7" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" }, - "peerDependencies": { - "async-validator": "*", - "axios": "*", - "change-case": "*", - "drauu": "*", - "focus-trap": "*", - "fuse.js": "*", - "idb-keyval": "*", - "jwt-decode": "*", - "nprogress": "*", - "qrcode": "*", - "sortablejs": "*", - "universal-cookie": "*" + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" }, - "peerDependenciesMeta": { - "async-validator": { - "optional": true - }, - "axios": { - "optional": true - }, - "change-case": { - "optional": true - }, - "drauu": { - "optional": true - }, - "focus-trap": { - "optional": true - }, - "fuse.js": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "jwt-decode": { - "optional": true - }, - "nprogress": { - "optional": true - }, - "qrcode": { - "optional": true - }, - "sortablejs": { - "optional": true - }, - "universal-cookie": { - "optional": true - } + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/@vueuse/integrations/node_modules/vue-demi": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", - "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">= 18.12.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "@vue/composition-api": { + "webpack": { "optional": true } } }, - "node_modules/@vueuse/metadata": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.8.0.tgz", - "integrity": "sha512-Nim/Vle5OgXcXhAvGOgkJQXB1Yb+Kq/fMbLuv3YYDYbiQrwr39ljuD4k9fPeq4yUyokYRo2RaNQmbbIMWB/9+w==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/antfu" + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/@vueuse/shared": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.8.0.tgz", - "integrity": "sha512-dUdy6zwHhULGxmr9YUg8e+EnB39gcM4Fe2oKBSrh3cOsV30JcMPtsyuspgFCUo5xxFNaeMf/W2yyKfST7Bg8oQ==", - "dev": true, + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", "dependencies": { - "vue-demi": ">=0.14.7" + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", - "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", - "dev": true, - "hasInstallScript": true, + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.8.1", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.22.1", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^5.5.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" + "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">=12" + "node": ">= 18.12.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "@vue/composition-api": { + "webpack": { + "optional": true + }, + "webpack-cli": { "optional": true } } }, - "node_modules/algoliasearch": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.22.1.tgz", - "integrity": "sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==", - "dev": true, - "dependencies": { - "@algolia/cache-browser-local-storage": "4.22.1", - "@algolia/cache-common": "4.22.1", - "@algolia/cache-in-memory": "4.22.1", - "@algolia/client-account": "4.22.1", - "@algolia/client-analytics": "4.22.1", - "@algolia/client-common": "4.22.1", - "@algolia/client-personalization": "4.22.1", - "@algolia/client-search": "4.22.1", - "@algolia/logger-common": "4.22.1", - "@algolia/logger-console": "4.22.1", - "@algolia/requester-browser-xhr": "4.22.1", - "@algolia/requester-common": "4.22.1", - "@algolia/requester-node-http": "4.22.1", - "@algolia/transporter": "4.22.1" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=12" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", - "dev": true, - "dependencies": { - "tabbable": "^6.2.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true - }, - "node_modules/magic-string": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", - "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", - "dev": true, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=18.0.0" } }, - "node_modules/mark.js": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", - "dev": true - }, - "node_modules/minisearch": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", - "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==", - "dev": true - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, + "node_modules/webpack-sources": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz", + "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==", + "license": "MIT", "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=10.13.0" } }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "node_modules/webpack/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "node_modules/webpackbar": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-7.0.0.tgz", + "integrity": "sha512-aS9soqSO2iCHgqHoCrj4LbfGQUboDCYJPSFOAchEK+9psIjNrfSWW4Y0YEz67MKURNvMmfo0ycOg9d/+OOf9/Q==", + "license": "MIT", + "dependencies": { + "ansis": "^3.2.0", + "consola": "^3.2.3", + "pretty-time": "^1.1.0", + "std-env": "^3.7.0" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@rspack/core": "*", + "webpack": "3 || 4 || 5" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "webpack": { + "optional": true } - ], + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=0.8.0" } }, - "node_modules/preact": { - "version": "10.19.5", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.5.tgz", - "integrity": "sha512-OPELkDmSVbKjbFqF9tgvOowiiQ9TmsJljIzXRyNE8nGiis94pwv1siF78rQkAP1Q1738Ce6pellRg/Ns/CtHqQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" } }, - "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", - "dev": true - }, - "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", - "dev": true, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { - "@types/estree": "1.0.5" + "isexe": "^2.0.0" }, "bin": { - "rollup": "dist/bin/rollup" + "node-which": "bin/node-which" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "license": "MIT", + "dependencies": { + "string-width": "^5.0.1" }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", - "fsevents": "~2.3.2" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/search-insights": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz", - "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==", - "dev": true, - "peer": true + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "license": "MIT" }, - "node_modules/shiki": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.1.6.tgz", - "integrity": "sha512-j4pcpvaQWHb42cHeV+W6P+X/VcK7Y2ctvEham6zB8wsuRQroT6cEMIkiUmBU2Nqg2qnHZDH6ZyRdVldcy0l6xw==", - "dev": true, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", "dependencies": { - "@shikijs/core": "1.1.6" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "dev": true, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "dev": true - }, - "node_modules/vite": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", - "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", - "dev": true, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" + "ansi-regex": "^6.2.2" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { + "bufferutil": { "optional": true }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { + "utf-8-validate": { "optional": true } } }, - "node_modules/vitepress": { - "version": "1.0.0-rc.44", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.44.tgz", - "integrity": "sha512-tO5taxGI7fSpBK1D8zrZTyJJERlyU9nnt0jHSt3fywfq3VKn977Hg0wUuTkEmwXlFYwuW26+6+3xorf4nD3XvA==", - "dev": true, - "dependencies": { - "@docsearch/css": "^3.5.2", - "@docsearch/js": "^3.5.2", - "@shikijs/core": "^1.1.5", - "@shikijs/transformers": "^1.1.5", - "@types/markdown-it": "^13.0.7", - "@vitejs/plugin-vue": "^5.0.4", - "@vue/devtools-api": "^7.0.14", - "@vueuse/core": "^10.7.2", - "@vueuse/integrations": "^10.7.2", - "focus-trap": "^7.5.4", - "mark.js": "8.11.1", - "minisearch": "^6.3.0", - "shiki": "^1.1.5", - "vite": "^5.1.3", - "vue": "^3.4.19" + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" }, - "bin": { - "vitepress": "bin/vitepress.js" + "engines": { + "node": ">=18" }, - "peerDependencies": { - "markdown-it-mathjax3": "^4.3.2", - "postcss": "^8.4.35" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" }, - "peerDependenciesMeta": { - "markdown-it-mathjax3": { - "optional": true - }, - "postcss": { - "optional": true - } + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vue": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.19.tgz", - "integrity": "sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==", - "dev": true, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.4.19", - "@vue/compiler-sfc": "3.4.19", - "@vue/runtime-dom": "3.4.19", - "@vue/server-renderer": "3.4.19", - "@vue/shared": "3.4.19" + "sax": "^1.2.4" }, - "peerDependencies": { - "typescript": "*" + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } } } diff --git a/package.json b/package.json index 8030b7d..1f04ed7 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,45 @@ { + "name": "rusherhack-on-top", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start --host 127.0.0.1 --port 3001", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/faster": "3.10.1", + "@docusaurus/preset-classic": "3.10.1", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "prism-react-renderer": "^2.3.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, "devDependencies": { - "vitepress": "^1.0.0-rc.44" + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/types": "3.10.1" }, - "scripts": { - "docs:dev": "vitepress dev docs", - "docs:build": "vitepress build docs", - "docs:preview": "vitepress preview docs" + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 3 chrome version", + "last 3 firefox version", + "last 5 safari version" + ] + }, + "engines": { + "node": ">=20.0" } -} \ No newline at end of file +} diff --git a/sidebars.js b/sidebars.js new file mode 100644 index 0000000..f77355c --- /dev/null +++ b/sidebars.js @@ -0,0 +1,35 @@ +// @ts-check + +// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) + +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + + @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} + */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], + + // But you can create a sidebar manually + /* + tutorialSidebar: [ + 'intro', + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], + */ +}; + +export default sidebars; diff --git a/src/css/custom.css b/src/css/custom.css new file mode 100644 index 0000000..2a0da42 --- /dev/null +++ b/src/css/custom.css @@ -0,0 +1,36 @@ +:root { + --ifm-color-primary: #3578e5; + --ifm-color-primary-dark: #306cd2; + --ifm-color-primary-darker: #2d66c7; + --ifm-color-primary-darkest: #2554a4; + --ifm-color-primary-light: #538feb; + --ifm-color-primary-lighter: #629bef; + --ifm-color-primary-lightest: #8eb5f5; + --ifm-background-color: #ffffff; +} + +[data-theme='dark'] { + --ifm-background-color: #111218; + --ifm-navbar-background-color: #111218; + --ifm-color-primary: #5865f2; + --ifm-footer-background-color: #111218; +} + +.navbar { + box-shadow: none; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + padding: 2rem 0; +} + +.navbar__logo { + height: 2rem; + width: auto; +} + +.navbar__logo img { + object-fit: contain; +} \ No newline at end of file diff --git a/src/pages/index.js b/src/pages/index.js new file mode 100644 index 0000000..8271dbc --- /dev/null +++ b/src/pages/index.js @@ -0,0 +1,40 @@ +import React from 'react'; +import Layout from '@theme/Layout'; +import Link from '@docusaurus/Link'; +import styles from './index.module.css'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +export default function Home() { + return ( + +
+
+
+
+

RusherHack

+

Documentation for all things related to RusherHack.

+
+ + Get started + + + Purchase + +
+
+
+
+
+ RusherHack Logo +
+
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/pages/index.module.css b/src/pages/index.module.css new file mode 100644 index 0000000..68f78a2 --- /dev/null +++ b/src/pages/index.module.css @@ -0,0 +1,88 @@ +.hero { + display: flex; + align-items: center; + justify-content: center; + min-height: calc(100vh - 150px); + padding: 2rem 0; +} + +.heroRow { + display: flex; + align-items: center; + justify-content: space-between; + gap: 4rem; +} + +.heroCol { + flex: 1; +} + +.heroTitle { + font-size: 5rem; + font-weight: 800; + background: linear-gradient(90deg, #3b82f6 0%, #a855f7 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + margin-bottom: 1rem; +} + +.heroSubtitle { + font-size: 1.5rem; + color: #9ca3af; + margin-bottom: 2.5rem; +} + +.heroButtons { + display: flex; + gap: 1.5rem; +} + +.buttonPurchase { + background-color: #4f46e5; + border: none; + color: white; + transition: background-color 0.2s; +} + +.buttonPurchase:hover { + background-color: #6366f1; + color: white; + text-decoration: none; +} + +.imageWrapper { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100%; +} + +.heroImage { + width: 100%; + max-width: 500px; + height: auto; + position: relative; + z-index: 2; + display: block; +} + +.glow { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 80%; + height: 80%; + background: radial-gradient(circle, rgba(59, 130, 246, 0.5) 0%, rgba(168, 85, 247, 0.5) 100%); + filter: blur(60px); + z-index: 1; + border-radius: 50%; +} + +@media screen and (max-width: 996px) { + .heroRow { flex-direction: column; text-align: center; } + .heroSubtitle { margin-left: auto; margin-right: auto; } + .heroButtons { justify-content: center; } + .heroImage { width: 300px; height: 300px; } +} \ No newline at end of file diff --git a/src/pages/markdown-page.mdx b/src/pages/markdown-page.mdx new file mode 100644 index 0000000..9756c5b --- /dev/null +++ b/src/pages/markdown-page.mdx @@ -0,0 +1,7 @@ +--- +title: Markdown page example +--- + +# Markdown page example + +You don't need React to write simple standalone pages. diff --git a/docs/features/commands/index.md b/static/.nojekyll similarity index 100% rename from docs/features/commands/index.md rename to static/.nojekyll diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..459543afdb8194a67e0e82e326757490bd6af331 GIT binary patch literal 2642 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

F>O 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�yrNXMy4h9u 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%0DPvTA#?qBPXsp5E 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 literal 0 HcmV?d00001 From 33aeaec0ac0405b1302cfdc6a4647a3432927591 Mon Sep 17 00:00:00 2001 From: FelekDevYT Date: Sat, 6 Jun 2026 20:51:52 +0300 Subject: [PATCH 2/6] added API docs --- docs/api/client/api/Globals.md | 21 + docs/api/client/api/IRusherHack.md | 224 ++++++++++ docs/api/client/api/RusherHackAPI.md | 269 ++++++++++++ .../api/accessors/client/IMixinClientInput.md | 22 + .../api/accessors/client/IMixinConnection.md | 42 ++ .../api/accessors/client/IMixinKeyMapping.md | 30 ++ .../api/accessors/client/IMixinMinecraft.md | 82 ++++ .../client/IMixinMultiPlayerGameMode.md | 86 ++++ .../api/accessors/client/IMixinOptions.md | 22 + .../accessors/entity/IMixinAbstractArrow.md | 24 + .../entity/IMixinAbstractClientPlayer.md | 30 ++ .../api/accessors/entity/IMixinEntity.md | 88 ++++ .../entity/IMixinFireworkRocketEntity.md | 40 ++ .../api/accessors/entity/IMixinFishingHook.md | 24 + .../accessors/entity/IMixinLivingEntity.md | 46 ++ .../api/accessors/entity/IMixinLocalPlayer.md | 84 ++++ .../api/accessors/entity/IMixinPlayerInfo.md | 22 + .../api/accessors/entity/IMixinProjectile.md | 24 + .../entity/IMixinThrowableProjectile.md | 24 + .../gui/IMixinAbstractContainerScreen.md | 40 ++ .../gui/IMixinAbstractCraftingMenu.md | 32 ++ .../gui/IMixinAbstractSignEditScreen.md | 24 + .../accessors/gui/IMixinBossHealthOverlay.md | 24 + ...mponent$DrawingBackgroundGraphicsAccess.md | 24 + ...tComponent$DrawingFocusedGraphicsAccess.md | 24 + .../api/accessors/gui/IMixinChatComponent.md | 46 ++ .../accessors/gui/IMixinDisconnectedScreen.md | 32 ++ .../api/client/api/accessors/gui/IMixinGui.md | 24 + .../api/accessors/gui/IMixinMerchantMenu.md | 24 + .../api/accessors/gui/IMixinMerchantScreen.md | 46 ++ .../api/accessors/gui/IMixinPauseScreen.md | 22 + .../accessors/gui/IMixinPlayerTabOverlay.md | 24 + .../client/api/accessors/gui/IMixinScreen.md | 38 ++ .../api/accessors/gui/IMixinShulkerBoxMenu.md | 24 + .../packet/IMixinClientPacketListener.md | 40 ++ .../packet/IMixinClientboundExplodePacket.md | 22 + ...xinClientboundSectionBlocksUpdatePacket.md | 24 + .../IMixinClientboundSetEntityMotionPacket.md | 30 ++ .../packet/IMixinClientboundSetTimePacket.md | 18 + .../IMixinClientboundSystemChatPacket.md | 22 + .../packet/IMixinConnectionProtocol.md | 14 + .../packet/IMixinServerboundInteractPacket.md | 24 + .../IMixinServerboundMovePlayerPacket.md | 52 +++ .../IMixinServerboundMoveVehiclePacket.md | 34 ++ .../IMixinServerboundPlayerInputPacket.md | 22 + .../IMixinServerboundUseItemOnPacket.md | 28 ++ .../accessors/render/IMixinBufferBuilder.md | 56 +++ .../render/IMixinByteBufferBuilder.md | 24 + .../api/accessors/render/IMixinCamera.md | 28 ++ .../accessors/render/IMixinGameRenderer.md | 52 +++ .../api/accessors/render/IMixinGlDevice.md | 24 + .../api/accessors/render/IMixinGuiGraphics.md | 44 ++ .../accessors/render/IMixinLevelRenderer.md | 24 + .../render/IMixinMapTextureManager.md | 24 + .../IMixinMultiBufferSource$BufferSource.md | 30 ++ .../api/accessors/render/IMixinPoseStack.md | 30 ++ .../api/accessors/render/IMixinRenderType.md | 24 + .../api/accessors/world/IMixinBaseSpawner.md | 24 + .../world/IMixinBeaconBlockEntity.md | 24 + .../api/accessors/world/IMixinBucketItem.md | 24 + .../accessors/world/IMixinClientChunkCache.md | 24 + .../api/accessors/world/IMixinClientLevel.md | 24 + .../accessors/world/IMixinInstrumentItem.md | 24 + .../client/api/accessors/world/IMixinLevel.md | 40 ++ .../world/IMixinPalettedContainer.md | 24 + .../world/item/crafting/IMixinShapedRecipe.md | 24 + .../crafting/IMixinShapedRecipePattern.md | 24 + .../item/crafting/IMixinShapelessRecipe.md | 24 + .../level/storage/loot/IMixinLootPool.md | 32 ++ .../storage/loot/IMixinLootTable$Builder.md | 32 ++ .../loot/entries/IMixinCompositeEntryBase.md | 24 + .../entries/IMixinLootPoolEntryContainer.md | 24 + .../IMixinLootPoolSingletonContainer.md | 24 + .../loot/functions/IMixinApplyBonusCount.md | 24 + .../IMixinCompositeLootItemCondition.md | 24 + docs/api/client/api/bind/IBindManager.md | 107 +++++ docs/api/client/api/bind/key/GLFWConstants.md | 68 +++ docs/api/client/api/bind/key/GLFWKey.md | 59 +++ docs/api/client/api/bind/key/KeyboardKey.md | 62 +++ docs/api/client/api/bind/key/MouseKey.md | 62 +++ docs/api/client/api/config/Configuration.md | 89 ++++ .../client/api/config/JsonConfiguration.md | 61 +++ .../client/api/config/TextConfiguration.md | 69 +++ .../api/client/api/events/client/EventQuit.md | 60 +++ .../api/events/client/EventTimerSpeed.md | 59 +++ .../client/api/events/client/EventUpdate.md | 35 ++ docs/api/client/api/events/client/Reason.md | 16 + .../api/events/client/chat/EventAddChat.md | 43 ++ .../events/client/chat/EventChatCommand.md | 43 ++ .../events/client/chat/EventChatMessage.md | 43 ++ .../api/events/client/input/EventInputTick.md | 56 +++ .../api/events/client/input/EventKeyboard.md | 96 ++++ .../api/events/client/input/EventMouse.md | 48 ++ .../api/client/api/events/client/input/Key.md | 79 ++++ .../client/api/events/client/input/Move.md | 18 + .../client/api/events/client/input/Scroll.md | 52 +++ .../client/internal/EventNotification.md | 84 ++++ .../api/events/client/screen/BuildButtons.md | 53 +++ .../client/api/events/client/screen/Change.md | 68 +++ .../client/screen/EventResizeDisplay.md | 15 + .../api/events/client/screen/EventScreen.md | 37 ++ .../api/events/client/screen/Initialize.md | 40 ++ .../events/internal/EventBaritoneControl.md | 14 + .../api/events/internal/EventCommand.md | 70 +++ .../api/events/internal/EventKeybindPress.md | 62 +++ .../api/events/internal/EventRusherHack.md | 15 + .../client/api/events/internal/PostInit.md | 12 + docs/api/client/api/events/internal/Type.md | 16 + docs/api/client/api/events/internal/Unload.md | 10 + docs/api/client/api/events/network/Action.md | 16 + .../client/api/events/network/EventPacket.md | 45 ++ .../events/network/EventPlayerConnection.md | 65 +++ docs/api/client/api/events/network/Receive.md | 18 + docs/api/client/api/events/network/Send.md | 18 + docs/api/client/api/events/player/Action.md | 18 + .../client/api/events/player/EventInteract.md | 88 ++++ .../api/client/api/events/player/EventMove.md | 102 +++++ .../api/events/player/EventPlayerUpdate.md | 169 +++++++ .../client/api/events/player/EventTravel.md | 88 ++++ .../client/api/events/player/FallOnBlock.md | 35 ++ docs/api/client/api/events/player/Mount.md | 35 ++ docs/api/client/api/events/render/Armor.md | 10 + .../client/api/events/render/Background.md | 42 ++ docs/api/client/api/events/render/Check.md | 48 ++ .../client/api/events/render/EventRender.md | 37 ++ .../client/api/events/render/EventRender2D.md | 68 +++ .../client/api/events/render/EventRender3D.md | 55 +++ .../events/render/EventRenderBlockEntity.md | 115 +++++ .../api/events/render/EventRenderEntity.md | 148 +++++++ .../api/events/render/EventRenderScreen.md | 113 +++++ .../api/events/render/ItemFrameParts.md | 33 ++ docs/api/client/api/events/render/Nametag.md | 95 ++++ docs/api/client/api/events/render/Part.md | 16 + .../api/events/render/PlayerRotations.md | 54 +++ docs/api/client/api/events/world/Add.md | 38 ++ .../api/client/api/events/world/EventChunk.md | 37 ++ .../client/api/events/world/EventEntity.md | 37 ++ .../client/api/events/world/EventLoadWorld.md | 25 ++ docs/api/client/api/events/world/Load.md | 51 +++ docs/api/client/api/events/world/Remove.md | 53 +++ docs/api/client/api/events/world/Unload.md | 16 + .../api/client/api/feature/command/Command.md | 27 ++ .../api/feature/command/FeatureCommand.md | 46 ++ .../api/feature/command/ModuleCommand.md | 20 + .../command/ToggleableFeatureCommand.md | 30 ++ .../api/feature/command/arg/BlockReference.md | 20 + .../feature/command/arg/EnchantReference.md | 20 + .../api/feature/command/arg/ItemReference.md | 20 + .../feature/command/arg/PlayerReference.md | 14 + docs/api/client/api/feature/hud/Alignment.md | 22 + docs/api/client/api/feature/hud/ColorMode.md | 18 + docs/api/client/api/feature/hud/HudElement.md | 357 +++++++++++++++ .../api/client/api/feature/hud/IHudElement.md | 49 +++ .../client/api/feature/hud/ListHudElement.md | 120 +++++ docs/api/client/api/feature/hud/ListItem.md | 160 +++++++ .../api/feature/hud/ResizeableHudElement.md | 93 ++++ .../api/feature/hud/ShortListHudElement.md | 71 +++ docs/api/client/api/feature/hud/SnapPoint.md | 51 +++ .../api/client/api/feature/hud/SortingMode.md | 33 ++ docs/api/client/api/feature/hud/TextAxis.md | 16 + .../client/api/feature/hud/TextHudElement.md | 96 ++++ docs/api/client/api/feature/module/IModule.md | 64 +++ docs/api/client/api/feature/module/Module.md | 250 +++++++++++ .../api/feature/module/ModuleCategory.md | 139 ++++++ .../api/feature/module/ToggleableModule.md | 116 +++++ .../api/feature/window/PinnableWindow.md | 64 +++ .../client/api/feature/window/PopupWindow.md | 79 ++++ .../api/feature/window/ResizeableWindow.md | 114 +++++ docs/api/client/api/feature/window/Window.md | 367 ++++++++++++++++ docs/api/client/api/plugin/IPlugin.md | 45 ++ docs/api/client/api/plugin/Plugin.md | 38 ++ docs/api/client/api/render/DrawMode.md | 81 ++++ docs/api/client/api/render/IRenderable2D.md | 40 ++ docs/api/client/api/render/IRenderer2D.md | 200 +++++++++ docs/api/client/api/render/IRenderer3D.md | 237 ++++++++++ docs/api/client/api/render/IScissorable.md | 38 ++ docs/api/client/api/render/RenderContext.md | 24 + .../client/api/render/font/IFontRenderer.md | 253 +++++++++++ .../api/render/graphic/AbstractGraphic.md | 74 ++++ .../api/client/api/render/graphic/IGraphic.md | 69 +++ .../api/render/graphic/TextureGraphic.md | 28 ++ .../api/render/graphic/VectorGraphic.md | 47 ++ docs/api/client/api/setting/BindSetting.md | 106 +++++ .../client/api/setting/BlockListSetting.md | 110 +++++ docs/api/client/api/setting/ColorSetting.md | 361 +++++++++++++++ .../api/setting/EntityTypeListSetting.md | 110 +++++ .../api/client/api/setting/ItemListSetting.md | 110 +++++ docs/api/client/api/setting/ModeSetting.md | 106 +++++ docs/api/client/api/setting/RainbowMode.md | 18 + docs/api/client/api/system/Accessor.md | 20 + docs/api/client/api/system/ColorMode.md | 16 + docs/api/client/api/system/Colors.md | 55 +++ docs/api/client/api/system/Entities.md | 56 +++ docs/api/client/api/system/Fonts.md | 88 ++++ docs/api/client/api/system/IChunkProcessor.md | 46 ++ docs/api/client/api/system/IConfigManager.md | 66 +++ docs/api/client/api/system/IFieldRegistry.md | 51 +++ docs/api/client/api/system/IHudManager.md | 107 +++++ docs/api/client/api/system/IInteractions.md | 130 ++++++ .../client/api/system/INotificationManager.md | 125 ++++++ .../api/client/api/system/IRelationManager.md | 112 +++++ .../api/client/api/system/IRotationManager.md | 112 +++++ .../client/api/system/IRusherHackRegistry.md | 30 ++ docs/api/client/api/system/IServerState.md | 196 +++++++++ docs/api/client/api/system/IWindowManager.md | 77 ++++ docs/api/client/api/system/Processee.md | 40 ++ .../api/system/waypoint/IWaypointManager.md | 69 +++ .../client/api/system/waypoint/Waypoint.md | 119 +++++ docs/api/client/api/ui/ElementBase.md | 69 +++ docs/api/client/api/ui/ElementHandlerBase.md | 310 +++++++++++++ docs/api/client/api/ui/ScaledElementBase.md | 53 +++ docs/api/client/api/ui/hud/HudHandlerBase.md | 197 +++++++++ .../ui/notification/RenderableNotification.md | 49 +++ docs/api/client/api/ui/panel/IPanelItem.md | 68 +++ docs/api/client/api/ui/panel/PanelBase.md | 166 +++++++ .../client/api/ui/panel/PanelHandlerBase.md | 76 ++++ docs/api/client/api/ui/panel/PanelItemBase.md | 61 +++ docs/api/client/api/ui/theme/ITheme.md | 104 +++++ docs/api/client/api/ui/theme/IThemeManager.md | 132 ++++++ docs/api/client/api/ui/theme/ThemeBase.md | 72 +++ .../api/ui/window/WindowContentHandlerBase.md | 56 +++ .../client/api/ui/window/WindowHandlerBase.md | 219 ++++++++++ docs/api/client/api/ui/window/WindowSide.md | 20 + .../api/ui/window/WindowViewHandlerBase.md | 45 ++ .../api/ui/window/content/AnchorSide.md | 16 + .../api/ui/window/content/ComboContent.md | 127 ++++++ .../api/ui/window/content/ListItemContent.md | 110 +++++ .../api/ui/window/content/PaddingContent.md | 84 ++++ .../api/ui/window/content/WindowContent.md | 141 ++++++ .../content/component/ButtonComponent.md | 165 +++++++ .../content/component/CheckBoxComponent.md | 132 ++++++ .../content/component/ComboBoxComponent.md | 161 +++++++ .../content/component/ParagraphComponent.md | 81 ++++ .../window/content/component/TextComponent.md | 106 +++++ .../content/component/TextFieldComponent.md | 178 ++++++++ .../api/ui/window/context/ContextAction.md | 10 + .../client/api/ui/window/view/Alignment.md | 18 + docs/api/client/api/ui/window/view/Column.md | 59 +++ .../client/api/ui/window/view/ListItemView.md | 57 +++ .../api/client/api/ui/window/view/ListView.md | 137 ++++++ .../api/ui/window/view/RichTextComponent.md | 43 ++ .../client/api/ui/window/view/RichTextView.md | 77 ++++ .../api/ui/window/view/ScrollableView.md | 118 +++++ .../client/api/ui/window/view/SimpleView.md | 124 ++++++ .../client/api/ui/window/view/SplitView.md | 47 ++ .../client/api/ui/window/view/TabbedView.md | 113 +++++ .../api/ui/window/view/VerticalAlignment.md | 18 + .../client/api/ui/window/view/WindowView.md | 197 +++++++++ docs/api/client/api/utils/BufferUtils.md | 63 +++ docs/api/client/api/utils/ChatUtils.md | 57 +++ docs/api/client/api/utils/ContainerUtils.md | 139 ++++++ docs/api/client/api/utils/EntityUtils.md | 40 ++ docs/api/client/api/utils/FormBuilder.md | 57 +++ docs/api/client/api/utils/InputBuilder.md | 104 +++++ docs/api/client/api/utils/InputUtils.md | 33 ++ docs/api/client/api/utils/InventoryUtils.md | 308 +++++++++++++ docs/api/client/api/utils/ItemUtils.md | 185 ++++++++ docs/api/client/api/utils/PlayerUtils.md | 160 +++++++ docs/api/client/api/utils/RotationUtils.md | 32 ++ docs/api/client/api/utils/UUIDSerializer.md | 60 +++ docs/api/client/api/utils/WebUtils.md | 107 +++++ docs/api/client/api/utils/WorldUtils.md | 221 ++++++++++ docs/api/client/api/utils/objects/Builder.md | 218 ++++++++++ .../api/client/api/utils/objects/Dimension.md | 96 ++++ .../client/api/utils/objects/PlayerInput.md | 67 +++ .../client/api/utils/objects/PlayerMessage.md | 66 +++ .../api/utils/objects/PlayerRelation.md | 33 ++ .../api/client/api/utils/objects/Scrollbar.md | 102 +++++ docs/api/client/api/utils/objects/State.md | 18 + .../api/client/api/utils/objects/TextField.md | 231 ++++++++++ docs/api/client/api/utils/objects/Whisper.md | 33 ++ .../api/utils/registry/BlockRegistry.md | 56 +++ .../api/utils/registry/EntityTypeRegistry.md | 56 +++ .../client/api/utils/registry/ItemRegistry.md | 56 +++ docs/api/core/animation/Animation.md | 134 ++++++ docs/api/core/animation/Easing.md | 70 +++ docs/api/core/bind/BindManagerBase.md | 64 +++ docs/api/core/bind/IBindable.md | 30 ++ docs/api/core/bind/key/IKey.md | 49 +++ docs/api/core/bind/key/NullKey.md | 40 ++ docs/api/core/command/AbstractCommand.md | 138 ++++++ docs/api/core/command/ArgumentData.md | 10 + docs/api/core/command/CommandData.md | 106 +++++ docs/api/core/command/CommandManager.md | 121 ++++++ docs/api/core/command/CommandUtils.md | 56 +++ docs/api/core/command/ICommandManager.md | 53 +++ docs/api/core/command/ICommandSource.md | 33 ++ docs/api/core/command/MethodData.md | 10 + docs/api/core/command/annotations/Argument.md | 20 + .../command/annotations/CommandExecutor.md | 19 + .../core/command/argument/StringCapture.md | 15 + docs/api/core/command/argument/parser/IArg.md | 80 ++++ .../argument/parser/impl/BooleanArg.md | 40 ++ .../command/argument/parser/impl/ColorArg.md | 32 ++ .../command/argument/parser/impl/DoubleArg.md | 24 + .../command/argument/parser/impl/EnumArg.md | 32 ++ .../argument/parser/impl/IntegerArg.md | 24 + .../command/argument/parser/impl/StringArg.md | 24 + .../argument/parser/impl/StringCapturerArg.md | 32 ++ .../command/dispatch/ICommandDispatcher.md | 77 ++++ .../dispatch/StringCommandDispatcher.md | 45 ++ .../command/exceptions/ArgumentException.md | 34 ++ .../command/exceptions/BadSyntaxException.md | 34 ++ .../command/exceptions/CommandException.md | 63 +++ .../command/exceptions/DispatchException.md | 25 ++ .../UnknownArgumentTypeException.md | 20 + .../exceptions/UnknownCommandException.md | 21 + .../command/exceptions/ValidationException.md | 21 + .../processing/CommandProcessingSink.md | 93 ++++ .../command/processing/CommandProcessor.md | 58 +++ .../command/processing/ICommandProcessor.md | 57 +++ .../command/processing/MethodProcessor.md | 83 ++++ .../command/processing/ProcessedCommand.md | 10 + docs/api/core/feature/IFeature.md | 51 +++ docs/api/core/feature/IFeatureConfigurable.md | 71 +++ docs/api/core/feature/IFeatureManager.md | 56 +++ docs/api/core/interfaces/IClickable.md | 39 ++ docs/api/core/interfaces/IDraggable.md | 26 ++ docs/api/core/interfaces/IHideable.md | 25 ++ docs/api/core/interfaces/IHoverable.md | 29 ++ docs/api/core/interfaces/INamed.md | 49 +++ docs/api/core/interfaces/IPinnable.md | 41 ++ docs/api/core/interfaces/IReferenceable.md | 24 + docs/api/core/interfaces/IScrollable.md | 39 ++ docs/api/core/interfaces/ITickable.md | 18 + docs/api/core/interfaces/IToggleable.md | 48 ++ docs/api/core/interfaces/ITypeable.md | 38 ++ docs/api/core/logging/ILog.md | 103 +++++ docs/api/core/logging/ILoggable.md | 24 + docs/api/core/logging/ILogger.md | 33 ++ docs/api/core/logging/LogFormatter.md | 39 ++ docs/api/core/logging/Logger.md | 90 ++++ docs/api/core/logging/output/FileOutput.md | 78 ++++ docs/api/core/notification/INotifiable.md | 37 ++ .../api/core/notification/NotificationType.md | 76 ++++ .../notification/type/LivingNotification.md | 70 +++ .../core/notification/type/Notification.md | 60 +++ docs/api/core/serialize/ISerializable.md | 65 +++ docs/api/core/serialize/JsonSerializable.md | 14 + docs/api/core/serialize/TextSerializable.md | 14 + docs/api/core/setting/BooleanSetting.md | 122 ++++++ docs/api/core/setting/EnumSetting.md | 134 ++++++ docs/api/core/setting/ListHolder.md | 10 + docs/api/core/setting/ListSetting.md | 328 ++++++++++++++ docs/api/core/setting/NullSetting.md | 121 ++++++ docs/api/core/setting/NumberSetting.md | 185 ++++++++ docs/api/core/setting/OptionSetting.md | 104 +++++ docs/api/core/setting/Setting.md | 411 ++++++++++++++++++ docs/api/core/setting/SettingCommand.md | 41 ++ docs/api/core/setting/StringSetting.md | 154 +++++++ docs/api/core/setting/ValueHolder.md | 10 + docs/api/core/utils/ColorUtils.md | 171 ++++++++ docs/api/core/utils/IOUtils.md | 60 +++ docs/api/core/utils/MathUtils.md | 99 +++++ docs/api/core/utils/Pair.md | 58 +++ docs/api/core/utils/StringUtils.md | 56 +++ docs/api/core/utils/Timer.md | 104 +++++ docs/api/core/utils/TriConsumer.md | 33 ++ docs/api/core/utils/Version.md | 103 +++++ docs/api/index.mdx | 4 + docusaurus.config.js | 5 +- sidebars.js | 28 +- 362 files changed, 24498 insertions(+), 12 deletions(-) create mode 100644 docs/api/client/api/Globals.md create mode 100644 docs/api/client/api/IRusherHack.md create mode 100644 docs/api/client/api/RusherHackAPI.md create mode 100644 docs/api/client/api/accessors/client/IMixinClientInput.md create mode 100644 docs/api/client/api/accessors/client/IMixinConnection.md create mode 100644 docs/api/client/api/accessors/client/IMixinKeyMapping.md create mode 100644 docs/api/client/api/accessors/client/IMixinMinecraft.md create mode 100644 docs/api/client/api/accessors/client/IMixinMultiPlayerGameMode.md create mode 100644 docs/api/client/api/accessors/client/IMixinOptions.md create mode 100644 docs/api/client/api/accessors/entity/IMixinAbstractArrow.md create mode 100644 docs/api/client/api/accessors/entity/IMixinAbstractClientPlayer.md create mode 100644 docs/api/client/api/accessors/entity/IMixinEntity.md create mode 100644 docs/api/client/api/accessors/entity/IMixinFireworkRocketEntity.md create mode 100644 docs/api/client/api/accessors/entity/IMixinFishingHook.md create mode 100644 docs/api/client/api/accessors/entity/IMixinLivingEntity.md create mode 100644 docs/api/client/api/accessors/entity/IMixinLocalPlayer.md create mode 100644 docs/api/client/api/accessors/entity/IMixinPlayerInfo.md create mode 100644 docs/api/client/api/accessors/entity/IMixinProjectile.md create mode 100644 docs/api/client/api/accessors/entity/IMixinThrowableProjectile.md create mode 100644 docs/api/client/api/accessors/gui/IMixinAbstractContainerScreen.md create mode 100644 docs/api/client/api/accessors/gui/IMixinAbstractCraftingMenu.md create mode 100644 docs/api/client/api/accessors/gui/IMixinAbstractSignEditScreen.md create mode 100644 docs/api/client/api/accessors/gui/IMixinBossHealthOverlay.md create mode 100644 docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md create mode 100644 docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md create mode 100644 docs/api/client/api/accessors/gui/IMixinChatComponent.md create mode 100644 docs/api/client/api/accessors/gui/IMixinDisconnectedScreen.md create mode 100644 docs/api/client/api/accessors/gui/IMixinGui.md create mode 100644 docs/api/client/api/accessors/gui/IMixinMerchantMenu.md create mode 100644 docs/api/client/api/accessors/gui/IMixinMerchantScreen.md create mode 100644 docs/api/client/api/accessors/gui/IMixinPauseScreen.md create mode 100644 docs/api/client/api/accessors/gui/IMixinPlayerTabOverlay.md create mode 100644 docs/api/client/api/accessors/gui/IMixinScreen.md create mode 100644 docs/api/client/api/accessors/gui/IMixinShulkerBoxMenu.md create mode 100644 docs/api/client/api/accessors/packet/IMixinClientPacketListener.md create mode 100644 docs/api/client/api/accessors/packet/IMixinClientboundExplodePacket.md create mode 100644 docs/api/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md create mode 100644 docs/api/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md create mode 100644 docs/api/client/api/accessors/packet/IMixinClientboundSetTimePacket.md create mode 100644 docs/api/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md create mode 100644 docs/api/client/api/accessors/packet/IMixinConnectionProtocol.md create mode 100644 docs/api/client/api/accessors/packet/IMixinServerboundInteractPacket.md create mode 100644 docs/api/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md create mode 100644 docs/api/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md create mode 100644 docs/api/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md create mode 100644 docs/api/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md create mode 100644 docs/api/client/api/accessors/render/IMixinBufferBuilder.md create mode 100644 docs/api/client/api/accessors/render/IMixinByteBufferBuilder.md create mode 100644 docs/api/client/api/accessors/render/IMixinCamera.md create mode 100644 docs/api/client/api/accessors/render/IMixinGameRenderer.md create mode 100644 docs/api/client/api/accessors/render/IMixinGlDevice.md create mode 100644 docs/api/client/api/accessors/render/IMixinGuiGraphics.md create mode 100644 docs/api/client/api/accessors/render/IMixinLevelRenderer.md create mode 100644 docs/api/client/api/accessors/render/IMixinMapTextureManager.md create mode 100644 docs/api/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md create mode 100644 docs/api/client/api/accessors/render/IMixinPoseStack.md create mode 100644 docs/api/client/api/accessors/render/IMixinRenderType.md create mode 100644 docs/api/client/api/accessors/world/IMixinBaseSpawner.md create mode 100644 docs/api/client/api/accessors/world/IMixinBeaconBlockEntity.md create mode 100644 docs/api/client/api/accessors/world/IMixinBucketItem.md create mode 100644 docs/api/client/api/accessors/world/IMixinClientChunkCache.md create mode 100644 docs/api/client/api/accessors/world/IMixinClientLevel.md create mode 100644 docs/api/client/api/accessors/world/IMixinInstrumentItem.md create mode 100644 docs/api/client/api/accessors/world/IMixinLevel.md create mode 100644 docs/api/client/api/accessors/world/IMixinPalettedContainer.md create mode 100644 docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md create mode 100644 docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md create mode 100644 docs/api/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md create mode 100644 docs/api/client/api/accessors/world/level/storage/loot/IMixinLootPool.md create mode 100644 docs/api/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md create mode 100644 docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md create mode 100644 docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md create mode 100644 docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md create mode 100644 docs/api/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md create mode 100644 docs/api/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md create mode 100644 docs/api/client/api/bind/IBindManager.md create mode 100644 docs/api/client/api/bind/key/GLFWConstants.md create mode 100644 docs/api/client/api/bind/key/GLFWKey.md create mode 100644 docs/api/client/api/bind/key/KeyboardKey.md create mode 100644 docs/api/client/api/bind/key/MouseKey.md create mode 100644 docs/api/client/api/config/Configuration.md create mode 100644 docs/api/client/api/config/JsonConfiguration.md create mode 100644 docs/api/client/api/config/TextConfiguration.md create mode 100644 docs/api/client/api/events/client/EventQuit.md create mode 100644 docs/api/client/api/events/client/EventTimerSpeed.md create mode 100644 docs/api/client/api/events/client/EventUpdate.md create mode 100644 docs/api/client/api/events/client/Reason.md create mode 100644 docs/api/client/api/events/client/chat/EventAddChat.md create mode 100644 docs/api/client/api/events/client/chat/EventChatCommand.md create mode 100644 docs/api/client/api/events/client/chat/EventChatMessage.md create mode 100644 docs/api/client/api/events/client/input/EventInputTick.md create mode 100644 docs/api/client/api/events/client/input/EventKeyboard.md create mode 100644 docs/api/client/api/events/client/input/EventMouse.md create mode 100644 docs/api/client/api/events/client/input/Key.md create mode 100644 docs/api/client/api/events/client/input/Move.md create mode 100644 docs/api/client/api/events/client/input/Scroll.md create mode 100644 docs/api/client/api/events/client/internal/EventNotification.md create mode 100644 docs/api/client/api/events/client/screen/BuildButtons.md create mode 100644 docs/api/client/api/events/client/screen/Change.md create mode 100644 docs/api/client/api/events/client/screen/EventResizeDisplay.md create mode 100644 docs/api/client/api/events/client/screen/EventScreen.md create mode 100644 docs/api/client/api/events/client/screen/Initialize.md create mode 100644 docs/api/client/api/events/internal/EventBaritoneControl.md create mode 100644 docs/api/client/api/events/internal/EventCommand.md create mode 100644 docs/api/client/api/events/internal/EventKeybindPress.md create mode 100644 docs/api/client/api/events/internal/EventRusherHack.md create mode 100644 docs/api/client/api/events/internal/PostInit.md create mode 100644 docs/api/client/api/events/internal/Type.md create mode 100644 docs/api/client/api/events/internal/Unload.md create mode 100644 docs/api/client/api/events/network/Action.md create mode 100644 docs/api/client/api/events/network/EventPacket.md create mode 100644 docs/api/client/api/events/network/EventPlayerConnection.md create mode 100644 docs/api/client/api/events/network/Receive.md create mode 100644 docs/api/client/api/events/network/Send.md create mode 100644 docs/api/client/api/events/player/Action.md create mode 100644 docs/api/client/api/events/player/EventInteract.md create mode 100644 docs/api/client/api/events/player/EventMove.md create mode 100644 docs/api/client/api/events/player/EventPlayerUpdate.md create mode 100644 docs/api/client/api/events/player/EventTravel.md create mode 100644 docs/api/client/api/events/player/FallOnBlock.md create mode 100644 docs/api/client/api/events/player/Mount.md create mode 100644 docs/api/client/api/events/render/Armor.md create mode 100644 docs/api/client/api/events/render/Background.md create mode 100644 docs/api/client/api/events/render/Check.md create mode 100644 docs/api/client/api/events/render/EventRender.md create mode 100644 docs/api/client/api/events/render/EventRender2D.md create mode 100644 docs/api/client/api/events/render/EventRender3D.md create mode 100644 docs/api/client/api/events/render/EventRenderBlockEntity.md create mode 100644 docs/api/client/api/events/render/EventRenderEntity.md create mode 100644 docs/api/client/api/events/render/EventRenderScreen.md create mode 100644 docs/api/client/api/events/render/ItemFrameParts.md create mode 100644 docs/api/client/api/events/render/Nametag.md create mode 100644 docs/api/client/api/events/render/Part.md create mode 100644 docs/api/client/api/events/render/PlayerRotations.md create mode 100644 docs/api/client/api/events/world/Add.md create mode 100644 docs/api/client/api/events/world/EventChunk.md create mode 100644 docs/api/client/api/events/world/EventEntity.md create mode 100644 docs/api/client/api/events/world/EventLoadWorld.md create mode 100644 docs/api/client/api/events/world/Load.md create mode 100644 docs/api/client/api/events/world/Remove.md create mode 100644 docs/api/client/api/events/world/Unload.md create mode 100644 docs/api/client/api/feature/command/Command.md create mode 100644 docs/api/client/api/feature/command/FeatureCommand.md create mode 100644 docs/api/client/api/feature/command/ModuleCommand.md create mode 100644 docs/api/client/api/feature/command/ToggleableFeatureCommand.md create mode 100644 docs/api/client/api/feature/command/arg/BlockReference.md create mode 100644 docs/api/client/api/feature/command/arg/EnchantReference.md create mode 100644 docs/api/client/api/feature/command/arg/ItemReference.md create mode 100644 docs/api/client/api/feature/command/arg/PlayerReference.md create mode 100644 docs/api/client/api/feature/hud/Alignment.md create mode 100644 docs/api/client/api/feature/hud/ColorMode.md create mode 100644 docs/api/client/api/feature/hud/HudElement.md create mode 100644 docs/api/client/api/feature/hud/IHudElement.md create mode 100644 docs/api/client/api/feature/hud/ListHudElement.md create mode 100644 docs/api/client/api/feature/hud/ListItem.md create mode 100644 docs/api/client/api/feature/hud/ResizeableHudElement.md create mode 100644 docs/api/client/api/feature/hud/ShortListHudElement.md create mode 100644 docs/api/client/api/feature/hud/SnapPoint.md create mode 100644 docs/api/client/api/feature/hud/SortingMode.md create mode 100644 docs/api/client/api/feature/hud/TextAxis.md create mode 100644 docs/api/client/api/feature/hud/TextHudElement.md create mode 100644 docs/api/client/api/feature/module/IModule.md create mode 100644 docs/api/client/api/feature/module/Module.md create mode 100644 docs/api/client/api/feature/module/ModuleCategory.md create mode 100644 docs/api/client/api/feature/module/ToggleableModule.md create mode 100644 docs/api/client/api/feature/window/PinnableWindow.md create mode 100644 docs/api/client/api/feature/window/PopupWindow.md create mode 100644 docs/api/client/api/feature/window/ResizeableWindow.md create mode 100644 docs/api/client/api/feature/window/Window.md create mode 100644 docs/api/client/api/plugin/IPlugin.md create mode 100644 docs/api/client/api/plugin/Plugin.md create mode 100644 docs/api/client/api/render/DrawMode.md create mode 100644 docs/api/client/api/render/IRenderable2D.md create mode 100644 docs/api/client/api/render/IRenderer2D.md create mode 100644 docs/api/client/api/render/IRenderer3D.md create mode 100644 docs/api/client/api/render/IScissorable.md create mode 100644 docs/api/client/api/render/RenderContext.md create mode 100644 docs/api/client/api/render/font/IFontRenderer.md create mode 100644 docs/api/client/api/render/graphic/AbstractGraphic.md create mode 100644 docs/api/client/api/render/graphic/IGraphic.md create mode 100644 docs/api/client/api/render/graphic/TextureGraphic.md create mode 100644 docs/api/client/api/render/graphic/VectorGraphic.md create mode 100644 docs/api/client/api/setting/BindSetting.md create mode 100644 docs/api/client/api/setting/BlockListSetting.md create mode 100644 docs/api/client/api/setting/ColorSetting.md create mode 100644 docs/api/client/api/setting/EntityTypeListSetting.md create mode 100644 docs/api/client/api/setting/ItemListSetting.md create mode 100644 docs/api/client/api/setting/ModeSetting.md create mode 100644 docs/api/client/api/setting/RainbowMode.md create mode 100644 docs/api/client/api/system/Accessor.md create mode 100644 docs/api/client/api/system/ColorMode.md create mode 100644 docs/api/client/api/system/Colors.md create mode 100644 docs/api/client/api/system/Entities.md create mode 100644 docs/api/client/api/system/Fonts.md create mode 100644 docs/api/client/api/system/IChunkProcessor.md create mode 100644 docs/api/client/api/system/IConfigManager.md create mode 100644 docs/api/client/api/system/IFieldRegistry.md create mode 100644 docs/api/client/api/system/IHudManager.md create mode 100644 docs/api/client/api/system/IInteractions.md create mode 100644 docs/api/client/api/system/INotificationManager.md create mode 100644 docs/api/client/api/system/IRelationManager.md create mode 100644 docs/api/client/api/system/IRotationManager.md create mode 100644 docs/api/client/api/system/IRusherHackRegistry.md create mode 100644 docs/api/client/api/system/IServerState.md create mode 100644 docs/api/client/api/system/IWindowManager.md create mode 100644 docs/api/client/api/system/Processee.md create mode 100644 docs/api/client/api/system/waypoint/IWaypointManager.md create mode 100644 docs/api/client/api/system/waypoint/Waypoint.md create mode 100644 docs/api/client/api/ui/ElementBase.md create mode 100644 docs/api/client/api/ui/ElementHandlerBase.md create mode 100644 docs/api/client/api/ui/ScaledElementBase.md create mode 100644 docs/api/client/api/ui/hud/HudHandlerBase.md create mode 100644 docs/api/client/api/ui/notification/RenderableNotification.md create mode 100644 docs/api/client/api/ui/panel/IPanelItem.md create mode 100644 docs/api/client/api/ui/panel/PanelBase.md create mode 100644 docs/api/client/api/ui/panel/PanelHandlerBase.md create mode 100644 docs/api/client/api/ui/panel/PanelItemBase.md create mode 100644 docs/api/client/api/ui/theme/ITheme.md create mode 100644 docs/api/client/api/ui/theme/IThemeManager.md create mode 100644 docs/api/client/api/ui/theme/ThemeBase.md create mode 100644 docs/api/client/api/ui/window/WindowContentHandlerBase.md create mode 100644 docs/api/client/api/ui/window/WindowHandlerBase.md create mode 100644 docs/api/client/api/ui/window/WindowSide.md create mode 100644 docs/api/client/api/ui/window/WindowViewHandlerBase.md create mode 100644 docs/api/client/api/ui/window/content/AnchorSide.md create mode 100644 docs/api/client/api/ui/window/content/ComboContent.md create mode 100644 docs/api/client/api/ui/window/content/ListItemContent.md create mode 100644 docs/api/client/api/ui/window/content/PaddingContent.md create mode 100644 docs/api/client/api/ui/window/content/WindowContent.md create mode 100644 docs/api/client/api/ui/window/content/component/ButtonComponent.md create mode 100644 docs/api/client/api/ui/window/content/component/CheckBoxComponent.md create mode 100644 docs/api/client/api/ui/window/content/component/ComboBoxComponent.md create mode 100644 docs/api/client/api/ui/window/content/component/ParagraphComponent.md create mode 100644 docs/api/client/api/ui/window/content/component/TextComponent.md create mode 100644 docs/api/client/api/ui/window/content/component/TextFieldComponent.md create mode 100644 docs/api/client/api/ui/window/context/ContextAction.md create mode 100644 docs/api/client/api/ui/window/view/Alignment.md create mode 100644 docs/api/client/api/ui/window/view/Column.md create mode 100644 docs/api/client/api/ui/window/view/ListItemView.md create mode 100644 docs/api/client/api/ui/window/view/ListView.md create mode 100644 docs/api/client/api/ui/window/view/RichTextComponent.md create mode 100644 docs/api/client/api/ui/window/view/RichTextView.md create mode 100644 docs/api/client/api/ui/window/view/ScrollableView.md create mode 100644 docs/api/client/api/ui/window/view/SimpleView.md create mode 100644 docs/api/client/api/ui/window/view/SplitView.md create mode 100644 docs/api/client/api/ui/window/view/TabbedView.md create mode 100644 docs/api/client/api/ui/window/view/VerticalAlignment.md create mode 100644 docs/api/client/api/ui/window/view/WindowView.md create mode 100644 docs/api/client/api/utils/BufferUtils.md create mode 100644 docs/api/client/api/utils/ChatUtils.md create mode 100644 docs/api/client/api/utils/ContainerUtils.md create mode 100644 docs/api/client/api/utils/EntityUtils.md create mode 100644 docs/api/client/api/utils/FormBuilder.md create mode 100644 docs/api/client/api/utils/InputBuilder.md create mode 100644 docs/api/client/api/utils/InputUtils.md create mode 100644 docs/api/client/api/utils/InventoryUtils.md create mode 100644 docs/api/client/api/utils/ItemUtils.md create mode 100644 docs/api/client/api/utils/PlayerUtils.md create mode 100644 docs/api/client/api/utils/RotationUtils.md create mode 100644 docs/api/client/api/utils/UUIDSerializer.md create mode 100644 docs/api/client/api/utils/WebUtils.md create mode 100644 docs/api/client/api/utils/WorldUtils.md create mode 100644 docs/api/client/api/utils/objects/Builder.md create mode 100644 docs/api/client/api/utils/objects/Dimension.md create mode 100644 docs/api/client/api/utils/objects/PlayerInput.md create mode 100644 docs/api/client/api/utils/objects/PlayerMessage.md create mode 100644 docs/api/client/api/utils/objects/PlayerRelation.md create mode 100644 docs/api/client/api/utils/objects/Scrollbar.md create mode 100644 docs/api/client/api/utils/objects/State.md create mode 100644 docs/api/client/api/utils/objects/TextField.md create mode 100644 docs/api/client/api/utils/objects/Whisper.md create mode 100644 docs/api/client/api/utils/registry/BlockRegistry.md create mode 100644 docs/api/client/api/utils/registry/EntityTypeRegistry.md create mode 100644 docs/api/client/api/utils/registry/ItemRegistry.md create mode 100644 docs/api/core/animation/Animation.md create mode 100644 docs/api/core/animation/Easing.md create mode 100644 docs/api/core/bind/BindManagerBase.md create mode 100644 docs/api/core/bind/IBindable.md create mode 100644 docs/api/core/bind/key/IKey.md create mode 100644 docs/api/core/bind/key/NullKey.md create mode 100644 docs/api/core/command/AbstractCommand.md create mode 100644 docs/api/core/command/ArgumentData.md create mode 100644 docs/api/core/command/CommandData.md create mode 100644 docs/api/core/command/CommandManager.md create mode 100644 docs/api/core/command/CommandUtils.md create mode 100644 docs/api/core/command/ICommandManager.md create mode 100644 docs/api/core/command/ICommandSource.md create mode 100644 docs/api/core/command/MethodData.md create mode 100644 docs/api/core/command/annotations/Argument.md create mode 100644 docs/api/core/command/annotations/CommandExecutor.md create mode 100644 docs/api/core/command/argument/StringCapture.md create mode 100644 docs/api/core/command/argument/parser/IArg.md create mode 100644 docs/api/core/command/argument/parser/impl/BooleanArg.md create mode 100644 docs/api/core/command/argument/parser/impl/ColorArg.md create mode 100644 docs/api/core/command/argument/parser/impl/DoubleArg.md create mode 100644 docs/api/core/command/argument/parser/impl/EnumArg.md create mode 100644 docs/api/core/command/argument/parser/impl/IntegerArg.md create mode 100644 docs/api/core/command/argument/parser/impl/StringArg.md create mode 100644 docs/api/core/command/argument/parser/impl/StringCapturerArg.md create mode 100644 docs/api/core/command/dispatch/ICommandDispatcher.md create mode 100644 docs/api/core/command/dispatch/StringCommandDispatcher.md create mode 100644 docs/api/core/command/exceptions/ArgumentException.md create mode 100644 docs/api/core/command/exceptions/BadSyntaxException.md create mode 100644 docs/api/core/command/exceptions/CommandException.md create mode 100644 docs/api/core/command/exceptions/DispatchException.md create mode 100644 docs/api/core/command/exceptions/UnknownArgumentTypeException.md create mode 100644 docs/api/core/command/exceptions/UnknownCommandException.md create mode 100644 docs/api/core/command/exceptions/ValidationException.md create mode 100644 docs/api/core/command/processing/CommandProcessingSink.md create mode 100644 docs/api/core/command/processing/CommandProcessor.md create mode 100644 docs/api/core/command/processing/ICommandProcessor.md create mode 100644 docs/api/core/command/processing/MethodProcessor.md create mode 100644 docs/api/core/command/processing/ProcessedCommand.md create mode 100644 docs/api/core/feature/IFeature.md create mode 100644 docs/api/core/feature/IFeatureConfigurable.md create mode 100644 docs/api/core/feature/IFeatureManager.md create mode 100644 docs/api/core/interfaces/IClickable.md create mode 100644 docs/api/core/interfaces/IDraggable.md create mode 100644 docs/api/core/interfaces/IHideable.md create mode 100644 docs/api/core/interfaces/IHoverable.md create mode 100644 docs/api/core/interfaces/INamed.md create mode 100644 docs/api/core/interfaces/IPinnable.md create mode 100644 docs/api/core/interfaces/IReferenceable.md create mode 100644 docs/api/core/interfaces/IScrollable.md create mode 100644 docs/api/core/interfaces/ITickable.md create mode 100644 docs/api/core/interfaces/IToggleable.md create mode 100644 docs/api/core/interfaces/ITypeable.md create mode 100644 docs/api/core/logging/ILog.md create mode 100644 docs/api/core/logging/ILoggable.md create mode 100644 docs/api/core/logging/ILogger.md create mode 100644 docs/api/core/logging/LogFormatter.md create mode 100644 docs/api/core/logging/Logger.md create mode 100644 docs/api/core/logging/output/FileOutput.md create mode 100644 docs/api/core/notification/INotifiable.md create mode 100644 docs/api/core/notification/NotificationType.md create mode 100644 docs/api/core/notification/type/LivingNotification.md create mode 100644 docs/api/core/notification/type/Notification.md create mode 100644 docs/api/core/serialize/ISerializable.md create mode 100644 docs/api/core/serialize/JsonSerializable.md create mode 100644 docs/api/core/serialize/TextSerializable.md create mode 100644 docs/api/core/setting/BooleanSetting.md create mode 100644 docs/api/core/setting/EnumSetting.md create mode 100644 docs/api/core/setting/ListHolder.md create mode 100644 docs/api/core/setting/ListSetting.md create mode 100644 docs/api/core/setting/NullSetting.md create mode 100644 docs/api/core/setting/NumberSetting.md create mode 100644 docs/api/core/setting/OptionSetting.md create mode 100644 docs/api/core/setting/Setting.md create mode 100644 docs/api/core/setting/SettingCommand.md create mode 100644 docs/api/core/setting/StringSetting.md create mode 100644 docs/api/core/setting/ValueHolder.md create mode 100644 docs/api/core/utils/ColorUtils.md create mode 100644 docs/api/core/utils/IOUtils.md create mode 100644 docs/api/core/utils/MathUtils.md create mode 100644 docs/api/core/utils/Pair.md create mode 100644 docs/api/core/utils/StringUtils.md create mode 100644 docs/api/core/utils/Timer.md create mode 100644 docs/api/core/utils/TriConsumer.md create mode 100644 docs/api/core/utils/Version.md create mode 100644 docs/api/index.mdx diff --git a/docs/api/client/api/Globals.md b/docs/api/client/api/Globals.md new file mode 100644 index 0000000..42bda1b --- /dev/null +++ b/docs/api/client/api/Globals.md @@ -0,0 +1,21 @@ +# Globals + +**Package:** `org.rusherhack.client.api` + +**Source:** `org/rusherhack/client/api/Globals.java` + +**Author:** John200410 + + + +## Overview + +`Globals` is a interface. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| mc | `Minecraft` | | + + diff --git a/docs/api/client/api/IRusherHack.md b/docs/api/client/api/IRusherHack.md new file mode 100644 index 0000000..bc30c8c --- /dev/null +++ b/docs/api/client/api/IRusherHack.md @@ -0,0 +1,224 @@ +# IRusherHack + +**Package:** `org.rusherhack.client.api` + +**Source:** `org/rusherhack/client/api/IRusherHack.java` + +**Author:** John200410 2/23/2023 + + + +## Overview + +`IRusherHack` is a interface. + +## Methods + +### getEventBus() + +```java + IEventBus getEventBus() +``` + +**Returns:** `IEventBus` + +### getConfigManager() + +```java + IConfigManager getConfigManager() +``` + +**Returns:** [IConfigManager](/client/api/system/IConfigManager.md) + +### getRegistry() + +```java + IRusherHackRegistry getRegistry() +``` + +**Returns:** [IRusherHackRegistry](/client/api/system/IRusherHackRegistry.md) + +### getFieldRegistry() + +```java + IFieldRegistry getFieldRegistry() +``` + +**Returns:** [IFieldRegistry](/client/api/system/IFieldRegistry.md) + +### getModuleManager() + +```java + IFeatureManager getModuleManager() +``` + +**Returns:** [IFeatureManager](/core/feature/IFeatureManager.md)<[IModule](/client/api/feature/module/IModule.md)> + +### getCommandManager() + +```java + ICommandManager getCommandManager() +``` + +**Returns:** [ICommandManager](/core/command/ICommandManager.md) + +### getHudManager() + +```java + IHudManager getHudManager() +``` + +**Returns:** [IHudManager](/client/api/system/IHudManager.md) + +### getWindowManager() + +```java + IWindowManager getWindowManager() +``` + +**Returns:** [IWindowManager](/client/api/system/IWindowManager.md) + +### getThemeManager() + +```java + IThemeManager getThemeManager() +``` + +**Returns:** [IThemeManager](/client/api/ui/theme/IThemeManager.md) + +### getBindManager() + +```java + IBindManager getBindManager() +``` + +**Returns:** [IBindManager](/client/api/bind/IBindManager.md) + +### getRelationManager() + +```java + IRelationManager getRelationManager() +``` + +**Returns:** [IRelationManager](/client/api/system/IRelationManager.md) + +### getWaypointManager() + +```java + IWaypointManager getWaypointManager() +``` + +**Returns:** [IWaypointManager](/client/api/system/waypoint/IWaypointManager.md) + +### getRotationManager() + +```java + IRotationManager getRotationManager() +``` + +**Returns:** [IRotationManager](/client/api/system/IRotationManager.md) + +### getNotificationManager() + +```java + INotificationManager getNotificationManager() +``` + +**Returns:** [INotificationManager](/client/api/system/INotificationManager.md) + +### getChunkProcessor() + +```java + IChunkProcessor getChunkProcessor() +``` + +**Returns:** [IChunkProcessor](/client/api/system/IChunkProcessor.md) + +### getServerState() + +```java + IServerState getServerState() +``` + +**Returns:** [IServerState](/client/api/system/IServerState.md) + +### interactions() + +```java + IInteractions interactions() +``` + +**Returns:** [IInteractions](/client/api/system/IInteractions.md) + +### createLogger() + +```java + ILogger createLogger(String name) +``` + +**Returns:** [ILogger](/core/logging/ILogger.md) + +### getVersion() + +```java + String getVersion() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getPath() + +```java + Path getPath() +``` + +**Returns:** [Path](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/Path.html) + +### getRenderer2D() + +```java + IRenderer2D getRenderer2D() +``` + +**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) + +### getRenderer3D() + +```java + IRenderer3D getRenderer3D() +``` + +**Returns:** [IRenderer3D](/client/api/render/IRenderer3D.md) + +### fonts() + +```java + Fonts fonts() +``` + +**Returns:** [Fonts](/client/api/system/Fonts.md) + +### colors() + +```java + Colors colors() +``` + +**Returns:** [Colors](/client/api/system/Colors.md) + +### entities() + +```java + Entities entities() +``` + +**Returns:** [Entities](/client/api/system/Entities.md) + +### getLanguage() + +```java + Language getLanguage() +``` + +**Returns:** `Language` + diff --git a/docs/api/client/api/RusherHackAPI.md b/docs/api/client/api/RusherHackAPI.md new file mode 100644 index 0000000..aaf7c63 --- /dev/null +++ b/docs/api/client/api/RusherHackAPI.md @@ -0,0 +1,269 @@ +# RusherHackAPI + +**Package:** `org.rusherhack.client.api` + +**Source:** `org/rusherhack/client/api/RusherHackAPI.java` + +RusherHack public API accessor +TODO: javadocs +* **Author:** John200410 12/29/2022 + + + +## Overview + +`RusherHackAPI` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| PLUGINS_ENABLED | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | public static final | +| rusherhack | [IRusherHack](/client/api/IRusherHack.md) | private static | + + +## Methods + +### getEventBus() + +```java +public static IEventBus getEventBus() +``` + +**Returns**: The event bus used to subscribe to events + + + +**Returns:** `IEventBus` + +### createLogger() + +```java +public static ILogger createLogger(String name) +``` + +Creates a logger with the specified name + +**Returns:** [ILogger](/core/logging/ILogger.md) + +### getVersion() + +```java +public static String getVersion() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getPath() + +```java +public static Path getPath() +``` + +**Returns:** [Path](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/Path.html) + +### getConfigPath() + +```java +public static Path getConfigPath() +``` + +**Returns:** [Path](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/Path.html) + +### getConfigManager() + +```java +public static IConfigManager getConfigManager() +``` + +**Returns:** [IConfigManager](/client/api/system/IConfigManager.md) + +### getRegistry() + +```java +public static IRusherHackRegistry getRegistry() +``` + +**Returns:** [IRusherHackRegistry](/client/api/system/IRusherHackRegistry.md) + +### getFieldRegistry() + +```java +public static IFieldRegistry getFieldRegistry() +``` + +**Returns:** [IFieldRegistry](/client/api/system/IFieldRegistry.md) + +### getModuleManager() + +```java +public static IFeatureManager getModuleManager() +``` + +**Returns:** [IFeatureManager](/core/feature/IFeatureManager.md)<[IModule](/client/api/feature/module/IModule.md)> + +### getCommandManager() + +```java +public static ICommandManager getCommandManager() +``` + +**Returns:** [ICommandManager](/core/command/ICommandManager.md) + +### getHudManager() + +```java +public static IHudManager getHudManager() +``` + +**Returns:** [IHudManager](/client/api/system/IHudManager.md) + +### getWindowManager() + +```java +public static IWindowManager getWindowManager() +``` + +**Returns:** [IWindowManager](/client/api/system/IWindowManager.md) + +### getThemeManager() + +```java +public static IThemeManager getThemeManager() +``` + +**Returns:** [IThemeManager](/client/api/ui/theme/IThemeManager.md) + +### getBindManager() + +```java +public static IBindManager getBindManager() +``` + +**Returns:** [IBindManager](/client/api/bind/IBindManager.md) + +### getRelationManager() + +```java +public static IRelationManager getRelationManager() +``` + +**Returns:** [IRelationManager](/client/api/system/IRelationManager.md) + +### getWaypointManager() + +```java +public static IWaypointManager getWaypointManager() +``` + +**Returns:** [IWaypointManager](/client/api/system/waypoint/IWaypointManager.md) + +### getRotationManager() + +```java +public static IRotationManager getRotationManager() +``` + +**Returns:** [IRotationManager](/client/api/system/IRotationManager.md) + +### getNotificationManager() + +```java +public static INotificationManager getNotificationManager() +``` + +**Returns:** [INotificationManager](/client/api/system/INotificationManager.md) + +### getChunkProcessor() + +```java +public static IChunkProcessor getChunkProcessor() +``` + +**Returns:** [IChunkProcessor](/client/api/system/IChunkProcessor.md) + +### getServerState() + +```java +public static IServerState getServerState() +``` + +**Returns:** [IServerState](/client/api/system/IServerState.md) + +### interactions() + +```java +public static IInteractions interactions() +``` + +**Returns:** [IInteractions](/client/api/system/IInteractions.md) + +### getRenderer2D() + +```java +public static IRenderer2D getRenderer2D() +``` + +**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) + +### getRenderer3D() + +```java +public static IRenderer3D getRenderer3D() +``` + +**Returns:** [IRenderer3D](/client/api/render/IRenderer3D.md) + +### fonts() + +```java +public static Fonts fonts() +``` + +**Returns:** [Fonts](/client/api/system/Fonts.md) + +### colors() + +```java +public static Colors colors() +``` + +**Returns:** [Colors](/client/api/system/Colors.md) + +### entities() + +```java +public static Entities entities() +``` + +**Returns:** [Entities](/client/api/system/Entities.md) + +### schedule() + +```java +public static void schedule(Runnable runnable) +``` + +Schedules a task to be run on the next iteration of the game loop +@param runnable + +### getLanguage() + +```java +public static Language getLanguage() +``` + +**Returns:** `Language` + +### sendNotification() + +```java +public static void sendNotification(NotificationType type, String text) +``` + +### sendNotification() + +```java +public static void sendNotification(NotificationType type, String prefix, String text) +``` + diff --git a/docs/api/client/api/accessors/client/IMixinClientInput.md b/docs/api/client/api/accessors/client/IMixinClientInput.md new file mode 100644 index 0000000..dd7fbae --- /dev/null +++ b/docs/api/client/api/accessors/client/IMixinClientInput.md @@ -0,0 +1,22 @@ +# IMixinClientInput + +**Package:** `org.rusherhack.client.api.accessors.client` + +**Source:** `org/rusherhack/client/api/accessors/client/IMixinClientInput.java` + +**Author:** john@rusherhack.org 6/2/2025 + + + +## Overview + +`IMixinClientInput` is a interface. + +## Methods + +### setMoveVector() + +```java + void setMoveVector(Vec2 moveVector) +``` + diff --git a/docs/api/client/api/accessors/client/IMixinConnection.md b/docs/api/client/api/accessors/client/IMixinConnection.md new file mode 100644 index 0000000..08309b9 --- /dev/null +++ b/docs/api/client/api/accessors/client/IMixinConnection.md @@ -0,0 +1,42 @@ +# IMixinConnection + +**Package:** `org.rusherhack.client.api.accessors.client` + +**Source:** `org/rusherhack/client/api/accessors/client/IMixinConnection.java` + +**Author:** John200410 9/15/2023 + + + +## Overview + +`IMixinConnection` is a interface. + +## Methods + +### getChannel() + +```java + Channel getChannel() +``` + +**Returns:** [Channel](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/channels/Channel.html) + +### invokeDoSendPacket() + +```java + void invokeDoSendPacket(Packet packet, ChannelFutureListener sendListener, boolean flush) +``` + +### invokeChannelRead0() + +```java + void invokeChannelRead0(ChannelHandlerContext context, Packet packet) +``` + +### invokeGenericsFtw() + +```java +static void invokeGenericsFtw(Packet packet, PacketListener listener) +``` + diff --git a/docs/api/client/api/accessors/client/IMixinKeyMapping.md b/docs/api/client/api/accessors/client/IMixinKeyMapping.md new file mode 100644 index 0000000..fceb6cf --- /dev/null +++ b/docs/api/client/api/accessors/client/IMixinKeyMapping.md @@ -0,0 +1,30 @@ +# IMixinKeyMapping + +**Package:** `org.rusherhack.client.api.accessors.client` + +**Source:** `org/rusherhack/client/api/accessors/client/IMixinKeyMapping.java` + +**Author:** John200410 7/7/2023 + + + +## Overview + +`IMixinKeyMapping` is a interface. + +## Methods + +### getKey() + +```java + InputConstants.Key getKey() +``` + +**Returns:** `InputConstants.Key` + +### invokeReleaseKey() + +```java + void invokeReleaseKey() +``` + diff --git a/docs/api/client/api/accessors/client/IMixinMinecraft.md b/docs/api/client/api/accessors/client/IMixinMinecraft.md new file mode 100644 index 0000000..c72f532 --- /dev/null +++ b/docs/api/client/api/accessors/client/IMixinMinecraft.md @@ -0,0 +1,82 @@ +# IMixinMinecraft + +**Package:** `org.rusherhack.client.api.accessors.client` + +**Source:** `org/rusherhack/client/api/accessors/client/IMixinMinecraft.java` + +**Author:** John200410 5/30/2023 + + + +## Overview + +`IMixinMinecraft` is a interface. + +## Methods + +### getTimer() + +```java + DeltaTracker.Timer getTimer() +``` + +**Returns:** `DeltaTracker.Timer` + +### getRightClickDelay() + +```java + int getRightClickDelay() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setRightClickDelay() + +```java + void setRightClickDelay(int rightClickDelay) +``` + +### invokeStartUseItem() + +```java + void invokeStartUseItem() +``` + +### setUser() + +```java + void setUser(User user) +``` + +### setPlayerSocialManager() + +```java + void setPlayerSocialManager(PlayerSocialManager playerSocialManager) +``` + +### setProfileKeyPairManager() + +```java + void setProfileKeyPairManager(ProfileKeyPairManager profileKeyPairManager) +``` + +### setReportingContext() + +```java + void setReportingContext(ReportingContext reportingContext) +``` + +### setUserApiService() + +```java + void setUserApiService(UserApiService userApiService) +``` + +### invokeCreateUserApiService() + +```java + UserApiService invokeCreateUserApiService(YggdrasilAuthenticationService yggdrasilAuthenticationService, GameConfig gameConfig) +``` + +**Returns:** `UserApiService` + diff --git a/docs/api/client/api/accessors/client/IMixinMultiPlayerGameMode.md b/docs/api/client/api/accessors/client/IMixinMultiPlayerGameMode.md new file mode 100644 index 0000000..df8526c --- /dev/null +++ b/docs/api/client/api/accessors/client/IMixinMultiPlayerGameMode.md @@ -0,0 +1,86 @@ +# IMixinMultiPlayerGameMode + +**Package:** `org.rusherhack.client.api.accessors.client` + +**Source:** `org/rusherhack/client/api/accessors/client/IMixinMultiPlayerGameMode.java` + +**Author:** John200410 7/28/2023 + + + +## Overview + +`IMixinMultiPlayerGameMode` is a interface. + +## Methods + +### getConnection() + +```java + ClientPacketListener getConnection() +``` + +**Returns:** `ClientPacketListener` + +### getDestroyBlockPos() + +```java + BlockPos getDestroyBlockPos() +``` + +**Returns:** `BlockPos` + +### getDestroyProgress() + +```java + float getDestroyProgress() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setDestroyProgress() + +```java + void setDestroyProgress(float destroyProgress) +``` + +### getDestroyDelay() + +```java + int getDestroyDelay() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setDestroyDelay() + +```java + void setDestroyDelay(int destroyDelay) +``` + +### setIsDestroying() + +```java + void setIsDestroying(boolean isDestroying) +``` + +### invokeStartPrediction() + +```java + void invokeStartPrediction(ClientLevel level, PredictiveAction action) +``` + +### invokeEnsureHasSentCarriedItem() + +```java + void invokeEnsureHasSentCarriedItem() +``` + +### invokePerformUseItemOn() + +```java + InteractionResult invokePerformUseItemOn(LocalPlayer player, InteractionHand hand, BlockHitResult result) +``` + +**Returns:** `InteractionResult` + diff --git a/docs/api/client/api/accessors/client/IMixinOptions.md b/docs/api/client/api/accessors/client/IMixinOptions.md new file mode 100644 index 0000000..433133a --- /dev/null +++ b/docs/api/client/api/accessors/client/IMixinOptions.md @@ -0,0 +1,22 @@ +# IMixinOptions + +**Package:** `org.rusherhack.client.api.accessors.client` + +**Source:** `org/rusherhack/client/api/accessors/client/IMixinOptions.java` + +**Author:** historian + + + +## Overview + +`IMixinOptions` is a interface. + +## Methods + +### setFov() + +```java + void setFov(OptionInstance fov) +``` + diff --git a/docs/api/client/api/accessors/entity/IMixinAbstractArrow.md b/docs/api/client/api/accessors/entity/IMixinAbstractArrow.md new file mode 100644 index 0000000..2fb798d --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinAbstractArrow.md @@ -0,0 +1,24 @@ +# IMixinAbstractArrow + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinAbstractArrow.java` + +**Author:** John200410 1/8/2024 + + + +## Overview + +`IMixinAbstractArrow` is a interface. + +## Methods + +### rh_invokeIsInGround() + +```java + boolean rh_invokeIsInGround() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/accessors/entity/IMixinAbstractClientPlayer.md b/docs/api/client/api/accessors/entity/IMixinAbstractClientPlayer.md new file mode 100644 index 0000000..7efc879 --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinAbstractClientPlayer.md @@ -0,0 +1,30 @@ +# IMixinAbstractClientPlayer + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinAbstractClientPlayer.java` + +**Author:** John200410 7/5/2023 + + + +## Overview + +`IMixinAbstractClientPlayer` is a interface. + +## Methods + +### setPlayerInfo() + +```java + void setPlayerInfo(PlayerInfo playerInfo) +``` + +### invokeGetPlayerInfo() + +```java + PlayerInfo invokeGetPlayerInfo() +``` + +**Returns:** `PlayerInfo` + diff --git a/docs/api/client/api/accessors/entity/IMixinEntity.md b/docs/api/client/api/accessors/entity/IMixinEntity.md new file mode 100644 index 0000000..842deee --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinEntity.md @@ -0,0 +1,88 @@ +# IMixinEntity + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinEntity.java` + +**Author:** John200410 7/5/2023 + + + +## Overview + +`IMixinEntity` is a interface. + +## Methods + +### setOnGround() + +```java + void setOnGround(boolean onGround) +``` + +### getDimensions() + +```java + EntityDimensions getDimensions() +``` + +**Returns:** `EntityDimensions` + +### getStuckSpeedMultiplier() + +```java + Vec3 getStuckSpeedMultiplier() +``` + +**Returns:** `Vec3` + +### setStuckSpeedMultiplier() + +```java + void setStuckSpeedMultiplier(Vec3 stuckSpeedMultiplier) +``` + +### setTouchingWater() + +```java + void setTouchingWater(boolean touchingWater) +``` + +### callCollide() + +```java + Vec3 callCollide(Vec3 vec) +``` + +**Returns:** `Vec3` + +### invokeGetSharedFlag() + +```java + boolean invokeGetSharedFlag(int flag) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### invokeSetSharedFlag() + +```java + void invokeSetSharedFlag(int flag, boolean value) +``` + +### invokeCalculateViewVector() + +```java + Vec3 invokeCalculateViewVector(float xRot, float yRot) +``` + +**Returns:** `Vec3` + +### invokeCanAddPassenger() + +```java + boolean invokeCanAddPassenger(Entity entity) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/accessors/entity/IMixinFireworkRocketEntity.md b/docs/api/client/api/accessors/entity/IMixinFireworkRocketEntity.md new file mode 100644 index 0000000..e794be2 --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinFireworkRocketEntity.md @@ -0,0 +1,40 @@ +# IMixinFireworkRocketEntity + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinFireworkRocketEntity.java` + +**Author:** John200410 7/22/2023 + + + +## Overview + +`IMixinFireworkRocketEntity` is a interface. + +## Methods + +### getAttachedEntity() + +```java + LivingEntity getAttachedEntity() +``` + +**Returns:** `LivingEntity` + +### getLife() + +```java + int getLife() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getLifeTime() + +```java + int getLifeTime() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/accessors/entity/IMixinFishingHook.md b/docs/api/client/api/accessors/entity/IMixinFishingHook.md new file mode 100644 index 0000000..f7557b0 --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinFishingHook.md @@ -0,0 +1,24 @@ +# IMixinFishingHook + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinFishingHook.java` + +**Author:** historian + + + +## Overview + +`IMixinFishingHook` is a interface. + +## Methods + +### isBiting() + +```java + boolean isBiting() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/accessors/entity/IMixinLivingEntity.md b/docs/api/client/api/accessors/entity/IMixinLivingEntity.md new file mode 100644 index 0000000..bb9dff6 --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinLivingEntity.md @@ -0,0 +1,46 @@ +# IMixinLivingEntity + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinLivingEntity.java` + +**Author:** historian + + + +## Overview + +`IMixinLivingEntity` is a interface. + +## Methods + +### getNoJumpDelay() + +```java + int getNoJumpDelay() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setNoJumpDelay() + +```java + void setNoJumpDelay(int value) +``` + +### getAttackStrengthTicker() + +```java + int getAttackStrengthTicker() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### invokeCalculateFallDamage() + +```java + int invokeCalculateFallDamage(double fallDistance, float damageMultiplier) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/accessors/entity/IMixinLocalPlayer.md b/docs/api/client/api/accessors/entity/IMixinLocalPlayer.md new file mode 100644 index 0000000..0f12192 --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinLocalPlayer.md @@ -0,0 +1,84 @@ +# IMixinLocalPlayer + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinLocalPlayer.java` + +**Author:** John200410 7/17/2023 + + + +## Overview + +`IMixinLocalPlayer` is a interface. + +## Methods + +### getLastX() + +```java + double getLastX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getLastY() + +```java + double getLastY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getLastZ() + +```java + double getLastZ() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### wasLastOnGround() + +```java + boolean wasLastOnGround() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setJumpRidingScale() + +```java + void setJumpRidingScale(float jumpRidingScale) +``` + +### getUsingItemHand() + +```java + InteractionHand getUsingItemHand() +``` + +**Returns:** `InteractionHand` + +### invokeSendPosition() + +```java + void invokeSendPosition() +``` + +### invokeCanStartSprinting() + +```java + boolean invokeCanStartSprinting() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### rh_invokeModifyInput() + +```java + Vec2 rh_invokeModifyInput(Vec2 input) +``` + +**Returns:** `Vec2` + diff --git a/docs/api/client/api/accessors/entity/IMixinPlayerInfo.md b/docs/api/client/api/accessors/entity/IMixinPlayerInfo.md new file mode 100644 index 0000000..8f2a8b5 --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinPlayerInfo.md @@ -0,0 +1,22 @@ +# IMixinPlayerInfo + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinPlayerInfo.java` + +**Author:** historian + + + +## Overview + +`IMixinPlayerInfo` is a interface. + +## Methods + +### invokeSetGameMode() + +```java + void invokeSetGameMode(GameType gameMode) +``` + diff --git a/docs/api/client/api/accessors/entity/IMixinProjectile.md b/docs/api/client/api/accessors/entity/IMixinProjectile.md new file mode 100644 index 0000000..afa55af --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinProjectile.md @@ -0,0 +1,24 @@ +# IMixinProjectile + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinProjectile.java` + +**Author:** John200410 2/27/2024 + + + +## Overview + +`IMixinProjectile` is a interface. + +## Methods + +### getOwner() + +```java + EntityReference getOwner() +``` + +**Returns:** `EntityReference`<`Entity`> + diff --git a/docs/api/client/api/accessors/entity/IMixinThrowableProjectile.md b/docs/api/client/api/accessors/entity/IMixinThrowableProjectile.md new file mode 100644 index 0000000..aebe6bd --- /dev/null +++ b/docs/api/client/api/accessors/entity/IMixinThrowableProjectile.md @@ -0,0 +1,24 @@ +# IMixinThrowableProjectile + +**Package:** `org.rusherhack.client.api.accessors.entity` + +**Source:** `org/rusherhack/client/api/accessors/entity/IMixinThrowableProjectile.java` + +**Author:** John200410 8/24/2023 + + + +## Overview + +`IMixinThrowableProjectile` is a interface. + +## Methods + +### invokeGetGravity() + +```java + double invokeGetGravity() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/accessors/gui/IMixinAbstractContainerScreen.md b/docs/api/client/api/accessors/gui/IMixinAbstractContainerScreen.md new file mode 100644 index 0000000..57de114 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinAbstractContainerScreen.md @@ -0,0 +1,40 @@ +# IMixinAbstractContainerScreen + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinAbstractContainerScreen.java` + +**Author:** John200410 7/28/2023 + + + +## Overview + +`IMixinAbstractContainerScreen` is a interface. + +## Methods + +### getHoveredSlot() + +```java + Slot getHoveredSlot() +``` + +**Returns:** `Slot` + +### getImageWidth() + +```java + int getImageWidth() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getImageHeight() + +```java + int getImageHeight() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/accessors/gui/IMixinAbstractCraftingMenu.md b/docs/api/client/api/accessors/gui/IMixinAbstractCraftingMenu.md new file mode 100644 index 0000000..083d7b1 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinAbstractCraftingMenu.md @@ -0,0 +1,32 @@ +# IMixinAbstractCraftingMenu + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinAbstractCraftingMenu.java` + +**Author:** historian + + + +## Overview + +`IMixinAbstractCraftingMenu` is a interface. + +## Methods + +### getCraftSlots() + +```java + CraftingContainer getCraftSlots() +``` + +**Returns:** `CraftingContainer` + +### getResultSlots() + +```java + ResultContainer getResultSlots() +``` + +**Returns:** `ResultContainer` + diff --git a/docs/api/client/api/accessors/gui/IMixinAbstractSignEditScreen.md b/docs/api/client/api/accessors/gui/IMixinAbstractSignEditScreen.md new file mode 100644 index 0000000..f3fc937 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinAbstractSignEditScreen.md @@ -0,0 +1,24 @@ +# IMixinAbstractSignEditScreen + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinAbstractSignEditScreen.java` + +**Author:** John200410 8/20/2023 + + + +## Overview + +`IMixinAbstractSignEditScreen` is a interface. + +## Methods + +### getMessages() + +```java + String[] getMessages() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + diff --git a/docs/api/client/api/accessors/gui/IMixinBossHealthOverlay.md b/docs/api/client/api/accessors/gui/IMixinBossHealthOverlay.md new file mode 100644 index 0000000..ca59e5e --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinBossHealthOverlay.md @@ -0,0 +1,24 @@ +# IMixinBossHealthOverlay + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinBossHealthOverlay.java` + +**Author:** historian + + + +## Overview + +`IMixinBossHealthOverlay` is a interface. + +## Methods + +### getEvents() + +```java + Map getEvents() +``` + +**Returns:** [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[UUID](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html), `LerpingBossEvent`> + diff --git a/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md b/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md new file mode 100644 index 0000000..a57b959 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md @@ -0,0 +1,24 @@ +# IMixinChatComponent$DrawingBackgroundGraphicsAccess + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.java` + +**Author:** john@rusherhack.org 4/23/2026 + + + +## Overview + +`IMixinChatComponent$DrawingBackgroundGraphicsAccess` is a interface. + +## Methods + +### rusherhack$getGraphics() + +```java + GuiGraphics rusherhack$getGraphics() +``` + +**Returns:** `GuiGraphics` + diff --git a/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md b/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md new file mode 100644 index 0000000..568feea --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md @@ -0,0 +1,24 @@ +# IMixinChatComponent$DrawingFocusedGraphicsAccess + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.java` + +**Author:** john@rusherhack.org 4/23/2026 + + + +## Overview + +`IMixinChatComponent$DrawingFocusedGraphicsAccess` is a interface. + +## Methods + +### rusherhack$getGraphics() + +```java + GuiGraphics rusherhack$getGraphics() +``` + +**Returns:** `GuiGraphics` + diff --git a/docs/api/client/api/accessors/gui/IMixinChatComponent.md b/docs/api/client/api/accessors/gui/IMixinChatComponent.md new file mode 100644 index 0000000..cc47609 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinChatComponent.md @@ -0,0 +1,46 @@ +# IMixinChatComponent + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinChatComponent.java` + +**Author:** John200410 7/25/2023 + + + +## Overview + +`IMixinChatComponent` is a interface. + +## Methods + +### getTrimmedMessages() + +```java + List getTrimmedMessages() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`GuiMessage.Line`> + +### getAllMessages() + +```java + List getAllMessages() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`GuiMessage`> + +### getChatScrollbarPos() + +```java + int getChatScrollbarPos() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### invokeRefreshTrimmedMessage() + +```java + void invokeRefreshTrimmedMessage() +``` + diff --git a/docs/api/client/api/accessors/gui/IMixinDisconnectedScreen.md b/docs/api/client/api/accessors/gui/IMixinDisconnectedScreen.md new file mode 100644 index 0000000..a132f62 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinDisconnectedScreen.md @@ -0,0 +1,32 @@ +# IMixinDisconnectedScreen + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinDisconnectedScreen.java` + +**Author:** john@rusherhack.org 12/24/2025 + + + +## Overview + +`IMixinDisconnectedScreen` is a interface. + +## Methods + +### getParent() + +```java + Screen getParent() +``` + +**Returns:** `Screen` + +### getDetails() + +```java + DisconnectionDetails getDetails() +``` + +**Returns:** `DisconnectionDetails` + diff --git a/docs/api/client/api/accessors/gui/IMixinGui.md b/docs/api/client/api/accessors/gui/IMixinGui.md new file mode 100644 index 0000000..984c986 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinGui.md @@ -0,0 +1,24 @@ +# IMixinGui + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinGui.java` + +**Author:** john@rusherhack.org 7/20/2025 + + + +## Overview + +`IMixinGui` is a interface. + +## Methods + +### getOverlayMessageString() + +```java + Component getOverlayMessageString() +``` + +**Returns:** `Component` + diff --git a/docs/api/client/api/accessors/gui/IMixinMerchantMenu.md b/docs/api/client/api/accessors/gui/IMixinMerchantMenu.md new file mode 100644 index 0000000..9f642c5 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinMerchantMenu.md @@ -0,0 +1,24 @@ +# IMixinMerchantMenu + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinMerchantMenu.java` + +**Author:** historian + + + +## Overview + +`IMixinMerchantMenu` is a interface. + +## Methods + +### getTrader() + +```java + Merchant getTrader() +``` + +**Returns:** `Merchant` + diff --git a/docs/api/client/api/accessors/gui/IMixinMerchantScreen.md b/docs/api/client/api/accessors/gui/IMixinMerchantScreen.md new file mode 100644 index 0000000..b54d521 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinMerchantScreen.md @@ -0,0 +1,46 @@ +# IMixinMerchantScreen + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinMerchantScreen.java` + +**Author:** historian + + + +## Overview + +`IMixinMerchantScreen` is a interface. + +## Methods + +### getShopItem() + +```java + int getShopItem() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setShopItem() + +```java + void setShopItem(int shopItem) +``` + +### getTradeOfferButtons() + +```java + MerchantScreen.TradeOfferButton[] getTradeOfferButtons() +``` + +**Returns:** `MerchantScreen.TradeOfferButton`[] + +### getScrollOff() + +```java + int getScrollOff() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/accessors/gui/IMixinPauseScreen.md b/docs/api/client/api/accessors/gui/IMixinPauseScreen.md new file mode 100644 index 0000000..a4b835c --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinPauseScreen.md @@ -0,0 +1,22 @@ +# IMixinPauseScreen + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinPauseScreen.java` + +**Author:** historian + + + +## Overview + +`IMixinPauseScreen` is a interface. + +## Methods + +### disconnect() + +```java + void disconnect() +``` + diff --git a/docs/api/client/api/accessors/gui/IMixinPlayerTabOverlay.md b/docs/api/client/api/accessors/gui/IMixinPlayerTabOverlay.md new file mode 100644 index 0000000..9d4737e --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinPlayerTabOverlay.md @@ -0,0 +1,24 @@ +# IMixinPlayerTabOverlay + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinPlayerTabOverlay.java` + +**Author:** John200410 7/22/2023 + + + +## Overview + +`IMixinPlayerTabOverlay` is a interface. + +## Methods + +### getPlayerComparator() + +```java +static Comparator getPlayerComparator() +``` + +**Returns:** [Comparator](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Comparator.html)<`PlayerInfo`> + diff --git a/docs/api/client/api/accessors/gui/IMixinScreen.md b/docs/api/client/api/accessors/gui/IMixinScreen.md new file mode 100644 index 0000000..53214f6 --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinScreen.md @@ -0,0 +1,38 @@ +# IMixinScreen + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinScreen.java` + +**Author:** John200410 5/16/2023 + + + +## Overview + +`IMixinScreen` is a interface. + +## Methods + +### isInitialized() + +```java + boolean isInitialized() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### invokeAddRenderableWidget() + +```java + T invokeAddRenderableWidget(T renderable) +``` + +**Returns:** `T` + +### invokeRemoveWidget() + +```java + void invokeRemoveWidget(GuiEventListener widget) +``` + diff --git a/docs/api/client/api/accessors/gui/IMixinShulkerBoxMenu.md b/docs/api/client/api/accessors/gui/IMixinShulkerBoxMenu.md new file mode 100644 index 0000000..0c1615e --- /dev/null +++ b/docs/api/client/api/accessors/gui/IMixinShulkerBoxMenu.md @@ -0,0 +1,24 @@ +# IMixinShulkerBoxMenu + +**Package:** `org.rusherhack.client.api.accessors.gui` + +**Source:** `org/rusherhack/client/api/accessors/gui/IMixinShulkerBoxMenu.java` + +**Author:** John200410 1/2/2024 + + + +## Overview + +`IMixinShulkerBoxMenu` is a interface. + +## Methods + +### getContainer() + +```java + Container getContainer() +``` + +**Returns:** `Container` + diff --git a/docs/api/client/api/accessors/packet/IMixinClientPacketListener.md b/docs/api/client/api/accessors/packet/IMixinClientPacketListener.md new file mode 100644 index 0000000..b35f1ac --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinClientPacketListener.md @@ -0,0 +1,40 @@ +# IMixinClientPacketListener + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientPacketListener.java` + +**Author:** John200410 8/8/2023 + + + +## Overview + +`IMixinClientPacketListener` is a interface. + +## Methods + +### getLastSeenMessages() + +```java + LastSeenMessagesTracker getLastSeenMessages() +``` + +**Returns:** `LastSeenMessagesTracker` + +### getSignedMessageEncoder() + +```java + SignedMessageChain.Encoder getSignedMessageEncoder() +``` + +**Returns:** `SignedMessageChain.Encoder` + +### getPlayerInfoMap() + +```java + Map getPlayerInfoMap() +``` + +**Returns:** [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[UUID](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html), `PlayerInfo`> + diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundExplodePacket.md b/docs/api/client/api/accessors/packet/IMixinClientboundExplodePacket.md new file mode 100644 index 0000000..59b55c0 --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinClientboundExplodePacket.md @@ -0,0 +1,22 @@ +# IMixinClientboundExplodePacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundExplodePacket.java` + +**Author:** John200410 6/11/2023 + + + +## Overview + +`IMixinClientboundExplodePacket` is a interface. + +## Methods + +### setPlayerKnockback() + +```java + void setPlayerKnockback(Optional playerKnockback) +``` + diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md b/docs/api/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md new file mode 100644 index 0000000..b5acc0b --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md @@ -0,0 +1,24 @@ +# IMixinClientboundSectionBlocksUpdatePacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.java` + +**Author:** John200410 7/20/2023 + + + +## Overview + +`IMixinClientboundSectionBlocksUpdatePacket` is a interface. + +## Methods + +### getSectionPos() + +```java + SectionPos getSectionPos() +``` + +**Returns:** `SectionPos` + diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md b/docs/api/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md new file mode 100644 index 0000000..8b7942a --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md @@ -0,0 +1,30 @@ +# IMixinClientboundSetEntityMotionPacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.java` + +**Author:** John200410 6/11/2023 + + + +## Overview + +`IMixinClientboundSetEntityMotionPacket` is a interface. + +## Methods + +### getMotion() + +```java + Vec3 getMotion() +``` + +**Returns:** `Vec3` + +### setMotion() + +```java + void setMotion(Vec3 motion) +``` + diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundSetTimePacket.md b/docs/api/client/api/accessors/packet/IMixinClientboundSetTimePacket.md new file mode 100644 index 0000000..9aa43c1 --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinClientboundSetTimePacket.md @@ -0,0 +1,18 @@ +# IMixinClientboundSetTimePacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundSetTimePacket.java` + +## Overview + +`IMixinClientboundSetTimePacket` is a interface. + +## Methods + +### setDayTime() + +```java + void setDayTime(long dayTime) +``` + diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md b/docs/api/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md new file mode 100644 index 0000000..87b5c79 --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md @@ -0,0 +1,22 @@ +# IMixinClientboundSystemChatPacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundSystemChatPacket.java` + +**Author:** John200410 7/26/2023 + + + +## Overview + +`IMixinClientboundSystemChatPacket` is a interface. + +## Methods + +### setContent() + +```java + void setContent(Component content) +``` + diff --git a/docs/api/client/api/accessors/packet/IMixinConnectionProtocol.md b/docs/api/client/api/accessors/packet/IMixinConnectionProtocol.md new file mode 100644 index 0000000..ad19c70 --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinConnectionProtocol.md @@ -0,0 +1,14 @@ +# IMixinConnectionProtocol + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinConnectionProtocol.java` + +**Author:** John200410 9/2/2023 + + + +## Overview + +`IMixinConnectionProtocol` is a interface. + diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundInteractPacket.md b/docs/api/client/api/accessors/packet/IMixinServerboundInteractPacket.md new file mode 100644 index 0000000..ac1849e --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinServerboundInteractPacket.md @@ -0,0 +1,24 @@ +# IMixinServerboundInteractPacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundInteractPacket.java` + +**Author:** historian + + + +## Overview + +`IMixinServerboundInteractPacket` is a interface. + +## Methods + +### getEntityId() + +```java + int getEntityId() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md b/docs/api/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md new file mode 100644 index 0000000..1a9100e --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md @@ -0,0 +1,52 @@ +# IMixinServerboundMovePlayerPacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.java` + +**Author:** John200410 7/17/2023 + + + +## Overview + +`IMixinServerboundMovePlayerPacket` is a interface. + +## Methods + +### setX() + +```java + void setX(double x) +``` + +### setY() + +```java + void setY(double y) +``` + +### setZ() + +```java + void setZ(double z) +``` + +### setYaw() + +```java + void setYaw(float yaw) +``` + +### setPitch() + +```java + void setPitch(float pitch) +``` + +### setOnGround() + +```java + void setOnGround(boolean onGround) +``` + diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md b/docs/api/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md new file mode 100644 index 0000000..083486a --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md @@ -0,0 +1,34 @@ +# IMixinServerboundMoveVehiclePacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.java` + +**Author:** John200410 7/17/2023 + + + +## Overview + +`IMixinServerboundMoveVehiclePacket` is a interface. + +## Methods + +### setPosition() + +```java + void setPosition(Vec3 position) +``` + +### setYaw() + +```java + void setYaw(float yaw) +``` + +### setPitch() + +```java + void setPitch(float pitch) +``` + diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md b/docs/api/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md new file mode 100644 index 0000000..5d9330c --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md @@ -0,0 +1,22 @@ +# IMixinServerboundPlayerInputPacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.java` + +**Author:** historian + + + +## Overview + +`IMixinServerboundPlayerInputPacket` is a interface. + +## Methods + +### setInput() + +```java + void setInput(Input input) +``` + diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md b/docs/api/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md new file mode 100644 index 0000000..acea19b --- /dev/null +++ b/docs/api/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md @@ -0,0 +1,28 @@ +# IMixinServerboundUseItemOnPacket + +**Package:** `org.rusherhack.client.api.accessors.packet` + +**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.java` + +**Author:** John200410 7/24/2024 + + + +## Overview + +`IMixinServerboundUseItemOnPacket` is a interface. + +## Methods + +### setBlockHit() + +```java + void setBlockHit(BlockHitResult blockHit) +``` + +### setHand() + +```java + void setHand(InteractionHand hand) +``` + diff --git a/docs/api/client/api/accessors/render/IMixinBufferBuilder.md b/docs/api/client/api/accessors/render/IMixinBufferBuilder.md new file mode 100644 index 0000000..d17ba08 --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinBufferBuilder.md @@ -0,0 +1,56 @@ +# IMixinBufferBuilder + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinBufferBuilder.java` + +**Author:** John200410 6/13/2024 + + + +## Overview + +`IMixinBufferBuilder` is a interface. + +## Methods + +### isBuilding() + +```java + boolean isBuilding() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getBuffer() + +```java + ByteBufferBuilder getBuffer() +``` + +**Returns:** `ByteBufferBuilder` + +### getVertexPointer() + +```java + long getVertexPointer() +``` + +**Returns:** [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) + +### invokeBeginVertex() + +```java + long invokeBeginVertex() +``` + +**Returns:** [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) + +### getFormat() + +```java + VertexFormat getFormat() +``` + +**Returns:** `VertexFormat` + diff --git a/docs/api/client/api/accessors/render/IMixinByteBufferBuilder.md b/docs/api/client/api/accessors/render/IMixinByteBufferBuilder.md new file mode 100644 index 0000000..4bcbbc5 --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinByteBufferBuilder.md @@ -0,0 +1,24 @@ +# IMixinByteBufferBuilder + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinByteBufferBuilder.java` + +**Author:** John200410 6/13/2024 + + + +## Overview + +`IMixinByteBufferBuilder` is a interface. + +## Methods + +### getPointer() + +```java + long getPointer() +``` + +**Returns:** [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) + diff --git a/docs/api/client/api/accessors/render/IMixinCamera.md b/docs/api/client/api/accessors/render/IMixinCamera.md new file mode 100644 index 0000000..338cff5 --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinCamera.md @@ -0,0 +1,28 @@ +# IMixinCamera + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinCamera.java` + +**Author:** John200410 7/15/2023 + + + +## Overview + +`IMixinCamera` is a interface. + +## Methods + +### invokeSetPosition() + +```java + void invokeSetPosition(double x, double y, double z) +``` + +### invokeSetRotation() + +```java + void invokeSetRotation(float yaw, float pitch) +``` + diff --git a/docs/api/client/api/accessors/render/IMixinGameRenderer.md b/docs/api/client/api/accessors/render/IMixinGameRenderer.md new file mode 100644 index 0000000..8e83929 --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinGameRenderer.md @@ -0,0 +1,52 @@ +# IMixinGameRenderer + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinGameRenderer.java` + +**Author:** John200410 6/2/2023 + + + +## Overview + +`IMixinGameRenderer` is a interface. + +## Methods + +### setRenderBlockOutline() + +```java + void setRenderBlockOutline(boolean renderBlockOutline) +``` + +### getFogRenderer() + +```java + FogRenderer getFogRenderer() +``` + +**Returns:** `FogRenderer` + +### getGuiRenderer() + +```java + GuiRenderer getGuiRenderer() +``` + +**Returns:** `GuiRenderer` + +### invokeBobView() + +```java + void invokeBobView(PoseStack matrixStack, float partialTicks) +``` + +### invokeGetFov() + +```java + float invokeGetFov(Camera arg, float partialTicks, boolean bl) +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + diff --git a/docs/api/client/api/accessors/render/IMixinGlDevice.md b/docs/api/client/api/accessors/render/IMixinGlDevice.md new file mode 100644 index 0000000..e17bbae --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinGlDevice.md @@ -0,0 +1,24 @@ +# IMixinGlDevice + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinGlDevice.java` + +**Author:** john@rusherhack.org 3/31/2026 + + + +## Overview + +`IMixinGlDevice` is a interface. + +## Methods + +### getDefaultShaderSource() + +```java + ShaderSource getDefaultShaderSource() +``` + +**Returns:** `ShaderSource` + diff --git a/docs/api/client/api/accessors/render/IMixinGuiGraphics.md b/docs/api/client/api/accessors/render/IMixinGuiGraphics.md new file mode 100644 index 0000000..af979aa --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinGuiGraphics.md @@ -0,0 +1,44 @@ +# IMixinGuiGraphics + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinGuiGraphics.java` + +**Author:** john@rusherhack.org 2/22/2026 + + + +## Overview + +`IMixinGuiGraphics` is a interface. + +## Methods + +### getScissorStack() + +```java + GuiGraphics.ScissorStack getScissorStack() +``` + +**Returns:** `GuiGraphics.ScissorStack` + +### getGuiRenderState() + +```java + GuiRenderState getGuiRenderState() +``` + +**Returns:** `GuiRenderState` + +### setGuiRenderState() + +```java + void setGuiRenderState(GuiRenderState guiRenderState) +``` + +### setPose() + +```java + void setPose(Matrix3x2fStack matrixStack) +``` + diff --git a/docs/api/client/api/accessors/render/IMixinLevelRenderer.md b/docs/api/client/api/accessors/render/IMixinLevelRenderer.md new file mode 100644 index 0000000..af66ae4 --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinLevelRenderer.md @@ -0,0 +1,24 @@ +# IMixinLevelRenderer + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinLevelRenderer.java` + +**Author:** John200410 7/16/2023 + + + +## Overview + +`IMixinLevelRenderer` is a interface. + +## Methods + +### getDestroyingBlocks() + +```java + Int2ObjectMap getDestroyingBlocks() +``` + +**Returns:** `Int2ObjectMap`<`BlockDestructionProgress`> + diff --git a/docs/api/client/api/accessors/render/IMixinMapTextureManager.md b/docs/api/client/api/accessors/render/IMixinMapTextureManager.md new file mode 100644 index 0000000..a755c86 --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinMapTextureManager.md @@ -0,0 +1,24 @@ +# IMixinMapTextureManager + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinMapTextureManager.java` + +**Author:** John200410 10/4/2023 + + + +## Overview + +`IMixinMapTextureManager` is a interface. + +## Methods + +### getMaps() + +```java + Int2ObjectMap getMaps() +``` + +**Returns:** `Int2ObjectMap`<`MapTextureManager.MapInstance`> + diff --git a/docs/api/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md b/docs/api/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md new file mode 100644 index 0000000..1057d02 --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md @@ -0,0 +1,30 @@ +# IMixinMultiBufferSource$BufferSource + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.java` + +**Author:** John200410 6/13/2024 + + + +## Overview + +`IMixinMultiBufferSource$BufferSource` is a interface. + +## Methods + +### getSharedBuffer() + +```java + ByteBufferBuilder getSharedBuffer() +``` + +**Returns:** `ByteBufferBuilder` + +### setSharedBuffer() + +```java + void setSharedBuffer(ByteBufferBuilder sharedBuffer) +``` + diff --git a/docs/api/client/api/accessors/render/IMixinPoseStack.md b/docs/api/client/api/accessors/render/IMixinPoseStack.md new file mode 100644 index 0000000..e2eb9d3 --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinPoseStack.md @@ -0,0 +1,30 @@ +# IMixinPoseStack + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinPoseStack.java` + +**Author:** John200410 8/30/2023 + + + +## Overview + +`IMixinPoseStack` is a interface. + +## Methods + +### getPoseStack() + +```java + List getPoseStack() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`PoseStack.Pose`> + +### setPoseStack() + +```java + void setPoseStack(List poseStack) +``` + diff --git a/docs/api/client/api/accessors/render/IMixinRenderType.md b/docs/api/client/api/accessors/render/IMixinRenderType.md new file mode 100644 index 0000000..7175c5c --- /dev/null +++ b/docs/api/client/api/accessors/render/IMixinRenderType.md @@ -0,0 +1,24 @@ +# IMixinRenderType + +**Package:** `org.rusherhack.client.api.accessors.render` + +**Source:** `org/rusherhack/client/api/accessors/render/IMixinRenderType.java` + +**Author:** john@rusherhack.org 4/4/2026 + + + +## Overview + +`IMixinRenderType` is a interface. + +## Methods + +### getRenderSetup() + +```java + RenderSetup getRenderSetup() +``` + +**Returns:** `RenderSetup` + diff --git a/docs/api/client/api/accessors/world/IMixinBaseSpawner.md b/docs/api/client/api/accessors/world/IMixinBaseSpawner.md new file mode 100644 index 0000000..27186d1 --- /dev/null +++ b/docs/api/client/api/accessors/world/IMixinBaseSpawner.md @@ -0,0 +1,24 @@ +# IMixinBaseSpawner + +**Package:** `org.rusherhack.client.api.accessors.world` + +**Source:** `org/rusherhack/client/api/accessors/world/IMixinBaseSpawner.java` + +**Author:** historian + + + +## Overview + +`IMixinBaseSpawner` is a interface. + +## Methods + +### getSpawnDelay() + +```java + int getSpawnDelay() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/accessors/world/IMixinBeaconBlockEntity.md b/docs/api/client/api/accessors/world/IMixinBeaconBlockEntity.md new file mode 100644 index 0000000..e3923ff --- /dev/null +++ b/docs/api/client/api/accessors/world/IMixinBeaconBlockEntity.md @@ -0,0 +1,24 @@ +# IMixinBeaconBlockEntity + +**Package:** `org.rusherhack.client.api.accessors.world` + +**Source:** `org/rusherhack/client/api/accessors/world/IMixinBeaconBlockEntity.java` + +**Author:** historian + + + +## Overview + +`IMixinBeaconBlockEntity` is a interface. + +## Methods + +### getLevels() + +```java + int getLevels() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/accessors/world/IMixinBucketItem.md b/docs/api/client/api/accessors/world/IMixinBucketItem.md new file mode 100644 index 0000000..c334661 --- /dev/null +++ b/docs/api/client/api/accessors/world/IMixinBucketItem.md @@ -0,0 +1,24 @@ +# IMixinBucketItem + +**Package:** `org.rusherhack.client.api.accessors.world` + +**Source:** `org/rusherhack/client/api/accessors/world/IMixinBucketItem.java` + +**Author:** John200410 7/16/2023 + + + +## Overview + +`IMixinBucketItem` is a interface. + +## Methods + +### getContent() + +```java + Fluid getContent() +``` + +**Returns:** `Fluid` + diff --git a/docs/api/client/api/accessors/world/IMixinClientChunkCache.md b/docs/api/client/api/accessors/world/IMixinClientChunkCache.md new file mode 100644 index 0000000..a6e21a8 --- /dev/null +++ b/docs/api/client/api/accessors/world/IMixinClientChunkCache.md @@ -0,0 +1,24 @@ +# IMixinClientChunkCache + +**Package:** `org.rusherhack.client.api.accessors.world` + +**Source:** `org/rusherhack/client/api/accessors/world/IMixinClientChunkCache.java` + +**Author:** John200410 7/16/2023 + + + +## Overview + +`IMixinClientChunkCache` is a interface. + +## Methods + +### getStorage() + +```java + ClientChunkCache.Storage getStorage() +``` + +**Returns:** `ClientChunkCache.Storage` + diff --git a/docs/api/client/api/accessors/world/IMixinClientLevel.md b/docs/api/client/api/accessors/world/IMixinClientLevel.md new file mode 100644 index 0000000..1b41009 --- /dev/null +++ b/docs/api/client/api/accessors/world/IMixinClientLevel.md @@ -0,0 +1,24 @@ +# IMixinClientLevel + +**Package:** `org.rusherhack.client.api.accessors.world` + +**Source:** `org/rusherhack/client/api/accessors/world/IMixinClientLevel.java` + +**Author:** historian + + + +## Overview + +`IMixinClientLevel` is a interface. + +## Methods + +### invokeGetBlockStatePredictionHandler() + +```java + BlockStatePredictionHandler invokeGetBlockStatePredictionHandler() +``` + +**Returns:** `BlockStatePredictionHandler` + diff --git a/docs/api/client/api/accessors/world/IMixinInstrumentItem.md b/docs/api/client/api/accessors/world/IMixinInstrumentItem.md new file mode 100644 index 0000000..ba091a7 --- /dev/null +++ b/docs/api/client/api/accessors/world/IMixinInstrumentItem.md @@ -0,0 +1,24 @@ +# IMixinInstrumentItem + +**Package:** `org.rusherhack.client.api.accessors.world` + +**Source:** `org/rusherhack/client/api/accessors/world/IMixinInstrumentItem.java` + +**Author:** historian + + + +## Overview + +`IMixinInstrumentItem` is a interface. + +## Methods + +### invokeGetInstrument() + +```java + Optional> invokeGetInstrument(ItemStack stack, HolderLookup.Provider arg2) +``` + +**Returns:** [Optional](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Optional.html)<`? extends Holder`<`Instrument`>> + diff --git a/docs/api/client/api/accessors/world/IMixinLevel.md b/docs/api/client/api/accessors/world/IMixinLevel.md new file mode 100644 index 0000000..0bc54df --- /dev/null +++ b/docs/api/client/api/accessors/world/IMixinLevel.md @@ -0,0 +1,40 @@ +# IMixinLevel + +**Package:** `org.rusherhack.client.api.accessors.world` + +**Source:** `org/rusherhack/client/api/accessors/world/IMixinLevel.java` + +**Author:** John200410 6/18/2023 + + + +## Overview + +`IMixinLevel` is a interface. + +## Methods + +### getRainLevel() + +```java + float getRainLevel() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getThunderLevel() + +```java + float getThunderLevel() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getEntities() + +```java + LevelEntityGetter getEntities() +``` + +**Returns:** `LevelEntityGetter`<`Entity`> + diff --git a/docs/api/client/api/accessors/world/IMixinPalettedContainer.md b/docs/api/client/api/accessors/world/IMixinPalettedContainer.md new file mode 100644 index 0000000..c324717 --- /dev/null +++ b/docs/api/client/api/accessors/world/IMixinPalettedContainer.md @@ -0,0 +1,24 @@ +# IMixinPalettedContainer + +**Package:** `org.rusherhack.client.api.accessors.world` + +**Source:** `org/rusherhack/client/api/accessors/world/IMixinPalettedContainer.java` + +**Author:** John200410 12/11/2023 + + + +## Overview + +`IMixinPalettedContainer` is a interface. + +## Methods + +### getData() + +```java + PalettedContainer.Data getData() +``` + +**Returns:** `PalettedContainer.Data`<`?`> + diff --git a/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md b/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md new file mode 100644 index 0000000..e69d2e2 --- /dev/null +++ b/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md @@ -0,0 +1,24 @@ +# IMixinShapedRecipe + +**Package:** `org.rusherhack.client.api.accessors.world.item.crafting` + +**Source:** `org/rusherhack/client/api/accessors/world/item/crafting/IMixinShapedRecipe.java` + +**Author:** john@rusherhack.org 6/12/2025 + + + +## Overview + +`IMixinShapedRecipe` is a interface. + +## Methods + +### getPattern() + +```java + ShapedRecipePattern getPattern() +``` + +**Returns:** `ShapedRecipePattern` + diff --git a/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md b/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md new file mode 100644 index 0000000..9978489 --- /dev/null +++ b/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md @@ -0,0 +1,24 @@ +# IMixinShapedRecipePattern + +**Package:** `org.rusherhack.client.api.accessors.world.item.crafting` + +**Source:** `org/rusherhack/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.java` + +**Author:** john@rusherhack.org 6/12/2025 + + + +## Overview + +`IMixinShapedRecipePattern` is a interface. + +## Methods + +### getData() + +```java + Optional getData() +``` + +**Returns:** [Optional](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Optional.html)<`ShapedRecipePattern.Data`> + diff --git a/docs/api/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md b/docs/api/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md new file mode 100644 index 0000000..2654ba1 --- /dev/null +++ b/docs/api/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md @@ -0,0 +1,24 @@ +# IMixinShapelessRecipe + +**Package:** `org.rusherhack.client.api.accessors.world.item.crafting` + +**Source:** `org/rusherhack/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.java` + +**Author:** john@rusherhack.org 6/12/2025 + + + +## Overview + +`IMixinShapelessRecipe` is a interface. + +## Methods + +### getIngredients() + +```java + List getIngredients() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Ingredient`> + diff --git a/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootPool.md b/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootPool.md new file mode 100644 index 0000000..1a8e671 --- /dev/null +++ b/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootPool.md @@ -0,0 +1,32 @@ +# IMixinLootPool + +**Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot` + +**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/IMixinLootPool.java` + +**Author:** john@rusherhack.org 6/3/2025 + + + +## Overview + +`IMixinLootPool` is a interface. + +## Methods + +### getEntries() + +```java + List getEntries() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`LootPoolEntryContainer`> + +### getConditions() + +```java + List getConditions() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`LootItemCondition`> + diff --git a/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md b/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md new file mode 100644 index 0000000..a24c77c --- /dev/null +++ b/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md @@ -0,0 +1,32 @@ +# IMixinLootTable$Builder + +**Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot` + +**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.java` + +**Author:** john@rusherhack.org 6/3/2025 + + + +## Overview + +`IMixinLootTable$Builder` is a interface. + +## Methods + +### getPools() + +```java + ImmutableList.Builder getPools() +``` + +**Returns:** `ImmutableList.Builder`<`LootPool`> + +### getFunctions() + +```java + ImmutableList.Builder getFunctions() +``` + +**Returns:** `ImmutableList.Builder`<`LootItemFunction`> + diff --git a/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md b/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md new file mode 100644 index 0000000..8afef70 --- /dev/null +++ b/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md @@ -0,0 +1,24 @@ +# IMixinCompositeEntryBase + +**Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.entries` + +**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.java` + +**Author:** john@rusherhack.org 6/3/2025 + + + +## Overview + +`IMixinCompositeEntryBase` is a interface. + +## Methods + +### getChildren() + +```java + List getChildren() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`LootPoolEntryContainer`> + diff --git a/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md b/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md new file mode 100644 index 0000000..7ac341e --- /dev/null +++ b/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md @@ -0,0 +1,24 @@ +# IMixinLootPoolEntryContainer + +**Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.entries` + +**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.java` + +**Author:** john@rusherhack.org 6/3/2025 + + + +## Overview + +`IMixinLootPoolEntryContainer` is a interface. + +## Methods + +### getConditions() + +```java + List getConditions() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`LootItemCondition`> + diff --git a/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md b/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md new file mode 100644 index 0000000..d1cb390 --- /dev/null +++ b/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md @@ -0,0 +1,24 @@ +# IMixinLootPoolSingletonContainer + +**Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.entries` + +**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.java` + +**Author:** john@rusherhack.org 6/3/2025 + + + +## Overview + +`IMixinLootPoolSingletonContainer` is a interface. + +## Methods + +### getFunctions() + +```java + List getFunctions() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`LootItemFunction`> + diff --git a/docs/api/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md b/docs/api/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md new file mode 100644 index 0000000..4a6661a --- /dev/null +++ b/docs/api/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md @@ -0,0 +1,24 @@ +# IMixinApplyBonusCount + +**Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.functions` + +**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.java` + +**Author:** john@rusherhack.org 6/3/2025 + + + +## Overview + +`IMixinApplyBonusCount` is a interface. + +## Methods + +### getEnchantment() + +```java + Holder getEnchantment() +``` + +**Returns:** `Holder`<`Enchantment`> + diff --git a/docs/api/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md b/docs/api/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md new file mode 100644 index 0000000..4fdc1fd --- /dev/null +++ b/docs/api/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md @@ -0,0 +1,24 @@ +# IMixinCompositeLootItemCondition + +**Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.predicates` + +**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.java` + +**Author:** john@rusherhack.org 6/3/2025 + + + +## Overview + +`IMixinCompositeLootItemCondition` is a interface. + +## Methods + +### getTerms() + +```java + List getTerms() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`LootItemCondition`> + diff --git a/docs/api/client/api/bind/IBindManager.md b/docs/api/client/api/bind/IBindManager.md new file mode 100644 index 0000000..48abee7 --- /dev/null +++ b/docs/api/client/api/bind/IBindManager.md @@ -0,0 +1,107 @@ +# IBindManager + +**Package:** `org.rusherhack.client.api.bind` + +**Source:** `org/rusherhack/client/api/bind/IBindManager.java` + +**Author:** John200410 10/24/2023 + + + +## Overview + +`IBindManager` is a interface. + +## Methods + +### register() + +```java +default void register(IBindable bindable) +``` + +### register() + +```java + void register(IBindable bindable, IKey key) +``` + +### unregister() + +```java + void unregister(IBindable bindable) +``` + +### setBind() + +```java + void setBind(IBindable bindable, IKey key) +``` + +### setBind() + +```java + void setBind(String bindableName, IKey key) +``` + +### getBind() + +```java + IKey getBind(IBindable bindable) +``` + +**Returns:** [IKey](/core/bind/key/IKey.md) + +### getBindRegistry() + +```java + Object2ObjectMap getBindRegistry() +``` + +**Returns:** `Object2ObjectMap`<[IBindable](/core/bind/IBindable.md), [IKey](/core/bind/key/IKey.md)> + +### parseKey() + +```java + IKey parseKey(String key) +``` + +Creates a key object from the specified key string +* **Returns**: the key + + + +**Returns:** [IKey](/core/bind/key/IKey.md) + +### createKeyboardKey() + +```java + IKey createKeyboardKey(int keyCode) +``` + +Creates a new keyboard key from the specified glfw key code +* **Parameter `keyCode`**: the glfw key code + + +**Returns**: the key object + + + +**Returns:** [IKey](/core/bind/key/IKey.md) + +### createMouseKey() + +```java + IKey createMouseKey(int keyCode) +``` + +Creates a new mouse key from the specified glfw key code +* **Parameter `keyCode`**: the glfw key code + + +**Returns**: the key object + + + +**Returns:** [IKey](/core/bind/key/IKey.md) + diff --git a/docs/api/client/api/bind/key/GLFWConstants.md b/docs/api/client/api/bind/key/GLFWConstants.md new file mode 100644 index 0000000..563640d --- /dev/null +++ b/docs/api/client/api/bind/key/GLFWConstants.md @@ -0,0 +1,68 @@ +# GLFWConstants + +**Package:** `org.rusherhack.client.api.bind.key` + +**Source:** `org/rusherhack/client/api/bind/key/GLFWConstants.java` + +**Author:** John200410 1/25/2023 + + + +## Overview + +`GLFWConstants` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| KEYBOARD_MAP | `Int2ObjectMap`<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[]> | public static final | +| MOUSE_MAP | `Int2ObjectMap`<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[]> | public static final | +| GAMEPAD_MAP | `Int2ObjectMap`<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[]> | public static final | +| KEYBOARD_PREFIX | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | +| MOUSE_PREFIX | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | +| GAMEPAD_PREFIX | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | + + +## Methods + +### fromLabel() + +```java +public static IKey fromLabel(String label) +``` + +**Returns:** [IKey](/core/bind/key/IKey.md) + +### getKeyboardKey() + +```java +public static int getKeyboardKey(String key) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getKeyboardKeyString() + +```java +public static String getKeyboardKeyString(int key, boolean prefix) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getMouseKey() + +```java +public static int getMouseKey(String key) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getMouseKeyString() + +```java +public static String getMouseKeyString(int key, boolean prefix) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/bind/key/GLFWKey.md b/docs/api/client/api/bind/key/GLFWKey.md new file mode 100644 index 0000000..ad65ab5 --- /dev/null +++ b/docs/api/client/api/bind/key/GLFWKey.md @@ -0,0 +1,59 @@ +# GLFWKey + +**Package:** `org.rusherhack.client.api.bind.key` + +**Source:** `org/rusherhack/client/api/bind/key/GLFWKey.java` + +GLFW key implementation +* **Author:** John200410 1/16/2023 + + + +## Overview + +`GLFWKey` is a class and implements [IKey](/core/bind/key/IKey.md). + +## Constructor + +```java +public GLFWKey(int keyCode, int scanCode) +``` + +```java +public GLFWKey(int scanCode) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| keyCode | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| scanCode | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | + + +## Methods + +### getKeyCode() + +```java +public int getKeyCode() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getScanCode() + +```java +public int getScanCode() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### toKeyEvent() + +```java +public KeyEvent toKeyEvent() +``` + +**Returns:** `KeyEvent` + diff --git a/docs/api/client/api/bind/key/KeyboardKey.md b/docs/api/client/api/bind/key/KeyboardKey.md new file mode 100644 index 0000000..93d26e4 --- /dev/null +++ b/docs/api/client/api/bind/key/KeyboardKey.md @@ -0,0 +1,62 @@ +# KeyboardKey + +**Package:** `org.rusherhack.client.api.bind.key` + +**Source:** `org/rusherhack/client/api/bind/key/KeyboardKey.java` + +**Author:** John200410 1/16/2023 + + + +## Overview + +`KeyboardKey` is a class that extends [GLFWKey](/client/api/bind/key/GLFWKey.md). + +## Constructor + +```java +public KeyboardKey(int keyCode) +``` + +## Methods + +### isKeyDown() + +```java +public boolean isKeyDown() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getLabel() + +```java +public String getLabel(boolean includePrefix) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### equals() + +```java +public boolean equals(Object obj) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### hashCode() + +```java +public int hashCode() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getDisplayLabel() + +```java +public String getDisplayLabel() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/bind/key/MouseKey.md b/docs/api/client/api/bind/key/MouseKey.md new file mode 100644 index 0000000..c2e4223 --- /dev/null +++ b/docs/api/client/api/bind/key/MouseKey.md @@ -0,0 +1,62 @@ +# MouseKey + +**Package:** `org.rusherhack.client.api.bind.key` + +**Source:** `org/rusherhack/client/api/bind/key/MouseKey.java` + +**Author:** John200410 1/16/2023 + + + +## Overview + +`MouseKey` is a class that extends [GLFWKey](/client/api/bind/key/GLFWKey.md). + +## Constructor + +```java +public MouseKey(int keyCode) +``` + +## Methods + +### isKeyDown() + +```java +public boolean isKeyDown() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getLabel() + +```java +public String getLabel(boolean includePrefix) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### equals() + +```java +public boolean equals(Object obj) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### hashCode() + +```java +public int hashCode() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getDisplayLabel() + +```java +public String getDisplayLabel() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/config/Configuration.md b/docs/api/client/api/config/Configuration.md new file mode 100644 index 0000000..bc44518 --- /dev/null +++ b/docs/api/client/api/config/Configuration.md @@ -0,0 +1,89 @@ +# Configuration + +**Package:** `org.rusherhack.client.api.config` + +**Source:** `org/rusherhack/client/api/config/Configuration.java` + +Utility class for serializing and deserializing objects to and from disk. +* NOTE: alot of config related stuff is scheduled to change in rusherhack v2.1 +* **Author:** John200410 1/24/2023 + + + +## Overview + +`Configuration` is a class and implements [INamed](/core/interfaces/INamed.md). + +## Constructor + +```java +public Configuration(File file) +``` + +```java +public Configuration(String name, File file) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| CONFIG_DIRECTORY | [Path](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/Path.html) | public static final | +| logger | [ILogger](/core/logging/ILogger.md) | public final | +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| file | [File](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/File.html) | private final | +| loadPriority | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | protected | + + +## Methods + +### write() + +```java +public abstract void write(ISerializable serializable) +``` + +### read() + +```java +public abstract void read(ISerializable serializable) +``` + +### getFile() + +```java +public File getFile() +``` + +**Returns:** [File](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/File.html) + +### createTempFile() + +```java +protected File createTempFile() +``` + +**Returns:** [File](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/File.html) + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setLoadPriority() + +```java +public void setLoadPriority(int loadPriority) +``` + +### getLoadPriority() + +```java +public int getLoadPriority() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/config/JsonConfiguration.md b/docs/api/client/api/config/JsonConfiguration.md new file mode 100644 index 0000000..5871214 --- /dev/null +++ b/docs/api/client/api/config/JsonConfiguration.md @@ -0,0 +1,61 @@ +# JsonConfiguration + +**Package:** `org.rusherhack.client.api.config` + +**Source:** `org/rusherhack/client/api/config/JsonConfiguration.java` + +**Author:** John200410 1/24/2023 + + + +## Overview + +`JsonConfiguration` is a class that extends [Configuration](/client/api/config/Configuration.md). + +## Constructor + +```java +public JsonConfiguration(String name, File file) +``` + +```java +public JsonConfiguration(File file) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| GSON | `Gson` | public static final | + + +## Methods + +### createConfiguration() + +```java +public static JsonConfiguration createConfiguration(String name) +``` + +**Returns:** [JsonConfiguration](/client/api/config/JsonConfiguration.md) + +### createConfiguration() + +```java +public static JsonConfiguration createConfiguration(String parentDirectory, String name) +``` + +**Returns:** [JsonConfiguration](/client/api/config/JsonConfiguration.md) + +### write() + +```java +public void write(ISerializable serializable) +``` + +### read() + +```java +public void read(ISerializable serializable) +``` + diff --git a/docs/api/client/api/config/TextConfiguration.md b/docs/api/client/api/config/TextConfiguration.md new file mode 100644 index 0000000..479c7bd --- /dev/null +++ b/docs/api/client/api/config/TextConfiguration.md @@ -0,0 +1,69 @@ +# TextConfiguration + +**Package:** `org.rusherhack.client.api.config` + +**Source:** `org/rusherhack/client/api/config/TextConfiguration.java` + +**Author:** John200410 7/6/2023 + + + +## Overview + +`TextConfiguration` is a class that extends [Configuration](/client/api/config/Configuration.md). + +## Constructor + +```java +public TextConfiguration(String name, File file) +``` + +```java +public TextConfiguration(File file) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| newLines | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### createConfiguration() + +```java +public static TextConfiguration createConfiguration(String name) +``` + +**Returns:** [TextConfiguration](/client/api/config/TextConfiguration.md) + +### createConfiguration() + +```java +public static TextConfiguration createConfiguration(String parentDirectory, String name) +``` + +**Returns:** [TextConfiguration](/client/api/config/TextConfiguration.md) + +### write() + +```java +public void write(ISerializable serializable) +``` + +### read() + +```java +public void read(ISerializable serializable) +``` + +### allowNewLines() + +```java +public TextConfiguration allowNewLines() +``` + +**Returns:** [TextConfiguration](/client/api/config/TextConfiguration.md) + diff --git a/docs/api/client/api/events/client/EventQuit.md b/docs/api/client/api/events/client/EventQuit.md new file mode 100644 index 0000000..07f28f5 --- /dev/null +++ b/docs/api/client/api/events/client/EventQuit.md @@ -0,0 +1,60 @@ +# EventQuit + +**Package:** `org.rusherhack.client.api.events.client` + +**Source:** `org/rusherhack/client/api/events/client/EventQuit.java` + +This event is called when the player quits the game, or disconnects from the server. +* **Author:** John200410 7/5/2023 + + + +## Overview + +`EventQuit` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventQuit(Reason reason) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| reason | [Reason](/client/api/events/client/Reason.md) | private final | + + +## Methods + +### getReason() + +```java +public Reason getReason() +``` + +**Returns:** [Reason](/client/api/events/client/Reason.md) + +### getStage() + +```java +public Stage getStage() +``` + +`Stage`#PRE - called when a quit is requested, cancellable + + + +`Stage`#POST - called after a quit happens, not cancellable + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/client/EventTimerSpeed.md b/docs/api/client/api/events/client/EventTimerSpeed.md new file mode 100644 index 0000000..c8eb8a3 --- /dev/null +++ b/docs/api/client/api/events/client/EventTimerSpeed.md @@ -0,0 +1,59 @@ +# EventTimerSpeed + +**Package:** `org.rusherhack.client.api.events.client` + +**Source:** `org/rusherhack/client/api/events/client/EventTimerSpeed.java` + +This event is used to modify the game's timer speed. +* **Author:** John200410 7/8/2023 + + + +## Overview + +`EventTimerSpeed` is a class that extends `Event`. + +## Constructor + +```java +public EventTimerSpeed(float speed) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| overrideTimer | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| speed | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private | + + +## Methods + +### getSpeed() + +```java +public float getSpeed() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setSpeed() + +```java +public void setSpeed(float speed) +``` + +### shouldOverrideTimer() + +```java +public boolean shouldOverrideTimer() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setOverrideTimer() + +```java +public void setOverrideTimer(boolean overrideTimer) +``` + diff --git a/docs/api/client/api/events/client/EventUpdate.md b/docs/api/client/api/events/client/EventUpdate.md new file mode 100644 index 0000000..2004cb8 --- /dev/null +++ b/docs/api/client/api/events/client/EventUpdate.md @@ -0,0 +1,35 @@ +# EventUpdate + +**Package:** `org.rusherhack.client.api.events.client` + +**Source:** `org/rusherhack/client/api/events/client/EventUpdate.java` + +This event is called every game tick +* **Author:** John200410 1/5/2023 + + + +## Overview + +`EventUpdate` is a class that extends `Event`. + +## Methods + +### getStage() + +```java +public Stage getStage() +``` + +`Stage`#PRE - called at the start of the game tick + + + +`Stage`#ON - called at the start of the local player tick + + + +`Stage`#POST - called at the end of the game tick + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/client/Reason.md b/docs/api/client/api/events/client/Reason.md new file mode 100644 index 0000000..41c84eb --- /dev/null +++ b/docs/api/client/api/events/client/Reason.md @@ -0,0 +1,16 @@ +# Reason + +**Package:** `org.rusherhack.client.api.events.client` + +**Source:** `org/rusherhack/client/api/events/client/EventQuit.java` + +## Overview + +`Reason` is a enum. + +## Constants + +### GAME_QUIT + +### DISCONNECT + diff --git a/docs/api/client/api/events/client/chat/EventAddChat.md b/docs/api/client/api/events/client/chat/EventAddChat.md new file mode 100644 index 0000000..fd4cf9e --- /dev/null +++ b/docs/api/client/api/events/client/chat/EventAddChat.md @@ -0,0 +1,43 @@ +# EventAddChat + +**Package:** `org.rusherhack.client.api.events.client.chat` + +**Source:** `org/rusherhack/client/api/events/client/chat/EventAddChat.java` + +**Author:** John200410 7/26/2023 + + + +## Overview + +`EventAddChat` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventAddChat(Component chatComponent) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| chatComponent | `Component` | private | + + +## Methods + +### getChatComponent() + +```java +public Component getChatComponent() +``` + +**Returns:** `Component` + +### setChatComponent() + +```java +public void setChatComponent(Component chatComponent) +``` + diff --git a/docs/api/client/api/events/client/chat/EventChatCommand.md b/docs/api/client/api/events/client/chat/EventChatCommand.md new file mode 100644 index 0000000..39d6d90 --- /dev/null +++ b/docs/api/client/api/events/client/chat/EventChatCommand.md @@ -0,0 +1,43 @@ +# EventChatCommand + +**Package:** `org.rusherhack.client.api.events.client.chat` + +**Source:** `org/rusherhack/client/api/events/client/chat/EventChatCommand.java` + +**Author:** john@rusherhack.org 1/7/2026 + + + +## Overview + +`EventChatCommand` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventChatCommand(String command) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| command | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | + + +## Methods + +### getCommand() + +```java +public String getCommand() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setCommand() + +```java +public void setCommand(String command) +``` + diff --git a/docs/api/client/api/events/client/chat/EventChatMessage.md b/docs/api/client/api/events/client/chat/EventChatMessage.md new file mode 100644 index 0000000..912897b --- /dev/null +++ b/docs/api/client/api/events/client/chat/EventChatMessage.md @@ -0,0 +1,43 @@ +# EventChatMessage + +**Package:** `org.rusherhack.client.api.events.client.chat` + +**Source:** `org/rusherhack/client/api/events/client/chat/EventChatMessage.java` + +**Author:** John200410 12/16/2022 + + + +## Overview + +`EventChatMessage` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventChatMessage(String message) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| message | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | + + +## Methods + +### getMessage() + +```java +public String getMessage() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setMessage() + +```java +public void setMessage(String message) +``` + diff --git a/docs/api/client/api/events/client/input/EventInputTick.md b/docs/api/client/api/events/client/input/EventInputTick.md new file mode 100644 index 0000000..0c1c505 --- /dev/null +++ b/docs/api/client/api/events/client/input/EventInputTick.md @@ -0,0 +1,56 @@ +# EventInputTick + +**Package:** `org.rusherhack.client.api.events.client.input` + +**Source:** `org/rusherhack/client/api/events/client/input/EventInputTick.java` + +Event is when the local player's input is being updated +* **Author:** John200410 7/8/2023 + + + +## Overview + +`EventInputTick` is a class that extends `Event`. + +## Constructor + +```java +public EventInputTick(PlayerInput.Builder input) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| input | `PlayerInput.Builder` | private final | + + +## Methods + +### getInput() + +```java +public PlayerInput.Builder getInput() +``` + +**Returns:** `PlayerInput.Builder` + +### getStage() + +```java +public Stage getStage() +``` + +ON, POST + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/client/input/EventKeyboard.md b/docs/api/client/api/events/client/input/EventKeyboard.md new file mode 100644 index 0000000..2084306 --- /dev/null +++ b/docs/api/client/api/events/client/input/EventKeyboard.md @@ -0,0 +1,96 @@ +# EventKeyboard + +**Package:** `org.rusherhack.client.api.events.client.input` + +**Source:** `org/rusherhack/client/api/events/client/input/EventKeyboard.java` + +This event is called during keyboard updates +* +@see [GLFW Keyboard input documentation](https://www.glfw.org/docs/3.3/input_guide.html#input_keyboard)**Author:** John200410 1/16/2023 + + + +## Overview + +`EventKeyboard` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventKeyboard(int key, int scanCode, int action, int modifiers) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| key | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| scanCode | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| action | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| modifiers | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | + + +## Methods + +### getStage() + +```java +public Stage getStage() +``` + +`Stage`#PRE - called before the key is processed + + + +`Stage`#ON - called before the key is pressed, but only while there is no gui screen open + + + +`Stage`#POST - called after the key is processed + +**Returns:** `Stage` + +### getKey() + +```java +public int getKey() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getScanCode() + +```java +public int getScanCode() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getAction() + +```java +public int getAction() +``` + +**Returns**: { + +@link org.lwjgl.glfw.GLFW#GLFW_PRESS} + + + +`org.lwjgl.glfw.GLFW`#GLFW_RELEASE + + + +`org.lwjgl.glfw.GLFW`#GLFW_REPEAT + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getModifiers() + +```java +public int getModifiers() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/events/client/input/EventMouse.md b/docs/api/client/api/events/client/input/EventMouse.md new file mode 100644 index 0000000..3cb9f99 --- /dev/null +++ b/docs/api/client/api/events/client/input/EventMouse.md @@ -0,0 +1,48 @@ +# EventMouse + +**Package:** `org.rusherhack.client.api.events.client.input` + +**Source:** `org/rusherhack/client/api/events/client/input/EventMouse.java` + +Class containing mouse-related update events +* +@see [GLFW Mouse input documentation](https://www.glfw.org/docs/3.3/input_guide.html#input_mouse)**Author:** John200410 1/16/2023 + + + +## Overview + +`EventMouse` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventMouse(double xPos, double yPos) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| xPos | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| yPos | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | + + +## Methods + +### getMouseX() + +```java +public double getMouseX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getMouseY() + +```java +public double getMouseY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/events/client/input/Key.md b/docs/api/client/api/events/client/input/Key.md new file mode 100644 index 0000000..09992bb --- /dev/null +++ b/docs/api/client/api/events/client/input/Key.md @@ -0,0 +1,79 @@ +# Key + +**Package:** `org.rusherhack.client.api.events.client.input` + +**Source:** `org/rusherhack/client/api/events/client/input/EventMouse.java` + +This event is called when a mouse button is pressed or released + +## Overview + +`Key` is a class that extends [EventMouse](/client/api/events/client/input/EventMouse.md). + +## Constructor + +```java +public Key(int button, int action, int modifiers) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| button | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| action | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| modifiers | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | + + +## Methods + +### getButton() + +```java +public int getButton() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getAction() + +```java +public int getAction() +``` + +**Returns**: { + +@link org.lwjgl.glfw.GLFW#GLFW_PRESS} + + + +`org.lwjgl.glfw.GLFW`#GLFW_RELEASE + + + +`org.lwjgl.glfw.GLFW`#GLFW_REPEAT + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getModifiers() + +```java +public int getModifiers() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getStage() + +```java +public Stage getStage() +``` + +`Stage`#PRE - called before the key is processed + + + +`Stage`#ON - called before the key is pressed, but only while there is no gui screen open + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/client/input/Move.md b/docs/api/client/api/events/client/input/Move.md new file mode 100644 index 0000000..1852d74 --- /dev/null +++ b/docs/api/client/api/events/client/input/Move.md @@ -0,0 +1,18 @@ +# Move + +**Package:** `org.rusherhack.client.api.events.client.input` + +**Source:** `org/rusherhack/client/api/events/client/input/EventMouse.java` + +This event is called when the mouse is moved + +## Overview + +`Move` is a class that extends [EventMouse](/client/api/events/client/input/EventMouse.md). + +## Constructor + +```java +public Move(double xPos, double yPos) +``` + diff --git a/docs/api/client/api/events/client/input/Scroll.md b/docs/api/client/api/events/client/input/Scroll.md new file mode 100644 index 0000000..44c31a8 --- /dev/null +++ b/docs/api/client/api/events/client/input/Scroll.md @@ -0,0 +1,52 @@ +# Scroll + +**Package:** `org.rusherhack.client.api.events.client.input` + +**Source:** `org/rusherhack/client/api/events/client/input/EventMouse.java` + +This event is called when the scroll wheel is used + +## Overview + +`Scroll` is a class that extends [EventMouse](/client/api/events/client/input/EventMouse.md). + +## Constructor + +```java +public Scroll(double xOffset, double yOffset) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| xOffset | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| yOffset | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | + + +## Methods + +### getScrollDeltaX() + +```java +public double getScrollDeltaX() +``` + +**Returns**: Horizontal scroll offset + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getScrollDeltaY() + +```java +public double getScrollDeltaY() +``` + +**Returns**: Vertical scroll offset + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/events/client/internal/EventNotification.md b/docs/api/client/api/events/client/internal/EventNotification.md new file mode 100644 index 0000000..b533438 --- /dev/null +++ b/docs/api/client/api/events/client/internal/EventNotification.md @@ -0,0 +1,84 @@ +# EventNotification + +**Package:** `org.rusherhack.client.api.events.client.internal` + +**Source:** `org/rusherhack/client/api/events/client/internal/EventNotification.java` + +This event gets called when a notification is being processed by the NotificationManager +* +@author John200410**Author:** historian + + + +## Overview + +`EventNotification` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventNotification(NotificationType type, Component text, boolean chat, boolean hud) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| type | [NotificationType](/core/notification/NotificationType.md) | private final | +| text | `Component` | private final | +| chat | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | +| hud | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | + + +## Methods + +### getType() + +```java +public NotificationType getType() +``` + +Get the type of the notification +* **Returns**: the type of the notification + + + +**Returns:** [NotificationType](/core/notification/NotificationType.md) + +### getText() + +```java +public Component getText() +``` + +Get the text of the notification +* **Returns**: the text of the notification + + + +**Returns:** `Component` + +### isChat() + +```java +public boolean isChat() +``` + +**Returns**: true if the notification will be sent to the chat + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isHud() + +```java +public boolean isHud() +``` + +**Returns**: true if the notification will be sent to the HUD + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/events/client/screen/BuildButtons.md b/docs/api/client/api/events/client/screen/BuildButtons.md new file mode 100644 index 0000000..6d24893 --- /dev/null +++ b/docs/api/client/api/events/client/screen/BuildButtons.md @@ -0,0 +1,53 @@ +# BuildButtons + +**Package:** `org.rusherhack.client.api.events.client.screen` + +**Source:** `org/rusherhack/client/api/events/client/screen/EventScreen.java` + +## Overview + +`BuildButtons` is a class that extends [EventScreen](/client/api/events/client/screen/EventScreen.md). + +## Constructor + +```java +public BuildButtons(Screen screen, List renderables) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| renderables | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Renderable`> | private final | + + +## Methods + +### getElements() + +```java +public List getElements() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Renderable`> + +### getStage() + +```java +public Stage getStage() +``` + +**Returns**: PRE or POST + + + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/client/screen/Change.md b/docs/api/client/api/events/client/screen/Change.md new file mode 100644 index 0000000..b2bb83f --- /dev/null +++ b/docs/api/client/api/events/client/screen/Change.md @@ -0,0 +1,68 @@ +# Change + +**Package:** `org.rusherhack.client.api.events.client.screen` + +**Source:** `org/rusherhack/client/api/events/client/screen/EventScreen.java` + +## Overview + +`Change` is a class that extends `EventCancellable`. + +## Constructor + +```java +public Change(Screen from, Screen to) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| from | `Screen` | private final | +| to | `Screen` | private | + + +## Methods + +### getFrom() + +```java +public Screen getFrom() +``` + +**Returns:** `Screen` + +### getTo() + +```java +public Screen getTo() +``` + +**Returns:** `Screen` + +### setScreen() + +```java +public void setScreen(Screen to) +``` + +### getStage() + +```java +public Stage getStage() +``` + +**Returns**: PRE + + + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/client/screen/EventResizeDisplay.md b/docs/api/client/api/events/client/screen/EventResizeDisplay.md new file mode 100644 index 0000000..ee97349 --- /dev/null +++ b/docs/api/client/api/events/client/screen/EventResizeDisplay.md @@ -0,0 +1,15 @@ +# EventResizeDisplay + +**Package:** `org.rusherhack.client.api.events.client.screen` + +**Source:** `org/rusherhack/client/api/events/client/screen/EventResizeDisplay.java` + +This event is called when the game window is being resized +* **Author:** John200410 12/28/2022 + + + +## Overview + +`EventResizeDisplay` is a class that extends `Event`. + diff --git a/docs/api/client/api/events/client/screen/EventScreen.md b/docs/api/client/api/events/client/screen/EventScreen.md new file mode 100644 index 0000000..3848dd5 --- /dev/null +++ b/docs/api/client/api/events/client/screen/EventScreen.md @@ -0,0 +1,37 @@ +# EventScreen + +**Package:** `org.rusherhack.client.api.events.client.screen` + +**Source:** `org/rusherhack/client/api/events/client/screen/EventScreen.java` + +**Author:** John200410 7/20/2023 + + + +## Overview + +`EventScreen` is a class that extends `Event`. + +## Constructor + +```java +public EventScreen(Screen screen) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| screen | `Screen` | private final | + + +## Methods + +### getScreen() + +```java +public Screen getScreen() +``` + +**Returns:** `Screen` + diff --git a/docs/api/client/api/events/client/screen/Initialize.md b/docs/api/client/api/events/client/screen/Initialize.md new file mode 100644 index 0000000..e90a942 --- /dev/null +++ b/docs/api/client/api/events/client/screen/Initialize.md @@ -0,0 +1,40 @@ +# Initialize + +**Package:** `org.rusherhack.client.api.events.client.screen` + +**Source:** `org/rusherhack/client/api/events/client/screen/EventScreen.java` + +This event is called when the screen is initialized + +## Overview + +`Initialize` is a class that extends [EventScreen](/client/api/events/client/screen/EventScreen.md). + +## Constructor + +```java +public Initialize(Screen screen) +``` + +## Methods + +### getStage() + +```java +public Stage getStage() +``` + +**Returns**: PRE or POST + + + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/internal/EventBaritoneControl.md b/docs/api/client/api/events/internal/EventBaritoneControl.md new file mode 100644 index 0000000..37446eb --- /dev/null +++ b/docs/api/client/api/events/internal/EventBaritoneControl.md @@ -0,0 +1,14 @@ +# EventBaritoneControl + +**Package:** `org.rusherhack.client.api.events.internal` + +**Source:** `org/rusherhack/client/api/events/internal/EventBaritoneControl.java` + +**Author:** John200410 8/18/2023 + + + +## Overview + +`EventBaritoneControl` is a class that extends `EventCancellable`. + diff --git a/docs/api/client/api/events/internal/EventCommand.md b/docs/api/client/api/events/internal/EventCommand.md new file mode 100644 index 0000000..d3b0255 --- /dev/null +++ b/docs/api/client/api/events/internal/EventCommand.md @@ -0,0 +1,70 @@ +# EventCommand + +**Package:** `org.rusherhack.client.api.events.internal` + +**Source:** `org/rusherhack/client/api/events/internal/EventCommand.java` + +**Author:** John200410 12/16/2022 + + + +## Overview + +`EventCommand` is a class that extends `Event`. + +## Constructor + +```java +public EventCommand(String input) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| input | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| output | `Component` | private | + + +## Methods + +### getInput() + +```java +public String getInput() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getOutput() + +```java +public String getOutput() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getOutputAsComponent() + +```java +public Component getOutputAsComponent() +``` + +**Returns:** `Component` + +### setOutput() + +```java +public void setOutput(Component output) +``` + +### getStage() + +```java +public Stage getStage() +``` + +ON - called before command is processed + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/internal/EventKeybindPress.md b/docs/api/client/api/events/internal/EventKeybindPress.md new file mode 100644 index 0000000..307d1a3 --- /dev/null +++ b/docs/api/client/api/events/internal/EventKeybindPress.md @@ -0,0 +1,62 @@ +# EventKeybindPress + +**Package:** `org.rusherhack.client.api.events.internal` + +**Source:** `org/rusherhack/client/api/events/internal/EventKeybindPress.java` + +**Author:** John200410 5/15/2023 + + + +## Overview + +`EventKeybindPress` is a class that extends `Event`. + +## Constructor + +```java +public EventKeybindPress(EventKeyboard event) +``` + +```java +public EventKeybindPress(EventMouse.Key event) +``` + +```java +public EventKeybindPress(Type type, int keyCode) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| type | [Type](/client/api/events/internal/Type.md) | private final | +| keyCode | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | + + +## Methods + +### getType() + +```java +public Type getType() +``` + +**Returns:** [Type](/client/api/events/internal/Type.md) + +### getKeyCode() + +```java +public int getKeyCode() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### doesMatch() + +```java +public boolean doesMatch(IKey key) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/events/internal/EventRusherHack.md b/docs/api/client/api/events/internal/EventRusherHack.md new file mode 100644 index 0000000..6006243 --- /dev/null +++ b/docs/api/client/api/events/internal/EventRusherHack.md @@ -0,0 +1,15 @@ +# EventRusherHack + +**Package:** `org.rusherhack.client.api.events.internal` + +**Source:** `org/rusherhack/client/api/events/internal/EventRusherHack.java` + +Class for RusherHack events +* **Author:** John200410 1/5/2023 + + + +## Overview + +`EventRusherHack` is a class that extends `Event`. + diff --git a/docs/api/client/api/events/internal/PostInit.md b/docs/api/client/api/events/internal/PostInit.md new file mode 100644 index 0000000..d6a5c7d --- /dev/null +++ b/docs/api/client/api/events/internal/PostInit.md @@ -0,0 +1,12 @@ +# PostInit + +**Package:** `org.rusherhack.client.api.events.internal` + +**Source:** `org/rusherhack/client/api/events/internal/EventRusherHack.java` + +Called after RusherHack is initialized + +## Overview + +`PostInit` is a class that extends [EventRusherHack](/client/api/events/internal/EventRusherHack.md). + diff --git a/docs/api/client/api/events/internal/Type.md b/docs/api/client/api/events/internal/Type.md new file mode 100644 index 0000000..2b97d25 --- /dev/null +++ b/docs/api/client/api/events/internal/Type.md @@ -0,0 +1,16 @@ +# Type + +**Package:** `org.rusherhack.client.api.events.internal` + +**Source:** `org/rusherhack/client/api/events/internal/EventKeybindPress.java` + +## Overview + +`Type` is a enum. + +## Constants + +### KEYBOARD + +### MOUSE + diff --git a/docs/api/client/api/events/internal/Unload.md b/docs/api/client/api/events/internal/Unload.md new file mode 100644 index 0000000..db12b77 --- /dev/null +++ b/docs/api/client/api/events/internal/Unload.md @@ -0,0 +1,10 @@ +# Unload + +**Package:** `org.rusherhack.client.api.events.internal` + +**Source:** `org/rusherhack/client/api/events/internal/EventRusherHack.java` + +## Overview + +`Unload` is a class that extends [EventRusherHack](/client/api/events/internal/EventRusherHack.md). + diff --git a/docs/api/client/api/events/network/Action.md b/docs/api/client/api/events/network/Action.md new file mode 100644 index 0000000..263bb3e --- /dev/null +++ b/docs/api/client/api/events/network/Action.md @@ -0,0 +1,16 @@ +# Action + +**Package:** `org.rusherhack.client.api.events.network` + +**Source:** `org/rusherhack/client/api/events/network/EventPlayerConnection.java` + +## Overview + +`Action` is a enum. + +## Constants + +### JOIN + +### LEAVE + diff --git a/docs/api/client/api/events/network/EventPacket.md b/docs/api/client/api/events/network/EventPacket.md new file mode 100644 index 0000000..401f394 --- /dev/null +++ b/docs/api/client/api/events/network/EventPacket.md @@ -0,0 +1,45 @@ +# EventPacket + +**Package:** `org.rusherhack.client.api.events.network` + +**Source:** `org/rusherhack/client/api/events/network/EventPacket.java` + +**Author:** John200410 6/2/2023 + + + +## Overview + +`EventPacket` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventPacket(Packet packet) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| packet | `Packet`<`?`> | private final | + + +## Methods + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + +### getPacket() + +```java +public Packet getPacket() +``` + +**Returns:** `Packet`<`?`> + diff --git a/docs/api/client/api/events/network/EventPlayerConnection.md b/docs/api/client/api/events/network/EventPlayerConnection.md new file mode 100644 index 0000000..a152679 --- /dev/null +++ b/docs/api/client/api/events/network/EventPlayerConnection.md @@ -0,0 +1,65 @@ +# EventPlayerConnection + +**Package:** `org.rusherhack.client.api.events.network` + +**Source:** `org/rusherhack/client/api/events/network/EventPlayerConnection.java` + +This event is called when a player joins/leaves the server. +* **Author:** John200410 8/24/2023 + + + +## Overview + +`EventPlayerConnection` is a class that extends `Event`. + +## Constructor + +```java +public EventPlayerConnection(Action action, UUID uuid, String name, PlayerInfo playerInfo) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| action | [Action](/client/api/events/network/Action.md) | private final | +| uuid | [UUID](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html) | private final | +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| playerInfo | `PlayerInfo` | private final | + + +## Methods + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getUUID() + +```java +public UUID getUUID() +``` + +**Returns:** [UUID](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html) + +### getAction() + +```java +public Action getAction() +``` + +**Returns:** [Action](/client/api/events/network/Action.md) + +### getPlayerInfo() + +```java +public PlayerInfo getPlayerInfo() +``` + +**Returns:** `PlayerInfo` + diff --git a/docs/api/client/api/events/network/Receive.md b/docs/api/client/api/events/network/Receive.md new file mode 100644 index 0000000..87edd4d --- /dev/null +++ b/docs/api/client/api/events/network/Receive.md @@ -0,0 +1,18 @@ +# Receive + +**Package:** `org.rusherhack.client.api.events.network` + +**Source:** `org/rusherhack/client/api/events/network/EventPacket.java` + +This event is called when a packet is being received from the server. + +## Overview + +`Receive` is a class that extends [EventPacket](/client/api/events/network/EventPacket.md). + +## Constructor + +```java +public Receive(Packet packet) +``` + diff --git a/docs/api/client/api/events/network/Send.md b/docs/api/client/api/events/network/Send.md new file mode 100644 index 0000000..2866c50 --- /dev/null +++ b/docs/api/client/api/events/network/Send.md @@ -0,0 +1,18 @@ +# Send + +**Package:** `org.rusherhack.client.api.events.network` + +**Source:** `org/rusherhack/client/api/events/network/EventPacket.java` + +This event is called when a packet is being sent to the server. + +## Overview + +`Send` is a class that extends [EventPacket](/client/api/events/network/EventPacket.md). + +## Constructor + +```java +public Send(Packet packet) +``` + diff --git a/docs/api/client/api/events/player/Action.md b/docs/api/client/api/events/player/Action.md new file mode 100644 index 0000000..f27898b --- /dev/null +++ b/docs/api/client/api/events/player/Action.md @@ -0,0 +1,18 @@ +# Action + +**Package:** `org.rusherhack.client.api.events.player` + +**Source:** `org/rusherhack/client/api/events/player/EventInteract.java` + +## Overview + +`Action` is a enum. + +## Constants + +### INTERACT + +### ATTACK + +### INTERACT_AT + diff --git a/docs/api/client/api/events/player/EventInteract.md b/docs/api/client/api/events/player/EventInteract.md new file mode 100644 index 0000000..a7dd5dd --- /dev/null +++ b/docs/api/client/api/events/player/EventInteract.md @@ -0,0 +1,88 @@ +# EventInteract + +**Package:** `org.rusherhack.client.api.events.player` + +**Source:** `org/rusherhack/client/api/events/player/EventInteract.java` + + +@author historian**Author:** John200410 7/5/2023 + + + +## Overview + +`EventInteract` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventInteract(Entity entity, InteractionHand hand, boolean usingSecondaryAction, Action action, EntityHitResult hitResult) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| targetEntity | `Entity` | private final | +| hand | `InteractionHand` | private final | +| action | [Action](/client/api/events/network/Action.md) | private final | +| hitResult | `EntityHitResult` | private final | +| usingSecondaryAction | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### getTargetEntity() + +```java +public Entity getTargetEntity() +``` + +**Returns:** `Entity` + +### getHand() + +```java +public InteractionHand getHand() +``` + +**Returns:** `InteractionHand` + +### getAction() + +```java +public Action getAction() +``` + +**Returns:** [Action](/client/api/events/network/Action.md) + +### getHitResult() + +```java +public EntityHitResult getHitResult() +``` + +**Returns:** `EntityHitResult` + +### isUsingSecondaryAction() + +```java +public boolean isUsingSecondaryAction() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setUsingSecondaryAction() + +```java +public void setUsingSecondaryAction(boolean usingSecondaryAction) +``` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/player/EventMove.md b/docs/api/client/api/events/player/EventMove.md new file mode 100644 index 0000000..b5800fd --- /dev/null +++ b/docs/api/client/api/events/player/EventMove.md @@ -0,0 +1,102 @@ +# EventMove + +**Package:** `org.rusherhack.client.api.events.player` + +**Source:** `org/rusherhack/client/api/events/player/EventMove.java` + +This event is called when the player is moving +* **Author:** John200410 6/14/2023 + + + +## Overview + +`EventMove` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventMove(Vec3 motion) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| motionX | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| motionY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| motionZ | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | + + +## Methods + +### getX() + +```java +public double getX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setX() + +```java +public void setX(double x) +``` + +### getY() + +```java +public double getY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setY() + +```java +public void setY(double y) +``` + +### getZ() + +```java +public double getZ() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setZ() + +```java +public void setZ(double z) +``` + +### getMotion() + +```java +public Vec3 getMotion() +``` + +**Returns:** `Vec3` + +### setMotion() + +```java +public void setMotion(Vec3 motion) +``` + +### setMotion() + +```java +public void setMotion(double x, double y, double z) +``` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/player/EventPlayerUpdate.md b/docs/api/client/api/events/player/EventPlayerUpdate.md new file mode 100644 index 0000000..2be0e7f --- /dev/null +++ b/docs/api/client/api/events/player/EventPlayerUpdate.md @@ -0,0 +1,169 @@ +# EventPlayerUpdate + +**Package:** `org.rusherhack.client.api.events.player` + +**Source:** `org/rusherhack/client/api/events/player/EventPlayerUpdate.java` + +This event is called when the game is preparing to send player updates to the server. + + + +Used modify the player's position, rotation, and on-ground state for the tick. Player states revert after POST stage is posted. +* **Author:** John200410 6/2/2023 + + + +## Overview + +`EventPlayerUpdate` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventPlayerUpdate(LocalPlayer player) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| player | `LocalPlayer` | private final | +| yaw | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private | +| pitch | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private | +| x | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| y | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| z | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| onGround | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| horizontalCollision | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### getPlayer() + +```java +public LocalPlayer getPlayer() +``` + +**Returns:** `LocalPlayer` + +### getYaw() + +```java +public float getYaw() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setYaw() + +```java +public void setYaw(float yaw) +``` + +### getPitch() + +```java +public float getPitch() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setPitch() + +```java +public void setPitch(float pitch) +``` + +### getX() + +```java +public double getX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setX() + +```java +public void setX(double x) +``` + +### getY() + +```java +public double getY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setY() + +```java +public void setY(double y) +``` + +### getZ() + +```java +public double getZ() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setZ() + +```java +public void setZ(double z) +``` + +### isOnGround() + +```java +public boolean isOnGround() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setOnGround() + +```java +public void setOnGround(boolean onGround) +``` + +### getHorizontalCollision() + +```java +public boolean getHorizontalCollision() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setHorizontalCollision() + +```java +public void setHorizontalCollision(boolean horizontalCollision) +``` + +### getStage() + +```java +public Stage getStage() +``` + +`Stage`#PRE - called before the client sends player update to server + + + +`Stage`#POST - called at the end of the local player tick + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/player/EventTravel.md b/docs/api/client/api/events/player/EventTravel.md new file mode 100644 index 0000000..f4b1c21 --- /dev/null +++ b/docs/api/client/api/events/player/EventTravel.md @@ -0,0 +1,88 @@ +# EventTravel + +**Package:** `org.rusherhack.client.api.events.player` + +**Source:** `org/rusherhack/client/api/events/player/EventTravel.java` + +Wraps around Player#travel method + + + +Useful for changing the direction the player is moving +* **Author:** john@rusherhack.org 9/8/2023 + + + +## Overview + +`EventTravel` is a class that extends `Event`. + +## Constructor + +```java +public EventTravel(Vec2 rotationVector, Action action) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| action | [Action](/client/api/events/network/Action.md) | private final | +| yaw | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private | +| pitch | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private | + + +## Methods + +### getRotationVector() + +```java +public Vec2 getRotationVector() +``` + +**Returns:** `Vec2` + +### getAction() + +```java +public Action getAction() +``` + +**Returns:** [Action](/client/api/events/network/Action.md) + +### getYaw() + +```java +public float getYaw() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setYaw() + +```java +public void setYaw(float yaw) +``` + +### getPitch() + +```java +public float getPitch() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setPitch() + +```java +public void setPitch(float pitch) +``` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/player/FallOnBlock.md b/docs/api/client/api/events/player/FallOnBlock.md new file mode 100644 index 0000000..38a8eb5 --- /dev/null +++ b/docs/api/client/api/events/player/FallOnBlock.md @@ -0,0 +1,35 @@ +# FallOnBlock + +**Package:** `org.rusherhack.client.api.events.player` + +**Source:** `org/rusherhack/client/api/events/player/EventMove.java` + +This event is called when the player lands on a block (used in slime blocks and bed blocks to bounce the player) + +## Overview + +`FallOnBlock` is a class that extends [EventMove](/client/api/events/player/EventMove.md). + +## Constructor + +```java +public FallOnBlock(Block block, Vec3 motion) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| block | `Block` | private final | + + +## Methods + +### getBlock() + +```java +public Block getBlock() +``` + +**Returns:** `Block` + diff --git a/docs/api/client/api/events/player/Mount.md b/docs/api/client/api/events/player/Mount.md new file mode 100644 index 0000000..0df82f8 --- /dev/null +++ b/docs/api/client/api/events/player/Mount.md @@ -0,0 +1,35 @@ +# Mount + +**Package:** `org.rusherhack.client.api.events.player` + +**Source:** `org/rusherhack/client/api/events/player/EventMove.java` + +This event is called when an entity carrying the player is moving + +## Overview + +`Mount` is a class that extends [EventMove](/client/api/events/player/EventMove.md). + +## Constructor + +```java +public Mount(Entity entity, Vec3 motion) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| entity | `Entity` | private final | + + +## Methods + +### getEntity() + +```java +public Entity getEntity() +``` + +**Returns:** `Entity` + diff --git a/docs/api/client/api/events/render/Armor.md b/docs/api/client/api/events/render/Armor.md new file mode 100644 index 0000000..4c84972 --- /dev/null +++ b/docs/api/client/api/events/render/Armor.md @@ -0,0 +1,10 @@ +# Armor + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` + +## Overview + +`Armor` is a class that extends `EventCancellable`. + diff --git a/docs/api/client/api/events/render/Background.md b/docs/api/client/api/events/render/Background.md new file mode 100644 index 0000000..fd62579 --- /dev/null +++ b/docs/api/client/api/events/render/Background.md @@ -0,0 +1,42 @@ +# Background + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderScreen.java` + +## Overview + +`Background` is a class that extends `EventCancellable`. + +## Constructor + +```java +public Background(Screen screen, GuiGraphics graphics) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| screen | `Screen` | private final | +| graphics | `GuiGraphics` | private final | + + +## Methods + +### getScreen() + +```java +public Screen getScreen() +``` + +**Returns:** `Screen` + +### getGraphics() + +```java +public GuiGraphics getGraphics() +``` + +**Returns:** `GuiGraphics` + diff --git a/docs/api/client/api/events/render/Check.md b/docs/api/client/api/events/render/Check.md new file mode 100644 index 0000000..7a20119 --- /dev/null +++ b/docs/api/client/api/events/render/Check.md @@ -0,0 +1,48 @@ +# Check + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` + +## Overview + +`Check` is a class that extends `Event`. + +## Constructor + +```java +public Check(Entity entity, boolean shouldShowName) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| entity | `Entity` | private final | +| shouldShowName | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### getEntity() + +```java +public Entity getEntity() +``` + +**Returns:** `Entity` + +### shouldShowName() + +```java +public boolean shouldShowName() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setShouldShowName() + +```java +public void setShouldShowName(boolean shouldShowName) +``` + diff --git a/docs/api/client/api/events/render/EventRender.md b/docs/api/client/api/events/render/EventRender.md new file mode 100644 index 0000000..bad09a0 --- /dev/null +++ b/docs/api/client/api/events/render/EventRender.md @@ -0,0 +1,37 @@ +# EventRender + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRender.java` + +**Author:** John200410 5/30/2023 + + + +## Overview + +`EventRender` is a class that extends `Event`. + +## Constructor + +```java +public EventRender(float partialTicks) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| partialTicks | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private final | + + +## Methods + +### getPartialTicks() + +```java +public float getPartialTicks() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + diff --git a/docs/api/client/api/events/render/EventRender2D.md b/docs/api/client/api/events/render/EventRender2D.md new file mode 100644 index 0000000..b8aaad7 --- /dev/null +++ b/docs/api/client/api/events/render/EventRender2D.md @@ -0,0 +1,68 @@ +# EventRender2D + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRender2D.java` + +This event is called during the game's 2D rendering stage +* **Author:** John200410 + + + +## Overview + +`EventRender2D` is a class that extends [EventRender](/client/api/events/render/EventRender.md). + +## Constructor + +```java +public EventRender2D(GuiGraphics graphics, float partialTicks) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| renderContext | [RenderContext](/client/api/render/RenderContext.md) | private final | +| graphics | `GuiGraphics` | private final | + + +## Methods + +### getMatrixStack() + +```java +public Matrix3x2fStack getMatrixStack() +``` + +**Returns:** `Matrix3x2fStack` + +### getRenderContext() + +```java +public RenderContext getRenderContext() +``` + +**Returns:** [RenderContext](/client/api/render/RenderContext.md) + +### getGraphics() + +```java +public GuiGraphics getGraphics() +``` + +**Returns:** `GuiGraphics` + +### getStage() + +```java +public Stage getStage() +``` + +TODO: documentation +**Returns**: PRE, ON, OR POST + + + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/render/EventRender3D.md b/docs/api/client/api/events/render/EventRender3D.md new file mode 100644 index 0000000..2c2089d --- /dev/null +++ b/docs/api/client/api/events/render/EventRender3D.md @@ -0,0 +1,55 @@ +# EventRender3D + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRender3D.java` + +This event is called during the game's 3D rendering stage +* **Author:** John200410 5/30/2023 + + + +## Overview + +`EventRender3D` is a class that extends [EventRender](/client/api/events/render/EventRender.md). + +## Constructor + +```java +public EventRender3D(IRenderer3D renderer, PoseStack poseStack, float partialTicks) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| renderer | [IRenderer3D](/client/api/render/IRenderer3D.md) | private final | +| poseStack | `PoseStack` | private final | + + +## Methods + +### getMatrixStack() + +```java +public PoseStack getMatrixStack() +``` + +**Returns:** `PoseStack` + +### getRenderer() + +```java +public IRenderer3D getRenderer() +``` + +**Returns:** [IRenderer3D](/client/api/render/IRenderer3D.md) + +### getLevel() + +```java +public Level getLevel() +``` + +**Returns:** `Level` + diff --git a/docs/api/client/api/events/render/EventRenderBlockEntity.md b/docs/api/client/api/events/render/EventRenderBlockEntity.md new file mode 100644 index 0000000..594dd39 --- /dev/null +++ b/docs/api/client/api/events/render/EventRenderBlockEntity.md @@ -0,0 +1,115 @@ +# EventRenderBlockEntity + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderBlockEntity.java` + +**Author:** John200410 12/13/2023 + + + +## Overview + +`EventRenderBlockEntity` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventRenderBlockEntity(BlockEntity blockEntity, BlockEntityRenderState renderState, float partialTicks, PoseStack poseStack, SubmitNodeCollector nodeCollector, int packedLight, boolean worldRender) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| blockEntity | `BlockEntity` | private final | +| renderState | `BlockEntityRenderState` | private final | +| partialTicks | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private final | +| poseStack | `PoseStack` | private final | +| nodeCollector | `SubmitNodeCollector` | private | +| packedLight | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| worldRender | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | + + +## Methods + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + +### getStage() + +```java +public Stage getStage() +``` + +**Returns:** `Stage` + +### getBlockEntity() + +```java +public BlockEntity getBlockEntity() +``` + +**Returns:** `BlockEntity` + +### getRenderState() + +```java +public BlockEntityRenderState getRenderState() +``` + +**Returns:** `BlockEntityRenderState` + +### getPartialTicks() + +```java +public float getPartialTicks() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getPoseStack() + +```java +public PoseStack getPoseStack() +``` + +**Returns:** `PoseStack` + +### getNodeCollector() + +```java +public SubmitNodeCollector getNodeCollector() +``` + +**Returns:** `SubmitNodeCollector` + +### setNodeCollector() + +```java +public void setNodeCollector(SubmitNodeCollector nodeCollector) +``` + +Only applies during ON stage + +### getPackedLight() + +```java +public int getPackedLight() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### isWorldRender() + +```java +public boolean isWorldRender() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/events/render/EventRenderEntity.md b/docs/api/client/api/events/render/EventRenderEntity.md new file mode 100644 index 0000000..d402805 --- /dev/null +++ b/docs/api/client/api/events/render/EventRenderEntity.md @@ -0,0 +1,148 @@ +# EventRenderEntity + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` + +**Author:** John200410 7/6/2023 + + + +## Overview + +`EventRenderEntity` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventRenderEntity(Entity entity, double x, double y, double z, float rotationYaw, float partialTicks, PoseStack matrixStack, SubmitNodeCollector nodeCollector, int packedLight) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| entity | `Entity` | private final | +| x | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| y | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| z | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| rotationYaw | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private final | +| partialTicks | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private final | +| matrixStack | `PoseStack` | private final | +| nodeCollector | `SubmitNodeCollector` | private | +| packedLight | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| shouldRenderModel | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + +### getStage() + +```java +public Stage getStage() +``` + +**Returns:** `Stage` + +### getEntity() + +```java +public Entity getEntity() +``` + +**Returns:** `Entity` + +### getX() + +```java +public double getX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getY() + +```java +public double getY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getZ() + +```java +public double getZ() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getRotationYaw() + +```java +public float getRotationYaw() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getPartialTicks() + +```java +public float getPartialTicks() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getMatrixStack() + +```java +public PoseStack getMatrixStack() +``` + +**Returns:** `PoseStack` + +### getNodeCollector() + +```java +public SubmitNodeCollector getNodeCollector() +``` + +**Returns:** `SubmitNodeCollector` + +### setNodeCollector() + +```java +public void setNodeCollector(SubmitNodeCollector nodeCollector) +``` + +Only applies during ON stage + +### setRenderModel() + +```java +public void setRenderModel(boolean shouldRenderModel) +``` + +### shouldRenderModel() + +```java +public boolean shouldRenderModel() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getPackedLight() + +```java +public int getPackedLight() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/events/render/EventRenderScreen.md b/docs/api/client/api/events/render/EventRenderScreen.md new file mode 100644 index 0000000..f7d68b7 --- /dev/null +++ b/docs/api/client/api/events/render/EventRenderScreen.md @@ -0,0 +1,113 @@ +# EventRenderScreen + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderScreen.java` + +**Author:** John200410 7/27/2023 + + + +## Overview + +`EventRenderScreen` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventRenderScreen(Screen screen, GuiGraphics graphics, int mouseX, int mouseY, float partialTick) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| screen | `Screen` | private final | +| graphics | `GuiGraphics` | private final | +| mouseX | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | +| mouseY | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | +| partialTick | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private final | + + +## Methods + +### getScreen() + +```java +public Screen getScreen() +``` + +**Returns:** `Screen` + +### getGraphics() + +```java +public GuiGraphics getGraphics() +``` + +**Returns:** `GuiGraphics` + +### getMatrixStack() + +```java +public Matrix3x2fStack getMatrixStack() +``` + +**Returns:** `Matrix3x2fStack` + +### getMouseX() + +```java +public int getMouseX() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setMouseX() + +```java +public void setMouseX(int mouseX) +``` + +### getMouseY() + +```java +public int getMouseY() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setMouseY() + +```java +public void setMouseY(int mouseY) +``` + +### getPartialTick() + +```java +public float getPartialTick() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getStage() + +```java +public Stage getStage() +``` + +**Returns**: PRE, ON, or POST + + + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/render/ItemFrameParts.md b/docs/api/client/api/events/render/ItemFrameParts.md new file mode 100644 index 0000000..29f13cf --- /dev/null +++ b/docs/api/client/api/events/render/ItemFrameParts.md @@ -0,0 +1,33 @@ +# ItemFrameParts + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` + +## Overview + +`ItemFrameParts` is a class that extends `EventCancellable`. + +## Constructor + +```java +public ItemFrameParts(Part part) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| part | [Part](/client/api/events/render/Part.md) | private final | + + +## Methods + +### getPart() + +```java +public Part getPart() +``` + +**Returns:** [Part](/client/api/events/render/Part.md) + diff --git a/docs/api/client/api/events/render/Nametag.md b/docs/api/client/api/events/render/Nametag.md new file mode 100644 index 0000000..3e2f7bb --- /dev/null +++ b/docs/api/client/api/events/render/Nametag.md @@ -0,0 +1,95 @@ +# Nametag + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` + +## Overview + +`Nametag` is a class that extends `EventCancellable`. + +## Constructor + +```java +public Nametag(Entity entity, Component displayName, PoseStack matrixStack, SubmitNodeCollector nodeCollector, int packedLight) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| entity | `Entity` | private final | +| displayName | `Component` | private | +| matrixStack | `PoseStack` | private final | +| nodeCollector | `SubmitNodeCollector` | private final | +| packedLight | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | + + +## Methods + +### getStage() + +```java +public Stage getStage() +``` + +**Returns**: PRE or POST + + + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + +### getEntity() + +```java +public Entity getEntity() +``` + +**Returns:** `Entity` + +### getDisplayName() + +```java +public Component getDisplayName() +``` + +**Returns:** `Component` + +### setDisplayName() + +```java +public void setDisplayName(Component displayName) +``` + +### getMatrixStack() + +```java +public PoseStack getMatrixStack() +``` + +**Returns:** `PoseStack` + +### getNodeCollector() + +```java +public SubmitNodeCollector getNodeCollector() +``` + +**Returns:** `SubmitNodeCollector` + +### getPackedLight() + +```java +public int getPackedLight() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/events/render/Part.md b/docs/api/client/api/events/render/Part.md new file mode 100644 index 0000000..9d046c9 --- /dev/null +++ b/docs/api/client/api/events/render/Part.md @@ -0,0 +1,16 @@ +# Part + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` + +## Overview + +`Part` is a enum. + +## Constants + +### ENTITY + +### ITEM + diff --git a/docs/api/client/api/events/render/PlayerRotations.md b/docs/api/client/api/events/render/PlayerRotations.md new file mode 100644 index 0000000..4734031 --- /dev/null +++ b/docs/api/client/api/events/render/PlayerRotations.md @@ -0,0 +1,54 @@ +# PlayerRotations + +**Package:** `org.rusherhack.client.api.events.render` + +**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` + +## Overview + +`PlayerRotations` is a class that extends `Event`. + +## Constructor + +```java +public PlayerRotations(float yaw, float pitch) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| yaw | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private | +| pitch | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private | + + +## Methods + +### getYaw() + +```java +public float getYaw() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setYaw() + +```java +public void setYaw(float yaw) +``` + +### getPitch() + +```java +public float getPitch() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setPitch() + +```java +public void setPitch(float pitch) +``` + diff --git a/docs/api/client/api/events/world/Add.md b/docs/api/client/api/events/world/Add.md new file mode 100644 index 0000000..3bdb24c --- /dev/null +++ b/docs/api/client/api/events/world/Add.md @@ -0,0 +1,38 @@ +# Add + +**Package:** `org.rusherhack.client.api.events.world` + +**Source:** `org/rusherhack/client/api/events/world/EventEntity.java` + +## Overview + +`Add` is a class that extends [EventEntity](/client/api/events/world/EventEntity.md). + +## Constructor + +```java +public Add(Entity entity) +``` + +## Methods + +### getStage() + +```java +public Stage getStage() +``` + +**Returns**: PRE or POST + + + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/world/EventChunk.md b/docs/api/client/api/events/world/EventChunk.md new file mode 100644 index 0000000..37f7995 --- /dev/null +++ b/docs/api/client/api/events/world/EventChunk.md @@ -0,0 +1,37 @@ +# EventChunk + +**Package:** `org.rusherhack.client.api.events.world` + +**Source:** `org/rusherhack/client/api/events/world/EventChunk.java` + +**Author:** John200410 7/19/2023 + + + +## Overview + +`EventChunk` is a class that extends `Event`. + +## Constructor + +```java +public EventChunk(ChunkPos pos) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| pos | `ChunkPos` | private final | + + +## Methods + +### getChunkPos() + +```java +public ChunkPos getChunkPos() +``` + +**Returns:** `ChunkPos` + diff --git a/docs/api/client/api/events/world/EventEntity.md b/docs/api/client/api/events/world/EventEntity.md new file mode 100644 index 0000000..ae975eb --- /dev/null +++ b/docs/api/client/api/events/world/EventEntity.md @@ -0,0 +1,37 @@ +# EventEntity + +**Package:** `org.rusherhack.client.api.events.world` + +**Source:** `org/rusherhack/client/api/events/world/EventEntity.java` + +**Author:** John200410 7/19/2023 + + + +## Overview + +`EventEntity` is a class that extends `EventCancellable`. + +## Constructor + +```java +public EventEntity(Entity entity) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| entity | `Entity` | private final | + + +## Methods + +### getEntity() + +```java +public Entity getEntity() +``` + +**Returns:** `Entity` + diff --git a/docs/api/client/api/events/world/EventLoadWorld.md b/docs/api/client/api/events/world/EventLoadWorld.md new file mode 100644 index 0000000..0972844 --- /dev/null +++ b/docs/api/client/api/events/world/EventLoadWorld.md @@ -0,0 +1,25 @@ +# EventLoadWorld + +**Package:** `org.rusherhack.client.api.events.world` + +**Source:** `org/rusherhack/client/api/events/world/EventLoadWorld.java` + +This event is called when the world is being changed. +* **Author:** John200410 12/14/2022 + + + +## Overview + +`EventLoadWorld` is a class that extends `Event`. + +## Methods + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/world/Load.md b/docs/api/client/api/events/world/Load.md new file mode 100644 index 0000000..8b56709 --- /dev/null +++ b/docs/api/client/api/events/world/Load.md @@ -0,0 +1,51 @@ +# Load + +**Package:** `org.rusherhack.client.api.events.world` + +**Source:** `org/rusherhack/client/api/events/world/EventChunk.java` + +## Overview + +`Load` is a class that extends [EventChunk](/client/api/events/world/EventChunk.md). + +## Constructor + +```java +public Load(ChunkPos pos, LevelChunk chunk) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| chunk | `LevelChunk` | private final | + + +## Methods + +### getChunk() + +```java +public LevelChunk getChunk() +``` + +**Returns:** `LevelChunk` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + +### getStage() + +```java +public Stage getStage() +``` + +PRE or POST + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/world/Remove.md b/docs/api/client/api/events/world/Remove.md new file mode 100644 index 0000000..84e6967 --- /dev/null +++ b/docs/api/client/api/events/world/Remove.md @@ -0,0 +1,53 @@ +# Remove + +**Package:** `org.rusherhack.client.api.events.world` + +**Source:** `org/rusherhack/client/api/events/world/EventEntity.java` + +## Overview + +`Remove` is a class that extends [EventEntity](/client/api/events/world/EventEntity.md). + +## Constructor + +```java +public Remove(Entity entity, Entity.RemovalReason reason) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| reason | `Entity.RemovalReason` | private final | + + +## Methods + +### getReason() + +```java +public Entity.RemovalReason getReason() +``` + +**Returns:** `Entity.RemovalReason` + +### getStage() + +```java +public Stage getStage() +``` + +**Returns**: PRE or POST + + + +**Returns:** `Stage` + +### getPreferredStage() + +```java +public Stage getPreferredStage() +``` + +**Returns:** `Stage` + diff --git a/docs/api/client/api/events/world/Unload.md b/docs/api/client/api/events/world/Unload.md new file mode 100644 index 0000000..10613a9 --- /dev/null +++ b/docs/api/client/api/events/world/Unload.md @@ -0,0 +1,16 @@ +# Unload + +**Package:** `org.rusherhack.client.api.events.world` + +**Source:** `org/rusherhack/client/api/events/world/EventChunk.java` + +## Overview + +`Unload` is a class that extends [EventChunk](/client/api/events/world/EventChunk.md). + +## Constructor + +```java +public Unload(ChunkPos pos) +``` + diff --git a/docs/api/client/api/feature/command/Command.md b/docs/api/client/api/feature/command/Command.md new file mode 100644 index 0000000..261131c --- /dev/null +++ b/docs/api/client/api/feature/command/Command.md @@ -0,0 +1,27 @@ +# Command + +**Package:** `org.rusherhack.client.api.feature.command` + +**Source:** `org/rusherhack/client/api/feature/command/Command.java` + +**Author:** John200410 9/3/2023 + + + +## Overview + +`Command` is a class that extends [AbstractCommand](/core/command/AbstractCommand.md) and implements [Globals](/client/api/Globals.md). + +## Constructor + +```java +public Command(String name, String description) +``` + +**Parameter `name`**: base name of the command + + +**Parameter `description`**: description of what the command does + + + diff --git a/docs/api/client/api/feature/command/FeatureCommand.md b/docs/api/client/api/feature/command/FeatureCommand.md new file mode 100644 index 0000000..38c7d58 --- /dev/null +++ b/docs/api/client/api/feature/command/FeatureCommand.md @@ -0,0 +1,46 @@ +# FeatureCommand + +**Package:** `org.rusherhack.client.api.feature.command` + +**Source:** `org/rusherhack/client/api/feature/command/FeatureCommand.java` + +A command that lets you configure a feature's settings. +* **Author:** John200410 8/11/2023 + + + +## Overview + +`FeatureCommand` is a class that extends [Command](/client/api/feature/command/Command.md). + +## Constructor + +```java +public FeatureCommand(IFeatureConfigurable feature) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| feature | [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md) | private final | + + +## Methods + +### isHidden() + +```java +public boolean isHidden() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getFeature() + +```java +public IFeatureConfigurable getFeature() +``` + +**Returns:** [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md) + diff --git a/docs/api/client/api/feature/command/ModuleCommand.md b/docs/api/client/api/feature/command/ModuleCommand.md new file mode 100644 index 0000000..fbc4bb1 --- /dev/null +++ b/docs/api/client/api/feature/command/ModuleCommand.md @@ -0,0 +1,20 @@ +# ModuleCommand + +**Package:** `org.rusherhack.client.api.feature.command` + +**Source:** `org/rusherhack/client/api/feature/command/ModuleCommand.java` + +**Author:** John200410 5/23/2023 + + + +## Overview + +`ModuleCommand` is a class that extends [ToggleableFeatureCommand](/client/api/feature/command/ToggleableFeatureCommand.md). + +## Constructor + +```java +public ModuleCommand(IModule module) +``` + diff --git a/docs/api/client/api/feature/command/ToggleableFeatureCommand.md b/docs/api/client/api/feature/command/ToggleableFeatureCommand.md new file mode 100644 index 0000000..b011d88 --- /dev/null +++ b/docs/api/client/api/feature/command/ToggleableFeatureCommand.md @@ -0,0 +1,30 @@ +# ToggleableFeatureCommand + +**Package:** `org.rusherhack.client.api.feature.command` + +**Source:** `org/rusherhack/client/api/feature/command/ToggleableFeatureCommand.java` + +**Author:** john@rusherhack.org 12/24/2025 + + + +## Overview + +`ToggleableFeatureCommand` is a class that extends [FeatureCommand](/client/api/feature/command/FeatureCommand.md). + +## Constructor + +```java +public ToggleableFeatureCommand(IFeatureConfigurable feature) +``` + +## Methods + +### toggleFeature() + +```java +private String toggleFeature() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/feature/command/arg/BlockReference.md b/docs/api/client/api/feature/command/arg/BlockReference.md new file mode 100644 index 0000000..1495177 --- /dev/null +++ b/docs/api/client/api/feature/command/arg/BlockReference.md @@ -0,0 +1,20 @@ +# BlockReference + +**Package:** `org.rusherhack.client.api.feature.command.arg` + +**Source:** `org/rusherhack/client/api/feature/command/arg/BlockReference.java` + +**Author:** John200410 8/18/2023 + + + +## Overview + +`BlockReference` is a record. + +## Constructor + +```java +public BlockReference(Block block) +``` + diff --git a/docs/api/client/api/feature/command/arg/EnchantReference.md b/docs/api/client/api/feature/command/arg/EnchantReference.md new file mode 100644 index 0000000..cc36a29 --- /dev/null +++ b/docs/api/client/api/feature/command/arg/EnchantReference.md @@ -0,0 +1,20 @@ +# EnchantReference + +**Package:** `org.rusherhack.client.api.feature.command.arg` + +**Source:** `org/rusherhack/client/api/feature/command/arg/EnchantReference.java` + +**Author:** historian + + + +## Overview + +`EnchantReference` is a record. + +## Constructor + +```java +public EnchantReference(ResourceKey enchantment, int level) +``` + diff --git a/docs/api/client/api/feature/command/arg/ItemReference.md b/docs/api/client/api/feature/command/arg/ItemReference.md new file mode 100644 index 0000000..ad5acfa --- /dev/null +++ b/docs/api/client/api/feature/command/arg/ItemReference.md @@ -0,0 +1,20 @@ +# ItemReference + +**Package:** `org.rusherhack.client.api.feature.command.arg` + +**Source:** `org/rusherhack/client/api/feature/command/arg/ItemReference.java` + +**Author:** John200410 8/18/2023 + + + +## Overview + +`ItemReference` is a record. + +## Constructor + +```java +public ItemReference(Item item) +``` + diff --git a/docs/api/client/api/feature/command/arg/PlayerReference.md b/docs/api/client/api/feature/command/arg/PlayerReference.md new file mode 100644 index 0000000..bffac4c --- /dev/null +++ b/docs/api/client/api/feature/command/arg/PlayerReference.md @@ -0,0 +1,14 @@ +# PlayerReference + +**Package:** `org.rusherhack.client.api.feature.command.arg` + +**Source:** `org/rusherhack/client/api/feature/command/arg/PlayerReference.java` + +**Author:** John200410 7/6/2023 + + + +## Overview + +`PlayerReference` is a record. + diff --git a/docs/api/client/api/feature/hud/Alignment.md b/docs/api/client/api/feature/hud/Alignment.md new file mode 100644 index 0000000..99457b7 --- /dev/null +++ b/docs/api/client/api/feature/hud/Alignment.md @@ -0,0 +1,22 @@ +# Alignment + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/HudElement.java` + +## Overview + +`Alignment` is a enum. + +## Constants + +### TOP_LEFT + +### TOP_CENTER + +### TOP_RIGHT + +### BOTTOM_LEFT + +### BOTTOM_RIGHT + diff --git a/docs/api/client/api/feature/hud/ColorMode.md b/docs/api/client/api/feature/hud/ColorMode.md new file mode 100644 index 0000000..d290dc5 --- /dev/null +++ b/docs/api/client/api/feature/hud/ColorMode.md @@ -0,0 +1,18 @@ +# ColorMode + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/ListHudElement.java` + +Change how the color of the items are decided when the color setting is set to rainbow + +## Overview + +`ColorMode` is a enum. + +## Constants + +### DYNAMIC + +### STATIC + diff --git a/docs/api/client/api/feature/hud/HudElement.md b/docs/api/client/api/feature/hud/HudElement.md new file mode 100644 index 0000000..7ed7ca9 --- /dev/null +++ b/docs/api/client/api/feature/hud/HudElement.md @@ -0,0 +1,357 @@ +# HudElement + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/HudElement.java` + +A hud element is a draggable [ElementBase](/client/api/ui/ElementBase.md) that can be rendered on the screen. +* TODO: refactor and document +**Author:** John200410 3/15/2023 + + + +## Overview + +`HudElement` is a class that extends [ScaledElementBase](/client/api/ui/ScaledElementBase.md) and implements [IHudElement](/client/api/feature/hud/IHudElement.md), [IBindable](/core/bind/IBindable.md), `EventListener`, [ILoggable](/core/logging/ILoggable.md), [Globals](/client/api/Globals.md). + +## Constructor + +```java +public HudElement(String name) +``` + +```java +public HudElement(String name, String description) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| toggled | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | private final | +| snapPoint | [SnapPoint](/client/api/feature/hud/SnapPoint.md) | protected | +| alignment | [Alignment](/client/api/feature/hud/Alignment.md) | protected | +| dragging | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | +| dragDeltaX | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| dragDeltaY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| logger | [ILogger](/core/logging/ILogger.md) | protected final | + + +## Methods + +### render() + +```java +public void render(RenderContext context, double mouseX, double mouseY) +``` + +### correctPosition() + +```java +protected void correctPosition(Alignment old, Alignment newAlignment) +``` + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayName() + +```java +public String getDisplayName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDisplayName() + +```java +public void setDisplayName(String displayName) +``` + +### getDescription() + +```java +public String getDescription() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDescription() + +```java +public void setDescription(String description) +``` + +### getReferenceKey() + +```java +public String getReferenceKey() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getSettings() + +```java +public List> getSettings() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### mouseMoved() + +```java +public void mouseMoved(double mouseX, double mouseY) +``` + +### isDragging() + +```java +public boolean isDragging() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isHovered() + +```java +public boolean isHovered(double mouseX, double mouseY) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### toggle() + +```java +public void toggle() +``` + +### onEnable() + +```java +public void onEnable() +``` + +### onDisable() + +```java +public void onDisable() +``` + +### getBindReference() + +```java +public String getBindReference() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### onKeybindEvent() + +```java +public void onKeybindEvent() +``` + +### getLogger() + +```java +public ILogger getLogger() +``` + +**Returns:** [ILogger](/core/logging/ILogger.md) + +### isToggled() + +```java +public boolean isToggled() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setToggled() + +```java +public void setToggled(boolean toggled) +``` + +### isListening() + +```java +public boolean isListening() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### createCommand() + +```java +public AbstractCommand createCommand() +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### setX() + +```java +public void setX(double x) +``` + +### setY() + +```java +public void setY(double y) +``` + +### getX() + +```java +public double getX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getY() + +```java +public double getY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getStartX() + +```java +public double getStartX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getStartY() + +```java +public double getStartY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setStartX() + +```java +public void setStartX(double x) +``` + +### setStartY() + +```java +public void setStartY(double y) +``` + +### getScale() + +```java +public double getScale() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getFontRenderer() + +```java +public IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### getSnapPoint() + +```java +public SnapPoint getSnapPoint() +``` + +**Returns:** [SnapPoint](/client/api/feature/hud/SnapPoint.md) + +### setSnapPoint() + +```java +public void setSnapPoint(SnapPoint snapPoint) +``` + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement jsonElement) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### reset() + +```java +public boolean reset() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### shouldUpdateAlignment() + +```java +protected boolean shouldUpdateAlignment() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getAlignment() + +```java +public Alignment getAlignment() +``` + +**Returns:** [Alignment](/client/api/feature/hud/Alignment.md) + +### calculateAlignment() + +```java +public static Alignment calculateAlignment(HudElement element) +``` + +**Returns:** [Alignment](/client/api/feature/hud/Alignment.md) + +### calculateAlignment() + +```java +public static Alignment calculateAlignment(double x, double y) +``` + +**Returns:** [Alignment](/client/api/feature/hud/Alignment.md) + diff --git a/docs/api/client/api/feature/hud/IHudElement.md b/docs/api/client/api/feature/hud/IHudElement.md new file mode 100644 index 0000000..1dfdbc9 --- /dev/null +++ b/docs/api/client/api/feature/hud/IHudElement.md @@ -0,0 +1,49 @@ +# IHudElement + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/IHudElement.java` + +Hud element interface +* **Author:** John200410 3/6/2023 + + + +## Overview + +`IHudElement` is a interface that extends [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md), [IRenderable2D](/client/api/render/IRenderable2D.md), [IToggleable](/core/interfaces/IToggleable.md), [ITickable](/core/interfaces/ITickable.md), [IDraggable](/core/interfaces/IDraggable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). + +## Methods + +### renderContent() + +```java +default void renderContent(RenderContext context, int mouseX, int mouseY) +``` + +DEPRECATED! Override ``#renderContent(RenderContext, double, double) instead. + +### renderContent() + +```java +default void renderContent(RenderContext context, double mouseX, double mouseY) +``` + +Hud element is being called for rendering. + + + +Matrix is translated to the top left corner of the element before being called. + +### shouldDrawBackground() + +```java +default boolean shouldDrawBackground() +``` + +**Returns**: whether the background should be drawn + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/feature/hud/ListHudElement.md b/docs/api/client/api/feature/hud/ListHudElement.md new file mode 100644 index 0000000..864a388 --- /dev/null +++ b/docs/api/client/api/feature/hud/ListHudElement.md @@ -0,0 +1,120 @@ +# ListHudElement + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/ListHudElement.java` + +A hud element that will display a list of items +* TODO: refactor and use generic to specify listitem type +* **Author:** John200410 6/9/2023 + + + +## Overview + +`ListHudElement` is a class that extends [HudElement](/client/api/feature/hud/HudElement.md). + +## Constructor + +```java +public ListHudElement(String name) +``` + +```java +public ListHudElement(String name, boolean sorting) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| cache | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private | +| members | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ListItem](/client/api/feature/hud/ListItem.md)> | protected | +| sorting | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | +| max | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | +| color | [ColorSetting](/client/api/setting/ColorSetting.md) | protected final | +| colorMode | [EnumSetting](/core/setting/EnumSetting.md)<[ColorMode](/client/api/system/ColorMode.md)> | protected final | +| sortMode | [EnumSetting](/core/setting/EnumSetting.md)<[SortingMode](/client/api/feature/hud/SortingMode.md)> | protected final | +| animations | [BooleanSetting](/core/setting/BooleanSetting.md) | protected final | + + +## Methods + +### renderContent() + +```java +public void renderContent(RenderContext context, double mouseX, double mouseY) +``` + +### renderList() + +```java +protected void renderList(RenderContext renderContext) +``` + +### tick() + +```java +public void tick() +``` + +### resort() + +```java +public void resort() +``` + +### setMax() + +```java +public void setMax(int max) +``` + +### add() + +```java +public void add(ListItem member) +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getMembers() + +```java +public List getMembers() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ListItem](/client/api/feature/hud/ListItem.md)> + +### getComparator() + +```java +public Comparator getComparator() +``` + +**Returns:** [Comparator](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Comparator.html)<`? super ListItem`> + +### shouldAutomaticallyResort() + +```java +protected boolean shouldAutomaticallyResort() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/feature/hud/ListItem.md b/docs/api/client/api/feature/hud/ListItem.md new file mode 100644 index 0000000..ea9a919 --- /dev/null +++ b/docs/api/client/api/feature/hud/ListItem.md @@ -0,0 +1,160 @@ +# ListItem + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/ListHudElement.java` + +An item that gets rendered in this list +* **Author:** John200410 12/14/2021 + + + +## Overview + +`ListItem` is a class. + +## Constructor + +```java +public ListItem(ListHudElement parent) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| parent | [ListHudElement](/client/api/feature/hud/ListHudElement.md) | private final | +| animation | [Animation](/core/animation/Animation.md) | private final | +| markedForRemoval | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| cachedComponent | `Component` | private | +| cachedWidth | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | + + +## Methods + +### getText() + +```java +public abstract Component getText() +``` + +**Returns**: The text that will represent this item + + + +**Returns:** `Component` + +### shouldRemove() + +```java +public abstract boolean shouldRemove() +``` + +**Returns**: the condition that must be met to remove this item + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getTextCached() + +```java +private Component getTextCached() +``` + +**Returns:** `Component` + +### readyForRemoval() + +```java +private boolean readyForRemoval() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### render() + +```java +public void render(RenderContext renderContext, int indexInList) +``` + +### tick() + +```java +public void tick() +``` + +Updates the animation state of this item + +### toString() + +```java +public String toString() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### equals() + +```java +public boolean equals(Object obj) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getColor() + +```java +public int getColor(int index) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getAnimation() + +```java +public Animation getAnimation() +``` + +**Returns:** [Animation](/core/animation/Animation.md) + +### getRenderer() + +```java +public IRenderer2D getRenderer() +``` + +**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) + +### getFontRenderer() + +```java +public IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### getParent() + +```java +public ListHudElement getParent() +``` + +**Returns:** [ListHudElement](/client/api/feature/hud/ListHudElement.md) + diff --git a/docs/api/client/api/feature/hud/ResizeableHudElement.md b/docs/api/client/api/feature/hud/ResizeableHudElement.md new file mode 100644 index 0000000..13caa20 --- /dev/null +++ b/docs/api/client/api/feature/hud/ResizeableHudElement.md @@ -0,0 +1,93 @@ +# ResizeableHudElement + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/ResizeableHudElement.java` + +Hud element which can be scaled. +TODO: make dragging show dragging mouse cursor +* **Author:** John200410 5/29/2023 + + + +## Overview + +`ResizeableHudElement` is a class that extends [HudElement](/client/api/feature/hud/HudElement.md). + +## Constructor + +```java +public ResizeableHudElement(String name) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| resizing | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| resizeStartScale | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| resizeDeltaX | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| resizeDeltaY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| scale | [NumberSetting](/core/setting/NumberSetting.md)<[Double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)> | protected final | + + +## Methods + +### mouseMoved() + +```java +public void mouseMoved(double mouseX, double mouseY) +``` + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### getScale() + +```java +public double getScale() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### render() + +```java +public void render(RenderContext context, double mouseX, double mouseY) +``` + +### shouldUpdateAlignment() + +```java +public boolean shouldUpdateAlignment() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isHoveredOverIndicator() + +```java +public boolean isHoveredOverIndicator(double mouseX, double mouseY) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isResizing() + +```java +public boolean isResizing() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/feature/hud/ShortListHudElement.md b/docs/api/client/api/feature/hud/ShortListHudElement.md new file mode 100644 index 0000000..97e1fde --- /dev/null +++ b/docs/api/client/api/feature/hud/ShortListHudElement.md @@ -0,0 +1,71 @@ +# ShortListHudElement + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/ShortListHudElement.java` + +**Author:** John200410 7/25/2023 + + + +## Overview + +`ShortListHudElement` is a class that extends [HudElement](/client/api/feature/hud/HudElement.md). + +## Constructor + +```java +public ShortListHudElement(String name) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| COMMA_SEPARATOR_COMPONENT | `Component` | public static final | +| PADDING | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | public static final | +| color | [ColorSetting](/client/api/setting/ColorSetting.md) | private final | +| axis | [EnumSetting](/core/setting/EnumSetting.md)<[TextAxis](/client/api/feature/hud/TextAxis.md)> | protected final | +| list | `Component` | private | +| width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | + + +## Methods + +### getComponents() + +```java +public abstract Component[] getComponents() +``` + +**Returns:** `Component`[] + +### renderContent() + +```java +public void renderContent(RenderContext context, double mouseX, double mouseY) +``` + +### tick() + +```java +public void tick() +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/feature/hud/SnapPoint.md b/docs/api/client/api/feature/hud/SnapPoint.md new file mode 100644 index 0000000..b584f6b --- /dev/null +++ b/docs/api/client/api/feature/hud/SnapPoint.md @@ -0,0 +1,51 @@ +# SnapPoint + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/HudElement.java` + +Points at which hud elements are able to "snap" to +* **Author:** John200410 3/15/2023 + + + +## Overview + +`SnapPoint` is a enum. + +## Constructor + +```java + SnapPoint(double x, double y) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| x | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | public final | +| y | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | public final | + + +## Constants + +### TOP_LEFT + +Arguments: 0, 0 + +### TOP_CENTER + +Arguments: 0.5, 0 + +### TOP_RIGHT + +Arguments: 1, 0 + +### BOTTOM_LEFT + +Arguments: 0, 1 + +### BOTTOM_RIGHT + +Arguments: 1, 1 + diff --git a/docs/api/client/api/feature/hud/SortingMode.md b/docs/api/client/api/feature/hud/SortingMode.md new file mode 100644 index 0000000..d149cea --- /dev/null +++ b/docs/api/client/api/feature/hud/SortingMode.md @@ -0,0 +1,33 @@ +# SortingMode + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/ListHudElement.java` + +## Overview + +`SortingMode` is a enum. + +## Constructor + +```java + SortingMode(Comparator comparator) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| comparator | [Comparator](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Comparator.html)<[ListItem](/client/api/feature/hud/ListItem.md)> | public final | + + +## Constants + +### LEXICOGRAPHICAL + +Arguments: Comparator.comparingDouble(m -> -m.getWidth()) + +### ALPHABETICAL + +Arguments: Comparator.comparing(ListItem::toString) + diff --git a/docs/api/client/api/feature/hud/TextAxis.md b/docs/api/client/api/feature/hud/TextAxis.md new file mode 100644 index 0000000..32af78f --- /dev/null +++ b/docs/api/client/api/feature/hud/TextAxis.md @@ -0,0 +1,16 @@ +# TextAxis + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/ShortListHudElement.java` + +## Overview + +`TextAxis` is a enum. + +## Constants + +### X + +### Y + diff --git a/docs/api/client/api/feature/hud/TextHudElement.md b/docs/api/client/api/feature/hud/TextHudElement.md new file mode 100644 index 0000000..ac34226 --- /dev/null +++ b/docs/api/client/api/feature/hud/TextHudElement.md @@ -0,0 +1,96 @@ +# TextHudElement + +**Package:** `org.rusherhack.client.api.feature.hud` + +**Source:** `org/rusherhack/client/api/feature/hud/TextHudElement.java` + +Basic hud element with text and a label +* **Author:** John200410 1/4/2023 + + + +## Overview + +`TextHudElement` is a class that extends [HudElement](/client/api/feature/hud/HudElement.md). + +## Constructor + +```java +public TextHudElement(String name) +``` + +```java +public TextHudElement(String name, boolean labeled) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| PADDING | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | public static final | +| labeled | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | +| widthCache | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| color | [ColorSetting](/client/api/setting/ColorSetting.md) | private final | +| labelVisible | [BooleanSetting](/core/setting/BooleanSetting.md) | private final | +| labelColor | [ColorSetting](/client/api/setting/ColorSetting.md) | private final | +| colon | [BooleanSetting](/core/setting/BooleanSetting.md) | private final | + + +## Methods + +### renderContent() + +```java +public void renderContent(RenderContext context, double mouseX, double mouseY) +``` + +### getLabel() + +```java +public String getLabel() +``` + +**Returns**: the label of this hud element + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getText() + +```java +public abstract String getText() +``` + +**Returns**: the text to be displayed + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### shouldUpdateAlignment() + +```java +protected boolean shouldUpdateAlignment() +``` + +these are too simple and dont have to be re-aligned + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/feature/module/IModule.md b/docs/api/client/api/feature/module/IModule.md new file mode 100644 index 0000000..1ae934c --- /dev/null +++ b/docs/api/client/api/feature/module/IModule.md @@ -0,0 +1,64 @@ +# IModule + +**Package:** `org.rusherhack.client.api.feature.module` + +**Source:** `org/rusherhack/client/api/feature/module/IModule.java` + +A categorized feature with settings +* **Author:** John200410 1/15/2023 + + + +## Overview + +`IModule` is a interface that extends [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md), [INotifiable](/core/notification/INotifiable.md), [IHideable](/core/interfaces/IHideable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). + +## Methods + +### getCategory() + +```java + ModuleCategory getCategory() +``` + +**Returns**: Category of this module + + + +**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) + +### getMetadata() + +```java +default String getMetadata() +``` + +**Returns**: A string containing additional information about a running module + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### isDrawn() + +```java + boolean isDrawn() +``` + +**Returns**: whether this module should be listed in hud elements + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setDrawn() + +```java + void setDrawn(boolean drawn) +``` + +Sets the drawn state for this module +* **Parameter `drawn`**: state + + + diff --git a/docs/api/client/api/feature/module/Module.md b/docs/api/client/api/feature/module/Module.md new file mode 100644 index 0000000..1102405 --- /dev/null +++ b/docs/api/client/api/feature/module/Module.md @@ -0,0 +1,250 @@ +# Module + +**Package:** `org.rusherhack.client.api.feature.module` + +**Source:** `org/rusherhack/client/api/feature/module/Module.java` + +A base module with no implementation +* **Author:** John200410 1/16/2023 + + + +## Overview + +`Module` is a class and implements [IModule](/client/api/feature/module/IModule.md), `EventListener`, [ILoggable](/core/logging/ILoggable.md), [Globals](/client/api/Globals.md). + +## Constructor + +```java +public Module(String name, ModuleCategory category) +``` + +```java +public Module(String name, String description, ModuleCategory category) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| aliases | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private final | +| category | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | private final | +| hidden | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| drawn | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| notifications | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| listening | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | private final | +| logger | [ILogger](/core/logging/ILogger.md) | protected final | + + +## Methods + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayName() + +```java +public String getDisplayName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDisplayName() + +```java +public void setDisplayName(String displayName) +``` + +### getDescription() + +```java +public String getDescription() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDescription() + +```java +public void setDescription(String description) +``` + +### getAliases() + +```java +public String[] getAliases() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + +### addAliases() + +```java +public void addAliases(String aliases) +``` + +### getReferenceKey() + +```java +public String getReferenceKey() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getCategory() + +```java +public ModuleCategory getCategory() +``` + +**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) + +### sendNotification() + +```java +public void sendNotification(NotificationType type, String message) +``` + +### sendNotification() + +```java +public void sendNotification(NotificationType type, String message, int id) +``` + +### sendNotification() + +```java +public void sendNotification(NotificationType type, Component component) +``` + +### sendNotification() + +```java +public void sendNotification(NotificationType type, Component component, int id) +``` + +### registerSettings() + +```java +public void registerSettings(Setting settings) +``` + +### getSettings() + +```java +public List> getSettings() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> + +### isDrawn() + +```java +public boolean isDrawn() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setDrawn() + +```java +public void setDrawn(boolean drawn) +``` + +### isHidden() + +```java +public boolean isHidden() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setHidden() + +```java +public void setHidden(boolean hidden) +``` + +### shouldNotify() + +```java +public boolean shouldNotify() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### areNotificationsEnabled() + +```java +public boolean areNotificationsEnabled() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setNotify() + +```java +public void setNotify(boolean notifications) +``` + +### setNotifications() + +```java +public void setNotifications(boolean notifications) +``` + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement jsonElement) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isListening() + +```java +public boolean isListening() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setListening() + +```java +public void setListening(boolean state) +``` + +### getLogger() + +```java +public ILogger getLogger() +``` + +**Returns:** [ILogger](/core/logging/ILogger.md) + +### createCommand() + +```java +public AbstractCommand createCommand() +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + diff --git a/docs/api/client/api/feature/module/ModuleCategory.md b/docs/api/client/api/feature/module/ModuleCategory.md new file mode 100644 index 0000000..f03a408 --- /dev/null +++ b/docs/api/client/api/feature/module/ModuleCategory.md @@ -0,0 +1,139 @@ +# ModuleCategory + +**Package:** `org.rusherhack.client.api.feature.module` + +**Source:** `org/rusherhack/client/api/feature/module/ModuleCategory.java` + +**Author:** John200410 1/16/2023 + + + +## Overview + +`ModuleCategory` is a class and implements [INamed](/core/interfaces/INamed.md), [IReferenceable](/core/interfaces/IReferenceable.md). + +## Constructor + +```java + ModuleCategory(String name) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| CATEGORY_REGISTRY | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ModuleCategory](/client/api/feature/module/ModuleCategory.md)> | private static final | +| CHAT | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| COMBAT | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| MISC | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| MOVEMENT | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| PLAYER | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| RENDER | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| WORLD | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| CLIENT | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| EXTERNAL | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | + + +## Methods + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayName() + +```java +public String getDisplayName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDisplayName() + +```java +public void setDisplayName(String displayName) +``` + +### isDefaultCategory() + +```java +public boolean isDefaultCategory() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getOrRegister() + +```java +public static ModuleCategory getOrRegister(String name) +``` + +**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) + +### register() + +```java +public static ModuleCategory register(String name) +``` + +Register a new module category +* **Parameter `name`**: name of the category + + + +**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) + +### register() + +```java +private static void register(ModuleCategory category) +``` + +### getCategoryByName() + +```java +public static ModuleCategory getCategoryByName(String name) +``` + +**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) + +### getCategories() + +```java +public static List getCategories() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ModuleCategory](/client/api/feature/module/ModuleCategory.md)> + +### values() + +```java +public static ModuleCategory[] values() +``` + +kept for backwards compatibility (this class used to be an enum) + +**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md)[] + +### initializeCategories() + +```java +public static void initializeCategories() +``` + +Initializes the category registry, with the default categories + +### getReferenceKey() + +```java +public String getReferenceKey() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/feature/module/ToggleableModule.md b/docs/api/client/api/feature/module/ToggleableModule.md new file mode 100644 index 0000000..070d74a --- /dev/null +++ b/docs/api/client/api/feature/module/ToggleableModule.md @@ -0,0 +1,116 @@ +# ToggleableModule + +**Package:** `org.rusherhack.client.api.feature.module` + +**Source:** `org/rusherhack/client/api/feature/module/ToggleableModule.java` + +A module that can be toggled +* **Author:** John200410 1/17/2023 + + + +## Overview + +`ToggleableModule` is a class that extends [Module](/client/api/feature/module/Module.md) and implements [IToggleable](/core/interfaces/IToggleable.md), [IBindable](/core/bind/IBindable.md). + +## Constructor + +```java +public ToggleableModule(String name, ModuleCategory category) +``` + +```java +public ToggleableModule(String name, String description, ModuleCategory category) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| toggled | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### toggle() + +```java +public void toggle() +``` + +### isToggled() + +```java +public boolean isToggled() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setToggled() + +```java +public void setToggled(boolean toggled) +``` + +### onEnable() + +```java +public void onEnable() +``` + +Called when the module is enabled. + + + +Avoid referencing the world or player here, because modules can be toggled while they are null. + +### onDisable() + +```java +public void onDisable() +``` + +Called when the module is disabled. + + + +Avoid referencing the world or player here, because modules can be toggled while they are null. + +### onKeybindEvent() + +```java +public void onKeybindEvent() +``` + +### getBindReference() + +```java +public String getBindReference() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### isListening() + +```java +public boolean isListening() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement jsonElement) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/feature/window/PinnableWindow.md b/docs/api/client/api/feature/window/PinnableWindow.md new file mode 100644 index 0000000..dd50952 --- /dev/null +++ b/docs/api/client/api/feature/window/PinnableWindow.md @@ -0,0 +1,64 @@ +# PinnableWindow + +**Package:** `org.rusherhack.client.api.feature.window` + +**Source:** `org/rusherhack/client/api/feature/window/PinnableWindow.java` + +A window that can be pinned to the screen +* **Author:** John200410 4/8/2024 + + + +## Overview + +`PinnableWindow` is a class that extends [Window](/client/api/feature/window/Window.md) and implements [IPinnable](/core/interfaces/IPinnable.md). + +## Constructor + +```java +public PinnableWindow(String title, double width, double height) +``` + +```java +public PinnableWindow(String title, double x, double y, double width, double height) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| pinned | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### isPinned() + +```java +public boolean isPinned() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setPinned() + +```java +public void setPinned(boolean pinned) +``` + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement jsonElement) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/feature/window/PopupWindow.md b/docs/api/client/api/feature/window/PopupWindow.md new file mode 100644 index 0000000..dc59a5e --- /dev/null +++ b/docs/api/client/api/feature/window/PopupWindow.md @@ -0,0 +1,79 @@ +# PopupWindow + +**Package:** `org.rusherhack.client.api.feature.window` + +**Source:** `org/rusherhack/client/api/feature/window/PopupWindow.java` + +A popup window which is meant to be created as a child of another window. +* **Author:** John200410 + + + +## Overview + +`PopupWindow` is a class that extends [Window](/client/api/feature/window/Window.md). + +## Constructor + +```java +public PopupWindow(String title, Window parent, double width, double height) +``` + +Constructs a new PopupWindow with the specified title, parent window, and size. The position of the popup window is centered relative to the parent +window. +* **Parameter `title`**: the title of the popup window + + +**Parameter `parent`**: the parent window of the popup window + + +**Parameter `width`**: the width of the popup window + + +**Parameter `height`**: the height of the popup window + + + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| content | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowContent](/client/api/ui/window/content/WindowContent.md)> | protected final | +| rootView | [WindowView](/client/api/ui/window/view/WindowView.md) | protected | + + +## Methods + +### addContent() + +```java +public void addContent(WindowContent content) +``` + +Adds a WindowContent to the content list of this popup window. +* **Parameter `content`**: the WindowContent to be added + + + +### getRootView() + +```java +public WindowView getRootView() +``` + +**Returns:** [WindowView](/client/api/ui/window/view/WindowView.md) + +### onClose() + +```java +public void onClose() +``` + +### shouldSerialize() + +```java +public boolean shouldSerialize(boolean autosave) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/feature/window/ResizeableWindow.md b/docs/api/client/api/feature/window/ResizeableWindow.md new file mode 100644 index 0000000..8eab690 --- /dev/null +++ b/docs/api/client/api/feature/window/ResizeableWindow.md @@ -0,0 +1,114 @@ +# ResizeableWindow + +**Package:** `org.rusherhack.client.api.feature.window` + +**Source:** `org/rusherhack/client/api/feature/window/ResizeableWindow.java` + +A resizeable window +* **Author:** John200410 + + + +## Overview + +`ResizeableWindow` is a class that extends [PinnableWindow](/client/api/feature/window/PinnableWindow.md). + +## Constructor + +```java +public ResizeableWindow(String title, double width, double height) +``` + +```java +public ResizeableWindow(String title, double x, double y, double width, double height) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| minWidth | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| minHeight | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| maxWidth | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| maxHeight | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| resizing | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | +| resizeDeltaX | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| resizeDeltaY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | + + +## Methods + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### mouseMoved() + +```java +public void mouseMoved(double mouseX, double mouseY) +``` + +### setResizing() + +```java +public void setResizing(boolean resizing, double resizeDeltaX, double resizeDeltaY) +``` + +### setMaxWidth() + +```java +public void setMaxWidth(double maxWidth) +``` + +### setMaxHeight() + +```java +public void setMaxHeight(double maxHeight) +``` + +### setMinWidth() + +```java +public void setMinWidth(double minWidth) +``` + +### setMinHeight() + +```java +public void setMinHeight(double minHeight) +``` + +### isResizing() + +```java +public boolean isResizing() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement jsonElement) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/feature/window/Window.md b/docs/api/client/api/feature/window/Window.md new file mode 100644 index 0000000..4409974 --- /dev/null +++ b/docs/api/client/api/feature/window/Window.md @@ -0,0 +1,367 @@ +# Window + +**Package:** `org.rusherhack.client.api.feature.window` + +**Source:** `org/rusherhack/client/api/feature/window/Window.java` + +**Author:** John200410 + + + +## Overview + +`Window` is a class that extends [ElementBase](/client/api/ui/ElementBase.md) and implements [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md), [Globals](/client/api/Globals.md), [IDraggable](/core/interfaces/IDraggable.md), [IScrollable](/core/interfaces/IScrollable.md), [ITypeable](/core/interfaces/ITypeable.md), [ITickable](/core/interfaces/ITickable.md), [IHideable](/core/interfaces/IHideable.md), [IBindable](/core/bind/IBindable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). + +## Constructor + +```java +public Window(String title, double width, double height) +``` + +Constructs a new Window with the specified title and size. The position of the window is set to (100, 100). +* **Parameter `title`**: the title of the window + + +**Parameter `width`**: the width of the window + + +**Parameter `height`**: the height of the window + + + +```java +public Window(String title, double x, double y, double width, double height) +``` + +Constructs a new Window with the specified title, position and size. +* **Parameter `title`**: the title of the window + + +**Parameter `x`**: the x-coordinate of the window's position + + +**Parameter `y`**: the y-coordinate of the window's position + + +**Parameter `width`**: the width of the window + + +**Parameter `height`**: the height of the window + + + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| icon | [IGraphic](/client/api/render/graphic/IGraphic.md) | private | +| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | private final | +| width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| focused | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| hidden | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| dragging | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| dragDeltaX | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| dragDeltaY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| defaultX | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| defaultY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| defaultWidth | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| defaultHeight | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | + + +## Methods + +### getRootView() + +```java +public abstract WindowView getRootView() +``` + +The root view that should contain all of this window's content +* **Returns**: the root view of this window + + + +**Returns:** [WindowView](/client/api/ui/window/view/WindowView.md) + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### mouseMoved() + +```java +public void mouseMoved(double mouseX, double mouseY) +``` + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### tick() + +```java +public void tick() +``` + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isHovered() + +```java +public boolean isHovered(double mouseX, double mouseY) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayName() + +```java +public String getDisplayName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDisplayName() + +```java +public void setDisplayName(String displayName) +``` + +### getDescription() + +```java +public String getDescription() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDescription() + +```java +public void setDescription(String description) +``` + +### getReferenceKey() + +```java +public String getReferenceKey() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getSettings() + +```java +public List> getSettings() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### isHidden() + +```java +public boolean isHidden() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setHidden() + +```java +public void setHidden(boolean hidden) +``` + +### reset() + +```java +public boolean reset() +``` + +Resets this window's position and visibility +* **Returns**: true if the feature was reset + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getBindReference() + +```java +public String getBindReference() +``` + +String representation of this bindable object + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### onKeybindEvent() + +```java +public void onKeybindEvent() +``` + +### onClose() + +```java +public void onClose() +``` + +### isDragging() + +```java +public boolean isDragging() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setDragging() + +```java +public void setDragging(boolean dragging, double deltaX, double deltaY) +``` + +### isFocused() + +```java +public boolean isFocused() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setFocused() + +```java +public void setFocused(boolean focused) +``` + +### setIcon() + +```java +public void setIcon(IGraphic icon) +``` + +### getIcon() + +```java +public IGraphic getIcon() +``` + +**Returns:** [IGraphic](/client/api/render/graphic/IGraphic.md) + +### renderIcon() + +```java +public boolean renderIcon(double x, double y, double width, double height) +``` + +Renders the icon of this window +* **Returns**: true if the icon was rendered, false otherwise + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### createCommand() + +```java +public AbstractCommand createCommand() +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement obj) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getRenderer() + +```java +public IRenderer2D getRenderer() +``` + +**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) + +### getFontRenderer() + +```java +public IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### snapToRenderGrid() + +```java +private double snapToRenderGrid(double value) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/plugin/IPlugin.md b/docs/api/client/api/plugin/IPlugin.md new file mode 100644 index 0000000..98ecd3e --- /dev/null +++ b/docs/api/client/api/plugin/IPlugin.md @@ -0,0 +1,45 @@ +# IPlugin + +**Package:** `org.rusherhack.client.api.plugin` + +**Source:** `org/rusherhack/client/api/plugin/IPlugin.java` + +Plugin interface for RusherHack +* **Author:** John200410 2/23/2023 + + + +## Overview + +`IPlugin` is a interface. + +## Methods + +### onLoad() + +```java + void onLoad() +``` + +Called when the plugin is loaded + +### onUnload() + +```java + void onUnload() +``` + +Called when the plugin is being unloaded + +### getLogger() + +```java + ILogger getLogger() +``` + +**Returns**: logger for the plugin + + + +**Returns:** [ILogger](/core/logging/ILogger.md) + diff --git a/docs/api/client/api/plugin/Plugin.md b/docs/api/client/api/plugin/Plugin.md new file mode 100644 index 0000000..688f7c0 --- /dev/null +++ b/docs/api/client/api/plugin/Plugin.md @@ -0,0 +1,38 @@ +# Plugin + +**Package:** `org.rusherhack.client.api.plugin` + +**Source:** `org/rusherhack/client/api/plugin/Plugin.java` + +Base implementation for [IPlugin](/client/api/plugin/IPlugin.md) +* **Author:** John200410 10/20/2023 + + + +## Overview + +`Plugin` is a class and implements [IPlugin](/client/api/plugin/IPlugin.md). + +## Constructor + +```java +public Plugin() +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| logger | [ILogger](/core/logging/ILogger.md) | protected final | + + +## Methods + +### getLogger() + +```java +public ILogger getLogger() +``` + +**Returns:** [ILogger](/core/logging/ILogger.md) + diff --git a/docs/api/client/api/render/DrawMode.md b/docs/api/client/api/render/DrawMode.md new file mode 100644 index 0000000..d4a92b5 --- /dev/null +++ b/docs/api/client/api/render/DrawMode.md @@ -0,0 +1,81 @@ +# DrawMode + +**Package:** `org.rusherhack.client.api.render` + +**Source:** `org/rusherhack/client/api/render/DrawMode.java` + +TODO: maybe use this +* **Author:** john@rusherhack.org 3/17/2026 + + + +## Overview + +`DrawMode` is a record. + +## Methods + +### fillAndOutline() + +```java +public static DrawMode fillAndOutline(int fillColor, float outlineWidth) +``` + +**Returns:** [DrawMode](/client/api/render/DrawMode.md) + +### fillAndOutline() + +```java +public static DrawMode fillAndOutline(int fillColor, float outlineWidth, int outlineColor) +``` + +**Returns:** [DrawMode](/client/api/render/DrawMode.md) + +### fill() + +```java +public static DrawMode fill(int color) +``` + +**Returns:** [DrawMode](/client/api/render/DrawMode.md) + +### outline() + +```java +public static DrawMode outline(float width, int color) +``` + +**Returns:** [DrawMode](/client/api/render/DrawMode.md) + +### outline() + +```java +public static DrawMode outline(int color) +``` + +**Returns:** [DrawMode](/client/api/render/DrawMode.md) + +### withFill() + +```java +public DrawMode withFill(int color) +``` + +**Returns:** [DrawMode](/client/api/render/DrawMode.md) + +### withOutline() + +```java +public DrawMode withOutline(float width, int color) +``` + +**Returns:** [DrawMode](/client/api/render/DrawMode.md) + +### withOutline() + +```java +public DrawMode withOutline(int color) +``` + +**Returns:** [DrawMode](/client/api/render/DrawMode.md) + diff --git a/docs/api/client/api/render/IRenderable2D.md b/docs/api/client/api/render/IRenderable2D.md new file mode 100644 index 0000000..febe2c6 --- /dev/null +++ b/docs/api/client/api/render/IRenderable2D.md @@ -0,0 +1,40 @@ +# IRenderable2D + +**Package:** `org.rusherhack.client.api.render` + +**Source:** `org/rusherhack/client/api/render/IRenderable2D.java` + +## Overview + +`IRenderable2D` is a interface. + +## Methods + +### render() + +```java +default void render(RenderContext context) +``` + +### render() + +```java + void render(RenderContext context, double mouseX, double mouseY) +``` + +### getRenderer() + +```java +default IRenderer2D getRenderer() +``` + +**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) + +### getFontRenderer() + +```java +default IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + diff --git a/docs/api/client/api/render/IRenderer2D.md b/docs/api/client/api/render/IRenderer2D.md new file mode 100644 index 0000000..f622711 --- /dev/null +++ b/docs/api/client/api/render/IRenderer2D.md @@ -0,0 +1,200 @@ +# IRenderer2D + +**Package:** `org.rusherhack.client.api.render` + +**Source:** `org/rusherhack/client/api/render/IRenderer2D.java` + +**Author:** John200410 12/29/2022 + + + +## Overview + +`IRenderer2D` is a interface that extends [IScissorable](/client/api/render/IScissorable.md). + +## Methods + +### begin() + +```java + void begin(Matrix3x2fStack matrixStack) +``` + +### begin() + +```java + void begin(Matrix3x2fStack matrixStack, IFontRenderer fontRenderer) +``` + +### begin() + +```java + void begin(GuiGraphics graphics) +``` + +### begin() + +```java + void begin(GuiGraphics graphics, IFontRenderer fontRenderer) +``` + +### end() + +```java + void end() +``` + +### isBuilding() + +```java + boolean isBuilding() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getFontRenderer() + +```java + IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### drawRectangle() + +```java +default void drawRectangle(double x, double y, double width, double height, int color) +``` + +### drawGradientRectangle() + +```java + void drawGradientRectangle(double x, double y, double endX, double endY, double width, double height, int startColor, int endColor) +``` + +### drawRectangleOutline() + +```java +default void drawRectangleOutline(double x, double y, double width, double height, float outlineWidth, int color) +``` + +### drawOutlinedRectangle() + +```java +default void drawOutlinedRectangle(double x, double y, double width, double height, float outlineWidth, int color, int outlineColor) +``` + +### drawRectangle() + +```java + void drawRectangle(double x, double y, double width, double height, float outlineWidth, int fillColor, int outlineColor) +``` + +### drawRoundedRectangle() + +```java +default void drawRoundedRectangle(double x, double y, double width, double height, double radius, int color) +``` + +### drawRoundedRectangle() + +```java + void drawRoundedRectangle(double x, double y, double width, double height, double radius, float outlineWidth, int fillColor, int outlineColor) +``` + +### drawTriangle() + +```java +default void drawTriangle(double x, double y, double size, double theta, int color) +``` + +### drawTriangleOutline() + +```java +default void drawTriangleOutline(double x, double y, double size, double theta, float outlineWidth, int color) +``` + +### drawOutlinedTriangle() + +```java +default void drawOutlinedTriangle(double x, double y, double size, double theta, float outlineWidth, int color, int outlineColor) +``` + +### drawTriangle() + +```java + void drawTriangle(double x, double y, double size, double theta, float outlineWidth, int fillColor, int outlineColor) +``` + +### drawCircle() + +```java +default void drawCircle(double x, double y, double radius, int color) +``` + +### drawCircleOutline() + +```java +default void drawCircleOutline(double x, double y, double radius, float outlineWidth, int color) +``` + +### drawOutlinedCircle() + +```java +default void drawOutlinedCircle(double x, double y, double radius, float outlineWidth, int color, int outlineColor) +``` + +### drawCircle() + +```java +default void drawCircle(double x, double y, double radius, float outlineWidth, int fillColor, int outlineColor) +``` + +### drawEllipse() + +```java +default void drawEllipse(double x, double y, double radiusX, double radiusY, int color) +``` + +### drawEllipse() + +```java + void drawEllipse(double x, double y, double radiusX, double radiusY, float outlineWidth, int fillColor, int outlineColor) +``` + +### drawLine() + +```java + void drawLine(double x1, double y1, double x2, double y2, float thickness, int color) +``` + +### drawGraphicRectangle() + +```java +default void drawGraphicRectangle(IGraphic graphic, double x, double y, double width, double height) +``` + +### drawGraphicRectangle() + +```java +default void drawGraphicRectangle(IGraphic graphic, double x, double y, double width, double height, double roundedRadius) +``` + +### drawGraphicRectangle() + +```java + void drawGraphicRectangle(IGraphic graphic, double x, double y, double width, double height, float alpha, double roundedRadius) +``` + +### queue() + +```java + void queue(Runnable runnable) +``` + +### flushQueue() + +```java + void flushQueue() +``` + diff --git a/docs/api/client/api/render/IRenderer3D.md b/docs/api/client/api/render/IRenderer3D.md new file mode 100644 index 0000000..5bcdfb8 --- /dev/null +++ b/docs/api/client/api/render/IRenderer3D.md @@ -0,0 +1,237 @@ +# IRenderer3D + +**Package:** `org.rusherhack.client.api.render` + +**Source:** `org/rusherhack/client/api/render/IRenderer3D.java` + +TODO: possibly add drawQuad methods? drawVerticalQuad, drawHorizontalQuad, drawVerticalHorizontalQuad, draw HorizontalVerticalQuad +TODO: billboarding +TODO: render text +* **Author:** John200410 5/30/2023 + + + +## Overview + +`IRenderer3D` is a interface. + +## Methods + +### begin() + +```java +default void begin(PoseStack matrixStack) +``` + +### begin() + +```java +default void begin(PoseStack matrixStack, MultiBufferSource.BufferSource bufferSource) +``` + +### begin() + +```java + void begin(PoseStack matrixStack, MultiBufferSource.BufferSource bufferSource, CameraRenderState cameraRenderState) +``` + +### end() + +```java + void end() +``` + +### isBuilding() + +```java + boolean isBuilding() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setDepthTest() + +```java + void setDepthTest(boolean depthTest) +``` + +### setLineWidth() + +```java +default void setLineWidth(float lineWidth) +``` + +### drawLine() + +```java +default void drawLine(Vec3 start, Vec3 end, int color) +``` + +### drawLine() + +```java +default void drawLine(Vec3 start, Vec3 end, float lineWidth, int color) +``` + +### drawLine() + +```java +default void drawLine(double x1, double y1, double z1, double x2, double y2, double z2, int color) +``` + +### drawLine() + +```java +default void drawLine(double x1, double y1, double z1, double x2, double y2, double z2, float lineWidth, int color) +``` + +### drawLine() + +```java + void drawLine(double x1, double y1, double z1, double x2, double y2, double z2, float lineWidth, int color1, int color2) +``` + +### drawBox() + +```java +default void drawBox(BlockPos pos, DrawMode drawMode) +``` + +### drawBox() + +```java +default void drawBox(BlockPos pos, boolean fill, boolean outline, int fillColor) +``` + +### drawBox() + +```java +default void drawBox(BlockPos pos, boolean fill, boolean outline, int fillColor, int outlineColor) +``` + +### drawBox() + +```java +default void drawBox(BlockPos pos, double expand, boolean fill, boolean outline, int fillColor, int outlineColor) +``` + +### drawBox() + +```java + void drawBox(BlockPos pos, double expand, boolean fill, boolean outline, float lineWidth, int fillColor, int outlineColor) +``` + +### drawBox() + +```java +default void drawBox(Entity entity, float partialTicks, DrawMode drawMode) +``` + +### drawBox() + +```java +default void drawBox(Entity entity, float partialTicks, boolean fill, boolean outline, int fillColor) +``` + +### drawBox() + +```java +default void drawBox(Entity entity, float partialTicks, boolean fill, boolean outline, int fillColor, int outlineColor) +``` + +### drawBox() + +```java +default void drawBox(double x, double y, double z, double width, double height, double depth, DrawMode drawMode) +``` + +### drawBox() + +```java +default void drawBox(double x, double y, double z, double width, double height, double depth, boolean fill, boolean outline, int fillColor) +``` + +### drawBox() + +```java +default void drawBox(double x, double y, double z, double width, double height, double depth, boolean fill, boolean outline, int fillColor, int outlineColor) +``` + +### drawBox() + +```java + void drawBox(double x, double y, double z, double width, double height, double depth, boolean fill, boolean outline, float lineWidth, int fillColor, int outlineColor) +``` + +### drawShape() + +```java +default void drawShape(VoxelShape shape, double x, double y, double z, DrawMode drawMode) +``` + +### drawShape() + +```java +default void drawShape(VoxelShape shape, double x, double y, double z, boolean fill, boolean outline, int fillColor) +``` + +### drawShape() + +```java +default void drawShape(VoxelShape shape, double x, double y, double z, boolean fill, boolean outline, int fillColor, int outlineColor) +``` + +### drawShape() + +```java + void drawShape(VoxelShape shape, double x, double y, double z, boolean fill, boolean outline, float lineWidth, int fillColor, int outlineColor) +``` + +### drawQuad() + +```java +default void drawQuad(Vec3 a, Vec3 b, Vec3 c, Vec3 d, int color) +``` + +### drawQuad() + +```java +default void drawQuad(double aX, double aY, double aZ, double bX, double bY, double bZ, double cX, double cY, double cZ, double dX, double dY, double dZ, int color) +``` + +### drawQuad() + +```java + void drawQuad(double aX, double aY, double aZ, int aColor, double bX, double bY, double bZ, int bColor, double cX, double cY, double cZ, int cColor, double dX, double dY, double dZ, int dColor) +``` + +### drawPlane() + +```java +default void drawPlane(double x, double y, double z, double width, double height, Direction direction, DrawMode drawMode) +``` + +### drawPlane() + +```java +default void drawPlane(double x, double y, double z, double width, double height, Direction direction, boolean fill, boolean outline, int fillColor) +``` + +### drawPlane() + +```java +default void drawPlane(double x, double y, double z, double width, double height, Direction direction, boolean fill, boolean outline, int fillColor, int outlineColor) +``` + +### projectToScreen() + +```java + Vec2 projectToScreen(Vec3 pos) +``` + +**Returns**: null if the position is off screen + + + +**Returns:** `Vec2` + diff --git a/docs/api/client/api/render/IScissorable.md b/docs/api/client/api/render/IScissorable.md new file mode 100644 index 0000000..c282a7e --- /dev/null +++ b/docs/api/client/api/render/IScissorable.md @@ -0,0 +1,38 @@ +# IScissorable + +**Package:** `org.rusherhack.client.api.render` + +**Source:** `org/rusherhack/client/api/render/IScissorable.java` + +## Overview + +`IScissorable` is a interface. + +## Methods + +### beginScissor() + +```java +default void beginScissor() +``` + +TODO: remove + +### endScissor() + +```java +default void endScissor() +``` + +### scissorBox() + +```java + void scissorBox(double x, double y, double width, double height) +``` + +### popScissorBox() + +```java + void popScissorBox() +``` + diff --git a/docs/api/client/api/render/RenderContext.md b/docs/api/client/api/render/RenderContext.md new file mode 100644 index 0000000..4c0516e --- /dev/null +++ b/docs/api/client/api/render/RenderContext.md @@ -0,0 +1,24 @@ +# RenderContext + +**Package:** `org.rusherhack.client.api.render` + +**Source:** `org/rusherhack/client/api/render/RenderContext.java` + +**Author:** John200410 8/10/2023 + + + +## Overview + +`RenderContext` is a record. + +## Methods + +### pose() + +```java +public Matrix3x2fStack pose() +``` + +**Returns:** `Matrix3x2fStack` + diff --git a/docs/api/client/api/render/font/IFontRenderer.md b/docs/api/client/api/render/font/IFontRenderer.md new file mode 100644 index 0000000..5eddd01 --- /dev/null +++ b/docs/api/client/api/render/font/IFontRenderer.md @@ -0,0 +1,253 @@ +# IFontRenderer + +**Package:** `org.rusherhack.client.api.render.font` + +**Source:** `org/rusherhack/client/api/render/font/IFontRenderer.java` + +Interface for font rendering + + + +TODO: documentation +* **Author:** John200410 + + + +## Overview + +`IFontRenderer` is a interface that extends [IScissorable](/client/api/render/IScissorable.md). + +## Methods + +### begin() + +```java + void begin(GuiGraphics graphics) +``` + +### end() + +```java + void end() +``` + +### isBuilding() + +```java + boolean isBuilding() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### drawString() + +```java +default double drawString(String text, double x, double y, int color) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawString() + +```java +default double drawString(FormattedText text, double x, double y, int color) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawString() + +```java +default double drawString(FormattedCharSequence text, double x, double y, int color) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawString() + +```java +default double drawString(String text, double x, double y, int color, boolean shadow) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawString() + +```java +default double drawString(FormattedText text, double x, double y, int color, boolean shadow) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawString() + +```java +default double drawString(FormattedCharSequence text, double x, double y, int color, boolean shadow) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawString() + +```java + double drawString(PoseStack matrixStack, String text, double x, double y, int color, boolean shadow) +``` + +Draws a string at the specified coordinates +* **Parameter `matrixStack`**: the matrix stack to use if the font renderer is not currently building + + +**Parameter `text`**: string to draw + + +**Parameter `x`**: x coordinate + + +**Parameter `y`**: y coordinate + + +**Parameter `color`**: argb color of the string + + +**Parameter `shadow`**: whether to draw a shadow + + +**Returns**: the end x coordinate of the drawn string + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawString() + +```java + double drawString(PoseStack matrixStack, FormattedCharSequence text, double x, double y, int color, boolean shadow) +``` + +Draws a string at the specified coordinates +* **Parameter `matrixStack`**: the matrix stack to use if the font renderer is not currently building + + +**Parameter `text`**: text component to draw + + +**Parameter `x`**: x coordinate + + +**Parameter `y`**: y coordinate + + +**Parameter `color`**: argb color of the string + + +**Parameter `shadow`**: whether to draw a shadow + + +**Returns**: the end x coordinate of the drawn string + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawWrappedText() + +```java +default double drawWrappedText(String text, double x, double y, int color, double maxWidth, double spacing) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawWrappedText() + +```java +default double drawWrappedText(String text, double x, double y, int color, boolean shadow, double maxWidth, double spacing) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawWrappedText() + +```java +default double drawWrappedText(FormattedText text, double x, double y, int color, double maxWidth, double spacing) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawWrappedText() + +```java +default double drawWrappedText(FormattedText text, double x, double y, int color, boolean shadow, double maxWidth, double spacing) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawWrappedText() + +```java + double drawWrappedText(PoseStack matrixStack, String text, double x, double y, int color, boolean shadow, double maxWidth, double spacing) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### drawWrappedText() + +```java + double drawWrappedText(PoseStack matrixStack, FormattedText text, double x, double y, int color, boolean shadow, double maxWidth, double spacing) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getStringWidth() + +```java + double getStringWidth(String text) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getFontHeight() + +```java + double getFontHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getDefaultShadowState() + +```java + boolean getDefaultShadowState() +``` + +If the shadow parameter is not specified, font renderer will use this value +* **Returns**: the default shadow state + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setDefaultShadowState() + +```java + void setDefaultShadowState(boolean state) +``` + +Sets the default shadow state to be used whenever the shadow parameter is not specified +* @param state + +### splitString() + +```java +default List splitString(String string, double maxWidth) +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + +### trimStringToWidth() + +```java +default String trimStringToWidth(String string, double width) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/render/graphic/AbstractGraphic.md b/docs/api/client/api/render/graphic/AbstractGraphic.md new file mode 100644 index 0000000..76f7b82 --- /dev/null +++ b/docs/api/client/api/render/graphic/AbstractGraphic.md @@ -0,0 +1,74 @@ +# AbstractGraphic + +**Package:** `org.rusherhack.client.api.render.graphic` + +**Source:** `org/rusherhack/client/api/render/graphic/AbstractGraphic.java` + +Base implementation for graphics backed by in-memory bytes. +* **Author:** john@rusherhack.org 4/26/2026 + + + +## Overview + +`AbstractGraphic` is a class and implements [IGraphic](/client/api/render/graphic/IGraphic.md). + +## Constructor + +```java +protected AbstractGraphic(InputStream inputStream, int width, int height, int xOffset, int yOffset) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| data | [byte](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Byte.html) | private final | +| width | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| height | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| xOffset | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| yOffset | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | + + +## Methods + +### openInputStream() + +```java +public InputStream openInputStream() +``` + +**Returns:** [InputStream](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/InputStream.html) + +### getWidth() + +```java +public int getWidth() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getHeight() + +```java +public int getHeight() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getXOffset() + +```java +public int getXOffset() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getYOffset() + +```java +public int getYOffset() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/render/graphic/IGraphic.md b/docs/api/client/api/render/graphic/IGraphic.md new file mode 100644 index 0000000..8f3ed02 --- /dev/null +++ b/docs/api/client/api/render/graphic/IGraphic.md @@ -0,0 +1,69 @@ +# IGraphic + +**Package:** `org.rusherhack.client.api.render.graphic` + +**Source:** `org/rusherhack/client/api/render/graphic/IGraphic.java` + +Interface for graphics that can be rendered +* **Author:** John200410 1/31/2023 + + + +## Overview + +`IGraphic` is a interface. + +## Methods + +### openInputStream() + +```java + InputStream openInputStream() +``` + +Opens a fresh input stream for this graphic's source data. + +**Returns:** [InputStream](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/InputStream.html) + +### getInputStream() + +```java +default InputStream getInputStream() +``` + +@deprecated Use ``#openInputStream(). + +**Returns:** [InputStream](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/InputStream.html) + +### getWidth() + +```java + int getWidth() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getHeight() + +```java + int getHeight() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getXOffset() + +```java + int getXOffset() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getYOffset() + +```java + int getYOffset() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/render/graphic/TextureGraphic.md b/docs/api/client/api/render/graphic/TextureGraphic.md new file mode 100644 index 0000000..1b17cb2 --- /dev/null +++ b/docs/api/client/api/render/graphic/TextureGraphic.md @@ -0,0 +1,28 @@ +# TextureGraphic + +**Package:** `org.rusherhack.client.api.render.graphic` + +**Source:** `org/rusherhack/client/api/render/graphic/TextureGraphic.java` + +**Author:** John200410 1/31/2023 + + + +## Overview + +`TextureGraphic` is a class that extends [AbstractGraphic](/client/api/render/graphic/AbstractGraphic.md). + +## Constructor + +```java +public TextureGraphic(String path, int width, int height) +``` + +```java +public TextureGraphic(InputStream inputStream, int width, int height) +``` + +```java +public TextureGraphic(InputStream inputStream, int u, int v, int width, int height) +``` + diff --git a/docs/api/client/api/render/graphic/VectorGraphic.md b/docs/api/client/api/render/graphic/VectorGraphic.md new file mode 100644 index 0000000..bcf4dea --- /dev/null +++ b/docs/api/client/api/render/graphic/VectorGraphic.md @@ -0,0 +1,47 @@ +# VectorGraphic + +**Package:** `org.rusherhack.client.api.render.graphic` + +**Source:** `org/rusherhack/client/api/render/graphic/VectorGraphic.java` + +A vector graphic +* **Author:** John200410 1/31/2023 + + + +## Overview + +`VectorGraphic` is a class that extends [AbstractGraphic](/client/api/render/graphic/AbstractGraphic.md). + +## Constructor + +```java +public VectorGraphic(String path, int width, int height) +``` + +```java +public VectorGraphic(InputStream inputStream, int width, int height) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| svgWidth | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | +| svgHeight | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | + + +## Methods + +### setSvgWidth() + +```java +public void setSvgWidth(int svgWidth) +``` + +### setSvgHeight() + +```java +public void setSvgHeight(int svgHeight) +``` + diff --git a/docs/api/client/api/setting/BindSetting.md b/docs/api/client/api/setting/BindSetting.md new file mode 100644 index 0000000..7907f7c --- /dev/null +++ b/docs/api/client/api/setting/BindSetting.md @@ -0,0 +1,106 @@ +# BindSetting + +**Package:** `org.rusherhack.client.api.setting` + +**Source:** `org/rusherhack/client/api/setting/BindSetting.java` + +**Author:** John200410 5/10/2023 + + + +## Overview + +`BindSetting` is a class that extends [Setting](/core/setting/Setting.md). + +## Constructor + +```java +public BindSetting(String name, IKey value) +``` + +```java +public BindSetting(String name, String description, IKey value) +``` + +## Methods + +### parseValue() + +```java +public IKey parseValue(String string, boolean set) +``` + +**Returns:** [IKey](/core/bind/key/IKey.md) + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### deserializeValue() + +```java +public boolean deserializeValue(JsonElement json) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serializeValue() + +```java +public JsonElement serializeValue() +``` + +**Returns:** `JsonElement` + +### setDescription() + +```java +public BindSetting setDescription(String description) +``` + +**Returns:** [BindSetting](/client/api/setting/BindSetting.md) + +### setVisibility() + +```java +public BindSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [BindSetting](/client/api/setting/BindSetting.md) + +### onChange() + +```java +public BindSetting onChange(Runnable run) +``` + +**Returns:** [BindSetting](/client/api/setting/BindSetting.md) + +### onChange() + +```java +public BindSetting onChange(Consumer consumer) +``` + +**Returns:** [BindSetting](/client/api/setting/BindSetting.md) + +### setHidden() + +```java +public BindSetting setHidden(boolean hidden) +``` + +**Returns:** [BindSetting](/client/api/setting/BindSetting.md) + +### setShouldSerialize() + +```java +public BindSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [BindSetting](/client/api/setting/BindSetting.md) + diff --git a/docs/api/client/api/setting/BlockListSetting.md b/docs/api/client/api/setting/BlockListSetting.md new file mode 100644 index 0000000..4dd9e40 --- /dev/null +++ b/docs/api/client/api/setting/BlockListSetting.md @@ -0,0 +1,110 @@ +# BlockListSetting + +**Package:** `org.rusherhack.client.api.setting` + +**Source:** `org/rusherhack/client/api/setting/BlockListSetting.java` + +**Author:** john@rusherhack.org 12/18/2025 + + + +## Overview + +`BlockListSetting` is a class that extends [ListSetting](/core/setting/ListSetting.md). + +## Constructor + +```java +public BlockListSetting(String name, Block defaultItems) +``` + +```java +public BlockListSetting(String name, String description, Block defaultItems) +``` + +```java +public BlockListSetting(String name, String description, boolean toggleable, Block defaultItems) +``` + +## Methods + +### serializeElement() + +```java +public JsonElement serializeElement(Block block) +``` + +**Returns:** `JsonElement` + +### deserializeElement() + +```java +public Block deserializeElement(JsonElement element) +``` + +**Returns:** `Block` + +### parseElement() + +```java +public Block parseElement(String string) +``` + +**Returns:** `Block` + +### getElementDisplayName() + +```java +public String getElementDisplayName(Block block) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getElementAttributes() + +```java +public String[] getElementAttributes(Block element) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + +### createCommand() + +```java +public AbstractCommand createCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### getPossibleElements() + +```java +public Collection getPossibleElements() +``` + +**Returns:** [Collection](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Collection.html)<`Block`> + +### createAddCommand() + +```java +protected AbstractCommand createAddCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createRemoveCommand() + +```java +protected AbstractCommand createRemoveCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createListCommand() + +```java +protected AbstractCommand createListCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + diff --git a/docs/api/client/api/setting/ColorSetting.md b/docs/api/client/api/setting/ColorSetting.md new file mode 100644 index 0000000..21909e9 --- /dev/null +++ b/docs/api/client/api/setting/ColorSetting.md @@ -0,0 +1,361 @@ +# ColorSetting + +**Package:** `org.rusherhack.client.api.setting` + +**Source:** `org/rusherhack/client/api/setting/ColorSetting.java` + +**Author:** John200410 6/10/2023 + + + +## Overview + +`ColorSetting` is a class that extends [Setting](/core/setting/Setting.md). + +## Constructor + +```java +public ColorSetting(String name, Color value) +``` + +```java +public ColorSetting(String name, String description, int value) +``` + +```java +public ColorSetting(String name, String description, Color value) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| rainbow | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| hasRainbowOption | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| rainbowMode | [RainbowMode](/client/api/setting/RainbowMode.md) | private | +| rainbowOffset | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | +| hasAlpha | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| themeSync | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| themeSyncAllowed | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### getRealValue() + +```java +public Color getRealValue() +``` + +**Returns:** `Color` + +### getValue() + +```java +public Color getValue() +``` + +**Returns:** `Color` + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getRainbowWithOffset() + +```java +public int getRainbowWithOffset(int offset) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getValueRGB() + +```java +public int getValueRGB() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### isRainbow() + +```java +public boolean isRainbow() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setRainbow() + +```java +public ColorSetting setRainbow(boolean rainbow) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### isRainbowAllowed() + +```java +public boolean isRainbowAllowed() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setRainbowAllowed() + +```java +public ColorSetting setRainbowAllowed(boolean hasRainbowOption) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### getRainbowMode() + +```java +public RainbowMode getRainbowMode() +``` + +**Returns:** [RainbowMode](/client/api/setting/RainbowMode.md) + +### setRainbowMode() + +```java +public void setRainbowMode(RainbowMode rainbowMode) +``` + +### getRainbowOffset() + +```java +public int getRainbowOffset() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setRainbowOffset() + +```java +public void setRainbowOffset(int rainbowOffset) +``` + +### isAlphaAllowed() + +```java +public boolean isAlphaAllowed() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setAlphaAllowed() + +```java +public ColorSetting setAlphaAllowed(boolean hasAlpha) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### isThemeSync() + +```java +public boolean isThemeSync() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setThemeSync() + +```java +public ColorSetting setThemeSync(boolean themeSync) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### isThemeSyncAllowed() + +```java +public boolean isThemeSyncAllowed() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setThemeSyncAllowed() + +```java +public ColorSetting setThemeSyncAllowed(boolean themeSyncAllowed) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### parseValue() + +```java +public Color parseValue(String string, boolean set) +``` + +**Returns:** `Color` + +### deserializeValue() + +```java +public boolean deserializeValue(JsonElement json) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serializeValue() + +```java +public JsonElement serializeValue() +``` + +**Returns:** `JsonElement` + +### getRed() + +```java +public int getRed() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setRed() + +```java +public void setRed(int red) +``` + +### getGreen() + +```java +public int getGreen() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setGreen() + +```java +public void setGreen(int green) +``` + +### getBlue() + +```java +public int getBlue() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setBlue() + +```java +public void setBlue(int blue) +``` + +### getAlpha() + +```java +public int getAlpha() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setAlpha() + +```java +public void setAlpha(int alpha) +``` + +### setAlphaAllowed() + +```java +public void setAlphaAllowed(int alpha) +``` + +i fucked up and named it that by accident + +### setHue() + +```java +public void setHue(float hue) +``` + +**Parameter `hue`**: 0-1 + + + +### getHue() + +```java +public float getHue() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getSaturation() + +```java +public float getSaturation() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getBrightness() + +```java +public float getBrightness() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setDescription() + +```java +public ColorSetting setDescription(String description) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### setVisibility() + +```java +public ColorSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### onChange() + +```java +public ColorSetting onChange(Runnable run) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### onChange() + +```java +public ColorSetting onChange(Consumer consumer) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### setHidden() + +```java +public ColorSetting setHidden(boolean hidden) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### setShouldSerialize() + +```java +public ColorSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + diff --git a/docs/api/client/api/setting/EntityTypeListSetting.md b/docs/api/client/api/setting/EntityTypeListSetting.md new file mode 100644 index 0000000..6084fbd --- /dev/null +++ b/docs/api/client/api/setting/EntityTypeListSetting.md @@ -0,0 +1,110 @@ +# EntityTypeListSetting + +**Package:** `org.rusherhack.client.api.setting` + +**Source:** `org/rusherhack/client/api/setting/EntityTypeListSetting.java` + +**Author:** john@rusherhack.org 12/24/2025 + + + +## Overview + +`EntityTypeListSetting` is a class that extends [ListSetting](/core/setting/ListSetting.md). + +## Constructor + +```java +public EntityTypeListSetting(String name, EntityType defaultItems) +``` + +```java +public EntityTypeListSetting(String name, String description, EntityType defaultItems) +``` + +```java +public EntityTypeListSetting(String name, String description, boolean toggleable, EntityType defaultItems) +``` + +## Methods + +### serializeElement() + +```java +public JsonElement serializeElement(EntityType entityType) +``` + +**Returns:** `JsonElement` + +### deserializeElement() + +```java +public EntityType deserializeElement(JsonElement element) +``` + +**Returns:** `EntityType`<`?`> + +### parseElement() + +```java +public EntityType parseElement(String string) +``` + +**Returns:** `EntityType`<`?`> + +### getElementDisplayName() + +```java +public String getElementDisplayName(EntityType entityType) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getElementAttributes() + +```java +public String[] getElementAttributes(EntityType element) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + +### createCommand() + +```java +public AbstractCommand createCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### getPossibleElements() + +```java +public Collection> getPossibleElements() +``` + +**Returns:** [Collection](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Collection.html)<`EntityType`<`?`>> + +### createAddCommand() + +```java +protected AbstractCommand createAddCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createRemoveCommand() + +```java +protected AbstractCommand createRemoveCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createListCommand() + +```java +protected AbstractCommand createListCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + diff --git a/docs/api/client/api/setting/ItemListSetting.md b/docs/api/client/api/setting/ItemListSetting.md new file mode 100644 index 0000000..e3f903b --- /dev/null +++ b/docs/api/client/api/setting/ItemListSetting.md @@ -0,0 +1,110 @@ +# ItemListSetting + +**Package:** `org.rusherhack.client.api.setting` + +**Source:** `org/rusherhack/client/api/setting/ItemListSetting.java` + +**Author:** john@rusherhack.org 12/24/2025 + + + +## Overview + +`ItemListSetting` is a class that extends [ListSetting](/core/setting/ListSetting.md). + +## Constructor + +```java +public ItemListSetting(String name, Item defaultItems) +``` + +```java +public ItemListSetting(String name, String description, Item defaultItems) +``` + +```java +public ItemListSetting(String name, String description, boolean toggleable, Item defaultItems) +``` + +## Methods + +### serializeElement() + +```java +public JsonElement serializeElement(Item item) +``` + +**Returns:** `JsonElement` + +### deserializeElement() + +```java +public Item deserializeElement(JsonElement element) +``` + +**Returns:** `Item` + +### parseElement() + +```java +public Item parseElement(String string) +``` + +**Returns:** `Item` + +### getElementDisplayName() + +```java +public String getElementDisplayName(Item item) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getElementAttributes() + +```java +public String[] getElementAttributes(Item element) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + +### createCommand() + +```java +public AbstractCommand createCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### getPossibleElements() + +```java +public Collection getPossibleElements() +``` + +**Returns:** [Collection](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Collection.html)<`Item`> + +### createAddCommand() + +```java +protected AbstractCommand createAddCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createRemoveCommand() + +```java +protected AbstractCommand createRemoveCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createListCommand() + +```java +protected AbstractCommand createListCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + diff --git a/docs/api/client/api/setting/ModeSetting.md b/docs/api/client/api/setting/ModeSetting.md new file mode 100644 index 0000000..ba934ea --- /dev/null +++ b/docs/api/client/api/setting/ModeSetting.md @@ -0,0 +1,106 @@ +# ModeSetting + +**Package:** `org.rusherhack.client.api.setting` + +**Source:** `org/rusherhack/client/api/setting/ModeSetting.java` + +**Author:** john@rusherhack.org 12/26/2025 + + + +## Overview + +`ModeSetting` is a class that extends [OptionSetting](/core/setting/OptionSetting.md). + +## Constructor + +```java +public ModeSetting(String name, T value, T options) +``` + +```java +public ModeSetting(String name, String description, T value, T options) +``` + +## Methods + +### parseValue() + +```java +public T parseValue(String string, boolean set) +``` + +**Returns:** `T` + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### serializeValue() + +```java +public JsonElement serializeValue() +``` + +**Returns:** `JsonElement` + +### deserializeValue() + +```java +public boolean deserializeValue(JsonElement json) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setDescription() + +```java +public ModeSetting setDescription(String description) +``` + +**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> + +### setVisibility() + +```java +public ModeSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> + +### onChange() + +```java +public ModeSetting onChange(Runnable run) +``` + +**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> + +### onChange() + +```java +public ModeSetting onChange(Consumer consumer) +``` + +**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> + +### setHidden() + +```java +public ModeSetting setHidden(boolean hidden) +``` + +**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> + +### setShouldSerialize() + +```java +public ModeSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> + diff --git a/docs/api/client/api/setting/RainbowMode.md b/docs/api/client/api/setting/RainbowMode.md new file mode 100644 index 0000000..d9a3cf1 --- /dev/null +++ b/docs/api/client/api/setting/RainbowMode.md @@ -0,0 +1,18 @@ +# RainbowMode + +**Package:** `org.rusherhack.client.api.setting` + +**Source:** `org/rusherhack/client/api/setting/ColorSetting.java` + +## Overview + +`RainbowMode` is a enum. + +## Constants + +### DEFAULT + +### RAINBOW + +### GRADIENT + diff --git a/docs/api/client/api/system/Accessor.md b/docs/api/client/api/system/Accessor.md new file mode 100644 index 0000000..9d995ef --- /dev/null +++ b/docs/api/client/api/system/Accessor.md @@ -0,0 +1,20 @@ +# Accessor + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IFieldRegistry.java` + +## Overview + +`Accessor` is a interface. + +## Methods + +### getValue() + +```java + Object getValue() +``` + +**Returns:** [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html) + diff --git a/docs/api/client/api/system/ColorMode.md b/docs/api/client/api/system/ColorMode.md new file mode 100644 index 0000000..e786a01 --- /dev/null +++ b/docs/api/client/api/system/ColorMode.md @@ -0,0 +1,16 @@ +# ColorMode + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/Colors.java` + +## Overview + +`ColorMode` is a enum. + +## Constants + +### STATIC + +### DISTANCE + diff --git a/docs/api/client/api/system/Colors.md b/docs/api/client/api/system/Colors.md new file mode 100644 index 0000000..0f0bfdf --- /dev/null +++ b/docs/api/client/api/system/Colors.md @@ -0,0 +1,55 @@ +# Colors + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/Colors.java` + +Interface for grabbing the user's color preferences +* **Author:** John200410 6/16/2023 + + + +## Overview + +`Colors` is a interface. + +## Methods + +### primaryColor() + +```java + ColorSetting primaryColor() +``` + +**Returns**: the primary theme color + + + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### getRainbowColor() + +```java + int getRainbowColor(ColorSetting setting, int offsetMs) +``` + +Uses `org.rusherhack.core.utils.ColorUtils` to get either a rainbow or gradient color based on color preferences + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getEntityColor() + +```java + Color getEntityColor(Entity entity, ColorMode mode) +``` + +**Returns:** `Color` + +### getBlockEntityColor() + +```java + Color getBlockEntityColor(BlockEntity tileEntity, ColorMode mode) +``` + +**Returns:** `Color` + diff --git a/docs/api/client/api/system/Entities.md b/docs/api/client/api/system/Entities.md new file mode 100644 index 0000000..48a7cc6 --- /dev/null +++ b/docs/api/client/api/system/Entities.md @@ -0,0 +1,56 @@ +# Entities + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/Entities.java` + +**Author:** John200410 6/20/2023 + + + +## Overview + +`Entities` is a interface. + +## Methods + +### isPassiveMob() + +```java + boolean isPassiveMob(Entity entity) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isNeutralMob() + +```java + boolean isNeutralMob(Entity entity) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isHostileMob() + +```java + boolean isHostileMob(Entity entity) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isProjectileEntity() + +```java + boolean isProjectileEntity(Entity entity) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isVehicleEntity() + +```java + boolean isVehicleEntity(Entity entity) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/system/Fonts.md b/docs/api/client/api/system/Fonts.md new file mode 100644 index 0000000..c032fae --- /dev/null +++ b/docs/api/client/api/system/Fonts.md @@ -0,0 +1,88 @@ +# Fonts + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/Fonts.java` + +**Author:** John200410 6/21/2023 + + + +## Overview + +`Fonts` is a interface. + +## Methods + +### getFontRenderer() + +```java + IFontRenderer getFontRenderer() +``` + +**Returns**: the preferred font renderer set by the user (whether the Font module is enabled or not) + + + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### getCustomFontRenderer() + +```java + IFontRenderer getCustomFontRenderer() +``` + +**Returns**: the custom font renderer + + + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### getVanillaFontRenderer() + +```java + IFontRenderer getVanillaFontRenderer() +``` + +**Returns**: the vanilla font renderer + + + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### getClickGuiFontRenderer() + +```java + IFontRenderer getClickGuiFontRenderer() +``` + +**Returns**: the preferred font renderer for the click GUI panels + + + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### getHudFontRenderer() + +```java + IFontRenderer getHudFontRenderer() +``` + +**Returns**: the preferred font renderer for HUD elements + + + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### getWindowFontRenderer() + +```java + IFontRenderer getWindowFontRenderer() +``` + +**Returns**: the preferred font renderer for windows + + + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + diff --git a/docs/api/client/api/system/IChunkProcessor.md b/docs/api/client/api/system/IChunkProcessor.md new file mode 100644 index 0000000..e1958e2 --- /dev/null +++ b/docs/api/client/api/system/IChunkProcessor.md @@ -0,0 +1,46 @@ +# IChunkProcessor + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IChunkProcessor.java` + +Interface for accessing the rusherhack chunk processor +* **Author:** John200410 7/6/2024 + + + +## Overview + +`IChunkProcessor` is a interface. + +## Methods + +### registerProcessee() + +```java + void registerProcessee(Processee processee) +``` + +Add a processee to the chunk processor +* @param processee + +### reloadChunks() + +```java + void reloadChunks() +``` + +Tells the chunk processor to re-scan every chunk in render distance + +### scanChunk() + +```java + void scanChunk(ChunkPos chunkPos, Predicate predicate, Consumer> consumer) +``` + +Scans a chunk for blocks that match the predicate +* **Parameter `chunkPos`**: @param predicate + + +@param consumer + diff --git a/docs/api/client/api/system/IConfigManager.md b/docs/api/client/api/system/IConfigManager.md new file mode 100644 index 0000000..6f12fb6 --- /dev/null +++ b/docs/api/client/api/system/IConfigManager.md @@ -0,0 +1,66 @@ +# IConfigManager + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IConfigManager.java` + +Interface for rusherhack's config manager +* NOTE: this will probably be heavily changed in rusherhack v2.1 +* **Author:** john@rusherhack.org 12/14/2025 + + + +## Overview + +`IConfigManager` is a interface. + +## Methods + +### registerConfig() + +```java + void registerConfig(Configuration config, ISerializable serializable) +``` + +Register a config to the config manager. + + + +It will be automatically saved/loaded alongside other rusherhack configs + +### reloadConfig() + +```java + boolean reloadConfig(Configuration config) +``` + +Loads a config + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### saveConfig() + +```java + boolean saveConfig(Configuration config) +``` + +Saves a config + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### load() + +```java + void load() +``` + +Loads all configs + +### save() + +```java + void save() +``` + +Saves all configs + diff --git a/docs/api/client/api/system/IFieldRegistry.md b/docs/api/client/api/system/IFieldRegistry.md new file mode 100644 index 0000000..eef49bc --- /dev/null +++ b/docs/api/client/api/system/IFieldRegistry.md @@ -0,0 +1,51 @@ +# IFieldRegistry + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IFieldRegistry.java` + +Interface for the field registry + + + +Allows plugins to read some fields for internal rusherhack objects, like modules +* **Author:** john@rusherhack.org 12/9/2025 + + + +## Overview + +`IFieldRegistry` is a interface. + +## Methods + +### accessField() + +```java + T accessField(Object object, String name) +``` + +Finds a field in the registry associated with the object +* **Returns**: the value, or null if not found + + + +**Returns:** `T` + +### registerField() + +```java + void registerField(Object object, String name, Accessor accessor) +``` + +Adds a field to the registry +* **Parameter `object`**: object this field is associated with + + +**Parameter `name`**: name of field + + +**Parameter `accessor`**: accessor for the field value + + + diff --git a/docs/api/client/api/system/IHudManager.md b/docs/api/client/api/system/IHudManager.md new file mode 100644 index 0000000..3d2a926 --- /dev/null +++ b/docs/api/client/api/system/IHudManager.md @@ -0,0 +1,107 @@ +# IHudManager + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IHudManager.java` + +**Author:** John200410 7/16/2023 + + + +## Overview + +`IHudManager` is a interface that extends [IFeatureManager](/core/feature/IFeatureManager.md). + +## Methods + +### moveToTop() + +```java + void moveToTop(HudElement element) +``` + +Moves a HUD element to the top +* **Parameter `element`**: hud element + + + +### getScale() + +```java + double getScale() +``` + +**Returns**: The scale of the HUD + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getPrimaryColor() + +```java + Color getPrimaryColor() +``` + +**Returns**: The primary color of the HUD + + + +**Returns:** `Color` + +### getSecondaryColor() + +```java + Color getSecondaryColor() +``` + +**Returns**: The secondary color of the HUD + + + +**Returns:** `Color` + +### getBackgroundColor() + +```java + Color getBackgroundColor() +``` + +**Returns**: The color for HUD element backgrounds + + + +**Returns:** `Color` + +### isThemeColorSynced() + +```java + boolean isThemeColorSynced() +``` + +**Returns**: Whether global theme color syncing is enabled for hud elements + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isGlobalColorSynced() + +```java + boolean isGlobalColorSynced() +``` + +**Returns**: Whether global color syncing is enabled for hud elements + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getModuleToggleColor() + +```java + Color getModuleToggleColor(boolean toggled) +``` + +**Returns:** `Color` + diff --git a/docs/api/client/api/system/IInteractions.md b/docs/api/client/api/system/IInteractions.md new file mode 100644 index 0000000..396b3cb --- /dev/null +++ b/docs/api/client/api/system/IInteractions.md @@ -0,0 +1,130 @@ +# IInteractions + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IInteractions.java` + +Interface for InteractionUtils +* **Author:** John200410 1/11/2024 + + + +## Overview + +`IInteractions` is a interface. + +## Methods + +### placeBlock() + +```java + boolean placeBlock(BlockPos blockPos, InteractionHand hand, boolean raytrace) +``` + +Tries to place a block at the given position +* **Parameter `blockPos`**: @param hand + + +**Parameter `raytrace`**: **Returns**: false if unable to place a block at the given position + + + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### useBlock() + +```java + boolean useBlock(BlockPos pos, InteractionHand hand, boolean strictDir, boolean raytrace) +``` + +Tries to right click a block +* **Parameter `pos`**: the position of the block + + +**Parameter `hand`**: the hand to use + + +**Parameter `raytrace`**: **Returns**: false if unable to use the block + + + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### useBlock() + +```java + boolean useBlock(BlockHitResult hitResult, InteractionHand hand, boolean trySneaking) +``` + +Right clicks a block +* **Parameter `hitResult`**: the hit result of the block + + +**Parameter `hand`**: the hand to use + + +**Parameter `trySneaking`**: should be true if you are trying to place a block + + +**Returns**: true if the action was consumed + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getBlockPlaceHitResult() + +```java + BlockHitResult getBlockPlaceHitResult(BlockPos blockPos, boolean strictDir, boolean raytrace, double maxRange) +``` + +Calculates the best relative block that we can place on to place a block at the given position +* **Parameter `blockPos`**: The position we want to place the block + + +**Returns**: The best hit result + + + +**Returns:** `BlockHitResult` + +### getBlockHitResult() + +```java + BlockHitResult getBlockHitResult(BlockPos blockPos, boolean strictDir, boolean raytrace, double maxRange) +``` + +Calculates the best spot to reach a block +* **Parameter `blockPos`**: @param raytrace + + +**Parameter `maxRange`**: **Returns**: + + + + +**Returns:** `BlockHitResult` + +### useEntity() + +```java + boolean useEntity(Entity entity, InteractionHand hand) +``` + +Tries to right click an entity +* **Parameter `entity`**: the entity + + +**Parameter `hand`**: the hand to use + + +**Returns**: whether the action was successful or not + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/system/INotificationManager.md b/docs/api/client/api/system/INotificationManager.md new file mode 100644 index 0000000..b2a3021 --- /dev/null +++ b/docs/api/client/api/system/INotificationManager.md @@ -0,0 +1,125 @@ +# INotificationManager + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/INotificationManager.java` + +Interface for sending notifications to the client +* **Author:** John200410 + + + +## Overview + +`INotificationManager` is a interface that extends [ILog](/core/logging/ILog.md). + +## Methods + +### shouldNotifyModuleToggles() + +```java + boolean shouldNotifyModuleToggles() +``` + +**Returns**: true if module toggle notifications are enabled + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### send() + +```java +default void send(NotificationType type, String text) +``` + +### send() + +```java +default void send(NotificationType type, Component text) +``` + +### send() + +```java +default void send(NotificationType type, String prefix, String text) +``` + +### send() + +```java +default void send(NotificationType type, String prefix, Component text) +``` + +### send() + +```java +default void send(NotificationType type, String text, int id) +``` + +### send() + +```java +default void send(NotificationType type, Component text, int id) +``` + +### send() + +```java +default void send(NotificationType type, String prefix, String text, int id) +``` + +### send() + +```java + void send(NotificationType type, String prefix, Component text, int id) +``` + +### chat() + +```java +default void chat(String string) +``` + +### chat() + +```java +default void chat(String string, Style textStyle) +``` + +### chat() + +```java +default void chat(Component component) +``` + +### chat() + +```java + void chat(Component component, int tagColor, Style prefixStyle, int id) +``` + +### info() + +```java +default void info(String message) +``` + +### warn() + +```java +default void warn(String message) +``` + +### error() + +```java +default void error(String message) +``` + +### debug() + +```java +default void debug(String message) +``` + diff --git a/docs/api/client/api/system/IRelationManager.md b/docs/api/client/api/system/IRelationManager.md new file mode 100644 index 0000000..f12ccc3 --- /dev/null +++ b/docs/api/client/api/system/IRelationManager.md @@ -0,0 +1,112 @@ +# IRelationManager + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IRelationManager.java` + +**Author:** John200410 6/21/2023 + + + +## Overview + +`IRelationManager` is a interface. + +## Methods + +### isFriend() + +```java + boolean isFriend(String username) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isFriend() + +```java +default boolean isFriend(Entity entity) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isEnemy() + +```java + boolean isEnemy(String username) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isEnemy() + +```java +default boolean isEnemy(Entity entity) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### addFriend() + +```java + void addFriend(String username) +``` + +### addFriend() + +```java +default void addFriend(Entity entity) +``` + +### addEnemy() + +```java + void addEnemy(String username) +``` + +### addEnemy() + +```java +default void addEnemy(Entity entity) +``` + +### removeFriend() + +```java + void removeFriend(String username) +``` + +### removeFriend() + +```java +default void removeFriend(Entity entity) +``` + +### removeEnemy() + +```java + void removeEnemy(String username) +``` + +### removeEnemy() + +```java +default void removeEnemy(Entity entity) +``` + +### getFriends() + +```java + List getFriends() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[PlayerRelation](/client/api/utils/objects/PlayerRelation.md)> + +### getEnemies() + +```java + List getEnemies() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[PlayerRelation](/client/api/utils/objects/PlayerRelation.md)> + diff --git a/docs/api/client/api/system/IRotationManager.md b/docs/api/client/api/system/IRotationManager.md new file mode 100644 index 0000000..5286a40 --- /dev/null +++ b/docs/api/client/api/system/IRotationManager.md @@ -0,0 +1,112 @@ +# IRotationManager + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IRotationManager.java` + +**Author:** John200410 7/6/2023 + + + +## Overview + +`IRotationManager` is a interface. + +## Methods + +### updateRotation() + +```java +default void updateRotation(Entity entity) +``` + +### updateRotation() + +```java + void updateRotation(Entity entity, float step) +``` + +### updateRotation() + +```java +default void updateRotation(BlockPos blockPos) +``` + +### updateRotation() + +```java +default void updateRotation(BlockPos blockPos, float step) +``` + +### updateRotation() + +```java + void updateRotation(BlockPos blockPos, Direction direction, float step) +``` + +### updateRotation() + +```java + void updateRotation(BlockHitResult hitResult, float step) +``` + +### updateRotation() + +```java +default void updateRotation(float yaw, float pitch) +``` + +### updateRotation() + +```java + void updateRotation(float yaw, float pitch, float step) +``` + +### isLookingAt() + +```java + boolean isLookingAt(Entity entity) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isLookingAt() + +```java +default boolean isLookingAt(BlockHitResult hitResult) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isLookingAt() + +```java +default boolean isLookingAt(BlockHitResult hitResult, boolean checkDirection) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isLookingAt() + +```java +default boolean isLookingAt(BlockPos blockPos) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isLookingAt() + +```java + boolean isLookingAt(BlockPos blockPos, Direction direction) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getLookRaycast() + +```java + BlockHitResult getLookRaycast(BlockPos blockPos) +``` + +**Returns:** `BlockHitResult` + diff --git a/docs/api/client/api/system/IRusherHackRegistry.md b/docs/api/client/api/system/IRusherHackRegistry.md new file mode 100644 index 0000000..8b8d02a --- /dev/null +++ b/docs/api/client/api/system/IRusherHackRegistry.md @@ -0,0 +1,30 @@ +# IRusherHackRegistry + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IRusherHackRegistry.java` + +**Author:** john@rusherhack.org 12/28/2025 + + + +## Overview + +`IRusherHackRegistry` is a interface. + +## Methods + +### register() + +```java + void register(IReferenceable referenceable) +``` + +### get() + +```java + IReferenceable get(String key) +``` + +**Returns:** [IReferenceable](/core/interfaces/IReferenceable.md) + diff --git a/docs/api/client/api/system/IServerState.md b/docs/api/client/api/system/IServerState.md new file mode 100644 index 0000000..c4f4432 --- /dev/null +++ b/docs/api/client/api/system/IServerState.md @@ -0,0 +1,196 @@ +# IServerState + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IServerState.java` + + +@author John200410**Author:** historian + + + +## Overview + +`IServerState` is a interface. + +## Methods + +### getOnlinePlayers() + +```java + Collection getOnlinePlayers() +``` + +**Returns**: a collection of all online players + + + +**Returns:** [Collection](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Collection.html)<`PlayerInfo`> + +### getTPS() + +```java +default float getTPS() +``` + +Grabs the current average ticks per second +* **Returns**: the average ticks per second + + + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getTPS() + +```java + float getTPS(boolean clamped) +``` + +Grabs the current average ticks per second +* **Returns**: the average ticks per second + + + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getPing() + +```java + float getPing() +``` + +Grabs the current ping to the server +* **Returns**: the current ping + + + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getLastUpdate() + +```java + long getLastUpdate() +``` + +**Returns**: The last time the server sent a non-chat packet + + + +**Returns:** [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) + +### getServerIP() + +```java + String getServerIP() +``` + +**Returns**: A string representing the server IP + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getInput() + +```java + Input getInput() +``` + +**Returns**: the last input the player sent + + + +**Returns:** `Input` + +### isPlayerSprinting() + +```java + boolean isPlayerSprinting() +``` + +**Returns**: the last sprint state the player sent + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isPlayerSneaking() + +```java + boolean isPlayerSneaking() +``` + +**Returns**: the last sneak state the player sent + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getPlayerX() + +```java + double getPlayerX() +``` + +**Returns**: the last x position the player sent + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getPlayerY() + +```java + double getPlayerY() +``` + +**Returns**: the last y position the player sent + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getPlayerZ() + +```java + double getPlayerZ() +``` + +**Returns**: the last z position the player sent + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getPlayerYaw() + +```java + float getPlayerYaw() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getPlayerPitch() + +```java + float getPlayerPitch() +``` + +**Returns**: the last pitch rotation the player sent + + + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### getPlayerSlot() + +```java + int getPlayerSlot() +``` + +**Returns**: the last held item slot the player sent + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/system/IWindowManager.md b/docs/api/client/api/system/IWindowManager.md new file mode 100644 index 0000000..98d8898 --- /dev/null +++ b/docs/api/client/api/system/IWindowManager.md @@ -0,0 +1,77 @@ +# IWindowManager + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IWindowManager.java` + +**Author:** John200410 + + + +## Overview + +`IWindowManager` is a interface that extends [IFeatureManager](/core/feature/IFeatureManager.md). + +## Methods + +### moveToTop() + +```java + void moveToTop(Window window) +``` + +Moves the window to the top. +* @param window + +### popupWindow() + +```java + void popupWindow(Window window) +``` + +### closePopup() + +```java + void closePopup(Window window) +``` + +### getRenderer() + +```java + IRenderer2D getRenderer() +``` + +**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) + +### getFontRenderer() + +```java + IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### getWindowHandler() + +```java + WindowHandlerBase getWindowHandler() +``` + +**Returns:** [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) + +### getFocusedWindow() + +```java +default Window getFocusedWindow() +``` + +**Returns:** [Window](/client/api/feature/window/Window.md) + +### getVisibleWindows() + +```java +default List getVisibleWindows() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Window](/client/api/feature/window/Window.md)> + diff --git a/docs/api/client/api/system/Processee.md b/docs/api/client/api/system/Processee.md new file mode 100644 index 0000000..f3772c7 --- /dev/null +++ b/docs/api/client/api/system/Processee.md @@ -0,0 +1,40 @@ +# Processee + +**Package:** `org.rusherhack.client.api.system` + +**Source:** `org/rusherhack/client/api/system/IChunkProcessor.java` + +Chunk processor processee. im too high to write + +## Overview + +`Processee` is a interface. + +## Methods + +### process() + +```java + void process(ChunkPos chunkPos, boolean rescan) +``` + +Process a chunk +* **Parameter `chunkPos`**: the chunk position + + +**Parameter `rescan`**: whether this chunk is being re-scanned + + + +### isActive() + +```java + boolean isActive() +``` + +**Returns**: whether this processee should be running + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/system/waypoint/IWaypointManager.md b/docs/api/client/api/system/waypoint/IWaypointManager.md new file mode 100644 index 0000000..aafb3b3 --- /dev/null +++ b/docs/api/client/api/system/waypoint/IWaypointManager.md @@ -0,0 +1,69 @@ +# IWaypointManager + +**Package:** `org.rusherhack.client.api.system.waypoint` + +**Source:** `org/rusherhack/client/api/system/waypoint/IWaypointManager.java` + +Interface for the waypoint manager +* **Author:** john@rusherhack.org 12/9/2025 + + + +## Overview + +`IWaypointManager` is a interface. + +## Methods + +### addWaypoint() + +```java + void addWaypoint(Waypoint waypoint) +``` + +Adds a waypoint + +### removeWaypoint() + +```java + void removeWaypoint(Waypoint waypoint) +``` + +Removes a waypoint + +### getWaypoints() + +```java + List getWaypoints() +``` + +**Returns**: list of waypoints + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Waypoint](/client/api/system/waypoint/Waypoint.md)> + +### getWaypointForCurrentServer() + +```java + Waypoint getWaypointForCurrentServer(String waypoint) +``` + +**Returns**: a waypoint for the current server that matches the specified name + + + +**Returns:** [Waypoint](/client/api/system/waypoint/Waypoint.md) + +### getWaypointsForServer() + +```java + List getWaypointsForServer(String server) +``` + +**Returns**: list of waypoints for the specified server + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Waypoint](/client/api/system/waypoint/Waypoint.md)> + diff --git a/docs/api/client/api/system/waypoint/Waypoint.md b/docs/api/client/api/system/waypoint/Waypoint.md new file mode 100644 index 0000000..fe407f1 --- /dev/null +++ b/docs/api/client/api/system/waypoint/Waypoint.md @@ -0,0 +1,119 @@ +# Waypoint + +**Package:** `org.rusherhack.client.api.system.waypoint` + +**Source:** `org/rusherhack/client/api/system/waypoint/Waypoint.java` + +**Author:** john@rusherhack.org 6/29/2020 for rusherhack-rewrite + + + +## Overview + +`Waypoint` is a class and implements [INamed](/core/interfaces/INamed.md), [JsonSerializable](/core/serialize/JsonSerializable.md). + +## Constructor + +```java +public Waypoint(String name, String server, Vec3 pos, Dimension dimension) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| server | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| pos | `Vec3` | private | +| dimension | [Dimension](/client/api/utils/objects/Dimension.md) | private | +| enabled | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### setName() + +```java +public void setName(String name) +``` + +### setServer() + +```java +public void setServer(String server) +``` + +### setPos() + +```java +public void setPos(Vec3 pos) +``` + +### setDimension() + +```java +public void setDimension(Dimension dimension) +``` + +### setEnabled() + +```java +public void setEnabled(boolean enabled) +``` + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getServer() + +```java +public String getServer() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getPos() + +```java +public Vec3 getPos() +``` + +**Returns:** `Vec3` + +### getDimension() + +```java +public Dimension getDimension() +``` + +**Returns:** [Dimension](/client/api/utils/objects/Dimension.md) + +### isEnabled() + +```java +public boolean isEnabled() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement obj) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/ui/ElementBase.md b/docs/api/client/api/ui/ElementBase.md new file mode 100644 index 0000000..1886190 --- /dev/null +++ b/docs/api/client/api/ui/ElementBase.md @@ -0,0 +1,69 @@ +# ElementBase + +**Package:** `org.rusherhack.client.api.ui` + +**Source:** `org/rusherhack/client/api/ui/ElementBase.java` + +An element is something with a position and size +* **Author:** John200410 12/17/2022 + + + +## Overview + +`ElementBase` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| x | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| y | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | + + +## Methods + +### getX() + +```java +public double getX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getY() + +```java +public double getY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getWidth() + +```java +public abstract double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public abstract double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setX() + +```java +public void setX(double x) +``` + +### setY() + +```java +public void setY(double y) +``` + diff --git a/docs/api/client/api/ui/ElementHandlerBase.md b/docs/api/client/api/ui/ElementHandlerBase.md new file mode 100644 index 0000000..cd50adc --- /dev/null +++ b/docs/api/client/api/ui/ElementHandlerBase.md @@ -0,0 +1,310 @@ +# ElementHandlerBase + +**Package:** `org.rusherhack.client.api.ui` + +**Source:** `org/rusherhack/client/api/ui/ElementHandlerBase.java` + +A handler for managing multiple elements on screen. +* **Author:** John200410 3/5/2024 + + + +## Overview + +`ElementHandlerBase` is a class and implements [Globals](/client/api/Globals.md), [IRenderable2D](/client/api/render/IRenderable2D.md), [IDraggable](/core/interfaces/IDraggable.md), [IScrollable](/core/interfaces/IScrollable.md), [ITypeable](/core/interfaces/ITypeable.md), [ITickable](/core/interfaces/ITickable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). + +## Constructor + +```java +public ElementHandlerBase(boolean scaledWithMinecraftGui) +``` + +**Parameter `scaledWithMinecraftGui`**: sets whether elements should be scaled with the minecraft gui + + + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| scaledWithMinecraftGui | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | +| positionsInitialized | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | public | + + +## Methods + +### getElements() + +```java +public abstract List getElements() +``` + +**Returns**: elements to be handled by this handler + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> + +### getElement() + +```java +public Optional getElement(String name) +``` + +Finds an element given it's name +* **Parameter `name`**: name of the element + + +**Returns**: the element with the name or null if not found + + + +**Returns:** [Optional](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Optional.html)<`T`> + +### initialize() + +```java +public abstract void initialize() +``` + +Initialize all of the elements + +### setDefaultPositions() + +```java +public abstract void setDefaultPositions() +``` + +Sets the default positions of the elements + +### moveElementToTop() + +```java +public abstract void moveElementToTop(T element) +``` + +Moves the element to the top +* **Parameter `element`**: element to move to the top + + + +### render() + +```java +public void render(RenderContext context, double mouseX, double mouseY) +``` + +### renderElements() + +```java +public void renderElements(RenderContext renderContext, double mouseX, double mouseY) +``` + +### tick() + +```java +public void tick() +``` + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### mouseMoved() + +```java +public void mouseMoved(double mouseX, double mouseY) +``` + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isHovered() + +```java +public boolean isHovered(double mouseX, double mouseY) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### renderElement() + +```java +protected void renderElement(T element, RenderContext context, double mouseX, double mouseY) +``` + +### consumeMouseClick() + +```java +protected boolean consumeMouseClick(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeElementMouseClick() + +```java +protected boolean consumeElementMouseClick(T element, double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeMouseRelease() + +```java +protected void consumeMouseRelease(double mouseX, double mouseY, int button) +``` + +### consumeElementMouseRelease() + +```java +protected boolean consumeElementMouseRelease(T element, double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeMouseMove() + +```java +protected void consumeMouseMove(double mouseX, double mouseY) +``` + +### consumeElementMouseMove() + +```java +protected boolean consumeElementMouseMove(T element, double mouseX, double mouseY) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeMouseScroll() + +```java +protected boolean consumeMouseScroll(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeElementMouseScroll() + +```java +protected boolean consumeElementMouseScroll(T element, double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeElementCharTyped() + +```java +protected boolean consumeElementCharTyped(T element, char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeElementKeyTyped() + +```java +protected boolean consumeElementKeyTyped(T element, int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getScale() + +```java +public float getScale() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### isEnabled() + +```java +protected boolean isEnabled(T element) +``` + +Checks if an element should have events sent to it +* **Parameter `element`**: element to check + + +@return + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isElementHovered() + +```java +public boolean isElementHovered(T element, double mouseX, double mouseY) +``` + +Checks if an element is hovered. Can be overridden to change the hover behavior. +* **Parameter `element`**: the element + + +**Parameter `mouseX`**: the x-coordinate of the mouse + + +**Parameter `mouseY`**: the y-coordinate of the mouse + + +**Returns**: true if the window is hovered + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement obj) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### shouldSerialize() + +```java +public boolean shouldSerialize(boolean autosave) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/ui/ScaledElementBase.md b/docs/api/client/api/ui/ScaledElementBase.md new file mode 100644 index 0000000..0b41a8a --- /dev/null +++ b/docs/api/client/api/ui/ScaledElementBase.md @@ -0,0 +1,53 @@ +# ScaledElementBase + +**Package:** `org.rusherhack.client.api.ui` + +**Source:** `org/rusherhack/client/api/ui/ScaledElementBase.java` + +An [ElementBase](/client/api/ui/ElementBase.md) that can be scaled +* **Author:** John200410 5/19/2023 + + + +## Overview + +`ScaledElementBase` is a class that extends [ElementBase](/client/api/ui/ElementBase.md). + +## Methods + +### getScale() + +```java +public double getScale() +``` + +**Returns**: The scale of this element + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getScaledWidth() + +```java +public double getScaledWidth() +``` + +**Returns**: The width of this element multiplied by the scale + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getScaledHeight() + +```java +public double getScaledHeight() +``` + +**Returns**: The height of this element multiplied by the scale + + + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/ui/hud/HudHandlerBase.md b/docs/api/client/api/ui/hud/HudHandlerBase.md new file mode 100644 index 0000000..bb6e191 --- /dev/null +++ b/docs/api/client/api/ui/hud/HudHandlerBase.md @@ -0,0 +1,197 @@ +# HudHandlerBase + +**Package:** `org.rusherhack.client.api.ui.hud` + +**Source:** `org/rusherhack/client/api/ui/hud/HudHandlerBase.java` + +Handler for hud elements +* **Author:** John200410 3/26/2024 + + + +## Overview + +`HudHandlerBase` is a class that extends [ElementHandlerBase](/client/api/ui/ElementHandlerBase.md). + +## Constructor + +```java +public HudHandlerBase(boolean scaledWithMinecraftGui) +``` + +**Parameter `scaledWithMinecraftGui`**: sets whether elements should be scaled with the minecraft gui + + + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| lastFontRenderer | [IFontRenderer](/client/api/render/font/IFontRenderer.md) | private | +| shouldResortLists | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | public | + + +## Methods + +### getElements() + +```java +public List getElements() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[HudElement](/client/api/feature/hud/HudElement.md)> + +### moveElementToTop() + +```java +public void moveElementToTop(HudElement element) +``` + +### render() + +```java +public void render(RenderContext context, double mouseX, double mouseY) +``` + +### initialize() + +```java +public void initialize() +``` + +### setDefaultPositions() + +```java +public void setDefaultPositions() +``` + +### tick() + +```java +public void tick() +``` + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeElementMouseClick() + +```java +protected boolean consumeElementMouseClick(HudElement element, double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### mouseMoved() + +```java +public void mouseMoved(double mouseX, double mouseY) +``` + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### renderElements() + +```java +public void renderElements(RenderContext renderContext, double mouseX, double mouseY) +``` + +### renderElement() + +```java +protected void renderElement(HudElement hudElement, RenderContext context, double mouseX, double mouseY) +``` + +### renderHudElement() + +```java +public void renderHudElement(HudElement hudElement, RenderContext renderContext, double mouseX, double mouseY) +``` + +### renderPrimitiveHudElement() + +```java +protected void renderPrimitiveHudElement(HudElement hudElement, RenderContext renderContext, double mouseX, double mouseY) +``` + +### getBackgroundColor() + +```java +protected Color getBackgroundColor(HudElement hudElement, double mouseX, double mouseY) +``` + +**Returns:** `Color` + +### renderHudElementBackground() + +```java +protected void renderHudElementBackground(HudElement hudElement, RenderContext renderContext, IRenderer2D renderer, double width, double height, int color) +``` + +Renders the background of a hud element + +### getHudManagerPanel() + +```java +public PanelHandlerBase getHudManagerPanel() +``` + +**Returns:** [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md)<`?`> + +### isElementHovered() + +```java +public boolean isElementHovered(HudElement element, double mouseX, double mouseY) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getFontRenderer() + +```java +public IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### shouldRenderPrimitively() + +```java +protected boolean shouldRenderPrimitively() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/ui/notification/RenderableNotification.md b/docs/api/client/api/ui/notification/RenderableNotification.md new file mode 100644 index 0000000..7279860 --- /dev/null +++ b/docs/api/client/api/ui/notification/RenderableNotification.md @@ -0,0 +1,49 @@ +# RenderableNotification + +**Package:** `org.rusherhack.client.api.ui.notification` + +**Source:** `org/rusherhack/client/api/ui/notification/RenderableNotification.java` + +**Author:** John200410 1/27/2023 + + + +## Overview + +`RenderableNotification` is a class that extends [LivingNotification](/core/notification/type/LivingNotification.md) and implements [IRenderable2D](/client/api/render/IRenderable2D.md), [IClickable](/core/interfaces/IClickable.md). + +## Constructor + +```java +public RenderableNotification(String text, NotificationType type) +``` + +```java +public RenderableNotification(String text, NotificationType type, int id) +``` + +```java +public RenderableNotification(Component component, NotificationType type) +``` + +```java +public RenderableNotification(Component component, NotificationType type, int id) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| component | `Component` | private final | + + +## Methods + +### getComponent() + +```java +public Component getComponent() +``` + +**Returns:** `Component` + diff --git a/docs/api/client/api/ui/panel/IPanelItem.md b/docs/api/client/api/ui/panel/IPanelItem.md new file mode 100644 index 0000000..33e511a --- /dev/null +++ b/docs/api/client/api/ui/panel/IPanelItem.md @@ -0,0 +1,68 @@ +# IPanelItem + +**Package:** `org.rusherhack.client.api.ui.panel` + +**Source:** `org/rusherhack/client/api/ui/panel/IPanelItem.java` + +TODO: is this even needed + +## Overview + +`IPanelItem` is a interface that extends [IRenderable2D](/client/api/render/IRenderable2D.md), [IClickable](/core/interfaces/IClickable.md), [ITypeable](/core/interfaces/ITypeable.md). + +## Methods + +### getWidth() + +```java + double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java + double getHeight(boolean total) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### isHovered() + +```java + boolean isHovered(double mouseX, double mouseY, boolean includeSubItems) +``` + +Alternative for ``#isHovered(double, double) +* **Parameter `mouseX`**: mouse x position + + +**Parameter `mouseY`**: mouse y position + + +**Parameter `includeSubItems`**: whether or not to include sub items in height calculation + + +**Returns**: whether or not the mouse is hovering over this item + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isHovered() + +```java +default boolean isHovered(double mouseX, double mouseY) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isVisible() + +```java +default boolean isVisible() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/ui/panel/PanelBase.md b/docs/api/client/api/ui/panel/PanelBase.md new file mode 100644 index 0000000..27d55a5 --- /dev/null +++ b/docs/api/client/api/ui/panel/PanelBase.md @@ -0,0 +1,166 @@ +# PanelBase + +**Package:** `org.rusherhack.client.api.ui.panel` + +**Source:** `org/rusherhack/client/api/ui/panel/PanelBase.java` + +Basic panel element that with items that can be clicked +* **Author:** John200410 12/17/2022 + + + +## Overview + +`PanelBase` is a class that extends [ScaledElementBase](/client/api/ui/ScaledElementBase.md) and implements [IRenderable2D](/client/api/render/IRenderable2D.md), [ITickable](/core/interfaces/ITickable.md), [IClickable](/core/interfaces/IClickable.md), [IScrollable](/core/interfaces/IScrollable.md), [ITypeable](/core/interfaces/ITypeable.md), [IHideable](/core/interfaces/IHideable.md), [JsonSerializable](/core/serialize/JsonSerializable.md), [INamed](/core/interfaces/INamed.md), [IReferenceable](/core/interfaces/IReferenceable.md). + +## Constructor + +```java +public PanelBase(PanelHandlerBase> handler, String name) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| visible | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| items | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> | protected final | +| handler | [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md) | protected final | + + +## Methods + +### createFeatureItem() + +```java +public abstract T createFeatureItem(IFeature feature) +``` + +Instantiates a new item for the given feature +* **Parameter `feature`**: likely a module or hud element + + +**Returns**: the item + + + +**Returns:** `T` + +### addItem() + +```java +public T addItem(T item) +``` + +**Returns:** `T` + +### addItem() + +```java +public T addItem(IFeature feature) +``` + +**Returns:** `T` + +### getItemList() + +```java +public List getItemList() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayName() + +```java +public String getDisplayName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDisplayName() + +```java +public void setDisplayName(String displayName) +``` + +### getPanelHandler() + +```java +public PanelHandlerBase getPanelHandler() +``` + +**Returns:** [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md) + +### isHidden() + +```java +public boolean isHidden() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setVisible() + +```java +public void setVisible(boolean visible) +``` + +### getRenderer() + +```java +public IRenderer2D getRenderer() +``` + +**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) + +### getFontRenderer() + +```java +public IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement obj) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### sort() + +```java +public void sort() +``` + +i was gonna make this method abstract but i didnt wanna break compatibility with existing themes + +### getReferenceKey() + +```java +public String getReferenceKey() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/ui/panel/PanelHandlerBase.md b/docs/api/client/api/ui/panel/PanelHandlerBase.md new file mode 100644 index 0000000..e984d3d --- /dev/null +++ b/docs/api/client/api/ui/panel/PanelHandlerBase.md @@ -0,0 +1,76 @@ +# PanelHandlerBase + +**Package:** `org.rusherhack.client.api.ui.panel` + +**Source:** `org/rusherhack/client/api/ui/panel/PanelHandlerBase.java` + +**Author:** John200410 1/13/2023 + + + +## Overview + +`PanelHandlerBase` is a class that extends [ElementHandlerBase](/client/api/ui/ElementHandlerBase.md). + +## Constructor + +```java +public PanelHandlerBase(boolean scaledWithMinecraftGui) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| panels | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> | protected final | + + +## Methods + +### createPanel() + +```java +public abstract T createPanel(String name) +``` + +Instantiates a panel with the given name +* **Parameter `name`**: The name of the panel + + +**Returns**: The panel + + + +**Returns:** `T` + +### addPanel() + +```java +public void addPanel(T panel) +``` + +Adds a panel to the list of panels +* @param panel + +### moveElementToTop() + +```java +public void moveElementToTop(T element) +``` + +### getElements() + +```java +public List getElements() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> + +### getFontRenderer() + +```java +public IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + diff --git a/docs/api/client/api/ui/panel/PanelItemBase.md b/docs/api/client/api/ui/panel/PanelItemBase.md new file mode 100644 index 0000000..24c7756 --- /dev/null +++ b/docs/api/client/api/ui/panel/PanelItemBase.md @@ -0,0 +1,61 @@ +# PanelItemBase + +**Package:** `org.rusherhack.client.api.ui.panel` + +**Source:** `org/rusherhack/client/api/ui/panel/PanelItemBase.java` + +**Author:** John200410 12/21/2022 + + + +## Overview + +`PanelItemBase` is a class and implements [IPanelItem](/client/api/ui/panel/IPanelItem.md). + +## Constructor + +```java +public PanelItemBase(PanelBase panel, T parent) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| panel | [PanelBase](/client/api/ui/panel/PanelBase.md)<`?`> | protected final | +| parent | `T` | protected final | +| subItems | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> | protected final | + + +## Methods + +### addSubItem() + +```java +public void addSubItem(T item) +``` + +### getSubItemList() + +```java +public List getSubItemList() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> + +### getPanel() + +```java +public PanelBase getPanel() +``` + +**Returns:** [PanelBase](/client/api/ui/panel/PanelBase.md)<`?`> + +### getParent() + +```java +public T getParent() +``` + +**Returns:** `T` + diff --git a/docs/api/client/api/ui/theme/ITheme.md b/docs/api/client/api/ui/theme/ITheme.md new file mode 100644 index 0000000..cdac38f --- /dev/null +++ b/docs/api/client/api/ui/theme/ITheme.md @@ -0,0 +1,104 @@ +# ITheme + +**Package:** `org.rusherhack.client.api.ui.theme` + +**Source:** `org/rusherhack/client/api/ui/theme/ITheme.java` + +Interface for creating themes. + + + +A theme is a feature which changes the look and feel of the menus. +* **Author:** John200410 2/23/2023 + + + +## Overview + +`ITheme` is a interface that extends [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). + +## Methods + +### initialize() + +```java +default void initialize() +``` + +Called when rusherhack is finished loading, and the theme should be initialized. + +### getClickGuiHandler() + +```java +default PanelHandlerBase getClickGuiHandler() +``` + +This theme's ClickGUI handler +* **Returns**: panel handler for the ClickGUI, or null if this theme does not have a ClickGUI + + + +**Returns:** [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md)<`?`> + +### getHudHandler() + +```java +default HudHandlerBase getHudHandler() +``` + +This theme's HUD handler +* **Returns**: the hud handler, or null if this theme does not have a HUD + + + +**Returns:** [HudHandlerBase](/client/api/ui/hud/HudHandlerBase.md) + +### getWindowHandler() + +```java +default WindowHandlerBase getWindowHandler() +``` + +This theme's window handler +* **Returns**: the window handler, or null if this theme does not have a window handler + + + +**Returns:** [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) + +### getColorSetting() + +```java + ColorSetting getColorSetting() +``` + +**Returns**: The ColorSetting for this theme + + + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### getPrimaryColor() + +```java +default Color getPrimaryColor() +``` + +**Returns:** `Color` + +### serialize() + +```java +default JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +default boolean deserialize(JsonElement jsonElement) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/ui/theme/IThemeManager.md b/docs/api/client/api/ui/theme/IThemeManager.md new file mode 100644 index 0000000..2f1cbba --- /dev/null +++ b/docs/api/client/api/ui/theme/IThemeManager.md @@ -0,0 +1,132 @@ +# IThemeManager + +**Package:** `org.rusherhack.client.api.ui.theme` + +**Source:** `org/rusherhack/client/api/ui/theme/IThemeManager.java` + +Interface for accessing the theme manager +* **Author:** John200410 9/3/2023 + + + +## Overview + +`IThemeManager` is a interface. + +## Methods + +### registerTheme() + +```java + void registerTheme(ITheme theme) +``` + +Registers a new theme +* **Parameter `theme`**: the theme + + + +### getDefaultTheme() + +```java + ITheme getDefaultTheme() +``` + +**Returns**: The default "Classic" theme + + + +**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) + +### getClickGuiTheme() + +```java + ITheme getClickGuiTheme() +``` + +**Returns**: The theme currently being used by the ClickGUI + + + +**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) + +### getHudTheme() + +```java + ITheme getHudTheme() +``` + +**Returns**: The theme currently being used by the HUD + + + +**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) + +### getWindowsTheme() + +```java + ITheme getWindowsTheme() +``` + +**Returns**: The theme currently being used by Windows + + + +**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) + +### getClickGuiHandler() + +```java +default PanelHandlerBase getClickGuiHandler() +``` + +**Returns:** [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md)<`?`> + +### getHudHandler() + +```java +default HudHandlerBase getHudHandler() +``` + +**Returns:** [HudHandlerBase](/client/api/ui/hud/HudHandlerBase.md) + +### getWindowHandler() + +```java +default WindowHandlerBase getWindowHandler() +``` + +**Returns:** [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) + +### getClickGuiScreen() + +```java + Screen getClickGuiScreen() +``` + +**Returns:** `Screen` + +### getHudEditorScreen() + +```java + Screen getHudEditorScreen() +``` + +**Returns:** `Screen` + +### getWindowsScreen() + +```java + Screen getWindowsScreen() +``` + +**Returns:** `Screen` + +### getCurrentTheme() + +```java +default ITheme getCurrentTheme() +``` + +**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) + diff --git a/docs/api/client/api/ui/theme/ThemeBase.md b/docs/api/client/api/ui/theme/ThemeBase.md new file mode 100644 index 0000000..59cab3c --- /dev/null +++ b/docs/api/client/api/ui/theme/ThemeBase.md @@ -0,0 +1,72 @@ +# ThemeBase + +**Package:** `org.rusherhack.client.api.ui.theme` + +**Source:** `org/rusherhack/client/api/ui/theme/ThemeBase.java` + +**Author:** John200410 2/23/2023 + + + +## Overview + +`ThemeBase` is a class and implements [ITheme](/client/api/ui/theme/ITheme.md). + +## Constructor + +```java +public ThemeBase(String name, String description, Color defaultColor) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | private final | +| color | [ColorSetting](/client/api/setting/ColorSetting.md) | private final | + + +## Methods + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDescription() + +```java +public String getDescription() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getSettings() + +```java +public List> getSettings() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> + +### getColorSetting() + +```java +public ColorSetting getColorSetting() +``` + +**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) + +### getPrimaryColor() + +```java +public Color getPrimaryColor() +``` + +**Returns:** `Color` + diff --git a/docs/api/client/api/ui/window/WindowContentHandlerBase.md b/docs/api/client/api/ui/window/WindowContentHandlerBase.md new file mode 100644 index 0000000..84836be --- /dev/null +++ b/docs/api/client/api/ui/window/WindowContentHandlerBase.md @@ -0,0 +1,56 @@ +# WindowContentHandlerBase + +**Package:** `org.rusherhack.client.api.ui.window` + +**Source:** `org/rusherhack/client/api/ui/window/WindowContentHandlerBase.java` + +## Overview + +`WindowContentHandlerBase` is a class. + +## Methods + +### handleMouseClicked() + +```java +public boolean handleMouseClicked(WindowContent content, double mouseX, double mouseY, int button, WindowView view) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### handleRenderContent() + +```java +public void handleRenderContent(WindowContent content, double mouseX, double mouseY, WindowView view) +``` + +### renderButton() + +```java +public abstract void renderButton(ButtonComponent button, double mouseX, double mouseY, WindowView view) +``` + +### renderCheckBox() + +```java +public abstract void renderCheckBox(CheckBoxComponent checkBox, double mouseX, double mouseY, WindowView view) +``` + +### renderComboBox() + +```java +public abstract void renderComboBox(ComboBoxComponent dropdown, double mouseX, double mouseY, WindowView view) +``` + +### renderTextField() + +```java +public abstract void renderTextField(TextFieldComponent textField, double mouseX, double mouseY, WindowView view) +``` + +### renderListItem() + +```java +public abstract void renderListItem(ListItemContent listItem, double mouseX, double mouseY, WindowView view) +``` + diff --git a/docs/api/client/api/ui/window/WindowHandlerBase.md b/docs/api/client/api/ui/window/WindowHandlerBase.md new file mode 100644 index 0000000..c7b1c61 --- /dev/null +++ b/docs/api/client/api/ui/window/WindowHandlerBase.md @@ -0,0 +1,219 @@ +# WindowHandlerBase + +**Package:** `org.rusherhack.client.api.ui.window` + +**Source:** `org/rusherhack/client/api/ui/window/WindowHandlerBase.java` + +**Author:** John200410 + + + +## Overview + +`WindowHandlerBase` is a class that extends [ElementHandlerBase](/client/api/ui/ElementHandlerBase.md). + +## Constructor + +```java +public WindowHandlerBase() +``` + +## Methods + +### getViewHandler() + +```java +public abstract WindowViewHandlerBase getViewHandler() +``` + +Returns the view handler of this window handler. +* **Returns**: the view handler of this window handler + + + +**Returns:** [WindowViewHandlerBase](/client/api/ui/window/WindowViewHandlerBase.md) + +### getContentHandler() + +```java +public abstract WindowContentHandlerBase getContentHandler() +``` + +Returns the content handler of this window handler. +* **Returns**: the content handler of this window handler + + + +**Returns:** [WindowContentHandlerBase](/client/api/ui/window/WindowContentHandlerBase.md) + +### renderWindowFrame() + +```java +public abstract void renderWindowFrame(Window window, double mouseX, double mouseY) +``` + +Renders the frame of a window. +* **Parameter `window`**: the window + + +**Parameter `mouseX`**: the x-coordinate of the mouse + + +**Parameter `mouseY`**: the y-coordinate of the mouse + + + +### getFramePadding() + +```java +public abstract int getFramePadding(WindowSide side) +``` + +Returns the frame padding of a side of a window. +* **Parameter `side`**: the side of the window + + +**Returns**: the frame padding of the side + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### moveElementToTop() + +```java +public void moveElementToTop(Window element) +``` + +### getElements() + +```java +public List getElements() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Window](/client/api/feature/window/Window.md)> + +### renderElements() + +```java +public void renderElements(RenderContext context, double mouseX, double mouseY) +``` + +### renderElement() + +```java +protected void renderElement(Window window, RenderContext context, double mouseX, double mouseY) +``` + +### tick() + +```java +public void tick() +``` + +### consumeMouseClick() + +```java +protected boolean consumeMouseClick(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeElementMouseClick() + +```java +protected boolean consumeElementMouseClick(Window window, double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeMouseRelease() + +```java +protected void consumeMouseRelease(double mouseX, double mouseY, int button) +``` + +### consumeElementMouseRelease() + +```java +protected boolean consumeElementMouseRelease(Window window, double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### consumeMouseMove() + +```java +protected void consumeMouseMove(double mouseX, double mouseY) +``` + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isElementHovered() + +```java +public boolean isElementHovered(Window window, double mouseX, double mouseY) +``` + +Checks if a window is hovered. Can be overridden to change the hover behavior. +* **Parameter `window`**: the window + + +**Parameter `mouseX`**: the x-coordinate of the mouse + + +**Parameter `mouseY`**: the y-coordinate of the mouse + + +**Returns**: true if the window is hovered + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getWindowColor() + +```java +public Color getWindowColor(Window window) +``` + +Returns the primary color of a window. +* **Parameter `window`**: the window + + +**Returns**: the color of the window + + + +**Returns:** `Color` + +### initialize() + +```java +public void initialize() +``` + +unused for now + +### setDefaultPositions() + +```java +public void setDefaultPositions() +``` + +unused for now + diff --git a/docs/api/client/api/ui/window/WindowSide.md b/docs/api/client/api/ui/window/WindowSide.md new file mode 100644 index 0000000..d915208 --- /dev/null +++ b/docs/api/client/api/ui/window/WindowSide.md @@ -0,0 +1,20 @@ +# WindowSide + +**Package:** `org.rusherhack.client.api.ui.window` + +**Source:** `org/rusherhack/client/api/ui/window/WindowHandlerBase.java` + +## Overview + +`WindowSide` is a enum. + +## Constants + +### LEFT + +### TOP + +### RIGHT + +### BOTTOM + diff --git a/docs/api/client/api/ui/window/WindowViewHandlerBase.md b/docs/api/client/api/ui/window/WindowViewHandlerBase.md new file mode 100644 index 0000000..fbd62ad --- /dev/null +++ b/docs/api/client/api/ui/window/WindowViewHandlerBase.md @@ -0,0 +1,45 @@ +# WindowViewHandlerBase + +**Package:** `org.rusherhack.client.api.ui.window` + +**Source:** `org/rusherhack/client/api/ui/window/WindowViewHandlerBase.java` + +## Overview + +`WindowViewHandlerBase` is a class. + +## Constructor + +```java +public WindowViewHandlerBase(WindowHandlerBase windowHandler) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| windowHandler | [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) | protected final | + + +## Methods + +### handleRenderViewContent() + +```java +public void handleRenderViewContent(WindowView view, double mouseX, double mouseY) +``` + +Wrapper for [WindowView](/client/api/ui/window/view/WindowView.md)#renderViewContent(double, double) so custom things can be added +* **Parameter `view`**: @param mouseX + + +@param mouseY + +### handleViewMouseClicked() + +```java +public boolean handleViewMouseClicked(WindowView view, double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/ui/window/content/AnchorSide.md b/docs/api/client/api/ui/window/content/AnchorSide.md new file mode 100644 index 0000000..199215f --- /dev/null +++ b/docs/api/client/api/ui/window/content/AnchorSide.md @@ -0,0 +1,16 @@ +# AnchorSide + +**Package:** `org.rusherhack.client.api.ui.window.content` + +**Source:** `org/rusherhack/client/api/ui/window/content/ComboContent.java` + +## Overview + +`AnchorSide` is a enum. + +## Constants + +### LEFT + +### RIGHT + diff --git a/docs/api/client/api/ui/window/content/ComboContent.md b/docs/api/client/api/ui/window/content/ComboContent.md new file mode 100644 index 0000000..7cadd37 --- /dev/null +++ b/docs/api/client/api/ui/window/content/ComboContent.md @@ -0,0 +1,127 @@ +# ComboContent + +**Package:** `org.rusherhack.client.api.ui.window.content` + +**Source:** `org/rusherhack/client/api/ui/window/content/ComboContent.java` + +Content that bundles two or more other contents. + + + +Useful for situations like when you need a text field and a button to be next to each other. + + + +(this probably needs to be rewritten) +* **Author:** John200410 + + + +## Overview + +`ComboContent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). + +## Constructor + +```java +public ComboContent(Window window) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| contents | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Pair`> | private final | +| parent | [WindowView](/client/api/ui/window/view/WindowView.md) | private | + + +## Methods + +### addContent() + +```java +public void addContent(WindowContent content) +``` + +### addContent() + +```java +public void addContent(WindowContent content, AnchorSide anchor) +``` + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +this can definitely be done better but my adhd meds wore off and this works good enough + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### unfocus() + +```java +public void unfocus() +``` + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### getContents() + +```java +public List> getContents() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Pair`> + diff --git a/docs/api/client/api/ui/window/content/ListItemContent.md b/docs/api/client/api/ui/window/content/ListItemContent.md new file mode 100644 index 0000000..9974342 --- /dev/null +++ b/docs/api/client/api/ui/window/content/ListItemContent.md @@ -0,0 +1,110 @@ +# ListItemContent + +**Package:** `org.rusherhack.client.api.ui.window.content` + +**Source:** `org/rusherhack/client/api/ui/window/content/ListItemContent.java` + +## Overview + +`ListItemContent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). + +## Constructor + +```java +public ListItemContent(Window window, ListView listView) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| listView | [ListView](/client/api/ui/window/view/ListView.md)<`?`> | protected final | +| timeSinceLastClick | [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) | private | + + +## Methods + +### getAsString() + +```java +public abstract String getAsString(ListView.Column column) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### isSelected() + +```java +public boolean isSelected() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### onDoubleClick() + +```java +protected void onDoubleClick() +``` + +### getListView() + +```java +public ListView getListView() +``` + +**Returns:** [ListView](/client/api/ui/window/view/ListView.md)<`?`> + diff --git a/docs/api/client/api/ui/window/content/PaddingContent.md b/docs/api/client/api/ui/window/content/PaddingContent.md new file mode 100644 index 0000000..5c3be81 --- /dev/null +++ b/docs/api/client/api/ui/window/content/PaddingContent.md @@ -0,0 +1,84 @@ +# PaddingContent + +**Package:** `org.rusherhack.client.api.ui.window.content` + +**Source:** `org/rusherhack/client/api/ui/window/content/PaddingContent.java` + +**Author:** John200410 11/22/2023 + + + +## Overview + +`PaddingContent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). + +## Constructor + +```java +public PaddingContent(Window window, double width, double height) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | + + +## Methods + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/ui/window/content/WindowContent.md b/docs/api/client/api/ui/window/content/WindowContent.md new file mode 100644 index 0000000..27b2534 --- /dev/null +++ b/docs/api/client/api/ui/window/content/WindowContent.md @@ -0,0 +1,141 @@ +# WindowContent + +**Package:** `org.rusherhack.client.api.ui.window.content` + +**Source:** `org/rusherhack/client/api/ui/window/content/WindowContent.java` + +Content that can be rendered inside of a Window +* **Author:** John200410 + + + +## Overview + +`WindowContent` is a class and implements [IClickable](/core/interfaces/IClickable.md), [ITypeable](/core/interfaces/ITypeable.md), [IScrollable](/core/interfaces/IScrollable.md), [ITickable](/core/interfaces/ITickable.md). + +## Constructor + +```java +public WindowContent(Window window) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| window | [Window](/client/api/feature/window/Window.md) | protected final | +| x | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| y | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| contextMenu | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ContextAction](/client/api/ui/window/context/ContextAction.md)> | protected | + + +## Methods + +### renderContent() + +```java +public abstract void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### getWidth() + +```java +public abstract double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public abstract double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getContextMenu() + +```java +public List getContextMenu() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ContextAction](/client/api/ui/window/context/ContextAction.md)> + +### setContextMenu() + +```java +public void setContextMenu(List contextMenu) +``` + +### unfocus() + +```java +public void unfocus() +``` + +Called when the window loses focus. Should be used to unfocus things like text fields + +### getWindow() + +```java +public Window getWindow() +``` + +**Returns:** [Window](/client/api/feature/window/Window.md) + +### isHovered() + +```java +public boolean isHovered(double mouseX, double mouseY) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setX() + +```java +public double setX(double x) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setY() + +```java +public double setY(double y) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getX() + +```java +public double getX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getY() + +```java +public double getY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getRenderer() + +```java +public IRenderer2D getRenderer() +``` + +**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) + +### getFontRenderer() + +```java +public IFontRenderer getFontRenderer() +``` + +**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) + diff --git a/docs/api/client/api/ui/window/content/component/ButtonComponent.md b/docs/api/client/api/ui/window/content/component/ButtonComponent.md new file mode 100644 index 0000000..44f62d2 --- /dev/null +++ b/docs/api/client/api/ui/window/content/component/ButtonComponent.md @@ -0,0 +1,165 @@ +# ButtonComponent + +**Package:** `org.rusherhack.client.api.ui.window.content.component` + +**Source:** `org/rusherhack/client/api/ui/window/content/component/ButtonComponent.java` + +TODO: create interface so that ComboContent can modify width as needed +* **Author:** John200410 + + + +## Overview + +`ButtonComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md) and implements [INamed](/core/interfaces/INamed.md). + +## Constructor + +```java +public ButtonComponent(Window window, String label, Runnable clickAction) +``` + +```java +public ButtonComponent(Window window, String label, double width, double height, Runnable clickAction) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| label | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| enabledPredicate | [Predicate](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Predicate.html)<[ButtonComponent](/client/api/ui/window/content/component/ButtonComponent.md)> | private | +| pressed | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| clickAction | [Runnable](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Runnable.html) | private | + + +## Methods + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setWidth() + +```java +public void setWidth(double width) +``` + +### setHeight() + +```java +public void setHeight(double height) +``` + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setLabel() + +```java +public void setLabel(String name) +``` + +### setAction() + +```java +public void setAction(Runnable action) +``` + +### onClick() + +```java +public void onClick() +``` + +### isPressed() + +```java +public boolean isPressed() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setPressed() + +```java +public void setPressed(boolean pressed) +``` + +### setPredicate() + +```java +public void setPredicate(Predicate enabledPredicate) +``` + +### isEnabled() + +```java +public boolean isEnabled() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/ui/window/content/component/CheckBoxComponent.md b/docs/api/client/api/ui/window/content/component/CheckBoxComponent.md new file mode 100644 index 0000000..5178c68 --- /dev/null +++ b/docs/api/client/api/ui/window/content/component/CheckBoxComponent.md @@ -0,0 +1,132 @@ +# CheckBoxComponent + +**Package:** `org.rusherhack.client.api.ui.window.content.component` + +**Source:** `org/rusherhack/client/api/ui/window/content/component/CheckBoxComponent.java` + +## Overview + +`CheckBoxComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). + +## Constructor + +```java +public CheckBoxComponent(Window window, String label, boolean value) +``` + +```java +public CheckBoxComponent(Window window, double size, String label, boolean value) +``` + +```java +public CheckBoxComponent(Window window, double size, String label, boolean value, Consumer callback) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| size | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected final | +| label | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | protected | +| value | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | +| valueConsumer | [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<[Boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html)> | protected | + + +## Methods + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getLabel() + +```java +public String getLabel() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setLabel() + +```java +public void setLabel(String label) +``` + +### getValue() + +```java +public boolean getValue() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setValue() + +```java +public void setValue(boolean value) +``` + +### setValueConsumer() + +```java +public void setValueConsumer(Consumer valueConsumer) +``` + +### getSize() + +```java +public double getSize() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/ui/window/content/component/ComboBoxComponent.md b/docs/api/client/api/ui/window/content/component/ComboBoxComponent.md new file mode 100644 index 0000000..2b51ab5 --- /dev/null +++ b/docs/api/client/api/ui/window/content/component/ComboBoxComponent.md @@ -0,0 +1,161 @@ +# ComboBoxComponent + +**Package:** `org.rusherhack.client.api.ui.window.content.component` + +**Source:** `org/rusherhack/client/api/ui/window/content/component/ComboBoxComponent.java` + +## Overview + +`ComboBoxComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). + +## Constructor + +```java +public ComboBoxComponent(Window window, String[] options) +``` + +```java +public ComboBoxComponent(Window window, Enum enumConstant) +``` + +```java +public ComboBoxComponent(Window window, String[] options, int selected, Consumer callback) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| options | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| selected | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | +| height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| isOpen | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| callback | [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private | + + +## Methods + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### unfocus() + +```java +public void unfocus() +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setHeight() + +```java +public void setHeight(double height) +``` + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getOptions() + +```java +public String[] getOptions() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + +### getSelectedOption() + +```java +public String getSelectedOption() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getSelected() + +```java +public int getSelected() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setSelected() + +```java +public void setSelected(int selected) +``` + +### isOpen() + +```java +public boolean isOpen() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setOpen() + +```java +public void setOpen(boolean open) +``` + +### getCallback() + +```java +public Consumer getCallback() +``` + +**Returns:** [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + +### setCallback() + +```java +public void setCallback(Consumer callback) +``` + diff --git a/docs/api/client/api/ui/window/content/component/ParagraphComponent.md b/docs/api/client/api/ui/window/content/component/ParagraphComponent.md new file mode 100644 index 0000000..5d60913 --- /dev/null +++ b/docs/api/client/api/ui/window/content/component/ParagraphComponent.md @@ -0,0 +1,81 @@ +# ParagraphComponent + +**Package:** `org.rusherhack.client.api.ui.window.content.component` + +**Source:** `org/rusherhack/client/api/ui/window/content/component/ParagraphComponent.java` + +A TextContent with line wrapping +* **Author:** John200410 + + + +## Overview + +`ParagraphComponent` is a class that extends [TextComponent](/client/api/ui/window/content/component/TextComponent.md). + +## Constructor + +```java +public ParagraphComponent(Window window) +``` + +```java +public ParagraphComponent(Window window, String text) +``` + +```java +public ParagraphComponent(Window window, String text, double lineSpacing) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| lineSpacing | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| parent | [WindowView](/client/api/ui/window/view/WindowView.md) | protected | +| heightCache | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| color | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | protected | + + +## Methods + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### updateHeight() + +```java +public void updateHeight() +``` + +### setLineSpacing() + +```java +public void setLineSpacing(double lineSpacing) +``` + +### setColor() + +```java +public void setColor(int color) +``` + diff --git a/docs/api/client/api/ui/window/content/component/TextComponent.md b/docs/api/client/api/ui/window/content/component/TextComponent.md new file mode 100644 index 0000000..5285d98 --- /dev/null +++ b/docs/api/client/api/ui/window/content/component/TextComponent.md @@ -0,0 +1,106 @@ +# TextComponent + +**Package:** `org.rusherhack.client.api.ui.window.content.component` + +**Source:** `org/rusherhack/client/api/ui/window/content/component/TextComponent.java` + +A simple text content +* **Author:** John200410 + + + +## Overview + +`TextComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). + +## Constructor + +```java +public TextComponent(Window window) +``` + +```java +public TextComponent(Window window, String text) +``` + +```java +public TextComponent(Window window, String text, boolean wrap) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| text | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | protected | + + +## Methods + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getText() + +```java +public String getText() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setText() + +```java +public void setText(String text) +``` + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/ui/window/content/component/TextFieldComponent.md b/docs/api/client/api/ui/window/content/component/TextFieldComponent.md new file mode 100644 index 0000000..48c25ae --- /dev/null +++ b/docs/api/client/api/ui/window/content/component/TextFieldComponent.md @@ -0,0 +1,178 @@ +# TextFieldComponent + +**Package:** `org.rusherhack.client.api.ui.window.content.component` + +**Source:** `org/rusherhack/client/api/ui/window/content/component/TextFieldComponent.java` + +## Overview + +`TextFieldComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). + +## Constructor + +```java +public TextFieldComponent(Window window, double width) +``` + +```java +public TextFieldComponent(Window window, String label, double width) +``` + +```java +public TextFieldComponent(Window window, String label, double width, boolean censored) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| textField | [TextField](/client/api/utils/objects/TextField.md) | protected final | +| label | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| censored | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | +| focused | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | +| inputDelay | [Timer](/core/utils/Timer.md) | private final | +| width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| heightRatio | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | +| cursorBlinkTimer | [Timer](/core/utils/Timer.md) | private final | +| blink | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| returnCallback | [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private | + + +## Methods + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### unfocus() + +```java +public void unfocus() +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getLabel() + +```java +public String getLabel() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setLabel() + +```java +public void setLabel(String label) +``` + +### getValue() + +```java +public String getValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setValue() + +```java +public void setValue(String value) +``` + +### setWidth() + +```java +public void setWidth(double width) +``` + +### setReturnCallback() + +```java +public void setReturnCallback(Consumer returnCallback) +``` + +### setCharacterFilter() + +```java +public void setCharacterFilter(Predicate characterFilter) +``` + +### isFocused() + +```java +public boolean isFocused() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setFocused() + +```java +public void setFocused(boolean focused) +``` + +### getTextField() + +```java +public TextField getTextField() +``` + +**Returns:** [TextField](/client/api/utils/objects/TextField.md) + diff --git a/docs/api/client/api/ui/window/context/ContextAction.md b/docs/api/client/api/ui/window/context/ContextAction.md new file mode 100644 index 0000000..714540a --- /dev/null +++ b/docs/api/client/api/ui/window/context/ContextAction.md @@ -0,0 +1,10 @@ +# ContextAction + +**Package:** `org.rusherhack.client.api.ui.window.context` + +**Source:** `org/rusherhack/client/api/ui/window/context/ContextAction.java` + +## Overview + +`ContextAction` is a record. + diff --git a/docs/api/client/api/ui/window/view/Alignment.md b/docs/api/client/api/ui/window/view/Alignment.md new file mode 100644 index 0000000..dc5a5da --- /dev/null +++ b/docs/api/client/api/ui/window/view/Alignment.md @@ -0,0 +1,18 @@ +# Alignment + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/SimpleView.java` + +## Overview + +`Alignment` is a enum. + +## Constants + +### LEFT + +### CENTER + +### RIGHT + diff --git a/docs/api/client/api/ui/window/view/Column.md b/docs/api/client/api/ui/window/view/Column.md new file mode 100644 index 0000000..d25dfce --- /dev/null +++ b/docs/api/client/api/ui/window/view/Column.md @@ -0,0 +1,59 @@ +# Column + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/ListView.java` + +A column in a list view + +## Overview + +`Column` is a class and implements [INamed](/core/interfaces/INamed.md). + +## Constructor + +```java +public Column(String name) +``` + +```java +public Column(String name, double widthWeight) +``` + +```java +public Column(String name, Comparator comparator, double widthWeight) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| comparator | [Comparator](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Comparator.html)<`T`> | private | +| widthWeight | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | + + +## Methods + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getComparator() + +```java +public Comparator getComparator() +``` + +**Returns:** [Comparator](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Comparator.html)<`T`> + +### setComparator() + +```java +public void setComparator(Comparator comparator) +``` + diff --git a/docs/api/client/api/ui/window/view/ListItemView.md b/docs/api/client/api/ui/window/view/ListItemView.md new file mode 100644 index 0000000..8b8988e --- /dev/null +++ b/docs/api/client/api/ui/window/view/ListItemView.md @@ -0,0 +1,57 @@ +# ListItemView + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/ListView.java` + +## Overview + +`ListItemView` is a class that extends [ScrollableView](/client/api/ui/window/view/ScrollableView.md). + +## Constructor + +```java +public ListItemView(Window window, ListView listView, List items) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| listView | [ListView](/client/api/ui/window/view/ListView.md)<`T`> | private final | + + +## Methods + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getListView() + +```java +public ListView getListView() +``` + +**Returns:** [ListView](/client/api/ui/window/view/ListView.md)<`T`> + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/ui/window/view/ListView.md b/docs/api/client/api/ui/window/view/ListView.md new file mode 100644 index 0000000..967845e --- /dev/null +++ b/docs/api/client/api/ui/window/view/ListView.md @@ -0,0 +1,137 @@ +# ListView + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/ListView.java` + +**Author:** John200410 + + + +## Overview + +`ListView` is a class that extends [WindowView](/client/api/ui/window/view/WindowView.md). + +## Constructor + +```java +public ListView(String name, Window window, List items) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| itemView | [ListItemView](/client/api/ui/window/view/ListItemView.md) | protected final | +| items | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> | protected final | +| columns | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Column](/client/api/ui/window/view/Column.md)> | protected final | +| sortColumn | [Column](/client/api/ui/window/view/Column.md) | protected | +| sortAscending | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | +| selectedItem | `T` | protected | +| deleteCallback | [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<`T`> | protected | + + +## Methods + +### renderViewContent() + +```java +public void renderViewContent(double mouseX, double mouseY) +``` + +### sortByColumn() + +```java +public void sortByColumn(ListView.Column column) +``` + +### resort() + +```java +public void resort() +``` + +### getColumns() + +```java +public List getColumns() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Column](/client/api/ui/window/view/Column.md)> + +### getColumnWidth() + +```java +public double getColumnWidth(ListView.Column column) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getSortColumn() + +```java +public Column getSortColumn() +``` + +**Returns:** [Column](/client/api/ui/window/view/Column.md) + +### isSortAscending() + +```java +public boolean isSortAscending() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getSelectedItem() + +```java +public T getSelectedItem() +``` + +**Returns:** `T` + +### setSelectedItem() + +```java +public void setSelectedItem(ListItemContent selectedItem) +``` + +### addColumn() + +```java +public Column addColumn(String name) +``` + +**Returns:** [Column](/client/api/ui/window/view/Column.md) + +### addColumn() + +```java +public Column addColumn(String name, double widthWeight) +``` + +**Returns:** [Column](/client/api/ui/window/view/Column.md) + +### addColumn() + +```java +public Column addColumn(String name, Comparator comparator, double widthWeight) +``` + +**Returns:** [Column](/client/api/ui/window/view/Column.md) + +### getItemView() + +```java +public ListItemView getItemView() +``` + +**Returns:** [ListItemView](/client/api/ui/window/view/ListItemView.md) + +### setDeleteCallback() + +```java +public void setDeleteCallback(Consumer deleteCallback) +``` + diff --git a/docs/api/client/api/ui/window/view/RichTextComponent.md b/docs/api/client/api/ui/window/view/RichTextComponent.md new file mode 100644 index 0000000..bd296d6 --- /dev/null +++ b/docs/api/client/api/ui/window/view/RichTextComponent.md @@ -0,0 +1,43 @@ +# RichTextComponent + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/RichTextView.java` + +## Overview + +`RichTextComponent` is a class that extends [ParagraphComponent](/client/api/ui/window/content/component/ParagraphComponent.md). + +## Constructor + +```java +public RichTextComponent(Window window, String str) +``` + +```java +public RichTextComponent(Window window, Component component) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| component | `Component` | private final | + + +## Methods + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### getContextMenu() + +```java +public List getContextMenu() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ContextAction](/client/api/ui/window/context/ContextAction.md)> + diff --git a/docs/api/client/api/ui/window/view/RichTextView.md b/docs/api/client/api/ui/window/view/RichTextView.md new file mode 100644 index 0000000..9eaf2c0 --- /dev/null +++ b/docs/api/client/api/ui/window/view/RichTextView.md @@ -0,0 +1,77 @@ +# RichTextView + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/RichTextView.java` + +A scrollable view meant for displaying logs + + + +TODO: add selection copying +* **Author:** John200410 11/22/2023 + + + +## Overview + +`RichTextView` is a class that extends [ScrollableView](/client/api/ui/window/view/ScrollableView.md). + +## Constructor + +```java +public RichTextView(Window window) +``` + +```java +public RichTextView(String name, Window window) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| textComponents | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[RichTextComponent](/client/api/ui/window/view/RichTextComponent.md)> | private final | +| queue | [Queue](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Queue.html)<[RichTextComponent](/client/api/ui/window/view/RichTextComponent.md)> | private final | + + +## Methods + +### add() + +```java +public void add(String text, int color) +``` + +### add() + +```java +public void add(Component text, int color) +``` + +### renderViewContent() + +```java +public void renderViewContent(double mouseX, double mouseY) +``` + +### clear() + +```java +public void clear() +``` + +### shouldAutoJumpToBottom() + +```java +protected boolean shouldAutoJumpToBottom() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### newComponent() + +```java +protected void newComponent(RichTextComponent c, int color) +``` + diff --git a/docs/api/client/api/ui/window/view/ScrollableView.md b/docs/api/client/api/ui/window/view/ScrollableView.md new file mode 100644 index 0000000..bfdc387 --- /dev/null +++ b/docs/api/client/api/ui/window/view/ScrollableView.md @@ -0,0 +1,118 @@ +# ScrollableView + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/ScrollableView.java` + +## Overview + +`ScrollableView` is a class that extends [SimpleView](/client/api/ui/window/view/SimpleView.md). + +## Constructor + +```java +public ScrollableView(Window window, List contentList) +``` + +```java +public ScrollableView(String name, Window window, List contentList) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| isDraggingScrollbarGrip | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | +| dragDeltaY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | public | +| prevMax | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| scrollbar | [Scrollbar](/client/api/utils/objects/Scrollbar.md) | protected final | + + +## Methods + +### renderViewContent() + +```java +public void renderViewContent(double mouseX, double mouseY) +``` + +### shouldAutoJumpToBottom() + +```java +protected boolean shouldAutoJumpToBottom() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### getTopOffset() + +```java +protected double getTopOffset() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### canScroll() + +```java +public boolean canScroll() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setDraggingGrip() + +```java +public void setDraggingGrip(boolean dragging, double dragDeltaY) +``` + +### getScrollbar() + +```java +public Scrollbar getScrollbar() +``` + +**Returns:** [Scrollbar](/client/api/utils/objects/Scrollbar.md) + +### getContentHeight() + +```java +public double getContentHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### isDraggingScrollbarGrip() + +```java +public boolean isDraggingScrollbarGrip() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### scrollToTop() + +```java +public void scrollToTop() +``` + +### scrollToBottom() + +```java +public void scrollToBottom() +``` + diff --git a/docs/api/client/api/ui/window/view/SimpleView.md b/docs/api/client/api/ui/window/view/SimpleView.md new file mode 100644 index 0000000..d21fb1e --- /dev/null +++ b/docs/api/client/api/ui/window/view/SimpleView.md @@ -0,0 +1,124 @@ +# SimpleView + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/SimpleView.java` + +## Overview + +`SimpleView` is a class that extends [WindowView](/client/api/ui/window/view/WindowView.md). + +## Constructor + +```java +public SimpleView(Window window, List contentList) +``` + +```java +public SimpleView(String name, Window window, List contentList) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| horizontalAlignment | [Alignment](/client/api/feature/hud/Alignment.md) | protected | +| verticalAlignment | [VerticalAlignment](/client/api/ui/window/view/VerticalAlignment.md) | protected | +| topPadding | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| leftPadding | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| contentPadding | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| viewWidthModifier | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | + + +## Methods + +### renderViewContent() + +```java +public void renderViewContent(double mouseX, double mouseY) +``` + +### getViewWidth() + +```java +public double getViewWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getViewHeight() + +```java +public double getViewHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getTopOffset() + +```java +protected double getTopOffset() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getLeftOffset() + +```java +protected double getLeftOffset() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### setTopPadding() + +```java +public void setTopPadding(double topPadding) +``` + +### setLeftPadding() + +```java +public void setLeftPadding(double leftPadding) +``` + +### setContentPadding() + +```java +public void setContentPadding(double contentPadding) +``` + +### setViewWidthModifier() + +```java +public void setViewWidthModifier(double viewWidthModifier) +``` + +### setAlignment() + +```java +public void setAlignment(Alignment alignment) +``` + +### setVerticalAlignment() + +```java +public void setVerticalAlignment(VerticalAlignment verticalAlignment) +``` + +### getContentWidth() + +```java +public double getContentWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getContentHeight() + +```java +public double getContentHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/ui/window/view/SplitView.md b/docs/api/client/api/ui/window/view/SplitView.md new file mode 100644 index 0000000..f1c32ab --- /dev/null +++ b/docs/api/client/api/ui/window/view/SplitView.md @@ -0,0 +1,47 @@ +# SplitView + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/SplitView.java` + +**Author:** john@rusherhack.org 12/23/2025 + + + +## Overview + +`SplitView` is a class that extends [WindowView](/client/api/ui/window/view/WindowView.md). + +## Constructor + +```java +public SplitView(Window window, WindowView left, WindowView right) +``` + +```java +public SplitView(String name, Window window, WindowView left, WindowView right) +``` + +```java +public SplitView(String name, Window window, WindowView left, WindowView center, double centerWidth, WindowView right) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| PADDING | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private static final | +| left | [WindowView](/client/api/ui/window/view/WindowView.md) | private | +| center | [WindowView](/client/api/ui/window/view/WindowView.md) | private | +| right | [WindowView](/client/api/ui/window/view/WindowView.md) | private | +| centerWidth | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | + + +## Methods + +### renderViewContent() + +```java +public void renderViewContent(double mouseX, double mouseY) +``` + diff --git a/docs/api/client/api/ui/window/view/TabbedView.md b/docs/api/client/api/ui/window/view/TabbedView.md new file mode 100644 index 0000000..ed4727d --- /dev/null +++ b/docs/api/client/api/ui/window/view/TabbedView.md @@ -0,0 +1,113 @@ +# TabbedView + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/TabbedView.java` + +A view with different tabs. +WindowViews in the content list are rendered in tabs, while other content is rendered at the bottom below the tab view. +* **Author:** John200410 + + + +## Overview + +`TabbedView` is a class that extends [SimpleView](/client/api/ui/window/view/SimpleView.md). + +## Constructor + +```java +public TabbedView(Window window, List contentList) +``` + +```java +public TabbedView(String name, Window window, List contentList) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| activeTabView | [WindowView](/client/api/ui/window/view/WindowView.md) | private | + + +## Methods + +### renderViewContent() + +```java +public void renderViewContent(double mouseX, double mouseY) +``` + +tabview rendering should be handled in the WindowViewHandler + +### getContent() + +```java +public List getContent() +``` + +**Returns**: list of persistent content that should be rendered below the tab view + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowContent](/client/api/ui/window/content/WindowContent.md)> + +### setActiveTabView() + +```java +public void setActiveTabView(WindowView activeTabView) +``` + +### getActiveTabView() + +```java +public WindowView getActiveTabView() +``` + +**Returns:** [WindowView](/client/api/ui/window/view/WindowView.md) + +### getTabs() + +```java +public List getTabs() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowView](/client/api/ui/window/view/WindowView.md)> + +### getTabViewHeight() + +```java +public double getTabViewHeight() +``` + +this isnt accurate its just used as a guide to know where persistent content should be rendered + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getPersistentContentHeight() + +```java +public double getPersistentContentHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getTopOffset() + +```java +protected double getTopOffset() +``` + +render the persistent content below the tab view + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getLeftOffset() + +```java +protected double getLeftOffset() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/ui/window/view/VerticalAlignment.md b/docs/api/client/api/ui/window/view/VerticalAlignment.md new file mode 100644 index 0000000..6a638ea --- /dev/null +++ b/docs/api/client/api/ui/window/view/VerticalAlignment.md @@ -0,0 +1,18 @@ +# VerticalAlignment + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/SimpleView.java` + +## Overview + +`VerticalAlignment` is a enum. + +## Constants + +### TOP + +### CENTER + +### BOTTOM + diff --git a/docs/api/client/api/ui/window/view/WindowView.md b/docs/api/client/api/ui/window/view/WindowView.md new file mode 100644 index 0000000..4356572 --- /dev/null +++ b/docs/api/client/api/ui/window/view/WindowView.md @@ -0,0 +1,197 @@ +# WindowView + +**Package:** `org.rusherhack.client.api.ui.window.view` + +**Source:** `org/rusherhack/client/api/ui/window/view/WindowView.java` + +A WindowView is a WindowContent that is able to render a set of other WindowContents in a defined way. + + + +WindowViews should also be sure to set the position of the WindowContent before rendering it so that it is aware of its position. +* **Author:** John200410 + + + +## Overview + +`WindowView` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md) and implements [INamed](/core/interfaces/INamed.md). + +## Constructor + +```java +public WindowView(Window window, List contentList) +``` + +```java +public WindowView(String name, Window window, List contentList) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| viewWidth | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| viewHeight | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | +| contentList | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`? extends WindowContent`> | protected | +| viewName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | protected | + + +## Methods + +### renderViewContent() + +```java +public abstract void renderViewContent(double mouseX, double mouseY) +``` + +### renderContent() + +```java +public void renderContent(double mouseX, double mouseY, WindowView parent) +``` + +### unfocus() + +```java +public void unfocus() +``` + +### mouseClicked() + +```java +public boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +public void mouseReleased(double mouseX, double mouseY, int button) +``` + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int key, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseScrolled() + +```java +public boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### tick() + +```java +public void tick() +``` + +### setViewWidth() + +```java +public void setViewWidth(double viewWidth) +``` + +### setViewHeight() + +```java +public void setViewHeight(double viewHeight) +``` + +### getWidth() + +```java +public double getWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getHeight() + +```java +public double getHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getViewWidth() + +```java +public double getViewWidth() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getViewHeight() + +```java +public double getViewHeight() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### add() + +```java +public void add(WindowContent content) +``` + +### remove() + +```java +public void remove(WindowContent content) +``` + +### getContent() + +```java +public List getContent() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowContent](/client/api/ui/window/content/WindowContent.md)> + +### setContentList() + +```java +public void setContentList(List contentList) +``` + +### getHandler() + +```java +protected WindowHandlerBase getHandler() +``` + +**Returns:** [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) + +### getViewHandler() + +```java +protected WindowViewHandlerBase getViewHandler() +``` + +**Returns:** [WindowViewHandlerBase](/client/api/ui/window/WindowViewHandlerBase.md) + diff --git a/docs/api/client/api/utils/BufferUtils.md b/docs/api/client/api/utils/BufferUtils.md new file mode 100644 index 0000000..3134419 --- /dev/null +++ b/docs/api/client/api/utils/BufferUtils.md @@ -0,0 +1,63 @@ +# BufferUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/BufferUtils.java` + +**Author:** John200410 1/3/2023 + + + +## Overview + +`BufferUtils` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| ALLOCATOR | `MemoryUtil.MemoryAllocator` | public static final | + + +## Methods + +### create() + +```java +public static ByteBuffer create(int size) +``` + +**Returns:** [ByteBuffer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/ByteBuffer.html) + +### resize() + +```java +public static ByteBuffer resize(ByteBuffer buffer, int size) +``` + +**Returns:** [ByteBuffer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/ByteBuffer.html) + +### fileToByteBuffer() + +```java +public static ByteBuffer fileToByteBuffer(File file) +``` + +**Returns:** [ByteBuffer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/ByteBuffer.html) + +### resourceToByteBuffer() + +```java +public static ByteBuffer resourceToByteBuffer(ClassLoader cl, String resource) +``` + +**Returns:** [ByteBuffer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/ByteBuffer.html) + +### inputStreamToByteBuffer() + +```java +public static ByteBuffer inputStreamToByteBuffer(InputStream inputStream) +``` + +**Returns:** [ByteBuffer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/ByteBuffer.html) + diff --git a/docs/api/client/api/utils/ChatUtils.md b/docs/api/client/api/utils/ChatUtils.md new file mode 100644 index 0000000..f00fff9 --- /dev/null +++ b/docs/api/client/api/utils/ChatUtils.md @@ -0,0 +1,57 @@ +# ChatUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/ChatUtils.java` + +**Author:** John200410 3/14/2023 + + + +## Overview + +`ChatUtils` is a class and implements [Globals](/client/api/Globals.md). + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| MESSAGE_COMMANDS | [HashSet](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashSet.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | public static final | +| REPLY_COMMANDS | [HashSet](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashSet.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | public static final | +| SECTION_SIGN | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | + + +## Methods + +### print() + +```java +public static void print(String string) +``` + +### print() + +```java +public static void print(String string, Style textStyle) +``` + +### print() + +```java +public static void print(Component component) +``` + +### print() + +```java +public static void print(Component component, int tagColor, Style prefixStyle, int typeID) +``` + +### stripFormatting() + +```java +public static String stripFormatting(String string) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/utils/ContainerUtils.md b/docs/api/client/api/utils/ContainerUtils.md new file mode 100644 index 0000000..a81ccf4 --- /dev/null +++ b/docs/api/client/api/utils/ContainerUtils.md @@ -0,0 +1,139 @@ +# ContainerUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/ContainerUtils.java` + +Helper class containing functions to help you search items inside of containers +* **Author:** john@rusherhack.org 7/21/2025 + + + +## Overview + +`ContainerUtils` is a class and implements [Globals](/client/api/Globals.md). + +## Methods + +### getContainerMenu() + +```java +public static AbstractContainerMenu getContainerMenu() +``` + +**Returns**: the container menu from the current screen + + + +**Returns:** `AbstractContainerMenu` + +### getContainerMenuFromScreen() + +```java +public static AbstractContainerMenu getContainerMenuFromScreen(Screen screen) +``` + +**Returns**: the container menu from the screen + + + +**Returns:** `AbstractContainerMenu` + +### findItem() + +```java +public static int findItem(AbstractContainerMenu menu, Item item) +``` + +Finds an item in the container menu +* **Parameter `menu`**: the container menu + + +**Parameter `item`**: the item type to look for + + +**Returns**: the slot id of the found stack, or -1 if not found + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### findItem() + +```java +public static int findItem(AbstractContainerMenu menu, Predicate predicate) +``` + +Finds an item in the container menu +* **Parameter `menu`**: the container menu + + +**Parameter `predicate`**: **Returns**: the slot id of the found stack, or -1 if not found + + + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### findItem() + +```java +public static int findItem(AbstractContainerMenu menu, Predicate predicate, Comparator comparator) +``` + +Finds an item in the container menu +* **Parameter `menu`**: the container menu + + +**Parameter `predicate`**: @param comparator a comparator for which each valid stack will be compared against the previous valid stack + + +**Returns**: the slot id of the found stack, or -1 if not found + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### loopContainer() + +```java +public static void loopContainer(AbstractContainerMenu menu, BiFunction function) +``` + +**Parameter `function`**: the function to apply to each slot. function accepts the slot number and item stack, and should return true to stop the loop + + + +### getMenuSize() + +```java +public static int getMenuSize(AbstractContainerMenu menu) +``` + +**Returns**: the number of slots in the menu + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### isContainerEmpty() + +```java +public static boolean isContainerEmpty(AbstractContainerMenu menu) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isContainerFull() + +```java +public static boolean isContainerFull(AbstractContainerMenu menu) +``` + +**Returns**: whether the container is full of items + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/utils/EntityUtils.md b/docs/api/client/api/utils/EntityUtils.md new file mode 100644 index 0000000..fdcce9c --- /dev/null +++ b/docs/api/client/api/utils/EntityUtils.md @@ -0,0 +1,40 @@ +# EntityUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/EntityUtils.java` + +**Author:** John200410 6/19/2023 + + + +## Overview + +`EntityUtils` is a class and implements [Globals](/client/api/Globals.md). + +## Methods + +### interpolateEntityVec() + +```java +public static Vec3 interpolateEntityVec(Entity entity, float partialTicks) +``` + +**Returns:** `Vec3` + +### interpolateEntityPosition() + +```java +public static double[] interpolateEntityPosition(Entity entity, float partialTicks) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)[] + +### getNameForEntity() + +```java +public static String getNameForEntity(Entity entity) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/utils/FormBuilder.md b/docs/api/client/api/utils/FormBuilder.md new file mode 100644 index 0000000..61ad827 --- /dev/null +++ b/docs/api/client/api/utils/FormBuilder.md @@ -0,0 +1,57 @@ +# FormBuilder + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/WebUtils.java` + +## Overview + +`FormBuilder` is a class. + +## Constructor + +```java +private FormBuilder() +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| map | [LinkedHashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashMap.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html), [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private final | + + +## Methods + +### create() + +```java +public static FormBuilder create() +``` + +**Returns:** [FormBuilder](/client/api/utils/FormBuilder.md) + +### add() + +```java +public FormBuilder add(String key, String value) +``` + +**Returns:** [FormBuilder](/client/api/utils/FormBuilder.md) + +### build() + +```java +public String build() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### buildPublisher() + +```java +public HttpRequest.BodyPublisher buildPublisher() +``` + +**Returns:** `HttpRequest.BodyPublisher` + diff --git a/docs/api/client/api/utils/InputBuilder.md b/docs/api/client/api/utils/InputBuilder.md new file mode 100644 index 0000000..f44e309 --- /dev/null +++ b/docs/api/client/api/utils/InputBuilder.md @@ -0,0 +1,104 @@ +# InputBuilder + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/InputBuilder.java` + +Class for modifying `net.minecraft.world.entity.player.Input` objects +* **Author:** john@rusherhack.org 12/28/2024 + + + +## Overview + +`InputBuilder` is a class. + +## Constructor + +```java +public InputBuilder() +``` + +```java +public InputBuilder(Input input) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| forward | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| backward | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| left | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| right | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| jump | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| shift | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| sprint | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### forward() + +```java +public InputBuilder forward(boolean forward) +``` + +**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) + +### backward() + +```java +public InputBuilder backward(boolean backward) +``` + +**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) + +### left() + +```java +public InputBuilder left(boolean left) +``` + +**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) + +### right() + +```java +public InputBuilder right(boolean right) +``` + +**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) + +### jump() + +```java +public InputBuilder jump(boolean jump) +``` + +**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) + +### shift() + +```java +public InputBuilder shift(boolean shift) +``` + +**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) + +### sprint() + +```java +public InputBuilder sprint(boolean sprint) +``` + +**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) + +### build() + +```java +public Input build() +``` + +**Returns:** `Input` + diff --git a/docs/api/client/api/utils/InputUtils.md b/docs/api/client/api/utils/InputUtils.md new file mode 100644 index 0000000..8071585 --- /dev/null +++ b/docs/api/client/api/utils/InputUtils.md @@ -0,0 +1,33 @@ +# InputUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/InputUtils.java` + +Helper class containing input related functions +* **Author:** John200410 5/30/2023 + + + +## Overview + +`InputUtils` is a class and implements [Globals](/client/api/Globals.md). + +## Methods + +### getMouseX() + +```java +public static double getMouseX() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getMouseY() + +```java +public static double getMouseY() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/utils/InventoryUtils.md b/docs/api/client/api/utils/InventoryUtils.md new file mode 100644 index 0000000..e60ea51 --- /dev/null +++ b/docs/api/client/api/utils/InventoryUtils.md @@ -0,0 +1,308 @@ +# InventoryUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/InventoryUtils.java` + +Helper class containing inventory related functions +* **Author:** John200410 7/8/2023 + + + +## Overview + +`InventoryUtils` is a class and implements [Globals](/client/api/Globals.md). + +## Methods + +### clickSlot() + +```java +public static void clickSlot(int slotId, boolean shiftClick) +``` + +Clicks a slot in the player's inventory +* **Parameter `slotId`**: the slot id in standard inventory slot numbers + + +@see [...](https://minecraft.wiki/w/Java_Edition_protocol/Inventory) + +### swapSlots() + +```java +public static void swapSlots(int inventorySlot, int hotbarSlot) +``` + +Swaps 2 item slots in the player's inventory +* **Parameter `inventorySlot`**: the slot id in standard inventory slot numbers + + +**Parameter `hotbarSlot`**: the slot id in hotbar slot numbers (hotbar: 0 - 8, offhand: 40, armor: 36 - 39) + + +@see [...](https://minecraft.wiki/w/Java_Edition_protocol/Inventory) + +### findItem() + +```java +public static int findItem(Item item, boolean hotbarPriority, boolean includeOffhand) +``` + +Finds an item in the player's inventory +* **Parameter `item`**: the item to find + + +**Parameter `hotbarPriority`**: @param includeOffhand whether to include the offhand slot + + +**Returns**: the inventory slot id of the item, or -1 if not found. + + +@see [...](https://minecraft.wiki/w/Java_Edition_protocol/Inventory) + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### findItem() + +```java +public static int findItem(Predicate predicate, boolean hotbarPriority, boolean includeOffhand) +``` + +Finds an item in the player's inventory +* **Parameter `predicate`**: @param hotbarPriority + + +**Parameter `includeOffhand`**: whether to include the offhand slot + + +**Returns**: the inventory slot id of the item, or -1 if not found. + + +@see [...](https://minecraft.wiki/w/Java_Edition_protocol/Inventory) + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### findItem() + +```java +public static int findItem(Predicate predicate, Comparator comparator, boolean hotbarPriority, boolean includeOffhand) +``` + +Finds an item in the player's inventory +* **Parameter `predicate`**: @param comparator a comparator for which each valid stack will be compared against the previous valid stack + + +**Parameter `hotbarPriority`**: @param includeOffhand whether to include the offhand slot + + +**Returns**: the inventory slot id of the item, or -1 if not found. + + +@see [...](https://minecraft.wiki/w/Java_Edition_protocol/Inventory) + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### findItemHotbar() + +```java +public static int findItemHotbar(Item item) +``` + +Finds an item in the player's hotbar +* **Parameter `item`**: the item to find + + +**Returns**: the hotbar slot id of the item, or -1 if not found. + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### findItemHotbar() + +```java +public static int findItemHotbar(Predicate predicate) +``` + +Finds an item in the player's hotbar +* **Parameter `predicate`**: **Returns**: the hotbar slot id of the item, or -1 if not found. + + + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### findItemHotbar() + +```java +public static int findItemHotbar(Predicate predicate, Comparator comparator) +``` + +Finds an item in the player's hotbar +* **Parameter `predicate`**: @param comparator a comparator for which each valid stack will be compared against the previous valid stack + + +**Returns**: the hotbar slot id of the item, or -1 if not found. + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getItemCount() + +```java +public static int getItemCount(Item item, boolean hotbarOnly, boolean includeOffhand) +``` + +Gets the count of an item in the player's inventory +* **Parameter `item`**: the item to count + + +**Parameter `hotbarOnly`**: whether to only search the hotbar + + +**Parameter `includeOffhand`**: whether to include the offhand slot + + +**Returns**: the number of the item that the player has + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getItemCount() + +```java +public static int getItemCount(Predicate predicate, boolean hotbarOnly, boolean includeOffhand) +``` + +Gets the count of an item in the player's inventory +* **Parameter `predicate`**: @param hotbarOnly whether to only search the hotbar + + +**Parameter `includeOffhand`**: whether to include the offhand slot + + +**Returns**: the number of the item that the player has + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getStackCount() + +```java +public static int getStackCount(Predicate predicate, boolean hotbarOnly, boolean includeOffhand) +``` + +Gets the count of item stacks matching the specified predicate +* **Parameter `predicate`**: @param hotbarOnly whether to only search the hotbar + + +**Parameter `includeOffhand`**: whether to include the offhand slot + + +**Returns**: the number of stacks of the item that the player has + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### loopInventory() + +```java +public static void loopInventory(BiFunction function, boolean includeInventory, boolean includeOffhand, boolean includeHotbar, boolean hotbarPriority) +``` + +**Parameter `function`**: the function to apply to each slot. function accepts the slot number and item stack, and should return true to stop the loop + + +**Parameter `includeInventory`**: whether to include the player's inventory + + +**Parameter `includeOffhand`**: whether to include the offhand slot + + +**Parameter `includeHotbar`**: whether to include the player's hotbar + + +**Parameter `hotbarPriority`**: whether to loop the hotbar first + + + +### getSelectedHotbarSlot() + +```java +public static int getSelectedHotbarSlot() +``` + +**Returns**: selected inventory slot + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setHotbarSlot() + +```java +public static void setHotbarSlot(int slot) +``` + +Sets the selected hotbar slot +* **Parameter `slot`**: hotbar slot + + + +### isInventoryEmpty() + +```java +public static boolean isInventoryEmpty() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isInventoryFull() + +```java +public static boolean isInventoryFull() +``` + +**Returns**: whether the inventory is full of items + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getInventorySlot() + +```java +public static int getInventorySlot(EquipmentSlot equipmentSlot) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getEquipmentSlot() + +```java +public static EquipmentSlot getEquipmentSlot(int slot) +``` + +**Returns:** `EquipmentSlot` + +### invToHotbarSlot() + +```java +public static int invToHotbarSlot(int slot) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### hotbarToInvSlot() + +```java +public static int hotbarToInvSlot(int slot) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/utils/ItemUtils.md b/docs/api/client/api/utils/ItemUtils.md new file mode 100644 index 0000000..5c993dd --- /dev/null +++ b/docs/api/client/api/utils/ItemUtils.md @@ -0,0 +1,185 @@ +# ItemUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/ItemUtils.java` + +Helper class for items and item stacks +* **Author:** john@rusherhack.org 5/25/2025 + + + +## Overview + +`ItemUtils` is a class. + +## Methods + +### getDurability() + +```java +public static float getDurability(ItemStack stack) +``` + +Gets durability of an item +* **Parameter `stack`**: item stack + + +**Returns**: float representing percentage of durability of the itemstack (0f to 1f) + + + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### isArmor() + +```java +public static boolean isArmor(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isElytra() + +```java +public static boolean isElytra(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isGlideable() + +```java +public static boolean isGlideable(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isItemEquipableInSlot() + +```java +public static boolean isItemEquipableInSlot(ItemStack stack, EquipmentSlot slot) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isMeleeWeapon() + +```java +public static boolean isMeleeWeapon(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isMeleeWeapon() + +```java +public static boolean isMeleeWeapon(ItemStack stack, boolean includeSwords, boolean includeAxe, boolean includeTrident, boolean includeMace) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isRangedWeapon() + +```java +public static boolean isRangedWeapon(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isRangedWeapon() + +```java +public static boolean isRangedWeapon(ItemStack stack, boolean includeBow, boolean includeCrossbow, boolean includeTrident) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isSword() + +```java +public static boolean isSword(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isAxe() + +```java +public static boolean isAxe(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isTrident() + +```java +public static boolean isTrident(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isMace() + +```java +public static boolean isMace(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isTool() + +```java +public static boolean isTool(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isCorrectToolForDrops() + +```java +public static boolean isCorrectToolForDrops(ItemStack stack, BlockState blockstate) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isPickaxe() + +```java +public static boolean isPickaxe(ItemStack stack) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getAttributeModifiers() + +```java +public static Multimap, AttributeModifier> getAttributeModifiers(ItemStack stack, EquipmentSlot slot) +``` + +**Returns:** `Multimap`<`Holder`<`Attribute`>, `AttributeModifier`> + +### getAttributeModifiers() + +```java +public static Collection getAttributeModifiers(ItemStack stack, Holder attribute, EquipmentSlot slot) +``` + +**Returns:** [Collection](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Collection.html)<`AttributeModifier`> + +### getContainerItemsFromStack() + +```java +public static List getContainerItemsFromStack(ItemStack stack) +``` + +Returns a collection of items that are inside of a container item (like shulker boxes) +* **Parameter `stack`**: the container item + + +**Returns**: items inside the container + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`ItemStack`> + diff --git a/docs/api/client/api/utils/PlayerUtils.md b/docs/api/client/api/utils/PlayerUtils.md new file mode 100644 index 0000000..d9c20f0 --- /dev/null +++ b/docs/api/client/api/utils/PlayerUtils.md @@ -0,0 +1,160 @@ +# PlayerUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/PlayerUtils.java` + +Helper class containing player related functions +* **Author:** John200410 6/5/2023 + + + +## Overview + +`PlayerUtils` is a class and implements [Globals](/client/api/Globals.md). + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| fallDistance | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private static | + + +## Methods + +### getCurrentSpeed() + +```java +public static double getCurrentSpeed() +``` + +Get current horizontal speed + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### onMove() + +```java +private static void onMove(EventMove event) +``` + +### getDirectionalSpeed() + +```java +public static double[] getDirectionalSpeed(double speed) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)[] + +### getDirectionalSpeed() + +```java +public static double[] getDirectionalSpeed(float yaw, double speed) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)[] + +### getDirectionalSpeed() + +```java +public static double[] getDirectionalSpeed(LocalPlayer player, float yaw, double speed) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)[] + +### getDirectionalSpeed() + +```java +public static double[] getDirectionalSpeed(LocalPlayer player, float yaw, double speed, float forward, float strafe) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)[] + +### getInput() + +```java +public static PlayerInput getInput() +``` + +**Returns:** [PlayerInput](/client/api/utils/objects/PlayerInput.md) + +### getInput() + +```java +public static PlayerInput getInput(LocalPlayer player) +``` + +**Returns:** [PlayerInput](/client/api/utils/objects/PlayerInput.md) + +### hasHorizontalInput() + +```java +public static boolean hasHorizontalInput() +``` + +@deprecated use [PlayerInput](/client/api/utils/objects/PlayerInput.md)#hasHorizontalInput() + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getFallDistance() + +```java +public static float getFallDistance() +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### setFallDistance() + +```java +public static void setFallDistance(float distance) +``` + +### getEyeBlockPos() + +```java +public static BlockPos getEyeBlockPos() +``` + +**Returns:** `BlockPos` + +### isStuck() + +```java +public static boolean isStuck() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getArmorStacks() + +```java +public static List getArmorStacks() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`ItemStack`> + +### getArmorStacks() + +```java +public static List getArmorStacks(LivingEntity entity) +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`ItemStack`> + +### getBlockReach() + +```java +public static double getBlockReach() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getEntityReach() + +```java +public static double getEntityReach() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/utils/RotationUtils.md b/docs/api/client/api/utils/RotationUtils.md new file mode 100644 index 0000000..8781667 --- /dev/null +++ b/docs/api/client/api/utils/RotationUtils.md @@ -0,0 +1,32 @@ +# RotationUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/RotationUtils.java` + +**Author:** John200410 6/14/2023 + + + +## Overview + +`RotationUtils` is a class and implements [Globals](/client/api/Globals.md). + +## Methods + +### getRotations() + +```java +public static float[] getRotations(Vec3 vec) +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html)[] + +### getRotations() + +```java +public static float[] getRotations(Vec3 from, Vec3 to) +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html)[] + diff --git a/docs/api/client/api/utils/UUIDSerializer.md b/docs/api/client/api/utils/UUIDSerializer.md new file mode 100644 index 0000000..55fc130 --- /dev/null +++ b/docs/api/client/api/utils/UUIDSerializer.md @@ -0,0 +1,60 @@ +# UUIDSerializer + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/WebUtils.java` + +Utility class for serializing and deserializing UUIDs. + +## Overview + +`UUIDSerializer` is a class that extends `TypeAdapter`. + +## Methods + +### write() + +```java +public void write(JsonWriter out, UUID value) +``` + +### read() + +```java +public UUID read(JsonReader in) +``` + +**Returns:** [UUID](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html) + +### fromString() + +```java +public static UUID fromString(String value) +``` + +Converts a String to a UUID. +* **Parameter `value`**: String to convert. + + +**Returns**: The resulting UUID. + + + +**Returns:** [UUID](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html) + +### fromUUID() + +```java +public static String fromUUID(UUID value) +``` + +Converts a UUID to a String. +* **Parameter `value`**: UUID to convert. + + +**Returns**: The resulting String. + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/utils/WebUtils.md b/docs/api/client/api/utils/WebUtils.md new file mode 100644 index 0000000..5e48e68 --- /dev/null +++ b/docs/api/client/api/utils/WebUtils.md @@ -0,0 +1,107 @@ +# WebUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/WebUtils.java` + +**Author:** john@rusherhack.org 6/28/2020 for rusherhack-rewrite + + + +## Overview + +`WebUtils` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| URL_PATTERN | `Pattern` | public static final | +| GSON | `Gson` | public static final | +| USER_AGENT | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | +| LEGIT_USER_AGENT | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | +| HTTP_CLIENT | `HttpClient` | public static final | + + +## Methods + +### sendCheckedGetRequest() + +```java +public static HttpResponse sendCheckedGetRequest(URI uri, HttpResponse.BodyHandler handler) +``` + +**Returns:** `HttpResponse`<`T`> + +### sendGetRequest() + +```java +public static HttpResponse sendGetRequest(URI uri, HttpResponse.BodyHandler handler) +``` + +**Returns:** `HttpResponse`<`T`> + +### sendPostRequest() + +```java +public static HttpResponse sendPostRequest(URI uri, HttpRequest.BodyPublisher publisher, HttpResponse.BodyHandler handler) +``` + +**Returns:** `HttpResponse`<`T`> + +### sendRequest() + +```java +public static HttpResponse sendRequest(HttpRequest request, HttpResponse.BodyHandler handler) +``` + +**Returns:** `HttpResponse`<`T`> + +### newRequestBuilder() + +```java +public static HttpRequest.Builder newRequestBuilder(URI uri) +``` + +**Returns:** `HttpRequest.Builder` + +### newJsonPostRequest() + +```java +public static HttpRequest.Builder newJsonPostRequest(URI uri, JsonElement json) +``` + +**Returns:** `HttpRequest.Builder` + +### newJsonPostRequest() + +```java +public static HttpRequest.Builder newJsonPostRequest(URI uri, String json) +``` + +**Returns:** `HttpRequest.Builder` + +### newFormPostRequest() + +```java +public static HttpRequest.Builder newFormPostRequest(URI uri, FormBuilder form) +``` + +**Returns:** `HttpRequest.Builder` + +### ofJson() + +```java +public static HttpResponse.BodyHandler ofJson() +``` + +**Returns:** `HttpResponse.BodyHandler`<`JsonElement`> + +### ofJson() + +```java +public static HttpResponse.BodyHandler ofJson(Class clazz) +``` + +**Returns:** `HttpResponse.BodyHandler`<`T`> + diff --git a/docs/api/client/api/utils/WorldUtils.md b/docs/api/client/api/utils/WorldUtils.md new file mode 100644 index 0000000..dda797a --- /dev/null +++ b/docs/api/client/api/utils/WorldUtils.md @@ -0,0 +1,221 @@ +# WorldUtils + +**Package:** `org.rusherhack.client.api.utils` + +**Source:** `org/rusherhack/client/api/utils/WorldUtils.java` + +**Author:** John200410 6/18/2023 + + + +## Overview + +`WorldUtils` is a class and implements [Globals](/client/api/Globals.md). + +## Methods + +### getMaxY() + +```java +public static int getMaxY() +``` + +**Returns**: the max build height + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getMinY() + +```java +public static int getMinY() +``` + +**Returns**: the min build height + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getEntities() + +```java +public static List getEntities() +``` + +**Returns**: all loaded entities + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Entity`> + +### getEntities() + +```java +public static List getEntities(Predicate predicate) +``` + +**Returns**: all loaded entities + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Entity`> + +### getEntitiesSorted() + +```java +public static List getEntitiesSorted() +``` + +**Returns**: all loaded entities sorted by distance to camera + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Entity`> + +### getEntitiesSorted() + +```java +public static List getEntitiesSorted(Entity entity) +``` + +**Returns**: all loaded entities sorted by distance to entity + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Entity`> + +### getEntitiesSorted() + +```java +public static List getEntitiesSorted(Entity entity, Predicate predicate) +``` + +**Returns**: all loaded entities sorted by distance to entity + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Entity`> + +### getChunks() + +```java +public static List getChunks() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`LevelChunk`> + +### getBlockEntities() + +```java +public static List getBlockEntities(boolean sorted) +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`BlockEntity`> + +### getSphere() + +```java +public static List getSphere(Vec3i center, float sphereRadius) +``` + +**Returns**: a sphere of block positions + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`BlockPos`> + +### getSphere() + +```java +public static List getSphere(Vec3i center, float sphereRadius, Predicate predicate) +``` + +**Parameter `predicate`**: a predicate for which all positions will be tested against + + +**Returns**: a sphere of block positions + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`BlockPos`> + +### getCircle() + +```java +public static List getCircle(Vec3i center, float circleRadius) +``` + +**Returns**: a circle of block positions + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`BlockPos`> + +### isReplaceble() + +```java +public static boolean isReplaceble(BlockPos pos) +``` + +**Returns**: true if the position is air or contains a replaceable block + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### checkCollision() + +```java +public static boolean checkCollision(BlockPos pos) +``` + +**Returns**: true if the position is free of entities that would prevent placing + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### checkCollision() + +```java +public static boolean checkCollision(BlockPos pos, VoxelShape shape, Predicate predicate) +``` + +**Parameter `shape`**: the shape in which we are checking for collision + + +**Parameter `predicate`**: a predicate for which all entities will be tested against + + +**Returns**: true if the position is free of entities that would prevent placing + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getBlockPos() + +```java +public static BlockPos getBlockPos(Vec3 vec) +``` + +**Returns:** `BlockPos` + +### isThundering() + +```java +public static boolean isThundering() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isRaining() + +```java +public static boolean isRaining() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/utils/objects/Builder.md b/docs/api/client/api/utils/objects/Builder.md new file mode 100644 index 0000000..1d5fc3f --- /dev/null +++ b/docs/api/client/api/utils/objects/Builder.md @@ -0,0 +1,218 @@ +# Builder + +**Package:** `org.rusherhack.client.api.utils.objects` + +**Source:** `org/rusherhack/client/api/utils/objects/PlayerInput.java` + +## Overview + +`Builder` is a class. + +## Constructor + +```java +public Builder(LocalPlayer player) +``` + +```java +public Builder(Input input) +``` + +```java +public Builder() +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| forward | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| backwards | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| left | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| right | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| jumping | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| sneaking | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### build() + +```java +public PlayerInput build() +``` + +**Returns:** [PlayerInput](/client/api/utils/objects/PlayerInput.md) + +### forward() + +```java +public boolean forward() +``` + +**Returns**: The player's forward input state + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### forward() + +```java +public Builder forward(boolean forward) +``` + +Sets the player's forward input + +**Returns:** [Builder](/client/api/utils/objects/Builder.md) + +### backwards() + +```java +public boolean backwards() +``` + +**Returns**: The player's backwards input state + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### backwards() + +```java +public Builder backwards(boolean backwards) +``` + +Sets the player's backwards input + +**Returns:** [Builder](/client/api/utils/objects/Builder.md) + +### left() + +```java +public boolean left() +``` + +**Returns**: The player's left input state + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### left() + +```java +public Builder left(boolean left) +``` + +Sets the player's left input + +**Returns:** [Builder](/client/api/utils/objects/Builder.md) + +### right() + +```java +public boolean right() +``` + +**Returns**: The player's right input state + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### right() + +```java +public Builder right(boolean right) +``` + +Sets the player's right input + +**Returns:** [Builder](/client/api/utils/objects/Builder.md) + +### jump() + +```java +public boolean jump() +``` + +**Returns**: The player's jump input state + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### jump() + +```java +public Builder jump(boolean jump) +``` + +Sets the player's jump input + +**Returns:** [Builder](/client/api/utils/objects/Builder.md) + +### sneak() + +```java +public boolean sneak() +``` + +**Returns**: The player's sneak input state + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### sneak() + +```java +public Builder sneak(boolean sneak) +``` + +Sets the player's sneak input + +**Returns:** [Builder](/client/api/utils/objects/Builder.md) + +### release() + +```java +public void release() +``` + +Sets all inputs to false + +### x() + +```java +public float x() +``` + +**Returns**: impulse of left/right strafing + + + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### y() + +```java +public float y() +``` + +**Returns**: impulse of forward/backwards + + + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### movementVector() + +```java +public Vec2 movementVector() +``` + +**Returns:** `Vec2` + diff --git a/docs/api/client/api/utils/objects/Dimension.md b/docs/api/client/api/utils/objects/Dimension.md new file mode 100644 index 0000000..35d3db2 --- /dev/null +++ b/docs/api/client/api/utils/objects/Dimension.md @@ -0,0 +1,96 @@ +# Dimension + +**Package:** `org.rusherhack.client.api.utils.objects` + +**Source:** `org/rusherhack/client/api/utils/objects/Dimension.java` + +Enum for dimension type and checks for current dimension +* **Author:** john@rusherhack.org 6/19/2025 + + + +## Overview + +`Dimension` is a enum. + +## Constructor + +```java + Dimension(String displayName) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | + + +## Constants + +### OVERWORLD + +Arguments: "The Overworld" + +### NETHER + +Arguments: "The Nether" + +### END + +Arguments: "The End" + +## Methods + +### getDisplayName() + +```java +public String getDisplayName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### isOverworld() + +```java +public boolean isOverworld() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isNether() + +```java +public boolean isNether() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isEnd() + +```java +public boolean isEnd() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isLoaded() + +```java +public boolean isLoaded() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getLoaded() + +```java +public static Dimension getLoaded() +``` + +**Returns**: the dimension the player is currently in; null if world is not loaded + + + +**Returns:** [Dimension](/client/api/utils/objects/Dimension.md) + diff --git a/docs/api/client/api/utils/objects/PlayerInput.md b/docs/api/client/api/utils/objects/PlayerInput.md new file mode 100644 index 0000000..90cc0d3 --- /dev/null +++ b/docs/api/client/api/utils/objects/PlayerInput.md @@ -0,0 +1,67 @@ +# PlayerInput + +**Package:** `org.rusherhack.client.api.utils.objects` + +**Source:** `org/rusherhack/client/api/utils/objects/PlayerInput.java` + +Immutable class representing player input key states +* **Author:** john@rusherhack.org 7/24/2025 + + + +## Overview + +`PlayerInput` is a record. + +## Constructor + +```java +public PlayerInput(LocalPlayer player) +``` + +```java +public PlayerInput(Input input) +``` + +## Methods + +### x() + +```java +public float x() +``` + +**Returns**: impulse of left/right strafing + + + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### y() + +```java +public float y() +``` + +**Returns**: impulse of forward/backwards + + + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### horizontalVector() + +```java +public Vec2 horizontalVector() +``` + +**Returns:** `Vec2` + +### hasHorizontalInput() + +```java +public boolean hasHorizontalInput() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/utils/objects/PlayerMessage.md b/docs/api/client/api/utils/objects/PlayerMessage.md new file mode 100644 index 0000000..3c454ed --- /dev/null +++ b/docs/api/client/api/utils/objects/PlayerMessage.md @@ -0,0 +1,66 @@ +# PlayerMessage + +**Package:** `org.rusherhack.client.api.utils.objects` + +**Source:** `org/rusherhack/client/api/utils/objects/PlayerMessage.java` + +Object representing a player chat message +* **Author:** john@rusherhack.org 1/1/2025 + + + +## Overview + +`PlayerMessage` is a class. + +## Constructor + +```java +public PlayerMessage(String sender, String message) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| sender | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| message | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | + + +## Methods + +### getSender() + +```java +public String getSender() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getMessage() + +```java +public String getMessage() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### parse() + +```java +public static PlayerMessage parse(String message, boolean strict) +``` + +Parses a message from chat +* **Parameter `message`**: the chat message + + +**Parameter `strict`**: only match vanilla formatting for sender name + + +**Returns**: parsed player message + + + +**Returns:** [PlayerMessage](/client/api/utils/objects/PlayerMessage.md) + diff --git a/docs/api/client/api/utils/objects/PlayerRelation.md b/docs/api/client/api/utils/objects/PlayerRelation.md new file mode 100644 index 0000000..e63fd7b --- /dev/null +++ b/docs/api/client/api/utils/objects/PlayerRelation.md @@ -0,0 +1,33 @@ +# PlayerRelation + +**Package:** `org.rusherhack.client.api.utils.objects` + +**Source:** `org/rusherhack/client/api/utils/objects/PlayerRelation.java` + +TODO: UUID based +* **Author:** John200410 6/21/2023 + + + +## Overview + +`PlayerRelation` is a record and implements [JsonSerializable](/core/serialize/JsonSerializable.md). + +## Methods + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement jsonElement) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/client/api/utils/objects/Scrollbar.md b/docs/api/client/api/utils/objects/Scrollbar.md new file mode 100644 index 0000000..2699a6f --- /dev/null +++ b/docs/api/client/api/utils/objects/Scrollbar.md @@ -0,0 +1,102 @@ +# Scrollbar + +**Package:** `org.rusherhack.client.api.utils.objects` + +**Source:** `org/rusherhack/client/api/utils/objects/Scrollbar.java` + +Object to keep track of scroll offsets, animation, and clamp. +* **Author:** John200410 2/18/2023 + + + +## Overview + +`Scrollbar` is a class. + +## Constructor + +```java +public Scrollbar(Animation animation) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| animation | [Animation](/core/animation/Animation.md) | private final | +| scrollOffset | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | +| targetScrollOffset | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | + + +## Methods + +### update() + +```java +public void update() +``` + +### clamp() + +```java +public void clamp(boolean strict, double min, double max) +``` + +### setScrollOffset() + +```java +public void setScrollOffset(double scrollOffset) +``` + +### scroll() + +```java +public void scroll(double delta) +``` + +### scroll() + +```java +public void scroll(double delta, boolean animated) +``` + +### getScrollOffset() + +```java +public double getScrollOffset() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getRenderHeight() + +```java +public double getRenderHeight(double viewLength, double contentLength) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getRenderHeight() + +```java +public double getRenderHeight(double viewLength, double contentLength, double trackLength) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getRenderOffset() + +```java +public double getRenderOffset(double viewLength, double contentLength) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### getRenderOffset() + +```java +public double getRenderOffset(double viewLength, double contentLength, double trackLength) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/client/api/utils/objects/State.md b/docs/api/client/api/utils/objects/State.md new file mode 100644 index 0000000..654cdc2 --- /dev/null +++ b/docs/api/client/api/utils/objects/State.md @@ -0,0 +1,18 @@ +# State + +**Package:** `org.rusherhack.client.api.utils.objects` + +**Source:** `org/rusherhack/client/api/utils/objects/PlayerRelation.java` + +## Overview + +`State` is a enum. + +## Constants + +### FRIEND + +### ENEMY + +### NEUTRAL + diff --git a/docs/api/client/api/utils/objects/TextField.md b/docs/api/client/api/utils/objects/TextField.md new file mode 100644 index 0000000..8f3f3a8 --- /dev/null +++ b/docs/api/client/api/utils/objects/TextField.md @@ -0,0 +1,231 @@ +# TextField + +**Package:** `org.rusherhack.client.api.utils.objects` + +**Source:** `org/rusherhack/client/api/utils/objects/TextField.java` + +**Author:** John200410 9/26/2023 + + + +## Overview + +`TextField` is a class and implements [ITypeable](/core/interfaces/ITypeable.md). + +## Constructor + +```java +public TextField() +``` + +```java +public TextField(Consumer consumer) +``` + +```java +public TextField(Consumer consumer, int maxLength) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| value | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | +| shiftPressed | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| maxLength | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| cursorPos | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | +| highlightPos | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | +| characterFilter | [Predicate](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Predicate.html)<[Character](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Character.html)> | private | +| consumer | [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private | + + +## Methods + +### getDisplayText() + +```java +public String getDisplayText() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setConsumer() + +```java +public void setConsumer(Consumer consumer) +``` + +### setCharacterFilter() + +```java +public void setCharacterFilter(Predicate characterFilter) +``` + +### reset() + +```java +public void reset() +``` + +### isAllowedCharacter() + +```java +private boolean isAllowedCharacter(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### filterText() + +```java +private String filterText(String text) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### charTyped() + +```java +public boolean charTyped(char character) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java +public boolean keyTyped(int keyCode, int scanCode, int modifiers) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### insertText() + +```java +public void insertText(String text) +``` + +### deleteText() + +```java +private void deleteText(KeyEvent event, int count) +``` + +### deleteWords() + +```java +public void deleteWords(int num) +``` + +### deleteChars() + +```java +public void deleteChars(int num) +``` + +### getHighlighted() + +```java +public String getHighlighted() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getHighlightStartPos() + +```java +public int getHighlightStartPos() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getHighlightEndPos() + +```java +public int getHighlightEndPos() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setHighlightPos() + +```java +public void setHighlightPos(int position) +``` + +### moveCursor() + +```java +public void moveCursor(int delta) +``` + +### getCursorPos() + +```java +private int getCursorPos(int delta) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### moveCursorTo() + +```java +public void moveCursorTo(int pos) +``` + +### setCursorPosition() + +```java +public void setCursorPosition(int pos) +``` + +### moveCursorToStart() + +```java +public void moveCursorToStart() +``` + +### moveCursorToEnd() + +```java +public void moveCursorToEnd() +``` + +### onValueChange() + +```java +private void onValueChange(String newText) +``` + +### getCursorPosition() + +```java +public int getCursorPosition() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getWordPosition() + +```java +public int getWordPosition(int numWords) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getWordPosition() + +```java +private int getWordPosition(int n, int pos) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getWordPosition() + +```java +private int getWordPosition(int n, int pos, boolean skipWs) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/client/api/utils/objects/Whisper.md b/docs/api/client/api/utils/objects/Whisper.md new file mode 100644 index 0000000..2841eb3 --- /dev/null +++ b/docs/api/client/api/utils/objects/Whisper.md @@ -0,0 +1,33 @@ +# Whisper + +**Package:** `org.rusherhack.client.api.utils.objects` + +**Source:** `org/rusherhack/client/api/utils/objects/PlayerMessage.java` + +## Overview + +`Whisper` is a class that extends [PlayerMessage](/client/api/utils/objects/PlayerMessage.md). + +## Constructor + +```java +public Whisper(String sender, String recipient, String message) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| recipient | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | + + +## Methods + +### getRecipient() + +```java +public String getRecipient() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/utils/registry/BlockRegistry.md b/docs/api/client/api/utils/registry/BlockRegistry.md new file mode 100644 index 0000000..bac00b4 --- /dev/null +++ b/docs/api/client/api/utils/registry/BlockRegistry.md @@ -0,0 +1,56 @@ +# BlockRegistry + +**Package:** `org.rusherhack.client.api.utils.registry` + +**Source:** `org/rusherhack/client/api/utils/registry/BlockRegistry.java` + +**Author:** john@rusherhack.org 12/18/2025 + + + +## Overview + +`BlockRegistry` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| BLOCKS | [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html), `Block`> | public static final | +| WILD_CARDS | [HashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[], `Block`[]> | public static final | + + +## Methods + +### getBlocks() + +```java +public static Block[] getBlocks(String query) +``` + +**Returns**: an array of blocks which exactly match the search query + + + +**Returns:** `Block`[] + +### findBlocks() + +```java +public static Block[] findBlocks(String query) +``` + +**Returns**: an array of blocks which contain the search query + + + +**Returns:** `Block`[] + +### getID() + +```java +public static String getID(Block block) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/utils/registry/EntityTypeRegistry.md b/docs/api/client/api/utils/registry/EntityTypeRegistry.md new file mode 100644 index 0000000..bee69e3 --- /dev/null +++ b/docs/api/client/api/utils/registry/EntityTypeRegistry.md @@ -0,0 +1,56 @@ +# EntityTypeRegistry + +**Package:** `org.rusherhack.client.api.utils.registry` + +**Source:** `org/rusherhack/client/api/utils/registry/EntityTypeRegistry.java` + +**Author:** john@rusherhack.org 12/24/2025 + + + +## Overview + +`EntityTypeRegistry` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| ENTITY_TYPES | [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html), `EntityType`<`?`>> | public static final | +| WILD_CARDS | [HashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[], `EntityType`<`?`>[]> | public static final | + + +## Methods + +### getEntityTypes() + +```java +public static EntityType[] getEntityTypes(String query) +``` + +**Returns**: an array of entity types which exactly match the search query + + + +**Returns:** `EntityType`<`?`>[] + +### findEntityTypes() + +```java +public static EntityType[] findEntityTypes(String query) +``` + +**Returns**: an array of items which contain the search query + + + +**Returns:** `EntityType`<`?`>[] + +### getID() + +```java +public static String getID(EntityType entityType) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/client/api/utils/registry/ItemRegistry.md b/docs/api/client/api/utils/registry/ItemRegistry.md new file mode 100644 index 0000000..c78eef3 --- /dev/null +++ b/docs/api/client/api/utils/registry/ItemRegistry.md @@ -0,0 +1,56 @@ +# ItemRegistry + +**Package:** `org.rusherhack.client.api.utils.registry` + +**Source:** `org/rusherhack/client/api/utils/registry/ItemRegistry.java` + +**Author:** john@rusherhack.org 12/18/2025 + + + +## Overview + +`ItemRegistry` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| ITEMS | [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html), `Item`> | public static final | +| WILD_CARDS | [HashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[], `Item`[]> | public static final | + + +## Methods + +### getItems() + +```java +public static Item[] getItems(String query) +``` + +**Returns**: an array of items which exactly match the search query + + + +**Returns:** `Item`[] + +### findItems() + +```java +public static Item[] findItems(String query) +``` + +**Returns**: an array of items which contain the search query + + + +**Returns:** `Item`[] + +### getID() + +```java +public static String getID(Item item) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/animation/Animation.md b/docs/api/core/animation/Animation.md new file mode 100644 index 0000000..feea1db --- /dev/null +++ b/docs/api/core/animation/Animation.md @@ -0,0 +1,134 @@ +# Animation + +**Package:** `org.rusherhack.core.animation` + +**Source:** `org/rusherhack/core/animation/Animation.java` + +Animation object that can be used to animate a value and track it's progress +* **Author:** John200410 2/12/2023 + + + +## Overview + +`Animation` is a class. + +## Constructor + +```java +public Animation() +``` + +```java +public Animation(Easing tween, long durationMs) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| tween | [Easing](/core/animation/Easing.md) | private | +| playing | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| reverse | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| loop | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| duration | [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) | private | +| lastTime | [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) | private | +| timePassed | [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) | private | +| progress | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | + + +## Methods + +### get() + +```java +public double get() +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### play() + +```java +public Animation play() +``` + +Start the animation + +**Returns:** [Animation](/core/animation/Animation.md) + +### restart() + +```java +public Animation restart() +``` + +Restart the animation + +**Returns:** [Animation](/core/animation/Animation.md) + +### reverse() + +```java +public Animation reverse() +``` + +Reverse the animation + +**Returns:** [Animation](/core/animation/Animation.md) + +### setLoop() + +```java +public Animation setLoop(boolean loop) +``` + +**Returns:** [Animation](/core/animation/Animation.md) + +### setDirection() + +```java +public Animation setDirection(boolean reverse) +``` + +**Returns:** [Animation](/core/animation/Animation.md) + +### setDuration() + +```java +public Animation setDuration(long durationMs) +``` + +Set the animation duration in milliseconds +* **Parameter `durationMs`**: the duration in milliseconds + + + +**Returns:** [Animation](/core/animation/Animation.md) + +### setTween() + +```java +public Animation setTween(Easing tween) +``` + +Set the animation tween + +**Returns:** [Animation](/core/animation/Animation.md) + +### isPlaying() + +```java +public boolean isPlaying() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isReversed() + +```java +public boolean isReversed() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/animation/Easing.md b/docs/api/core/animation/Easing.md new file mode 100644 index 0000000..3ec11bb --- /dev/null +++ b/docs/api/core/animation/Easing.md @@ -0,0 +1,70 @@ +# Easing + +**Package:** `org.rusherhack.core.animation` + +**Source:** `org/rusherhack/core/animation/Easing.java` + +Various easing functions to use for animations +* +@see [https://easings.net/](https://easings.net/)**Author:** John200410 2/12/2023 + + + +## Overview + +`Easing` is a enum and implements [Function](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Function.html). + +## Constructor + +```java + Easing(Function translator) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| function | [Function](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Function.html)<[Double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html), [Double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)> | private final | + + +## Constants + +### LINEAR + +Arguments: x -> x + +### EASE_IN + +Arguments: x -> 1 - Math.cos(x * Math.PI / 2) + +### EASE_OUT + +Arguments: x -> Math.sin(x * Math.PI / 2) + +### EASE_IN_OUT + +Arguments: x -> -(Math.cos(Math.PI * x) - 1) / 2 + +### BEZIER_CURVE + +Arguments: x -> { + final double curve = -1 + Math.sqrt(-x + 1); + return curve * curve; +} + +### SINE_PULSE + +A sine wave that pulses twice + +Arguments: x -> (Math.sin((x - 0.5) * Math.PI * 3) + 1) / 2 + +## Methods + +### apply() + +```java +public Double apply(Double input) +``` + +**Returns:** [Double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/core/bind/BindManagerBase.md b/docs/api/core/bind/BindManagerBase.md new file mode 100644 index 0000000..0565fdd --- /dev/null +++ b/docs/api/core/bind/BindManagerBase.md @@ -0,0 +1,64 @@ +# BindManagerBase + +**Package:** `org.rusherhack.core.bind` + +**Source:** `org/rusherhack/core/bind/BindManagerBase.java` + +Class to handle keybindings +* **Author:** John200410 1/16/2023 + + + +## Overview + +`BindManagerBase` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| BIND_REGISTRY | `Object2ObjectMap`<[IBindable](/core/bind/IBindable.md), [IKey](/core/bind/key/IKey.md)> | private final | + + +## Methods + +### register() + +```java +public void register(IBindable bindable, IKey key) +``` + +### unregister() + +```java +public void unregister(IBindable bindable) +``` + +### setBind() + +```java +public void setBind(IBindable bindable, IKey key) +``` + +### setBind() + +```java +public void setBind(String bindableName, IKey key) +``` + +### getBind() + +```java +public IKey getBind(IBindable bindable) +``` + +**Returns:** [IKey](/core/bind/key/IKey.md) + +### getBindRegistry() + +```java +public Object2ObjectMap getBindRegistry() +``` + +**Returns:** `Object2ObjectMap`<[IBindable](/core/bind/IBindable.md), [IKey](/core/bind/key/IKey.md)> + diff --git a/docs/api/core/bind/IBindable.md b/docs/api/core/bind/IBindable.md new file mode 100644 index 0000000..646a409 --- /dev/null +++ b/docs/api/core/bind/IBindable.md @@ -0,0 +1,30 @@ +# IBindable + +**Package:** `org.rusherhack.core.bind` + +**Source:** `org/rusherhack/core/bind/IBindable.java` + +## Overview + +`IBindable` is a interface. + +## Methods + +### getBindReference() + +```java +default String getBindReference() +``` + +String representation of the bindable object + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### onKeybindEvent() + +```java + void onKeybindEvent() +``` + +Executed when the bind conditions are met + diff --git a/docs/api/core/bind/key/IKey.md b/docs/api/core/bind/key/IKey.md new file mode 100644 index 0000000..ec0b7b4 --- /dev/null +++ b/docs/api/core/bind/key/IKey.md @@ -0,0 +1,49 @@ +# IKey + +**Package:** `org.rusherhack.core.bind.key` + +**Source:** `org/rusherhack/core/bind/key/IKey.java` + +Interface for keys +* **Author:** John200410 1/16/2023 + + + +## Overview + +`IKey` is a interface. + +## Methods + +### isKeyDown() + +```java + boolean isKeyDown() +``` + +**Returns**: whether the key is being held down + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getLabel() + +```java + String getLabel(boolean includePrefix) +``` + +**Returns**: a string representation of the key + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayLabel() + +```java +default String getDisplayLabel() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/bind/key/NullKey.md b/docs/api/core/bind/key/NullKey.md new file mode 100644 index 0000000..cfa0ccc --- /dev/null +++ b/docs/api/core/bind/key/NullKey.md @@ -0,0 +1,40 @@ +# NullKey + +**Package:** `org.rusherhack.core.bind.key` + +**Source:** `org/rusherhack/core/bind/key/NullKey.java` + +An unbound key +* **Author:** John200410 1/16/2023 + + + +## Overview + +`NullKey` is a class and implements [IKey](/core/bind/key/IKey.md). + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| INSTANCE | [NullKey](/core/bind/key/NullKey.md) | public static final | + + +## Methods + +### isKeyDown() + +```java +public boolean isKeyDown() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getLabel() + +```java +public String getLabel(boolean includePrefix) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/command/AbstractCommand.md b/docs/api/core/command/AbstractCommand.md new file mode 100644 index 0000000..0b96df1 --- /dev/null +++ b/docs/api/core/command/AbstractCommand.md @@ -0,0 +1,138 @@ +# AbstractCommand + +**Package:** `org.rusherhack.core.command` + +**Source:** `org/rusherhack/core/command/AbstractCommand.java` + +**Author:** john@rusherhack.org + + + +## Overview + +`AbstractCommand` is a class and implements [IFeature](/core/feature/IFeature.md), [IHideable](/core/interfaces/IHideable.md). + +## Constructor + +```java +public AbstractCommand(String name, String description) +``` + +**Parameter `name`**: base name of the command + + +**Parameter `description`**: description of what the command does + + + +```java +public AbstractCommand(AbstractCommand parent, String name, String description) +``` + +**Parameter `parent`**: parent command + + +**Parameter `name`**: base name of the command + + +**Parameter `description`**: description of what the command does + + + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| aliases | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private final | +| parent | [AbstractCommand](/core/command/AbstractCommand.md) | private final | +| subCommands | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[AbstractCommand](/core/command/AbstractCommand.md)> | private final | + + +## Methods + +### addAliases() + +```java +public void addAliases(String aliases) +``` + +Add aliases to the command + +### registerSubCommand() + +```java +public void registerSubCommand(AbstractCommand command) +``` + +Registers a new subcommand + +### getName() + +```java +public String getName() +``` + +**Returns**: name of the command + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayName() + +```java +public String getDisplayName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDescription() + +```java +public String getDescription() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getAliases() + +```java +public String[] getAliases() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + +### getParent() + +```java +public AbstractCommand getParent() +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### getSubCommands() + +```java +public List getSubCommands() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[AbstractCommand](/core/command/AbstractCommand.md)> + +### isHidden() + +```java +public boolean isHidden() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getReferenceKey() + +```java +public String getReferenceKey() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/command/ArgumentData.md b/docs/api/core/command/ArgumentData.md new file mode 100644 index 0000000..ba5612f --- /dev/null +++ b/docs/api/core/command/ArgumentData.md @@ -0,0 +1,10 @@ +# ArgumentData + +**Package:** `org.rusherhack.core.command` + +**Source:** `org/rusherhack/core/command/CommandData.java` + +## Overview + +`ArgumentData` is a record. + diff --git a/docs/api/core/command/CommandData.md b/docs/api/core/command/CommandData.md new file mode 100644 index 0000000..df1d03f --- /dev/null +++ b/docs/api/core/command/CommandData.md @@ -0,0 +1,106 @@ +# CommandData + +**Package:** `org.rusherhack.core.command` + +**Source:** `org/rusherhack/core/command/CommandData.java` + +**Author:** john@rusherhack.org 12/15/2022 + + + +## Overview + +`CommandData` is a class and implements [INamed](/core/interfaces/INamed.md). + +## Constructor + +```java +public CommandData(AbstractCommand command) +``` + +```java +public CommandData(AbstractCommand command, String name, String aliases) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| command | [AbstractCommand](/core/command/AbstractCommand.md) | private final | +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| aliases | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| methods | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[MethodData](/core/command/MethodData.md)> | private final | +| parent | [CommandData](/core/command/CommandData.md) | private | +| subCommands | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[CommandData](/core/command/CommandData.md)> | private final | + + +## Methods + +### getCommand() + +```java +public AbstractCommand getCommand() +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getAliases() + +```java +public String[] getAliases() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + +### addMethod() + +```java +public void addMethod(Method method, List arguments) +``` + +### getSubCommands() + +```java +public List getSubCommands() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[CommandData](/core/command/CommandData.md)> + +### findSubCommand() + +```java +public CommandData findSubCommand(String alias) +``` + +**Returns:** [CommandData](/core/command/CommandData.md) + +### getMethods() + +```java +public List getMethods() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[MethodData](/core/command/MethodData.md)> + +### setParent() + +```java +public void setParent(CommandData parent) +``` + +### getParent() + +```java +public CommandData getParent() +``` + +**Returns:** [CommandData](/core/command/CommandData.md) + diff --git a/docs/api/core/command/CommandManager.md b/docs/api/core/command/CommandManager.md new file mode 100644 index 0000000..fcffb5e --- /dev/null +++ b/docs/api/core/command/CommandManager.md @@ -0,0 +1,121 @@ +# CommandManager + +**Package:** `org.rusherhack.core.command` + +**Source:** `org/rusherhack/core/command/CommandManager.java` + +Command manager +* **Author:** john@rusherhack.org 12/15/2022 + + + +## Overview + +`CommandManager` is a class and implements [ICommandManager](/core/command/ICommandManager.md). + +## Constructor + +```java +public CommandManager(ILogger logger) +``` + +```java +public CommandManager(CommandProcessor processor, ILogger logger) +``` + +```java +public CommandManager(CommandProcessor processor, ICommandDispatcher dispatcher, ILogger logger) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| commands | [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[AbstractCommand](/core/command/AbstractCommand.md), [CommandData](/core/command/CommandData.md)> | private final | +| commandProcessor | [CommandProcessor](/core/command/processing/CommandProcessor.md) | protected final | +| dispatcher | [ICommandDispatcher](/core/command/dispatch/ICommandDispatcher.md)<`?`> | protected | +| logger | [ILogger](/core/logging/ILogger.md) | protected final | + + +## Methods + +### registerFeature() + +```java +public void registerFeature(AbstractCommand commandObject) +``` + +Register a command + +### createCommandData() + +```java +public CommandData createCommandData(AbstractCommand command) +``` + +**Returns:** [CommandData](/core/command/CommandData.md) + +### getCommandData() + +```java +public CommandData getCommandData(String command) +``` + +**Returns:** [CommandData](/core/command/CommandData.md) + +### getCommandData() + +```java +public CommandData getCommandData(AbstractCommand command) +``` + +**Returns:** [CommandData](/core/command/CommandData.md) + +### getFeature() + +```java +public Optional getFeature(String name) +``` + +**Returns:** [Optional](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Optional.html)<[AbstractCommand](/core/command/AbstractCommand.md)> + +### getFeatures() + +```java +public List getFeatures() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[AbstractCommand](/core/command/AbstractCommand.md)> + +### getCommandProcessor() + +```java +public CommandProcessor getCommandProcessor() +``` + +**Returns:** [CommandProcessor](/core/command/processing/CommandProcessor.md) + +### getDispatcher() + +```java +public ICommandDispatcher getDispatcher() +``` + +**Returns:** [ICommandDispatcher](/core/command/dispatch/ICommandDispatcher.md)<`?`> + +### getPrefix() + +```java +public String getPrefix() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getLogger() + +```java +public ILogger getLogger() +``` + +**Returns:** [ILogger](/core/logging/ILogger.md) + diff --git a/docs/api/core/command/CommandUtils.md b/docs/api/core/command/CommandUtils.md new file mode 100644 index 0000000..7108fe3 --- /dev/null +++ b/docs/api/core/command/CommandUtils.md @@ -0,0 +1,56 @@ +# CommandUtils + +**Package:** `org.rusherhack.core.command` + +**Source:** `org/rusherhack/core/command/CommandUtils.java` + +**Author:** john@rusherhack.org 5/19/2024 + + + +## Overview + +`CommandUtils` is a class. + +## Methods + +### processArguments() + +```java +public static List processArguments(String input, boolean removeQuotes) +``` + +Separates a string into arguments + + + +Accounting for quotes + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + +### generateSyntaxList() + +```java +public static List generateSyntaxList(CommandData commandData, boolean subCommands, boolean includeName) +``` + +Generates a list of strings with command syntax + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + +### generateSyntaxList() + +```java +public static List generateSyntaxList(CommandData commandData, boolean subCommands, boolean includeName, int maxDepth) +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + +### generateSyntaxList() + +```java +private static List generateSyntaxList(CommandData commandData, boolean subCommands, boolean includeName, int maxDepth, int depth) +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + diff --git a/docs/api/core/command/ICommandManager.md b/docs/api/core/command/ICommandManager.md new file mode 100644 index 0000000..3ddbdf5 --- /dev/null +++ b/docs/api/core/command/ICommandManager.md @@ -0,0 +1,53 @@ +# ICommandManager + +**Package:** `org.rusherhack.core.command` + +**Source:** `org/rusherhack/core/command/ICommandManager.java` + +Interface for accessing the command manager +* **Author:** john@rusherhack.org 7/15/2024 + + + +## Overview + +`ICommandManager` is a interface that extends [IFeatureManager](/core/feature/IFeatureManager.md). + +## Methods + +### getCommandProcessor() + +```java + ICommandProcessor getCommandProcessor() +``` + +**Returns**: the command processor + + + +**Returns:** [ICommandProcessor](/core/command/processing/ICommandProcessor.md) + +### getDispatcher() + +```java + ICommandDispatcher getDispatcher() +``` + +**Returns**: the command dispatcher + + + +**Returns:** [ICommandDispatcher](/core/command/dispatch/ICommandDispatcher.md)<`?`> + +### getPrefix() + +```java + String getPrefix() +``` + +**Returns**: the command prefix + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/command/ICommandSource.md b/docs/api/core/command/ICommandSource.md new file mode 100644 index 0000000..c46ef5f --- /dev/null +++ b/docs/api/core/command/ICommandSource.md @@ -0,0 +1,33 @@ +# ICommandSource + +**Package:** `org.rusherhack.core.command` + +**Source:** `org/rusherhack/core/command/ICommandSource.java` + +The source of this command +* **Author:** john@rusherhack.org 5/24/2024 + + + +## Overview + +`ICommandSource` is a interface. + +## Methods + +### validate() + +```java + boolean validate(CommandData command) +``` + +Determines if this source can execute the given command +* **Parameter `command`**: the command to validate + + +**Returns**: true if this source can execute the command + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/command/MethodData.md b/docs/api/core/command/MethodData.md new file mode 100644 index 0000000..14d3fee --- /dev/null +++ b/docs/api/core/command/MethodData.md @@ -0,0 +1,10 @@ +# MethodData + +**Package:** `org.rusherhack.core.command` + +**Source:** `org/rusherhack/core/command/CommandData.java` + +## Overview + +`MethodData` is a record. + diff --git a/docs/api/core/command/annotations/Argument.md b/docs/api/core/command/annotations/Argument.md new file mode 100644 index 0000000..d769446 --- /dev/null +++ b/docs/api/core/command/annotations/Argument.md @@ -0,0 +1,20 @@ +# Argument + +**Package:** `org.rusherhack.core.command.annotations` + +**Source:** `org/rusherhack/core/command/annotations/CommandExecutor.java` + +Used to map arguments to the method parameters. + + + +Must match the number of parameters in the method. + + + +If the method parameter linked to this is of the type Optional, then the argument is optional + +## Overview + +`Argument` is a annotation. + diff --git a/docs/api/core/command/annotations/CommandExecutor.md b/docs/api/core/command/annotations/CommandExecutor.md new file mode 100644 index 0000000..91a5aa1 --- /dev/null +++ b/docs/api/core/command/annotations/CommandExecutor.md @@ -0,0 +1,19 @@ +# CommandExecutor + +**Package:** `org.rusherhack.core.command.annotations` + +**Source:** `org/rusherhack/core/command/annotations/CommandExecutor.java` + +Annotation used on top of methods in [AbstractCommand](/core/command/AbstractCommand.md) to register the methods to be executed with the command. + + + +If the method returns a String, it will act as the output of the command. +* **Author:** John200410 12/15/2022 + + + +## Overview + +`CommandExecutor` is a annotation. + diff --git a/docs/api/core/command/argument/StringCapture.md b/docs/api/core/command/argument/StringCapture.md new file mode 100644 index 0000000..2f487ef --- /dev/null +++ b/docs/api/core/command/argument/StringCapture.md @@ -0,0 +1,15 @@ +# StringCapture + +**Package:** `org.rusherhack.core.command.argument` + +**Source:** `org/rusherhack/core/command/argument/StringCapture.java` + +Can be used as last argument of a command to capture the rest of the input as a string. +* **Author:** John200410 8/4/2023 + + + +## Overview + +`StringCapture` is a record. + diff --git a/docs/api/core/command/argument/parser/IArg.md b/docs/api/core/command/argument/parser/IArg.md new file mode 100644 index 0000000..91cf1c8 --- /dev/null +++ b/docs/api/core/command/argument/parser/IArg.md @@ -0,0 +1,80 @@ +# IArg + +**Package:** `org.rusherhack.core.command.argument.parser` + +**Source:** `org/rusherhack/core/command/argument/parser/IArg.java` + +Interface for command argument parsers +* **Author:** John200410 12/15/2022 + + + +## Overview + +`IArg` is a interface. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| EMPTY_SUGGESTIONS | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | | + + +## Methods + +### parse() + +```java + T parse(CommandProcessingSink context, String arg) +``` + +Parse the argument into an object +* **Parameter `context`**: the command processor context that is processing the command + + +**Parameter `arg`**: the typed argument + + +**Returns**: the parsed object + + +**Throws**: `ArgumentException` - if the argument is invalid + + + +**Returns:** `T` + +### getSuggestions() + +```java +default List getSuggestions(CommandProcessingSink context, CommandData.ArgumentData argument, String typedArgument) +``` + +Get argument suggestions based on the typed string +* **Parameter `context`**: the command processor context that is processing the command + + +**Parameter `argument`**: argument data + + +**Parameter `typedArgument`**: the typed argument + + +**Returns**: a list containing suggestions + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + +### captureRemaining() + +```java +default boolean captureRemaining() +``` + +**Returns**: whether this should capture all remaining arguments + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/command/argument/parser/impl/BooleanArg.md b/docs/api/core/command/argument/parser/impl/BooleanArg.md new file mode 100644 index 0000000..808c771 --- /dev/null +++ b/docs/api/core/command/argument/parser/impl/BooleanArg.md @@ -0,0 +1,40 @@ +# BooleanArg + +**Package:** `org.rusherhack.core.command.argument.parser.impl` + +**Source:** `org/rusherhack/core/command/argument/parser/impl/BooleanArg.java` + +**Author:** John200410 12/15/2022 + + + +## Overview + +`BooleanArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| TRUE_ALIASES | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | +| FALSE_ALIASES | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | + + +## Methods + +### parse() + +```java +public Boolean parse(CommandProcessingSink context, String arg) +``` + +**Returns:** [Boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getSuggestions() + +```java +public List getSuggestions(CommandProcessingSink context, CommandData.ArgumentData argument, String typedArgument) +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + diff --git a/docs/api/core/command/argument/parser/impl/ColorArg.md b/docs/api/core/command/argument/parser/impl/ColorArg.md new file mode 100644 index 0000000..2ee4d17 --- /dev/null +++ b/docs/api/core/command/argument/parser/impl/ColorArg.md @@ -0,0 +1,32 @@ +# ColorArg + +**Package:** `org.rusherhack.core.command.argument.parser.impl` + +**Source:** `org/rusherhack/core/command/argument/parser/impl/ColorArg.java` + +**Author:** John200410 7/19/2023 + + + +## Overview + +`ColorArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). + +## Methods + +### parse() + +```java +public Color parse(CommandProcessingSink context, String arg) +``` + +**Returns:** `Color` + +### getSuggestions() + +```java +public List getSuggestions(CommandProcessingSink context, CommandData.ArgumentData argument, String typedArgument) +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + diff --git a/docs/api/core/command/argument/parser/impl/DoubleArg.md b/docs/api/core/command/argument/parser/impl/DoubleArg.md new file mode 100644 index 0000000..31c9e92 --- /dev/null +++ b/docs/api/core/command/argument/parser/impl/DoubleArg.md @@ -0,0 +1,24 @@ +# DoubleArg + +**Package:** `org.rusherhack.core.command.argument.parser.impl` + +**Source:** `org/rusherhack/core/command/argument/parser/impl/DoubleArg.java` + +**Author:** John200410 12/15/2022 + + + +## Overview + +`DoubleArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). + +## Methods + +### parse() + +```java +public Double parse(CommandProcessingSink context, String arg) +``` + +**Returns:** [Double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + diff --git a/docs/api/core/command/argument/parser/impl/EnumArg.md b/docs/api/core/command/argument/parser/impl/EnumArg.md new file mode 100644 index 0000000..bfbc345 --- /dev/null +++ b/docs/api/core/command/argument/parser/impl/EnumArg.md @@ -0,0 +1,32 @@ +# EnumArg + +**Package:** `org.rusherhack.core.command.argument.parser.impl` + +**Source:** `org/rusherhack/core/command/argument/parser/impl/EnumArg.java` + +**Author:** John200410 3/5/2024 + + + +## Overview + +`EnumArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). + +## Methods + +### parse() + +```java +public T parse(CommandProcessingSink context, String arg) +``` + +**Returns:** `T` + +### getSuggestions() + +```java +public List getSuggestions(CommandProcessingSink context, CommandData.ArgumentData argument, String typedArgument) +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + diff --git a/docs/api/core/command/argument/parser/impl/IntegerArg.md b/docs/api/core/command/argument/parser/impl/IntegerArg.md new file mode 100644 index 0000000..932d588 --- /dev/null +++ b/docs/api/core/command/argument/parser/impl/IntegerArg.md @@ -0,0 +1,24 @@ +# IntegerArg + +**Package:** `org.rusherhack.core.command.argument.parser.impl` + +**Source:** `org/rusherhack/core/command/argument/parser/impl/IntegerArg.java` + +**Author:** John200410 12/15/2022 + + + +## Overview + +`IntegerArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). + +## Methods + +### parse() + +```java +public Integer parse(CommandProcessingSink context, String arg) +``` + +**Returns:** [Integer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/core/command/argument/parser/impl/StringArg.md b/docs/api/core/command/argument/parser/impl/StringArg.md new file mode 100644 index 0000000..c1a9ca3 --- /dev/null +++ b/docs/api/core/command/argument/parser/impl/StringArg.md @@ -0,0 +1,24 @@ +# StringArg + +**Package:** `org.rusherhack.core.command.argument.parser.impl` + +**Source:** `org/rusherhack/core/command/argument/parser/impl/StringArg.java` + +**Author:** John200410 12/16/2022 + + + +## Overview + +`StringArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). + +## Methods + +### parse() + +```java +public String parse(CommandProcessingSink context, String arg) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/command/argument/parser/impl/StringCapturerArg.md b/docs/api/core/command/argument/parser/impl/StringCapturerArg.md new file mode 100644 index 0000000..e97d539 --- /dev/null +++ b/docs/api/core/command/argument/parser/impl/StringCapturerArg.md @@ -0,0 +1,32 @@ +# StringCapturerArg + +**Package:** `org.rusherhack.core.command.argument.parser.impl` + +**Source:** `org/rusherhack/core/command/argument/parser/impl/StringCapturerArg.java` + +**Author:** John200410 8/4/2023 + + + +## Overview + +`StringCapturerArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). + +## Methods + +### parse() + +```java +public StringCapture parse(CommandProcessingSink context, String str) +``` + +**Returns:** [StringCapture](/core/command/argument/StringCapture.md) + +### captureRemaining() + +```java +public boolean captureRemaining() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/command/dispatch/ICommandDispatcher.md b/docs/api/core/command/dispatch/ICommandDispatcher.md new file mode 100644 index 0000000..476f2a9 --- /dev/null +++ b/docs/api/core/command/dispatch/ICommandDispatcher.md @@ -0,0 +1,77 @@ +# ICommandDispatcher + +**Package:** `org.rusherhack.core.command.dispatch` + +**Source:** `org/rusherhack/core/command/dispatch/ICommandDispatcher.java` + +Command dispatcher interface +* **Author:** John200410 5/24/2024 + + + +## Overview + +`ICommandDispatcher` is a interface. + +## Methods + +### execute() + +```java + T execute(ICommandSource source, String input) +``` + +Executes a command from the given input + + + +This method does not throw exceptions. Instead, it returns the final result of the command +* **Parameter `source`**: the command source + + +**Parameter `input`**: the input + + +**Returns**: the result of the command + + + +**Returns:** `T` + +### dispatch() + +```java + T dispatch(ICommandSource source, String input) +``` + +Attempts to dispatch a command from the given input +* **Parameter `source`**: the command source + + +**Parameter `input`**: the input + + +**Returns**: the result of the command + + + + + +**Throws**: `ValidationException` - if the source fails to validate the command + + +**Throws**: `UnknownCommandException` - if the command processor failed to find a command + + +**Throws**: `BadSyntaxException` - if the command syntax is invalid + + +**Throws**: `ArgumentException` - if the command arguments cannot be parsed + + +**Throws**: `DispatchException` - if the command fails to dispatch + + + +**Returns:** `T` + diff --git a/docs/api/core/command/dispatch/StringCommandDispatcher.md b/docs/api/core/command/dispatch/StringCommandDispatcher.md new file mode 100644 index 0000000..6820971 --- /dev/null +++ b/docs/api/core/command/dispatch/StringCommandDispatcher.md @@ -0,0 +1,45 @@ +# StringCommandDispatcher + +**Package:** `org.rusherhack.core.command.dispatch` + +**Source:** `org/rusherhack/core/command/dispatch/StringCommandDispatcher.java` + +**Author:** John200410 5/24/2024 + + + +## Overview + +`StringCommandDispatcher` is a class and implements [ICommandDispatcher](/core/command/dispatch/ICommandDispatcher.md). + +## Constructor + +```java +public StringCommandDispatcher(CommandManager commandManager) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| commandManager | [CommandManager](/core/command/CommandManager.md) | protected final | + + +## Methods + +### execute() + +```java +public String execute(ICommandSource source, String input) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### dispatch() + +```java +public String dispatch(ICommandSource source, String input) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/command/exceptions/ArgumentException.md b/docs/api/core/command/exceptions/ArgumentException.md new file mode 100644 index 0000000..f07365f --- /dev/null +++ b/docs/api/core/command/exceptions/ArgumentException.md @@ -0,0 +1,34 @@ +# ArgumentException + +**Package:** `org.rusherhack.core.command.exceptions` + +**Source:** `org/rusherhack/core/command/exceptions/ArgumentException.java` + +**Author:** John200410 5/19/2024 + + + +## Overview + +`ArgumentException` is a class that extends [CommandException](/core/command/exceptions/CommandException.md). + +## Constructor + +```java +public ArgumentException(String message) +``` + +```java +public ArgumentException(String message, Throwable cause) +``` + +## Methods + +### shouldPrintSyntax() + +```java +public boolean shouldPrintSyntax() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/command/exceptions/BadSyntaxException.md b/docs/api/core/command/exceptions/BadSyntaxException.md new file mode 100644 index 0000000..4504dc9 --- /dev/null +++ b/docs/api/core/command/exceptions/BadSyntaxException.md @@ -0,0 +1,34 @@ +# BadSyntaxException + +**Package:** `org.rusherhack.core.command.exceptions` + +**Source:** `org/rusherhack/core/command/exceptions/BadSyntaxException.java` + +**Author:** John200410 12/15/2022 + + + +## Overview + +`BadSyntaxException` is a class that extends [CommandException](/core/command/exceptions/CommandException.md). + +## Constructor + +```java +public BadSyntaxException(String message) +``` + +```java +public BadSyntaxException(String message, CommandProcessingSink context) +``` + +## Methods + +### shouldPrintSyntax() + +```java +public boolean shouldPrintSyntax() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/command/exceptions/CommandException.md b/docs/api/core/command/exceptions/CommandException.md new file mode 100644 index 0000000..cd332ad --- /dev/null +++ b/docs/api/core/command/exceptions/CommandException.md @@ -0,0 +1,63 @@ +# CommandException + +**Package:** `org.rusherhack.core.command.exceptions` + +**Source:** `org/rusherhack/core/command/exceptions/CommandException.java` + +**Author:** John200410 5/14/2024 + + + +## Overview + +`CommandException` is a class that extends [Exception](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Exception.html). + +## Constructor + +```java +public CommandException(String message) +``` + +```java +public CommandException(String message, Throwable cause) +``` + +```java +public CommandException(String message, CommandProcessingSink context) +``` + +```java +public CommandException(String message, CommandProcessingSink context, Throwable cause) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| context | [CommandProcessingSink](/core/command/processing/CommandProcessingSink.md) | private | + + +## Methods + +### setContext() + +```java +public void setContext(CommandProcessingSink context) +``` + +### getContext() + +```java +public CommandProcessingSink getContext() +``` + +**Returns:** [CommandProcessingSink](/core/command/processing/CommandProcessingSink.md) + +### shouldPrintSyntax() + +```java +public boolean shouldPrintSyntax() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/command/exceptions/DispatchException.md b/docs/api/core/command/exceptions/DispatchException.md new file mode 100644 index 0000000..36b62c4 --- /dev/null +++ b/docs/api/core/command/exceptions/DispatchException.md @@ -0,0 +1,25 @@ +# DispatchException + +**Package:** `org.rusherhack.core.command.exceptions` + +**Source:** `org/rusherhack/core/command/exceptions/DispatchException.java` + +This exception is thrown when the commandmanager fails to dispatch a command. +* **Author:** John200410 5/14/2024 + + + +## Overview + +`DispatchException` is a class that extends [Exception](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Exception.html). + +## Constructor + +```java +public DispatchException(String message) +``` + +```java +public DispatchException(String message, Throwable cause) +``` + diff --git a/docs/api/core/command/exceptions/UnknownArgumentTypeException.md b/docs/api/core/command/exceptions/UnknownArgumentTypeException.md new file mode 100644 index 0000000..32704a1 --- /dev/null +++ b/docs/api/core/command/exceptions/UnknownArgumentTypeException.md @@ -0,0 +1,20 @@ +# UnknownArgumentTypeException + +**Package:** `org.rusherhack.core.command.exceptions` + +**Source:** `org/rusherhack/core/command/exceptions/UnknownArgumentTypeException.java` + +**Author:** John200410 12/16/2022 + + + +## Overview + +`UnknownArgumentTypeException` is a class that extends [ArgumentException](/core/command/exceptions/ArgumentException.md). + +## Constructor + +```java +public UnknownArgumentTypeException(String message) +``` + diff --git a/docs/api/core/command/exceptions/UnknownCommandException.md b/docs/api/core/command/exceptions/UnknownCommandException.md new file mode 100644 index 0000000..5f9c378 --- /dev/null +++ b/docs/api/core/command/exceptions/UnknownCommandException.md @@ -0,0 +1,21 @@ +# UnknownCommandException + +**Package:** `org.rusherhack.core.command.exceptions` + +**Source:** `org/rusherhack/core/command/exceptions/UnknownCommandException.java` + +Throws when a command is not found +* **Author:** John200410 6/26/2020 + + + +## Overview + +`UnknownCommandException` is a class that extends [CommandException](/core/command/exceptions/CommandException.md). + +## Constructor + +```java +public UnknownCommandException(String message) +``` + diff --git a/docs/api/core/command/exceptions/ValidationException.md b/docs/api/core/command/exceptions/ValidationException.md new file mode 100644 index 0000000..586a83b --- /dev/null +++ b/docs/api/core/command/exceptions/ValidationException.md @@ -0,0 +1,21 @@ +# ValidationException + +**Package:** `org.rusherhack.core.command.exceptions` + +**Source:** `org/rusherhack/core/command/exceptions/ValidationException.java` + +Exception thrown when a source fails to validate a command +* **Author:** John200410 5/24/2024 + + + +## Overview + +`ValidationException` is a class that extends [CommandException](/core/command/exceptions/CommandException.md). + +## Constructor + +```java +public ValidationException(String message) +``` + diff --git a/docs/api/core/command/processing/CommandProcessingSink.md b/docs/api/core/command/processing/CommandProcessingSink.md new file mode 100644 index 0000000..8647121 --- /dev/null +++ b/docs/api/core/command/processing/CommandProcessingSink.md @@ -0,0 +1,93 @@ +# CommandProcessingSink + +**Package:** `org.rusherhack.core.command.processing` + +**Source:** `org/rusherhack/core/command/processing/CommandProcessingSink.java` + +Sink that processes command arguments +* **Author:** john@rusherhack.org 5/14/2024 + + + +## Overview + +`CommandProcessingSink` is a class and implements [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html). + +## Constructor + +```java +public CommandProcessingSink(CommandManager commandManager, CommandProcessor commandProcessor) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| commandManager | [CommandManager](/core/command/CommandManager.md) | protected final | +| commandProcessor | [CommandProcessor](/core/command/processing/CommandProcessor.md) | protected final | +| commandData | [CommandData](/core/command/CommandData.md) | protected | +| commandString | `StringJoiner` | protected final | +| inputBuffer | [StringBuilder](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/StringBuilder.html) | protected | +| arguments | [ArrayList](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/ArrayList.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | protected | +| candidates | [LinkedHashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashMap.html)<[CommandData](/core/command/CommandData.md), [HashSet](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashSet.html)<[MethodProcessor](/core/command/processing/MethodProcessor.md)>> | protected | +| currentEntry | [MethodProcessor](/core/command/processing/MethodProcessor.md) | private | + + +## Methods + +### accept() + +```java +public void accept(String argument) +``` + +Accept an argument to be processed +* **Parameter `argument`**: the argument to accept + + + +### finish() + +```java +public ProcessedCommand finish(boolean furthestDepth) +``` + +**Returns:** [ProcessedCommand](/core/command/processing/ProcessedCommand.md) + +### getCommandString() + +```java +public String getCommandString() +``` + +Get the command string +* **Returns**: the command string + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getArguments() + +```java +public List getArguments() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + +### getCommandData() + +```java +public CommandData getCommandData() +``` + +**Returns:** [CommandData](/core/command/CommandData.md) + +### getCurrentEntry() + +```java +public MethodProcessor getCurrentEntry() +``` + +**Returns:** [MethodProcessor](/core/command/processing/MethodProcessor.md) + diff --git a/docs/api/core/command/processing/CommandProcessor.md b/docs/api/core/command/processing/CommandProcessor.md new file mode 100644 index 0000000..87cfdd4 --- /dev/null +++ b/docs/api/core/command/processing/CommandProcessor.md @@ -0,0 +1,58 @@ +# CommandProcessor + +**Package:** `org.rusherhack.core.command.processing` + +**Source:** `org/rusherhack/core/command/processing/CommandProcessor.java` + +Command processor which processes command arguments +* **Author:** john@rusherhack.org 12/15/2022 + + + +## Overview + +`CommandProcessor` is a class and implements [ICommandProcessor](/core/command/processing/ICommandProcessor.md). + +## Constructor + +```java +public CommandProcessor() +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| argumentParserMap | [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[Predicate](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Predicate.html)<[Class](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Class.html)<`?`>>, [IArg](/core/command/argument/parser/IArg.md)<`?`>> | private final | + + +## Methods + +### processCommand() + +```java +public CommandProcessingSink processCommand(CommandManager commandManager, String input) +``` + +**Returns:** [CommandProcessingSink](/core/command/processing/CommandProcessingSink.md) + +### addArgumentParser() + +```java +public void addArgumentParser(Class typeClass, IArg parser) +``` + +### addArgumentParser() + +```java +public void addArgumentParser(Predicate> predicate, IArg parser) +``` + +### getArgumentParser() + +```java +public IArg getArgumentParser(Class typeClass) +``` + +**Returns:** [IArg](/core/command/argument/parser/IArg.md)<`?`> + diff --git a/docs/api/core/command/processing/ICommandProcessor.md b/docs/api/core/command/processing/ICommandProcessor.md new file mode 100644 index 0000000..7d0cc8d --- /dev/null +++ b/docs/api/core/command/processing/ICommandProcessor.md @@ -0,0 +1,57 @@ +# ICommandProcessor + +**Package:** `org.rusherhack.core.command.processing` + +**Source:** `org/rusherhack/core/command/processing/ICommandProcessor.java` + +Interface for the command processor +* **Author:** john@rusherhack.org 3/12/2025 + + + +## Overview + +`ICommandProcessor` is a interface. + +## Methods + +### addArgumentParser() + +```java + void addArgumentParser(Class typeClass, IArg parser) +``` + +Adds an argument parser to the command processor +* **Parameter `typeClass`**: the class of the type to apply to the parser + + +**Parameter `parser`**: the argument parser + + + +### addArgumentParser() + +```java + void addArgumentParser(Predicate> predicate, IArg parser) +``` + +Adds an argument parser to the command processor +* **Parameter `predicate`**: predicate to test if the argument type should be applied to this parser + + +**Parameter `parser`**: the argument parser + + + +### getArgumentParser() + +```java + IArg getArgumentParser(Class typeClass) +``` + +**Returns**: argument parser for class type + + + +**Returns:** [IArg](/core/command/argument/parser/IArg.md)<`?`> + diff --git a/docs/api/core/command/processing/MethodProcessor.md b/docs/api/core/command/processing/MethodProcessor.md new file mode 100644 index 0000000..e739862 --- /dev/null +++ b/docs/api/core/command/processing/MethodProcessor.md @@ -0,0 +1,83 @@ +# MethodProcessor + +**Package:** `org.rusherhack.core.command.processing` + +**Source:** `org/rusherhack/core/command/processing/CommandProcessingSink.java` + +## Overview + +`MethodProcessor` is a class. + +## Constructor + +```java +public MethodProcessor(CommandData commandData, CommandData.MethodData methodData) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| commandData | [CommandData](/core/command/CommandData.md) | private final | +| methodData | `CommandData.MethodData` | private final | +| argsDepth | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| parsedArguments | [LinkedHashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashMap.html)<`CommandData.ArgumentData`, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html)> | private final | +| err | [CommandException](/core/command/exceptions/CommandException.md) | private | + + +## Methods + +### process() + +```java +public void process(String arguments) +``` + +### processed() + +```java +public ProcessedCommand processed() +``` + +**Returns:** [ProcessedCommand](/core/command/processing/ProcessedCommand.md) + +### getError() + +```java +public CommandException getError() +``` + +**Returns:** [CommandException](/core/command/exceptions/CommandException.md) + +### getCommandData() + +```java +public CommandData getCommandData() +``` + +**Returns:** [CommandData](/core/command/CommandData.md) + +### getMethodData() + +```java +public CommandData.MethodData getMethodData() +``` + +**Returns:** `CommandData.MethodData` + +### getParsedArguments() + +```java +public LinkedHashMap getParsedArguments() +``` + +**Returns:** [LinkedHashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashMap.html)<`CommandData.ArgumentData`, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html)> + +### getBaseDepth() + +```java +public int getBaseDepth() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/core/command/processing/ProcessedCommand.md b/docs/api/core/command/processing/ProcessedCommand.md new file mode 100644 index 0000000..57d2c00 --- /dev/null +++ b/docs/api/core/command/processing/ProcessedCommand.md @@ -0,0 +1,10 @@ +# ProcessedCommand + +**Package:** `org.rusherhack.core.command.processing` + +**Source:** `org/rusherhack/core/command/processing/CommandProcessingSink.java` + +## Overview + +`ProcessedCommand` is a record. + diff --git a/docs/api/core/feature/IFeature.md b/docs/api/core/feature/IFeature.md new file mode 100644 index 0000000..bc14a23 --- /dev/null +++ b/docs/api/core/feature/IFeature.md @@ -0,0 +1,51 @@ +# IFeature + +**Package:** `org.rusherhack.core.feature` + +**Source:** `org/rusherhack/core/feature/IFeature.java` + +Interface for describable features +* **Author:** John200410 + + + +## Overview + +`IFeature` is a interface that extends [INamed](/core/interfaces/INamed.md), [IReferenceable](/core/interfaces/IReferenceable.md). + +## Methods + +### getDescription() + +```java + String getDescription() +``` + +Get the description of the feature +* **Returns**: The description + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### reset() + +```java +default boolean reset() +``` + +Resets this feature to it's default state +* **Returns**: true if the feature was reset + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getReferenceKey() + +```java +default String getReferenceKey() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/feature/IFeatureConfigurable.md b/docs/api/core/feature/IFeatureConfigurable.md new file mode 100644 index 0000000..bfdc484 --- /dev/null +++ b/docs/api/core/feature/IFeatureConfigurable.md @@ -0,0 +1,71 @@ +# IFeatureConfigurable + +**Package:** `org.rusherhack.core.feature` + +**Source:** `org/rusherhack/core/feature/IFeatureConfigurable.java` + +A feature with configurable settings +* **Author:** John200410 3/6/2023 + + + +## Overview + +`IFeatureConfigurable` is a interface that extends [IFeature](/core/feature/IFeature.md). + +## Methods + +### getSettings() + +```java + List> getSettings() +``` + +**Returns**: the list of settings for this feature + + + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> + +### registerSettings() + +```java +default void registerSettings(Setting settings) +``` + +Registers settings to this feature +* @param settings + +### getSetting() + +```java +default Setting getSetting(String name) +``` + +Find a setting given its name +* **Parameter `name`**: name of the setting + + +**Returns**: the setting + + + +**Returns:** [Setting](/core/setting/Setting.md)<`?`> + +### reset() + +```java +default boolean reset() +``` + +Resets this feature to it's default state. + + + +Resets all settings to default. +* **Returns**: true if the feature was reset + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/feature/IFeatureManager.md b/docs/api/core/feature/IFeatureManager.md new file mode 100644 index 0000000..8f4dde8 --- /dev/null +++ b/docs/api/core/feature/IFeatureManager.md @@ -0,0 +1,56 @@ +# IFeatureManager + +**Package:** `org.rusherhack.core.feature` + +**Source:** `org/rusherhack/core/feature/IFeatureManager.java` + +Interface for feature management systems +* **Author:** John200410 1/17/2023 + + + +## Overview + +`IFeatureManager` is a interface. + +## Methods + +### registerFeature() + +```java + void registerFeature(T feature) +``` + +Registers a new feature +* **Parameter `feature`**: feature to register + + + +### getFeature() + +```java + Optional getFeature(String name) +``` + +Attempts to find a feature given its name +* **Parameter `name`**: name of the feature + + +**Returns**: the feature + + + +**Returns:** [Optional](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Optional.html)<`T`> + +### getFeatures() + +```java + Iterable getFeatures() +``` + +**Returns**: registered features + + + +**Returns:** [Iterable](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Iterable.html)<`T`> + diff --git a/docs/api/core/interfaces/IClickable.md b/docs/api/core/interfaces/IClickable.md new file mode 100644 index 0000000..70d7fc9 --- /dev/null +++ b/docs/api/core/interfaces/IClickable.md @@ -0,0 +1,39 @@ +# IClickable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/IClickable.java` + +## Overview + +`IClickable` is a interface that extends [IHoverable](/core/interfaces/IHoverable.md). + +## Methods + +### mouseClicked() + +```java + boolean mouseClicked(double mouseX, double mouseY, int button) +``` + +Called when a mouse button is clicked +* **Parameter `button`**: mouse button that was clicked + + +**Returns**: if the click was consumed + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### mouseReleased() + +```java +default void mouseReleased(double mouseX, double mouseY, int button) +``` + +Called when a mouse button is released +* **Parameter `button`**: mouse button that was released + + + diff --git a/docs/api/core/interfaces/IDraggable.md b/docs/api/core/interfaces/IDraggable.md new file mode 100644 index 0000000..9705ef4 --- /dev/null +++ b/docs/api/core/interfaces/IDraggable.md @@ -0,0 +1,26 @@ +# IDraggable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/IDraggable.java` + +## Overview + +`IDraggable` is a interface that extends [IClickable](/core/interfaces/IClickable.md). + +## Methods + +### mouseMoved() + +```java + void mouseMoved(double mouseX, double mouseY) +``` + +### isDragging() + +```java +default boolean isDragging() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/interfaces/IHideable.md b/docs/api/core/interfaces/IHideable.md new file mode 100644 index 0000000..88ea96a --- /dev/null +++ b/docs/api/core/interfaces/IHideable.md @@ -0,0 +1,25 @@ +# IHideable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/IHideable.java` + +Interface for things that can be hidden +* **Author:** John200410 1/17/2023 + + + +## Overview + +`IHideable` is a interface. + +## Methods + +### isHidden() + +```java + boolean isHidden() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/interfaces/IHoverable.md b/docs/api/core/interfaces/IHoverable.md new file mode 100644 index 0000000..36a68c9 --- /dev/null +++ b/docs/api/core/interfaces/IHoverable.md @@ -0,0 +1,29 @@ +# IHoverable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/IHoverable.java` + +Interface for hoverable objects +* **Author:** John200410 3/6/2024 + + + +## Overview + +`IHoverable` is a interface. + +## Methods + +### isHovered() + +```java + boolean isHovered(double mouseX, double mouseY) +``` + +**Returns**: whether the mouse is hovering over this object + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/interfaces/INamed.md b/docs/api/core/interfaces/INamed.md new file mode 100644 index 0000000..5f0d420 --- /dev/null +++ b/docs/api/core/interfaces/INamed.md @@ -0,0 +1,49 @@ +# INamed + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/INamed.java` + +**Author:** John200410 + + + +## Overview + +`INamed` is a interface. + +## Methods + +### getName() + +```java + String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayName() + +```java +default String getDisplayName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getAliases() + +```java +default String[] getAliases() +``` + +Returns an array of accepted aliases for this object. + + + +MUST include ``#getName(). +* **Returns**: array of accepted aliases + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + diff --git a/docs/api/core/interfaces/IPinnable.md b/docs/api/core/interfaces/IPinnable.md new file mode 100644 index 0000000..45d0067 --- /dev/null +++ b/docs/api/core/interfaces/IPinnable.md @@ -0,0 +1,41 @@ +# IPinnable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/IPinnable.java` + +Interface for pinnable objects. +* **Author:** John200410 4/8/2024 + + + +## Overview + +`IPinnable` is a interface. + +## Methods + +### isPinned() + +```java + boolean isPinned() +``` + +Checks if this object is pinned. +* **Returns**: true if this object is pinned, false otherwise + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setPinned() + +```java + void setPinned(boolean pinned) +``` + +Sets if this object should be pinned. +* **Parameter `pinned`**: true if this object should be pinned, false otherwise + + + diff --git a/docs/api/core/interfaces/IReferenceable.md b/docs/api/core/interfaces/IReferenceable.md new file mode 100644 index 0000000..41163c5 --- /dev/null +++ b/docs/api/core/interfaces/IReferenceable.md @@ -0,0 +1,24 @@ +# IReferenceable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/IReferenceable.java` + +**Author:** john@rusherhack.org 12/22/2025 + + + +## Overview + +`IReferenceable` is a interface. + +## Methods + +### getReferenceKey() + +```java + String getReferenceKey() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/interfaces/IScrollable.md b/docs/api/core/interfaces/IScrollable.md new file mode 100644 index 0000000..1ae4e8e --- /dev/null +++ b/docs/api/core/interfaces/IScrollable.md @@ -0,0 +1,39 @@ +# IScrollable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/IScrollable.java` + +Interface for objects that have a scrollable component +* **Author:** John200410 2/10/2023 + + + +## Overview + +`IScrollable` is a interface that extends [IHoverable](/core/interfaces/IHoverable.md). + +## Methods + +### mouseScrolled() + +```java + boolean mouseScrolled(double mouseX, double mouseY, double delta) +``` + +Called when the mouse is scrolled +* **Parameter `mouseX`**: the x-coordinate of the mouse + + +**Parameter `mouseY`**: the y-coordinate of the mouse + + +**Parameter `delta`**: the scroll delta + + +**Returns**: if the scroll was consumed + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/interfaces/ITickable.md b/docs/api/core/interfaces/ITickable.md new file mode 100644 index 0000000..bb1c559 --- /dev/null +++ b/docs/api/core/interfaces/ITickable.md @@ -0,0 +1,18 @@ +# ITickable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/ITickable.java` + +## Overview + +`ITickable` is a interface. + +## Methods + +### tick() + +```java +default void tick() +``` + diff --git a/docs/api/core/interfaces/IToggleable.md b/docs/api/core/interfaces/IToggleable.md new file mode 100644 index 0000000..63428be --- /dev/null +++ b/docs/api/core/interfaces/IToggleable.md @@ -0,0 +1,48 @@ +# IToggleable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/IToggleable.java` + +**Author:** John200410 5/27/2020 for rusherhack-rewrite + + + +## Overview + +`IToggleable` is a interface. + +## Methods + +### toggle() + +```java + void toggle() +``` + +### onEnable() + +```java + void onEnable() +``` + +### onDisable() + +```java + void onDisable() +``` + +### isToggled() + +```java + boolean isToggled() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setToggled() + +```java + void setToggled(boolean toggled) +``` + diff --git a/docs/api/core/interfaces/ITypeable.md b/docs/api/core/interfaces/ITypeable.md new file mode 100644 index 0000000..1f28d1c --- /dev/null +++ b/docs/api/core/interfaces/ITypeable.md @@ -0,0 +1,38 @@ +# ITypeable + +**Package:** `org.rusherhack.core.interfaces` + +**Source:** `org/rusherhack/core/interfaces/ITypeable.java` + +## Overview + +`ITypeable` is a interface. + +## Methods + +### charTyped() + +```java + boolean charTyped(char character) +``` + +Character key typed +* **Returns**: if the character was consumed + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### keyTyped() + +```java + boolean keyTyped(int key, int scanCode, int modifiers) +``` + +Key typed +* **Returns**: if the key was consumed + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/logging/ILog.md b/docs/api/core/logging/ILog.md new file mode 100644 index 0000000..c25aedc --- /dev/null +++ b/docs/api/core/logging/ILog.md @@ -0,0 +1,103 @@ +# ILog + +**Package:** `org.rusherhack.core.logging` + +**Source:** `org/rusherhack/core/logging/ILog.java` + +**Author:** John200410 3/11/2023 + + + +## Overview + +`ILog` is a interface. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| SEPARATOR | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | | + + +## Methods + +### info() + +```java + void info(String message) +``` + +### warn() + +```java + void warn(String message) +``` + +### error() + +```java + void error(String message) +``` + +### debug() + +```java + void debug(String message) +``` + +### info() + +```java +default void info(String message, Object args) +``` + +### warn() + +```java +default void warn(String message, Object args) +``` + +### error() + +```java +default void error(String message, Object args) +``` + +### debug() + +```java +default void debug(String message, Object args) +``` + +### info() + +```java +default void info(String message, boolean separators) +``` + +### warn() + +```java +default void warn(String message, boolean separators) +``` + +### error() + +```java +default void error(String message, boolean separators) +``` + +### debug() + +```java +default void debug(String message, boolean separators) +``` + +### constructLogRecord() + +```java +private static LogRecord constructLogRecord(Level level, String message, Object args) +``` + +**Returns:** `LogRecord` + diff --git a/docs/api/core/logging/ILoggable.md b/docs/api/core/logging/ILoggable.md new file mode 100644 index 0000000..b5c850f --- /dev/null +++ b/docs/api/core/logging/ILoggable.md @@ -0,0 +1,24 @@ +# ILoggable + +**Package:** `org.rusherhack.core.logging` + +**Source:** `org/rusherhack/core/logging/ILoggable.java` + +**Author:** John200410 3/14/2023 + + + +## Overview + +`ILoggable` is a interface. + +## Methods + +### getLogger() + +```java + ILogger getLogger() +``` + +**Returns:** [ILogger](/core/logging/ILogger.md) + diff --git a/docs/api/core/logging/ILogger.md b/docs/api/core/logging/ILogger.md new file mode 100644 index 0000000..2b3d307 --- /dev/null +++ b/docs/api/core/logging/ILogger.md @@ -0,0 +1,33 @@ +# ILogger + +**Package:** `org.rusherhack.core.logging` + +**Source:** `org/rusherhack/core/logging/ILogger.java` + +Interface for logging +* **Author:** John200410 3/11/2023 + + + +## Overview + +`ILogger` is a interface that extends [ILog](/core/logging/ILog.md). + +## Methods + +### getName() + +```java + String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getParent() + +```java + ILogger getParent() +``` + +**Returns:** [ILogger](/core/logging/ILogger.md) + diff --git a/docs/api/core/logging/LogFormatter.md b/docs/api/core/logging/LogFormatter.md new file mode 100644 index 0000000..ee46856 --- /dev/null +++ b/docs/api/core/logging/LogFormatter.md @@ -0,0 +1,39 @@ +# LogFormatter + +**Package:** `org.rusherhack.core.logging` + +**Source:** `org/rusherhack/core/logging/LogFormatter.java` + +**Author:** John200410 2/10/2024 + + + +## Overview + +`LogFormatter` is a class that extends `Formatter`. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| INSTANCE | [LogFormatter](/core/logging/LogFormatter.md) | static | + + +## Methods + +### formatMessage() + +```java +public String formatMessage(LogRecord record) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### format() + +```java +public String format(LogRecord record) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + diff --git a/docs/api/core/logging/Logger.md b/docs/api/core/logging/Logger.md new file mode 100644 index 0000000..1d06080 --- /dev/null +++ b/docs/api/core/logging/Logger.md @@ -0,0 +1,90 @@ +# Logger + +**Package:** `org.rusherhack.core.logging` + +**Source:** `org/rusherhack/core/logging/Logger.java` + +TODO: implement slf4j Logger interface +* **Author:** John200410 3/11/2023 + + + +## Overview + +`Logger` is a class and implements [ILogger](/core/logging/ILogger.md). + +## Constructor + +```java +public Logger(String name) +``` + +```java +public Logger(String name, Path logDirectory) +``` + +```java +public Logger(String name, ILogger parentLogger) +``` + +```java +public Logger(String name, ILogger parentLogger, Path logDirectory) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| parentLogger | [ILogger](/core/logging/ILogger.md) | private final | +| outputs | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ILog](/core/logging/ILog.md)> | protected final | + + +## Methods + +### info() + +```java +public void info(String message) +``` + +### warn() + +```java +public void warn(String message) +``` + +### error() + +```java +public void error(String message) +``` + +### debug() + +```java +public void debug(String message) +``` + +### log() + +```java +public void log(String msg) +``` + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getParent() + +```java +public ILogger getParent() +``` + +**Returns:** [ILogger](/core/logging/ILogger.md) + diff --git a/docs/api/core/logging/output/FileOutput.md b/docs/api/core/logging/output/FileOutput.md new file mode 100644 index 0000000..cb11fcf --- /dev/null +++ b/docs/api/core/logging/output/FileOutput.md @@ -0,0 +1,78 @@ +# FileOutput + +**Package:** `org.rusherhack.core.logging.output` + +**Source:** `org/rusherhack/core/logging/output/FileOutput.java` + +**Author:** John200410 2/9/2024 + + + +## Overview + +`FileOutput` is a class and implements [ILog](/core/logging/ILog.md). + +## Constructor + +```java +public FileOutput(Path path) +``` + +```java +public FileOutput(File file) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| DATE_FORMAT | `SimpleDateFormat` | public static final | +| file | [File](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/File.html) | private | + + +## Methods + +### info() + +```java +public void info(String message) +``` + +### warn() + +```java +public void warn(String message) +``` + +### error() + +```java +public void error(String message) +``` + +### debug() + +```java +public void debug(String message) +``` + +### logToFile() + +```java +private void logToFile(String prefix, String message) +``` + +### getTimestampFormat() + +```java +public SimpleDateFormat getTimestampFormat() +``` + +**Returns:** `SimpleDateFormat` + +### createNewFile() + +```java +private void createNewFile(Path logDirectory) +``` + diff --git a/docs/api/core/notification/INotifiable.md b/docs/api/core/notification/INotifiable.md new file mode 100644 index 0000000..5f84755 --- /dev/null +++ b/docs/api/core/notification/INotifiable.md @@ -0,0 +1,37 @@ +# INotifiable + +**Package:** `org.rusherhack.core.notification` + +**Source:** `org/rusherhack/core/notification/INotifiable.java` + +Interface for sending notifications +* **Author:** John200410 2/9/2023 + + + +## Overview + +`INotifiable` is a interface. + +## Methods + +### sendNotification() + +```java + void sendNotification(NotificationType type, String message) +``` + +Send a notification +* **Parameter `type`**: Type of notification + + +**Parameter `message`**: Message to send + + + +### sendNotification() + +```java + void sendNotification(NotificationType type, String message, int id) +``` + diff --git a/docs/api/core/notification/NotificationType.md b/docs/api/core/notification/NotificationType.md new file mode 100644 index 0000000..6e07694 --- /dev/null +++ b/docs/api/core/notification/NotificationType.md @@ -0,0 +1,76 @@ +# NotificationType + +**Package:** `org.rusherhack.core.notification` + +**Source:** `org/rusherhack/core/notification/NotificationType.java` + +**Author:** John200410 1/27/2023 + + + +## Overview + +`NotificationType` is a enum. + +## Constructor + +```java + NotificationType(int typeID, long lifeSpan) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| typeID | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| lifeSpan | [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) | private final | + + +## Constants + +### INFO + +Arguments: 1, 5000L + +### WARNING + +Arguments: 2, 7500L + +### ERROR + +Arguments: 3, 10000L + +### HINT + +Arguments: 4, 5000L + +### DEBUG + +Arguments: 256, 5000L + +## Methods + +### getTypeID() + +```java +public int getTypeID() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getLifeSpan() + +```java +public long getLifeSpan() +``` + +**Returns:** [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) + +### fromTypeID() + +```java +public static NotificationType fromTypeID(int typeID) +``` + +**Returns:** [NotificationType](/core/notification/NotificationType.md) + diff --git a/docs/api/core/notification/type/LivingNotification.md b/docs/api/core/notification/type/LivingNotification.md new file mode 100644 index 0000000..95a0038 --- /dev/null +++ b/docs/api/core/notification/type/LivingNotification.md @@ -0,0 +1,70 @@ +# LivingNotification + +**Package:** `org.rusherhack.core.notification.type` + +**Source:** `org/rusherhack/core/notification/type/LivingNotification.java` + +This is a notification that has a life span. It will be removed from the notification manager after the life span has passed. + + + +This is useful for notifications that are only meant to be displayed for a short period of time. +* **Author:** John200410 1/27/2023 + + + +## Overview + +`LivingNotification` is a class that extends [Notification](/core/notification/type/Notification.md) and implements [ITickable](/core/interfaces/ITickable.md). + +## Constructor + +```java +public LivingNotification(String text, NotificationType type) +``` + +```java +public LivingNotification(String text, NotificationType type, int id) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| timer | [Timer](/core/utils/Timer.md) | private final | +| lifeSpan | [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) | private final | +| shouldKill | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### getTimer() + +```java +public Timer getTimer() +``` + +**Returns:** [Timer](/core/utils/Timer.md) + +### getLifeSpan() + +```java +public long getLifeSpan() +``` + +**Returns:** [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) + +### shouldKillSelf() + +```java +public boolean shouldKillSelf() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### kill() + +```java +public void kill() +``` + diff --git a/docs/api/core/notification/type/Notification.md b/docs/api/core/notification/type/Notification.md new file mode 100644 index 0000000..64d043e --- /dev/null +++ b/docs/api/core/notification/type/Notification.md @@ -0,0 +1,60 @@ +# Notification + +**Package:** `org.rusherhack.core.notification.type` + +**Source:** `org/rusherhack/core/notification/type/Notification.java` + +Abstract notification +* **Author:** John200410 1/27/2023 + + + +## Overview + +`Notification` is a class. + +## Constructor + +```java +public Notification(String text, NotificationType type) +``` + +```java +public Notification(String text, NotificationType type, int id) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| text | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | +| type | [NotificationType](/core/notification/NotificationType.md) | private final | +| id | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | + + +## Methods + +### getText() + +```java +public String getText() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getType() + +```java +public NotificationType getType() +``` + +**Returns:** [NotificationType](/core/notification/NotificationType.md) + +### getID() + +```java +public int getID() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/core/serialize/ISerializable.md b/docs/api/core/serialize/ISerializable.md new file mode 100644 index 0000000..477a761 --- /dev/null +++ b/docs/api/core/serialize/ISerializable.md @@ -0,0 +1,65 @@ +# ISerializable + +**Package:** `org.rusherhack.core.serialize` + +**Source:** `org/rusherhack/core/serialize/ISerializable.java` + +Interface for things that can be saved to disk +* **Author:** John200410 + + + +## Overview + +`ISerializable` is a interface. + +## Methods + +### serialize() + +```java + T serialize() +``` + +**Returns:** `T` + +### deserialize() + +```java + boolean deserialize(T obj) +``` + +Deserializes the given object +* **Parameter `obj`**: the object to deserialize + + +**Returns**: whether the deserialization was successful + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### shouldSerialize() + +```java +default boolean shouldSerialize(boolean autosave) +``` + +Whether this object should be serialized +* **Parameter `autosave`**: whether this is an autosave + + +**Returns**: whether this object should be serialized + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### shouldAutoSave() + +```java +default boolean shouldAutoSave() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/serialize/JsonSerializable.md b/docs/api/core/serialize/JsonSerializable.md new file mode 100644 index 0000000..ae17cf8 --- /dev/null +++ b/docs/api/core/serialize/JsonSerializable.md @@ -0,0 +1,14 @@ +# JsonSerializable + +**Package:** `org.rusherhack.core.serialize` + +**Source:** `org/rusherhack/core/serialize/JsonSerializable.java` + +**Author:** John200410 7/6/2023 + + + +## Overview + +`JsonSerializable` is a interface that extends [ISerializable](/core/serialize/ISerializable.md). + diff --git a/docs/api/core/serialize/TextSerializable.md b/docs/api/core/serialize/TextSerializable.md new file mode 100644 index 0000000..3614712 --- /dev/null +++ b/docs/api/core/serialize/TextSerializable.md @@ -0,0 +1,14 @@ +# TextSerializable + +**Package:** `org.rusherhack.core.serialize` + +**Source:** `org/rusherhack/core/serialize/TextSerializable.java` + +**Author:** John200410 7/6/2023 + + + +## Overview + +`TextSerializable` is a interface that extends [ISerializable](/core/serialize/ISerializable.md). + diff --git a/docs/api/core/setting/BooleanSetting.md b/docs/api/core/setting/BooleanSetting.md new file mode 100644 index 0000000..0f318ad --- /dev/null +++ b/docs/api/core/setting/BooleanSetting.md @@ -0,0 +1,122 @@ +# BooleanSetting + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/BooleanSetting.java` + +**Author:** john@rusherhack.org 1/15/2023 + + + +## Overview + +`BooleanSetting` is a class that extends [Setting](/core/setting/Setting.md). + +## Constructor + +```java +public BooleanSetting(String name, Boolean value) +``` + +```java +public BooleanSetting(String name, String description, Boolean value) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| TRUE_ALIASES | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | +| FALSE_ALIASES | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | public static final | + + +## Methods + +### deserializeValue() + +```java +public boolean deserializeValue(JsonElement json) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serializeValue() + +```java +public JsonElement serializeValue() +``` + +**Returns:** `JsonElement` + +### parseValue() + +```java +public Boolean parseValue(String string, boolean set) +``` + +**Returns:** [Boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### createCommand() + +```java +public AbstractCommand createCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### setDescription() + +```java +public BooleanSetting setDescription(String description) +``` + +**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) + +### setVisibility() + +```java +public BooleanSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) + +### onChange() + +```java +public BooleanSetting onChange(Runnable run) +``` + +**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) + +### onChange() + +```java +public BooleanSetting onChange(Consumer consumer) +``` + +**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) + +### setHidden() + +```java +public BooleanSetting setHidden(boolean hidden) +``` + +**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) + +### setShouldSerialize() + +```java +public BooleanSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) + diff --git a/docs/api/core/setting/EnumSetting.md b/docs/api/core/setting/EnumSetting.md new file mode 100644 index 0000000..fe9a0de --- /dev/null +++ b/docs/api/core/setting/EnumSetting.md @@ -0,0 +1,134 @@ +# EnumSetting + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/EnumSetting.java` + +**Author:** john@rusherhack.org 1/24/2023 + + + +## Overview + +`EnumSetting` is a class that extends [Setting](/core/setting/Setting.md). + +## Constructor + +```java +public EnumSetting(String name, T value) +``` + +```java +public EnumSetting(String name, String description, T value) +``` + +## Methods + +### parseValue() + +```java +public T parseValue(String string, boolean set) +``` + +**Returns:** `T` + +### increment() + +```java +public void increment() +``` + +### decrement() + +```java +public void decrement() +``` + +### getOptions() + +```java +public String[] getOptions(boolean displayName) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### createCommand() + +```java +public AbstractCommand createCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### deserializeValue() + +```java +public boolean deserializeValue(JsonElement json) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serializeValue() + +```java +public JsonElement serializeValue() +``` + +**Returns:** `JsonElement` + +### setDescription() + +```java +public EnumSetting setDescription(String description) +``` + +**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> + +### setVisibility() + +```java +public EnumSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> + +### onChange() + +```java +public EnumSetting onChange(Runnable run) +``` + +**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> + +### onChange() + +```java +public EnumSetting onChange(Consumer consumer) +``` + +**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> + +### setHidden() + +```java +public EnumSetting setHidden(boolean hidden) +``` + +**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> + +### setShouldSerialize() + +```java +public EnumSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> + diff --git a/docs/api/core/setting/ListHolder.md b/docs/api/core/setting/ListHolder.md new file mode 100644 index 0000000..68da6b2 --- /dev/null +++ b/docs/api/core/setting/ListHolder.md @@ -0,0 +1,10 @@ +# ListHolder + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/ListSetting.java` + +## Overview + +`ListHolder` is a record. + diff --git a/docs/api/core/setting/ListSetting.md b/docs/api/core/setting/ListSetting.md new file mode 100644 index 0000000..2a9c568 --- /dev/null +++ b/docs/api/core/setting/ListSetting.md @@ -0,0 +1,328 @@ +# ListSetting + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/ListSetting.java` + +A setting for a list of elements + + + +It extends Setting because listsettings can be toggled (like for Search Blocks setting) +* **Author:** john@rusherhack.org 12/18/2025 + + + +## Overview + +`ListSetting` is a class that extends [Setting](/core/setting/Setting.md) and implements [Iterable](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Iterable.html). + +## Constructor + +```java +public ListSetting(String name, T defaultItems) +``` + +```java +public ListSetting(String name, String description, T defaultItems) +``` + +```java +public ListSetting(String name, String description, boolean toggleable, T defaultItems) +``` + +```java +public ListSetting(String name, String description, Collection collection) +``` + +```java +public ListSetting(String name, String description, boolean toggleable, Collection collection) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| toggleable | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | + + +## Methods + +### serializeElement() + +```java +public abstract JsonElement serializeElement(T element) +``` + +**Returns:** `JsonElement` + +### deserializeElement() + +```java +public abstract T deserializeElement(JsonElement element) +``` + +**Returns:** `T` + +### parseElement() + +```java +public abstract T parseElement(String string) +``` + +**Returns:** `T` + +### getElementDisplayName() + +```java +public abstract String getElementDisplayName(T element) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### parseValue() + +```java +public ListHolder parseValue(String string, boolean set) +``` + +**Returns:** [ListHolder](/core/setting/ListHolder.md)<`T`> + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### add() + +```java +public boolean add(T element) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### addAll() + +```java +public boolean addAll(T elements) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### remove() + +```java +public boolean remove(T element) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### removeAll() + +```java +public boolean removeAll(T elements) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### contains() + +```java +public boolean contains(T element) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### clear() + +```java +public void clear() +``` + +### isToggleable() + +```java +public boolean isToggleable() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isToggled() + +```java +public boolean isToggled() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setToggled() + +```java +public void setToggled(boolean toggled) +``` + +### getPossibleElements() + +```java +public Collection getPossibleElements() +``` + +**Returns**: a set of elements that can be added to this list, or null + + + +**Returns:** [Collection](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Collection.html)<`T`> + +### getList() + +```java +public Collection getList() +``` + +**Returns:** [Collection](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Collection.html)<`T`> + +### getDisplayString() + +```java +public String getDisplayString() +``` + +**Returns**: the name used in commands, like "Search Blocks" + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getElementAttributes() + +```java +public String[] getElementAttributes(T element) +``` + +**Returns**: an array of attribute values associated with the element, or the names of the attribute type of parameter is null + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[] + +### createCommand() + +```java +public AbstractCommand createCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createAddCommand() + +```java +protected AbstractCommand createAddCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createRemoveCommand() + +```java +protected AbstractCommand createRemoveCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createListCommand() + +```java +protected AbstractCommand createListCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### createClearCommand() + +```java +protected AbstractCommand createClearCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### deserializeValue() + +```java +public boolean deserializeValue(JsonElement json) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serializeValue() + +```java +public JsonElement serializeValue() +``` + +**Returns:** `JsonElement` + +### reset() + +```java +public void reset(boolean includeSubSettings) +``` + +### iterator() + +```java +public Iterator iterator() +``` + +**Returns:** [Iterator](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Iterator.html)<`T`> + +### setDescription() + +```java +public ListSetting setDescription(String description) +``` + +**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> + +### setVisibility() + +```java +public ListSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> + +### setHidden() + +```java +public ListSetting setHidden(boolean hidden) +``` + +**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> + +### onChange() + +```java +public ListSetting onChange(Runnable run) +``` + +**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> + +### onChange() + +```java +public ListSetting onChange(Consumer> consumer) +``` + +**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> + +### setShouldSerialize() + +```java +public ListSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> + diff --git a/docs/api/core/setting/NullSetting.md b/docs/api/core/setting/NullSetting.md new file mode 100644 index 0000000..d8ab2d0 --- /dev/null +++ b/docs/api/core/setting/NullSetting.md @@ -0,0 +1,121 @@ +# NullSetting + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/NullSetting.java` + +Setting to be used for placeholders +* **Author:** john@rusherhack.org 1/24/2023 + + + +## Overview + +`NullSetting` is a class that extends [Setting](/core/setting/Setting.md). + +## Constructor + +```java +public NullSetting(String name) +``` + +```java +public NullSetting(String name, String description) +``` + +## Methods + +### setValue() + +```java +public void setValue(Object value) +``` + +### parseValue() + +```java +public Object parseValue(String string, boolean set) +``` + +**Returns:** [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html) + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### deserializeValue() + +```java +public boolean deserializeValue(JsonElement json) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serializeValue() + +```java +public JsonElement serializeValue() +``` + +**Returns:** `JsonElement` + +### createCommand() + +```java +public AbstractCommand createCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### setDescription() + +```java +public NullSetting setDescription(String description) +``` + +**Returns:** [NullSetting](/core/setting/NullSetting.md) + +### setVisibility() + +```java +public NullSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [NullSetting](/core/setting/NullSetting.md) + +### onChange() + +```java +public NullSetting onChange(Runnable run) +``` + +**Returns:** [NullSetting](/core/setting/NullSetting.md) + +### onChange() + +```java +public NullSetting onChange(Consumer consumer) +``` + +**Returns:** [NullSetting](/core/setting/NullSetting.md) + +### setHidden() + +```java +public NullSetting setHidden(boolean hidden) +``` + +**Returns:** [NullSetting](/core/setting/NullSetting.md) + +### setShouldSerialize() + +```java +public NullSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [NullSetting](/core/setting/NullSetting.md) + diff --git a/docs/api/core/setting/NumberSetting.md b/docs/api/core/setting/NumberSetting.md new file mode 100644 index 0000000..39940dd --- /dev/null +++ b/docs/api/core/setting/NumberSetting.md @@ -0,0 +1,185 @@ +# NumberSetting + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/NumberSetting.java` + +**Author:** john@rusherhack.org 1/15/2023 + + + +## Overview + +`NumberSetting` is a class that extends [Setting](/core/setting/Setting.md). + +## Constructor + +```java +public NumberSetting(String name, T value, T minimum, T maximum) +``` + +```java +public NumberSetting(String name, String description, T value, T minimum, T maximum) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| DISPLAY_FORMAT | `DecimalFormat` | public static final | +| minimum | `T` | private final | +| maximum | `T` | private final | +| clampMinimum | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| clampMaximum | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| incrementing | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | +| incrementStep | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | + + +## Methods + +### parseValue() + +```java +public T parseValue(String string, boolean set) +``` + +**Returns:** `T` + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setValueObj() + +```java +public void setValueObj(Object value) +``` + +### setValue() + +```java +public void setValue(double d) +``` + +### setValue() + +```java +public void setValue(double d, boolean clamp, boolean round) +``` + +### serializeValue() + +```java +public JsonElement serializeValue() +``` + +**Returns:** `JsonElement` + +### deserializeValue() + +```java +public boolean deserializeValue(JsonElement json) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getMinimum() + +```java +public T getMinimum() +``` + +**Returns:** `T` + +### getMaximum() + +```java +public T getMaximum() +``` + +**Returns:** `T` + +### clampMin() + +```java +public NumberSetting clampMin() +``` + +**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> + +### clampMax() + +```java +public NumberSetting clampMax() +``` + +**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> + +### incremental() + +```java +public NumberSetting incremental(double incrementStep) +``` + +**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> + +### convertValue() + +```java +private T convertValue(double value) +``` + +**Returns:** `T` + +### setDescription() + +```java +public NumberSetting setDescription(String description) +``` + +**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> + +### setVisibility() + +```java +public NumberSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> + +### onChange() + +```java +public NumberSetting onChange(Runnable run) +``` + +**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> + +### onChange() + +```java +public NumberSetting onChange(Consumer consumer) +``` + +**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> + +### setHidden() + +```java +public NumberSetting setHidden(boolean hidden) +``` + +**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> + +### setShouldSerialize() + +```java +public NumberSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> + diff --git a/docs/api/core/setting/OptionSetting.md b/docs/api/core/setting/OptionSetting.md new file mode 100644 index 0000000..62999cf --- /dev/null +++ b/docs/api/core/setting/OptionSetting.md @@ -0,0 +1,104 @@ +# OptionSetting + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/OptionSetting.java` + +Like [EnumSetting](/core/setting/EnumSetting.md) but better +* **Author:** john@rusherhack.org 12/26/2025 + + + +## Overview + +`OptionSetting` is a class that extends [Setting](/core/setting/Setting.md). + +## Constructor + +```java +public OptionSetting(String name, T value, T options) +``` + +```java +public OptionSetting(String name, String description, T value, T options) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| options | [ArrayList](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/ArrayList.html)<`T`> | protected final | + + +## Methods + +### addOption() + +```java +public OptionSetting addOption(T option) +``` + +**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> + +### getOptions() + +```java +public ArrayList getOptions() +``` + +**Returns:** [ArrayList](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/ArrayList.html)<`T`> + +### sort() + +```java +public void sort(Comparator comparator) +``` + +### setDescription() + +```java +public OptionSetting setDescription(String description) +``` + +**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> + +### setVisibility() + +```java +public OptionSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> + +### onChange() + +```java +public OptionSetting onChange(Runnable run) +``` + +**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> + +### onChange() + +```java +public OptionSetting onChange(Consumer consumer) +``` + +**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> + +### setHidden() + +```java +public OptionSetting setHidden(boolean hidden) +``` + +**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> + +### setShouldSerialize() + +```java +public OptionSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> + diff --git a/docs/api/core/setting/Setting.md b/docs/api/core/setting/Setting.md new file mode 100644 index 0000000..034f415 --- /dev/null +++ b/docs/api/core/setting/Setting.md @@ -0,0 +1,411 @@ +# Setting + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/Setting.java` + +**Author:** john@rusherhack.org 1/15/2023 + + + +## Overview + +`Setting` is a class and implements [IFeature](/core/feature/IFeature.md), [IHideable](/core/interfaces/IHideable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). + +## Constructor + +```java +public Setting(String name, T value) +``` + +```java +public Setting(String name, String description, T value) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | protected final | +| displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | protected | +| description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | protected | +| value | `T` | protected | +| defaultValue | `T` | protected | +| hidden | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | +| subSettings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | protected final | +| parent | [Setting](/core/setting/Setting.md)<`?`> | protected | +| attachedFeature | [IFeature](/core/feature/IFeature.md) | protected | +| consumer | [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<`T`> | protected | +| visibilityTest | `BooleanSupplier` | protected | +| shouldSerialize | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | +| shouldHaveCommand | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | + + +## Methods + +### parseValue() + +```java +public abstract T parseValue(String string, boolean set) +``` + +Parses a string into a value for this setting +* **Parameter `string`**: String to parse + + +**Parameter `set`**: Whether to set the value if it is parsed successfully + + +**Returns**: The parsed value, null if it failed to parse + + + +**Returns:** `T` + +### getDisplayValue() + +```java +public abstract String getDisplayValue() +``` + +**Returns**: a String representing the value of this object + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### serializeValue() + +```java +public abstract JsonElement serializeValue() +``` + +Serializes this setting's value into a `JsonElement` +* **Returns**: { + +@link JsonElement} representing the setting value + +**Returns:** `JsonElement` + +### deserializeValue() + +```java +public abstract boolean deserializeValue(JsonElement json) +``` + +Deserializes a `JsonElement` into this setting +* **Parameter `json`**: **Returns**: whether deserialization was successful + + + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getValue() + +```java +public T getValue() +``` + +**Returns**: the value of this setting + + + +**Returns:** `T` + +### getDefaultValue() + +```java +public T getDefaultValue() +``` + +**Returns**: the default value of this setting + + + +**Returns:** `T` + +### setValue() + +```java +public void setValue(T value) +``` + +Sets the value of this setting +* **Parameter `value`**: the value to set + + + +### setValueObj() + +```java +public void setValueObj(Object value) +``` + +Sets the value of this setting +* **Parameter `value`**: the value to set + + + +### getName() + +```java +public String getName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayName() + +```java +public String getDisplayName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDisplayName() + +```java +public void setDisplayName(String displayName) +``` + +### getFullName() + +```java +public String getFullName() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDescription() + +```java +public String getDescription() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setDescription() + +```java +public Setting setDescription(String description) +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`T`> + +### getReferenceKey() + +```java +public String getReferenceKey() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### setVisibility() + +```java +public Setting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`T`> + +### setHidden() + +```java +public Setting setHidden(boolean hidden) +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`T`> + +### isHiddenByDefault() + +```java +public boolean isHiddenByDefault() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### isHidden() + +```java +public boolean isHidden() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### reset() + +```java +public boolean reset() +``` + +Resets this feature to it's default state +* **Returns**: true if the feature was reset + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### reset() + +```java +public void reset(boolean includeSubSettings) +``` + +### addSubSettings() + +```java +public void addSubSettings(Setting settings) +``` + +### getSubSettings() + +```java +public List> getSubSettings() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> + +### getAllSubSettings() + +```java +public List> getAllSubSettings() +``` + +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> + +### getSubSetting() + +```java +public Setting getSubSetting(String name) +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`?`> + +### setChangeAction() + +```java +public Setting setChangeAction(Runnable run) +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`T`> + +### onChange() + +```java +public Setting onChange(Runnable run) +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`T`> + +### onChange() + +```java +public Setting onChange(Consumer consumer) +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`T`> + +### getConsumer() + +```java +public Consumer getConsumer() +``` + +**Returns:** [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<`T`> + +### setShouldHaveCommand() + +```java +public Setting setShouldHaveCommand(boolean shouldHaveCommand) +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`T`> + +### shouldHaveCommand() + +```java +public boolean shouldHaveCommand() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setShouldSerialize() + +```java +public Setting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`T`> + +### shouldSerialize() + +```java +public boolean shouldSerialize(boolean autosave) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serialize() + +```java +public JsonElement serialize() +``` + +**Returns:** `JsonElement` + +### deserialize() + +```java +public boolean deserialize(JsonElement jsonElement) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serializeSubSettings() + +```java +private JsonElement serializeSubSettings() +``` + +**Returns:** `JsonElement` + +### deserializeSubSettings() + +```java +private boolean deserializeSubSettings(JsonElement subSettings) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### createCommand() + +```java +public AbstractCommand createCommand(AbstractCommand parent) +``` + +**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) + +### setAttachedFeature() + +```java +public void setAttachedFeature(IFeature attachedFeature) +``` + +Internal use only + +### setParent() + +```java +public void setParent(Setting parent) +``` + +### getParent() + +```java +public Setting getParent() +``` + +**Returns:** [Setting](/core/setting/Setting.md)<`?`> + diff --git a/docs/api/core/setting/SettingCommand.md b/docs/api/core/setting/SettingCommand.md new file mode 100644 index 0000000..63c3428 --- /dev/null +++ b/docs/api/core/setting/SettingCommand.md @@ -0,0 +1,41 @@ +# SettingCommand + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/Setting.java` + +## Overview + +`SettingCommand` is a class that extends [AbstractCommand](/core/command/AbstractCommand.md). + +## Constructor + +```java +public SettingCommand(AbstractCommand parent, T setting) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| setting | `T` | protected final | + + +## Methods + +### isHidden() + +```java +public boolean isHidden() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getSetting() + +```java +public T getSetting() +``` + +**Returns:** `T` + diff --git a/docs/api/core/setting/StringSetting.md b/docs/api/core/setting/StringSetting.md new file mode 100644 index 0000000..e45de9c --- /dev/null +++ b/docs/api/core/setting/StringSetting.md @@ -0,0 +1,154 @@ +# StringSetting + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/StringSetting.java` + +**Author:** john@rusherhack.org 1/24/2023 + + + +## Overview + +`StringSetting` is a class that extends [Setting](/core/setting/Setting.md). + +## Constructor + +```java +public StringSetting(String name, String value) +``` + +```java +public StringSetting(String name, String description, String value) +``` + +```java +public StringSetting(String name, String description, String value, String options) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| options | [LinkedHashSet](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashSet.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private final | +| isNameVisible | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | + + +## Methods + +### getOptions() + +```java +public LinkedHashSet getOptions() +``` + +**Returns:** [LinkedHashSet](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashSet.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> + +### addOptions() + +```java +public void addOptions(String options) +``` + +### setValue() + +```java +public void setValue(String value) +``` + +### parseValue() + +```java +public String parseValue(String string, boolean set) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### getDisplayValue() + +```java +public String getDisplayValue() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### deserializeValue() + +```java +public boolean deserializeValue(JsonElement json) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### serializeValue() + +```java +public JsonElement serializeValue() +``` + +**Returns:** `JsonElement` + +### isNameVisible() + +```java +public boolean isNameVisible() +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### setNameVisible() + +```java +public StringSetting setNameVisible(boolean isNameVisible) +``` + +**Returns:** [StringSetting](/core/setting/StringSetting.md) + +### setDescription() + +```java +public StringSetting setDescription(String description) +``` + +**Returns:** [StringSetting](/core/setting/StringSetting.md) + +### setVisibility() + +```java +public StringSetting setVisibility(BooleanSupplier tester) +``` + +**Returns:** [StringSetting](/core/setting/StringSetting.md) + +### onChange() + +```java +public StringSetting onChange(Runnable run) +``` + +**Returns:** [StringSetting](/core/setting/StringSetting.md) + +### onChange() + +```java +public StringSetting onChange(Consumer consumer) +``` + +**Returns:** [StringSetting](/core/setting/StringSetting.md) + +### setHidden() + +```java +public StringSetting setHidden(boolean hidden) +``` + +**Returns:** [StringSetting](/core/setting/StringSetting.md) + +### setShouldSerialize() + +```java +public StringSetting setShouldSerialize(boolean shouldSerialize) +``` + +**Returns:** [StringSetting](/core/setting/StringSetting.md) + diff --git a/docs/api/core/setting/ValueHolder.md b/docs/api/core/setting/ValueHolder.md new file mode 100644 index 0000000..9509019 --- /dev/null +++ b/docs/api/core/setting/ValueHolder.md @@ -0,0 +1,10 @@ +# ValueHolder + +**Package:** `org.rusherhack.core.setting` + +**Source:** `org/rusherhack/core/setting/Setting.java` + +## Overview + +`ValueHolder` is a record. + diff --git a/docs/api/core/utils/ColorUtils.md b/docs/api/core/utils/ColorUtils.md new file mode 100644 index 0000000..df4b793 --- /dev/null +++ b/docs/api/core/utils/ColorUtils.md @@ -0,0 +1,171 @@ +# ColorUtils + +**Package:** `org.rusherhack.core.utils` + +**Source:** `org/rusherhack/core/utils/ColorUtils.java` + +Helper class containing color related functions +* **Author:** John200410 + + + +## Overview + +`ColorUtils` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| COLOR_MAP | [HashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)[], `Color`> | public static final | + + +## Methods + +### getRainbow() + +```java +public static Color getRainbow(long timeOffsetMs, float speed, float saturation, float brightness) +``` + +**Returns:** `Color` + +### getRainbowRGB() + +```java +public static int getRainbowRGB(long timeOffsetMs, float speed, float saturation, float brightness) +``` + +Generates a rainbow color. +* **Parameter `timeOffsetMs`**: The time offset in milliseconds to start the rainbow effect. + + +**Parameter `speed`**: The speed of the rainbow effect. + + +**Parameter `saturation`**: The saturation value of the generated color (0.0 to 1.0). + + +**Parameter `brightness`**: The brightness value of the generated color (0.0 to 1.0). + + +**Returns**: An integer value representing the RGB color of the generated rainbow. + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getGradient() + +```java +public static Color getGradient(Color[] colors, long timeOffsetMs, float speed) +``` + +**Returns:** `Color` + +### getGradientRGB() + +```java +public static int getGradientRGB(Color[] colors, long timeOffsetMs, float speed) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getGradientRGB() + +```java +public static int getGradientRGB(int[] colors, long timeOffsetMs, float speed) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### blendColors() + +```java +public static int blendColors(int[] colors, float fraction) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### transparency() + +```java +public static Color transparency(Color c, int alpha) +``` + +**Returns:** `Color` + +### transparency() + +```java +public static Color transparency(Color c, float alpha) +``` + +**Returns:** `Color` + +### transparency() + +```java +public static int transparency(int c, int alpha) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### transparency() + +```java +public static int transparency(int c, float alpha) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### brightness() + +```java +public static int brightness(int c, float factor) +``` + +Does not use alpha + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getRGBA() + +```java +public static float[] getRGBA(int color) +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html)[] + +### getHex() + +```java +public static int getHex(int red, int green, int blue, int alpha) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### interpolateColor() + +```java +public static int interpolateColor(int start, int end, double fraction) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### parseColor() + +```java +public static Color parseColor(String col) +``` + +Get a color from its name or color code +* **Parameter `col`**: color string + + +**Returns**: Color object + + + +**Returns:** `Color` + diff --git a/docs/api/core/utils/IOUtils.md b/docs/api/core/utils/IOUtils.md new file mode 100644 index 0000000..ac2b0d3 --- /dev/null +++ b/docs/api/core/utils/IOUtils.md @@ -0,0 +1,60 @@ +# IOUtils + +**Package:** `org.rusherhack.core.utils` + +**Source:** `org/rusherhack/core/utils/IOUtils.java` + +Helper class containing IO related functions +* **Author:** John200410 + + + +## Overview + +`IOUtils` is a class. + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| LOG_DATE_FORMAT | `SimpleDateFormat` | public static final | + + +## Methods + +### toString() + +```java +public static String toString(InputStream stream, boolean newLines) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### readStringFromFile() + +```java +public static String readStringFromFile(File file, boolean newLines) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### writeStringToFile() + +```java +public static void writeStringToFile(File file, String message, boolean lineSeparator, boolean clean) +``` + +### writeToFile() + +```java +public static void writeToFile(File file, InputStream inputStream) +``` + +### createFile() + +```java +public static boolean createFile(File file) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + diff --git a/docs/api/core/utils/MathUtils.md b/docs/api/core/utils/MathUtils.md new file mode 100644 index 0000000..cff0385 --- /dev/null +++ b/docs/api/core/utils/MathUtils.md @@ -0,0 +1,99 @@ +# MathUtils + +**Package:** `org.rusherhack.core.utils` + +**Source:** `org/rusherhack/core/utils/MathUtils.java` + +Helper class containing math related functions +* **Author:** John200410 2/2/2023 + + + +## Overview + +`MathUtils` is a class. + +## Methods + +### clamp() + +```java +public static double clamp(double num, double min, double max) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### clamp() + +```java +public static float clamp(float num, float min, float max) +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### clamp() + +```java +public static long clamp(long num, long min, long max) +``` + +**Returns:** [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) + +### clamp() + +```java +public static int clamp(int num, int min, int max) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### interpolate() + +```java +public static double interpolate(double now, double then, double amount) +``` + +Linear interpolation + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### round() + +```java +public static double round(double num, int places) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### round() + +```java +public static double round(double num, double step) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### hypot() + +```java +public static float hypot(float a, float b) +``` + +**Returns:** [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) + +### distance() + +```java +public static double distance(double x1, double y1, double z1, double x2, double y2, double z2) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) + +### calculateIntersection() + +```java +public static double[] calculateIntersection(double[] line, double[] line2) +``` + +**Returns:** [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)[] + diff --git a/docs/api/core/utils/Pair.md b/docs/api/core/utils/Pair.md new file mode 100644 index 0000000..ecb7da2 --- /dev/null +++ b/docs/api/core/utils/Pair.md @@ -0,0 +1,58 @@ +# Pair + +**Package:** `org.rusherhack.core.utils` + +**Source:** `org/rusherhack/core/utils/Pair.java` + +**Author:** John200410 1/15/2024 + + + +## Overview + +`Pair` is a class. + +## Constructor + +```java +public Pair(A first, B second) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| a | `A` | private | +| b | `B` | private | + + +## Methods + +### getA() + +```java +public A getA() +``` + +**Returns:** `A` + +### setA() + +```java +public void setA(A a) +``` + +### getB() + +```java +public B getB() +``` + +**Returns:** `B` + +### setB() + +```java +public void setB(B b) +``` + diff --git a/docs/api/core/utils/StringUtils.md b/docs/api/core/utils/StringUtils.md new file mode 100644 index 0000000..4373f10 --- /dev/null +++ b/docs/api/core/utils/StringUtils.md @@ -0,0 +1,56 @@ +# StringUtils + +**Package:** `org.rusherhack.core.utils` + +**Source:** `org/rusherhack/core/utils/StringUtils.java` + +Helper class containing String related functions +* **Author:** John200410 2/10/2020 for rusherhack + + + +## Overview + +`StringUtils` is a class. + +## Methods + +### toTitleCase() + +```java +public static String toTitleCase(String str) +``` + +Creates a title case string +* **Parameter `str`**: the string to convert + + +**Returns**: the title case string + + + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### levenshteinDistance() + +```java +public static int levenshteinDistance(String string1, String string2) +``` + +Calculates the Levenshtein distance between two strings + + + +Credit: [...](https://stackoverflow.com/a/13564498) +* **Parameter `string1`**: the first string + + +**Parameter `string2`**: the second string + + +**Returns**: the Levenshtein distance + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/core/utils/Timer.md b/docs/api/core/utils/Timer.md new file mode 100644 index 0000000..9999a3d --- /dev/null +++ b/docs/api/core/utils/Timer.md @@ -0,0 +1,104 @@ +# Timer + +**Package:** `org.rusherhack.core.utils` + +**Source:** `org/rusherhack/core/utils/Timer.java` + +A simple timer +* **Author:** John200410 + + + +## Overview + +`Timer` is a class. + +## Constructor + +```java +public Timer() +``` + +```java +public Timer(long startTime) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| time | [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) | private | + + +## Methods + +### reset() + +```java +public void reset() +``` + +Resets the timer + +### passed() + +```java +public boolean passed(double ms) +``` + +Checks if the timer has reached the specified time +* **Parameter `ms`**: time in milliseconds + + +**Returns**: true if the timer has reached the specified time + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### ticksPassed() + +```java +public boolean ticksPassed(int gameTicks) +``` + +Checks if the timer has reached the specified time +* **Parameter `gameTicks`**: time in minecraft game ticks (20 ticks = 1 second) + + +**Returns**: true if the timer has reached the specified time + + + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### getTime() + +```java +public long getTime() +``` + +**Returns**: how long this timer has been active in milliseconds + + + +**Returns:** [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) + +### getTicksPassed() + +```java +public int getTicksPassed() +``` + +**Returns**: how long this timer has been active in game ticks (20 ticks per second) + + + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### setTime() + +```java +public void setTime(long time) +``` + diff --git a/docs/api/core/utils/TriConsumer.md b/docs/api/core/utils/TriConsumer.md new file mode 100644 index 0000000..84781b1 --- /dev/null +++ b/docs/api/core/utils/TriConsumer.md @@ -0,0 +1,33 @@ +# TriConsumer + +**Package:** `org.rusherhack.core.utils` + +**Source:** `org/rusherhack/core/utils/TriConsumer.java` + +**Author:** John200410 12/11/2023 + + + +## Overview + +`TriConsumer` is a interface. + +## Methods + +### accept() + +```java + void accept(K k, V v, S s) +``` + +Performs this operation on the given arguments. +* **Parameter `k`**: the first input argument + + +**Parameter `v`**: the second input argument + + +**Parameter `s`**: the third input argument + + + diff --git a/docs/api/core/utils/Version.md b/docs/api/core/utils/Version.md new file mode 100644 index 0000000..088b13a --- /dev/null +++ b/docs/api/core/utils/Version.md @@ -0,0 +1,103 @@ +# Version + +**Package:** `org.rusherhack.core.utils` + +**Source:** `org/rusherhack/core/utils/Version.java` + +**Author:** John200410 6/2/2024 + + + +## Overview + +`Version` is a class and implements [Comparable](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Comparable.html). + +## Constructor + +```java +public Version(int major, int minor, int patch) +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| major | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| minor | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | +| patch | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | + + +## Methods + +### getMajor() + +```java +public int getMajor() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getMinor() + +```java +public int getMinor() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getPatch() + +```java +public int getPatch() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### getString() + +```java +public String getString(boolean includeNullPatch) +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### toString() + +```java +public String toString() +``` + +**Returns:** [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) + +### equals() + +```java +public boolean equals(Object obj) +``` + +**Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) + +### hashCode() + +```java +public int hashCode() +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + +### fromString() + +```java +public static Version fromString(String version) +``` + +**Returns:** [Version](/core/utils/Version.md) + +### compareTo() + +```java +public int compareTo(Version other) +``` + +**Returns:** [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) + diff --git a/docs/api/index.mdx b/docs/api/index.mdx new file mode 100644 index 0000000..da0b2c2 --- /dev/null +++ b/docs/api/index.mdx @@ -0,0 +1,4 @@ + +# RusherHack API docs + +**Welcome to the rusherhackAPI documentation. Here you can find everything you need to learn how to create rusherhack plugins!** \ No newline at end of file diff --git a/docusaurus.config.js b/docusaurus.config.js index 6e7a7b6..35ae725 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -10,6 +10,9 @@ const config = { projectName: 'rusherhack-docs', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', + markdown: { + format: 'detect', + }, i18n: { defaultLocale: 'en', locales: ['en'], @@ -44,7 +47,7 @@ const config = { items: [ {to: '/docs/intro', label: 'Guide', position: 'right'}, {to: '/docs/modules/features', label: 'Features', position: 'right'}, - //{to: '/docs/api', label: 'API', position: 'right'}, + {to: '/docs/api', label: 'API', position: 'right'}, { href: 'https://github.com/RusherDevelopment', position: 'right', diff --git a/sidebars.js b/sidebars.js index f77355c..364cca0 100644 --- a/sidebars.js +++ b/sidebars.js @@ -15,21 +15,27 @@ @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { - // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], - - // But you can create a sidebar manually - /* - tutorialSidebar: [ - 'intro', - 'hello', + mainSidebar: [ { type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], + label: 'Guides', + items: [{ type: 'autogenerated', dirName: 'guides' }], }, + { + type: 'category', + label: 'Modules', + items: [{ type: 'autogenerated', dirName: 'modules' }], + }, + { + type: 'category', + label: 'Support', + items: [{ type: 'autogenerated', dirName: 'support' }], + }, + ], + + apiSidebar: [ + { type: 'autogenerated', dirName: 'api' }, ], - */ }; export default sidebars; From 55cf77ebf40da40d15c55d6cdca5e55e4f1ca42e Mon Sep 17 00:00:00 2001 From: FelekDevYT Date: Mon, 8 Jun 2026 22:55:11 +0300 Subject: [PATCH 3/6] removed dinosaurus files --- blog/2019-05-28-first-blog-post.mdx | 12 ----- blog/2019-05-29-long-blog-post.mdx | 44 ------------------ blog/2021-08-01-mdx-blog-post.mdx | 24 ---------- .../docusaurus-plushie-banner.jpeg | Bin 96122 -> 0 bytes blog/2021-08-26-welcome/index.mdx | 29 ------------ blog/authors.yml | 25 ---------- blog/tags.yml | 19 -------- src/pages/markdown-page.mdx | 7 --- 8 files changed, 160 deletions(-) delete mode 100644 blog/2019-05-28-first-blog-post.mdx delete mode 100644 blog/2019-05-29-long-blog-post.mdx delete mode 100644 blog/2021-08-01-mdx-blog-post.mdx delete mode 100644 blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg delete mode 100644 blog/2021-08-26-welcome/index.mdx delete mode 100644 blog/authors.yml delete mode 100644 blog/tags.yml delete mode 100644 src/pages/markdown-page.mdx diff --git a/blog/2019-05-28-first-blog-post.mdx b/blog/2019-05-28-first-blog-post.mdx deleted file mode 100644 index a62ee55..0000000 --- a/blog/2019-05-28-first-blog-post.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: first-blog-post -title: First Blog Post -authors: [slorber, yangshun] -tags: [hola, docusaurus] ---- - -Lorem ipsum dolor sit amet... - -{/* truncate */} - -...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2019-05-29-long-blog-post.mdx b/blog/2019-05-29-long-blog-post.mdx deleted file mode 100644 index 681cf0e..0000000 --- a/blog/2019-05-29-long-blog-post.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -slug: long-blog-post -title: Long Blog Post -authors: yangshun -tags: [hello, docusaurus] ---- - -This is the summary of a very long blog post, - -Use a `{/*` `truncate` `*/}` comment to limit blog post size in the list view. - -{/* truncate */} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2021-08-01-mdx-blog-post.mdx b/blog/2021-08-01-mdx-blog-post.mdx deleted file mode 100644 index 0c4b4a4..0000000 --- a/blog/2021-08-01-mdx-blog-post.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -slug: mdx-blog-post -title: MDX Blog Post -authors: [slorber] -tags: [docusaurus] ---- - -Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). - -:::tip - -Use the power of React to create interactive blog posts. - -::: - -{/* truncate */} - -For example, use JSX to create an interactive button: - -```js - -``` - - diff --git a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg deleted file mode 100644 index 11bda0928456b12f8e53d0ba5709212a4058d449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96122 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 diff --git a/blog/2021-08-26-welcome/index.mdx b/blog/2021-08-26-welcome/index.mdx deleted file mode 100644 index a21bccd..0000000 --- a/blog/2021-08-26-welcome/index.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -slug: welcome -title: Welcome -authors: [slorber, yangshun] -tags: [facebook, hello, docusaurus] ---- - -[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). - -Here are a few tips you might find useful. - -{/* truncate */} - -Simply add Markdown files (or folders) to the `blog` directory. - -Regular blog authors can be added to `authors.yml`. - -The blog post date can be extracted from filenames, such as: - -- `2019-05-30-welcome.md` -- `2019-05-30-welcome/index.md` - -A blog post folder can be convenient to co-locate blog post images: - -![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) - -The blog supports tags as well! - -**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/blog/authors.yml b/blog/authors.yml deleted file mode 100644 index 0fd3987..0000000 --- a/blog/authors.yml +++ /dev/null @@ -1,25 +0,0 @@ -yangshun: - name: Yangshun Tay - title: Ex-Meta Staff Engineer, Co-founder GreatFrontEnd - url: https://linkedin.com/in/yangshun - image_url: https://github.com/yangshun.png - page: true - socials: - x: yangshunz - linkedin: yangshun - github: yangshun - newsletter: https://www.greatfrontend.com - -slorber: - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png - page: - # customize the url of the author page at /blog/authors/ - permalink: '/all-sebastien-lorber-articles' - socials: - x: sebastienlorber - linkedin: sebastienlorber - github: slorber - newsletter: https://thisweekinreact.com diff --git a/blog/tags.yml b/blog/tags.yml deleted file mode 100644 index bfaa778..0000000 --- a/blog/tags.yml +++ /dev/null @@ -1,19 +0,0 @@ -facebook: - label: Facebook - permalink: /facebook - description: Facebook tag description - -hello: - label: Hello - permalink: /hello - description: Hello tag description - -docusaurus: - label: Docusaurus - permalink: /docusaurus - description: Docusaurus tag description - -hola: - label: Hola - permalink: /hola - description: Hola tag description diff --git a/src/pages/markdown-page.mdx b/src/pages/markdown-page.mdx deleted file mode 100644 index 9756c5b..0000000 --- a/src/pages/markdown-page.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Markdown page example ---- - -# Markdown page example - -You don't need React to write simple standalone pages. From 2480f2ba9d7aa4080981e39e6c6458fad4385ad7 Mon Sep 17 00:00:00 2001 From: FelekDevYT Date: Thu, 11 Jun 2026 20:59:04 +0300 Subject: [PATCH 4/6] Fixed links, added search bar, added guide(WIP) --- .gitignore | 3 + .idea/.gitignore | 32 ++ .idea/modules.xml | 8 + .idea/rusherhack-documentation.iml | 12 + .idea/vcs.xml | 6 + .../client/api/events/client/input/Move.md | 18 - .../client/api/events/internal/PostInit.md | 12 - docs/api/client/api/events/internal/Unload.md | 10 - docs/api/client/api/events/world/Unload.md | 16 - docs/api/client/api/plugin/Plugin.md | 38 -- .../command/annotations/CommandExecutor.md | 19 - docs/api/guides/plugindev.mdx | 19 + docs/api/guides/resources.mdx | 20 + .../guides/tutorial/installing-project.mdx | 26 + docs/api/index.mdx | 3 + docs/api/{ => javadoc}/client/api/Globals.md | 2 +- .../{ => javadoc}/client/api/IRusherHack.md | 46 +- .../{ => javadoc}/client/api/RusherHackAPI.md | 48 +- .../api/accessors/client/IMixinClientInput.md | 2 +- .../api/accessors/client/IMixinConnection.md | 2 +- .../api/accessors/client/IMixinKeyMapping.md | 2 +- .../api/accessors/client/IMixinMinecraft.md | 2 +- .../client/IMixinMultiPlayerGameMode.md | 2 +- .../api/accessors/client/IMixinOptions.md | 2 +- .../accessors/entity/IMixinAbstractArrow.md | 2 +- .../entity/IMixinAbstractClientPlayer.md | 2 +- .../api/accessors/entity/IMixinEntity.md | 2 +- .../entity/IMixinFireworkRocketEntity.md | 2 +- .../api/accessors/entity/IMixinFishingHook.md | 2 +- .../accessors/entity/IMixinLivingEntity.md | 2 +- .../api/accessors/entity/IMixinLocalPlayer.md | 2 +- .../api/accessors/entity/IMixinPlayerInfo.md | 2 +- .../api/accessors/entity/IMixinProjectile.md | 2 +- .../entity/IMixinThrowableProjectile.md | 2 +- .../gui/IMixinAbstractContainerScreen.md | 2 +- .../gui/IMixinAbstractCraftingMenu.md | 2 +- .../gui/IMixinAbstractSignEditScreen.md | 2 +- .../accessors/gui/IMixinBossHealthOverlay.md | 2 +- ...mponent$DrawingBackgroundGraphicsAccess.md | 2 +- ...tComponent$DrawingFocusedGraphicsAccess.md | 2 +- .../api/accessors/gui/IMixinChatComponent.md | 2 +- .../accessors/gui/IMixinDisconnectedScreen.md | 2 +- .../client/api/accessors/gui/IMixinGui.md | 2 +- .../api/accessors/gui/IMixinMerchantMenu.md | 2 +- .../api/accessors/gui/IMixinMerchantScreen.md | 2 +- .../api/accessors/gui/IMixinPauseScreen.md | 2 +- .../accessors/gui/IMixinPlayerTabOverlay.md | 2 +- .../client/api/accessors/gui/IMixinScreen.md | 2 +- .../api/accessors/gui/IMixinShulkerBoxMenu.md | 2 +- .../packet/IMixinClientPacketListener.md | 2 +- .../packet/IMixinClientboundExplodePacket.md | 2 +- ...xinClientboundSectionBlocksUpdatePacket.md | 2 +- .../IMixinClientboundSetEntityMotionPacket.md | 2 +- .../packet/IMixinClientboundSetTimePacket.md | 2 +- .../IMixinClientboundSystemChatPacket.md | 2 +- .../packet/IMixinConnectionProtocol.md | 2 +- .../packet/IMixinServerboundInteractPacket.md | 2 +- .../IMixinServerboundMovePlayerPacket.md | 2 +- .../IMixinServerboundMoveVehiclePacket.md | 2 +- .../IMixinServerboundPlayerInputPacket.md | 2 +- .../IMixinServerboundUseItemOnPacket.md | 2 +- .../accessors/render/IMixinBufferBuilder.md | 2 +- .../render/IMixinByteBufferBuilder.md | 2 +- .../api/accessors/render/IMixinCamera.md | 2 +- .../accessors/render/IMixinGameRenderer.md | 2 +- .../api/accessors/render/IMixinGlDevice.md | 2 +- .../api/accessors/render/IMixinGuiGraphics.md | 2 +- .../accessors/render/IMixinLevelRenderer.md | 2 +- .../render/IMixinMapTextureManager.md | 2 +- .../IMixinMultiBufferSource$BufferSource.md | 2 +- .../api/accessors/render/IMixinPoseStack.md | 2 +- .../api/accessors/render/IMixinRenderType.md | 2 +- .../api/accessors/world/IMixinBaseSpawner.md | 2 +- .../world/IMixinBeaconBlockEntity.md | 2 +- .../api/accessors/world/IMixinBucketItem.md | 2 +- .../accessors/world/IMixinClientChunkCache.md | 2 +- .../api/accessors/world/IMixinClientLevel.md | 2 +- .../accessors/world/IMixinInstrumentItem.md | 2 +- .../client/api/accessors/world/IMixinLevel.md | 2 +- .../world/IMixinPalettedContainer.md | 2 +- .../world/item/crafting/IMixinShapedRecipe.md | 2 +- .../crafting/IMixinShapedRecipePattern.md | 2 +- .../item/crafting/IMixinShapelessRecipe.md | 2 +- .../level/storage/loot/IMixinLootPool.md | 2 +- .../storage/loot/IMixinLootTable$Builder.md | 2 +- .../loot/entries/IMixinCompositeEntryBase.md | 2 +- .../entries/IMixinLootPoolEntryContainer.md | 2 +- .../IMixinLootPoolSingletonContainer.md | 2 +- .../loot/functions/IMixinApplyBonusCount.md | 2 +- .../IMixinCompositeLootItemCondition.md | 2 +- .../client/api/bind/IBindManager.md | 12 +- .../client/api/bind/key/GLFWConstants.md | 4 +- .../client/api/bind/key/GLFWKey.md | 4 +- .../client/api/bind/key/KeyboardKey.md | 4 +- .../client/api/bind/key/MouseKey.md | 4 +- .../client/api/config/Configuration.md | 6 +- .../client/api/config/JsonConfiguration.md | 8 +- .../client/api/config/TextConfiguration.md | 10 +- .../client/api/events/client/EventQuit.md | 6 +- .../api/events/client/EventTimerSpeed.md | 2 +- .../client/api/events/client/EventUpdate.md | 2 +- .../client/api/events/client/Reason.md | 2 +- .../api/events/client/chat/EventAddChat.md | 2 +- .../events/client/chat/EventChatCommand.md | 2 +- .../events/client/chat/EventChatMessage.md | 2 +- .../api/events/client/input/EventInputTick.md | 2 +- .../api/events/client/input/EventKeyboard.md | 2 +- .../api/events/client/input/EventMouse.md | 2 +- .../client/api/events/client/input/Key.md | 4 +- .../client/api/events/client/input/Move.md | 18 + .../client/api/events/client/input/Scroll.md | 4 +- .../client/internal/EventNotification.md | 6 +- .../api/events/client/screen/BuildButtons.md | 4 +- .../client/api/events/client/screen/Change.md | 2 +- .../client/screen/EventResizeDisplay.md | 2 +- .../api/events/client/screen/EventScreen.md | 2 +- .../api/events/client/screen/Initialize.md | 4 +- .../events/internal/EventBaritoneControl.md | 2 +- .../api/events/internal/EventCommand.md | 2 +- .../api/events/internal/EventKeybindPress.md | 6 +- .../api/events/internal/EventRusherHack.md | 2 +- .../client/api/events/internal/PostInit.md | 12 + .../client/api/events/internal/Type.md | 2 +- .../client/api/events/internal/Unload.md | 10 + .../client/api/events/network/Action.md | 2 +- .../client/api/events/network/EventPacket.md | 2 +- .../events/network/EventPlayerConnection.md | 6 +- .../client/api/events/network/Receive.md | 4 +- .../client/api/events/network/Send.md | 4 +- .../client/api/events/player/Action.md | 2 +- .../client/api/events/player/EventInteract.md | 6 +- .../client/api/events/player/EventMove.md | 2 +- .../api/events/player/EventPlayerUpdate.md | 2 +- .../client/api/events/player/EventTravel.md | 6 +- .../client/api/events/player/FallOnBlock.md | 4 +- .../client/api/events/player/Mount.md | 4 +- .../client/api/events/render/Armor.md | 2 +- .../client/api/events/render/Background.md | 2 +- .../client/api/events/render/Check.md | 2 +- .../client/api/events/render/EventRender.md | 2 +- .../client/api/events/render/EventRender2D.md | 8 +- .../client/api/events/render/EventRender3D.md | 8 +- .../events/render/EventRenderBlockEntity.md | 2 +- .../api/events/render/EventRenderEntity.md | 2 +- .../api/events/render/EventRenderScreen.md | 2 +- .../api/events/render/ItemFrameParts.md | 6 +- .../client/api/events/render/Nametag.md | 2 +- .../client/api/events/render/Part.md | 2 +- .../api/events/render/PlayerRotations.md | 2 +- .../client/api/events/world/Add.md | 4 +- .../client/api/events/world/EventChunk.md | 2 +- .../client/api/events/world/EventEntity.md | 2 +- .../client/api/events/world/EventLoadWorld.md | 2 +- .../client/api/events/world/Load.md | 4 +- .../client/api/events/world/Remove.md | 4 +- .../javadoc/client/api/events/world/Unload.md | 16 + .../client/api/feature/command/Command.md | 4 +- .../api/feature/command/FeatureCommand.md | 8 +- .../api/feature/command/ModuleCommand.md | 4 +- .../command/ToggleableFeatureCommand.md | 4 +- .../api/feature/command/arg/BlockReference.md | 2 +- .../feature/command/arg/EnchantReference.md | 2 +- .../api/feature/command/arg/ItemReference.md | 2 +- .../feature/command/arg/PlayerReference.md | 2 +- .../client/api/feature/hud/Alignment.md | 2 +- .../client/api/feature/hud/ColorMode.md | 2 +- .../client/api/feature/hud/HudElement.md | 30 +- .../client/api/feature/hud/IHudElement.md | 4 +- .../client/api/feature/hud/ListHudElement.md | 16 +- .../client/api/feature/hud/ListItem.md | 14 +- .../api/feature/hud/ResizeableHudElement.md | 6 +- .../api/feature/hud/ShortListHudElement.md | 8 +- .../client/api/feature/hud/SnapPoint.md | 2 +- .../client/api/feature/hud/SortingMode.md | 4 +- .../client/api/feature/hud/TextAxis.md | 2 +- .../client/api/feature/hud/TextHudElement.md | 12 +- .../client/api/feature/module/IModule.md | 6 +- .../client/api/feature/module/Module.md | 18 +- .../api/feature/module/ModuleCategory.md | 34 +- .../api/feature/module/ToggleableModule.md | 4 +- .../api/feature/window/PinnableWindow.md | 4 +- .../client/api/feature/window/PopupWindow.md | 10 +- .../api/feature/window/ResizeableWindow.md | 4 +- .../client/api/feature/window/Window.md | 20 +- .../client/api/plugin/IPlugin.md | 4 +- docs/api/javadoc/client/api/plugin/Plugin.md | 38 ++ .../client/api/render/DrawMode.md | 18 +- .../client/api/render/IRenderable2D.md | 6 +- .../client/api/render/IRenderer2D.md | 6 +- .../client/api/render/IRenderer3D.md | 2 +- .../client/api/render/IScissorable.md | 2 +- .../client/api/render/RenderContext.md | 2 +- .../client/api/render/font/IFontRenderer.md | 4 +- .../api/render/graphic/AbstractGraphic.md | 4 +- .../client/api/render/graphic/IGraphic.md | 2 +- .../api/render/graphic/TextureGraphic.md | 4 +- .../api/render/graphic/VectorGraphic.md | 4 +- .../client/api/setting/BindSetting.md | 18 +- .../client/api/setting/BlockListSetting.md | 12 +- .../client/api/setting/ColorSetting.md | 30 +- .../api/setting/EntityTypeListSetting.md | 12 +- .../client/api/setting/ItemListSetting.md | 12 +- .../client/api/setting/ModeSetting.md | 16 +- .../client/api/setting/RainbowMode.md | 2 +- .../client/api/system/Accessor.md | 2 +- .../client/api/system/ColorMode.md | 2 +- .../{ => javadoc}/client/api/system/Colors.md | 4 +- .../client/api/system/Entities.md | 2 +- .../{ => javadoc}/client/api/system/Fonts.md | 14 +- .../client/api/system/IChunkProcessor.md | 2 +- .../client/api/system/IConfigManager.md | 2 +- .../client/api/system/IFieldRegistry.md | 2 +- .../client/api/system/IHudManager.md | 4 +- .../client/api/system/IInteractions.md | 2 +- .../client/api/system/INotificationManager.md | 4 +- .../client/api/system/IRelationManager.md | 6 +- .../client/api/system/IRotationManager.md | 2 +- .../client/api/system/IRusherHackRegistry.md | 4 +- .../client/api/system/IServerState.md | 2 +- .../client/api/system/IWindowManager.md | 14 +- .../client/api/system/Processee.md | 2 +- .../api/system/waypoint/IWaypointManager.md | 8 +- .../client/api/system/waypoint/Waypoint.md | 8 +- .../client/api/ui/ElementBase.md | 2 +- .../client/api/ui/ElementHandlerBase.md | 4 +- .../client/api/ui/ScaledElementBase.md | 6 +- .../client/api/ui/hud/HudHandlerBase.md | 12 +- .../ui/notification/RenderableNotification.md | 4 +- .../client/api/ui/panel/IPanelItem.md | 4 +- .../client/api/ui/panel/PanelBase.md | 12 +- .../client/api/ui/panel/PanelHandlerBase.md | 6 +- .../client/api/ui/panel/PanelItemBase.md | 8 +- .../client/api/ui/theme/ITheme.md | 12 +- .../client/api/ui/theme/IThemeManager.md | 18 +- .../client/api/ui/theme/ThemeBase.md | 12 +- .../api/ui/window/WindowContentHandlerBase.md | 2 +- .../client/api/ui/window/WindowHandlerBase.md | 10 +- .../client/api/ui/window/WindowSide.md | 2 +- .../api/ui/window/WindowViewHandlerBase.md | 6 +- .../api/ui/window/content/AnchorSide.md | 2 +- .../api/ui/window/content/ComboContent.md | 6 +- .../api/ui/window/content/ListItemContent.md | 8 +- .../api/ui/window/content/PaddingContent.md | 4 +- .../api/ui/window/content/WindowContent.md | 16 +- .../content/component/ButtonComponent.md | 6 +- .../content/component/CheckBoxComponent.md | 4 +- .../content/component/ComboBoxComponent.md | 4 +- .../content/component/ParagraphComponent.md | 6 +- .../window/content/component/TextComponent.md | 4 +- .../content/component/TextFieldComponent.md | 12 +- .../api/ui/window/context/ContextAction.md | 2 +- .../client/api/ui/window/view/Alignment.md | 2 +- .../client/api/ui/window/view/Column.md | 4 +- .../client/api/ui/window/view/ListItemView.md | 8 +- .../client/api/ui/window/view/ListView.md | 22 +- .../api/ui/window/view/RichTextComponent.md | 6 +- .../client/api/ui/window/view/RichTextView.md | 8 +- .../api/ui/window/view/ScrollableView.md | 8 +- .../client/api/ui/window/view/SimpleView.md | 8 +- .../client/api/ui/window/view/SplitView.md | 10 +- .../client/api/ui/window/view/TabbedView.md | 12 +- .../api/ui/window/view/VerticalAlignment.md | 2 +- .../client/api/ui/window/view/WindowView.md | 10 +- .../client/api/utils/BufferUtils.md | 2 +- .../client/api/utils/ChatUtils.md | 4 +- .../client/api/utils/ContainerUtils.md | 4 +- .../client/api/utils/EntityUtils.md | 4 +- .../client/api/utils/FormBuilder.md | 6 +- .../client/api/utils/InputBuilder.md | 16 +- .../client/api/utils/InputUtils.md | 4 +- .../client/api/utils/InventoryUtils.md | 4 +- .../client/api/utils/ItemUtils.md | 2 +- .../client/api/utils/PlayerUtils.md | 10 +- .../client/api/utils/RotationUtils.md | 4 +- .../client/api/utils/UUIDSerializer.md | 2 +- .../client/api/utils/WebUtils.md | 2 +- .../client/api/utils/WorldUtils.md | 4 +- .../client/api/utils/objects/Builder.md | 16 +- .../client/api/utils/objects/Dimension.md | 4 +- .../client/api/utils/objects/PlayerInput.md | 2 +- .../client/api/utils/objects/PlayerMessage.md | 4 +- .../api/utils/objects/PlayerRelation.md | 4 +- .../client/api/utils/objects/Scrollbar.md | 4 +- .../client/api/utils/objects/State.md | 2 +- .../client/api/utils/objects/TextField.md | 4 +- .../client/api/utils/objects/Whisper.md | 4 +- .../api/utils/registry/BlockRegistry.md | 2 +- .../api/utils/registry/EntityTypeRegistry.md | 2 +- .../client/api/utils/registry/ItemRegistry.md | 2 +- .../{ => javadoc}/core/animation/Animation.md | 18 +- .../{ => javadoc}/core/animation/Easing.md | 2 +- .../core/bind/BindManagerBase.md | 8 +- docs/api/{ => javadoc}/core/bind/IBindable.md | 2 +- docs/api/{ => javadoc}/core/bind/key/IKey.md | 2 +- .../{ => javadoc}/core/bind/key/NullKey.md | 6 +- .../core/command/AbstractCommand.md | 12 +- .../core/command/ArgumentData.md | 2 +- .../{ => javadoc}/core/command/CommandData.md | 22 +- .../core/command/CommandManager.md | 28 +- .../core/command/CommandUtils.md | 2 +- .../core/command/ICommandManager.md | 8 +- .../core/command/ICommandSource.md | 2 +- .../{ => javadoc}/core/command/MethodData.md | 2 +- .../core/command/annotations/Argument.md | 2 +- .../command/annotations/CommandExecutor.md | 19 + .../core/command/argument/StringCapture.md | 2 +- .../core/command/argument/parser/IArg.md | 2 +- .../argument/parser/impl/BooleanArg.md | 4 +- .../command/argument/parser/impl/ColorArg.md | 4 +- .../command/argument/parser/impl/DoubleArg.md | 4 +- .../command/argument/parser/impl/EnumArg.md | 4 +- .../argument/parser/impl/IntegerArg.md | 4 +- .../command/argument/parser/impl/StringArg.md | 4 +- .../argument/parser/impl/StringCapturerArg.md | 6 +- .../command/dispatch/ICommandDispatcher.md | 2 +- .../dispatch/StringCommandDispatcher.md | 6 +- .../command/exceptions/ArgumentException.md | 4 +- .../command/exceptions/BadSyntaxException.md | 4 +- .../command/exceptions/CommandException.md | 6 +- .../command/exceptions/DispatchException.md | 2 +- .../UnknownArgumentTypeException.md | 4 +- .../exceptions/UnknownCommandException.md | 4 +- .../command/exceptions/ValidationException.md | 4 +- .../processing/CommandProcessingSink.md | 18 +- .../command/processing/CommandProcessor.md | 10 +- .../command/processing/ICommandProcessor.md | 4 +- .../command/processing/MethodProcessor.md | 12 +- .../command/processing/ProcessedCommand.md | 2 +- .../{ => javadoc}/core/feature/IFeature.md | 4 +- .../core/feature/IFeatureConfigurable.md | 8 +- .../core/feature/IFeatureManager.md | 2 +- .../core/interfaces/IClickable.md | 4 +- .../core/interfaces/IDraggable.md | 4 +- .../core/interfaces/IHideable.md | 2 +- .../core/interfaces/IHoverable.md | 2 +- .../{ => javadoc}/core/interfaces/INamed.md | 2 +- .../core/interfaces/IPinnable.md | 2 +- .../core/interfaces/IReferenceable.md | 2 +- .../core/interfaces/IScrollable.md | 4 +- .../core/interfaces/ITickable.md | 2 +- .../core/interfaces/IToggleable.md | 2 +- .../core/interfaces/ITypeable.md | 2 +- docs/api/{ => javadoc}/core/logging/ILog.md | 2 +- .../{ => javadoc}/core/logging/ILoggable.md | 4 +- .../api/{ => javadoc}/core/logging/ILogger.md | 6 +- .../core/logging/LogFormatter.md | 4 +- docs/api/{ => javadoc}/core/logging/Logger.md | 10 +- .../core/logging/output/FileOutput.md | 4 +- .../core/notification/INotifiable.md | 2 +- .../core/notification/NotificationType.md | 4 +- .../notification/type/LivingNotification.md | 8 +- .../core/notification/type/Notification.md | 6 +- .../core/serialize/ISerializable.md | 2 +- .../core/serialize/JsonSerializable.md | 4 +- .../core/serialize/TextSerializable.md | 4 +- .../core/setting/BooleanSetting.md | 18 +- .../{ => javadoc}/core/setting/EnumSetting.md | 18 +- .../{ => javadoc}/core/setting/ListHolder.md | 2 +- .../{ => javadoc}/core/setting/ListSetting.md | 28 +- .../{ => javadoc}/core/setting/NullSetting.md | 18 +- .../core/setting/NumberSetting.md | 22 +- .../core/setting/OptionSetting.md | 20 +- .../api/{ => javadoc}/core/setting/Setting.md | 36 +- .../core/setting/SettingCommand.md | 4 +- .../core/setting/StringSetting.md | 18 +- .../{ => javadoc}/core/setting/ValueHolder.md | 2 +- .../{ => javadoc}/core/utils/ColorUtils.md | 2 +- docs/api/{ => javadoc}/core/utils/IOUtils.md | 2 +- .../api/{ => javadoc}/core/utils/MathUtils.md | 2 +- docs/api/{ => javadoc}/core/utils/Pair.md | 2 +- .../{ => javadoc}/core/utils/StringUtils.md | 2 +- docs/api/{ => javadoc}/core/utils/Timer.md | 2 +- .../{ => javadoc}/core/utils/TriConsumer.md | 2 +- docs/api/{ => javadoc}/core/utils/Version.md | 4 +- docusaurus.config.js | 14 +- package-lock.json | 504 ++++++++++++++++++ package.json | 1 + 377 files changed, 1705 insertions(+), 1059 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/modules.xml create mode 100644 .idea/rusherhack-documentation.iml create mode 100644 .idea/vcs.xml delete mode 100644 docs/api/client/api/events/client/input/Move.md delete mode 100644 docs/api/client/api/events/internal/PostInit.md delete mode 100644 docs/api/client/api/events/internal/Unload.md delete mode 100644 docs/api/client/api/events/world/Unload.md delete mode 100644 docs/api/client/api/plugin/Plugin.md delete mode 100644 docs/api/core/command/annotations/CommandExecutor.md create mode 100644 docs/api/guides/plugindev.mdx create mode 100644 docs/api/guides/resources.mdx create mode 100644 docs/api/guides/tutorial/installing-project.mdx rename docs/api/{ => javadoc}/client/api/Globals.md (76%) rename docs/api/{ => javadoc}/client/api/IRusherHack.md (53%) rename docs/api/{ => javadoc}/client/api/RusherHackAPI.md (63%) rename docs/api/{ => javadoc}/client/api/accessors/client/IMixinClientInput.md (71%) rename docs/api/{ => javadoc}/client/api/accessors/client/IMixinConnection.md (87%) rename docs/api/{ => javadoc}/client/api/accessors/client/IMixinKeyMapping.md (76%) rename docs/api/{ => javadoc}/client/api/accessors/client/IMixinMinecraft.md (92%) rename docs/api/{ => javadoc}/client/api/accessors/client/IMixinMultiPlayerGameMode.md (92%) rename docs/api/{ => javadoc}/client/api/accessors/client/IMixinOptions.md (69%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinAbstractArrow.md (79%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinAbstractClientPlayer.md (78%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinEntity.md (93%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinFireworkRocketEntity.md (85%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinFishingHook.md (77%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinLivingEntity.md (89%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinLocalPlayer.md (93%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinPlayerInfo.md (73%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinProjectile.md (76%) rename docs/api/{ => javadoc}/client/api/accessors/entity/IMixinThrowableProjectile.md (78%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinAbstractContainerScreen.md (85%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinAbstractCraftingMenu.md (79%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinAbstractSignEditScreen.md (78%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinBossHealthOverlay.md (83%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md (74%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md (74%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinChatComponent.md (90%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinDisconnectedScreen.md (79%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinGui.md (77%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinMerchantMenu.md (73%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinMerchantScreen.md (88%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinPauseScreen.md (70%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinPlayerTabOverlay.md (81%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinScreen.md (86%) rename docs/api/{ => javadoc}/client/api/accessors/gui/IMixinShulkerBoxMenu.md (74%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinClientPacketListener.md (88%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinClientboundExplodePacket.md (74%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md (73%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md (75%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinClientboundSetTimePacket.md (68%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md (72%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinConnectionProtocol.md (64%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinServerboundInteractPacket.md (76%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md (82%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md (77%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md (70%) rename docs/api/{ => javadoc}/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md (76%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinBufferBuilder.md (90%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinByteBufferBuilder.md (77%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinCamera.md (79%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinGameRenderer.md (89%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinGlDevice.md (76%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinGuiGraphics.md (86%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinLevelRenderer.md (78%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinMapTextureManager.md (77%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md (78%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinPoseStack.md (83%) rename docs/api/{ => javadoc}/client/api/accessors/render/IMixinRenderType.md (75%) rename docs/api/{ => javadoc}/client/api/accessors/world/IMixinBaseSpawner.md (78%) rename docs/api/{ => javadoc}/client/api/accessors/world/IMixinBeaconBlockEntity.md (77%) rename docs/api/{ => javadoc}/client/api/accessors/world/IMixinBucketItem.md (73%) rename docs/api/{ => javadoc}/client/api/accessors/world/IMixinClientChunkCache.md (75%) rename docs/api/{ => javadoc}/client/api/accessors/world/IMixinClientLevel.md (78%) rename docs/api/{ => javadoc}/client/api/accessors/world/IMixinInstrumentItem.md (83%) rename docs/api/{ => javadoc}/client/api/accessors/world/IMixinLevel.md (87%) rename docs/api/{ => javadoc}/client/api/accessors/world/IMixinPalettedContainer.md (75%) rename docs/api/{ => javadoc}/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md (74%) rename docs/api/{ => javadoc}/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md (79%) rename docs/api/{ => javadoc}/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md (78%) rename docs/api/{ => javadoc}/client/api/accessors/world/level/storage/loot/IMixinLootPool.md (85%) rename docs/api/{ => javadoc}/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md (81%) rename docs/api/{ => javadoc}/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md (77%) rename docs/api/{ => javadoc}/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md (77%) rename docs/api/{ => javadoc}/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md (76%) rename docs/api/{ => javadoc}/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md (73%) rename docs/api/{ => javadoc}/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md (76%) rename docs/api/{ => javadoc}/client/api/bind/IBindManager.md (73%) rename docs/api/{ => javadoc}/client/api/bind/key/GLFWConstants.md (93%) rename docs/api/{ => javadoc}/client/api/bind/key/GLFWKey.md (86%) rename docs/api/{ => javadoc}/client/api/bind/key/KeyboardKey.md (85%) rename docs/api/{ => javadoc}/client/api/bind/key/MouseKey.md (86%) rename docs/api/{ => javadoc}/client/api/config/Configuration.md (88%) rename docs/api/{ => javadoc}/client/api/config/JsonConfiguration.md (67%) rename docs/api/{ => javadoc}/client/api/config/TextConfiguration.md (66%) rename docs/api/{ => javadoc}/client/api/events/client/EventQuit.md (73%) rename docs/api/{ => javadoc}/client/api/events/client/EventTimerSpeed.md (91%) rename docs/api/{ => javadoc}/client/api/events/client/EventUpdate.md (82%) rename docs/api/{ => javadoc}/client/api/events/client/Reason.md (61%) rename docs/api/{ => javadoc}/client/api/events/client/chat/EventAddChat.md (85%) rename docs/api/{ => javadoc}/client/api/events/client/chat/EventChatCommand.md (87%) rename docs/api/{ => javadoc}/client/api/events/client/chat/EventChatMessage.md (86%) rename docs/api/{ => javadoc}/client/api/events/client/input/EventInputTick.md (87%) rename docs/api/{ => javadoc}/client/api/events/client/input/EventKeyboard.md (95%) rename docs/api/{ => javadoc}/client/api/events/client/input/EventMouse.md (91%) rename docs/api/{ => javadoc}/client/api/events/client/input/Key.md (87%) create mode 100644 docs/api/javadoc/client/api/events/client/input/Move.md rename docs/api/{ => javadoc}/client/api/events/client/input/Scroll.md (81%) rename docs/api/{ => javadoc}/client/api/events/client/internal/EventNotification.md (84%) rename docs/api/{ => javadoc}/client/api/events/client/screen/BuildButtons.md (77%) rename docs/api/{ => javadoc}/client/api/events/client/screen/Change.md (88%) rename docs/api/{ => javadoc}/client/api/events/client/screen/EventResizeDisplay.md (69%) rename docs/api/{ => javadoc}/client/api/events/client/screen/EventScreen.md (81%) rename docs/api/{ => javadoc}/client/api/events/client/screen/Initialize.md (64%) rename docs/api/{ => javadoc}/client/api/events/internal/EventBaritoneControl.md (68%) rename docs/api/{ => javadoc}/client/api/events/internal/EventCommand.md (92%) rename docs/api/{ => javadoc}/client/api/events/internal/EventKeybindPress.md (79%) rename docs/api/{ => javadoc}/client/api/events/internal/EventRusherHack.md (70%) create mode 100644 docs/api/javadoc/client/api/events/internal/PostInit.md rename docs/api/{ => javadoc}/client/api/events/internal/Type.md (60%) create mode 100644 docs/api/javadoc/client/api/events/internal/Unload.md rename docs/api/{ => javadoc}/client/api/events/network/Action.md (59%) rename docs/api/{ => javadoc}/client/api/events/network/EventPacket.md (86%) rename docs/api/{ => javadoc}/client/api/events/network/EventPlayerConnection.md (82%) rename docs/api/{ => javadoc}/client/api/events/network/Receive.md (53%) rename docs/api/{ => javadoc}/client/api/events/network/Send.md (52%) rename docs/api/{ => javadoc}/client/api/events/player/Action.md (65%) rename docs/api/{ => javadoc}/client/api/events/player/EventInteract.md (85%) rename docs/api/{ => javadoc}/client/api/events/player/EventMove.md (95%) rename docs/api/{ => javadoc}/client/api/events/player/EventPlayerUpdate.md (97%) rename docs/api/{ => javadoc}/client/api/events/player/EventTravel.md (84%) rename docs/api/{ => javadoc}/client/api/events/player/FallOnBlock.md (71%) rename docs/api/{ => javadoc}/client/api/events/player/Mount.md (69%) rename docs/api/{ => javadoc}/client/api/events/render/Armor.md (59%) rename docs/api/{ => javadoc}/client/api/events/render/Background.md (86%) rename docs/api/{ => javadoc}/client/api/events/render/Check.md (89%) rename docs/api/{ => javadoc}/client/api/events/render/EventRender.md (88%) rename docs/api/{ => javadoc}/client/api/events/render/EventRender2D.md (68%) rename docs/api/{ => javadoc}/client/api/events/render/EventRender3D.md (64%) rename docs/api/{ => javadoc}/client/api/events/render/EventRenderBlockEntity.md (96%) rename docs/api/{ => javadoc}/client/api/events/render/EventRenderEntity.md (97%) rename docs/api/{ => javadoc}/client/api/events/render/EventRenderScreen.md (95%) rename docs/api/{ => javadoc}/client/api/events/render/ItemFrameParts.md (59%) rename docs/api/{ => javadoc}/client/api/events/render/Nametag.md (94%) rename docs/api/{ => javadoc}/client/api/events/render/Part.md (59%) rename docs/api/{ => javadoc}/client/api/events/render/PlayerRotations.md (91%) rename docs/api/{ => javadoc}/client/api/events/world/Add.md (65%) rename docs/api/{ => javadoc}/client/api/events/world/EventChunk.md (84%) rename docs/api/{ => javadoc}/client/api/events/world/EventEntity.md (84%) rename docs/api/{ => javadoc}/client/api/events/world/EventLoadWorld.md (79%) rename docs/api/{ => javadoc}/client/api/events/world/Load.md (75%) rename docs/api/{ => javadoc}/client/api/events/world/Remove.md (76%) create mode 100644 docs/api/javadoc/client/api/events/world/Unload.md rename docs/api/{ => javadoc}/client/api/feature/command/Command.md (56%) rename docs/api/{ => javadoc}/client/api/feature/command/FeatureCommand.md (60%) rename docs/api/{ => javadoc}/client/api/feature/command/ModuleCommand.md (61%) rename docs/api/{ => javadoc}/client/api/feature/command/ToggleableFeatureCommand.md (75%) rename docs/api/{ => javadoc}/client/api/feature/command/arg/BlockReference.md (70%) rename docs/api/{ => javadoc}/client/api/feature/command/arg/EnchantReference.md (73%) rename docs/api/{ => javadoc}/client/api/feature/command/arg/ItemReference.md (70%) rename docs/api/{ => javadoc}/client/api/feature/command/arg/PlayerReference.md (63%) rename docs/api/{ => javadoc}/client/api/feature/hud/Alignment.md (71%) rename docs/api/{ => javadoc}/client/api/feature/hud/ColorMode.md (73%) rename docs/api/{ => javadoc}/client/api/feature/hud/HudElement.md (80%) rename docs/api/{ => javadoc}/client/api/feature/hud/IHudElement.md (66%) rename docs/api/{ => javadoc}/client/api/feature/hud/ListHudElement.md (72%) rename docs/api/{ => javadoc}/client/api/feature/hud/ListItem.md (81%) rename docs/api/{ => javadoc}/client/api/feature/hud/ResizeableHudElement.md (84%) rename docs/api/{ => javadoc}/client/api/feature/hud/ShortListHudElement.md (74%) rename docs/api/{ => javadoc}/client/api/feature/hud/SnapPoint.md (90%) rename docs/api/{ => javadoc}/client/api/feature/hud/SortingMode.md (77%) rename docs/api/{ => javadoc}/client/api/feature/hud/TextAxis.md (59%) rename docs/api/{ => javadoc}/client/api/feature/hud/TextHudElement.md (76%) rename docs/api/{ => javadoc}/client/api/feature/module/IModule.md (65%) rename docs/api/{ => javadoc}/client/api/feature/module/Module.md (84%) rename docs/api/{ => javadoc}/client/api/feature/module/ModuleCategory.md (55%) rename docs/api/{ => javadoc}/client/api/feature/module/ToggleableModule.md (85%) rename docs/api/{ => javadoc}/client/api/feature/window/PinnableWindow.md (80%) rename docs/api/{ => javadoc}/client/api/feature/window/PopupWindow.md (72%) rename docs/api/{ => javadoc}/client/api/feature/window/ResizeableWindow.md (92%) rename docs/api/{ => javadoc}/client/api/feature/window/Window.md (84%) rename docs/api/{ => javadoc}/client/api/plugin/IPlugin.md (76%) create mode 100644 docs/api/javadoc/client/api/plugin/Plugin.md rename docs/api/{ => javadoc}/client/api/render/DrawMode.md (58%) rename docs/api/{ => javadoc}/client/api/render/IRenderable2D.md (64%) rename docs/api/{ => javadoc}/client/api/render/IRenderer2D.md (93%) rename docs/api/{ => javadoc}/client/api/render/IRenderer3D.md (98%) rename docs/api/{ => javadoc}/client/api/render/IScissorable.md (84%) rename docs/api/{ => javadoc}/client/api/render/RenderContext.md (75%) rename docs/api/{ => javadoc}/client/api/render/font/IFontRenderer.md (96%) rename docs/api/{ => javadoc}/client/api/render/graphic/AbstractGraphic.md (90%) rename docs/api/{ => javadoc}/client/api/render/graphic/IGraphic.md (94%) rename docs/api/{ => javadoc}/client/api/render/graphic/TextureGraphic.md (65%) rename docs/api/{ => javadoc}/client/api/render/graphic/VectorGraphic.md (79%) rename docs/api/{ => javadoc}/client/api/setting/BindSetting.md (66%) rename docs/api/{ => javadoc}/client/api/setting/BlockListSetting.md (78%) rename docs/api/{ => javadoc}/client/api/setting/ColorSetting.md (83%) rename docs/api/{ => javadoc}/client/api/setting/EntityTypeListSetting.md (79%) rename docs/api/{ => javadoc}/client/api/setting/ItemListSetting.md (78%) rename docs/api/{ => javadoc}/client/api/setting/ModeSetting.md (66%) rename docs/api/{ => javadoc}/client/api/setting/RainbowMode.md (67%) rename docs/api/{ => javadoc}/client/api/system/Accessor.md (77%) rename docs/api/{ => javadoc}/client/api/system/ColorMode.md (66%) rename docs/api/{ => javadoc}/client/api/system/Colors.md (85%) rename docs/api/{ => javadoc}/client/api/system/Entities.md (93%) rename docs/api/{ => javadoc}/client/api/system/Fonts.md (63%) rename docs/api/{ => javadoc}/client/api/system/IChunkProcessor.md (90%) rename docs/api/{ => javadoc}/client/api/system/IConfigManager.md (92%) rename docs/api/{ => javadoc}/client/api/system/IFieldRegistry.md (90%) rename docs/api/{ => javadoc}/client/api/system/IHudManager.md (89%) rename docs/api/{ => javadoc}/client/api/system/IInteractions.md (97%) rename docs/api/{ => javadoc}/client/api/system/INotificationManager.md (90%) rename docs/api/{ => javadoc}/client/api/system/IRelationManager.md (83%) rename docs/api/{ => javadoc}/client/api/system/IRotationManager.md (96%) rename docs/api/{ => javadoc}/client/api/system/IRusherHackRegistry.md (65%) rename docs/api/{ => javadoc}/client/api/system/IServerState.md (97%) rename docs/api/{ => javadoc}/client/api/system/IWindowManager.md (60%) rename docs/api/{ => javadoc}/client/api/system/Processee.md (88%) rename docs/api/{ => javadoc}/client/api/system/waypoint/IWaypointManager.md (71%) rename docs/api/{ => javadoc}/client/api/system/waypoint/Waypoint.md (82%) rename docs/api/{ => javadoc}/client/api/ui/ElementBase.md (94%) rename docs/api/{ => javadoc}/client/api/ui/ElementHandlerBase.md (92%) rename docs/api/{ => javadoc}/client/api/ui/ScaledElementBase.md (75%) rename docs/api/{ => javadoc}/client/api/ui/hud/HudHandlerBase.md (86%) rename docs/api/{ => javadoc}/client/api/ui/notification/RenderableNotification.md (72%) rename docs/api/{ => javadoc}/client/api/ui/panel/IPanelItem.md (81%) rename docs/api/{ => javadoc}/client/api/ui/panel/PanelBase.md (72%) rename docs/api/{ => javadoc}/client/api/ui/panel/PanelHandlerBase.md (83%) rename docs/api/{ => javadoc}/client/api/ui/panel/PanelItemBase.md (69%) rename docs/api/{ => javadoc}/client/api/ui/theme/ITheme.md (70%) rename docs/api/{ => javadoc}/client/api/ui/theme/IThemeManager.md (67%) rename docs/api/{ => javadoc}/client/api/ui/theme/ThemeBase.md (68%) rename docs/api/{ => javadoc}/client/api/ui/window/WindowContentHandlerBase.md (93%) rename docs/api/{ => javadoc}/client/api/ui/window/WindowHandlerBase.md (90%) rename docs/api/{ => javadoc}/client/api/ui/window/WindowSide.md (65%) rename docs/api/{ => javadoc}/client/api/ui/window/WindowViewHandlerBase.md (67%) rename docs/api/{ => javadoc}/client/api/ui/window/content/AnchorSide.md (62%) rename docs/api/{ => javadoc}/client/api/ui/window/content/ComboContent.md (89%) rename docs/api/{ => javadoc}/client/api/ui/window/content/ListItemContent.md (84%) rename docs/api/{ => javadoc}/client/api/ui/window/content/PaddingContent.md (89%) rename docs/api/{ => javadoc}/client/api/ui/window/content/WindowContent.md (72%) rename docs/api/{ => javadoc}/client/api/ui/window/content/component/ButtonComponent.md (89%) rename docs/api/{ => javadoc}/client/api/ui/window/content/component/CheckBoxComponent.md (93%) rename docs/api/{ => javadoc}/client/api/ui/window/content/component/ComboBoxComponent.md (94%) rename docs/api/{ => javadoc}/client/api/ui/window/content/component/ParagraphComponent.md (81%) rename docs/api/{ => javadoc}/client/api/ui/window/content/component/TextComponent.md (90%) rename docs/api/{ => javadoc}/client/api/ui/window/content/component/TextFieldComponent.md (87%) rename docs/api/{ => javadoc}/client/api/ui/window/context/ContextAction.md (57%) rename docs/api/{ => javadoc}/client/api/ui/window/view/Alignment.md (65%) rename docs/api/{ => javadoc}/client/api/ui/window/view/Column.md (87%) rename docs/api/{ => javadoc}/client/api/ui/window/view/ListItemView.md (68%) rename docs/api/{ => javadoc}/client/api/ui/window/view/ListView.md (69%) rename docs/api/{ => javadoc}/client/api/ui/window/view/RichTextComponent.md (70%) rename docs/api/{ => javadoc}/client/api/ui/window/view/RichTextView.md (73%) rename docs/api/{ => javadoc}/client/api/ui/window/view/ScrollableView.md (86%) rename docs/api/{ => javadoc}/client/api/ui/window/view/SimpleView.md (86%) rename docs/api/{ => javadoc}/client/api/ui/window/view/SplitView.md (66%) rename docs/api/{ => javadoc}/client/api/ui/window/view/TabbedView.md (77%) rename docs/api/{ => javadoc}/client/api/ui/window/view/VerticalAlignment.md (67%) rename docs/api/{ => javadoc}/client/api/ui/window/view/WindowView.md (87%) rename docs/api/{ => javadoc}/client/api/utils/BufferUtils.md (94%) rename docs/api/{ => javadoc}/client/api/utils/ChatUtils.md (89%) rename docs/api/{ => javadoc}/client/api/utils/ContainerUtils.md (94%) rename docs/api/{ => javadoc}/client/api/utils/EntityUtils.md (81%) rename docs/api/{ => javadoc}/client/api/utils/FormBuilder.md (81%) rename docs/api/{ => javadoc}/client/api/utils/InputBuilder.md (74%) rename docs/api/{ => javadoc}/client/api/utils/InputUtils.md (76%) rename docs/api/{ => javadoc}/client/api/utils/InventoryUtils.md (97%) rename docs/api/{ => javadoc}/client/api/utils/ItemUtils.md (98%) rename docs/api/{ => javadoc}/client/api/utils/PlayerUtils.md (88%) rename docs/api/{ => javadoc}/client/api/utils/RotationUtils.md (75%) rename docs/api/{ => javadoc}/client/api/utils/UUIDSerializer.md (93%) rename docs/api/{ => javadoc}/client/api/utils/WebUtils.md (96%) rename docs/api/{ => javadoc}/client/api/utils/WorldUtils.md (96%) rename docs/api/{ => javadoc}/client/api/utils/objects/Builder.md (85%) rename docs/api/{ => javadoc}/client/api/utils/objects/Dimension.md (90%) rename docs/api/{ => javadoc}/client/api/utils/objects/PlayerInput.md (92%) rename docs/api/{ => javadoc}/client/api/utils/objects/PlayerMessage.md (87%) rename docs/api/{ => javadoc}/client/api/utils/objects/PlayerRelation.md (78%) rename docs/api/{ => javadoc}/client/api/utils/objects/Scrollbar.md (92%) rename docs/api/{ => javadoc}/client/api/utils/objects/State.md (63%) rename docs/api/{ => javadoc}/client/api/utils/objects/TextField.md (96%) rename docs/api/{ => javadoc}/client/api/utils/objects/Whisper.md (74%) rename docs/api/{ => javadoc}/client/api/utils/registry/BlockRegistry.md (93%) rename docs/api/{ => javadoc}/client/api/utils/registry/EntityTypeRegistry.md (93%) rename docs/api/{ => javadoc}/client/api/utils/registry/ItemRegistry.md (93%) rename docs/api/{ => javadoc}/core/animation/Animation.md (79%) rename docs/api/{ => javadoc}/core/animation/Easing.md (95%) rename docs/api/{ => javadoc}/core/bind/BindManagerBase.md (63%) rename docs/api/{ => javadoc}/core/bind/IBindable.md (86%) rename docs/api/{ => javadoc}/core/bind/key/IKey.md (92%) rename docs/api/{ => javadoc}/core/bind/key/NullKey.md (70%) rename docs/api/{ => javadoc}/core/command/AbstractCommand.md (80%) rename docs/api/{ => javadoc}/core/command/ArgumentData.md (59%) rename docs/api/{ => javadoc}/core/command/CommandData.md (63%) rename docs/api/{ => javadoc}/core/command/CommandManager.md (56%) rename docs/api/{ => javadoc}/core/command/CommandUtils.md (95%) rename docs/api/{ => javadoc}/core/command/ICommandManager.md (67%) rename docs/api/{ => javadoc}/core/command/ICommandSource.md (87%) rename docs/api/{ => javadoc}/core/command/MethodData.md (58%) rename docs/api/{ => javadoc}/core/command/annotations/Argument.md (78%) create mode 100644 docs/api/javadoc/core/command/annotations/CommandExecutor.md rename docs/api/{ => javadoc}/core/command/argument/StringCapture.md (74%) rename docs/api/{ => javadoc}/core/command/argument/parser/IArg.md (95%) rename docs/api/{ => javadoc}/core/command/argument/parser/impl/BooleanArg.md (84%) rename docs/api/{ => javadoc}/core/command/argument/parser/impl/ColorArg.md (76%) rename docs/api/{ => javadoc}/core/command/argument/parser/impl/DoubleArg.md (64%) rename docs/api/{ => javadoc}/core/command/argument/parser/impl/EnumArg.md (76%) rename docs/api/{ => javadoc}/core/command/argument/parser/impl/IntegerArg.md (64%) rename docs/api/{ => javadoc}/core/command/argument/parser/impl/StringArg.md (64%) rename docs/api/{ => javadoc}/core/command/argument/parser/impl/StringCapturerArg.md (59%) rename docs/api/{ => javadoc}/core/command/dispatch/ICommandDispatcher.md (93%) rename docs/api/{ => javadoc}/core/command/dispatch/StringCommandDispatcher.md (74%) rename docs/api/{ => javadoc}/core/command/exceptions/ArgumentException.md (78%) rename docs/api/{ => javadoc}/core/command/exceptions/BadSyntaxException.md (78%) rename docs/api/{ => javadoc}/core/command/exceptions/CommandException.md (77%) rename docs/api/{ => javadoc}/core/command/exceptions/DispatchException.md (84%) rename docs/api/{ => javadoc}/core/command/exceptions/UnknownArgumentTypeException.md (62%) rename docs/api/{ => javadoc}/core/command/exceptions/UnknownCommandException.md (66%) rename docs/api/{ => javadoc}/core/command/exceptions/ValidationException.md (68%) rename docs/api/{ => javadoc}/core/command/processing/CommandProcessingSink.md (66%) rename docs/api/{ => javadoc}/core/command/processing/CommandProcessor.md (72%) rename docs/api/{ => javadoc}/core/command/processing/ICommandProcessor.md (84%) rename docs/api/{ => javadoc}/core/command/processing/MethodProcessor.md (76%) rename docs/api/{ => javadoc}/core/command/processing/ProcessedCommand.md (57%) rename docs/api/{ => javadoc}/core/feature/IFeature.md (78%) rename docs/api/{ => javadoc}/core/feature/IFeatureConfigurable.md (72%) rename docs/api/{ => javadoc}/core/feature/IFeatureManager.md (92%) rename docs/api/{ => javadoc}/core/interfaces/IClickable.md (78%) rename docs/api/{ => javadoc}/core/interfaces/IDraggable.md (66%) rename docs/api/{ => javadoc}/core/interfaces/IHideable.md (82%) rename docs/api/{ => javadoc}/core/interfaces/IHoverable.md (85%) rename docs/api/{ => javadoc}/core/interfaces/INamed.md (91%) rename docs/api/{ => javadoc}/core/interfaces/IPinnable.md (89%) rename docs/api/{ => javadoc}/core/interfaces/IReferenceable.md (81%) rename docs/api/{ => javadoc}/core/interfaces/IScrollable.md (78%) rename docs/api/{ => javadoc}/core/interfaces/ITickable.md (68%) rename docs/api/{ => javadoc}/core/interfaces/IToggleable.md (87%) rename docs/api/{ => javadoc}/core/interfaces/ITypeable.md (89%) rename docs/api/{ => javadoc}/core/logging/ILog.md (95%) rename docs/api/{ => javadoc}/core/logging/ILoggable.md (60%) rename docs/api/{ => javadoc}/core/logging/ILogger.md (62%) rename docs/api/{ => javadoc}/core/logging/LogFormatter.md (79%) rename docs/api/{ => javadoc}/core/logging/Logger.md (74%) rename docs/api/{ => javadoc}/core/logging/output/FileOutput.md (86%) rename docs/api/{ => javadoc}/core/notification/INotifiable.md (87%) rename docs/api/{ => javadoc}/core/notification/NotificationType.md (87%) rename docs/api/{ => javadoc}/core/notification/type/LivingNotification.md (76%) rename docs/api/{ => javadoc}/core/notification/type/Notification.md (79%) rename docs/api/{ => javadoc}/core/serialize/ISerializable.md (93%) rename docs/api/{ => javadoc}/core/serialize/JsonSerializable.md (59%) rename docs/api/{ => javadoc}/core/serialize/TextSerializable.md (59%) rename docs/api/{ => javadoc}/core/setting/BooleanSetting.md (73%) rename docs/api/{ => javadoc}/core/setting/EnumSetting.md (71%) rename docs/api/{ => javadoc}/core/setting/ListHolder.md (58%) rename docs/api/{ => javadoc}/core/setting/ListSetting.md (82%) rename docs/api/{ => javadoc}/core/setting/NullSetting.md (71%) rename docs/api/{ => javadoc}/core/setting/NumberSetting.md (75%) rename docs/api/{ => javadoc}/core/setting/OptionSetting.md (62%) rename docs/api/{ => javadoc}/core/setting/Setting.md (82%) rename docs/api/{ => javadoc}/core/setting/SettingCommand.md (74%) rename docs/api/{ => javadoc}/core/setting/StringSetting.md (80%) rename docs/api/{ => javadoc}/core/setting/ValueHolder.md (60%) rename docs/api/{ => javadoc}/core/utils/ColorUtils.md (98%) rename docs/api/{ => javadoc}/core/utils/IOUtils.md (94%) rename docs/api/{ => javadoc}/core/utils/MathUtils.md (97%) rename docs/api/{ => javadoc}/core/utils/Pair.md (89%) rename docs/api/{ => javadoc}/core/utils/StringUtils.md (93%) rename docs/api/{ => javadoc}/core/utils/Timer.md (96%) rename docs/api/{ => javadoc}/core/utils/TriConsumer.md (85%) rename docs/api/{ => javadoc}/core/utils/Version.md (94%) diff --git a/.gitignore b/.gitignore index b2d6de3..6835cd5 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,6 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +*.iml +/.idea \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..d2d01a7 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,32 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml + +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +*.iml +/.idea \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..0df4282 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/rusherhack-documentation.iml b/.idea/rusherhack-documentation.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/rusherhack-documentation.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/docs/api/client/api/events/client/input/Move.md b/docs/api/client/api/events/client/input/Move.md deleted file mode 100644 index 1852d74..0000000 --- a/docs/api/client/api/events/client/input/Move.md +++ /dev/null @@ -1,18 +0,0 @@ -# Move - -**Package:** `org.rusherhack.client.api.events.client.input` - -**Source:** `org/rusherhack/client/api/events/client/input/EventMouse.java` - -This event is called when the mouse is moved - -## Overview - -`Move` is a class that extends [EventMouse](/client/api/events/client/input/EventMouse.md). - -## Constructor - -```java -public Move(double xPos, double yPos) -``` - diff --git a/docs/api/client/api/events/internal/PostInit.md b/docs/api/client/api/events/internal/PostInit.md deleted file mode 100644 index d6a5c7d..0000000 --- a/docs/api/client/api/events/internal/PostInit.md +++ /dev/null @@ -1,12 +0,0 @@ -# PostInit - -**Package:** `org.rusherhack.client.api.events.internal` - -**Source:** `org/rusherhack/client/api/events/internal/EventRusherHack.java` - -Called after RusherHack is initialized - -## Overview - -`PostInit` is a class that extends [EventRusherHack](/client/api/events/internal/EventRusherHack.md). - diff --git a/docs/api/client/api/events/internal/Unload.md b/docs/api/client/api/events/internal/Unload.md deleted file mode 100644 index db12b77..0000000 --- a/docs/api/client/api/events/internal/Unload.md +++ /dev/null @@ -1,10 +0,0 @@ -# Unload - -**Package:** `org.rusherhack.client.api.events.internal` - -**Source:** `org/rusherhack/client/api/events/internal/EventRusherHack.java` - -## Overview - -`Unload` is a class that extends [EventRusherHack](/client/api/events/internal/EventRusherHack.md). - diff --git a/docs/api/client/api/events/world/Unload.md b/docs/api/client/api/events/world/Unload.md deleted file mode 100644 index 10613a9..0000000 --- a/docs/api/client/api/events/world/Unload.md +++ /dev/null @@ -1,16 +0,0 @@ -# Unload - -**Package:** `org.rusherhack.client.api.events.world` - -**Source:** `org/rusherhack/client/api/events/world/EventChunk.java` - -## Overview - -`Unload` is a class that extends [EventChunk](/client/api/events/world/EventChunk.md). - -## Constructor - -```java -public Unload(ChunkPos pos) -``` - diff --git a/docs/api/client/api/plugin/Plugin.md b/docs/api/client/api/plugin/Plugin.md deleted file mode 100644 index 688f7c0..0000000 --- a/docs/api/client/api/plugin/Plugin.md +++ /dev/null @@ -1,38 +0,0 @@ -# Plugin - -**Package:** `org.rusherhack.client.api.plugin` - -**Source:** `org/rusherhack/client/api/plugin/Plugin.java` - -Base implementation for [IPlugin](/client/api/plugin/IPlugin.md) -* **Author:** John200410 10/20/2023 - - - -## Overview - -`Plugin` is a class and implements [IPlugin](/client/api/plugin/IPlugin.md). - -## Constructor - -```java -public Plugin() -``` - -## Fields - -| Name | Type | Modifiers | -|------|------|----------| -| logger | [ILogger](/core/logging/ILogger.md) | protected final | - - -## Methods - -### getLogger() - -```java -public ILogger getLogger() -``` - -**Returns:** [ILogger](/core/logging/ILogger.md) - diff --git a/docs/api/core/command/annotations/CommandExecutor.md b/docs/api/core/command/annotations/CommandExecutor.md deleted file mode 100644 index 91a5aa1..0000000 --- a/docs/api/core/command/annotations/CommandExecutor.md +++ /dev/null @@ -1,19 +0,0 @@ -# CommandExecutor - -**Package:** `org.rusherhack.core.command.annotations` - -**Source:** `org/rusherhack/core/command/annotations/CommandExecutor.java` - -Annotation used on top of methods in [AbstractCommand](/core/command/AbstractCommand.md) to register the methods to be executed with the command. - - - -If the method returns a String, it will act as the output of the command. -* **Author:** John200410 12/15/2022 - - - -## Overview - -`CommandExecutor` is a annotation. - diff --git a/docs/api/guides/plugindev.mdx b/docs/api/guides/plugindev.mdx new file mode 100644 index 0000000..cdb7406 --- /dev/null +++ b/docs/api/guides/plugindev.mdx @@ -0,0 +1,19 @@ +--- +sidebar_position: 1 +--- + +# RusherHack plugin-dev guide + +:::tip +Welcome to the documentation for creating rusherhack plugins +::: + +:::tip +Before you start writing plugins, I want to advise you to learn the Java programming language (you can find useful resources [here](resources.mdx)). +::: + +:::warning +The guide assumes that you know the java programming language and how to work with Gradle. +::: + +This guide will help you create your own rusherhack plugin, help you understand the rusherhack API, and much more. You can start creating your own plugin by getting acquainted with [resources](resources.mdx) or by starting with the creation of [project](tutorial/installing-project.mdx) \ No newline at end of file diff --git a/docs/api/guides/resources.mdx b/docs/api/guides/resources.mdx new file mode 100644 index 0000000..7ab9dec --- /dev/null +++ b/docs/api/guides/resources.mdx @@ -0,0 +1,20 @@ +# Developer resources + +:::info +I recommend reading the following list of resources that can help you learn Java/Fabric modding +::: + +## Learning Java + +| Resource | Description | Language | +|:-----------------------------------------------------------------------------------------------------|:--------------------------------------------------|:------------------------| +| **[Java Basics Playlist](https://www.youtube.com/playlist?list=PLZPZq0r_RZOOj_NOZYq_R2PECIMglLemc)** | YouTube playlist with Java basics for beginners. | `en` | +| **[Fabric Documentation](https://fabricmc.net/wiki/doku.php)** | Official Fabric Wiki (foundation for RusherHack). | `en/ru/es/jp/de/ch/kor` | +| **[Baeldung](https://www.baeldung.com/)** | Detailed Java guides and best practices. | `en` | + +## Learning RusherHack API + +| Resource | Description | +|:--------------------------------------------------------------------------|:------------------------------------------------------------------| +| **[RusherHack Javadoc](https://rusherhack.org/api-javadocs/)** | Official technical documentation for all API classes and methods. | +| **[Example Plugin](https://github.com/RusherDevelopment/example-plugin)** | Official template to jumpstart your plugin development. | \ No newline at end of file diff --git a/docs/api/guides/tutorial/installing-project.mdx b/docs/api/guides/tutorial/installing-project.mdx new file mode 100644 index 0000000..91f94cd --- /dev/null +++ b/docs/api/guides/tutorial/installing-project.mdx @@ -0,0 +1,26 @@ +# Project Setup + +## Step 1. Install the JDK +To program in java, you need JDK. +List of JDK for minecraft versions: + +| Minecraft Version | Required JDK | Download Link | +|:---------------------|:-------------|:-----------------------------------------------------------------------------------------| +| **1.20.1 — 1.20.4** | **JDK 17** | [Azul Zulu JDK 17](https://www.azul.com/downloads/?version=java-17-lts&package=jdk#zulu) | +| **1.20.5 — 1.21.4+** | **JDK 21** | [Azul Zulu JDK 21](https://www.azul.com/downloads/?version=java-21-lts&package=jdk#zulu) | + +## Step 2. Initial setup and launch of rusherHack +We recommend using the standard [https://github.com/RusherDevelopment/example-plugin ](example-plugin) + +1. Clone the source code of the standard plugin: +```bash +git clone https://github.com/RusherDevelopment/example-plugin +``` +2. Create a lib folder and place the rusherhack-loader there.jar of the version that you write your plugin for +3. Write in the console + +:::tip +If you use IntelliJ IDEA, you can also run the runPlugin task from the Gradle side panel: Tasks -> build -> runPlugin. +::: + +4. Verify that the plugin has been downloaded by entering the `*plugins` command in the chat. You should see that the `'example-plugin` plugin will be loaded. \ No newline at end of file diff --git a/docs/api/index.mdx b/docs/api/index.mdx index da0b2c2..2e9e5ab 100644 --- a/docs/api/index.mdx +++ b/docs/api/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- # RusherHack API docs diff --git a/docs/api/client/api/Globals.md b/docs/api/javadoc/client/api/Globals.md similarity index 76% rename from docs/api/client/api/Globals.md rename to docs/api/javadoc/client/api/Globals.md index 42bda1b..89b7c77 100644 --- a/docs/api/client/api/Globals.md +++ b/docs/api/javadoc/client/api/Globals.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api` -**Source:** `org/rusherhack/client/api/Globals.java` +**Source:** `org/rusherhack/api/javadoc/client/api/Globals.java` **Author:** John200410 diff --git a/docs/api/client/api/IRusherHack.md b/docs/api/javadoc/client/api/IRusherHack.md similarity index 53% rename from docs/api/client/api/IRusherHack.md rename to docs/api/javadoc/client/api/IRusherHack.md index bc30c8c..8d62e7c 100644 --- a/docs/api/client/api/IRusherHack.md +++ b/docs/api/javadoc/client/api/IRusherHack.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api` -**Source:** `org/rusherhack/client/api/IRusherHack.java` +**Source:** `org/rusherhack/api/javadoc/client/api/IRusherHack.java` **Author:** John200410 2/23/2023 @@ -28,7 +28,7 @@ IConfigManager getConfigManager() ``` -**Returns:** [IConfigManager](/client/api/system/IConfigManager.md) +**Returns:** [IConfigManager](/api/javadoc/client/api/system/IConfigManager.md) ### getRegistry() @@ -36,7 +36,7 @@ IRusherHackRegistry getRegistry() ``` -**Returns:** [IRusherHackRegistry](/client/api/system/IRusherHackRegistry.md) +**Returns:** [IRusherHackRegistry](/api/javadoc/client/api/system/IRusherHackRegistry.md) ### getFieldRegistry() @@ -44,7 +44,7 @@ IFieldRegistry getFieldRegistry() ``` -**Returns:** [IFieldRegistry](/client/api/system/IFieldRegistry.md) +**Returns:** [IFieldRegistry](/api/javadoc/client/api/system/IFieldRegistry.md) ### getModuleManager() @@ -52,7 +52,7 @@ IFeatureManager getModuleManager() ``` -**Returns:** [IFeatureManager](/core/feature/IFeatureManager.md)<[IModule](/client/api/feature/module/IModule.md)> +**Returns:** [IFeatureManager](/api/javadoc/core/feature/IFeatureManager.md)<[IModule](/api/javadoc/client/api/feature/module/IModule.md)> ### getCommandManager() @@ -60,7 +60,7 @@ ICommandManager getCommandManager() ``` -**Returns:** [ICommandManager](/core/command/ICommandManager.md) +**Returns:** [ICommandManager](/api/javadoc/core/command/ICommandManager.md) ### getHudManager() @@ -68,7 +68,7 @@ IHudManager getHudManager() ``` -**Returns:** [IHudManager](/client/api/system/IHudManager.md) +**Returns:** [IHudManager](/api/javadoc/client/api/system/IHudManager.md) ### getWindowManager() @@ -76,7 +76,7 @@ IWindowManager getWindowManager() ``` -**Returns:** [IWindowManager](/client/api/system/IWindowManager.md) +**Returns:** [IWindowManager](/api/javadoc/client/api/system/IWindowManager.md) ### getThemeManager() @@ -84,7 +84,7 @@ IThemeManager getThemeManager() ``` -**Returns:** [IThemeManager](/client/api/ui/theme/IThemeManager.md) +**Returns:** [IThemeManager](/api/javadoc/client/api/ui/theme/IThemeManager.md) ### getBindManager() @@ -92,7 +92,7 @@ IBindManager getBindManager() ``` -**Returns:** [IBindManager](/client/api/bind/IBindManager.md) +**Returns:** [IBindManager](/api/javadoc/client/api/bind/IBindManager.md) ### getRelationManager() @@ -100,7 +100,7 @@ IRelationManager getRelationManager() ``` -**Returns:** [IRelationManager](/client/api/system/IRelationManager.md) +**Returns:** [IRelationManager](/api/javadoc/client/api/system/IRelationManager.md) ### getWaypointManager() @@ -108,7 +108,7 @@ IWaypointManager getWaypointManager() ``` -**Returns:** [IWaypointManager](/client/api/system/waypoint/IWaypointManager.md) +**Returns:** [IWaypointManager](/api/javadoc/client/api/system/waypoint/IWaypointManager.md) ### getRotationManager() @@ -116,7 +116,7 @@ IRotationManager getRotationManager() ``` -**Returns:** [IRotationManager](/client/api/system/IRotationManager.md) +**Returns:** [IRotationManager](/api/javadoc/client/api/system/IRotationManager.md) ### getNotificationManager() @@ -124,7 +124,7 @@ INotificationManager getNotificationManager() ``` -**Returns:** [INotificationManager](/client/api/system/INotificationManager.md) +**Returns:** [INotificationManager](/api/javadoc/client/api/system/INotificationManager.md) ### getChunkProcessor() @@ -132,7 +132,7 @@ IChunkProcessor getChunkProcessor() ``` -**Returns:** [IChunkProcessor](/client/api/system/IChunkProcessor.md) +**Returns:** [IChunkProcessor](/api/javadoc/client/api/system/IChunkProcessor.md) ### getServerState() @@ -140,7 +140,7 @@ IServerState getServerState() ``` -**Returns:** [IServerState](/client/api/system/IServerState.md) +**Returns:** [IServerState](/api/javadoc/client/api/system/IServerState.md) ### interactions() @@ -148,7 +148,7 @@ IInteractions interactions() ``` -**Returns:** [IInteractions](/client/api/system/IInteractions.md) +**Returns:** [IInteractions](/api/javadoc/client/api/system/IInteractions.md) ### createLogger() @@ -156,7 +156,7 @@ ILogger createLogger(String name) ``` -**Returns:** [ILogger](/core/logging/ILogger.md) +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) ### getVersion() @@ -180,7 +180,7 @@ IRenderer2D getRenderer2D() ``` -**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) +**Returns:** [IRenderer2D](/api/javadoc/client/api/render/IRenderer2D.md) ### getRenderer3D() @@ -188,7 +188,7 @@ IRenderer3D getRenderer3D() ``` -**Returns:** [IRenderer3D](/client/api/render/IRenderer3D.md) +**Returns:** [IRenderer3D](/api/javadoc/client/api/render/IRenderer3D.md) ### fonts() @@ -196,7 +196,7 @@ Fonts fonts() ``` -**Returns:** [Fonts](/client/api/system/Fonts.md) +**Returns:** [Fonts](/api/javadoc/client/api/system/Fonts.md) ### colors() @@ -204,7 +204,7 @@ Colors colors() ``` -**Returns:** [Colors](/client/api/system/Colors.md) +**Returns:** [Colors](/api/javadoc/client/api/system/Colors.md) ### entities() @@ -212,7 +212,7 @@ Entities entities() ``` -**Returns:** [Entities](/client/api/system/Entities.md) +**Returns:** [Entities](/api/javadoc/client/api/system/Entities.md) ### getLanguage() diff --git a/docs/api/client/api/RusherHackAPI.md b/docs/api/javadoc/client/api/RusherHackAPI.md similarity index 63% rename from docs/api/client/api/RusherHackAPI.md rename to docs/api/javadoc/client/api/RusherHackAPI.md index aaf7c63..014a20d 100644 --- a/docs/api/client/api/RusherHackAPI.md +++ b/docs/api/javadoc/client/api/RusherHackAPI.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api` -**Source:** `org/rusherhack/client/api/RusherHackAPI.java` +**Source:** `org/rusherhack/api/javadoc/client/api/RusherHackAPI.java` RusherHack public API accessor TODO: javadocs @@ -19,7 +19,7 @@ TODO: javadocs | Name | Type | Modifiers | |------|------|----------| | PLUGINS_ENABLED | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | public static final | -| rusherhack | [IRusherHack](/client/api/IRusherHack.md) | private static | +| rusherhack | [IRusherHack](/api/javadoc/client/api/IRusherHack.md) | private static | ## Methods @@ -44,7 +44,7 @@ public static ILogger createLogger(String name) Creates a logger with the specified name -**Returns:** [ILogger](/core/logging/ILogger.md) +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) ### getVersion() @@ -76,7 +76,7 @@ public static Path getConfigPath() public static IConfigManager getConfigManager() ``` -**Returns:** [IConfigManager](/client/api/system/IConfigManager.md) +**Returns:** [IConfigManager](/api/javadoc/client/api/system/IConfigManager.md) ### getRegistry() @@ -84,7 +84,7 @@ public static IConfigManager getConfigManager() public static IRusherHackRegistry getRegistry() ``` -**Returns:** [IRusherHackRegistry](/client/api/system/IRusherHackRegistry.md) +**Returns:** [IRusherHackRegistry](/api/javadoc/client/api/system/IRusherHackRegistry.md) ### getFieldRegistry() @@ -92,7 +92,7 @@ public static IRusherHackRegistry getRegistry() public static IFieldRegistry getFieldRegistry() ``` -**Returns:** [IFieldRegistry](/client/api/system/IFieldRegistry.md) +**Returns:** [IFieldRegistry](/api/javadoc/client/api/system/IFieldRegistry.md) ### getModuleManager() @@ -100,7 +100,7 @@ public static IFieldRegistry getFieldRegistry() public static IFeatureManager getModuleManager() ``` -**Returns:** [IFeatureManager](/core/feature/IFeatureManager.md)<[IModule](/client/api/feature/module/IModule.md)> +**Returns:** [IFeatureManager](/api/javadoc/core/feature/IFeatureManager.md)<[IModule](/api/javadoc/client/api/feature/module/IModule.md)> ### getCommandManager() @@ -108,7 +108,7 @@ public static IFeatureManager getModuleManager() public static ICommandManager getCommandManager() ``` -**Returns:** [ICommandManager](/core/command/ICommandManager.md) +**Returns:** [ICommandManager](/api/javadoc/core/command/ICommandManager.md) ### getHudManager() @@ -116,7 +116,7 @@ public static ICommandManager getCommandManager() public static IHudManager getHudManager() ``` -**Returns:** [IHudManager](/client/api/system/IHudManager.md) +**Returns:** [IHudManager](/api/javadoc/client/api/system/IHudManager.md) ### getWindowManager() @@ -124,7 +124,7 @@ public static IHudManager getHudManager() public static IWindowManager getWindowManager() ``` -**Returns:** [IWindowManager](/client/api/system/IWindowManager.md) +**Returns:** [IWindowManager](/api/javadoc/client/api/system/IWindowManager.md) ### getThemeManager() @@ -132,7 +132,7 @@ public static IWindowManager getWindowManager() public static IThemeManager getThemeManager() ``` -**Returns:** [IThemeManager](/client/api/ui/theme/IThemeManager.md) +**Returns:** [IThemeManager](/api/javadoc/client/api/ui/theme/IThemeManager.md) ### getBindManager() @@ -140,7 +140,7 @@ public static IThemeManager getThemeManager() public static IBindManager getBindManager() ``` -**Returns:** [IBindManager](/client/api/bind/IBindManager.md) +**Returns:** [IBindManager](/api/javadoc/client/api/bind/IBindManager.md) ### getRelationManager() @@ -148,7 +148,7 @@ public static IBindManager getBindManager() public static IRelationManager getRelationManager() ``` -**Returns:** [IRelationManager](/client/api/system/IRelationManager.md) +**Returns:** [IRelationManager](/api/javadoc/client/api/system/IRelationManager.md) ### getWaypointManager() @@ -156,7 +156,7 @@ public static IRelationManager getRelationManager() public static IWaypointManager getWaypointManager() ``` -**Returns:** [IWaypointManager](/client/api/system/waypoint/IWaypointManager.md) +**Returns:** [IWaypointManager](/api/javadoc/client/api/system/waypoint/IWaypointManager.md) ### getRotationManager() @@ -164,7 +164,7 @@ public static IWaypointManager getWaypointManager() public static IRotationManager getRotationManager() ``` -**Returns:** [IRotationManager](/client/api/system/IRotationManager.md) +**Returns:** [IRotationManager](/api/javadoc/client/api/system/IRotationManager.md) ### getNotificationManager() @@ -172,7 +172,7 @@ public static IRotationManager getRotationManager() public static INotificationManager getNotificationManager() ``` -**Returns:** [INotificationManager](/client/api/system/INotificationManager.md) +**Returns:** [INotificationManager](/api/javadoc/client/api/system/INotificationManager.md) ### getChunkProcessor() @@ -180,7 +180,7 @@ public static INotificationManager getNotificationManager() public static IChunkProcessor getChunkProcessor() ``` -**Returns:** [IChunkProcessor](/client/api/system/IChunkProcessor.md) +**Returns:** [IChunkProcessor](/api/javadoc/client/api/system/IChunkProcessor.md) ### getServerState() @@ -188,7 +188,7 @@ public static IChunkProcessor getChunkProcessor() public static IServerState getServerState() ``` -**Returns:** [IServerState](/client/api/system/IServerState.md) +**Returns:** [IServerState](/api/javadoc/client/api/system/IServerState.md) ### interactions() @@ -196,7 +196,7 @@ public static IServerState getServerState() public static IInteractions interactions() ``` -**Returns:** [IInteractions](/client/api/system/IInteractions.md) +**Returns:** [IInteractions](/api/javadoc/client/api/system/IInteractions.md) ### getRenderer2D() @@ -204,7 +204,7 @@ public static IInteractions interactions() public static IRenderer2D getRenderer2D() ``` -**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) +**Returns:** [IRenderer2D](/api/javadoc/client/api/render/IRenderer2D.md) ### getRenderer3D() @@ -212,7 +212,7 @@ public static IRenderer2D getRenderer2D() public static IRenderer3D getRenderer3D() ``` -**Returns:** [IRenderer3D](/client/api/render/IRenderer3D.md) +**Returns:** [IRenderer3D](/api/javadoc/client/api/render/IRenderer3D.md) ### fonts() @@ -220,7 +220,7 @@ public static IRenderer3D getRenderer3D() public static Fonts fonts() ``` -**Returns:** [Fonts](/client/api/system/Fonts.md) +**Returns:** [Fonts](/api/javadoc/client/api/system/Fonts.md) ### colors() @@ -228,7 +228,7 @@ public static Fonts fonts() public static Colors colors() ``` -**Returns:** [Colors](/client/api/system/Colors.md) +**Returns:** [Colors](/api/javadoc/client/api/system/Colors.md) ### entities() @@ -236,7 +236,7 @@ public static Colors colors() public static Entities entities() ``` -**Returns:** [Entities](/client/api/system/Entities.md) +**Returns:** [Entities](/api/javadoc/client/api/system/Entities.md) ### schedule() diff --git a/docs/api/client/api/accessors/client/IMixinClientInput.md b/docs/api/javadoc/client/api/accessors/client/IMixinClientInput.md similarity index 71% rename from docs/api/client/api/accessors/client/IMixinClientInput.md rename to docs/api/javadoc/client/api/accessors/client/IMixinClientInput.md index dd7fbae..6c1cc4a 100644 --- a/docs/api/client/api/accessors/client/IMixinClientInput.md +++ b/docs/api/javadoc/client/api/accessors/client/IMixinClientInput.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.client` -**Source:** `org/rusherhack/client/api/accessors/client/IMixinClientInput.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/api/javadoc/client/IMixinClientInput.java` **Author:** john@rusherhack.org 6/2/2025 diff --git a/docs/api/client/api/accessors/client/IMixinConnection.md b/docs/api/javadoc/client/api/accessors/client/IMixinConnection.md similarity index 87% rename from docs/api/client/api/accessors/client/IMixinConnection.md rename to docs/api/javadoc/client/api/accessors/client/IMixinConnection.md index 08309b9..580ff2a 100644 --- a/docs/api/client/api/accessors/client/IMixinConnection.md +++ b/docs/api/javadoc/client/api/accessors/client/IMixinConnection.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.client` -**Source:** `org/rusherhack/client/api/accessors/client/IMixinConnection.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/api/javadoc/client/IMixinConnection.java` **Author:** John200410 9/15/2023 diff --git a/docs/api/client/api/accessors/client/IMixinKeyMapping.md b/docs/api/javadoc/client/api/accessors/client/IMixinKeyMapping.md similarity index 76% rename from docs/api/client/api/accessors/client/IMixinKeyMapping.md rename to docs/api/javadoc/client/api/accessors/client/IMixinKeyMapping.md index fceb6cf..0bb582f 100644 --- a/docs/api/client/api/accessors/client/IMixinKeyMapping.md +++ b/docs/api/javadoc/client/api/accessors/client/IMixinKeyMapping.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.client` -**Source:** `org/rusherhack/client/api/accessors/client/IMixinKeyMapping.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/api/javadoc/client/IMixinKeyMapping.java` **Author:** John200410 7/7/2023 diff --git a/docs/api/client/api/accessors/client/IMixinMinecraft.md b/docs/api/javadoc/client/api/accessors/client/IMixinMinecraft.md similarity index 92% rename from docs/api/client/api/accessors/client/IMixinMinecraft.md rename to docs/api/javadoc/client/api/accessors/client/IMixinMinecraft.md index c72f532..1f9bc58 100644 --- a/docs/api/client/api/accessors/client/IMixinMinecraft.md +++ b/docs/api/javadoc/client/api/accessors/client/IMixinMinecraft.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.client` -**Source:** `org/rusherhack/client/api/accessors/client/IMixinMinecraft.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/api/javadoc/client/IMixinMinecraft.java` **Author:** John200410 5/30/2023 diff --git a/docs/api/client/api/accessors/client/IMixinMultiPlayerGameMode.md b/docs/api/javadoc/client/api/accessors/client/IMixinMultiPlayerGameMode.md similarity index 92% rename from docs/api/client/api/accessors/client/IMixinMultiPlayerGameMode.md rename to docs/api/javadoc/client/api/accessors/client/IMixinMultiPlayerGameMode.md index df8526c..54a81b7 100644 --- a/docs/api/client/api/accessors/client/IMixinMultiPlayerGameMode.md +++ b/docs/api/javadoc/client/api/accessors/client/IMixinMultiPlayerGameMode.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.client` -**Source:** `org/rusherhack/client/api/accessors/client/IMixinMultiPlayerGameMode.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/api/javadoc/client/IMixinMultiPlayerGameMode.java` **Author:** John200410 7/28/2023 diff --git a/docs/api/client/api/accessors/client/IMixinOptions.md b/docs/api/javadoc/client/api/accessors/client/IMixinOptions.md similarity index 69% rename from docs/api/client/api/accessors/client/IMixinOptions.md rename to docs/api/javadoc/client/api/accessors/client/IMixinOptions.md index 433133a..142dc44 100644 --- a/docs/api/client/api/accessors/client/IMixinOptions.md +++ b/docs/api/javadoc/client/api/accessors/client/IMixinOptions.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.client` -**Source:** `org/rusherhack/client/api/accessors/client/IMixinOptions.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/api/javadoc/client/IMixinOptions.java` **Author:** historian diff --git a/docs/api/client/api/accessors/entity/IMixinAbstractArrow.md b/docs/api/javadoc/client/api/accessors/entity/IMixinAbstractArrow.md similarity index 79% rename from docs/api/client/api/accessors/entity/IMixinAbstractArrow.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinAbstractArrow.md index 2fb798d..dab68ea 100644 --- a/docs/api/client/api/accessors/entity/IMixinAbstractArrow.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinAbstractArrow.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinAbstractArrow.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinAbstractArrow.java` **Author:** John200410 1/8/2024 diff --git a/docs/api/client/api/accessors/entity/IMixinAbstractClientPlayer.md b/docs/api/javadoc/client/api/accessors/entity/IMixinAbstractClientPlayer.md similarity index 78% rename from docs/api/client/api/accessors/entity/IMixinAbstractClientPlayer.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinAbstractClientPlayer.md index 7efc879..5de1e17 100644 --- a/docs/api/client/api/accessors/entity/IMixinAbstractClientPlayer.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinAbstractClientPlayer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinAbstractClientPlayer.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinAbstractClientPlayer.java` **Author:** John200410 7/5/2023 diff --git a/docs/api/client/api/accessors/entity/IMixinEntity.md b/docs/api/javadoc/client/api/accessors/entity/IMixinEntity.md similarity index 93% rename from docs/api/client/api/accessors/entity/IMixinEntity.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinEntity.md index 842deee..815c076 100644 --- a/docs/api/client/api/accessors/entity/IMixinEntity.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinEntity.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinEntity.java` **Author:** John200410 7/5/2023 diff --git a/docs/api/client/api/accessors/entity/IMixinFireworkRocketEntity.md b/docs/api/javadoc/client/api/accessors/entity/IMixinFireworkRocketEntity.md similarity index 85% rename from docs/api/client/api/accessors/entity/IMixinFireworkRocketEntity.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinFireworkRocketEntity.md index e794be2..ced5bee 100644 --- a/docs/api/client/api/accessors/entity/IMixinFireworkRocketEntity.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinFireworkRocketEntity.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinFireworkRocketEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinFireworkRocketEntity.java` **Author:** John200410 7/22/2023 diff --git a/docs/api/client/api/accessors/entity/IMixinFishingHook.md b/docs/api/javadoc/client/api/accessors/entity/IMixinFishingHook.md similarity index 77% rename from docs/api/client/api/accessors/entity/IMixinFishingHook.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinFishingHook.md index f7557b0..8b7ab2a 100644 --- a/docs/api/client/api/accessors/entity/IMixinFishingHook.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinFishingHook.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinFishingHook.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinFishingHook.java` **Author:** historian diff --git a/docs/api/client/api/accessors/entity/IMixinLivingEntity.md b/docs/api/javadoc/client/api/accessors/entity/IMixinLivingEntity.md similarity index 89% rename from docs/api/client/api/accessors/entity/IMixinLivingEntity.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinLivingEntity.md index bb9dff6..ec972d5 100644 --- a/docs/api/client/api/accessors/entity/IMixinLivingEntity.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinLivingEntity.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinLivingEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinLivingEntity.java` **Author:** historian diff --git a/docs/api/client/api/accessors/entity/IMixinLocalPlayer.md b/docs/api/javadoc/client/api/accessors/entity/IMixinLocalPlayer.md similarity index 93% rename from docs/api/client/api/accessors/entity/IMixinLocalPlayer.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinLocalPlayer.md index 0f12192..d8409f2 100644 --- a/docs/api/client/api/accessors/entity/IMixinLocalPlayer.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinLocalPlayer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinLocalPlayer.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinLocalPlayer.java` **Author:** John200410 7/17/2023 diff --git a/docs/api/client/api/accessors/entity/IMixinPlayerInfo.md b/docs/api/javadoc/client/api/accessors/entity/IMixinPlayerInfo.md similarity index 73% rename from docs/api/client/api/accessors/entity/IMixinPlayerInfo.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinPlayerInfo.md index 8f2a8b5..80966ab 100644 --- a/docs/api/client/api/accessors/entity/IMixinPlayerInfo.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinPlayerInfo.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinPlayerInfo.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinPlayerInfo.java` **Author:** historian diff --git a/docs/api/client/api/accessors/entity/IMixinProjectile.md b/docs/api/javadoc/client/api/accessors/entity/IMixinProjectile.md similarity index 76% rename from docs/api/client/api/accessors/entity/IMixinProjectile.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinProjectile.md index afa55af..0b6e404 100644 --- a/docs/api/client/api/accessors/entity/IMixinProjectile.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinProjectile.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinProjectile.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinProjectile.java` **Author:** John200410 2/27/2024 diff --git a/docs/api/client/api/accessors/entity/IMixinThrowableProjectile.md b/docs/api/javadoc/client/api/accessors/entity/IMixinThrowableProjectile.md similarity index 78% rename from docs/api/client/api/accessors/entity/IMixinThrowableProjectile.md rename to docs/api/javadoc/client/api/accessors/entity/IMixinThrowableProjectile.md index aebe6bd..489ca33 100644 --- a/docs/api/client/api/accessors/entity/IMixinThrowableProjectile.md +++ b/docs/api/javadoc/client/api/accessors/entity/IMixinThrowableProjectile.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.entity` -**Source:** `org/rusherhack/client/api/accessors/entity/IMixinThrowableProjectile.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/entity/IMixinThrowableProjectile.java` **Author:** John200410 8/24/2023 diff --git a/docs/api/client/api/accessors/gui/IMixinAbstractContainerScreen.md b/docs/api/javadoc/client/api/accessors/gui/IMixinAbstractContainerScreen.md similarity index 85% rename from docs/api/client/api/accessors/gui/IMixinAbstractContainerScreen.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinAbstractContainerScreen.md index 57de114..edec43d 100644 --- a/docs/api/client/api/accessors/gui/IMixinAbstractContainerScreen.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinAbstractContainerScreen.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinAbstractContainerScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinAbstractContainerScreen.java` **Author:** John200410 7/28/2023 diff --git a/docs/api/client/api/accessors/gui/IMixinAbstractCraftingMenu.md b/docs/api/javadoc/client/api/accessors/gui/IMixinAbstractCraftingMenu.md similarity index 79% rename from docs/api/client/api/accessors/gui/IMixinAbstractCraftingMenu.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinAbstractCraftingMenu.md index 083d7b1..57b6438 100644 --- a/docs/api/client/api/accessors/gui/IMixinAbstractCraftingMenu.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinAbstractCraftingMenu.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinAbstractCraftingMenu.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinAbstractCraftingMenu.java` **Author:** historian diff --git a/docs/api/client/api/accessors/gui/IMixinAbstractSignEditScreen.md b/docs/api/javadoc/client/api/accessors/gui/IMixinAbstractSignEditScreen.md similarity index 78% rename from docs/api/client/api/accessors/gui/IMixinAbstractSignEditScreen.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinAbstractSignEditScreen.md index f3fc937..dadc0ce 100644 --- a/docs/api/client/api/accessors/gui/IMixinAbstractSignEditScreen.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinAbstractSignEditScreen.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinAbstractSignEditScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinAbstractSignEditScreen.java` **Author:** John200410 8/20/2023 diff --git a/docs/api/client/api/accessors/gui/IMixinBossHealthOverlay.md b/docs/api/javadoc/client/api/accessors/gui/IMixinBossHealthOverlay.md similarity index 83% rename from docs/api/client/api/accessors/gui/IMixinBossHealthOverlay.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinBossHealthOverlay.md index ca59e5e..154cb5f 100644 --- a/docs/api/client/api/accessors/gui/IMixinBossHealthOverlay.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinBossHealthOverlay.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinBossHealthOverlay.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinBossHealthOverlay.java` **Author:** historian diff --git a/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md b/docs/api/javadoc/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md similarity index 74% rename from docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md index a57b959..61d89cf 100644 --- a/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinChatComponent$DrawingBackgroundGraphicsAccess.java` **Author:** john@rusherhack.org 4/23/2026 diff --git a/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md b/docs/api/javadoc/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md similarity index 74% rename from docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md index 568feea..bf279c9 100644 --- a/docs/api/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinChatComponent$DrawingFocusedGraphicsAccess.java` **Author:** john@rusherhack.org 4/23/2026 diff --git a/docs/api/client/api/accessors/gui/IMixinChatComponent.md b/docs/api/javadoc/client/api/accessors/gui/IMixinChatComponent.md similarity index 90% rename from docs/api/client/api/accessors/gui/IMixinChatComponent.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinChatComponent.md index cc47609..4e6cb29 100644 --- a/docs/api/client/api/accessors/gui/IMixinChatComponent.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinChatComponent.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinChatComponent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinChatComponent.java` **Author:** John200410 7/25/2023 diff --git a/docs/api/client/api/accessors/gui/IMixinDisconnectedScreen.md b/docs/api/javadoc/client/api/accessors/gui/IMixinDisconnectedScreen.md similarity index 79% rename from docs/api/client/api/accessors/gui/IMixinDisconnectedScreen.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinDisconnectedScreen.md index a132f62..87e3bbb 100644 --- a/docs/api/client/api/accessors/gui/IMixinDisconnectedScreen.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinDisconnectedScreen.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinDisconnectedScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinDisconnectedScreen.java` **Author:** john@rusherhack.org 12/24/2025 diff --git a/docs/api/client/api/accessors/gui/IMixinGui.md b/docs/api/javadoc/client/api/accessors/gui/IMixinGui.md similarity index 77% rename from docs/api/client/api/accessors/gui/IMixinGui.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinGui.md index 984c986..f0abff2 100644 --- a/docs/api/client/api/accessors/gui/IMixinGui.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinGui.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinGui.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinGui.java` **Author:** john@rusherhack.org 7/20/2025 diff --git a/docs/api/client/api/accessors/gui/IMixinMerchantMenu.md b/docs/api/javadoc/client/api/accessors/gui/IMixinMerchantMenu.md similarity index 73% rename from docs/api/client/api/accessors/gui/IMixinMerchantMenu.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinMerchantMenu.md index 9f642c5..0351ae5 100644 --- a/docs/api/client/api/accessors/gui/IMixinMerchantMenu.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinMerchantMenu.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinMerchantMenu.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinMerchantMenu.java` **Author:** historian diff --git a/docs/api/client/api/accessors/gui/IMixinMerchantScreen.md b/docs/api/javadoc/client/api/accessors/gui/IMixinMerchantScreen.md similarity index 88% rename from docs/api/client/api/accessors/gui/IMixinMerchantScreen.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinMerchantScreen.md index b54d521..ae77ad5 100644 --- a/docs/api/client/api/accessors/gui/IMixinMerchantScreen.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinMerchantScreen.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinMerchantScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinMerchantScreen.java` **Author:** historian diff --git a/docs/api/client/api/accessors/gui/IMixinPauseScreen.md b/docs/api/javadoc/client/api/accessors/gui/IMixinPauseScreen.md similarity index 70% rename from docs/api/client/api/accessors/gui/IMixinPauseScreen.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinPauseScreen.md index a4b835c..e8ca95d 100644 --- a/docs/api/client/api/accessors/gui/IMixinPauseScreen.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinPauseScreen.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinPauseScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinPauseScreen.java` **Author:** historian diff --git a/docs/api/client/api/accessors/gui/IMixinPlayerTabOverlay.md b/docs/api/javadoc/client/api/accessors/gui/IMixinPlayerTabOverlay.md similarity index 81% rename from docs/api/client/api/accessors/gui/IMixinPlayerTabOverlay.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinPlayerTabOverlay.md index 9d4737e..6cad442 100644 --- a/docs/api/client/api/accessors/gui/IMixinPlayerTabOverlay.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinPlayerTabOverlay.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinPlayerTabOverlay.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinPlayerTabOverlay.java` **Author:** John200410 7/22/2023 diff --git a/docs/api/client/api/accessors/gui/IMixinScreen.md b/docs/api/javadoc/client/api/accessors/gui/IMixinScreen.md similarity index 86% rename from docs/api/client/api/accessors/gui/IMixinScreen.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinScreen.md index 53214f6..5543e30 100644 --- a/docs/api/client/api/accessors/gui/IMixinScreen.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinScreen.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinScreen.java` **Author:** John200410 5/16/2023 diff --git a/docs/api/client/api/accessors/gui/IMixinShulkerBoxMenu.md b/docs/api/javadoc/client/api/accessors/gui/IMixinShulkerBoxMenu.md similarity index 74% rename from docs/api/client/api/accessors/gui/IMixinShulkerBoxMenu.md rename to docs/api/javadoc/client/api/accessors/gui/IMixinShulkerBoxMenu.md index 0c1615e..9c46300 100644 --- a/docs/api/client/api/accessors/gui/IMixinShulkerBoxMenu.md +++ b/docs/api/javadoc/client/api/accessors/gui/IMixinShulkerBoxMenu.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.gui` -**Source:** `org/rusherhack/client/api/accessors/gui/IMixinShulkerBoxMenu.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/gui/IMixinShulkerBoxMenu.java` **Author:** John200410 1/2/2024 diff --git a/docs/api/client/api/accessors/packet/IMixinClientPacketListener.md b/docs/api/javadoc/client/api/accessors/packet/IMixinClientPacketListener.md similarity index 88% rename from docs/api/client/api/accessors/packet/IMixinClientPacketListener.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinClientPacketListener.md index b35f1ac..963d1e9 100644 --- a/docs/api/client/api/accessors/packet/IMixinClientPacketListener.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinClientPacketListener.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientPacketListener.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinClientPacketListener.java` **Author:** John200410 8/8/2023 diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundExplodePacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundExplodePacket.md similarity index 74% rename from docs/api/client/api/accessors/packet/IMixinClientboundExplodePacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinClientboundExplodePacket.md index 59b55c0..7f71c3a 100644 --- a/docs/api/client/api/accessors/packet/IMixinClientboundExplodePacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundExplodePacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundExplodePacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinClientboundExplodePacket.java` **Author:** John200410 6/11/2023 diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md similarity index 73% rename from docs/api/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md index b5acc0b..78bb17e 100644 --- a/docs/api/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinClientboundSectionBlocksUpdatePacket.java` **Author:** John200410 7/20/2023 diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md similarity index 75% rename from docs/api/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md index 8b7942a..611dfd4 100644 --- a/docs/api/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinClientboundSetEntityMotionPacket.java` **Author:** John200410 6/11/2023 diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundSetTimePacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSetTimePacket.md similarity index 68% rename from docs/api/client/api/accessors/packet/IMixinClientboundSetTimePacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSetTimePacket.md index 9aa43c1..4c0550e 100644 --- a/docs/api/client/api/accessors/packet/IMixinClientboundSetTimePacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSetTimePacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundSetTimePacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinClientboundSetTimePacket.java` ## Overview diff --git a/docs/api/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md similarity index 72% rename from docs/api/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md index 87b5c79..fb9d31f 100644 --- a/docs/api/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinClientboundSystemChatPacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinClientboundSystemChatPacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinClientboundSystemChatPacket.java` **Author:** John200410 7/26/2023 diff --git a/docs/api/client/api/accessors/packet/IMixinConnectionProtocol.md b/docs/api/javadoc/client/api/accessors/packet/IMixinConnectionProtocol.md similarity index 64% rename from docs/api/client/api/accessors/packet/IMixinConnectionProtocol.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinConnectionProtocol.md index ad19c70..e3e00b2 100644 --- a/docs/api/client/api/accessors/packet/IMixinConnectionProtocol.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinConnectionProtocol.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinConnectionProtocol.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinConnectionProtocol.java` **Author:** John200410 9/2/2023 diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundInteractPacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundInteractPacket.md similarity index 76% rename from docs/api/client/api/accessors/packet/IMixinServerboundInteractPacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinServerboundInteractPacket.md index ac1849e..333e966 100644 --- a/docs/api/client/api/accessors/packet/IMixinServerboundInteractPacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundInteractPacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundInteractPacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinServerboundInteractPacket.java` **Author:** historian diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md similarity index 82% rename from docs/api/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md index 1a9100e..9b498a7 100644 --- a/docs/api/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinServerboundMovePlayerPacket.java` **Author:** John200410 7/17/2023 diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md similarity index 77% rename from docs/api/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md index 083486a..6b09859 100644 --- a/docs/api/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinServerboundMoveVehiclePacket.java` **Author:** John200410 7/17/2023 diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md similarity index 70% rename from docs/api/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md index 5d9330c..010dd7a 100644 --- a/docs/api/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinServerboundPlayerInputPacket.java` **Author:** historian diff --git a/docs/api/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md similarity index 76% rename from docs/api/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md rename to docs/api/javadoc/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md index acea19b..281d086 100644 --- a/docs/api/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md +++ b/docs/api/javadoc/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.packet` -**Source:** `org/rusherhack/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/packet/IMixinServerboundUseItemOnPacket.java` **Author:** John200410 7/24/2024 diff --git a/docs/api/client/api/accessors/render/IMixinBufferBuilder.md b/docs/api/javadoc/client/api/accessors/render/IMixinBufferBuilder.md similarity index 90% rename from docs/api/client/api/accessors/render/IMixinBufferBuilder.md rename to docs/api/javadoc/client/api/accessors/render/IMixinBufferBuilder.md index d17ba08..363e759 100644 --- a/docs/api/client/api/accessors/render/IMixinBufferBuilder.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinBufferBuilder.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinBufferBuilder.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinBufferBuilder.java` **Author:** John200410 6/13/2024 diff --git a/docs/api/client/api/accessors/render/IMixinByteBufferBuilder.md b/docs/api/javadoc/client/api/accessors/render/IMixinByteBufferBuilder.md similarity index 77% rename from docs/api/client/api/accessors/render/IMixinByteBufferBuilder.md rename to docs/api/javadoc/client/api/accessors/render/IMixinByteBufferBuilder.md index 4bcbbc5..cb93907 100644 --- a/docs/api/client/api/accessors/render/IMixinByteBufferBuilder.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinByteBufferBuilder.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinByteBufferBuilder.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinByteBufferBuilder.java` **Author:** John200410 6/13/2024 diff --git a/docs/api/client/api/accessors/render/IMixinCamera.md b/docs/api/javadoc/client/api/accessors/render/IMixinCamera.md similarity index 79% rename from docs/api/client/api/accessors/render/IMixinCamera.md rename to docs/api/javadoc/client/api/accessors/render/IMixinCamera.md index 338cff5..aff5ca9 100644 --- a/docs/api/client/api/accessors/render/IMixinCamera.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinCamera.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinCamera.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinCamera.java` **Author:** John200410 7/15/2023 diff --git a/docs/api/client/api/accessors/render/IMixinGameRenderer.md b/docs/api/javadoc/client/api/accessors/render/IMixinGameRenderer.md similarity index 89% rename from docs/api/client/api/accessors/render/IMixinGameRenderer.md rename to docs/api/javadoc/client/api/accessors/render/IMixinGameRenderer.md index 8e83929..bf70274 100644 --- a/docs/api/client/api/accessors/render/IMixinGameRenderer.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinGameRenderer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinGameRenderer.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinGameRenderer.java` **Author:** John200410 6/2/2023 diff --git a/docs/api/client/api/accessors/render/IMixinGlDevice.md b/docs/api/javadoc/client/api/accessors/render/IMixinGlDevice.md similarity index 76% rename from docs/api/client/api/accessors/render/IMixinGlDevice.md rename to docs/api/javadoc/client/api/accessors/render/IMixinGlDevice.md index e17bbae..3197b2b 100644 --- a/docs/api/client/api/accessors/render/IMixinGlDevice.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinGlDevice.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinGlDevice.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinGlDevice.java` **Author:** john@rusherhack.org 3/31/2026 diff --git a/docs/api/client/api/accessors/render/IMixinGuiGraphics.md b/docs/api/javadoc/client/api/accessors/render/IMixinGuiGraphics.md similarity index 86% rename from docs/api/client/api/accessors/render/IMixinGuiGraphics.md rename to docs/api/javadoc/client/api/accessors/render/IMixinGuiGraphics.md index af979aa..bf67816 100644 --- a/docs/api/client/api/accessors/render/IMixinGuiGraphics.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinGuiGraphics.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinGuiGraphics.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinGuiGraphics.java` **Author:** john@rusherhack.org 2/22/2026 diff --git a/docs/api/client/api/accessors/render/IMixinLevelRenderer.md b/docs/api/javadoc/client/api/accessors/render/IMixinLevelRenderer.md similarity index 78% rename from docs/api/client/api/accessors/render/IMixinLevelRenderer.md rename to docs/api/javadoc/client/api/accessors/render/IMixinLevelRenderer.md index af66ae4..0b5623f 100644 --- a/docs/api/client/api/accessors/render/IMixinLevelRenderer.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinLevelRenderer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinLevelRenderer.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinLevelRenderer.java` **Author:** John200410 7/16/2023 diff --git a/docs/api/client/api/accessors/render/IMixinMapTextureManager.md b/docs/api/javadoc/client/api/accessors/render/IMixinMapTextureManager.md similarity index 77% rename from docs/api/client/api/accessors/render/IMixinMapTextureManager.md rename to docs/api/javadoc/client/api/accessors/render/IMixinMapTextureManager.md index a755c86..09c9e86 100644 --- a/docs/api/client/api/accessors/render/IMixinMapTextureManager.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinMapTextureManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinMapTextureManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinMapTextureManager.java` **Author:** John200410 10/4/2023 diff --git a/docs/api/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md b/docs/api/javadoc/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md similarity index 78% rename from docs/api/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md rename to docs/api/javadoc/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md index 1057d02..36a35d8 100644 --- a/docs/api/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinMultiBufferSource$BufferSource.java` **Author:** John200410 6/13/2024 diff --git a/docs/api/client/api/accessors/render/IMixinPoseStack.md b/docs/api/javadoc/client/api/accessors/render/IMixinPoseStack.md similarity index 83% rename from docs/api/client/api/accessors/render/IMixinPoseStack.md rename to docs/api/javadoc/client/api/accessors/render/IMixinPoseStack.md index e2eb9d3..481f0b4 100644 --- a/docs/api/client/api/accessors/render/IMixinPoseStack.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinPoseStack.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinPoseStack.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinPoseStack.java` **Author:** John200410 8/30/2023 diff --git a/docs/api/client/api/accessors/render/IMixinRenderType.md b/docs/api/javadoc/client/api/accessors/render/IMixinRenderType.md similarity index 75% rename from docs/api/client/api/accessors/render/IMixinRenderType.md rename to docs/api/javadoc/client/api/accessors/render/IMixinRenderType.md index 7175c5c..89a8747 100644 --- a/docs/api/client/api/accessors/render/IMixinRenderType.md +++ b/docs/api/javadoc/client/api/accessors/render/IMixinRenderType.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.render` -**Source:** `org/rusherhack/client/api/accessors/render/IMixinRenderType.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/render/IMixinRenderType.java` **Author:** john@rusherhack.org 4/4/2026 diff --git a/docs/api/client/api/accessors/world/IMixinBaseSpawner.md b/docs/api/javadoc/client/api/accessors/world/IMixinBaseSpawner.md similarity index 78% rename from docs/api/client/api/accessors/world/IMixinBaseSpawner.md rename to docs/api/javadoc/client/api/accessors/world/IMixinBaseSpawner.md index 27186d1..15c7570 100644 --- a/docs/api/client/api/accessors/world/IMixinBaseSpawner.md +++ b/docs/api/javadoc/client/api/accessors/world/IMixinBaseSpawner.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world` -**Source:** `org/rusherhack/client/api/accessors/world/IMixinBaseSpawner.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/IMixinBaseSpawner.java` **Author:** historian diff --git a/docs/api/client/api/accessors/world/IMixinBeaconBlockEntity.md b/docs/api/javadoc/client/api/accessors/world/IMixinBeaconBlockEntity.md similarity index 77% rename from docs/api/client/api/accessors/world/IMixinBeaconBlockEntity.md rename to docs/api/javadoc/client/api/accessors/world/IMixinBeaconBlockEntity.md index e3923ff..557e244 100644 --- a/docs/api/client/api/accessors/world/IMixinBeaconBlockEntity.md +++ b/docs/api/javadoc/client/api/accessors/world/IMixinBeaconBlockEntity.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world` -**Source:** `org/rusherhack/client/api/accessors/world/IMixinBeaconBlockEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/IMixinBeaconBlockEntity.java` **Author:** historian diff --git a/docs/api/client/api/accessors/world/IMixinBucketItem.md b/docs/api/javadoc/client/api/accessors/world/IMixinBucketItem.md similarity index 73% rename from docs/api/client/api/accessors/world/IMixinBucketItem.md rename to docs/api/javadoc/client/api/accessors/world/IMixinBucketItem.md index c334661..fda8b1b 100644 --- a/docs/api/client/api/accessors/world/IMixinBucketItem.md +++ b/docs/api/javadoc/client/api/accessors/world/IMixinBucketItem.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world` -**Source:** `org/rusherhack/client/api/accessors/world/IMixinBucketItem.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/IMixinBucketItem.java` **Author:** John200410 7/16/2023 diff --git a/docs/api/client/api/accessors/world/IMixinClientChunkCache.md b/docs/api/javadoc/client/api/accessors/world/IMixinClientChunkCache.md similarity index 75% rename from docs/api/client/api/accessors/world/IMixinClientChunkCache.md rename to docs/api/javadoc/client/api/accessors/world/IMixinClientChunkCache.md index a6e21a8..554a188 100644 --- a/docs/api/client/api/accessors/world/IMixinClientChunkCache.md +++ b/docs/api/javadoc/client/api/accessors/world/IMixinClientChunkCache.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world` -**Source:** `org/rusherhack/client/api/accessors/world/IMixinClientChunkCache.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/IMixinClientChunkCache.java` **Author:** John200410 7/16/2023 diff --git a/docs/api/client/api/accessors/world/IMixinClientLevel.md b/docs/api/javadoc/client/api/accessors/world/IMixinClientLevel.md similarity index 78% rename from docs/api/client/api/accessors/world/IMixinClientLevel.md rename to docs/api/javadoc/client/api/accessors/world/IMixinClientLevel.md index 1b41009..89aee28 100644 --- a/docs/api/client/api/accessors/world/IMixinClientLevel.md +++ b/docs/api/javadoc/client/api/accessors/world/IMixinClientLevel.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world` -**Source:** `org/rusherhack/client/api/accessors/world/IMixinClientLevel.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/IMixinClientLevel.java` **Author:** historian diff --git a/docs/api/client/api/accessors/world/IMixinInstrumentItem.md b/docs/api/javadoc/client/api/accessors/world/IMixinInstrumentItem.md similarity index 83% rename from docs/api/client/api/accessors/world/IMixinInstrumentItem.md rename to docs/api/javadoc/client/api/accessors/world/IMixinInstrumentItem.md index ba091a7..23263ee 100644 --- a/docs/api/client/api/accessors/world/IMixinInstrumentItem.md +++ b/docs/api/javadoc/client/api/accessors/world/IMixinInstrumentItem.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world` -**Source:** `org/rusherhack/client/api/accessors/world/IMixinInstrumentItem.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/IMixinInstrumentItem.java` **Author:** historian diff --git a/docs/api/client/api/accessors/world/IMixinLevel.md b/docs/api/javadoc/client/api/accessors/world/IMixinLevel.md similarity index 87% rename from docs/api/client/api/accessors/world/IMixinLevel.md rename to docs/api/javadoc/client/api/accessors/world/IMixinLevel.md index 0bc54df..07aba70 100644 --- a/docs/api/client/api/accessors/world/IMixinLevel.md +++ b/docs/api/javadoc/client/api/accessors/world/IMixinLevel.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world` -**Source:** `org/rusherhack/client/api/accessors/world/IMixinLevel.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/IMixinLevel.java` **Author:** John200410 6/18/2023 diff --git a/docs/api/client/api/accessors/world/IMixinPalettedContainer.md b/docs/api/javadoc/client/api/accessors/world/IMixinPalettedContainer.md similarity index 75% rename from docs/api/client/api/accessors/world/IMixinPalettedContainer.md rename to docs/api/javadoc/client/api/accessors/world/IMixinPalettedContainer.md index c324717..40b4552 100644 --- a/docs/api/client/api/accessors/world/IMixinPalettedContainer.md +++ b/docs/api/javadoc/client/api/accessors/world/IMixinPalettedContainer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world` -**Source:** `org/rusherhack/client/api/accessors/world/IMixinPalettedContainer.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/IMixinPalettedContainer.java` **Author:** John200410 12/11/2023 diff --git a/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md b/docs/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md similarity index 74% rename from docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md rename to docs/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md index e69d2e2..6d94f0f 100644 --- a/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md +++ b/docs/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapedRecipe.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.item.crafting` -**Source:** `org/rusherhack/client/api/accessors/world/item/crafting/IMixinShapedRecipe.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapedRecipe.java` **Author:** john@rusherhack.org 6/12/2025 diff --git a/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md b/docs/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md similarity index 79% rename from docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md rename to docs/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md index 9978489..fc6c716 100644 --- a/docs/api/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md +++ b/docs/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.item.crafting` -**Source:** `org/rusherhack/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapedRecipePattern.java` **Author:** john@rusherhack.org 6/12/2025 diff --git a/docs/api/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md b/docs/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md similarity index 78% rename from docs/api/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md rename to docs/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md index 2654ba1..d158ff5 100644 --- a/docs/api/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md +++ b/docs/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.item.crafting` -**Source:** `org/rusherhack/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/item/crafting/IMixinShapelessRecipe.java` **Author:** john@rusherhack.org 6/12/2025 diff --git a/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootPool.md b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/IMixinLootPool.md similarity index 85% rename from docs/api/client/api/accessors/world/level/storage/loot/IMixinLootPool.md rename to docs/api/javadoc/client/api/accessors/world/level/storage/loot/IMixinLootPool.md index 1a8e671..2a487db 100644 --- a/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootPool.md +++ b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/IMixinLootPool.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot` -**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/IMixinLootPool.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/level/storage/loot/IMixinLootPool.java` **Author:** john@rusherhack.org 6/3/2025 diff --git a/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md similarity index 81% rename from docs/api/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md rename to docs/api/javadoc/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md index a24c77c..3cb7889 100644 --- a/docs/api/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md +++ b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot` -**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/level/storage/loot/IMixinLootTable$Builder.java` **Author:** john@rusherhack.org 6/3/2025 diff --git a/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md similarity index 77% rename from docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md rename to docs/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md index 8afef70..b08a698 100644 --- a/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md +++ b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.entries` -**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinCompositeEntryBase.java` **Author:** john@rusherhack.org 6/3/2025 diff --git a/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md similarity index 77% rename from docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md rename to docs/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md index 7ac341e..7d009df 100644 --- a/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md +++ b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.entries` -**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolEntryContainer.java` **Author:** john@rusherhack.org 6/3/2025 diff --git a/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md similarity index 76% rename from docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md rename to docs/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md index d1cb390..b95e878 100644 --- a/docs/api/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md +++ b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.entries` -**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/level/storage/loot/entries/IMixinLootPoolSingletonContainer.java` **Author:** john@rusherhack.org 6/3/2025 diff --git a/docs/api/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md similarity index 73% rename from docs/api/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md rename to docs/api/javadoc/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md index 4a6661a..e633307 100644 --- a/docs/api/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md +++ b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.functions` -**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/level/storage/loot/functions/IMixinApplyBonusCount.java` **Author:** john@rusherhack.org 6/3/2025 diff --git a/docs/api/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md similarity index 76% rename from docs/api/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md rename to docs/api/javadoc/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md index 4fdc1fd..b29ba6b 100644 --- a/docs/api/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md +++ b/docs/api/javadoc/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.accessors.world.level.storage.loot.predicates` -**Source:** `org/rusherhack/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.java` +**Source:** `org/rusherhack/api/javadoc/client/api/accessors/world/level/storage/loot/predicates/IMixinCompositeLootItemCondition.java` **Author:** john@rusherhack.org 6/3/2025 diff --git a/docs/api/client/api/bind/IBindManager.md b/docs/api/javadoc/client/api/bind/IBindManager.md similarity index 73% rename from docs/api/client/api/bind/IBindManager.md rename to docs/api/javadoc/client/api/bind/IBindManager.md index 48abee7..faf98f8 100644 --- a/docs/api/client/api/bind/IBindManager.md +++ b/docs/api/javadoc/client/api/bind/IBindManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.bind` -**Source:** `org/rusherhack/client/api/bind/IBindManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/bind/IBindManager.java` **Author:** John200410 10/24/2023 @@ -50,7 +50,7 @@ default void register(IBindable bindable) IKey getBind(IBindable bindable) ``` -**Returns:** [IKey](/core/bind/key/IKey.md) +**Returns:** [IKey](/api/javadoc/core/bind/key/IKey.md) ### getBindRegistry() @@ -58,7 +58,7 @@ default void register(IBindable bindable) Object2ObjectMap getBindRegistry() ``` -**Returns:** `Object2ObjectMap`<[IBindable](/core/bind/IBindable.md), [IKey](/core/bind/key/IKey.md)> +**Returns:** `Object2ObjectMap`<[IBindable](/api/javadoc/core/bind/IBindable.md), [IKey](/api/javadoc/core/bind/key/IKey.md)> ### parseKey() @@ -71,7 +71,7 @@ Creates a key object from the specified key string -**Returns:** [IKey](/core/bind/key/IKey.md) +**Returns:** [IKey](/api/javadoc/core/bind/key/IKey.md) ### createKeyboardKey() @@ -87,7 +87,7 @@ Creates a new keyboard key from the specified glfw key code -**Returns:** [IKey](/core/bind/key/IKey.md) +**Returns:** [IKey](/api/javadoc/core/bind/key/IKey.md) ### createMouseKey() @@ -103,5 +103,5 @@ Creates a new mouse key from the specified glfw key code -**Returns:** [IKey](/core/bind/key/IKey.md) +**Returns:** [IKey](/api/javadoc/core/bind/key/IKey.md) diff --git a/docs/api/client/api/bind/key/GLFWConstants.md b/docs/api/javadoc/client/api/bind/key/GLFWConstants.md similarity index 93% rename from docs/api/client/api/bind/key/GLFWConstants.md rename to docs/api/javadoc/client/api/bind/key/GLFWConstants.md index 563640d..f66879c 100644 --- a/docs/api/client/api/bind/key/GLFWConstants.md +++ b/docs/api/javadoc/client/api/bind/key/GLFWConstants.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.bind.key` -**Source:** `org/rusherhack/client/api/bind/key/GLFWConstants.java` +**Source:** `org/rusherhack/api/javadoc/client/api/bind/key/GLFWConstants.java` **Author:** John200410 1/25/2023 @@ -32,7 +32,7 @@ public static IKey fromLabel(String label) ``` -**Returns:** [IKey](/core/bind/key/IKey.md) +**Returns:** [IKey](/api/javadoc/core/bind/key/IKey.md) ### getKeyboardKey() diff --git a/docs/api/client/api/bind/key/GLFWKey.md b/docs/api/javadoc/client/api/bind/key/GLFWKey.md similarity index 86% rename from docs/api/client/api/bind/key/GLFWKey.md rename to docs/api/javadoc/client/api/bind/key/GLFWKey.md index ad65ab5..84830b3 100644 --- a/docs/api/client/api/bind/key/GLFWKey.md +++ b/docs/api/javadoc/client/api/bind/key/GLFWKey.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.bind.key` -**Source:** `org/rusherhack/client/api/bind/key/GLFWKey.java` +**Source:** `org/rusherhack/api/javadoc/client/api/bind/key/GLFWKey.java` GLFW key implementation * **Author:** John200410 1/16/2023 @@ -11,7 +11,7 @@ GLFW key implementation ## Overview -`GLFWKey` is a class and implements [IKey](/core/bind/key/IKey.md). +`GLFWKey` is a class and implements [IKey](/api/javadoc/core/bind/key/IKey.md). ## Constructor diff --git a/docs/api/client/api/bind/key/KeyboardKey.md b/docs/api/javadoc/client/api/bind/key/KeyboardKey.md similarity index 85% rename from docs/api/client/api/bind/key/KeyboardKey.md rename to docs/api/javadoc/client/api/bind/key/KeyboardKey.md index 93d26e4..b99715b 100644 --- a/docs/api/client/api/bind/key/KeyboardKey.md +++ b/docs/api/javadoc/client/api/bind/key/KeyboardKey.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.bind.key` -**Source:** `org/rusherhack/client/api/bind/key/KeyboardKey.java` +**Source:** `org/rusherhack/api/javadoc/client/api/bind/key/KeyboardKey.java` **Author:** John200410 1/16/2023 @@ -10,7 +10,7 @@ ## Overview -`KeyboardKey` is a class that extends [GLFWKey](/client/api/bind/key/GLFWKey.md). +`KeyboardKey` is a class that extends [GLFWKey](/api/javadoc/client/api/bind/key/GLFWKey.md). ## Constructor diff --git a/docs/api/client/api/bind/key/MouseKey.md b/docs/api/javadoc/client/api/bind/key/MouseKey.md similarity index 86% rename from docs/api/client/api/bind/key/MouseKey.md rename to docs/api/javadoc/client/api/bind/key/MouseKey.md index c2e4223..94663d7 100644 --- a/docs/api/client/api/bind/key/MouseKey.md +++ b/docs/api/javadoc/client/api/bind/key/MouseKey.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.bind.key` -**Source:** `org/rusherhack/client/api/bind/key/MouseKey.java` +**Source:** `org/rusherhack/api/javadoc/client/api/bind/key/MouseKey.java` **Author:** John200410 1/16/2023 @@ -10,7 +10,7 @@ ## Overview -`MouseKey` is a class that extends [GLFWKey](/client/api/bind/key/GLFWKey.md). +`MouseKey` is a class that extends [GLFWKey](/api/javadoc/client/api/bind/key/GLFWKey.md). ## Constructor diff --git a/docs/api/client/api/config/Configuration.md b/docs/api/javadoc/client/api/config/Configuration.md similarity index 88% rename from docs/api/client/api/config/Configuration.md rename to docs/api/javadoc/client/api/config/Configuration.md index bc44518..1a61f4e 100644 --- a/docs/api/client/api/config/Configuration.md +++ b/docs/api/javadoc/client/api/config/Configuration.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.config` -**Source:** `org/rusherhack/client/api/config/Configuration.java` +**Source:** `org/rusherhack/api/javadoc/client/api/config/Configuration.java` Utility class for serializing and deserializing objects to and from disk. * NOTE: alot of config related stuff is scheduled to change in rusherhack v2.1 @@ -12,7 +12,7 @@ Utility class for serializing and deserializing objects to and from disk. ## Overview -`Configuration` is a class and implements [INamed](/core/interfaces/INamed.md). +`Configuration` is a class and implements [INamed](/api/javadoc/core/interfaces/INamed.md). ## Constructor @@ -29,7 +29,7 @@ public Configuration(String name, File file) | Name | Type | Modifiers | |------|------|----------| | CONFIG_DIRECTORY | [Path](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/Path.html) | public static final | -| logger | [ILogger](/core/logging/ILogger.md) | public final | +| logger | [ILogger](/api/javadoc/core/logging/ILogger.md) | public final | | name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | | file | [File](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/File.html) | private final | | loadPriority | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | protected | diff --git a/docs/api/client/api/config/JsonConfiguration.md b/docs/api/javadoc/client/api/config/JsonConfiguration.md similarity index 67% rename from docs/api/client/api/config/JsonConfiguration.md rename to docs/api/javadoc/client/api/config/JsonConfiguration.md index 5871214..a31ed2d 100644 --- a/docs/api/client/api/config/JsonConfiguration.md +++ b/docs/api/javadoc/client/api/config/JsonConfiguration.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.config` -**Source:** `org/rusherhack/client/api/config/JsonConfiguration.java` +**Source:** `org/rusherhack/api/javadoc/client/api/config/JsonConfiguration.java` **Author:** John200410 1/24/2023 @@ -10,7 +10,7 @@ ## Overview -`JsonConfiguration` is a class that extends [Configuration](/client/api/config/Configuration.md). +`JsonConfiguration` is a class that extends [Configuration](/api/javadoc/client/api/config/Configuration.md). ## Constructor @@ -37,7 +37,7 @@ public JsonConfiguration(File file) public static JsonConfiguration createConfiguration(String name) ``` -**Returns:** [JsonConfiguration](/client/api/config/JsonConfiguration.md) +**Returns:** [JsonConfiguration](/api/javadoc/client/api/config/JsonConfiguration.md) ### createConfiguration() @@ -45,7 +45,7 @@ public static JsonConfiguration createConfiguration(String name) public static JsonConfiguration createConfiguration(String parentDirectory, String name) ``` -**Returns:** [JsonConfiguration](/client/api/config/JsonConfiguration.md) +**Returns:** [JsonConfiguration](/api/javadoc/client/api/config/JsonConfiguration.md) ### write() diff --git a/docs/api/client/api/config/TextConfiguration.md b/docs/api/javadoc/client/api/config/TextConfiguration.md similarity index 66% rename from docs/api/client/api/config/TextConfiguration.md rename to docs/api/javadoc/client/api/config/TextConfiguration.md index 479c7bd..26c49a9 100644 --- a/docs/api/client/api/config/TextConfiguration.md +++ b/docs/api/javadoc/client/api/config/TextConfiguration.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.config` -**Source:** `org/rusherhack/client/api/config/TextConfiguration.java` +**Source:** `org/rusherhack/api/javadoc/client/api/config/TextConfiguration.java` **Author:** John200410 7/6/2023 @@ -10,7 +10,7 @@ ## Overview -`TextConfiguration` is a class that extends [Configuration](/client/api/config/Configuration.md). +`TextConfiguration` is a class that extends [Configuration](/api/javadoc/client/api/config/Configuration.md). ## Constructor @@ -37,7 +37,7 @@ public TextConfiguration(File file) public static TextConfiguration createConfiguration(String name) ``` -**Returns:** [TextConfiguration](/client/api/config/TextConfiguration.md) +**Returns:** [TextConfiguration](/api/javadoc/client/api/config/TextConfiguration.md) ### createConfiguration() @@ -45,7 +45,7 @@ public static TextConfiguration createConfiguration(String name) public static TextConfiguration createConfiguration(String parentDirectory, String name) ``` -**Returns:** [TextConfiguration](/client/api/config/TextConfiguration.md) +**Returns:** [TextConfiguration](/api/javadoc/client/api/config/TextConfiguration.md) ### write() @@ -65,5 +65,5 @@ public void read(ISerializable serializable) public TextConfiguration allowNewLines() ``` -**Returns:** [TextConfiguration](/client/api/config/TextConfiguration.md) +**Returns:** [TextConfiguration](/api/javadoc/client/api/config/TextConfiguration.md) diff --git a/docs/api/client/api/events/client/EventQuit.md b/docs/api/javadoc/client/api/events/client/EventQuit.md similarity index 73% rename from docs/api/client/api/events/client/EventQuit.md rename to docs/api/javadoc/client/api/events/client/EventQuit.md index 07f28f5..2a2c4c8 100644 --- a/docs/api/client/api/events/client/EventQuit.md +++ b/docs/api/javadoc/client/api/events/client/EventQuit.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client` -**Source:** `org/rusherhack/client/api/events/client/EventQuit.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/EventQuit.java` This event is called when the player quits the game, or disconnects from the server. * **Author:** John200410 7/5/2023 @@ -23,7 +23,7 @@ public EventQuit(Reason reason) | Name | Type | Modifiers | |------|------|----------| -| reason | [Reason](/client/api/events/client/Reason.md) | private final | +| reason | [Reason](/api/javadoc/client/api/events/api/javadoc/client/Reason.md) | private final | ## Methods @@ -34,7 +34,7 @@ public EventQuit(Reason reason) public Reason getReason() ``` -**Returns:** [Reason](/client/api/events/client/Reason.md) +**Returns:** [Reason](/api/javadoc/client/api/events/api/javadoc/client/Reason.md) ### getStage() diff --git a/docs/api/client/api/events/client/EventTimerSpeed.md b/docs/api/javadoc/client/api/events/client/EventTimerSpeed.md similarity index 91% rename from docs/api/client/api/events/client/EventTimerSpeed.md rename to docs/api/javadoc/client/api/events/client/EventTimerSpeed.md index c8eb8a3..7eee009 100644 --- a/docs/api/client/api/events/client/EventTimerSpeed.md +++ b/docs/api/javadoc/client/api/events/client/EventTimerSpeed.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client` -**Source:** `org/rusherhack/client/api/events/client/EventTimerSpeed.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/EventTimerSpeed.java` This event is used to modify the game's timer speed. * **Author:** John200410 7/8/2023 diff --git a/docs/api/client/api/events/client/EventUpdate.md b/docs/api/javadoc/client/api/events/client/EventUpdate.md similarity index 82% rename from docs/api/client/api/events/client/EventUpdate.md rename to docs/api/javadoc/client/api/events/client/EventUpdate.md index 2004cb8..51fd1b9 100644 --- a/docs/api/client/api/events/client/EventUpdate.md +++ b/docs/api/javadoc/client/api/events/client/EventUpdate.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client` -**Source:** `org/rusherhack/client/api/events/client/EventUpdate.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/EventUpdate.java` This event is called every game tick * **Author:** John200410 1/5/2023 diff --git a/docs/api/client/api/events/client/Reason.md b/docs/api/javadoc/client/api/events/client/Reason.md similarity index 61% rename from docs/api/client/api/events/client/Reason.md rename to docs/api/javadoc/client/api/events/client/Reason.md index 41c84eb..067f41a 100644 --- a/docs/api/client/api/events/client/Reason.md +++ b/docs/api/javadoc/client/api/events/client/Reason.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client` -**Source:** `org/rusherhack/client/api/events/client/EventQuit.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/EventQuit.java` ## Overview diff --git a/docs/api/client/api/events/client/chat/EventAddChat.md b/docs/api/javadoc/client/api/events/client/chat/EventAddChat.md similarity index 85% rename from docs/api/client/api/events/client/chat/EventAddChat.md rename to docs/api/javadoc/client/api/events/client/chat/EventAddChat.md index fd4cf9e..a5cf629 100644 --- a/docs/api/client/api/events/client/chat/EventAddChat.md +++ b/docs/api/javadoc/client/api/events/client/chat/EventAddChat.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.chat` -**Source:** `org/rusherhack/client/api/events/client/chat/EventAddChat.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/chat/EventAddChat.java` **Author:** John200410 7/26/2023 diff --git a/docs/api/client/api/events/client/chat/EventChatCommand.md b/docs/api/javadoc/client/api/events/client/chat/EventChatCommand.md similarity index 87% rename from docs/api/client/api/events/client/chat/EventChatCommand.md rename to docs/api/javadoc/client/api/events/client/chat/EventChatCommand.md index 39d6d90..cc184cb 100644 --- a/docs/api/client/api/events/client/chat/EventChatCommand.md +++ b/docs/api/javadoc/client/api/events/client/chat/EventChatCommand.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.chat` -**Source:** `org/rusherhack/client/api/events/client/chat/EventChatCommand.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/chat/EventChatCommand.java` **Author:** john@rusherhack.org 1/7/2026 diff --git a/docs/api/client/api/events/client/chat/EventChatMessage.md b/docs/api/javadoc/client/api/events/client/chat/EventChatMessage.md similarity index 86% rename from docs/api/client/api/events/client/chat/EventChatMessage.md rename to docs/api/javadoc/client/api/events/client/chat/EventChatMessage.md index 912897b..bbd7b6f 100644 --- a/docs/api/client/api/events/client/chat/EventChatMessage.md +++ b/docs/api/javadoc/client/api/events/client/chat/EventChatMessage.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.chat` -**Source:** `org/rusherhack/client/api/events/client/chat/EventChatMessage.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/chat/EventChatMessage.java` **Author:** John200410 12/16/2022 diff --git a/docs/api/client/api/events/client/input/EventInputTick.md b/docs/api/javadoc/client/api/events/client/input/EventInputTick.md similarity index 87% rename from docs/api/client/api/events/client/input/EventInputTick.md rename to docs/api/javadoc/client/api/events/client/input/EventInputTick.md index 0c1c505..ab27433 100644 --- a/docs/api/client/api/events/client/input/EventInputTick.md +++ b/docs/api/javadoc/client/api/events/client/input/EventInputTick.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.input` -**Source:** `org/rusherhack/client/api/events/client/input/EventInputTick.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/input/EventInputTick.java` Event is when the local player's input is being updated * **Author:** John200410 7/8/2023 diff --git a/docs/api/client/api/events/client/input/EventKeyboard.md b/docs/api/javadoc/client/api/events/client/input/EventKeyboard.md similarity index 95% rename from docs/api/client/api/events/client/input/EventKeyboard.md rename to docs/api/javadoc/client/api/events/client/input/EventKeyboard.md index 2084306..00f9f81 100644 --- a/docs/api/client/api/events/client/input/EventKeyboard.md +++ b/docs/api/javadoc/client/api/events/client/input/EventKeyboard.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.input` -**Source:** `org/rusherhack/client/api/events/client/input/EventKeyboard.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/input/EventKeyboard.java` This event is called during keyboard updates * diff --git a/docs/api/client/api/events/client/input/EventMouse.md b/docs/api/javadoc/client/api/events/client/input/EventMouse.md similarity index 91% rename from docs/api/client/api/events/client/input/EventMouse.md rename to docs/api/javadoc/client/api/events/client/input/EventMouse.md index 3cb9f99..5f69783 100644 --- a/docs/api/client/api/events/client/input/EventMouse.md +++ b/docs/api/javadoc/client/api/events/client/input/EventMouse.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.input` -**Source:** `org/rusherhack/client/api/events/client/input/EventMouse.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/input/EventMouse.java` Class containing mouse-related update events * diff --git a/docs/api/client/api/events/client/input/Key.md b/docs/api/javadoc/client/api/events/client/input/Key.md similarity index 87% rename from docs/api/client/api/events/client/input/Key.md rename to docs/api/javadoc/client/api/events/client/input/Key.md index 09992bb..c534be9 100644 --- a/docs/api/client/api/events/client/input/Key.md +++ b/docs/api/javadoc/client/api/events/client/input/Key.md @@ -2,13 +2,13 @@ **Package:** `org.rusherhack.client.api.events.client.input` -**Source:** `org/rusherhack/client/api/events/client/input/EventMouse.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/input/EventMouse.java` This event is called when a mouse button is pressed or released ## Overview -`Key` is a class that extends [EventMouse](/client/api/events/client/input/EventMouse.md). +`Key` is a class that extends [EventMouse](/api/javadoc/client/api/events/api/javadoc/client/input/EventMouse.md). ## Constructor diff --git a/docs/api/javadoc/client/api/events/client/input/Move.md b/docs/api/javadoc/client/api/events/client/input/Move.md new file mode 100644 index 0000000..fdaeb69 --- /dev/null +++ b/docs/api/javadoc/client/api/events/client/input/Move.md @@ -0,0 +1,18 @@ +# Move + +**Package:** `org.rusherhack.client.api.events.client.input` + +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/input/EventMouse.java` + +This event is called when the mouse is moved + +## Overview + +`Move` is a class that extends [EventMouse](/api/javadoc/client/api/events/api/javadoc/client/input/EventMouse.md). + +## Constructor + +```java +public Move(double xPos, double yPos) +``` + diff --git a/docs/api/client/api/events/client/input/Scroll.md b/docs/api/javadoc/client/api/events/client/input/Scroll.md similarity index 81% rename from docs/api/client/api/events/client/input/Scroll.md rename to docs/api/javadoc/client/api/events/client/input/Scroll.md index 44c31a8..7c9a257 100644 --- a/docs/api/client/api/events/client/input/Scroll.md +++ b/docs/api/javadoc/client/api/events/client/input/Scroll.md @@ -2,13 +2,13 @@ **Package:** `org.rusherhack.client.api.events.client.input` -**Source:** `org/rusherhack/client/api/events/client/input/EventMouse.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/input/EventMouse.java` This event is called when the scroll wheel is used ## Overview -`Scroll` is a class that extends [EventMouse](/client/api/events/client/input/EventMouse.md). +`Scroll` is a class that extends [EventMouse](/api/javadoc/client/api/events/api/javadoc/client/input/EventMouse.md). ## Constructor diff --git a/docs/api/client/api/events/client/internal/EventNotification.md b/docs/api/javadoc/client/api/events/client/internal/EventNotification.md similarity index 84% rename from docs/api/client/api/events/client/internal/EventNotification.md rename to docs/api/javadoc/client/api/events/client/internal/EventNotification.md index b533438..9f2ecb9 100644 --- a/docs/api/client/api/events/client/internal/EventNotification.md +++ b/docs/api/javadoc/client/api/events/client/internal/EventNotification.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.internal` -**Source:** `org/rusherhack/client/api/events/client/internal/EventNotification.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/internal/EventNotification.java` This event gets called when a notification is being processed by the NotificationManager * @@ -24,7 +24,7 @@ public EventNotification(NotificationType type, Component text, boolean chat, bo | Name | Type | Modifiers | |------|------|----------| -| type | [NotificationType](/core/notification/NotificationType.md) | private final | +| type | [NotificationType](/api/javadoc/core/notification/NotificationType.md) | private final | | text | `Component` | private final | | chat | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | | hud | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | @@ -43,7 +43,7 @@ Get the type of the notification -**Returns:** [NotificationType](/core/notification/NotificationType.md) +**Returns:** [NotificationType](/api/javadoc/core/notification/NotificationType.md) ### getText() diff --git a/docs/api/client/api/events/client/screen/BuildButtons.md b/docs/api/javadoc/client/api/events/client/screen/BuildButtons.md similarity index 77% rename from docs/api/client/api/events/client/screen/BuildButtons.md rename to docs/api/javadoc/client/api/events/client/screen/BuildButtons.md index 6d24893..b55622c 100644 --- a/docs/api/client/api/events/client/screen/BuildButtons.md +++ b/docs/api/javadoc/client/api/events/client/screen/BuildButtons.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.events.client.screen` -**Source:** `org/rusherhack/client/api/events/client/screen/EventScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/screen/EventScreen.java` ## Overview -`BuildButtons` is a class that extends [EventScreen](/client/api/events/client/screen/EventScreen.md). +`BuildButtons` is a class that extends [EventScreen](/api/javadoc/client/api/events/api/javadoc/client/screen/EventScreen.md). ## Constructor diff --git a/docs/api/client/api/events/client/screen/Change.md b/docs/api/javadoc/client/api/events/client/screen/Change.md similarity index 88% rename from docs/api/client/api/events/client/screen/Change.md rename to docs/api/javadoc/client/api/events/client/screen/Change.md index b2bb83f..752cfcf 100644 --- a/docs/api/client/api/events/client/screen/Change.md +++ b/docs/api/javadoc/client/api/events/client/screen/Change.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.screen` -**Source:** `org/rusherhack/client/api/events/client/screen/EventScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/screen/EventScreen.java` ## Overview diff --git a/docs/api/client/api/events/client/screen/EventResizeDisplay.md b/docs/api/javadoc/client/api/events/client/screen/EventResizeDisplay.md similarity index 69% rename from docs/api/client/api/events/client/screen/EventResizeDisplay.md rename to docs/api/javadoc/client/api/events/client/screen/EventResizeDisplay.md index ee97349..a387b19 100644 --- a/docs/api/client/api/events/client/screen/EventResizeDisplay.md +++ b/docs/api/javadoc/client/api/events/client/screen/EventResizeDisplay.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.screen` -**Source:** `org/rusherhack/client/api/events/client/screen/EventResizeDisplay.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/screen/EventResizeDisplay.java` This event is called when the game window is being resized * **Author:** John200410 12/28/2022 diff --git a/docs/api/client/api/events/client/screen/EventScreen.md b/docs/api/javadoc/client/api/events/client/screen/EventScreen.md similarity index 81% rename from docs/api/client/api/events/client/screen/EventScreen.md rename to docs/api/javadoc/client/api/events/client/screen/EventScreen.md index 3848dd5..916d0a8 100644 --- a/docs/api/client/api/events/client/screen/EventScreen.md +++ b/docs/api/javadoc/client/api/events/client/screen/EventScreen.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.client.screen` -**Source:** `org/rusherhack/client/api/events/client/screen/EventScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/screen/EventScreen.java` **Author:** John200410 7/20/2023 diff --git a/docs/api/client/api/events/client/screen/Initialize.md b/docs/api/javadoc/client/api/events/client/screen/Initialize.md similarity index 64% rename from docs/api/client/api/events/client/screen/Initialize.md rename to docs/api/javadoc/client/api/events/client/screen/Initialize.md index e90a942..43557c2 100644 --- a/docs/api/client/api/events/client/screen/Initialize.md +++ b/docs/api/javadoc/client/api/events/client/screen/Initialize.md @@ -2,13 +2,13 @@ **Package:** `org.rusherhack.client.api.events.client.screen` -**Source:** `org/rusherhack/client/api/events/client/screen/EventScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/api/javadoc/client/screen/EventScreen.java` This event is called when the screen is initialized ## Overview -`Initialize` is a class that extends [EventScreen](/client/api/events/client/screen/EventScreen.md). +`Initialize` is a class that extends [EventScreen](/api/javadoc/client/api/events/api/javadoc/client/screen/EventScreen.md). ## Constructor diff --git a/docs/api/client/api/events/internal/EventBaritoneControl.md b/docs/api/javadoc/client/api/events/internal/EventBaritoneControl.md similarity index 68% rename from docs/api/client/api/events/internal/EventBaritoneControl.md rename to docs/api/javadoc/client/api/events/internal/EventBaritoneControl.md index 37446eb..0a8b03c 100644 --- a/docs/api/client/api/events/internal/EventBaritoneControl.md +++ b/docs/api/javadoc/client/api/events/internal/EventBaritoneControl.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.internal` -**Source:** `org/rusherhack/client/api/events/internal/EventBaritoneControl.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/internal/EventBaritoneControl.java` **Author:** John200410 8/18/2023 diff --git a/docs/api/client/api/events/internal/EventCommand.md b/docs/api/javadoc/client/api/events/internal/EventCommand.md similarity index 92% rename from docs/api/client/api/events/internal/EventCommand.md rename to docs/api/javadoc/client/api/events/internal/EventCommand.md index d3b0255..dc3bc1a 100644 --- a/docs/api/client/api/events/internal/EventCommand.md +++ b/docs/api/javadoc/client/api/events/internal/EventCommand.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.internal` -**Source:** `org/rusherhack/client/api/events/internal/EventCommand.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/internal/EventCommand.java` **Author:** John200410 12/16/2022 diff --git a/docs/api/client/api/events/internal/EventKeybindPress.md b/docs/api/javadoc/client/api/events/internal/EventKeybindPress.md similarity index 79% rename from docs/api/client/api/events/internal/EventKeybindPress.md rename to docs/api/javadoc/client/api/events/internal/EventKeybindPress.md index 307d1a3..7e092f5 100644 --- a/docs/api/client/api/events/internal/EventKeybindPress.md +++ b/docs/api/javadoc/client/api/events/internal/EventKeybindPress.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.internal` -**Source:** `org/rusherhack/client/api/events/internal/EventKeybindPress.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/internal/EventKeybindPress.java` **Author:** John200410 5/15/2023 @@ -30,7 +30,7 @@ public EventKeybindPress(Type type, int keyCode) | Name | Type | Modifiers | |------|------|----------| -| type | [Type](/client/api/events/internal/Type.md) | private final | +| type | [Type](/api/javadoc/client/api/events/internal/Type.md) | private final | | keyCode | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | @@ -42,7 +42,7 @@ public EventKeybindPress(Type type, int keyCode) public Type getType() ``` -**Returns:** [Type](/client/api/events/internal/Type.md) +**Returns:** [Type](/api/javadoc/client/api/events/internal/Type.md) ### getKeyCode() diff --git a/docs/api/client/api/events/internal/EventRusherHack.md b/docs/api/javadoc/client/api/events/internal/EventRusherHack.md similarity index 70% rename from docs/api/client/api/events/internal/EventRusherHack.md rename to docs/api/javadoc/client/api/events/internal/EventRusherHack.md index 6006243..2f4673b 100644 --- a/docs/api/client/api/events/internal/EventRusherHack.md +++ b/docs/api/javadoc/client/api/events/internal/EventRusherHack.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.internal` -**Source:** `org/rusherhack/client/api/events/internal/EventRusherHack.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/internal/EventRusherHack.java` Class for RusherHack events * **Author:** John200410 1/5/2023 diff --git a/docs/api/javadoc/client/api/events/internal/PostInit.md b/docs/api/javadoc/client/api/events/internal/PostInit.md new file mode 100644 index 0000000..22a9c42 --- /dev/null +++ b/docs/api/javadoc/client/api/events/internal/PostInit.md @@ -0,0 +1,12 @@ +# PostInit + +**Package:** `org.rusherhack.client.api.events.internal` + +**Source:** `org/rusherhack/api/javadoc/client/api/events/internal/EventRusherHack.java` + +Called after RusherHack is initialized + +## Overview + +`PostInit` is a class that extends [EventRusherHack](/api/javadoc/client/api/events/internal/EventRusherHack.md). + diff --git a/docs/api/client/api/events/internal/Type.md b/docs/api/javadoc/client/api/events/internal/Type.md similarity index 60% rename from docs/api/client/api/events/internal/Type.md rename to docs/api/javadoc/client/api/events/internal/Type.md index 2b97d25..c718e76 100644 --- a/docs/api/client/api/events/internal/Type.md +++ b/docs/api/javadoc/client/api/events/internal/Type.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.internal` -**Source:** `org/rusherhack/client/api/events/internal/EventKeybindPress.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/internal/EventKeybindPress.java` ## Overview diff --git a/docs/api/javadoc/client/api/events/internal/Unload.md b/docs/api/javadoc/client/api/events/internal/Unload.md new file mode 100644 index 0000000..09ec3b7 --- /dev/null +++ b/docs/api/javadoc/client/api/events/internal/Unload.md @@ -0,0 +1,10 @@ +# Unload + +**Package:** `org.rusherhack.client.api.events.internal` + +**Source:** `org/rusherhack/api/javadoc/client/api/events/internal/EventRusherHack.java` + +## Overview + +`Unload` is a class that extends [EventRusherHack](/api/javadoc/client/api/events/internal/EventRusherHack.md). + diff --git a/docs/api/client/api/events/network/Action.md b/docs/api/javadoc/client/api/events/network/Action.md similarity index 59% rename from docs/api/client/api/events/network/Action.md rename to docs/api/javadoc/client/api/events/network/Action.md index 263bb3e..0c58af7 100644 --- a/docs/api/client/api/events/network/Action.md +++ b/docs/api/javadoc/client/api/events/network/Action.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.network` -**Source:** `org/rusherhack/client/api/events/network/EventPlayerConnection.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/network/EventPlayerConnection.java` ## Overview diff --git a/docs/api/client/api/events/network/EventPacket.md b/docs/api/javadoc/client/api/events/network/EventPacket.md similarity index 86% rename from docs/api/client/api/events/network/EventPacket.md rename to docs/api/javadoc/client/api/events/network/EventPacket.md index 401f394..d29eae0 100644 --- a/docs/api/client/api/events/network/EventPacket.md +++ b/docs/api/javadoc/client/api/events/network/EventPacket.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.network` -**Source:** `org/rusherhack/client/api/events/network/EventPacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/network/EventPacket.java` **Author:** John200410 6/2/2023 diff --git a/docs/api/client/api/events/network/EventPlayerConnection.md b/docs/api/javadoc/client/api/events/network/EventPlayerConnection.md similarity index 82% rename from docs/api/client/api/events/network/EventPlayerConnection.md rename to docs/api/javadoc/client/api/events/network/EventPlayerConnection.md index a152679..a62faa4 100644 --- a/docs/api/client/api/events/network/EventPlayerConnection.md +++ b/docs/api/javadoc/client/api/events/network/EventPlayerConnection.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.network` -**Source:** `org/rusherhack/client/api/events/network/EventPlayerConnection.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/network/EventPlayerConnection.java` This event is called when a player joins/leaves the server. * **Author:** John200410 8/24/2023 @@ -23,7 +23,7 @@ public EventPlayerConnection(Action action, UUID uuid, String name, PlayerInfo p | Name | Type | Modifiers | |------|------|----------| -| action | [Action](/client/api/events/network/Action.md) | private final | +| action | [Action](/api/javadoc/client/api/events/network/Action.md) | private final | | uuid | [UUID](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html) | private final | | name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | | playerInfo | `PlayerInfo` | private final | @@ -53,7 +53,7 @@ public UUID getUUID() public Action getAction() ``` -**Returns:** [Action](/client/api/events/network/Action.md) +**Returns:** [Action](/api/javadoc/client/api/events/network/Action.md) ### getPlayerInfo() diff --git a/docs/api/client/api/events/network/Receive.md b/docs/api/javadoc/client/api/events/network/Receive.md similarity index 53% rename from docs/api/client/api/events/network/Receive.md rename to docs/api/javadoc/client/api/events/network/Receive.md index 87edd4d..7048804 100644 --- a/docs/api/client/api/events/network/Receive.md +++ b/docs/api/javadoc/client/api/events/network/Receive.md @@ -2,13 +2,13 @@ **Package:** `org.rusherhack.client.api.events.network` -**Source:** `org/rusherhack/client/api/events/network/EventPacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/network/EventPacket.java` This event is called when a packet is being received from the server. ## Overview -`Receive` is a class that extends [EventPacket](/client/api/events/network/EventPacket.md). +`Receive` is a class that extends [EventPacket](/api/javadoc/client/api/events/network/EventPacket.md). ## Constructor diff --git a/docs/api/client/api/events/network/Send.md b/docs/api/javadoc/client/api/events/network/Send.md similarity index 52% rename from docs/api/client/api/events/network/Send.md rename to docs/api/javadoc/client/api/events/network/Send.md index 2866c50..03c1afb 100644 --- a/docs/api/client/api/events/network/Send.md +++ b/docs/api/javadoc/client/api/events/network/Send.md @@ -2,13 +2,13 @@ **Package:** `org.rusherhack.client.api.events.network` -**Source:** `org/rusherhack/client/api/events/network/EventPacket.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/network/EventPacket.java` This event is called when a packet is being sent to the server. ## Overview -`Send` is a class that extends [EventPacket](/client/api/events/network/EventPacket.md). +`Send` is a class that extends [EventPacket](/api/javadoc/client/api/events/network/EventPacket.md). ## Constructor diff --git a/docs/api/client/api/events/player/Action.md b/docs/api/javadoc/client/api/events/player/Action.md similarity index 65% rename from docs/api/client/api/events/player/Action.md rename to docs/api/javadoc/client/api/events/player/Action.md index f27898b..3fbac4a 100644 --- a/docs/api/client/api/events/player/Action.md +++ b/docs/api/javadoc/client/api/events/player/Action.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.player` -**Source:** `org/rusherhack/client/api/events/player/EventInteract.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/player/EventInteract.java` ## Overview diff --git a/docs/api/client/api/events/player/EventInteract.md b/docs/api/javadoc/client/api/events/player/EventInteract.md similarity index 85% rename from docs/api/client/api/events/player/EventInteract.md rename to docs/api/javadoc/client/api/events/player/EventInteract.md index a7dd5dd..5b7bbc5 100644 --- a/docs/api/client/api/events/player/EventInteract.md +++ b/docs/api/javadoc/client/api/events/player/EventInteract.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.player` -**Source:** `org/rusherhack/client/api/events/player/EventInteract.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/player/EventInteract.java` @author historian**Author:** John200410 7/5/2023 @@ -25,7 +25,7 @@ public EventInteract(Entity entity, InteractionHand hand, boolean usingSecondary |------|------|----------| | targetEntity | `Entity` | private final | | hand | `InteractionHand` | private final | -| action | [Action](/client/api/events/network/Action.md) | private final | +| action | [Action](/api/javadoc/client/api/events/network/Action.md) | private final | | hitResult | `EntityHitResult` | private final | | usingSecondaryAction | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | @@ -54,7 +54,7 @@ public InteractionHand getHand() public Action getAction() ``` -**Returns:** [Action](/client/api/events/network/Action.md) +**Returns:** [Action](/api/javadoc/client/api/events/network/Action.md) ### getHitResult() diff --git a/docs/api/client/api/events/player/EventMove.md b/docs/api/javadoc/client/api/events/player/EventMove.md similarity index 95% rename from docs/api/client/api/events/player/EventMove.md rename to docs/api/javadoc/client/api/events/player/EventMove.md index b5800fd..c82f0c9 100644 --- a/docs/api/client/api/events/player/EventMove.md +++ b/docs/api/javadoc/client/api/events/player/EventMove.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.player` -**Source:** `org/rusherhack/client/api/events/player/EventMove.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/player/EventMove.java` This event is called when the player is moving * **Author:** John200410 6/14/2023 diff --git a/docs/api/client/api/events/player/EventPlayerUpdate.md b/docs/api/javadoc/client/api/events/player/EventPlayerUpdate.md similarity index 97% rename from docs/api/client/api/events/player/EventPlayerUpdate.md rename to docs/api/javadoc/client/api/events/player/EventPlayerUpdate.md index 2be0e7f..6bea193 100644 --- a/docs/api/client/api/events/player/EventPlayerUpdate.md +++ b/docs/api/javadoc/client/api/events/player/EventPlayerUpdate.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.player` -**Source:** `org/rusherhack/client/api/events/player/EventPlayerUpdate.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/player/EventPlayerUpdate.java` This event is called when the game is preparing to send player updates to the server. diff --git a/docs/api/client/api/events/player/EventTravel.md b/docs/api/javadoc/client/api/events/player/EventTravel.md similarity index 84% rename from docs/api/client/api/events/player/EventTravel.md rename to docs/api/javadoc/client/api/events/player/EventTravel.md index f4b1c21..8ecfce3 100644 --- a/docs/api/client/api/events/player/EventTravel.md +++ b/docs/api/javadoc/client/api/events/player/EventTravel.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.player` -**Source:** `org/rusherhack/client/api/events/player/EventTravel.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/player/EventTravel.java` Wraps around Player#travel method @@ -27,7 +27,7 @@ public EventTravel(Vec2 rotationVector, Action action) | Name | Type | Modifiers | |------|------|----------| -| action | [Action](/client/api/events/network/Action.md) | private final | +| action | [Action](/api/javadoc/client/api/events/network/Action.md) | private final | | yaw | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private | | pitch | [float](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Float.html) | private | @@ -48,7 +48,7 @@ public Vec2 getRotationVector() public Action getAction() ``` -**Returns:** [Action](/client/api/events/network/Action.md) +**Returns:** [Action](/api/javadoc/client/api/events/network/Action.md) ### getYaw() diff --git a/docs/api/client/api/events/player/FallOnBlock.md b/docs/api/javadoc/client/api/events/player/FallOnBlock.md similarity index 71% rename from docs/api/client/api/events/player/FallOnBlock.md rename to docs/api/javadoc/client/api/events/player/FallOnBlock.md index 38a8eb5..2379b64 100644 --- a/docs/api/client/api/events/player/FallOnBlock.md +++ b/docs/api/javadoc/client/api/events/player/FallOnBlock.md @@ -2,13 +2,13 @@ **Package:** `org.rusherhack.client.api.events.player` -**Source:** `org/rusherhack/client/api/events/player/EventMove.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/player/EventMove.java` This event is called when the player lands on a block (used in slime blocks and bed blocks to bounce the player) ## Overview -`FallOnBlock` is a class that extends [EventMove](/client/api/events/player/EventMove.md). +`FallOnBlock` is a class that extends [EventMove](/api/javadoc/client/api/events/player/EventMove.md). ## Constructor diff --git a/docs/api/client/api/events/player/Mount.md b/docs/api/javadoc/client/api/events/player/Mount.md similarity index 69% rename from docs/api/client/api/events/player/Mount.md rename to docs/api/javadoc/client/api/events/player/Mount.md index 0df82f8..5e35509 100644 --- a/docs/api/client/api/events/player/Mount.md +++ b/docs/api/javadoc/client/api/events/player/Mount.md @@ -2,13 +2,13 @@ **Package:** `org.rusherhack.client.api.events.player` -**Source:** `org/rusherhack/client/api/events/player/EventMove.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/player/EventMove.java` This event is called when an entity carrying the player is moving ## Overview -`Mount` is a class that extends [EventMove](/client/api/events/player/EventMove.md). +`Mount` is a class that extends [EventMove](/api/javadoc/client/api/events/player/EventMove.md). ## Constructor diff --git a/docs/api/client/api/events/render/Armor.md b/docs/api/javadoc/client/api/events/render/Armor.md similarity index 59% rename from docs/api/client/api/events/render/Armor.md rename to docs/api/javadoc/client/api/events/render/Armor.md index 4c84972..1acde85 100644 --- a/docs/api/client/api/events/render/Armor.md +++ b/docs/api/javadoc/client/api/events/render/Armor.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderEntity.java` ## Overview diff --git a/docs/api/client/api/events/render/Background.md b/docs/api/javadoc/client/api/events/render/Background.md similarity index 86% rename from docs/api/client/api/events/render/Background.md rename to docs/api/javadoc/client/api/events/render/Background.md index fd62579..0942f30 100644 --- a/docs/api/client/api/events/render/Background.md +++ b/docs/api/javadoc/client/api/events/render/Background.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderScreen.java` ## Overview diff --git a/docs/api/client/api/events/render/Check.md b/docs/api/javadoc/client/api/events/render/Check.md similarity index 89% rename from docs/api/client/api/events/render/Check.md rename to docs/api/javadoc/client/api/events/render/Check.md index 7a20119..df9edfb 100644 --- a/docs/api/client/api/events/render/Check.md +++ b/docs/api/javadoc/client/api/events/render/Check.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderEntity.java` ## Overview diff --git a/docs/api/client/api/events/render/EventRender.md b/docs/api/javadoc/client/api/events/render/EventRender.md similarity index 88% rename from docs/api/client/api/events/render/EventRender.md rename to docs/api/javadoc/client/api/events/render/EventRender.md index bad09a0..a19e246 100644 --- a/docs/api/client/api/events/render/EventRender.md +++ b/docs/api/javadoc/client/api/events/render/EventRender.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRender.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRender.java` **Author:** John200410 5/30/2023 diff --git a/docs/api/client/api/events/render/EventRender2D.md b/docs/api/javadoc/client/api/events/render/EventRender2D.md similarity index 68% rename from docs/api/client/api/events/render/EventRender2D.md rename to docs/api/javadoc/client/api/events/render/EventRender2D.md index b8aaad7..1f164dc 100644 --- a/docs/api/client/api/events/render/EventRender2D.md +++ b/docs/api/javadoc/client/api/events/render/EventRender2D.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRender2D.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRender2D.java` This event is called during the game's 2D rendering stage * **Author:** John200410 @@ -11,7 +11,7 @@ This event is called during the game's 2D rendering stage ## Overview -`EventRender2D` is a class that extends [EventRender](/client/api/events/render/EventRender.md). +`EventRender2D` is a class that extends [EventRender](/api/javadoc/client/api/events/render/EventRender.md). ## Constructor @@ -23,7 +23,7 @@ public EventRender2D(GuiGraphics graphics, float partialTicks) | Name | Type | Modifiers | |------|------|----------| -| renderContext | [RenderContext](/client/api/render/RenderContext.md) | private final | +| renderContext | [RenderContext](/api/javadoc/client/api/render/RenderContext.md) | private final | | graphics | `GuiGraphics` | private final | @@ -43,7 +43,7 @@ public Matrix3x2fStack getMatrixStack() public RenderContext getRenderContext() ``` -**Returns:** [RenderContext](/client/api/render/RenderContext.md) +**Returns:** [RenderContext](/api/javadoc/client/api/render/RenderContext.md) ### getGraphics() diff --git a/docs/api/client/api/events/render/EventRender3D.md b/docs/api/javadoc/client/api/events/render/EventRender3D.md similarity index 64% rename from docs/api/client/api/events/render/EventRender3D.md rename to docs/api/javadoc/client/api/events/render/EventRender3D.md index 2c2089d..de3b062 100644 --- a/docs/api/client/api/events/render/EventRender3D.md +++ b/docs/api/javadoc/client/api/events/render/EventRender3D.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRender3D.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRender3D.java` This event is called during the game's 3D rendering stage * **Author:** John200410 5/30/2023 @@ -11,7 +11,7 @@ This event is called during the game's 3D rendering stage ## Overview -`EventRender3D` is a class that extends [EventRender](/client/api/events/render/EventRender.md). +`EventRender3D` is a class that extends [EventRender](/api/javadoc/client/api/events/render/EventRender.md). ## Constructor @@ -23,7 +23,7 @@ public EventRender3D(IRenderer3D renderer, PoseStack poseStack, float partialTic | Name | Type | Modifiers | |------|------|----------| -| renderer | [IRenderer3D](/client/api/render/IRenderer3D.md) | private final | +| renderer | [IRenderer3D](/api/javadoc/client/api/render/IRenderer3D.md) | private final | | poseStack | `PoseStack` | private final | @@ -43,7 +43,7 @@ public PoseStack getMatrixStack() public IRenderer3D getRenderer() ``` -**Returns:** [IRenderer3D](/client/api/render/IRenderer3D.md) +**Returns:** [IRenderer3D](/api/javadoc/client/api/render/IRenderer3D.md) ### getLevel() diff --git a/docs/api/client/api/events/render/EventRenderBlockEntity.md b/docs/api/javadoc/client/api/events/render/EventRenderBlockEntity.md similarity index 96% rename from docs/api/client/api/events/render/EventRenderBlockEntity.md rename to docs/api/javadoc/client/api/events/render/EventRenderBlockEntity.md index 594dd39..7833d66 100644 --- a/docs/api/client/api/events/render/EventRenderBlockEntity.md +++ b/docs/api/javadoc/client/api/events/render/EventRenderBlockEntity.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderBlockEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderBlockEntity.java` **Author:** John200410 12/13/2023 diff --git a/docs/api/client/api/events/render/EventRenderEntity.md b/docs/api/javadoc/client/api/events/render/EventRenderEntity.md similarity index 97% rename from docs/api/client/api/events/render/EventRenderEntity.md rename to docs/api/javadoc/client/api/events/render/EventRenderEntity.md index d402805..e71d82b 100644 --- a/docs/api/client/api/events/render/EventRenderEntity.md +++ b/docs/api/javadoc/client/api/events/render/EventRenderEntity.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderEntity.java` **Author:** John200410 7/6/2023 diff --git a/docs/api/client/api/events/render/EventRenderScreen.md b/docs/api/javadoc/client/api/events/render/EventRenderScreen.md similarity index 95% rename from docs/api/client/api/events/render/EventRenderScreen.md rename to docs/api/javadoc/client/api/events/render/EventRenderScreen.md index f7d68b7..8e59b09 100644 --- a/docs/api/client/api/events/render/EventRenderScreen.md +++ b/docs/api/javadoc/client/api/events/render/EventRenderScreen.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderScreen.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderScreen.java` **Author:** John200410 7/27/2023 diff --git a/docs/api/client/api/events/render/ItemFrameParts.md b/docs/api/javadoc/client/api/events/render/ItemFrameParts.md similarity index 59% rename from docs/api/client/api/events/render/ItemFrameParts.md rename to docs/api/javadoc/client/api/events/render/ItemFrameParts.md index 29f13cf..fa42d94 100644 --- a/docs/api/client/api/events/render/ItemFrameParts.md +++ b/docs/api/javadoc/client/api/events/render/ItemFrameParts.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderEntity.java` ## Overview @@ -18,7 +18,7 @@ public ItemFrameParts(Part part) | Name | Type | Modifiers | |------|------|----------| -| part | [Part](/client/api/events/render/Part.md) | private final | +| part | [Part](/api/javadoc/client/api/events/render/Part.md) | private final | ## Methods @@ -29,5 +29,5 @@ public ItemFrameParts(Part part) public Part getPart() ``` -**Returns:** [Part](/client/api/events/render/Part.md) +**Returns:** [Part](/api/javadoc/client/api/events/render/Part.md) diff --git a/docs/api/client/api/events/render/Nametag.md b/docs/api/javadoc/client/api/events/render/Nametag.md similarity index 94% rename from docs/api/client/api/events/render/Nametag.md rename to docs/api/javadoc/client/api/events/render/Nametag.md index 3e2f7bb..ebf3c92 100644 --- a/docs/api/client/api/events/render/Nametag.md +++ b/docs/api/javadoc/client/api/events/render/Nametag.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderEntity.java` ## Overview diff --git a/docs/api/client/api/events/render/Part.md b/docs/api/javadoc/client/api/events/render/Part.md similarity index 59% rename from docs/api/client/api/events/render/Part.md rename to docs/api/javadoc/client/api/events/render/Part.md index 9d046c9..14570b3 100644 --- a/docs/api/client/api/events/render/Part.md +++ b/docs/api/javadoc/client/api/events/render/Part.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderEntity.java` ## Overview diff --git a/docs/api/client/api/events/render/PlayerRotations.md b/docs/api/javadoc/client/api/events/render/PlayerRotations.md similarity index 91% rename from docs/api/client/api/events/render/PlayerRotations.md rename to docs/api/javadoc/client/api/events/render/PlayerRotations.md index 4734031..d861e56 100644 --- a/docs/api/client/api/events/render/PlayerRotations.md +++ b/docs/api/javadoc/client/api/events/render/PlayerRotations.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.render` -**Source:** `org/rusherhack/client/api/events/render/EventRenderEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/render/EventRenderEntity.java` ## Overview diff --git a/docs/api/client/api/events/world/Add.md b/docs/api/javadoc/client/api/events/world/Add.md similarity index 65% rename from docs/api/client/api/events/world/Add.md rename to docs/api/javadoc/client/api/events/world/Add.md index 3bdb24c..4a85792 100644 --- a/docs/api/client/api/events/world/Add.md +++ b/docs/api/javadoc/client/api/events/world/Add.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.events.world` -**Source:** `org/rusherhack/client/api/events/world/EventEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/world/EventEntity.java` ## Overview -`Add` is a class that extends [EventEntity](/client/api/events/world/EventEntity.md). +`Add` is a class that extends [EventEntity](/api/javadoc/client/api/events/world/EventEntity.md). ## Constructor diff --git a/docs/api/client/api/events/world/EventChunk.md b/docs/api/javadoc/client/api/events/world/EventChunk.md similarity index 84% rename from docs/api/client/api/events/world/EventChunk.md rename to docs/api/javadoc/client/api/events/world/EventChunk.md index 37f7995..d241282 100644 --- a/docs/api/client/api/events/world/EventChunk.md +++ b/docs/api/javadoc/client/api/events/world/EventChunk.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.world` -**Source:** `org/rusherhack/client/api/events/world/EventChunk.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/world/EventChunk.java` **Author:** John200410 7/19/2023 diff --git a/docs/api/client/api/events/world/EventEntity.md b/docs/api/javadoc/client/api/events/world/EventEntity.md similarity index 84% rename from docs/api/client/api/events/world/EventEntity.md rename to docs/api/javadoc/client/api/events/world/EventEntity.md index ae975eb..9edd990 100644 --- a/docs/api/client/api/events/world/EventEntity.md +++ b/docs/api/javadoc/client/api/events/world/EventEntity.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.world` -**Source:** `org/rusherhack/client/api/events/world/EventEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/world/EventEntity.java` **Author:** John200410 7/19/2023 diff --git a/docs/api/client/api/events/world/EventLoadWorld.md b/docs/api/javadoc/client/api/events/world/EventLoadWorld.md similarity index 79% rename from docs/api/client/api/events/world/EventLoadWorld.md rename to docs/api/javadoc/client/api/events/world/EventLoadWorld.md index 0972844..4e4a6ee 100644 --- a/docs/api/client/api/events/world/EventLoadWorld.md +++ b/docs/api/javadoc/client/api/events/world/EventLoadWorld.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.events.world` -**Source:** `org/rusherhack/client/api/events/world/EventLoadWorld.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/world/EventLoadWorld.java` This event is called when the world is being changed. * **Author:** John200410 12/14/2022 diff --git a/docs/api/client/api/events/world/Load.md b/docs/api/javadoc/client/api/events/world/Load.md similarity index 75% rename from docs/api/client/api/events/world/Load.md rename to docs/api/javadoc/client/api/events/world/Load.md index 8b56709..9307405 100644 --- a/docs/api/client/api/events/world/Load.md +++ b/docs/api/javadoc/client/api/events/world/Load.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.events.world` -**Source:** `org/rusherhack/client/api/events/world/EventChunk.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/world/EventChunk.java` ## Overview -`Load` is a class that extends [EventChunk](/client/api/events/world/EventChunk.md). +`Load` is a class that extends [EventChunk](/api/javadoc/client/api/events/world/EventChunk.md). ## Constructor diff --git a/docs/api/client/api/events/world/Remove.md b/docs/api/javadoc/client/api/events/world/Remove.md similarity index 76% rename from docs/api/client/api/events/world/Remove.md rename to docs/api/javadoc/client/api/events/world/Remove.md index 84e6967..97d9070 100644 --- a/docs/api/client/api/events/world/Remove.md +++ b/docs/api/javadoc/client/api/events/world/Remove.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.events.world` -**Source:** `org/rusherhack/client/api/events/world/EventEntity.java` +**Source:** `org/rusherhack/api/javadoc/client/api/events/world/EventEntity.java` ## Overview -`Remove` is a class that extends [EventEntity](/client/api/events/world/EventEntity.md). +`Remove` is a class that extends [EventEntity](/api/javadoc/client/api/events/world/EventEntity.md). ## Constructor diff --git a/docs/api/javadoc/client/api/events/world/Unload.md b/docs/api/javadoc/client/api/events/world/Unload.md new file mode 100644 index 0000000..3001a25 --- /dev/null +++ b/docs/api/javadoc/client/api/events/world/Unload.md @@ -0,0 +1,16 @@ +# Unload + +**Package:** `org.rusherhack.client.api.events.world` + +**Source:** `org/rusherhack/api/javadoc/client/api/events/world/EventChunk.java` + +## Overview + +`Unload` is a class that extends [EventChunk](/api/javadoc/client/api/events/world/EventChunk.md). + +## Constructor + +```java +public Unload(ChunkPos pos) +``` + diff --git a/docs/api/client/api/feature/command/Command.md b/docs/api/javadoc/client/api/feature/command/Command.md similarity index 56% rename from docs/api/client/api/feature/command/Command.md rename to docs/api/javadoc/client/api/feature/command/Command.md index 261131c..0e13987 100644 --- a/docs/api/client/api/feature/command/Command.md +++ b/docs/api/javadoc/client/api/feature/command/Command.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.command` -**Source:** `org/rusherhack/client/api/feature/command/Command.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/command/Command.java` **Author:** John200410 9/3/2023 @@ -10,7 +10,7 @@ ## Overview -`Command` is a class that extends [AbstractCommand](/core/command/AbstractCommand.md) and implements [Globals](/client/api/Globals.md). +`Command` is a class that extends [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) and implements [Globals](/api/javadoc/client/api/Globals.md). ## Constructor diff --git a/docs/api/client/api/feature/command/FeatureCommand.md b/docs/api/javadoc/client/api/feature/command/FeatureCommand.md similarity index 60% rename from docs/api/client/api/feature/command/FeatureCommand.md rename to docs/api/javadoc/client/api/feature/command/FeatureCommand.md index 38c7d58..2b813e0 100644 --- a/docs/api/client/api/feature/command/FeatureCommand.md +++ b/docs/api/javadoc/client/api/feature/command/FeatureCommand.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.command` -**Source:** `org/rusherhack/client/api/feature/command/FeatureCommand.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/command/FeatureCommand.java` A command that lets you configure a feature's settings. * **Author:** John200410 8/11/2023 @@ -11,7 +11,7 @@ A command that lets you configure a feature's settings. ## Overview -`FeatureCommand` is a class that extends [Command](/client/api/feature/command/Command.md). +`FeatureCommand` is a class that extends [Command](/api/javadoc/client/api/feature/command/Command.md). ## Constructor @@ -23,7 +23,7 @@ public FeatureCommand(IFeatureConfigurable feature) | Name | Type | Modifiers | |------|------|----------| -| feature | [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md) | private final | +| feature | [IFeatureConfigurable](/api/javadoc/core/feature/IFeatureConfigurable.md) | private final | ## Methods @@ -42,5 +42,5 @@ public boolean isHidden() public IFeatureConfigurable getFeature() ``` -**Returns:** [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md) +**Returns:** [IFeatureConfigurable](/api/javadoc/core/feature/IFeatureConfigurable.md) diff --git a/docs/api/client/api/feature/command/ModuleCommand.md b/docs/api/javadoc/client/api/feature/command/ModuleCommand.md similarity index 61% rename from docs/api/client/api/feature/command/ModuleCommand.md rename to docs/api/javadoc/client/api/feature/command/ModuleCommand.md index fbc4bb1..1bdc471 100644 --- a/docs/api/client/api/feature/command/ModuleCommand.md +++ b/docs/api/javadoc/client/api/feature/command/ModuleCommand.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.command` -**Source:** `org/rusherhack/client/api/feature/command/ModuleCommand.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/command/ModuleCommand.java` **Author:** John200410 5/23/2023 @@ -10,7 +10,7 @@ ## Overview -`ModuleCommand` is a class that extends [ToggleableFeatureCommand](/client/api/feature/command/ToggleableFeatureCommand.md). +`ModuleCommand` is a class that extends [ToggleableFeatureCommand](/api/javadoc/client/api/feature/command/ToggleableFeatureCommand.md). ## Constructor diff --git a/docs/api/client/api/feature/command/ToggleableFeatureCommand.md b/docs/api/javadoc/client/api/feature/command/ToggleableFeatureCommand.md similarity index 75% rename from docs/api/client/api/feature/command/ToggleableFeatureCommand.md rename to docs/api/javadoc/client/api/feature/command/ToggleableFeatureCommand.md index b011d88..b239e6e 100644 --- a/docs/api/client/api/feature/command/ToggleableFeatureCommand.md +++ b/docs/api/javadoc/client/api/feature/command/ToggleableFeatureCommand.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.command` -**Source:** `org/rusherhack/client/api/feature/command/ToggleableFeatureCommand.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/command/ToggleableFeatureCommand.java` **Author:** john@rusherhack.org 12/24/2025 @@ -10,7 +10,7 @@ ## Overview -`ToggleableFeatureCommand` is a class that extends [FeatureCommand](/client/api/feature/command/FeatureCommand.md). +`ToggleableFeatureCommand` is a class that extends [FeatureCommand](/api/javadoc/client/api/feature/command/FeatureCommand.md). ## Constructor diff --git a/docs/api/client/api/feature/command/arg/BlockReference.md b/docs/api/javadoc/client/api/feature/command/arg/BlockReference.md similarity index 70% rename from docs/api/client/api/feature/command/arg/BlockReference.md rename to docs/api/javadoc/client/api/feature/command/arg/BlockReference.md index 1495177..fd2d93e 100644 --- a/docs/api/client/api/feature/command/arg/BlockReference.md +++ b/docs/api/javadoc/client/api/feature/command/arg/BlockReference.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.command.arg` -**Source:** `org/rusherhack/client/api/feature/command/arg/BlockReference.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/command/arg/BlockReference.java` **Author:** John200410 8/18/2023 diff --git a/docs/api/client/api/feature/command/arg/EnchantReference.md b/docs/api/javadoc/client/api/feature/command/arg/EnchantReference.md similarity index 73% rename from docs/api/client/api/feature/command/arg/EnchantReference.md rename to docs/api/javadoc/client/api/feature/command/arg/EnchantReference.md index cc36a29..a13511a 100644 --- a/docs/api/client/api/feature/command/arg/EnchantReference.md +++ b/docs/api/javadoc/client/api/feature/command/arg/EnchantReference.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.command.arg` -**Source:** `org/rusherhack/client/api/feature/command/arg/EnchantReference.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/command/arg/EnchantReference.java` **Author:** historian diff --git a/docs/api/client/api/feature/command/arg/ItemReference.md b/docs/api/javadoc/client/api/feature/command/arg/ItemReference.md similarity index 70% rename from docs/api/client/api/feature/command/arg/ItemReference.md rename to docs/api/javadoc/client/api/feature/command/arg/ItemReference.md index ad5acfa..fd447fa 100644 --- a/docs/api/client/api/feature/command/arg/ItemReference.md +++ b/docs/api/javadoc/client/api/feature/command/arg/ItemReference.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.command.arg` -**Source:** `org/rusherhack/client/api/feature/command/arg/ItemReference.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/command/arg/ItemReference.java` **Author:** John200410 8/18/2023 diff --git a/docs/api/client/api/feature/command/arg/PlayerReference.md b/docs/api/javadoc/client/api/feature/command/arg/PlayerReference.md similarity index 63% rename from docs/api/client/api/feature/command/arg/PlayerReference.md rename to docs/api/javadoc/client/api/feature/command/arg/PlayerReference.md index bffac4c..17c5dfb 100644 --- a/docs/api/client/api/feature/command/arg/PlayerReference.md +++ b/docs/api/javadoc/client/api/feature/command/arg/PlayerReference.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.command.arg` -**Source:** `org/rusherhack/client/api/feature/command/arg/PlayerReference.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/command/arg/PlayerReference.java` **Author:** John200410 7/6/2023 diff --git a/docs/api/client/api/feature/hud/Alignment.md b/docs/api/javadoc/client/api/feature/hud/Alignment.md similarity index 71% rename from docs/api/client/api/feature/hud/Alignment.md rename to docs/api/javadoc/client/api/feature/hud/Alignment.md index 99457b7..b218ffa 100644 --- a/docs/api/client/api/feature/hud/Alignment.md +++ b/docs/api/javadoc/client/api/feature/hud/Alignment.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/HudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/HudElement.java` ## Overview diff --git a/docs/api/client/api/feature/hud/ColorMode.md b/docs/api/javadoc/client/api/feature/hud/ColorMode.md similarity index 73% rename from docs/api/client/api/feature/hud/ColorMode.md rename to docs/api/javadoc/client/api/feature/hud/ColorMode.md index d290dc5..f15108d 100644 --- a/docs/api/client/api/feature/hud/ColorMode.md +++ b/docs/api/javadoc/client/api/feature/hud/ColorMode.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/ListHudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/ListHudElement.java` Change how the color of the items are decided when the color setting is set to rainbow diff --git a/docs/api/client/api/feature/hud/HudElement.md b/docs/api/javadoc/client/api/feature/hud/HudElement.md similarity index 80% rename from docs/api/client/api/feature/hud/HudElement.md rename to docs/api/javadoc/client/api/feature/hud/HudElement.md index 7ed7ca9..1db50b5 100644 --- a/docs/api/client/api/feature/hud/HudElement.md +++ b/docs/api/javadoc/client/api/feature/hud/HudElement.md @@ -2,9 +2,9 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/HudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/HudElement.java` -A hud element is a draggable [ElementBase](/client/api/ui/ElementBase.md) that can be rendered on the screen. +A hud element is a draggable [ElementBase](/api/javadoc/client/api/ui/ElementBase.md) that can be rendered on the screen. * TODO: refactor and document **Author:** John200410 3/15/2023 @@ -12,7 +12,7 @@ A hud element is a draggable [ElementBase](/client/api/ui/ElementBase.md) that c ## Overview -`HudElement` is a class that extends [ScaledElementBase](/client/api/ui/ScaledElementBase.md) and implements [IHudElement](/client/api/feature/hud/IHudElement.md), [IBindable](/core/bind/IBindable.md), `EventListener`, [ILoggable](/core/logging/ILoggable.md), [Globals](/client/api/Globals.md). +`HudElement` is a class that extends [ScaledElementBase](/api/javadoc/client/api/ui/ScaledElementBase.md) and implements [IHudElement](/api/javadoc/client/api/feature/hud/IHudElement.md), [IBindable](/api/javadoc/core/bind/IBindable.md), `EventListener`, [ILoggable](/api/javadoc/core/logging/ILoggable.md), [Globals](/api/javadoc/client/api/Globals.md). ## Constructor @@ -32,13 +32,13 @@ public HudElement(String name, String description) | displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | | toggled | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | -| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | private final | -| snapPoint | [SnapPoint](/client/api/feature/hud/SnapPoint.md) | protected | -| alignment | [Alignment](/client/api/feature/hud/Alignment.md) | protected | +| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> | private final | +| snapPoint | [SnapPoint](/api/javadoc/client/api/feature/hud/SnapPoint.md) | protected | +| alignment | [Alignment](/api/javadoc/client/api/feature/hud/Alignment.md) | protected | | dragging | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | | dragDeltaX | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | | dragDeltaY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | -| logger | [ILogger](/core/logging/ILogger.md) | protected final | +| logger | [ILogger](/api/javadoc/core/logging/ILogger.md) | protected final | ## Methods @@ -105,7 +105,7 @@ public String getReferenceKey() public List> getSettings() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> ### mouseClicked() @@ -181,7 +181,7 @@ public void onKeybindEvent() public ILogger getLogger() ``` -**Returns:** [ILogger](/core/logging/ILogger.md) +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) ### isToggled() @@ -211,7 +211,7 @@ public boolean isListening() public AbstractCommand createCommand() ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### setX() @@ -283,7 +283,7 @@ public double getScale() public IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### getSnapPoint() @@ -291,7 +291,7 @@ public IFontRenderer getFontRenderer() public SnapPoint getSnapPoint() ``` -**Returns:** [SnapPoint](/client/api/feature/hud/SnapPoint.md) +**Returns:** [SnapPoint](/api/javadoc/client/api/feature/hud/SnapPoint.md) ### setSnapPoint() @@ -337,7 +337,7 @@ protected boolean shouldUpdateAlignment() public Alignment getAlignment() ``` -**Returns:** [Alignment](/client/api/feature/hud/Alignment.md) +**Returns:** [Alignment](/api/javadoc/client/api/feature/hud/Alignment.md) ### calculateAlignment() @@ -345,7 +345,7 @@ public Alignment getAlignment() public static Alignment calculateAlignment(HudElement element) ``` -**Returns:** [Alignment](/client/api/feature/hud/Alignment.md) +**Returns:** [Alignment](/api/javadoc/client/api/feature/hud/Alignment.md) ### calculateAlignment() @@ -353,5 +353,5 @@ public static Alignment calculateAlignment(HudElement element) public static Alignment calculateAlignment(double x, double y) ``` -**Returns:** [Alignment](/client/api/feature/hud/Alignment.md) +**Returns:** [Alignment](/api/javadoc/client/api/feature/hud/Alignment.md) diff --git a/docs/api/client/api/feature/hud/IHudElement.md b/docs/api/javadoc/client/api/feature/hud/IHudElement.md similarity index 66% rename from docs/api/client/api/feature/hud/IHudElement.md rename to docs/api/javadoc/client/api/feature/hud/IHudElement.md index 1dfdbc9..3d9ca0e 100644 --- a/docs/api/client/api/feature/hud/IHudElement.md +++ b/docs/api/javadoc/client/api/feature/hud/IHudElement.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/IHudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/IHudElement.java` Hud element interface * **Author:** John200410 3/6/2023 @@ -11,7 +11,7 @@ Hud element interface ## Overview -`IHudElement` is a interface that extends [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md), [IRenderable2D](/client/api/render/IRenderable2D.md), [IToggleable](/core/interfaces/IToggleable.md), [ITickable](/core/interfaces/ITickable.md), [IDraggable](/core/interfaces/IDraggable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). +`IHudElement` is a interface that extends [IFeatureConfigurable](/api/javadoc/core/feature/IFeatureConfigurable.md), [IRenderable2D](/api/javadoc/client/api/render/IRenderable2D.md), [IToggleable](/api/javadoc/core/interfaces/IToggleable.md), [ITickable](/api/javadoc/core/interfaces/ITickable.md), [IDraggable](/api/javadoc/core/interfaces/IDraggable.md), [JsonSerializable](/api/javadoc/core/serialize/JsonSerializable.md). ## Methods diff --git a/docs/api/client/api/feature/hud/ListHudElement.md b/docs/api/javadoc/client/api/feature/hud/ListHudElement.md similarity index 72% rename from docs/api/client/api/feature/hud/ListHudElement.md rename to docs/api/javadoc/client/api/feature/hud/ListHudElement.md index 864a388..4eb979a 100644 --- a/docs/api/client/api/feature/hud/ListHudElement.md +++ b/docs/api/javadoc/client/api/feature/hud/ListHudElement.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/ListHudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/ListHudElement.java` A hud element that will display a list of items * TODO: refactor and use generic to specify listitem type @@ -12,7 +12,7 @@ A hud element that will display a list of items ## Overview -`ListHudElement` is a class that extends [HudElement](/client/api/feature/hud/HudElement.md). +`ListHudElement` is a class that extends [HudElement](/api/javadoc/client/api/feature/hud/HudElement.md). ## Constructor @@ -31,13 +31,13 @@ public ListHudElement(String name, boolean sorting) | width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | | height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | | cache | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private | -| members | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ListItem](/client/api/feature/hud/ListItem.md)> | protected | +| members | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ListItem](/api/javadoc/client/api/feature/hud/ListItem.md)> | protected | | sorting | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | | max | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | -| color | [ColorSetting](/client/api/setting/ColorSetting.md) | protected final | -| colorMode | [EnumSetting](/core/setting/EnumSetting.md)<[ColorMode](/client/api/system/ColorMode.md)> | protected final | -| sortMode | [EnumSetting](/core/setting/EnumSetting.md)<[SortingMode](/client/api/feature/hud/SortingMode.md)> | protected final | -| animations | [BooleanSetting](/core/setting/BooleanSetting.md) | protected final | +| color | [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) | protected final | +| colorMode | [EnumSetting](/api/javadoc/core/setting/EnumSetting.md)<[ColorMode](/api/javadoc/client/api/system/ColorMode.md)> | protected final | +| sortMode | [EnumSetting](/api/javadoc/core/setting/EnumSetting.md)<[SortingMode](/api/javadoc/client/api/feature/hud/SortingMode.md)> | protected final | +| animations | [BooleanSetting](/api/javadoc/core/setting/BooleanSetting.md) | protected final | ## Methods @@ -100,7 +100,7 @@ public double getHeight() public List getMembers() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ListItem](/client/api/feature/hud/ListItem.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ListItem](/api/javadoc/client/api/feature/hud/ListItem.md)> ### getComparator() diff --git a/docs/api/client/api/feature/hud/ListItem.md b/docs/api/javadoc/client/api/feature/hud/ListItem.md similarity index 81% rename from docs/api/client/api/feature/hud/ListItem.md rename to docs/api/javadoc/client/api/feature/hud/ListItem.md index ea9a919..1b7f771 100644 --- a/docs/api/client/api/feature/hud/ListItem.md +++ b/docs/api/javadoc/client/api/feature/hud/ListItem.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/ListHudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/ListHudElement.java` An item that gets rendered in this list * **Author:** John200410 12/14/2021 @@ -23,8 +23,8 @@ public ListItem(ListHudElement parent) | Name | Type | Modifiers | |------|------|----------| -| parent | [ListHudElement](/client/api/feature/hud/ListHudElement.md) | private final | -| animation | [Animation](/core/animation/Animation.md) | private final | +| parent | [ListHudElement](/api/javadoc/client/api/feature/hud/ListHudElement.md) | private final | +| animation | [Animation](/api/javadoc/core/animation/Animation.md) | private final | | markedForRemoval | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | cachedComponent | `Component` | private | | cachedWidth | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | @@ -132,7 +132,7 @@ public int getColor(int index) public Animation getAnimation() ``` -**Returns:** [Animation](/core/animation/Animation.md) +**Returns:** [Animation](/api/javadoc/core/animation/Animation.md) ### getRenderer() @@ -140,7 +140,7 @@ public Animation getAnimation() public IRenderer2D getRenderer() ``` -**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) +**Returns:** [IRenderer2D](/api/javadoc/client/api/render/IRenderer2D.md) ### getFontRenderer() @@ -148,7 +148,7 @@ public IRenderer2D getRenderer() public IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### getParent() @@ -156,5 +156,5 @@ public IFontRenderer getFontRenderer() public ListHudElement getParent() ``` -**Returns:** [ListHudElement](/client/api/feature/hud/ListHudElement.md) +**Returns:** [ListHudElement](/api/javadoc/client/api/feature/hud/ListHudElement.md) diff --git a/docs/api/client/api/feature/hud/ResizeableHudElement.md b/docs/api/javadoc/client/api/feature/hud/ResizeableHudElement.md similarity index 84% rename from docs/api/client/api/feature/hud/ResizeableHudElement.md rename to docs/api/javadoc/client/api/feature/hud/ResizeableHudElement.md index 13caa20..681a8c8 100644 --- a/docs/api/client/api/feature/hud/ResizeableHudElement.md +++ b/docs/api/javadoc/client/api/feature/hud/ResizeableHudElement.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/ResizeableHudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/ResizeableHudElement.java` Hud element which can be scaled. TODO: make dragging show dragging mouse cursor @@ -12,7 +12,7 @@ TODO: make dragging show dragging mouse cursor ## Overview -`ResizeableHudElement` is a class that extends [HudElement](/client/api/feature/hud/HudElement.md). +`ResizeableHudElement` is a class that extends [HudElement](/api/javadoc/client/api/feature/hud/HudElement.md). ## Constructor @@ -28,7 +28,7 @@ public ResizeableHudElement(String name) | resizeStartScale | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | | resizeDeltaX | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | | resizeDeltaY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | -| scale | [NumberSetting](/core/setting/NumberSetting.md)<[Double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)> | protected final | +| scale | [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<[Double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html)> | protected final | ## Methods diff --git a/docs/api/client/api/feature/hud/ShortListHudElement.md b/docs/api/javadoc/client/api/feature/hud/ShortListHudElement.md similarity index 74% rename from docs/api/client/api/feature/hud/ShortListHudElement.md rename to docs/api/javadoc/client/api/feature/hud/ShortListHudElement.md index 97e1fde..a6b30bb 100644 --- a/docs/api/client/api/feature/hud/ShortListHudElement.md +++ b/docs/api/javadoc/client/api/feature/hud/ShortListHudElement.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/ShortListHudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/ShortListHudElement.java` **Author:** John200410 7/25/2023 @@ -10,7 +10,7 @@ ## Overview -`ShortListHudElement` is a class that extends [HudElement](/client/api/feature/hud/HudElement.md). +`ShortListHudElement` is a class that extends [HudElement](/api/javadoc/client/api/feature/hud/HudElement.md). ## Constructor @@ -24,8 +24,8 @@ public ShortListHudElement(String name) |------|------|----------| | COMMA_SEPARATOR_COMPONENT | `Component` | public static final | | PADDING | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | public static final | -| color | [ColorSetting](/client/api/setting/ColorSetting.md) | private final | -| axis | [EnumSetting](/core/setting/EnumSetting.md)<[TextAxis](/client/api/feature/hud/TextAxis.md)> | protected final | +| color | [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) | private final | +| axis | [EnumSetting](/api/javadoc/core/setting/EnumSetting.md)<[TextAxis](/api/javadoc/client/api/feature/hud/TextAxis.md)> | protected final | | list | `Component` | private | | width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | | height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | diff --git a/docs/api/client/api/feature/hud/SnapPoint.md b/docs/api/javadoc/client/api/feature/hud/SnapPoint.md similarity index 90% rename from docs/api/client/api/feature/hud/SnapPoint.md rename to docs/api/javadoc/client/api/feature/hud/SnapPoint.md index b584f6b..11d35cf 100644 --- a/docs/api/client/api/feature/hud/SnapPoint.md +++ b/docs/api/javadoc/client/api/feature/hud/SnapPoint.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/HudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/HudElement.java` Points at which hud elements are able to "snap" to * **Author:** John200410 3/15/2023 diff --git a/docs/api/client/api/feature/hud/SortingMode.md b/docs/api/javadoc/client/api/feature/hud/SortingMode.md similarity index 77% rename from docs/api/client/api/feature/hud/SortingMode.md rename to docs/api/javadoc/client/api/feature/hud/SortingMode.md index d149cea..61a9d3b 100644 --- a/docs/api/client/api/feature/hud/SortingMode.md +++ b/docs/api/javadoc/client/api/feature/hud/SortingMode.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/ListHudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/ListHudElement.java` ## Overview @@ -18,7 +18,7 @@ | Name | Type | Modifiers | |------|------|----------| -| comparator | [Comparator](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Comparator.html)<[ListItem](/client/api/feature/hud/ListItem.md)> | public final | +| comparator | [Comparator](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Comparator.html)<[ListItem](/api/javadoc/client/api/feature/hud/ListItem.md)> | public final | ## Constants diff --git a/docs/api/client/api/feature/hud/TextAxis.md b/docs/api/javadoc/client/api/feature/hud/TextAxis.md similarity index 59% rename from docs/api/client/api/feature/hud/TextAxis.md rename to docs/api/javadoc/client/api/feature/hud/TextAxis.md index 32af78f..1c948f5 100644 --- a/docs/api/client/api/feature/hud/TextAxis.md +++ b/docs/api/javadoc/client/api/feature/hud/TextAxis.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/ShortListHudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/ShortListHudElement.java` ## Overview diff --git a/docs/api/client/api/feature/hud/TextHudElement.md b/docs/api/javadoc/client/api/feature/hud/TextHudElement.md similarity index 76% rename from docs/api/client/api/feature/hud/TextHudElement.md rename to docs/api/javadoc/client/api/feature/hud/TextHudElement.md index ac34226..80b9be1 100644 --- a/docs/api/client/api/feature/hud/TextHudElement.md +++ b/docs/api/javadoc/client/api/feature/hud/TextHudElement.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.hud` -**Source:** `org/rusherhack/client/api/feature/hud/TextHudElement.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/hud/TextHudElement.java` Basic hud element with text and a label * **Author:** John200410 1/4/2023 @@ -11,7 +11,7 @@ Basic hud element with text and a label ## Overview -`TextHudElement` is a class that extends [HudElement](/client/api/feature/hud/HudElement.md). +`TextHudElement` is a class that extends [HudElement](/api/javadoc/client/api/feature/hud/HudElement.md). ## Constructor @@ -30,10 +30,10 @@ public TextHudElement(String name, boolean labeled) | PADDING | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | public static final | | labeled | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | | widthCache | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | -| color | [ColorSetting](/client/api/setting/ColorSetting.md) | private final | -| labelVisible | [BooleanSetting](/core/setting/BooleanSetting.md) | private final | -| labelColor | [ColorSetting](/client/api/setting/ColorSetting.md) | private final | -| colon | [BooleanSetting](/core/setting/BooleanSetting.md) | private final | +| color | [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) | private final | +| labelVisible | [BooleanSetting](/api/javadoc/core/setting/BooleanSetting.md) | private final | +| labelColor | [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) | private final | +| colon | [BooleanSetting](/api/javadoc/core/setting/BooleanSetting.md) | private final | ## Methods diff --git a/docs/api/client/api/feature/module/IModule.md b/docs/api/javadoc/client/api/feature/module/IModule.md similarity index 65% rename from docs/api/client/api/feature/module/IModule.md rename to docs/api/javadoc/client/api/feature/module/IModule.md index 1ae934c..e5ea4c2 100644 --- a/docs/api/client/api/feature/module/IModule.md +++ b/docs/api/javadoc/client/api/feature/module/IModule.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.module` -**Source:** `org/rusherhack/client/api/feature/module/IModule.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/module/IModule.java` A categorized feature with settings * **Author:** John200410 1/15/2023 @@ -11,7 +11,7 @@ A categorized feature with settings ## Overview -`IModule` is a interface that extends [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md), [INotifiable](/core/notification/INotifiable.md), [IHideable](/core/interfaces/IHideable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). +`IModule` is a interface that extends [IFeatureConfigurable](/api/javadoc/core/feature/IFeatureConfigurable.md), [INotifiable](/api/javadoc/core/notification/INotifiable.md), [IHideable](/api/javadoc/core/interfaces/IHideable.md), [JsonSerializable](/api/javadoc/core/serialize/JsonSerializable.md). ## Methods @@ -25,7 +25,7 @@ A categorized feature with settings -**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) +**Returns:** [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) ### getMetadata() diff --git a/docs/api/client/api/feature/module/Module.md b/docs/api/javadoc/client/api/feature/module/Module.md similarity index 84% rename from docs/api/client/api/feature/module/Module.md rename to docs/api/javadoc/client/api/feature/module/Module.md index 1102405..a411bea 100644 --- a/docs/api/client/api/feature/module/Module.md +++ b/docs/api/javadoc/client/api/feature/module/Module.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.module` -**Source:** `org/rusherhack/client/api/feature/module/Module.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/module/Module.java` A base module with no implementation * **Author:** John200410 1/16/2023 @@ -11,7 +11,7 @@ A base module with no implementation ## Overview -`Module` is a class and implements [IModule](/client/api/feature/module/IModule.md), `EventListener`, [ILoggable](/core/logging/ILoggable.md), [Globals](/client/api/Globals.md). +`Module` is a class and implements [IModule](/api/javadoc/client/api/feature/module/IModule.md), `EventListener`, [ILoggable](/api/javadoc/core/logging/ILoggable.md), [Globals](/api/javadoc/client/api/Globals.md). ## Constructor @@ -31,13 +31,13 @@ public Module(String name, String description, ModuleCategory category) | displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | | description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | | aliases | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private final | -| category | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | private final | +| category | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | private final | | hidden | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | drawn | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | notifications | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | listening | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | -| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | private final | -| logger | [ILogger](/core/logging/ILogger.md) | protected final | +| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> | private final | +| logger | [ILogger](/api/javadoc/core/logging/ILogger.md) | protected final | ## Methods @@ -106,7 +106,7 @@ public String getReferenceKey() public ModuleCategory getCategory() ``` -**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) +**Returns:** [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) ### sendNotification() @@ -144,7 +144,7 @@ public void registerSettings(Setting settings) public List> getSettings() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> ### isDrawn() @@ -238,7 +238,7 @@ public void setListening(boolean state) public ILogger getLogger() ``` -**Returns:** [ILogger](/core/logging/ILogger.md) +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) ### createCommand() @@ -246,5 +246,5 @@ public ILogger getLogger() public AbstractCommand createCommand() ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) diff --git a/docs/api/client/api/feature/module/ModuleCategory.md b/docs/api/javadoc/client/api/feature/module/ModuleCategory.md similarity index 55% rename from docs/api/client/api/feature/module/ModuleCategory.md rename to docs/api/javadoc/client/api/feature/module/ModuleCategory.md index f03a408..21e944f 100644 --- a/docs/api/client/api/feature/module/ModuleCategory.md +++ b/docs/api/javadoc/client/api/feature/module/ModuleCategory.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.module` -**Source:** `org/rusherhack/client/api/feature/module/ModuleCategory.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/module/ModuleCategory.java` **Author:** John200410 1/16/2023 @@ -10,7 +10,7 @@ ## Overview -`ModuleCategory` is a class and implements [INamed](/core/interfaces/INamed.md), [IReferenceable](/core/interfaces/IReferenceable.md). +`ModuleCategory` is a class and implements [INamed](/api/javadoc/core/interfaces/INamed.md), [IReferenceable](/api/javadoc/core/interfaces/IReferenceable.md). ## Constructor @@ -22,16 +22,16 @@ | Name | Type | Modifiers | |------|------|----------| -| CATEGORY_REGISTRY | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ModuleCategory](/client/api/feature/module/ModuleCategory.md)> | private static final | -| CHAT | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | -| COMBAT | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | -| MISC | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | -| MOVEMENT | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | -| PLAYER | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | -| RENDER | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | -| WORLD | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | -| CLIENT | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | -| EXTERNAL | [ModuleCategory](/client/api/feature/module/ModuleCategory.md) | public static final | +| CATEGORY_REGISTRY | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md)> | private static final | +| CHAT | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | public static final | +| COMBAT | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | public static final | +| MISC | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | public static final | +| MOVEMENT | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | public static final | +| PLAYER | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | public static final | +| RENDER | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | public static final | +| WORLD | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | public static final | +| CLIENT | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | public static final | +| EXTERNAL | [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) | public static final | | name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | | displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | @@ -74,7 +74,7 @@ public boolean isDefaultCategory() public static ModuleCategory getOrRegister(String name) ``` -**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) +**Returns:** [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) ### register() @@ -87,7 +87,7 @@ Register a new module category -**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) +**Returns:** [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) ### register() @@ -101,7 +101,7 @@ private static void register(ModuleCategory category) public static ModuleCategory getCategoryByName(String name) ``` -**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md) +**Returns:** [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md) ### getCategories() @@ -109,7 +109,7 @@ public static ModuleCategory getCategoryByName(String name) public static List getCategories() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ModuleCategory](/client/api/feature/module/ModuleCategory.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md)> ### values() @@ -119,7 +119,7 @@ public static ModuleCategory[] values() kept for backwards compatibility (this class used to be an enum) -**Returns:** [ModuleCategory](/client/api/feature/module/ModuleCategory.md)[] +**Returns:** [ModuleCategory](/api/javadoc/client/api/feature/module/ModuleCategory.md)[] ### initializeCategories() diff --git a/docs/api/client/api/feature/module/ToggleableModule.md b/docs/api/javadoc/client/api/feature/module/ToggleableModule.md similarity index 85% rename from docs/api/client/api/feature/module/ToggleableModule.md rename to docs/api/javadoc/client/api/feature/module/ToggleableModule.md index 070d74a..326b1e7 100644 --- a/docs/api/client/api/feature/module/ToggleableModule.md +++ b/docs/api/javadoc/client/api/feature/module/ToggleableModule.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.module` -**Source:** `org/rusherhack/client/api/feature/module/ToggleableModule.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/module/ToggleableModule.java` A module that can be toggled * **Author:** John200410 1/17/2023 @@ -11,7 +11,7 @@ A module that can be toggled ## Overview -`ToggleableModule` is a class that extends [Module](/client/api/feature/module/Module.md) and implements [IToggleable](/core/interfaces/IToggleable.md), [IBindable](/core/bind/IBindable.md). +`ToggleableModule` is a class that extends [Module](/api/javadoc/client/api/feature/module/Module.md) and implements [IToggleable](/api/javadoc/core/interfaces/IToggleable.md), [IBindable](/api/javadoc/core/bind/IBindable.md). ## Constructor diff --git a/docs/api/client/api/feature/window/PinnableWindow.md b/docs/api/javadoc/client/api/feature/window/PinnableWindow.md similarity index 80% rename from docs/api/client/api/feature/window/PinnableWindow.md rename to docs/api/javadoc/client/api/feature/window/PinnableWindow.md index dd50952..b3b7cbf 100644 --- a/docs/api/client/api/feature/window/PinnableWindow.md +++ b/docs/api/javadoc/client/api/feature/window/PinnableWindow.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.window` -**Source:** `org/rusherhack/client/api/feature/window/PinnableWindow.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/window/PinnableWindow.java` A window that can be pinned to the screen * **Author:** John200410 4/8/2024 @@ -11,7 +11,7 @@ A window that can be pinned to the screen ## Overview -`PinnableWindow` is a class that extends [Window](/client/api/feature/window/Window.md) and implements [IPinnable](/core/interfaces/IPinnable.md). +`PinnableWindow` is a class that extends [Window](/api/javadoc/client/api/feature/window/Window.md) and implements [IPinnable](/api/javadoc/core/interfaces/IPinnable.md). ## Constructor diff --git a/docs/api/client/api/feature/window/PopupWindow.md b/docs/api/javadoc/client/api/feature/window/PopupWindow.md similarity index 72% rename from docs/api/client/api/feature/window/PopupWindow.md rename to docs/api/javadoc/client/api/feature/window/PopupWindow.md index dc59a5e..aa6b87c 100644 --- a/docs/api/client/api/feature/window/PopupWindow.md +++ b/docs/api/javadoc/client/api/feature/window/PopupWindow.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.window` -**Source:** `org/rusherhack/client/api/feature/window/PopupWindow.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/window/PopupWindow.java` A popup window which is meant to be created as a child of another window. * **Author:** John200410 @@ -11,7 +11,7 @@ A popup window which is meant to be created as a child of another window. ## Overview -`PopupWindow` is a class that extends [Window](/client/api/feature/window/Window.md). +`PopupWindow` is a class that extends [Window](/api/javadoc/client/api/feature/window/Window.md). ## Constructor @@ -38,8 +38,8 @@ window. | Name | Type | Modifiers | |------|------|----------| -| content | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowContent](/client/api/ui/window/content/WindowContent.md)> | protected final | -| rootView | [WindowView](/client/api/ui/window/view/WindowView.md) | protected | +| content | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md)> | protected final | +| rootView | [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) | protected | ## Methods @@ -61,7 +61,7 @@ Adds a WindowContent to the content list of this popup window. public WindowView getRootView() ``` -**Returns:** [WindowView](/client/api/ui/window/view/WindowView.md) +**Returns:** [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) ### onClose() diff --git a/docs/api/client/api/feature/window/ResizeableWindow.md b/docs/api/javadoc/client/api/feature/window/ResizeableWindow.md similarity index 92% rename from docs/api/client/api/feature/window/ResizeableWindow.md rename to docs/api/javadoc/client/api/feature/window/ResizeableWindow.md index 8eab690..5aea83a 100644 --- a/docs/api/client/api/feature/window/ResizeableWindow.md +++ b/docs/api/javadoc/client/api/feature/window/ResizeableWindow.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.window` -**Source:** `org/rusherhack/client/api/feature/window/ResizeableWindow.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/window/ResizeableWindow.java` A resizeable window * **Author:** John200410 @@ -11,7 +11,7 @@ A resizeable window ## Overview -`ResizeableWindow` is a class that extends [PinnableWindow](/client/api/feature/window/PinnableWindow.md). +`ResizeableWindow` is a class that extends [PinnableWindow](/api/javadoc/client/api/feature/window/PinnableWindow.md). ## Constructor diff --git a/docs/api/client/api/feature/window/Window.md b/docs/api/javadoc/client/api/feature/window/Window.md similarity index 84% rename from docs/api/client/api/feature/window/Window.md rename to docs/api/javadoc/client/api/feature/window/Window.md index 4409974..d6f9c3c 100644 --- a/docs/api/client/api/feature/window/Window.md +++ b/docs/api/javadoc/client/api/feature/window/Window.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.feature.window` -**Source:** `org/rusherhack/client/api/feature/window/Window.java` +**Source:** `org/rusherhack/api/javadoc/client/api/feature/window/Window.java` **Author:** John200410 @@ -10,7 +10,7 @@ ## Overview -`Window` is a class that extends [ElementBase](/client/api/ui/ElementBase.md) and implements [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md), [Globals](/client/api/Globals.md), [IDraggable](/core/interfaces/IDraggable.md), [IScrollable](/core/interfaces/IScrollable.md), [ITypeable](/core/interfaces/ITypeable.md), [ITickable](/core/interfaces/ITickable.md), [IHideable](/core/interfaces/IHideable.md), [IBindable](/core/bind/IBindable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). +`Window` is a class that extends [ElementBase](/api/javadoc/client/api/ui/ElementBase.md) and implements [IFeatureConfigurable](/api/javadoc/core/feature/IFeatureConfigurable.md), [Globals](/api/javadoc/client/api/Globals.md), [IDraggable](/api/javadoc/core/interfaces/IDraggable.md), [IScrollable](/api/javadoc/core/interfaces/IScrollable.md), [ITypeable](/api/javadoc/core/interfaces/ITypeable.md), [ITickable](/api/javadoc/core/interfaces/ITickable.md), [IHideable](/api/javadoc/core/interfaces/IHideable.md), [IBindable](/api/javadoc/core/bind/IBindable.md), [JsonSerializable](/api/javadoc/core/serialize/JsonSerializable.md). ## Constructor @@ -57,8 +57,8 @@ Constructs a new Window with the specified title, position and size. | name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | | displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | | description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | -| icon | [IGraphic](/client/api/render/graphic/IGraphic.md) | private | -| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | private final | +| icon | [IGraphic](/api/javadoc/client/api/render/graphic/IGraphic.md) | private | +| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> | private final | | width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | | height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | | focused | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | @@ -85,7 +85,7 @@ The root view that should contain all of this window's content -**Returns:** [WindowView](/client/api/ui/window/view/WindowView.md) +**Returns:** [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) ### mouseClicked() @@ -195,7 +195,7 @@ public String getReferenceKey() public List> getSettings() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> ### getWidth() @@ -302,7 +302,7 @@ public void setIcon(IGraphic icon) public IGraphic getIcon() ``` -**Returns:** [IGraphic](/client/api/render/graphic/IGraphic.md) +**Returns:** [IGraphic](/api/javadoc/client/api/render/graphic/IGraphic.md) ### renderIcon() @@ -323,7 +323,7 @@ Renders the icon of this window public AbstractCommand createCommand() ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### serialize() @@ -347,7 +347,7 @@ public boolean deserialize(JsonElement obj) public IRenderer2D getRenderer() ``` -**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) +**Returns:** [IRenderer2D](/api/javadoc/client/api/render/IRenderer2D.md) ### getFontRenderer() @@ -355,7 +355,7 @@ public IRenderer2D getRenderer() public IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### snapToRenderGrid() diff --git a/docs/api/client/api/plugin/IPlugin.md b/docs/api/javadoc/client/api/plugin/IPlugin.md similarity index 76% rename from docs/api/client/api/plugin/IPlugin.md rename to docs/api/javadoc/client/api/plugin/IPlugin.md index 98ecd3e..c4c770b 100644 --- a/docs/api/client/api/plugin/IPlugin.md +++ b/docs/api/javadoc/client/api/plugin/IPlugin.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.plugin` -**Source:** `org/rusherhack/client/api/plugin/IPlugin.java` +**Source:** `org/rusherhack/api/javadoc/client/api/plugin/IPlugin.java` Plugin interface for RusherHack * **Author:** John200410 2/23/2023 @@ -41,5 +41,5 @@ Called when the plugin is being unloaded -**Returns:** [ILogger](/core/logging/ILogger.md) +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) diff --git a/docs/api/javadoc/client/api/plugin/Plugin.md b/docs/api/javadoc/client/api/plugin/Plugin.md new file mode 100644 index 0000000..8509c39 --- /dev/null +++ b/docs/api/javadoc/client/api/plugin/Plugin.md @@ -0,0 +1,38 @@ +# Plugin + +**Package:** `org.rusherhack.client.api.plugin` + +**Source:** `org/rusherhack/api/javadoc/client/api/plugin/Plugin.java` + +Base implementation for [IPlugin](/api/javadoc/client/api/plugin/IPlugin.md) +* **Author:** John200410 10/20/2023 + + + +## Overview + +`Plugin` is a class and implements [IPlugin](/api/javadoc/client/api/plugin/IPlugin.md). + +## Constructor + +```java +public Plugin() +``` + +## Fields + +| Name | Type | Modifiers | +|------|------|----------| +| logger | [ILogger](/api/javadoc/core/logging/ILogger.md) | protected final | + + +## Methods + +### getLogger() + +```java +public ILogger getLogger() +``` + +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) + diff --git a/docs/api/client/api/render/DrawMode.md b/docs/api/javadoc/client/api/render/DrawMode.md similarity index 58% rename from docs/api/client/api/render/DrawMode.md rename to docs/api/javadoc/client/api/render/DrawMode.md index d4a92b5..5d1dd10 100644 --- a/docs/api/client/api/render/DrawMode.md +++ b/docs/api/javadoc/client/api/render/DrawMode.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render` -**Source:** `org/rusherhack/client/api/render/DrawMode.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/DrawMode.java` TODO: maybe use this * **Author:** john@rusherhack.org 3/17/2026 @@ -21,7 +21,7 @@ TODO: maybe use this public static DrawMode fillAndOutline(int fillColor, float outlineWidth) ``` -**Returns:** [DrawMode](/client/api/render/DrawMode.md) +**Returns:** [DrawMode](/api/javadoc/client/api/render/DrawMode.md) ### fillAndOutline() @@ -29,7 +29,7 @@ public static DrawMode fillAndOutline(int fillColor, float outlineWidth) public static DrawMode fillAndOutline(int fillColor, float outlineWidth, int outlineColor) ``` -**Returns:** [DrawMode](/client/api/render/DrawMode.md) +**Returns:** [DrawMode](/api/javadoc/client/api/render/DrawMode.md) ### fill() @@ -37,7 +37,7 @@ public static DrawMode fillAndOutline(int fillColor, float outlineWidth, int out public static DrawMode fill(int color) ``` -**Returns:** [DrawMode](/client/api/render/DrawMode.md) +**Returns:** [DrawMode](/api/javadoc/client/api/render/DrawMode.md) ### outline() @@ -45,7 +45,7 @@ public static DrawMode fill(int color) public static DrawMode outline(float width, int color) ``` -**Returns:** [DrawMode](/client/api/render/DrawMode.md) +**Returns:** [DrawMode](/api/javadoc/client/api/render/DrawMode.md) ### outline() @@ -53,7 +53,7 @@ public static DrawMode outline(float width, int color) public static DrawMode outline(int color) ``` -**Returns:** [DrawMode](/client/api/render/DrawMode.md) +**Returns:** [DrawMode](/api/javadoc/client/api/render/DrawMode.md) ### withFill() @@ -61,7 +61,7 @@ public static DrawMode outline(int color) public DrawMode withFill(int color) ``` -**Returns:** [DrawMode](/client/api/render/DrawMode.md) +**Returns:** [DrawMode](/api/javadoc/client/api/render/DrawMode.md) ### withOutline() @@ -69,7 +69,7 @@ public DrawMode withFill(int color) public DrawMode withOutline(float width, int color) ``` -**Returns:** [DrawMode](/client/api/render/DrawMode.md) +**Returns:** [DrawMode](/api/javadoc/client/api/render/DrawMode.md) ### withOutline() @@ -77,5 +77,5 @@ public DrawMode withOutline(float width, int color) public DrawMode withOutline(int color) ``` -**Returns:** [DrawMode](/client/api/render/DrawMode.md) +**Returns:** [DrawMode](/api/javadoc/client/api/render/DrawMode.md) diff --git a/docs/api/client/api/render/IRenderable2D.md b/docs/api/javadoc/client/api/render/IRenderable2D.md similarity index 64% rename from docs/api/client/api/render/IRenderable2D.md rename to docs/api/javadoc/client/api/render/IRenderable2D.md index febe2c6..9a3364e 100644 --- a/docs/api/client/api/render/IRenderable2D.md +++ b/docs/api/javadoc/client/api/render/IRenderable2D.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render` -**Source:** `org/rusherhack/client/api/render/IRenderable2D.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/IRenderable2D.java` ## Overview @@ -28,7 +28,7 @@ default void render(RenderContext context) default IRenderer2D getRenderer() ``` -**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) +**Returns:** [IRenderer2D](/api/javadoc/client/api/render/IRenderer2D.md) ### getFontRenderer() @@ -36,5 +36,5 @@ default IRenderer2D getRenderer() default IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) diff --git a/docs/api/client/api/render/IRenderer2D.md b/docs/api/javadoc/client/api/render/IRenderer2D.md similarity index 93% rename from docs/api/client/api/render/IRenderer2D.md rename to docs/api/javadoc/client/api/render/IRenderer2D.md index f622711..cbd6561 100644 --- a/docs/api/client/api/render/IRenderer2D.md +++ b/docs/api/javadoc/client/api/render/IRenderer2D.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render` -**Source:** `org/rusherhack/client/api/render/IRenderer2D.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/IRenderer2D.java` **Author:** John200410 12/29/2022 @@ -10,7 +10,7 @@ ## Overview -`IRenderer2D` is a interface that extends [IScissorable](/client/api/render/IScissorable.md). +`IRenderer2D` is a interface that extends [IScissorable](/api/javadoc/client/api/render/IScissorable.md). ## Methods @@ -58,7 +58,7 @@ IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### drawRectangle() diff --git a/docs/api/client/api/render/IRenderer3D.md b/docs/api/javadoc/client/api/render/IRenderer3D.md similarity index 98% rename from docs/api/client/api/render/IRenderer3D.md rename to docs/api/javadoc/client/api/render/IRenderer3D.md index 5bcdfb8..3a88360 100644 --- a/docs/api/client/api/render/IRenderer3D.md +++ b/docs/api/javadoc/client/api/render/IRenderer3D.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render` -**Source:** `org/rusherhack/client/api/render/IRenderer3D.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/IRenderer3D.java` TODO: possibly add drawQuad methods? drawVerticalQuad, drawHorizontalQuad, drawVerticalHorizontalQuad, draw HorizontalVerticalQuad TODO: billboarding diff --git a/docs/api/client/api/render/IScissorable.md b/docs/api/javadoc/client/api/render/IScissorable.md similarity index 84% rename from docs/api/client/api/render/IScissorable.md rename to docs/api/javadoc/client/api/render/IScissorable.md index c282a7e..614f381 100644 --- a/docs/api/client/api/render/IScissorable.md +++ b/docs/api/javadoc/client/api/render/IScissorable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render` -**Source:** `org/rusherhack/client/api/render/IScissorable.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/IScissorable.java` ## Overview diff --git a/docs/api/client/api/render/RenderContext.md b/docs/api/javadoc/client/api/render/RenderContext.md similarity index 75% rename from docs/api/client/api/render/RenderContext.md rename to docs/api/javadoc/client/api/render/RenderContext.md index 4c0516e..7978d3d 100644 --- a/docs/api/client/api/render/RenderContext.md +++ b/docs/api/javadoc/client/api/render/RenderContext.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render` -**Source:** `org/rusherhack/client/api/render/RenderContext.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/RenderContext.java` **Author:** John200410 8/10/2023 diff --git a/docs/api/client/api/render/font/IFontRenderer.md b/docs/api/javadoc/client/api/render/font/IFontRenderer.md similarity index 96% rename from docs/api/client/api/render/font/IFontRenderer.md rename to docs/api/javadoc/client/api/render/font/IFontRenderer.md index 5eddd01..b3617e0 100644 --- a/docs/api/client/api/render/font/IFontRenderer.md +++ b/docs/api/javadoc/client/api/render/font/IFontRenderer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render.font` -**Source:** `org/rusherhack/client/api/render/font/IFontRenderer.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/font/IFontRenderer.java` Interface for font rendering @@ -15,7 +15,7 @@ TODO: documentation ## Overview -`IFontRenderer` is a interface that extends [IScissorable](/client/api/render/IScissorable.md). +`IFontRenderer` is a interface that extends [IScissorable](/api/javadoc/client/api/render/IScissorable.md). ## Methods diff --git a/docs/api/client/api/render/graphic/AbstractGraphic.md b/docs/api/javadoc/client/api/render/graphic/AbstractGraphic.md similarity index 90% rename from docs/api/client/api/render/graphic/AbstractGraphic.md rename to docs/api/javadoc/client/api/render/graphic/AbstractGraphic.md index 76f7b82..d9d326a 100644 --- a/docs/api/client/api/render/graphic/AbstractGraphic.md +++ b/docs/api/javadoc/client/api/render/graphic/AbstractGraphic.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render.graphic` -**Source:** `org/rusherhack/client/api/render/graphic/AbstractGraphic.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/graphic/AbstractGraphic.java` Base implementation for graphics backed by in-memory bytes. * **Author:** john@rusherhack.org 4/26/2026 @@ -11,7 +11,7 @@ Base implementation for graphics backed by in-memory bytes. ## Overview -`AbstractGraphic` is a class and implements [IGraphic](/client/api/render/graphic/IGraphic.md). +`AbstractGraphic` is a class and implements [IGraphic](/api/javadoc/client/api/render/graphic/IGraphic.md). ## Constructor diff --git a/docs/api/client/api/render/graphic/IGraphic.md b/docs/api/javadoc/client/api/render/graphic/IGraphic.md similarity index 94% rename from docs/api/client/api/render/graphic/IGraphic.md rename to docs/api/javadoc/client/api/render/graphic/IGraphic.md index 8f3ed02..8cd5048 100644 --- a/docs/api/client/api/render/graphic/IGraphic.md +++ b/docs/api/javadoc/client/api/render/graphic/IGraphic.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render.graphic` -**Source:** `org/rusherhack/client/api/render/graphic/IGraphic.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/graphic/IGraphic.java` Interface for graphics that can be rendered * **Author:** John200410 1/31/2023 diff --git a/docs/api/client/api/render/graphic/TextureGraphic.md b/docs/api/javadoc/client/api/render/graphic/TextureGraphic.md similarity index 65% rename from docs/api/client/api/render/graphic/TextureGraphic.md rename to docs/api/javadoc/client/api/render/graphic/TextureGraphic.md index 1b17cb2..e3799d1 100644 --- a/docs/api/client/api/render/graphic/TextureGraphic.md +++ b/docs/api/javadoc/client/api/render/graphic/TextureGraphic.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render.graphic` -**Source:** `org/rusherhack/client/api/render/graphic/TextureGraphic.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/graphic/TextureGraphic.java` **Author:** John200410 1/31/2023 @@ -10,7 +10,7 @@ ## Overview -`TextureGraphic` is a class that extends [AbstractGraphic](/client/api/render/graphic/AbstractGraphic.md). +`TextureGraphic` is a class that extends [AbstractGraphic](/api/javadoc/client/api/render/graphic/AbstractGraphic.md). ## Constructor diff --git a/docs/api/client/api/render/graphic/VectorGraphic.md b/docs/api/javadoc/client/api/render/graphic/VectorGraphic.md similarity index 79% rename from docs/api/client/api/render/graphic/VectorGraphic.md rename to docs/api/javadoc/client/api/render/graphic/VectorGraphic.md index bcf4dea..98d3196 100644 --- a/docs/api/client/api/render/graphic/VectorGraphic.md +++ b/docs/api/javadoc/client/api/render/graphic/VectorGraphic.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.render.graphic` -**Source:** `org/rusherhack/client/api/render/graphic/VectorGraphic.java` +**Source:** `org/rusherhack/api/javadoc/client/api/render/graphic/VectorGraphic.java` A vector graphic * **Author:** John200410 1/31/2023 @@ -11,7 +11,7 @@ A vector graphic ## Overview -`VectorGraphic` is a class that extends [AbstractGraphic](/client/api/render/graphic/AbstractGraphic.md). +`VectorGraphic` is a class that extends [AbstractGraphic](/api/javadoc/client/api/render/graphic/AbstractGraphic.md). ## Constructor diff --git a/docs/api/client/api/setting/BindSetting.md b/docs/api/javadoc/client/api/setting/BindSetting.md similarity index 66% rename from docs/api/client/api/setting/BindSetting.md rename to docs/api/javadoc/client/api/setting/BindSetting.md index 7907f7c..d9d6014 100644 --- a/docs/api/client/api/setting/BindSetting.md +++ b/docs/api/javadoc/client/api/setting/BindSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.setting` -**Source:** `org/rusherhack/client/api/setting/BindSetting.java` +**Source:** `org/rusherhack/api/javadoc/client/api/setting/BindSetting.java` **Author:** John200410 5/10/2023 @@ -10,7 +10,7 @@ ## Overview -`BindSetting` is a class that extends [Setting](/core/setting/Setting.md). +`BindSetting` is a class that extends [Setting](/api/javadoc/core/setting/Setting.md). ## Constructor @@ -30,7 +30,7 @@ public BindSetting(String name, String description, IKey value) public IKey parseValue(String string, boolean set) ``` -**Returns:** [IKey](/core/bind/key/IKey.md) +**Returns:** [IKey](/api/javadoc/core/bind/key/IKey.md) ### getDisplayValue() @@ -62,7 +62,7 @@ public JsonElement serializeValue() public BindSetting setDescription(String description) ``` -**Returns:** [BindSetting](/client/api/setting/BindSetting.md) +**Returns:** [BindSetting](/api/javadoc/client/api/setting/BindSetting.md) ### setVisibility() @@ -70,7 +70,7 @@ public BindSetting setDescription(String description) public BindSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [BindSetting](/client/api/setting/BindSetting.md) +**Returns:** [BindSetting](/api/javadoc/client/api/setting/BindSetting.md) ### onChange() @@ -78,7 +78,7 @@ public BindSetting setVisibility(BooleanSupplier tester) public BindSetting onChange(Runnable run) ``` -**Returns:** [BindSetting](/client/api/setting/BindSetting.md) +**Returns:** [BindSetting](/api/javadoc/client/api/setting/BindSetting.md) ### onChange() @@ -86,7 +86,7 @@ public BindSetting onChange(Runnable run) public BindSetting onChange(Consumer consumer) ``` -**Returns:** [BindSetting](/client/api/setting/BindSetting.md) +**Returns:** [BindSetting](/api/javadoc/client/api/setting/BindSetting.md) ### setHidden() @@ -94,7 +94,7 @@ public BindSetting onChange(Consumer consumer) public BindSetting setHidden(boolean hidden) ``` -**Returns:** [BindSetting](/client/api/setting/BindSetting.md) +**Returns:** [BindSetting](/api/javadoc/client/api/setting/BindSetting.md) ### setShouldSerialize() @@ -102,5 +102,5 @@ public BindSetting setHidden(boolean hidden) public BindSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [BindSetting](/client/api/setting/BindSetting.md) +**Returns:** [BindSetting](/api/javadoc/client/api/setting/BindSetting.md) diff --git a/docs/api/client/api/setting/BlockListSetting.md b/docs/api/javadoc/client/api/setting/BlockListSetting.md similarity index 78% rename from docs/api/client/api/setting/BlockListSetting.md rename to docs/api/javadoc/client/api/setting/BlockListSetting.md index 4dd9e40..e45c4ba 100644 --- a/docs/api/client/api/setting/BlockListSetting.md +++ b/docs/api/javadoc/client/api/setting/BlockListSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.setting` -**Source:** `org/rusherhack/client/api/setting/BlockListSetting.java` +**Source:** `org/rusherhack/api/javadoc/client/api/setting/BlockListSetting.java` **Author:** john@rusherhack.org 12/18/2025 @@ -10,7 +10,7 @@ ## Overview -`BlockListSetting` is a class that extends [ListSetting](/core/setting/ListSetting.md). +`BlockListSetting` is a class that extends [ListSetting](/api/javadoc/core/setting/ListSetting.md). ## Constructor @@ -74,7 +74,7 @@ public String[] getElementAttributes(Block element) public AbstractCommand createCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### getPossibleElements() @@ -90,7 +90,7 @@ public Collection getPossibleElements() protected AbstractCommand createAddCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createRemoveCommand() @@ -98,7 +98,7 @@ protected AbstractCommand createAddCommand(AbstractCommand parent) protected AbstractCommand createRemoveCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createListCommand() @@ -106,5 +106,5 @@ protected AbstractCommand createRemoveCommand(AbstractCommand parent) protected AbstractCommand createListCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) diff --git a/docs/api/client/api/setting/ColorSetting.md b/docs/api/javadoc/client/api/setting/ColorSetting.md similarity index 83% rename from docs/api/client/api/setting/ColorSetting.md rename to docs/api/javadoc/client/api/setting/ColorSetting.md index 21909e9..b2c031a 100644 --- a/docs/api/client/api/setting/ColorSetting.md +++ b/docs/api/javadoc/client/api/setting/ColorSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.setting` -**Source:** `org/rusherhack/client/api/setting/ColorSetting.java` +**Source:** `org/rusherhack/api/javadoc/client/api/setting/ColorSetting.java` **Author:** John200410 6/10/2023 @@ -10,7 +10,7 @@ ## Overview -`ColorSetting` is a class that extends [Setting](/core/setting/Setting.md). +`ColorSetting` is a class that extends [Setting](/api/javadoc/core/setting/Setting.md). ## Constructor @@ -32,7 +32,7 @@ public ColorSetting(String name, String description, Color value) |------|------|----------| | rainbow | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | hasRainbowOption | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | -| rainbowMode | [RainbowMode](/client/api/setting/RainbowMode.md) | private | +| rainbowMode | [RainbowMode](/api/javadoc/client/api/setting/RainbowMode.md) | private | | rainbowOffset | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private | | hasAlpha | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | themeSync | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | @@ -95,7 +95,7 @@ public boolean isRainbow() public ColorSetting setRainbow(boolean rainbow) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### isRainbowAllowed() @@ -111,7 +111,7 @@ public boolean isRainbowAllowed() public ColorSetting setRainbowAllowed(boolean hasRainbowOption) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### getRainbowMode() @@ -119,7 +119,7 @@ public ColorSetting setRainbowAllowed(boolean hasRainbowOption) public RainbowMode getRainbowMode() ``` -**Returns:** [RainbowMode](/client/api/setting/RainbowMode.md) +**Returns:** [RainbowMode](/api/javadoc/client/api/setting/RainbowMode.md) ### setRainbowMode() @@ -155,7 +155,7 @@ public boolean isAlphaAllowed() public ColorSetting setAlphaAllowed(boolean hasAlpha) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### isThemeSync() @@ -171,7 +171,7 @@ public boolean isThemeSync() public ColorSetting setThemeSync(boolean themeSync) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### isThemeSyncAllowed() @@ -187,7 +187,7 @@ public boolean isThemeSyncAllowed() public ColorSetting setThemeSyncAllowed(boolean themeSyncAllowed) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### parseValue() @@ -317,7 +317,7 @@ public float getBrightness() public ColorSetting setDescription(String description) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### setVisibility() @@ -325,7 +325,7 @@ public ColorSetting setDescription(String description) public ColorSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### onChange() @@ -333,7 +333,7 @@ public ColorSetting setVisibility(BooleanSupplier tester) public ColorSetting onChange(Runnable run) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### onChange() @@ -341,7 +341,7 @@ public ColorSetting onChange(Runnable run) public ColorSetting onChange(Consumer consumer) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### setHidden() @@ -349,7 +349,7 @@ public ColorSetting onChange(Consumer consumer) public ColorSetting setHidden(boolean hidden) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### setShouldSerialize() @@ -357,5 +357,5 @@ public ColorSetting setHidden(boolean hidden) public ColorSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) diff --git a/docs/api/client/api/setting/EntityTypeListSetting.md b/docs/api/javadoc/client/api/setting/EntityTypeListSetting.md similarity index 79% rename from docs/api/client/api/setting/EntityTypeListSetting.md rename to docs/api/javadoc/client/api/setting/EntityTypeListSetting.md index 6084fbd..839db2b 100644 --- a/docs/api/client/api/setting/EntityTypeListSetting.md +++ b/docs/api/javadoc/client/api/setting/EntityTypeListSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.setting` -**Source:** `org/rusherhack/client/api/setting/EntityTypeListSetting.java` +**Source:** `org/rusherhack/api/javadoc/client/api/setting/EntityTypeListSetting.java` **Author:** john@rusherhack.org 12/24/2025 @@ -10,7 +10,7 @@ ## Overview -`EntityTypeListSetting` is a class that extends [ListSetting](/core/setting/ListSetting.md). +`EntityTypeListSetting` is a class that extends [ListSetting](/api/javadoc/core/setting/ListSetting.md). ## Constructor @@ -74,7 +74,7 @@ public String[] getElementAttributes(EntityType element) public AbstractCommand createCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### getPossibleElements() @@ -90,7 +90,7 @@ public Collection> getPossibleElements() protected AbstractCommand createAddCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createRemoveCommand() @@ -98,7 +98,7 @@ protected AbstractCommand createAddCommand(AbstractCommand parent) protected AbstractCommand createRemoveCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createListCommand() @@ -106,5 +106,5 @@ protected AbstractCommand createRemoveCommand(AbstractCommand parent) protected AbstractCommand createListCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) diff --git a/docs/api/client/api/setting/ItemListSetting.md b/docs/api/javadoc/client/api/setting/ItemListSetting.md similarity index 78% rename from docs/api/client/api/setting/ItemListSetting.md rename to docs/api/javadoc/client/api/setting/ItemListSetting.md index e3f903b..a5f8c51 100644 --- a/docs/api/client/api/setting/ItemListSetting.md +++ b/docs/api/javadoc/client/api/setting/ItemListSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.setting` -**Source:** `org/rusherhack/client/api/setting/ItemListSetting.java` +**Source:** `org/rusherhack/api/javadoc/client/api/setting/ItemListSetting.java` **Author:** john@rusherhack.org 12/24/2025 @@ -10,7 +10,7 @@ ## Overview -`ItemListSetting` is a class that extends [ListSetting](/core/setting/ListSetting.md). +`ItemListSetting` is a class that extends [ListSetting](/api/javadoc/core/setting/ListSetting.md). ## Constructor @@ -74,7 +74,7 @@ public String[] getElementAttributes(Item element) public AbstractCommand createCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### getPossibleElements() @@ -90,7 +90,7 @@ public Collection getPossibleElements() protected AbstractCommand createAddCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createRemoveCommand() @@ -98,7 +98,7 @@ protected AbstractCommand createAddCommand(AbstractCommand parent) protected AbstractCommand createRemoveCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createListCommand() @@ -106,5 +106,5 @@ protected AbstractCommand createRemoveCommand(AbstractCommand parent) protected AbstractCommand createListCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) diff --git a/docs/api/client/api/setting/ModeSetting.md b/docs/api/javadoc/client/api/setting/ModeSetting.md similarity index 66% rename from docs/api/client/api/setting/ModeSetting.md rename to docs/api/javadoc/client/api/setting/ModeSetting.md index ba934ea..7ef6ce0 100644 --- a/docs/api/client/api/setting/ModeSetting.md +++ b/docs/api/javadoc/client/api/setting/ModeSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.setting` -**Source:** `org/rusherhack/client/api/setting/ModeSetting.java` +**Source:** `org/rusherhack/api/javadoc/client/api/setting/ModeSetting.java` **Author:** john@rusherhack.org 12/26/2025 @@ -10,7 +10,7 @@ ## Overview -`ModeSetting` is a class that extends [OptionSetting](/core/setting/OptionSetting.md). +`ModeSetting` is a class that extends [OptionSetting](/api/javadoc/core/setting/OptionSetting.md). ## Constructor @@ -62,7 +62,7 @@ public boolean deserializeValue(JsonElement json) public ModeSetting setDescription(String description) ``` -**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> +**Returns:** [ModeSetting](/api/javadoc/client/api/setting/ModeSetting.md)<`T`> ### setVisibility() @@ -70,7 +70,7 @@ public ModeSetting setDescription(String description) public ModeSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> +**Returns:** [ModeSetting](/api/javadoc/client/api/setting/ModeSetting.md)<`T`> ### onChange() @@ -78,7 +78,7 @@ public ModeSetting setVisibility(BooleanSupplier tester) public ModeSetting onChange(Runnable run) ``` -**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> +**Returns:** [ModeSetting](/api/javadoc/client/api/setting/ModeSetting.md)<`T`> ### onChange() @@ -86,7 +86,7 @@ public ModeSetting onChange(Runnable run) public ModeSetting onChange(Consumer consumer) ``` -**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> +**Returns:** [ModeSetting](/api/javadoc/client/api/setting/ModeSetting.md)<`T`> ### setHidden() @@ -94,7 +94,7 @@ public ModeSetting onChange(Consumer consumer) public ModeSetting setHidden(boolean hidden) ``` -**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> +**Returns:** [ModeSetting](/api/javadoc/client/api/setting/ModeSetting.md)<`T`> ### setShouldSerialize() @@ -102,5 +102,5 @@ public ModeSetting setHidden(boolean hidden) public ModeSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [ModeSetting](/client/api/setting/ModeSetting.md)<`T`> +**Returns:** [ModeSetting](/api/javadoc/client/api/setting/ModeSetting.md)<`T`> diff --git a/docs/api/client/api/setting/RainbowMode.md b/docs/api/javadoc/client/api/setting/RainbowMode.md similarity index 67% rename from docs/api/client/api/setting/RainbowMode.md rename to docs/api/javadoc/client/api/setting/RainbowMode.md index d9a3cf1..7210522 100644 --- a/docs/api/client/api/setting/RainbowMode.md +++ b/docs/api/javadoc/client/api/setting/RainbowMode.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.setting` -**Source:** `org/rusherhack/client/api/setting/ColorSetting.java` +**Source:** `org/rusherhack/api/javadoc/client/api/setting/ColorSetting.java` ## Overview diff --git a/docs/api/client/api/system/Accessor.md b/docs/api/javadoc/client/api/system/Accessor.md similarity index 77% rename from docs/api/client/api/system/Accessor.md rename to docs/api/javadoc/client/api/system/Accessor.md index 9d995ef..5cb299a 100644 --- a/docs/api/client/api/system/Accessor.md +++ b/docs/api/javadoc/client/api/system/Accessor.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IFieldRegistry.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IFieldRegistry.java` ## Overview diff --git a/docs/api/client/api/system/ColorMode.md b/docs/api/javadoc/client/api/system/ColorMode.md similarity index 66% rename from docs/api/client/api/system/ColorMode.md rename to docs/api/javadoc/client/api/system/ColorMode.md index e786a01..5bd893b 100644 --- a/docs/api/client/api/system/ColorMode.md +++ b/docs/api/javadoc/client/api/system/ColorMode.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/Colors.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/Colors.java` ## Overview diff --git a/docs/api/client/api/system/Colors.md b/docs/api/javadoc/client/api/system/Colors.md similarity index 85% rename from docs/api/client/api/system/Colors.md rename to docs/api/javadoc/client/api/system/Colors.md index 0f0bfdf..517af67 100644 --- a/docs/api/client/api/system/Colors.md +++ b/docs/api/javadoc/client/api/system/Colors.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/Colors.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/Colors.java` Interface for grabbing the user's color preferences * **Author:** John200410 6/16/2023 @@ -25,7 +25,7 @@ Interface for grabbing the user's color preferences -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### getRainbowColor() diff --git a/docs/api/client/api/system/Entities.md b/docs/api/javadoc/client/api/system/Entities.md similarity index 93% rename from docs/api/client/api/system/Entities.md rename to docs/api/javadoc/client/api/system/Entities.md index 48a7cc6..9021e8b 100644 --- a/docs/api/client/api/system/Entities.md +++ b/docs/api/javadoc/client/api/system/Entities.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/Entities.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/Entities.java` **Author:** John200410 6/20/2023 diff --git a/docs/api/client/api/system/Fonts.md b/docs/api/javadoc/client/api/system/Fonts.md similarity index 63% rename from docs/api/client/api/system/Fonts.md rename to docs/api/javadoc/client/api/system/Fonts.md index c032fae..3b8b719 100644 --- a/docs/api/client/api/system/Fonts.md +++ b/docs/api/javadoc/client/api/system/Fonts.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/Fonts.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/Fonts.java` **Author:** John200410 6/21/2023 @@ -24,7 +24,7 @@ -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### getCustomFontRenderer() @@ -36,7 +36,7 @@ -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### getVanillaFontRenderer() @@ -48,7 +48,7 @@ -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### getClickGuiFontRenderer() @@ -60,7 +60,7 @@ -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### getHudFontRenderer() @@ -72,7 +72,7 @@ -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### getWindowFontRenderer() @@ -84,5 +84,5 @@ -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) diff --git a/docs/api/client/api/system/IChunkProcessor.md b/docs/api/javadoc/client/api/system/IChunkProcessor.md similarity index 90% rename from docs/api/client/api/system/IChunkProcessor.md rename to docs/api/javadoc/client/api/system/IChunkProcessor.md index e1958e2..0df7ca5 100644 --- a/docs/api/client/api/system/IChunkProcessor.md +++ b/docs/api/javadoc/client/api/system/IChunkProcessor.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IChunkProcessor.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IChunkProcessor.java` Interface for accessing the rusherhack chunk processor * **Author:** John200410 7/6/2024 diff --git a/docs/api/client/api/system/IConfigManager.md b/docs/api/javadoc/client/api/system/IConfigManager.md similarity index 92% rename from docs/api/client/api/system/IConfigManager.md rename to docs/api/javadoc/client/api/system/IConfigManager.md index 6f12fb6..5ff94a5 100644 --- a/docs/api/client/api/system/IConfigManager.md +++ b/docs/api/javadoc/client/api/system/IConfigManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IConfigManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IConfigManager.java` Interface for rusherhack's config manager * NOTE: this will probably be heavily changed in rusherhack v2.1 diff --git a/docs/api/client/api/system/IFieldRegistry.md b/docs/api/javadoc/client/api/system/IFieldRegistry.md similarity index 90% rename from docs/api/client/api/system/IFieldRegistry.md rename to docs/api/javadoc/client/api/system/IFieldRegistry.md index eef49bc..b0d27b3 100644 --- a/docs/api/client/api/system/IFieldRegistry.md +++ b/docs/api/javadoc/client/api/system/IFieldRegistry.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IFieldRegistry.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IFieldRegistry.java` Interface for the field registry diff --git a/docs/api/client/api/system/IHudManager.md b/docs/api/javadoc/client/api/system/IHudManager.md similarity index 89% rename from docs/api/client/api/system/IHudManager.md rename to docs/api/javadoc/client/api/system/IHudManager.md index 3d2a926..0d7e8f4 100644 --- a/docs/api/client/api/system/IHudManager.md +++ b/docs/api/javadoc/client/api/system/IHudManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IHudManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IHudManager.java` **Author:** John200410 7/16/2023 @@ -10,7 +10,7 @@ ## Overview -`IHudManager` is a interface that extends [IFeatureManager](/core/feature/IFeatureManager.md). +`IHudManager` is a interface that extends [IFeatureManager](/api/javadoc/core/feature/IFeatureManager.md). ## Methods diff --git a/docs/api/client/api/system/IInteractions.md b/docs/api/javadoc/client/api/system/IInteractions.md similarity index 97% rename from docs/api/client/api/system/IInteractions.md rename to docs/api/javadoc/client/api/system/IInteractions.md index 396b3cb..f756101 100644 --- a/docs/api/client/api/system/IInteractions.md +++ b/docs/api/javadoc/client/api/system/IInteractions.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IInteractions.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IInteractions.java` Interface for InteractionUtils * **Author:** John200410 1/11/2024 diff --git a/docs/api/client/api/system/INotificationManager.md b/docs/api/javadoc/client/api/system/INotificationManager.md similarity index 90% rename from docs/api/client/api/system/INotificationManager.md rename to docs/api/javadoc/client/api/system/INotificationManager.md index b2a3021..a72850e 100644 --- a/docs/api/client/api/system/INotificationManager.md +++ b/docs/api/javadoc/client/api/system/INotificationManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/INotificationManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/INotificationManager.java` Interface for sending notifications to the client * **Author:** John200410 @@ -11,7 +11,7 @@ Interface for sending notifications to the client ## Overview -`INotificationManager` is a interface that extends [ILog](/core/logging/ILog.md). +`INotificationManager` is a interface that extends [ILog](/api/javadoc/core/logging/ILog.md). ## Methods diff --git a/docs/api/client/api/system/IRelationManager.md b/docs/api/javadoc/client/api/system/IRelationManager.md similarity index 83% rename from docs/api/client/api/system/IRelationManager.md rename to docs/api/javadoc/client/api/system/IRelationManager.md index f12ccc3..3671237 100644 --- a/docs/api/client/api/system/IRelationManager.md +++ b/docs/api/javadoc/client/api/system/IRelationManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IRelationManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IRelationManager.java` **Author:** John200410 6/21/2023 @@ -100,7 +100,7 @@ default void removeEnemy(Entity entity) List getFriends() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[PlayerRelation](/client/api/utils/objects/PlayerRelation.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[PlayerRelation](/api/javadoc/client/api/utils/objects/PlayerRelation.md)> ### getEnemies() @@ -108,5 +108,5 @@ default void removeEnemy(Entity entity) List getEnemies() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[PlayerRelation](/client/api/utils/objects/PlayerRelation.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[PlayerRelation](/api/javadoc/client/api/utils/objects/PlayerRelation.md)> diff --git a/docs/api/client/api/system/IRotationManager.md b/docs/api/javadoc/client/api/system/IRotationManager.md similarity index 96% rename from docs/api/client/api/system/IRotationManager.md rename to docs/api/javadoc/client/api/system/IRotationManager.md index 5286a40..f530fc2 100644 --- a/docs/api/client/api/system/IRotationManager.md +++ b/docs/api/javadoc/client/api/system/IRotationManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IRotationManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IRotationManager.java` **Author:** John200410 7/6/2023 diff --git a/docs/api/client/api/system/IRusherHackRegistry.md b/docs/api/javadoc/client/api/system/IRusherHackRegistry.md similarity index 65% rename from docs/api/client/api/system/IRusherHackRegistry.md rename to docs/api/javadoc/client/api/system/IRusherHackRegistry.md index 8b8d02a..0a3ab6c 100644 --- a/docs/api/client/api/system/IRusherHackRegistry.md +++ b/docs/api/javadoc/client/api/system/IRusherHackRegistry.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IRusherHackRegistry.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IRusherHackRegistry.java` **Author:** john@rusherhack.org 12/28/2025 @@ -26,5 +26,5 @@ IReferenceable get(String key) ``` -**Returns:** [IReferenceable](/core/interfaces/IReferenceable.md) +**Returns:** [IReferenceable](/api/javadoc/core/interfaces/IReferenceable.md) diff --git a/docs/api/client/api/system/IServerState.md b/docs/api/javadoc/client/api/system/IServerState.md similarity index 97% rename from docs/api/client/api/system/IServerState.md rename to docs/api/javadoc/client/api/system/IServerState.md index c4f4432..82456a0 100644 --- a/docs/api/client/api/system/IServerState.md +++ b/docs/api/javadoc/client/api/system/IServerState.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IServerState.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IServerState.java` @author John200410**Author:** historian diff --git a/docs/api/client/api/system/IWindowManager.md b/docs/api/javadoc/client/api/system/IWindowManager.md similarity index 60% rename from docs/api/client/api/system/IWindowManager.md rename to docs/api/javadoc/client/api/system/IWindowManager.md index 98d8898..7e4f512 100644 --- a/docs/api/client/api/system/IWindowManager.md +++ b/docs/api/javadoc/client/api/system/IWindowManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IWindowManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IWindowManager.java` **Author:** John200410 @@ -10,7 +10,7 @@ ## Overview -`IWindowManager` is a interface that extends [IFeatureManager](/core/feature/IFeatureManager.md). +`IWindowManager` is a interface that extends [IFeatureManager](/api/javadoc/core/feature/IFeatureManager.md). ## Methods @@ -41,7 +41,7 @@ Moves the window to the top. IRenderer2D getRenderer() ``` -**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) +**Returns:** [IRenderer2D](/api/javadoc/client/api/render/IRenderer2D.md) ### getFontRenderer() @@ -49,7 +49,7 @@ Moves the window to the top. IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### getWindowHandler() @@ -57,7 +57,7 @@ Moves the window to the top. WindowHandlerBase getWindowHandler() ``` -**Returns:** [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) +**Returns:** [WindowHandlerBase](/api/javadoc/client/api/ui/window/WindowHandlerBase.md) ### getFocusedWindow() @@ -65,7 +65,7 @@ Moves the window to the top. default Window getFocusedWindow() ``` -**Returns:** [Window](/client/api/feature/window/Window.md) +**Returns:** [Window](/api/javadoc/client/api/feature/window/Window.md) ### getVisibleWindows() @@ -73,5 +73,5 @@ default Window getFocusedWindow() default List getVisibleWindows() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Window](/client/api/feature/window/Window.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Window](/api/javadoc/client/api/feature/window/Window.md)> diff --git a/docs/api/client/api/system/Processee.md b/docs/api/javadoc/client/api/system/Processee.md similarity index 88% rename from docs/api/client/api/system/Processee.md rename to docs/api/javadoc/client/api/system/Processee.md index f3772c7..03499de 100644 --- a/docs/api/client/api/system/Processee.md +++ b/docs/api/javadoc/client/api/system/Processee.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system` -**Source:** `org/rusherhack/client/api/system/IChunkProcessor.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/IChunkProcessor.java` Chunk processor processee. im too high to write diff --git a/docs/api/client/api/system/waypoint/IWaypointManager.md b/docs/api/javadoc/client/api/system/waypoint/IWaypointManager.md similarity index 71% rename from docs/api/client/api/system/waypoint/IWaypointManager.md rename to docs/api/javadoc/client/api/system/waypoint/IWaypointManager.md index aafb3b3..cec9a9c 100644 --- a/docs/api/client/api/system/waypoint/IWaypointManager.md +++ b/docs/api/javadoc/client/api/system/waypoint/IWaypointManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system.waypoint` -**Source:** `org/rusherhack/client/api/system/waypoint/IWaypointManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/waypoint/IWaypointManager.java` Interface for the waypoint manager * **Author:** john@rusherhack.org 12/9/2025 @@ -41,7 +41,7 @@ Removes a waypoint -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Waypoint](/client/api/system/waypoint/Waypoint.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Waypoint](/api/javadoc/client/api/system/waypoint/Waypoint.md)> ### getWaypointForCurrentServer() @@ -53,7 +53,7 @@ Removes a waypoint -**Returns:** [Waypoint](/client/api/system/waypoint/Waypoint.md) +**Returns:** [Waypoint](/api/javadoc/client/api/system/waypoint/Waypoint.md) ### getWaypointsForServer() @@ -65,5 +65,5 @@ Removes a waypoint -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Waypoint](/client/api/system/waypoint/Waypoint.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Waypoint](/api/javadoc/client/api/system/waypoint/Waypoint.md)> diff --git a/docs/api/client/api/system/waypoint/Waypoint.md b/docs/api/javadoc/client/api/system/waypoint/Waypoint.md similarity index 82% rename from docs/api/client/api/system/waypoint/Waypoint.md rename to docs/api/javadoc/client/api/system/waypoint/Waypoint.md index fe407f1..4838cfa 100644 --- a/docs/api/client/api/system/waypoint/Waypoint.md +++ b/docs/api/javadoc/client/api/system/waypoint/Waypoint.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.system.waypoint` -**Source:** `org/rusherhack/client/api/system/waypoint/Waypoint.java` +**Source:** `org/rusherhack/api/javadoc/client/api/system/waypoint/Waypoint.java` **Author:** john@rusherhack.org 6/29/2020 for rusherhack-rewrite @@ -10,7 +10,7 @@ ## Overview -`Waypoint` is a class and implements [INamed](/core/interfaces/INamed.md), [JsonSerializable](/core/serialize/JsonSerializable.md). +`Waypoint` is a class and implements [INamed](/api/javadoc/core/interfaces/INamed.md), [JsonSerializable](/api/javadoc/core/serialize/JsonSerializable.md). ## Constructor @@ -25,7 +25,7 @@ public Waypoint(String name, String server, Vec3 pos, Dimension dimension) | name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | | server | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | | pos | `Vec3` | private | -| dimension | [Dimension](/client/api/utils/objects/Dimension.md) | private | +| dimension | [Dimension](/api/javadoc/client/api/utils/objects/Dimension.md) | private | | enabled | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | @@ -91,7 +91,7 @@ public Vec3 getPos() public Dimension getDimension() ``` -**Returns:** [Dimension](/client/api/utils/objects/Dimension.md) +**Returns:** [Dimension](/api/javadoc/client/api/utils/objects/Dimension.md) ### isEnabled() diff --git a/docs/api/client/api/ui/ElementBase.md b/docs/api/javadoc/client/api/ui/ElementBase.md similarity index 94% rename from docs/api/client/api/ui/ElementBase.md rename to docs/api/javadoc/client/api/ui/ElementBase.md index 1886190..03c6dd4 100644 --- a/docs/api/client/api/ui/ElementBase.md +++ b/docs/api/javadoc/client/api/ui/ElementBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui` -**Source:** `org/rusherhack/client/api/ui/ElementBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/ElementBase.java` An element is something with a position and size * **Author:** John200410 12/17/2022 diff --git a/docs/api/client/api/ui/ElementHandlerBase.md b/docs/api/javadoc/client/api/ui/ElementHandlerBase.md similarity index 92% rename from docs/api/client/api/ui/ElementHandlerBase.md rename to docs/api/javadoc/client/api/ui/ElementHandlerBase.md index cd50adc..9991a43 100644 --- a/docs/api/client/api/ui/ElementHandlerBase.md +++ b/docs/api/javadoc/client/api/ui/ElementHandlerBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui` -**Source:** `org/rusherhack/client/api/ui/ElementHandlerBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/ElementHandlerBase.java` A handler for managing multiple elements on screen. * **Author:** John200410 3/5/2024 @@ -11,7 +11,7 @@ A handler for managing multiple elements on screen. ## Overview -`ElementHandlerBase` is a class and implements [Globals](/client/api/Globals.md), [IRenderable2D](/client/api/render/IRenderable2D.md), [IDraggable](/core/interfaces/IDraggable.md), [IScrollable](/core/interfaces/IScrollable.md), [ITypeable](/core/interfaces/ITypeable.md), [ITickable](/core/interfaces/ITickable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). +`ElementHandlerBase` is a class and implements [Globals](/api/javadoc/client/api/Globals.md), [IRenderable2D](/api/javadoc/client/api/render/IRenderable2D.md), [IDraggable](/api/javadoc/core/interfaces/IDraggable.md), [IScrollable](/api/javadoc/core/interfaces/IScrollable.md), [ITypeable](/api/javadoc/core/interfaces/ITypeable.md), [ITickable](/api/javadoc/core/interfaces/ITickable.md), [JsonSerializable](/api/javadoc/core/serialize/JsonSerializable.md). ## Constructor diff --git a/docs/api/client/api/ui/ScaledElementBase.md b/docs/api/javadoc/client/api/ui/ScaledElementBase.md similarity index 75% rename from docs/api/client/api/ui/ScaledElementBase.md rename to docs/api/javadoc/client/api/ui/ScaledElementBase.md index 0b41a8a..20e8416 100644 --- a/docs/api/client/api/ui/ScaledElementBase.md +++ b/docs/api/javadoc/client/api/ui/ScaledElementBase.md @@ -2,16 +2,16 @@ **Package:** `org.rusherhack.client.api.ui` -**Source:** `org/rusherhack/client/api/ui/ScaledElementBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/ScaledElementBase.java` -An [ElementBase](/client/api/ui/ElementBase.md) that can be scaled +An [ElementBase](/api/javadoc/client/api/ui/ElementBase.md) that can be scaled * **Author:** John200410 5/19/2023 ## Overview -`ScaledElementBase` is a class that extends [ElementBase](/client/api/ui/ElementBase.md). +`ScaledElementBase` is a class that extends [ElementBase](/api/javadoc/client/api/ui/ElementBase.md). ## Methods diff --git a/docs/api/client/api/ui/hud/HudHandlerBase.md b/docs/api/javadoc/client/api/ui/hud/HudHandlerBase.md similarity index 86% rename from docs/api/client/api/ui/hud/HudHandlerBase.md rename to docs/api/javadoc/client/api/ui/hud/HudHandlerBase.md index bb6e191..920d200 100644 --- a/docs/api/client/api/ui/hud/HudHandlerBase.md +++ b/docs/api/javadoc/client/api/ui/hud/HudHandlerBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.hud` -**Source:** `org/rusherhack/client/api/ui/hud/HudHandlerBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/hud/HudHandlerBase.java` Handler for hud elements * **Author:** John200410 3/26/2024 @@ -11,7 +11,7 @@ Handler for hud elements ## Overview -`HudHandlerBase` is a class that extends [ElementHandlerBase](/client/api/ui/ElementHandlerBase.md). +`HudHandlerBase` is a class that extends [ElementHandlerBase](/api/javadoc/client/api/ui/ElementHandlerBase.md). ## Constructor @@ -27,7 +27,7 @@ public HudHandlerBase(boolean scaledWithMinecraftGui) | Name | Type | Modifiers | |------|------|----------| -| lastFontRenderer | [IFontRenderer](/client/api/render/font/IFontRenderer.md) | private | +| lastFontRenderer | [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) | private | | shouldResortLists | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | public | @@ -39,7 +39,7 @@ public HudHandlerBase(boolean scaledWithMinecraftGui) public List getElements() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[HudElement](/client/api/feature/hud/HudElement.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[HudElement](/api/javadoc/client/api/feature/hud/HudElement.md)> ### moveElementToTop() @@ -169,7 +169,7 @@ Renders the background of a hud element public PanelHandlerBase getHudManagerPanel() ``` -**Returns:** [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md)<`?`> +**Returns:** [PanelHandlerBase](/api/javadoc/client/api/ui/panel/PanelHandlerBase.md)<`?`> ### isElementHovered() @@ -185,7 +185,7 @@ public boolean isElementHovered(HudElement element, double mouseX, double mouseY public IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### shouldRenderPrimitively() diff --git a/docs/api/client/api/ui/notification/RenderableNotification.md b/docs/api/javadoc/client/api/ui/notification/RenderableNotification.md similarity index 72% rename from docs/api/client/api/ui/notification/RenderableNotification.md rename to docs/api/javadoc/client/api/ui/notification/RenderableNotification.md index 7279860..2b2cdac 100644 --- a/docs/api/client/api/ui/notification/RenderableNotification.md +++ b/docs/api/javadoc/client/api/ui/notification/RenderableNotification.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.notification` -**Source:** `org/rusherhack/client/api/ui/notification/RenderableNotification.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/notification/RenderableNotification.java` **Author:** John200410 1/27/2023 @@ -10,7 +10,7 @@ ## Overview -`RenderableNotification` is a class that extends [LivingNotification](/core/notification/type/LivingNotification.md) and implements [IRenderable2D](/client/api/render/IRenderable2D.md), [IClickable](/core/interfaces/IClickable.md). +`RenderableNotification` is a class that extends [LivingNotification](/api/javadoc/core/notification/type/LivingNotification.md) and implements [IRenderable2D](/api/javadoc/client/api/render/IRenderable2D.md), [IClickable](/api/javadoc/core/interfaces/IClickable.md). ## Constructor diff --git a/docs/api/client/api/ui/panel/IPanelItem.md b/docs/api/javadoc/client/api/ui/panel/IPanelItem.md similarity index 81% rename from docs/api/client/api/ui/panel/IPanelItem.md rename to docs/api/javadoc/client/api/ui/panel/IPanelItem.md index 33e511a..5401869 100644 --- a/docs/api/client/api/ui/panel/IPanelItem.md +++ b/docs/api/javadoc/client/api/ui/panel/IPanelItem.md @@ -2,13 +2,13 @@ **Package:** `org.rusherhack.client.api.ui.panel` -**Source:** `org/rusherhack/client/api/ui/panel/IPanelItem.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/panel/IPanelItem.java` TODO: is this even needed ## Overview -`IPanelItem` is a interface that extends [IRenderable2D](/client/api/render/IRenderable2D.md), [IClickable](/core/interfaces/IClickable.md), [ITypeable](/core/interfaces/ITypeable.md). +`IPanelItem` is a interface that extends [IRenderable2D](/api/javadoc/client/api/render/IRenderable2D.md), [IClickable](/api/javadoc/core/interfaces/IClickable.md), [ITypeable](/api/javadoc/core/interfaces/ITypeable.md). ## Methods diff --git a/docs/api/client/api/ui/panel/PanelBase.md b/docs/api/javadoc/client/api/ui/panel/PanelBase.md similarity index 72% rename from docs/api/client/api/ui/panel/PanelBase.md rename to docs/api/javadoc/client/api/ui/panel/PanelBase.md index 27d55a5..c22a3a5 100644 --- a/docs/api/client/api/ui/panel/PanelBase.md +++ b/docs/api/javadoc/client/api/ui/panel/PanelBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.panel` -**Source:** `org/rusherhack/client/api/ui/panel/PanelBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/panel/PanelBase.java` Basic panel element that with items that can be clicked * **Author:** John200410 12/17/2022 @@ -11,7 +11,7 @@ Basic panel element that with items that can be clicked ## Overview -`PanelBase` is a class that extends [ScaledElementBase](/client/api/ui/ScaledElementBase.md) and implements [IRenderable2D](/client/api/render/IRenderable2D.md), [ITickable](/core/interfaces/ITickable.md), [IClickable](/core/interfaces/IClickable.md), [IScrollable](/core/interfaces/IScrollable.md), [ITypeable](/core/interfaces/ITypeable.md), [IHideable](/core/interfaces/IHideable.md), [JsonSerializable](/core/serialize/JsonSerializable.md), [INamed](/core/interfaces/INamed.md), [IReferenceable](/core/interfaces/IReferenceable.md). +`PanelBase` is a class that extends [ScaledElementBase](/api/javadoc/client/api/ui/ScaledElementBase.md) and implements [IRenderable2D](/api/javadoc/client/api/render/IRenderable2D.md), [ITickable](/api/javadoc/core/interfaces/ITickable.md), [IClickable](/api/javadoc/core/interfaces/IClickable.md), [IScrollable](/api/javadoc/core/interfaces/IScrollable.md), [ITypeable](/api/javadoc/core/interfaces/ITypeable.md), [IHideable](/api/javadoc/core/interfaces/IHideable.md), [JsonSerializable](/api/javadoc/core/serialize/JsonSerializable.md), [INamed](/api/javadoc/core/interfaces/INamed.md), [IReferenceable](/api/javadoc/core/interfaces/IReferenceable.md). ## Constructor @@ -27,7 +27,7 @@ public PanelBase(PanelHandlerBase> handler, String name) | displayName | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | | visible | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | items | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> | protected final | -| handler | [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md) | protected final | +| handler | [PanelHandlerBase](/api/javadoc/client/api/ui/panel/PanelHandlerBase.md) | protected final | ## Methods @@ -100,7 +100,7 @@ public void setDisplayName(String displayName) public PanelHandlerBase getPanelHandler() ``` -**Returns:** [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md) +**Returns:** [PanelHandlerBase](/api/javadoc/client/api/ui/panel/PanelHandlerBase.md) ### isHidden() @@ -122,7 +122,7 @@ public void setVisible(boolean visible) public IRenderer2D getRenderer() ``` -**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) +**Returns:** [IRenderer2D](/api/javadoc/client/api/render/IRenderer2D.md) ### getFontRenderer() @@ -130,7 +130,7 @@ public IRenderer2D getRenderer() public IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) ### serialize() diff --git a/docs/api/client/api/ui/panel/PanelHandlerBase.md b/docs/api/javadoc/client/api/ui/panel/PanelHandlerBase.md similarity index 83% rename from docs/api/client/api/ui/panel/PanelHandlerBase.md rename to docs/api/javadoc/client/api/ui/panel/PanelHandlerBase.md index e984d3d..384af33 100644 --- a/docs/api/client/api/ui/panel/PanelHandlerBase.md +++ b/docs/api/javadoc/client/api/ui/panel/PanelHandlerBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.panel` -**Source:** `org/rusherhack/client/api/ui/panel/PanelHandlerBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/panel/PanelHandlerBase.java` **Author:** John200410 1/13/2023 @@ -10,7 +10,7 @@ ## Overview -`PanelHandlerBase` is a class that extends [ElementHandlerBase](/client/api/ui/ElementHandlerBase.md). +`PanelHandlerBase` is a class that extends [ElementHandlerBase](/api/javadoc/client/api/ui/ElementHandlerBase.md). ## Constructor @@ -72,5 +72,5 @@ public List getElements() public IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) diff --git a/docs/api/client/api/ui/panel/PanelItemBase.md b/docs/api/javadoc/client/api/ui/panel/PanelItemBase.md similarity index 69% rename from docs/api/client/api/ui/panel/PanelItemBase.md rename to docs/api/javadoc/client/api/ui/panel/PanelItemBase.md index 24c7756..a09bd49 100644 --- a/docs/api/client/api/ui/panel/PanelItemBase.md +++ b/docs/api/javadoc/client/api/ui/panel/PanelItemBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.panel` -**Source:** `org/rusherhack/client/api/ui/panel/PanelItemBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/panel/PanelItemBase.java` **Author:** John200410 12/21/2022 @@ -10,7 +10,7 @@ ## Overview -`PanelItemBase` is a class and implements [IPanelItem](/client/api/ui/panel/IPanelItem.md). +`PanelItemBase` is a class and implements [IPanelItem](/api/javadoc/client/api/ui/panel/IPanelItem.md). ## Constructor @@ -22,7 +22,7 @@ public PanelItemBase(PanelBase panel, T parent) | Name | Type | Modifiers | |------|------|----------| -| panel | [PanelBase](/client/api/ui/panel/PanelBase.md)<`?`> | protected final | +| panel | [PanelBase](/api/javadoc/client/api/ui/panel/PanelBase.md)<`?`> | protected final | | parent | `T` | protected final | | subItems | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> | protected final | @@ -49,7 +49,7 @@ public List getSubItemList() public PanelBase getPanel() ``` -**Returns:** [PanelBase](/client/api/ui/panel/PanelBase.md)<`?`> +**Returns:** [PanelBase](/api/javadoc/client/api/ui/panel/PanelBase.md)<`?`> ### getParent() diff --git a/docs/api/client/api/ui/theme/ITheme.md b/docs/api/javadoc/client/api/ui/theme/ITheme.md similarity index 70% rename from docs/api/client/api/ui/theme/ITheme.md rename to docs/api/javadoc/client/api/ui/theme/ITheme.md index cdac38f..6390744 100644 --- a/docs/api/client/api/ui/theme/ITheme.md +++ b/docs/api/javadoc/client/api/ui/theme/ITheme.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.theme` -**Source:** `org/rusherhack/client/api/ui/theme/ITheme.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/theme/ITheme.java` Interface for creating themes. @@ -15,7 +15,7 @@ A theme is a feature which changes the look and feel of the menus. ## Overview -`ITheme` is a interface that extends [IFeatureConfigurable](/core/feature/IFeatureConfigurable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). +`ITheme` is a interface that extends [IFeatureConfigurable](/api/javadoc/core/feature/IFeatureConfigurable.md), [JsonSerializable](/api/javadoc/core/serialize/JsonSerializable.md). ## Methods @@ -38,7 +38,7 @@ This theme's ClickGUI handler -**Returns:** [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md)<`?`> +**Returns:** [PanelHandlerBase](/api/javadoc/client/api/ui/panel/PanelHandlerBase.md)<`?`> ### getHudHandler() @@ -51,7 +51,7 @@ This theme's HUD handler -**Returns:** [HudHandlerBase](/client/api/ui/hud/HudHandlerBase.md) +**Returns:** [HudHandlerBase](/api/javadoc/client/api/ui/hud/HudHandlerBase.md) ### getWindowHandler() @@ -64,7 +64,7 @@ This theme's window handler -**Returns:** [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) +**Returns:** [WindowHandlerBase](/api/javadoc/client/api/ui/window/WindowHandlerBase.md) ### getColorSetting() @@ -76,7 +76,7 @@ This theme's window handler -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### getPrimaryColor() diff --git a/docs/api/client/api/ui/theme/IThemeManager.md b/docs/api/javadoc/client/api/ui/theme/IThemeManager.md similarity index 67% rename from docs/api/client/api/ui/theme/IThemeManager.md rename to docs/api/javadoc/client/api/ui/theme/IThemeManager.md index 2f1cbba..fdc7550 100644 --- a/docs/api/client/api/ui/theme/IThemeManager.md +++ b/docs/api/javadoc/client/api/ui/theme/IThemeManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.theme` -**Source:** `org/rusherhack/client/api/ui/theme/IThemeManager.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/theme/IThemeManager.java` Interface for accessing the theme manager * **Author:** John200410 9/3/2023 @@ -36,7 +36,7 @@ Registers a new theme -**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) +**Returns:** [ITheme](/api/javadoc/client/api/ui/theme/ITheme.md) ### getClickGuiTheme() @@ -48,7 +48,7 @@ Registers a new theme -**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) +**Returns:** [ITheme](/api/javadoc/client/api/ui/theme/ITheme.md) ### getHudTheme() @@ -60,7 +60,7 @@ Registers a new theme -**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) +**Returns:** [ITheme](/api/javadoc/client/api/ui/theme/ITheme.md) ### getWindowsTheme() @@ -72,7 +72,7 @@ Registers a new theme -**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) +**Returns:** [ITheme](/api/javadoc/client/api/ui/theme/ITheme.md) ### getClickGuiHandler() @@ -80,7 +80,7 @@ Registers a new theme default PanelHandlerBase getClickGuiHandler() ``` -**Returns:** [PanelHandlerBase](/client/api/ui/panel/PanelHandlerBase.md)<`?`> +**Returns:** [PanelHandlerBase](/api/javadoc/client/api/ui/panel/PanelHandlerBase.md)<`?`> ### getHudHandler() @@ -88,7 +88,7 @@ default PanelHandlerBase getClickGuiHandler() default HudHandlerBase getHudHandler() ``` -**Returns:** [HudHandlerBase](/client/api/ui/hud/HudHandlerBase.md) +**Returns:** [HudHandlerBase](/api/javadoc/client/api/ui/hud/HudHandlerBase.md) ### getWindowHandler() @@ -96,7 +96,7 @@ default HudHandlerBase getHudHandler() default WindowHandlerBase getWindowHandler() ``` -**Returns:** [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) +**Returns:** [WindowHandlerBase](/api/javadoc/client/api/ui/window/WindowHandlerBase.md) ### getClickGuiScreen() @@ -128,5 +128,5 @@ default WindowHandlerBase getWindowHandler() default ITheme getCurrentTheme() ``` -**Returns:** [ITheme](/client/api/ui/theme/ITheme.md) +**Returns:** [ITheme](/api/javadoc/client/api/ui/theme/ITheme.md) diff --git a/docs/api/client/api/ui/theme/ThemeBase.md b/docs/api/javadoc/client/api/ui/theme/ThemeBase.md similarity index 68% rename from docs/api/client/api/ui/theme/ThemeBase.md rename to docs/api/javadoc/client/api/ui/theme/ThemeBase.md index 59cab3c..33a774d 100644 --- a/docs/api/client/api/ui/theme/ThemeBase.md +++ b/docs/api/javadoc/client/api/ui/theme/ThemeBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.theme` -**Source:** `org/rusherhack/client/api/ui/theme/ThemeBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/theme/ThemeBase.java` **Author:** John200410 2/23/2023 @@ -10,7 +10,7 @@ ## Overview -`ThemeBase` is a class and implements [ITheme](/client/api/ui/theme/ITheme.md). +`ThemeBase` is a class and implements [ITheme](/api/javadoc/client/api/ui/theme/ITheme.md). ## Constructor @@ -24,8 +24,8 @@ public ThemeBase(String name, String description, Color defaultColor) |------|------|----------| | name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | | description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | -| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | private final | -| color | [ColorSetting](/client/api/setting/ColorSetting.md) | private final | +| settings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> | private final | +| color | [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) | private final | ## Methods @@ -52,7 +52,7 @@ public String getDescription() public List> getSettings() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> ### getColorSetting() @@ -60,7 +60,7 @@ public List> getSettings() public ColorSetting getColorSetting() ``` -**Returns:** [ColorSetting](/client/api/setting/ColorSetting.md) +**Returns:** [ColorSetting](/api/javadoc/client/api/setting/ColorSetting.md) ### getPrimaryColor() diff --git a/docs/api/client/api/ui/window/WindowContentHandlerBase.md b/docs/api/javadoc/client/api/ui/window/WindowContentHandlerBase.md similarity index 93% rename from docs/api/client/api/ui/window/WindowContentHandlerBase.md rename to docs/api/javadoc/client/api/ui/window/WindowContentHandlerBase.md index 84836be..64e585b 100644 --- a/docs/api/client/api/ui/window/WindowContentHandlerBase.md +++ b/docs/api/javadoc/client/api/ui/window/WindowContentHandlerBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window` -**Source:** `org/rusherhack/client/api/ui/window/WindowContentHandlerBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/WindowContentHandlerBase.java` ## Overview diff --git a/docs/api/client/api/ui/window/WindowHandlerBase.md b/docs/api/javadoc/client/api/ui/window/WindowHandlerBase.md similarity index 90% rename from docs/api/client/api/ui/window/WindowHandlerBase.md rename to docs/api/javadoc/client/api/ui/window/WindowHandlerBase.md index c7b1c61..f305124 100644 --- a/docs/api/client/api/ui/window/WindowHandlerBase.md +++ b/docs/api/javadoc/client/api/ui/window/WindowHandlerBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window` -**Source:** `org/rusherhack/client/api/ui/window/WindowHandlerBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/WindowHandlerBase.java` **Author:** John200410 @@ -10,7 +10,7 @@ ## Overview -`WindowHandlerBase` is a class that extends [ElementHandlerBase](/client/api/ui/ElementHandlerBase.md). +`WindowHandlerBase` is a class that extends [ElementHandlerBase](/api/javadoc/client/api/ui/ElementHandlerBase.md). ## Constructor @@ -31,7 +31,7 @@ Returns the view handler of this window handler. -**Returns:** [WindowViewHandlerBase](/client/api/ui/window/WindowViewHandlerBase.md) +**Returns:** [WindowViewHandlerBase](/api/javadoc/client/api/ui/window/WindowViewHandlerBase.md) ### getContentHandler() @@ -44,7 +44,7 @@ Returns the content handler of this window handler. -**Returns:** [WindowContentHandlerBase](/client/api/ui/window/WindowContentHandlerBase.md) +**Returns:** [WindowContentHandlerBase](/api/javadoc/client/api/ui/window/WindowContentHandlerBase.md) ### renderWindowFrame() @@ -91,7 +91,7 @@ public void moveElementToTop(Window element) public List getElements() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Window](/client/api/feature/window/Window.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Window](/api/javadoc/client/api/feature/window/Window.md)> ### renderElements() diff --git a/docs/api/client/api/ui/window/WindowSide.md b/docs/api/javadoc/client/api/ui/window/WindowSide.md similarity index 65% rename from docs/api/client/api/ui/window/WindowSide.md rename to docs/api/javadoc/client/api/ui/window/WindowSide.md index d915208..f07c22a 100644 --- a/docs/api/client/api/ui/window/WindowSide.md +++ b/docs/api/javadoc/client/api/ui/window/WindowSide.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window` -**Source:** `org/rusherhack/client/api/ui/window/WindowHandlerBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/WindowHandlerBase.java` ## Overview diff --git a/docs/api/client/api/ui/window/WindowViewHandlerBase.md b/docs/api/javadoc/client/api/ui/window/WindowViewHandlerBase.md similarity index 67% rename from docs/api/client/api/ui/window/WindowViewHandlerBase.md rename to docs/api/javadoc/client/api/ui/window/WindowViewHandlerBase.md index fbd62ad..2ec5168 100644 --- a/docs/api/client/api/ui/window/WindowViewHandlerBase.md +++ b/docs/api/javadoc/client/api/ui/window/WindowViewHandlerBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window` -**Source:** `org/rusherhack/client/api/ui/window/WindowViewHandlerBase.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/WindowViewHandlerBase.java` ## Overview @@ -18,7 +18,7 @@ public WindowViewHandlerBase(WindowHandlerBase windowHandler) | Name | Type | Modifiers | |------|------|----------| -| windowHandler | [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) | protected final | +| windowHandler | [WindowHandlerBase](/api/javadoc/client/api/ui/window/WindowHandlerBase.md) | protected final | ## Methods @@ -29,7 +29,7 @@ public WindowViewHandlerBase(WindowHandlerBase windowHandler) public void handleRenderViewContent(WindowView view, double mouseX, double mouseY) ``` -Wrapper for [WindowView](/client/api/ui/window/view/WindowView.md)#renderViewContent(double, double) so custom things can be added +Wrapper for [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md)#renderViewContent(double, double) so custom things can be added * **Parameter `view`**: @param mouseX diff --git a/docs/api/client/api/ui/window/content/AnchorSide.md b/docs/api/javadoc/client/api/ui/window/content/AnchorSide.md similarity index 62% rename from docs/api/client/api/ui/window/content/AnchorSide.md rename to docs/api/javadoc/client/api/ui/window/content/AnchorSide.md index 199215f..e51dde0 100644 --- a/docs/api/client/api/ui/window/content/AnchorSide.md +++ b/docs/api/javadoc/client/api/ui/window/content/AnchorSide.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.content` -**Source:** `org/rusherhack/client/api/ui/window/content/ComboContent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/ComboContent.java` ## Overview diff --git a/docs/api/client/api/ui/window/content/ComboContent.md b/docs/api/javadoc/client/api/ui/window/content/ComboContent.md similarity index 89% rename from docs/api/client/api/ui/window/content/ComboContent.md rename to docs/api/javadoc/client/api/ui/window/content/ComboContent.md index 7cadd37..361d120 100644 --- a/docs/api/client/api/ui/window/content/ComboContent.md +++ b/docs/api/javadoc/client/api/ui/window/content/ComboContent.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.content` -**Source:** `org/rusherhack/client/api/ui/window/content/ComboContent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/ComboContent.java` Content that bundles two or more other contents. @@ -19,7 +19,7 @@ Useful for situations like when you need a text field and a button to be next to ## Overview -`ComboContent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). +`ComboContent` is a class that extends [WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md). ## Constructor @@ -32,7 +32,7 @@ public ComboContent(Window window) | Name | Type | Modifiers | |------|------|----------| | contents | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`Pair`> | private final | -| parent | [WindowView](/client/api/ui/window/view/WindowView.md) | private | +| parent | [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) | private | ## Methods diff --git a/docs/api/client/api/ui/window/content/ListItemContent.md b/docs/api/javadoc/client/api/ui/window/content/ListItemContent.md similarity index 84% rename from docs/api/client/api/ui/window/content/ListItemContent.md rename to docs/api/javadoc/client/api/ui/window/content/ListItemContent.md index 9974342..733f16f 100644 --- a/docs/api/client/api/ui/window/content/ListItemContent.md +++ b/docs/api/javadoc/client/api/ui/window/content/ListItemContent.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.ui.window.content` -**Source:** `org/rusherhack/client/api/ui/window/content/ListItemContent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/ListItemContent.java` ## Overview -`ListItemContent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). +`ListItemContent` is a class that extends [WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md). ## Constructor @@ -18,7 +18,7 @@ public ListItemContent(Window window, ListView listView) | Name | Type | Modifiers | |------|------|----------| -| listView | [ListView](/client/api/ui/window/view/ListView.md)<`?`> | protected final | +| listView | [ListView](/api/javadoc/client/api/ui/window/view/ListView.md)<`?`> | protected final | | timeSinceLastClick | [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) | private | @@ -106,5 +106,5 @@ protected void onDoubleClick() public ListView getListView() ``` -**Returns:** [ListView](/client/api/ui/window/view/ListView.md)<`?`> +**Returns:** [ListView](/api/javadoc/client/api/ui/window/view/ListView.md)<`?`> diff --git a/docs/api/client/api/ui/window/content/PaddingContent.md b/docs/api/javadoc/client/api/ui/window/content/PaddingContent.md similarity index 89% rename from docs/api/client/api/ui/window/content/PaddingContent.md rename to docs/api/javadoc/client/api/ui/window/content/PaddingContent.md index 5c3be81..1f12e62 100644 --- a/docs/api/client/api/ui/window/content/PaddingContent.md +++ b/docs/api/javadoc/client/api/ui/window/content/PaddingContent.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.content` -**Source:** `org/rusherhack/client/api/ui/window/content/PaddingContent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/PaddingContent.java` **Author:** John200410 11/22/2023 @@ -10,7 +10,7 @@ ## Overview -`PaddingContent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). +`PaddingContent` is a class that extends [WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md). ## Constructor diff --git a/docs/api/client/api/ui/window/content/WindowContent.md b/docs/api/javadoc/client/api/ui/window/content/WindowContent.md similarity index 72% rename from docs/api/client/api/ui/window/content/WindowContent.md rename to docs/api/javadoc/client/api/ui/window/content/WindowContent.md index 27b2534..6c04adc 100644 --- a/docs/api/client/api/ui/window/content/WindowContent.md +++ b/docs/api/javadoc/client/api/ui/window/content/WindowContent.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.content` -**Source:** `org/rusherhack/client/api/ui/window/content/WindowContent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/WindowContent.java` Content that can be rendered inside of a Window * **Author:** John200410 @@ -11,7 +11,7 @@ Content that can be rendered inside of a Window ## Overview -`WindowContent` is a class and implements [IClickable](/core/interfaces/IClickable.md), [ITypeable](/core/interfaces/ITypeable.md), [IScrollable](/core/interfaces/IScrollable.md), [ITickable](/core/interfaces/ITickable.md). +`WindowContent` is a class and implements [IClickable](/api/javadoc/core/interfaces/IClickable.md), [ITypeable](/api/javadoc/core/interfaces/ITypeable.md), [IScrollable](/api/javadoc/core/interfaces/IScrollable.md), [ITickable](/api/javadoc/core/interfaces/ITickable.md). ## Constructor @@ -23,10 +23,10 @@ public WindowContent(Window window) | Name | Type | Modifiers | |------|------|----------| -| window | [Window](/client/api/feature/window/Window.md) | protected final | +| window | [Window](/api/javadoc/client/api/feature/window/Window.md) | protected final | | x | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | | y | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | -| contextMenu | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ContextAction](/client/api/ui/window/context/ContextAction.md)> | protected | +| contextMenu | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ContextAction](/api/javadoc/client/api/ui/window/context/ContextAction.md)> | protected | ## Methods @@ -59,7 +59,7 @@ public abstract double getHeight() public List getContextMenu() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ContextAction](/client/api/ui/window/context/ContextAction.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ContextAction](/api/javadoc/client/api/ui/window/context/ContextAction.md)> ### setContextMenu() @@ -81,7 +81,7 @@ Called when the window loses focus. Should be used to unfocus things like text f public Window getWindow() ``` -**Returns:** [Window](/client/api/feature/window/Window.md) +**Returns:** [Window](/api/javadoc/client/api/feature/window/Window.md) ### isHovered() @@ -129,7 +129,7 @@ public double getY() public IRenderer2D getRenderer() ``` -**Returns:** [IRenderer2D](/client/api/render/IRenderer2D.md) +**Returns:** [IRenderer2D](/api/javadoc/client/api/render/IRenderer2D.md) ### getFontRenderer() @@ -137,5 +137,5 @@ public IRenderer2D getRenderer() public IFontRenderer getFontRenderer() ``` -**Returns:** [IFontRenderer](/client/api/render/font/IFontRenderer.md) +**Returns:** [IFontRenderer](/api/javadoc/client/api/render/font/IFontRenderer.md) diff --git a/docs/api/client/api/ui/window/content/component/ButtonComponent.md b/docs/api/javadoc/client/api/ui/window/content/component/ButtonComponent.md similarity index 89% rename from docs/api/client/api/ui/window/content/component/ButtonComponent.md rename to docs/api/javadoc/client/api/ui/window/content/component/ButtonComponent.md index 44f62d2..b3941b3 100644 --- a/docs/api/client/api/ui/window/content/component/ButtonComponent.md +++ b/docs/api/javadoc/client/api/ui/window/content/component/ButtonComponent.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.content.component` -**Source:** `org/rusherhack/client/api/ui/window/content/component/ButtonComponent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/component/ButtonComponent.java` TODO: create interface so that ComboContent can modify width as needed * **Author:** John200410 @@ -11,7 +11,7 @@ TODO: create interface so that ComboContent can modify width as needed ## Overview -`ButtonComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md) and implements [INamed](/core/interfaces/INamed.md). +`ButtonComponent` is a class that extends [WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md) and implements [INamed](/api/javadoc/core/interfaces/INamed.md). ## Constructor @@ -30,7 +30,7 @@ public ButtonComponent(Window window, String label, double width, double height, | label | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | | width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | | height | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | -| enabledPredicate | [Predicate](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Predicate.html)<[ButtonComponent](/client/api/ui/window/content/component/ButtonComponent.md)> | private | +| enabledPredicate | [Predicate](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Predicate.html)<[ButtonComponent](/api/javadoc/client/api/ui/window/content/component/ButtonComponent.md)> | private | | pressed | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | clickAction | [Runnable](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Runnable.html) | private | diff --git a/docs/api/client/api/ui/window/content/component/CheckBoxComponent.md b/docs/api/javadoc/client/api/ui/window/content/component/CheckBoxComponent.md similarity index 93% rename from docs/api/client/api/ui/window/content/component/CheckBoxComponent.md rename to docs/api/javadoc/client/api/ui/window/content/component/CheckBoxComponent.md index 5178c68..753b07a 100644 --- a/docs/api/client/api/ui/window/content/component/CheckBoxComponent.md +++ b/docs/api/javadoc/client/api/ui/window/content/component/CheckBoxComponent.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.ui.window.content.component` -**Source:** `org/rusherhack/client/api/ui/window/content/component/CheckBoxComponent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/component/CheckBoxComponent.java` ## Overview -`CheckBoxComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). +`CheckBoxComponent` is a class that extends [WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md). ## Constructor diff --git a/docs/api/client/api/ui/window/content/component/ComboBoxComponent.md b/docs/api/javadoc/client/api/ui/window/content/component/ComboBoxComponent.md similarity index 94% rename from docs/api/client/api/ui/window/content/component/ComboBoxComponent.md rename to docs/api/javadoc/client/api/ui/window/content/component/ComboBoxComponent.md index 2b51ab5..8ce5eba 100644 --- a/docs/api/client/api/ui/window/content/component/ComboBoxComponent.md +++ b/docs/api/javadoc/client/api/ui/window/content/component/ComboBoxComponent.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.ui.window.content.component` -**Source:** `org/rusherhack/client/api/ui/window/content/component/ComboBoxComponent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/component/ComboBoxComponent.java` ## Overview -`ComboBoxComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). +`ComboBoxComponent` is a class that extends [WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md). ## Constructor diff --git a/docs/api/client/api/ui/window/content/component/ParagraphComponent.md b/docs/api/javadoc/client/api/ui/window/content/component/ParagraphComponent.md similarity index 81% rename from docs/api/client/api/ui/window/content/component/ParagraphComponent.md rename to docs/api/javadoc/client/api/ui/window/content/component/ParagraphComponent.md index 5d60913..52f62d8 100644 --- a/docs/api/client/api/ui/window/content/component/ParagraphComponent.md +++ b/docs/api/javadoc/client/api/ui/window/content/component/ParagraphComponent.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.content.component` -**Source:** `org/rusherhack/client/api/ui/window/content/component/ParagraphComponent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/component/ParagraphComponent.java` A TextContent with line wrapping * **Author:** John200410 @@ -11,7 +11,7 @@ A TextContent with line wrapping ## Overview -`ParagraphComponent` is a class that extends [TextComponent](/client/api/ui/window/content/component/TextComponent.md). +`ParagraphComponent` is a class that extends [TextComponent](/api/javadoc/client/api/ui/window/content/component/TextComponent.md). ## Constructor @@ -32,7 +32,7 @@ public ParagraphComponent(Window window, String text, double lineSpacing) | Name | Type | Modifiers | |------|------|----------| | lineSpacing | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | -| parent | [WindowView](/client/api/ui/window/view/WindowView.md) | protected | +| parent | [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) | protected | | heightCache | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | | color | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | protected | diff --git a/docs/api/client/api/ui/window/content/component/TextComponent.md b/docs/api/javadoc/client/api/ui/window/content/component/TextComponent.md similarity index 90% rename from docs/api/client/api/ui/window/content/component/TextComponent.md rename to docs/api/javadoc/client/api/ui/window/content/component/TextComponent.md index 5285d98..eeb564c 100644 --- a/docs/api/client/api/ui/window/content/component/TextComponent.md +++ b/docs/api/javadoc/client/api/ui/window/content/component/TextComponent.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.content.component` -**Source:** `org/rusherhack/client/api/ui/window/content/component/TextComponent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/component/TextComponent.java` A simple text content * **Author:** John200410 @@ -11,7 +11,7 @@ A simple text content ## Overview -`TextComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). +`TextComponent` is a class that extends [WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md). ## Constructor diff --git a/docs/api/client/api/ui/window/content/component/TextFieldComponent.md b/docs/api/javadoc/client/api/ui/window/content/component/TextFieldComponent.md similarity index 87% rename from docs/api/client/api/ui/window/content/component/TextFieldComponent.md rename to docs/api/javadoc/client/api/ui/window/content/component/TextFieldComponent.md index 48c25ae..718c8bb 100644 --- a/docs/api/client/api/ui/window/content/component/TextFieldComponent.md +++ b/docs/api/javadoc/client/api/ui/window/content/component/TextFieldComponent.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.ui.window.content.component` -**Source:** `org/rusherhack/client/api/ui/window/content/component/TextFieldComponent.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/content/component/TextFieldComponent.java` ## Overview -`TextFieldComponent` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md). +`TextFieldComponent` is a class that extends [WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md). ## Constructor @@ -26,14 +26,14 @@ public TextFieldComponent(Window window, String label, double width, boolean cen | Name | Type | Modifiers | |------|------|----------| -| textField | [TextField](/client/api/utils/objects/TextField.md) | protected final | +| textField | [TextField](/api/javadoc/client/api/utils/objects/TextField.md) | protected final | | label | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private | | censored | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private final | | focused | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | -| inputDelay | [Timer](/core/utils/Timer.md) | private final | +| inputDelay | [Timer](/api/javadoc/core/utils/Timer.md) | private final | | width | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | | heightRatio | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | -| cursorBlinkTimer | [Timer](/core/utils/Timer.md) | private final | +| cursorBlinkTimer | [Timer](/api/javadoc/core/utils/Timer.md) | private final | | blink | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | returnCallback | [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private | @@ -174,5 +174,5 @@ public void setFocused(boolean focused) public TextField getTextField() ``` -**Returns:** [TextField](/client/api/utils/objects/TextField.md) +**Returns:** [TextField](/api/javadoc/client/api/utils/objects/TextField.md) diff --git a/docs/api/client/api/ui/window/context/ContextAction.md b/docs/api/javadoc/client/api/ui/window/context/ContextAction.md similarity index 57% rename from docs/api/client/api/ui/window/context/ContextAction.md rename to docs/api/javadoc/client/api/ui/window/context/ContextAction.md index 714540a..e1d9eb3 100644 --- a/docs/api/client/api/ui/window/context/ContextAction.md +++ b/docs/api/javadoc/client/api/ui/window/context/ContextAction.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.context` -**Source:** `org/rusherhack/client/api/ui/window/context/ContextAction.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/context/ContextAction.java` ## Overview diff --git a/docs/api/client/api/ui/window/view/Alignment.md b/docs/api/javadoc/client/api/ui/window/view/Alignment.md similarity index 65% rename from docs/api/client/api/ui/window/view/Alignment.md rename to docs/api/javadoc/client/api/ui/window/view/Alignment.md index dc5a5da..d06065e 100644 --- a/docs/api/client/api/ui/window/view/Alignment.md +++ b/docs/api/javadoc/client/api/ui/window/view/Alignment.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/SimpleView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/SimpleView.java` ## Overview diff --git a/docs/api/client/api/ui/window/view/Column.md b/docs/api/javadoc/client/api/ui/window/view/Column.md similarity index 87% rename from docs/api/client/api/ui/window/view/Column.md rename to docs/api/javadoc/client/api/ui/window/view/Column.md index d25dfce..f5ba15d 100644 --- a/docs/api/client/api/ui/window/view/Column.md +++ b/docs/api/javadoc/client/api/ui/window/view/Column.md @@ -2,13 +2,13 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/ListView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/ListView.java` A column in a list view ## Overview -`Column` is a class and implements [INamed](/core/interfaces/INamed.md). +`Column` is a class and implements [INamed](/api/javadoc/core/interfaces/INamed.md). ## Constructor diff --git a/docs/api/client/api/ui/window/view/ListItemView.md b/docs/api/javadoc/client/api/ui/window/view/ListItemView.md similarity index 68% rename from docs/api/client/api/ui/window/view/ListItemView.md rename to docs/api/javadoc/client/api/ui/window/view/ListItemView.md index 8b8988e..94a4bcc 100644 --- a/docs/api/client/api/ui/window/view/ListItemView.md +++ b/docs/api/javadoc/client/api/ui/window/view/ListItemView.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/ListView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/ListView.java` ## Overview -`ListItemView` is a class that extends [ScrollableView](/client/api/ui/window/view/ScrollableView.md). +`ListItemView` is a class that extends [ScrollableView](/api/javadoc/client/api/ui/window/view/ScrollableView.md). ## Constructor @@ -18,7 +18,7 @@ public ListItemView(Window window, ListView listView, List items) | Name | Type | Modifiers | |------|------|----------| -| listView | [ListView](/client/api/ui/window/view/ListView.md)<`T`> | private final | +| listView | [ListView](/api/javadoc/client/api/ui/window/view/ListView.md)<`T`> | private final | ## Methods @@ -37,7 +37,7 @@ public boolean keyTyped(int key, int scanCode, int modifiers) public ListView getListView() ``` -**Returns:** [ListView](/client/api/ui/window/view/ListView.md)<`T`> +**Returns:** [ListView](/api/javadoc/client/api/ui/window/view/ListView.md)<`T`> ### getWidth() diff --git a/docs/api/client/api/ui/window/view/ListView.md b/docs/api/javadoc/client/api/ui/window/view/ListView.md similarity index 69% rename from docs/api/client/api/ui/window/view/ListView.md rename to docs/api/javadoc/client/api/ui/window/view/ListView.md index 967845e..fe5fcca 100644 --- a/docs/api/client/api/ui/window/view/ListView.md +++ b/docs/api/javadoc/client/api/ui/window/view/ListView.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/ListView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/ListView.java` **Author:** John200410 @@ -10,7 +10,7 @@ ## Overview -`ListView` is a class that extends [WindowView](/client/api/ui/window/view/WindowView.md). +`ListView` is a class that extends [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md). ## Constructor @@ -22,10 +22,10 @@ public ListView(String name, Window window, List items) | Name | Type | Modifiers | |------|------|----------| -| itemView | [ListItemView](/client/api/ui/window/view/ListItemView.md) | protected final | +| itemView | [ListItemView](/api/javadoc/client/api/ui/window/view/ListItemView.md) | protected final | | items | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<`T`> | protected final | -| columns | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Column](/client/api/ui/window/view/Column.md)> | protected final | -| sortColumn | [Column](/client/api/ui/window/view/Column.md) | protected | +| columns | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Column](/api/javadoc/client/api/ui/window/view/Column.md)> | protected final | +| sortColumn | [Column](/api/javadoc/client/api/ui/window/view/Column.md) | protected | | sortAscending | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | | selectedItem | `T` | protected | | deleteCallback | [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<`T`> | protected | @@ -57,7 +57,7 @@ public void resort() public List getColumns() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Column](/client/api/ui/window/view/Column.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Column](/api/javadoc/client/api/ui/window/view/Column.md)> ### getColumnWidth() @@ -73,7 +73,7 @@ public double getColumnWidth(ListView.Column column) public Column getSortColumn() ``` -**Returns:** [Column](/client/api/ui/window/view/Column.md) +**Returns:** [Column](/api/javadoc/client/api/ui/window/view/Column.md) ### isSortAscending() @@ -103,7 +103,7 @@ public void setSelectedItem(ListItemContent selectedItem) public Column addColumn(String name) ``` -**Returns:** [Column](/client/api/ui/window/view/Column.md) +**Returns:** [Column](/api/javadoc/client/api/ui/window/view/Column.md) ### addColumn() @@ -111,7 +111,7 @@ public Column addColumn(String name) public Column addColumn(String name, double widthWeight) ``` -**Returns:** [Column](/client/api/ui/window/view/Column.md) +**Returns:** [Column](/api/javadoc/client/api/ui/window/view/Column.md) ### addColumn() @@ -119,7 +119,7 @@ public Column addColumn(String name, double widthWeight) public Column addColumn(String name, Comparator comparator, double widthWeight) ``` -**Returns:** [Column](/client/api/ui/window/view/Column.md) +**Returns:** [Column](/api/javadoc/client/api/ui/window/view/Column.md) ### getItemView() @@ -127,7 +127,7 @@ public Column addColumn(String name, Comparator comparator, double widthWeigh public ListItemView getItemView() ``` -**Returns:** [ListItemView](/client/api/ui/window/view/ListItemView.md) +**Returns:** [ListItemView](/api/javadoc/client/api/ui/window/view/ListItemView.md) ### setDeleteCallback() diff --git a/docs/api/client/api/ui/window/view/RichTextComponent.md b/docs/api/javadoc/client/api/ui/window/view/RichTextComponent.md similarity index 70% rename from docs/api/client/api/ui/window/view/RichTextComponent.md rename to docs/api/javadoc/client/api/ui/window/view/RichTextComponent.md index bd296d6..1be0df1 100644 --- a/docs/api/client/api/ui/window/view/RichTextComponent.md +++ b/docs/api/javadoc/client/api/ui/window/view/RichTextComponent.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/RichTextView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/RichTextView.java` ## Overview -`RichTextComponent` is a class that extends [ParagraphComponent](/client/api/ui/window/content/component/ParagraphComponent.md). +`RichTextComponent` is a class that extends [ParagraphComponent](/api/javadoc/client/api/ui/window/content/component/ParagraphComponent.md). ## Constructor @@ -39,5 +39,5 @@ public void renderContent(double mouseX, double mouseY, WindowView parent) public List getContextMenu() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ContextAction](/client/api/ui/window/context/ContextAction.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ContextAction](/api/javadoc/client/api/ui/window/context/ContextAction.md)> diff --git a/docs/api/client/api/ui/window/view/RichTextView.md b/docs/api/javadoc/client/api/ui/window/view/RichTextView.md similarity index 73% rename from docs/api/client/api/ui/window/view/RichTextView.md rename to docs/api/javadoc/client/api/ui/window/view/RichTextView.md index 9eaf2c0..34b075f 100644 --- a/docs/api/client/api/ui/window/view/RichTextView.md +++ b/docs/api/javadoc/client/api/ui/window/view/RichTextView.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/RichTextView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/RichTextView.java` A scrollable view meant for displaying logs @@ -15,7 +15,7 @@ TODO: add selection copying ## Overview -`RichTextView` is a class that extends [ScrollableView](/client/api/ui/window/view/ScrollableView.md). +`RichTextView` is a class that extends [ScrollableView](/api/javadoc/client/api/ui/window/view/ScrollableView.md). ## Constructor @@ -31,8 +31,8 @@ public RichTextView(String name, Window window) | Name | Type | Modifiers | |------|------|----------| -| textComponents | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[RichTextComponent](/client/api/ui/window/view/RichTextComponent.md)> | private final | -| queue | [Queue](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Queue.html)<[RichTextComponent](/client/api/ui/window/view/RichTextComponent.md)> | private final | +| textComponents | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[RichTextComponent](/api/javadoc/client/api/ui/window/view/RichTextComponent.md)> | private final | +| queue | [Queue](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Queue.html)<[RichTextComponent](/api/javadoc/client/api/ui/window/view/RichTextComponent.md)> | private final | ## Methods diff --git a/docs/api/client/api/ui/window/view/ScrollableView.md b/docs/api/javadoc/client/api/ui/window/view/ScrollableView.md similarity index 86% rename from docs/api/client/api/ui/window/view/ScrollableView.md rename to docs/api/javadoc/client/api/ui/window/view/ScrollableView.md index bfdc387..00ca3a7 100644 --- a/docs/api/client/api/ui/window/view/ScrollableView.md +++ b/docs/api/javadoc/client/api/ui/window/view/ScrollableView.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/ScrollableView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/ScrollableView.java` ## Overview -`ScrollableView` is a class that extends [SimpleView](/client/api/ui/window/view/SimpleView.md). +`ScrollableView` is a class that extends [SimpleView](/api/javadoc/client/api/ui/window/view/SimpleView.md). ## Constructor @@ -25,7 +25,7 @@ public ScrollableView(String name, Window window, List | isDraggingScrollbarGrip | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | | dragDeltaY | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | public | | prevMax | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | -| scrollbar | [Scrollbar](/client/api/utils/objects/Scrollbar.md) | protected final | +| scrollbar | [Scrollbar](/api/javadoc/client/api/utils/objects/Scrollbar.md) | protected final | ## Methods @@ -86,7 +86,7 @@ public void setDraggingGrip(boolean dragging, double dragDeltaY) public Scrollbar getScrollbar() ``` -**Returns:** [Scrollbar](/client/api/utils/objects/Scrollbar.md) +**Returns:** [Scrollbar](/api/javadoc/client/api/utils/objects/Scrollbar.md) ### getContentHeight() diff --git a/docs/api/client/api/ui/window/view/SimpleView.md b/docs/api/javadoc/client/api/ui/window/view/SimpleView.md similarity index 86% rename from docs/api/client/api/ui/window/view/SimpleView.md rename to docs/api/javadoc/client/api/ui/window/view/SimpleView.md index d21fb1e..d60be7a 100644 --- a/docs/api/client/api/ui/window/view/SimpleView.md +++ b/docs/api/javadoc/client/api/ui/window/view/SimpleView.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/SimpleView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/SimpleView.java` ## Overview -`SimpleView` is a class that extends [WindowView](/client/api/ui/window/view/WindowView.md). +`SimpleView` is a class that extends [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md). ## Constructor @@ -22,8 +22,8 @@ public SimpleView(String name, Window window, List cont | Name | Type | Modifiers | |------|------|----------| -| horizontalAlignment | [Alignment](/client/api/feature/hud/Alignment.md) | protected | -| verticalAlignment | [VerticalAlignment](/client/api/ui/window/view/VerticalAlignment.md) | protected | +| horizontalAlignment | [Alignment](/api/javadoc/client/api/feature/hud/Alignment.md) | protected | +| verticalAlignment | [VerticalAlignment](/api/javadoc/client/api/ui/window/view/VerticalAlignment.md) | protected | | topPadding | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | | leftPadding | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | | contentPadding | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | protected | diff --git a/docs/api/client/api/ui/window/view/SplitView.md b/docs/api/javadoc/client/api/ui/window/view/SplitView.md similarity index 66% rename from docs/api/client/api/ui/window/view/SplitView.md rename to docs/api/javadoc/client/api/ui/window/view/SplitView.md index f1c32ab..b4e3463 100644 --- a/docs/api/client/api/ui/window/view/SplitView.md +++ b/docs/api/javadoc/client/api/ui/window/view/SplitView.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/SplitView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/SplitView.java` **Author:** john@rusherhack.org 12/23/2025 @@ -10,7 +10,7 @@ ## Overview -`SplitView` is a class that extends [WindowView](/client/api/ui/window/view/WindowView.md). +`SplitView` is a class that extends [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md). ## Constructor @@ -31,9 +31,9 @@ public SplitView(String name, Window window, WindowView left, WindowView center, | Name | Type | Modifiers | |------|------|----------| | PADDING | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private static final | -| left | [WindowView](/client/api/ui/window/view/WindowView.md) | private | -| center | [WindowView](/client/api/ui/window/view/WindowView.md) | private | -| right | [WindowView](/client/api/ui/window/view/WindowView.md) | private | +| left | [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) | private | +| center | [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) | private | +| right | [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) | private | | centerWidth | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private final | diff --git a/docs/api/client/api/ui/window/view/TabbedView.md b/docs/api/javadoc/client/api/ui/window/view/TabbedView.md similarity index 77% rename from docs/api/client/api/ui/window/view/TabbedView.md rename to docs/api/javadoc/client/api/ui/window/view/TabbedView.md index ed4727d..e626e95 100644 --- a/docs/api/client/api/ui/window/view/TabbedView.md +++ b/docs/api/javadoc/client/api/ui/window/view/TabbedView.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/TabbedView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/TabbedView.java` A view with different tabs. WindowViews in the content list are rendered in tabs, while other content is rendered at the bottom below the tab view. @@ -12,7 +12,7 @@ WindowViews in the content list are rendered in tabs, while other content is ren ## Overview -`TabbedView` is a class that extends [SimpleView](/client/api/ui/window/view/SimpleView.md). +`TabbedView` is a class that extends [SimpleView](/api/javadoc/client/api/ui/window/view/SimpleView.md). ## Constructor @@ -28,7 +28,7 @@ public TabbedView(String name, Window window, List contentList) | Name | Type | Modifiers | |------|------|----------| -| activeTabView | [WindowView](/client/api/ui/window/view/WindowView.md) | private | +| activeTabView | [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) | private | ## Methods @@ -51,7 +51,7 @@ public List getContent() -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowContent](/client/api/ui/window/content/WindowContent.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md)> ### setActiveTabView() @@ -65,7 +65,7 @@ public void setActiveTabView(WindowView activeTabView) public WindowView getActiveTabView() ``` -**Returns:** [WindowView](/client/api/ui/window/view/WindowView.md) +**Returns:** [WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md) ### getTabs() @@ -73,7 +73,7 @@ public WindowView getActiveTabView() public List getTabs() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowView](/client/api/ui/window/view/WindowView.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowView](/api/javadoc/client/api/ui/window/view/WindowView.md)> ### getTabViewHeight() diff --git a/docs/api/client/api/ui/window/view/VerticalAlignment.md b/docs/api/javadoc/client/api/ui/window/view/VerticalAlignment.md similarity index 67% rename from docs/api/client/api/ui/window/view/VerticalAlignment.md rename to docs/api/javadoc/client/api/ui/window/view/VerticalAlignment.md index 6a638ea..b54e65d 100644 --- a/docs/api/client/api/ui/window/view/VerticalAlignment.md +++ b/docs/api/javadoc/client/api/ui/window/view/VerticalAlignment.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/SimpleView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/SimpleView.java` ## Overview diff --git a/docs/api/client/api/ui/window/view/WindowView.md b/docs/api/javadoc/client/api/ui/window/view/WindowView.md similarity index 87% rename from docs/api/client/api/ui/window/view/WindowView.md rename to docs/api/javadoc/client/api/ui/window/view/WindowView.md index 4356572..328f6be 100644 --- a/docs/api/client/api/ui/window/view/WindowView.md +++ b/docs/api/javadoc/client/api/ui/window/view/WindowView.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.ui.window.view` -**Source:** `org/rusherhack/client/api/ui/window/view/WindowView.java` +**Source:** `org/rusherhack/api/javadoc/client/api/ui/window/view/WindowView.java` A WindowView is a WindowContent that is able to render a set of other WindowContents in a defined way. @@ -15,7 +15,7 @@ WindowViews should also be sure to set the position of the WindowContent before ## Overview -`WindowView` is a class that extends [WindowContent](/client/api/ui/window/content/WindowContent.md) and implements [INamed](/core/interfaces/INamed.md). +`WindowView` is a class that extends [WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md) and implements [INamed](/api/javadoc/core/interfaces/INamed.md). ## Constructor @@ -171,7 +171,7 @@ public void remove(WindowContent content) public List getContent() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowContent](/client/api/ui/window/content/WindowContent.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[WindowContent](/api/javadoc/client/api/ui/window/content/WindowContent.md)> ### setContentList() @@ -185,7 +185,7 @@ public void setContentList(List contentList) protected WindowHandlerBase getHandler() ``` -**Returns:** [WindowHandlerBase](/client/api/ui/window/WindowHandlerBase.md) +**Returns:** [WindowHandlerBase](/api/javadoc/client/api/ui/window/WindowHandlerBase.md) ### getViewHandler() @@ -193,5 +193,5 @@ protected WindowHandlerBase getHandler() protected WindowViewHandlerBase getViewHandler() ``` -**Returns:** [WindowViewHandlerBase](/client/api/ui/window/WindowViewHandlerBase.md) +**Returns:** [WindowViewHandlerBase](/api/javadoc/client/api/ui/window/WindowViewHandlerBase.md) diff --git a/docs/api/client/api/utils/BufferUtils.md b/docs/api/javadoc/client/api/utils/BufferUtils.md similarity index 94% rename from docs/api/client/api/utils/BufferUtils.md rename to docs/api/javadoc/client/api/utils/BufferUtils.md index 3134419..e70fe08 100644 --- a/docs/api/client/api/utils/BufferUtils.md +++ b/docs/api/javadoc/client/api/utils/BufferUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/BufferUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/BufferUtils.java` **Author:** John200410 1/3/2023 diff --git a/docs/api/client/api/utils/ChatUtils.md b/docs/api/javadoc/client/api/utils/ChatUtils.md similarity index 89% rename from docs/api/client/api/utils/ChatUtils.md rename to docs/api/javadoc/client/api/utils/ChatUtils.md index f00fff9..cd1962b 100644 --- a/docs/api/client/api/utils/ChatUtils.md +++ b/docs/api/javadoc/client/api/utils/ChatUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/ChatUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/ChatUtils.java` **Author:** John200410 3/14/2023 @@ -10,7 +10,7 @@ ## Overview -`ChatUtils` is a class and implements [Globals](/client/api/Globals.md). +`ChatUtils` is a class and implements [Globals](/api/javadoc/client/api/Globals.md). ## Fields diff --git a/docs/api/client/api/utils/ContainerUtils.md b/docs/api/javadoc/client/api/utils/ContainerUtils.md similarity index 94% rename from docs/api/client/api/utils/ContainerUtils.md rename to docs/api/javadoc/client/api/utils/ContainerUtils.md index a81ccf4..c5542c8 100644 --- a/docs/api/client/api/utils/ContainerUtils.md +++ b/docs/api/javadoc/client/api/utils/ContainerUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/ContainerUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/ContainerUtils.java` Helper class containing functions to help you search items inside of containers * **Author:** john@rusherhack.org 7/21/2025 @@ -11,7 +11,7 @@ Helper class containing functions to help you search items inside of containers ## Overview -`ContainerUtils` is a class and implements [Globals](/client/api/Globals.md). +`ContainerUtils` is a class and implements [Globals](/api/javadoc/client/api/Globals.md). ## Methods diff --git a/docs/api/client/api/utils/EntityUtils.md b/docs/api/javadoc/client/api/utils/EntityUtils.md similarity index 81% rename from docs/api/client/api/utils/EntityUtils.md rename to docs/api/javadoc/client/api/utils/EntityUtils.md index fdcce9c..d9cbdbc 100644 --- a/docs/api/client/api/utils/EntityUtils.md +++ b/docs/api/javadoc/client/api/utils/EntityUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/EntityUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/EntityUtils.java` **Author:** John200410 6/19/2023 @@ -10,7 +10,7 @@ ## Overview -`EntityUtils` is a class and implements [Globals](/client/api/Globals.md). +`EntityUtils` is a class and implements [Globals](/api/javadoc/client/api/Globals.md). ## Methods diff --git a/docs/api/client/api/utils/FormBuilder.md b/docs/api/javadoc/client/api/utils/FormBuilder.md similarity index 81% rename from docs/api/client/api/utils/FormBuilder.md rename to docs/api/javadoc/client/api/utils/FormBuilder.md index 61ad827..ef56b66 100644 --- a/docs/api/client/api/utils/FormBuilder.md +++ b/docs/api/javadoc/client/api/utils/FormBuilder.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/WebUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/WebUtils.java` ## Overview @@ -29,7 +29,7 @@ private FormBuilder() public static FormBuilder create() ``` -**Returns:** [FormBuilder](/client/api/utils/FormBuilder.md) +**Returns:** [FormBuilder](/api/javadoc/client/api/utils/FormBuilder.md) ### add() @@ -37,7 +37,7 @@ public static FormBuilder create() public FormBuilder add(String key, String value) ``` -**Returns:** [FormBuilder](/client/api/utils/FormBuilder.md) +**Returns:** [FormBuilder](/api/javadoc/client/api/utils/FormBuilder.md) ### build() diff --git a/docs/api/client/api/utils/InputBuilder.md b/docs/api/javadoc/client/api/utils/InputBuilder.md similarity index 74% rename from docs/api/client/api/utils/InputBuilder.md rename to docs/api/javadoc/client/api/utils/InputBuilder.md index f44e309..6395f46 100644 --- a/docs/api/client/api/utils/InputBuilder.md +++ b/docs/api/javadoc/client/api/utils/InputBuilder.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/InputBuilder.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/InputBuilder.java` Class for modifying `net.minecraft.world.entity.player.Input` objects * **Author:** john@rusherhack.org 12/28/2024 @@ -44,7 +44,7 @@ public InputBuilder(Input input) public InputBuilder forward(boolean forward) ``` -**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) +**Returns:** [InputBuilder](/api/javadoc/client/api/utils/InputBuilder.md) ### backward() @@ -52,7 +52,7 @@ public InputBuilder forward(boolean forward) public InputBuilder backward(boolean backward) ``` -**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) +**Returns:** [InputBuilder](/api/javadoc/client/api/utils/InputBuilder.md) ### left() @@ -60,7 +60,7 @@ public InputBuilder backward(boolean backward) public InputBuilder left(boolean left) ``` -**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) +**Returns:** [InputBuilder](/api/javadoc/client/api/utils/InputBuilder.md) ### right() @@ -68,7 +68,7 @@ public InputBuilder left(boolean left) public InputBuilder right(boolean right) ``` -**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) +**Returns:** [InputBuilder](/api/javadoc/client/api/utils/InputBuilder.md) ### jump() @@ -76,7 +76,7 @@ public InputBuilder right(boolean right) public InputBuilder jump(boolean jump) ``` -**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) +**Returns:** [InputBuilder](/api/javadoc/client/api/utils/InputBuilder.md) ### shift() @@ -84,7 +84,7 @@ public InputBuilder jump(boolean jump) public InputBuilder shift(boolean shift) ``` -**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) +**Returns:** [InputBuilder](/api/javadoc/client/api/utils/InputBuilder.md) ### sprint() @@ -92,7 +92,7 @@ public InputBuilder shift(boolean shift) public InputBuilder sprint(boolean sprint) ``` -**Returns:** [InputBuilder](/client/api/utils/InputBuilder.md) +**Returns:** [InputBuilder](/api/javadoc/client/api/utils/InputBuilder.md) ### build() diff --git a/docs/api/client/api/utils/InputUtils.md b/docs/api/javadoc/client/api/utils/InputUtils.md similarity index 76% rename from docs/api/client/api/utils/InputUtils.md rename to docs/api/javadoc/client/api/utils/InputUtils.md index 8071585..b6bde1b 100644 --- a/docs/api/client/api/utils/InputUtils.md +++ b/docs/api/javadoc/client/api/utils/InputUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/InputUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/InputUtils.java` Helper class containing input related functions * **Author:** John200410 5/30/2023 @@ -11,7 +11,7 @@ Helper class containing input related functions ## Overview -`InputUtils` is a class and implements [Globals](/client/api/Globals.md). +`InputUtils` is a class and implements [Globals](/api/javadoc/client/api/Globals.md). ## Methods diff --git a/docs/api/client/api/utils/InventoryUtils.md b/docs/api/javadoc/client/api/utils/InventoryUtils.md similarity index 97% rename from docs/api/client/api/utils/InventoryUtils.md rename to docs/api/javadoc/client/api/utils/InventoryUtils.md index e60ea51..856b51c 100644 --- a/docs/api/client/api/utils/InventoryUtils.md +++ b/docs/api/javadoc/client/api/utils/InventoryUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/InventoryUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/InventoryUtils.java` Helper class containing inventory related functions * **Author:** John200410 7/8/2023 @@ -11,7 +11,7 @@ Helper class containing inventory related functions ## Overview -`InventoryUtils` is a class and implements [Globals](/client/api/Globals.md). +`InventoryUtils` is a class and implements [Globals](/api/javadoc/client/api/Globals.md). ## Methods diff --git a/docs/api/client/api/utils/ItemUtils.md b/docs/api/javadoc/client/api/utils/ItemUtils.md similarity index 98% rename from docs/api/client/api/utils/ItemUtils.md rename to docs/api/javadoc/client/api/utils/ItemUtils.md index 5c993dd..688bc8d 100644 --- a/docs/api/client/api/utils/ItemUtils.md +++ b/docs/api/javadoc/client/api/utils/ItemUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/ItemUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/ItemUtils.java` Helper class for items and item stacks * **Author:** john@rusherhack.org 5/25/2025 diff --git a/docs/api/client/api/utils/PlayerUtils.md b/docs/api/javadoc/client/api/utils/PlayerUtils.md similarity index 88% rename from docs/api/client/api/utils/PlayerUtils.md rename to docs/api/javadoc/client/api/utils/PlayerUtils.md index d9c20f0..856df15 100644 --- a/docs/api/client/api/utils/PlayerUtils.md +++ b/docs/api/javadoc/client/api/utils/PlayerUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/PlayerUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/PlayerUtils.java` Helper class containing player related functions * **Author:** John200410 6/5/2023 @@ -11,7 +11,7 @@ Helper class containing player related functions ## Overview -`PlayerUtils` is a class and implements [Globals](/client/api/Globals.md). +`PlayerUtils` is a class and implements [Globals](/api/javadoc/client/api/Globals.md). ## Fields @@ -76,7 +76,7 @@ public static double[] getDirectionalSpeed(LocalPlayer player, float yaw, double public static PlayerInput getInput() ``` -**Returns:** [PlayerInput](/client/api/utils/objects/PlayerInput.md) +**Returns:** [PlayerInput](/api/javadoc/client/api/utils/objects/PlayerInput.md) ### getInput() @@ -84,7 +84,7 @@ public static PlayerInput getInput() public static PlayerInput getInput(LocalPlayer player) ``` -**Returns:** [PlayerInput](/client/api/utils/objects/PlayerInput.md) +**Returns:** [PlayerInput](/api/javadoc/client/api/utils/objects/PlayerInput.md) ### hasHorizontalInput() @@ -92,7 +92,7 @@ public static PlayerInput getInput(LocalPlayer player) public static boolean hasHorizontalInput() ``` -@deprecated use [PlayerInput](/client/api/utils/objects/PlayerInput.md)#hasHorizontalInput() +@deprecated use [PlayerInput](/api/javadoc/client/api/utils/objects/PlayerInput.md)#hasHorizontalInput() **Returns:** [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) diff --git a/docs/api/client/api/utils/RotationUtils.md b/docs/api/javadoc/client/api/utils/RotationUtils.md similarity index 75% rename from docs/api/client/api/utils/RotationUtils.md rename to docs/api/javadoc/client/api/utils/RotationUtils.md index 8781667..343e413 100644 --- a/docs/api/client/api/utils/RotationUtils.md +++ b/docs/api/javadoc/client/api/utils/RotationUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/RotationUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/RotationUtils.java` **Author:** John200410 6/14/2023 @@ -10,7 +10,7 @@ ## Overview -`RotationUtils` is a class and implements [Globals](/client/api/Globals.md). +`RotationUtils` is a class and implements [Globals](/api/javadoc/client/api/Globals.md). ## Methods diff --git a/docs/api/client/api/utils/UUIDSerializer.md b/docs/api/javadoc/client/api/utils/UUIDSerializer.md similarity index 93% rename from docs/api/client/api/utils/UUIDSerializer.md rename to docs/api/javadoc/client/api/utils/UUIDSerializer.md index 55fc130..a2e89dd 100644 --- a/docs/api/client/api/utils/UUIDSerializer.md +++ b/docs/api/javadoc/client/api/utils/UUIDSerializer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/WebUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/WebUtils.java` Utility class for serializing and deserializing UUIDs. diff --git a/docs/api/client/api/utils/WebUtils.md b/docs/api/javadoc/client/api/utils/WebUtils.md similarity index 96% rename from docs/api/client/api/utils/WebUtils.md rename to docs/api/javadoc/client/api/utils/WebUtils.md index 5e48e68..ac2cc56 100644 --- a/docs/api/client/api/utils/WebUtils.md +++ b/docs/api/javadoc/client/api/utils/WebUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/WebUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/WebUtils.java` **Author:** john@rusherhack.org 6/28/2020 for rusherhack-rewrite diff --git a/docs/api/client/api/utils/WorldUtils.md b/docs/api/javadoc/client/api/utils/WorldUtils.md similarity index 96% rename from docs/api/client/api/utils/WorldUtils.md rename to docs/api/javadoc/client/api/utils/WorldUtils.md index dda797a..eae3380 100644 --- a/docs/api/client/api/utils/WorldUtils.md +++ b/docs/api/javadoc/client/api/utils/WorldUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils` -**Source:** `org/rusherhack/client/api/utils/WorldUtils.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/WorldUtils.java` **Author:** John200410 6/18/2023 @@ -10,7 +10,7 @@ ## Overview -`WorldUtils` is a class and implements [Globals](/client/api/Globals.md). +`WorldUtils` is a class and implements [Globals](/api/javadoc/client/api/Globals.md). ## Methods diff --git a/docs/api/client/api/utils/objects/Builder.md b/docs/api/javadoc/client/api/utils/objects/Builder.md similarity index 85% rename from docs/api/client/api/utils/objects/Builder.md rename to docs/api/javadoc/client/api/utils/objects/Builder.md index 1d5fc3f..fcad0c1 100644 --- a/docs/api/client/api/utils/objects/Builder.md +++ b/docs/api/javadoc/client/api/utils/objects/Builder.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.objects` -**Source:** `org/rusherhack/client/api/utils/objects/PlayerInput.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/objects/PlayerInput.java` ## Overview @@ -42,7 +42,7 @@ public Builder() public PlayerInput build() ``` -**Returns:** [PlayerInput](/client/api/utils/objects/PlayerInput.md) +**Returns:** [PlayerInput](/api/javadoc/client/api/utils/objects/PlayerInput.md) ### forward() @@ -64,7 +64,7 @@ public Builder forward(boolean forward) Sets the player's forward input -**Returns:** [Builder](/client/api/utils/objects/Builder.md) +**Returns:** [Builder](/api/javadoc/client/api/utils/objects/Builder.md) ### backwards() @@ -86,7 +86,7 @@ public Builder backwards(boolean backwards) Sets the player's backwards input -**Returns:** [Builder](/client/api/utils/objects/Builder.md) +**Returns:** [Builder](/api/javadoc/client/api/utils/objects/Builder.md) ### left() @@ -108,7 +108,7 @@ public Builder left(boolean left) Sets the player's left input -**Returns:** [Builder](/client/api/utils/objects/Builder.md) +**Returns:** [Builder](/api/javadoc/client/api/utils/objects/Builder.md) ### right() @@ -130,7 +130,7 @@ public Builder right(boolean right) Sets the player's right input -**Returns:** [Builder](/client/api/utils/objects/Builder.md) +**Returns:** [Builder](/api/javadoc/client/api/utils/objects/Builder.md) ### jump() @@ -152,7 +152,7 @@ public Builder jump(boolean jump) Sets the player's jump input -**Returns:** [Builder](/client/api/utils/objects/Builder.md) +**Returns:** [Builder](/api/javadoc/client/api/utils/objects/Builder.md) ### sneak() @@ -174,7 +174,7 @@ public Builder sneak(boolean sneak) Sets the player's sneak input -**Returns:** [Builder](/client/api/utils/objects/Builder.md) +**Returns:** [Builder](/api/javadoc/client/api/utils/objects/Builder.md) ### release() diff --git a/docs/api/client/api/utils/objects/Dimension.md b/docs/api/javadoc/client/api/utils/objects/Dimension.md similarity index 90% rename from docs/api/client/api/utils/objects/Dimension.md rename to docs/api/javadoc/client/api/utils/objects/Dimension.md index 35d3db2..1739fda 100644 --- a/docs/api/client/api/utils/objects/Dimension.md +++ b/docs/api/javadoc/client/api/utils/objects/Dimension.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.objects` -**Source:** `org/rusherhack/client/api/utils/objects/Dimension.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/objects/Dimension.java` Enum for dimension type and checks for current dimension * **Author:** john@rusherhack.org 6/19/2025 @@ -92,5 +92,5 @@ public static Dimension getLoaded() -**Returns:** [Dimension](/client/api/utils/objects/Dimension.md) +**Returns:** [Dimension](/api/javadoc/client/api/utils/objects/Dimension.md) diff --git a/docs/api/client/api/utils/objects/PlayerInput.md b/docs/api/javadoc/client/api/utils/objects/PlayerInput.md similarity index 92% rename from docs/api/client/api/utils/objects/PlayerInput.md rename to docs/api/javadoc/client/api/utils/objects/PlayerInput.md index 90cc0d3..29bf41a 100644 --- a/docs/api/client/api/utils/objects/PlayerInput.md +++ b/docs/api/javadoc/client/api/utils/objects/PlayerInput.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.objects` -**Source:** `org/rusherhack/client/api/utils/objects/PlayerInput.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/objects/PlayerInput.java` Immutable class representing player input key states * **Author:** john@rusherhack.org 7/24/2025 diff --git a/docs/api/client/api/utils/objects/PlayerMessage.md b/docs/api/javadoc/client/api/utils/objects/PlayerMessage.md similarity index 87% rename from docs/api/client/api/utils/objects/PlayerMessage.md rename to docs/api/javadoc/client/api/utils/objects/PlayerMessage.md index 3c454ed..c59ca99 100644 --- a/docs/api/client/api/utils/objects/PlayerMessage.md +++ b/docs/api/javadoc/client/api/utils/objects/PlayerMessage.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.objects` -**Source:** `org/rusherhack/client/api/utils/objects/PlayerMessage.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/objects/PlayerMessage.java` Object representing a player chat message * **Author:** john@rusherhack.org 1/1/2025 @@ -62,5 +62,5 @@ Parses a message from chat -**Returns:** [PlayerMessage](/client/api/utils/objects/PlayerMessage.md) +**Returns:** [PlayerMessage](/api/javadoc/client/api/utils/objects/PlayerMessage.md) diff --git a/docs/api/client/api/utils/objects/PlayerRelation.md b/docs/api/javadoc/client/api/utils/objects/PlayerRelation.md similarity index 78% rename from docs/api/client/api/utils/objects/PlayerRelation.md rename to docs/api/javadoc/client/api/utils/objects/PlayerRelation.md index e63fd7b..e6e463a 100644 --- a/docs/api/client/api/utils/objects/PlayerRelation.md +++ b/docs/api/javadoc/client/api/utils/objects/PlayerRelation.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.objects` -**Source:** `org/rusherhack/client/api/utils/objects/PlayerRelation.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/objects/PlayerRelation.java` TODO: UUID based * **Author:** John200410 6/21/2023 @@ -11,7 +11,7 @@ TODO: UUID based ## Overview -`PlayerRelation` is a record and implements [JsonSerializable](/core/serialize/JsonSerializable.md). +`PlayerRelation` is a record and implements [JsonSerializable](/api/javadoc/core/serialize/JsonSerializable.md). ## Methods diff --git a/docs/api/client/api/utils/objects/Scrollbar.md b/docs/api/javadoc/client/api/utils/objects/Scrollbar.md similarity index 92% rename from docs/api/client/api/utils/objects/Scrollbar.md rename to docs/api/javadoc/client/api/utils/objects/Scrollbar.md index 2699a6f..ac4c06e 100644 --- a/docs/api/client/api/utils/objects/Scrollbar.md +++ b/docs/api/javadoc/client/api/utils/objects/Scrollbar.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.objects` -**Source:** `org/rusherhack/client/api/utils/objects/Scrollbar.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/objects/Scrollbar.java` Object to keep track of scroll offsets, animation, and clamp. * **Author:** John200410 2/18/2023 @@ -23,7 +23,7 @@ public Scrollbar(Animation animation) | Name | Type | Modifiers | |------|------|----------| -| animation | [Animation](/core/animation/Animation.md) | private final | +| animation | [Animation](/api/javadoc/core/animation/Animation.md) | private final | | scrollOffset | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | | targetScrollOffset | [double](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html) | private | diff --git a/docs/api/client/api/utils/objects/State.md b/docs/api/javadoc/client/api/utils/objects/State.md similarity index 63% rename from docs/api/client/api/utils/objects/State.md rename to docs/api/javadoc/client/api/utils/objects/State.md index 654cdc2..903248f 100644 --- a/docs/api/client/api/utils/objects/State.md +++ b/docs/api/javadoc/client/api/utils/objects/State.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.objects` -**Source:** `org/rusherhack/client/api/utils/objects/PlayerRelation.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/objects/PlayerRelation.java` ## Overview diff --git a/docs/api/client/api/utils/objects/TextField.md b/docs/api/javadoc/client/api/utils/objects/TextField.md similarity index 96% rename from docs/api/client/api/utils/objects/TextField.md rename to docs/api/javadoc/client/api/utils/objects/TextField.md index 8f3f3a8..bb57fa2 100644 --- a/docs/api/client/api/utils/objects/TextField.md +++ b/docs/api/javadoc/client/api/utils/objects/TextField.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.objects` -**Source:** `org/rusherhack/client/api/utils/objects/TextField.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/objects/TextField.java` **Author:** John200410 9/26/2023 @@ -10,7 +10,7 @@ ## Overview -`TextField` is a class and implements [ITypeable](/core/interfaces/ITypeable.md). +`TextField` is a class and implements [ITypeable](/api/javadoc/core/interfaces/ITypeable.md). ## Constructor diff --git a/docs/api/client/api/utils/objects/Whisper.md b/docs/api/javadoc/client/api/utils/objects/Whisper.md similarity index 74% rename from docs/api/client/api/utils/objects/Whisper.md rename to docs/api/javadoc/client/api/utils/objects/Whisper.md index 2841eb3..a779c51 100644 --- a/docs/api/client/api/utils/objects/Whisper.md +++ b/docs/api/javadoc/client/api/utils/objects/Whisper.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.client.api.utils.objects` -**Source:** `org/rusherhack/client/api/utils/objects/PlayerMessage.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/objects/PlayerMessage.java` ## Overview -`Whisper` is a class that extends [PlayerMessage](/client/api/utils/objects/PlayerMessage.md). +`Whisper` is a class that extends [PlayerMessage](/api/javadoc/client/api/utils/objects/PlayerMessage.md). ## Constructor diff --git a/docs/api/client/api/utils/registry/BlockRegistry.md b/docs/api/javadoc/client/api/utils/registry/BlockRegistry.md similarity index 93% rename from docs/api/client/api/utils/registry/BlockRegistry.md rename to docs/api/javadoc/client/api/utils/registry/BlockRegistry.md index bac00b4..c41134a 100644 --- a/docs/api/client/api/utils/registry/BlockRegistry.md +++ b/docs/api/javadoc/client/api/utils/registry/BlockRegistry.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.registry` -**Source:** `org/rusherhack/client/api/utils/registry/BlockRegistry.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/registry/BlockRegistry.java` **Author:** john@rusherhack.org 12/18/2025 diff --git a/docs/api/client/api/utils/registry/EntityTypeRegistry.md b/docs/api/javadoc/client/api/utils/registry/EntityTypeRegistry.md similarity index 93% rename from docs/api/client/api/utils/registry/EntityTypeRegistry.md rename to docs/api/javadoc/client/api/utils/registry/EntityTypeRegistry.md index bee69e3..6697f88 100644 --- a/docs/api/client/api/utils/registry/EntityTypeRegistry.md +++ b/docs/api/javadoc/client/api/utils/registry/EntityTypeRegistry.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.registry` -**Source:** `org/rusherhack/client/api/utils/registry/EntityTypeRegistry.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/registry/EntityTypeRegistry.java` **Author:** john@rusherhack.org 12/24/2025 diff --git a/docs/api/client/api/utils/registry/ItemRegistry.md b/docs/api/javadoc/client/api/utils/registry/ItemRegistry.md similarity index 93% rename from docs/api/client/api/utils/registry/ItemRegistry.md rename to docs/api/javadoc/client/api/utils/registry/ItemRegistry.md index c78eef3..be09d0d 100644 --- a/docs/api/client/api/utils/registry/ItemRegistry.md +++ b/docs/api/javadoc/client/api/utils/registry/ItemRegistry.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.client.api.utils.registry` -**Source:** `org/rusherhack/client/api/utils/registry/ItemRegistry.java` +**Source:** `org/rusherhack/api/javadoc/client/api/utils/registry/ItemRegistry.java` **Author:** john@rusherhack.org 12/18/2025 diff --git a/docs/api/core/animation/Animation.md b/docs/api/javadoc/core/animation/Animation.md similarity index 79% rename from docs/api/core/animation/Animation.md rename to docs/api/javadoc/core/animation/Animation.md index feea1db..4f0fc85 100644 --- a/docs/api/core/animation/Animation.md +++ b/docs/api/javadoc/core/animation/Animation.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.animation` -**Source:** `org/rusherhack/core/animation/Animation.java` +**Source:** `org/rusherhack/api/javadoc/core/animation/Animation.java` Animation object that can be used to animate a value and track it's progress * **Author:** John200410 2/12/2023 @@ -27,7 +27,7 @@ public Animation(Easing tween, long durationMs) | Name | Type | Modifiers | |------|------|----------| -| tween | [Easing](/core/animation/Easing.md) | private | +| tween | [Easing](/api/javadoc/core/animation/Easing.md) | private | | playing | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | reverse | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | | loop | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | @@ -55,7 +55,7 @@ public Animation play() Start the animation -**Returns:** [Animation](/core/animation/Animation.md) +**Returns:** [Animation](/api/javadoc/core/animation/Animation.md) ### restart() @@ -65,7 +65,7 @@ public Animation restart() Restart the animation -**Returns:** [Animation](/core/animation/Animation.md) +**Returns:** [Animation](/api/javadoc/core/animation/Animation.md) ### reverse() @@ -75,7 +75,7 @@ public Animation reverse() Reverse the animation -**Returns:** [Animation](/core/animation/Animation.md) +**Returns:** [Animation](/api/javadoc/core/animation/Animation.md) ### setLoop() @@ -83,7 +83,7 @@ Reverse the animation public Animation setLoop(boolean loop) ``` -**Returns:** [Animation](/core/animation/Animation.md) +**Returns:** [Animation](/api/javadoc/core/animation/Animation.md) ### setDirection() @@ -91,7 +91,7 @@ public Animation setLoop(boolean loop) public Animation setDirection(boolean reverse) ``` -**Returns:** [Animation](/core/animation/Animation.md) +**Returns:** [Animation](/api/javadoc/core/animation/Animation.md) ### setDuration() @@ -104,7 +104,7 @@ Set the animation duration in milliseconds -**Returns:** [Animation](/core/animation/Animation.md) +**Returns:** [Animation](/api/javadoc/core/animation/Animation.md) ### setTween() @@ -114,7 +114,7 @@ public Animation setTween(Easing tween) Set the animation tween -**Returns:** [Animation](/core/animation/Animation.md) +**Returns:** [Animation](/api/javadoc/core/animation/Animation.md) ### isPlaying() diff --git a/docs/api/core/animation/Easing.md b/docs/api/javadoc/core/animation/Easing.md similarity index 95% rename from docs/api/core/animation/Easing.md rename to docs/api/javadoc/core/animation/Easing.md index 3ec11bb..a6914ea 100644 --- a/docs/api/core/animation/Easing.md +++ b/docs/api/javadoc/core/animation/Easing.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.animation` -**Source:** `org/rusherhack/core/animation/Easing.java` +**Source:** `org/rusherhack/api/javadoc/core/animation/Easing.java` Various easing functions to use for animations * diff --git a/docs/api/core/bind/BindManagerBase.md b/docs/api/javadoc/core/bind/BindManagerBase.md similarity index 63% rename from docs/api/core/bind/BindManagerBase.md rename to docs/api/javadoc/core/bind/BindManagerBase.md index 0565fdd..3c77a53 100644 --- a/docs/api/core/bind/BindManagerBase.md +++ b/docs/api/javadoc/core/bind/BindManagerBase.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.bind` -**Source:** `org/rusherhack/core/bind/BindManagerBase.java` +**Source:** `org/rusherhack/api/javadoc/core/bind/BindManagerBase.java` Class to handle keybindings * **Author:** John200410 1/16/2023 @@ -17,7 +17,7 @@ Class to handle keybindings | Name | Type | Modifiers | |------|------|----------| -| BIND_REGISTRY | `Object2ObjectMap`<[IBindable](/core/bind/IBindable.md), [IKey](/core/bind/key/IKey.md)> | private final | +| BIND_REGISTRY | `Object2ObjectMap`<[IBindable](/api/javadoc/core/bind/IBindable.md), [IKey](/api/javadoc/core/bind/key/IKey.md)> | private final | ## Methods @@ -52,7 +52,7 @@ public void setBind(String bindableName, IKey key) public IKey getBind(IBindable bindable) ``` -**Returns:** [IKey](/core/bind/key/IKey.md) +**Returns:** [IKey](/api/javadoc/core/bind/key/IKey.md) ### getBindRegistry() @@ -60,5 +60,5 @@ public IKey getBind(IBindable bindable) public Object2ObjectMap getBindRegistry() ``` -**Returns:** `Object2ObjectMap`<[IBindable](/core/bind/IBindable.md), [IKey](/core/bind/key/IKey.md)> +**Returns:** `Object2ObjectMap`<[IBindable](/api/javadoc/core/bind/IBindable.md), [IKey](/api/javadoc/core/bind/key/IKey.md)> diff --git a/docs/api/core/bind/IBindable.md b/docs/api/javadoc/core/bind/IBindable.md similarity index 86% rename from docs/api/core/bind/IBindable.md rename to docs/api/javadoc/core/bind/IBindable.md index 646a409..ee15be2 100644 --- a/docs/api/core/bind/IBindable.md +++ b/docs/api/javadoc/core/bind/IBindable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.bind` -**Source:** `org/rusherhack/core/bind/IBindable.java` +**Source:** `org/rusherhack/api/javadoc/core/bind/IBindable.java` ## Overview diff --git a/docs/api/core/bind/key/IKey.md b/docs/api/javadoc/core/bind/key/IKey.md similarity index 92% rename from docs/api/core/bind/key/IKey.md rename to docs/api/javadoc/core/bind/key/IKey.md index ec0b7b4..85d02ba 100644 --- a/docs/api/core/bind/key/IKey.md +++ b/docs/api/javadoc/core/bind/key/IKey.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.bind.key` -**Source:** `org/rusherhack/core/bind/key/IKey.java` +**Source:** `org/rusherhack/api/javadoc/core/bind/key/IKey.java` Interface for keys * **Author:** John200410 1/16/2023 diff --git a/docs/api/core/bind/key/NullKey.md b/docs/api/javadoc/core/bind/key/NullKey.md similarity index 70% rename from docs/api/core/bind/key/NullKey.md rename to docs/api/javadoc/core/bind/key/NullKey.md index cfa0ccc..5d21586 100644 --- a/docs/api/core/bind/key/NullKey.md +++ b/docs/api/javadoc/core/bind/key/NullKey.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.bind.key` -**Source:** `org/rusherhack/core/bind/key/NullKey.java` +**Source:** `org/rusherhack/api/javadoc/core/bind/key/NullKey.java` An unbound key * **Author:** John200410 1/16/2023 @@ -11,13 +11,13 @@ An unbound key ## Overview -`NullKey` is a class and implements [IKey](/core/bind/key/IKey.md). +`NullKey` is a class and implements [IKey](/api/javadoc/core/bind/key/IKey.md). ## Fields | Name | Type | Modifiers | |------|------|----------| -| INSTANCE | [NullKey](/core/bind/key/NullKey.md) | public static final | +| INSTANCE | [NullKey](/api/javadoc/core/bind/key/NullKey.md) | public static final | ## Methods diff --git a/docs/api/core/command/AbstractCommand.md b/docs/api/javadoc/core/command/AbstractCommand.md similarity index 80% rename from docs/api/core/command/AbstractCommand.md rename to docs/api/javadoc/core/command/AbstractCommand.md index 0b96df1..1c62080 100644 --- a/docs/api/core/command/AbstractCommand.md +++ b/docs/api/javadoc/core/command/AbstractCommand.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command` -**Source:** `org/rusherhack/core/command/AbstractCommand.java` +**Source:** `org/rusherhack/api/javadoc/core/command/AbstractCommand.java` **Author:** john@rusherhack.org @@ -10,7 +10,7 @@ ## Overview -`AbstractCommand` is a class and implements [IFeature](/core/feature/IFeature.md), [IHideable](/core/interfaces/IHideable.md). +`AbstractCommand` is a class and implements [IFeature](/api/javadoc/core/feature/IFeature.md), [IHideable](/api/javadoc/core/interfaces/IHideable.md). ## Constructor @@ -46,8 +46,8 @@ public AbstractCommand(AbstractCommand parent, String name, String description) | name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | | description | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | | aliases | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | private final | -| parent | [AbstractCommand](/core/command/AbstractCommand.md) | private final | -| subCommands | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[AbstractCommand](/core/command/AbstractCommand.md)> | private final | +| parent | [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) | private final | +| subCommands | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[AbstractCommand](/api/javadoc/core/command/AbstractCommand.md)> | private final | ## Methods @@ -110,7 +110,7 @@ public String[] getAliases() public AbstractCommand getParent() ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### getSubCommands() @@ -118,7 +118,7 @@ public AbstractCommand getParent() public List getSubCommands() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[AbstractCommand](/core/command/AbstractCommand.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[AbstractCommand](/api/javadoc/core/command/AbstractCommand.md)> ### isHidden() diff --git a/docs/api/core/command/ArgumentData.md b/docs/api/javadoc/core/command/ArgumentData.md similarity index 59% rename from docs/api/core/command/ArgumentData.md rename to docs/api/javadoc/core/command/ArgumentData.md index ba5612f..7ec241d 100644 --- a/docs/api/core/command/ArgumentData.md +++ b/docs/api/javadoc/core/command/ArgumentData.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command` -**Source:** `org/rusherhack/core/command/CommandData.java` +**Source:** `org/rusherhack/api/javadoc/core/command/CommandData.java` ## Overview diff --git a/docs/api/core/command/CommandData.md b/docs/api/javadoc/core/command/CommandData.md similarity index 63% rename from docs/api/core/command/CommandData.md rename to docs/api/javadoc/core/command/CommandData.md index df1d03f..0487b92 100644 --- a/docs/api/core/command/CommandData.md +++ b/docs/api/javadoc/core/command/CommandData.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command` -**Source:** `org/rusherhack/core/command/CommandData.java` +**Source:** `org/rusherhack/api/javadoc/core/command/CommandData.java` **Author:** john@rusherhack.org 12/15/2022 @@ -10,7 +10,7 @@ ## Overview -`CommandData` is a class and implements [INamed](/core/interfaces/INamed.md). +`CommandData` is a class and implements [INamed](/api/javadoc/core/interfaces/INamed.md). ## Constructor @@ -26,12 +26,12 @@ public CommandData(AbstractCommand command, String name, String aliases) | Name | Type | Modifiers | |------|------|----------| -| command | [AbstractCommand](/core/command/AbstractCommand.md) | private final | +| command | [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) | private final | | name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | | aliases | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | -| methods | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[MethodData](/core/command/MethodData.md)> | private final | -| parent | [CommandData](/core/command/CommandData.md) | private | -| subCommands | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[CommandData](/core/command/CommandData.md)> | private final | +| methods | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[MethodData](/api/javadoc/core/command/MethodData.md)> | private final | +| parent | [CommandData](/api/javadoc/core/command/CommandData.md) | private | +| subCommands | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[CommandData](/api/javadoc/core/command/CommandData.md)> | private final | ## Methods @@ -42,7 +42,7 @@ public CommandData(AbstractCommand command, String name, String aliases) public AbstractCommand getCommand() ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### getName() @@ -72,7 +72,7 @@ public void addMethod(Method method, List arguments) public List getSubCommands() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[CommandData](/core/command/CommandData.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[CommandData](/api/javadoc/core/command/CommandData.md)> ### findSubCommand() @@ -80,7 +80,7 @@ public List getSubCommands() public CommandData findSubCommand(String alias) ``` -**Returns:** [CommandData](/core/command/CommandData.md) +**Returns:** [CommandData](/api/javadoc/core/command/CommandData.md) ### getMethods() @@ -88,7 +88,7 @@ public CommandData findSubCommand(String alias) public List getMethods() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[MethodData](/core/command/MethodData.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[MethodData](/api/javadoc/core/command/MethodData.md)> ### setParent() @@ -102,5 +102,5 @@ public void setParent(CommandData parent) public CommandData getParent() ``` -**Returns:** [CommandData](/core/command/CommandData.md) +**Returns:** [CommandData](/api/javadoc/core/command/CommandData.md) diff --git a/docs/api/core/command/CommandManager.md b/docs/api/javadoc/core/command/CommandManager.md similarity index 56% rename from docs/api/core/command/CommandManager.md rename to docs/api/javadoc/core/command/CommandManager.md index fcffb5e..fc1f7b1 100644 --- a/docs/api/core/command/CommandManager.md +++ b/docs/api/javadoc/core/command/CommandManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command` -**Source:** `org/rusherhack/core/command/CommandManager.java` +**Source:** `org/rusherhack/api/javadoc/core/command/CommandManager.java` Command manager * **Author:** john@rusherhack.org 12/15/2022 @@ -11,7 +11,7 @@ Command manager ## Overview -`CommandManager` is a class and implements [ICommandManager](/core/command/ICommandManager.md). +`CommandManager` is a class and implements [ICommandManager](/api/javadoc/core/command/ICommandManager.md). ## Constructor @@ -31,10 +31,10 @@ public CommandManager(CommandProcessor processor, ICommandDispatcher dispatch | Name | Type | Modifiers | |------|------|----------| -| commands | [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[AbstractCommand](/core/command/AbstractCommand.md), [CommandData](/core/command/CommandData.md)> | private final | -| commandProcessor | [CommandProcessor](/core/command/processing/CommandProcessor.md) | protected final | -| dispatcher | [ICommandDispatcher](/core/command/dispatch/ICommandDispatcher.md)<`?`> | protected | -| logger | [ILogger](/core/logging/ILogger.md) | protected final | +| commands | [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[AbstractCommand](/api/javadoc/core/command/AbstractCommand.md), [CommandData](/api/javadoc/core/command/CommandData.md)> | private final | +| commandProcessor | [CommandProcessor](/api/javadoc/core/command/processing/CommandProcessor.md) | protected final | +| dispatcher | [ICommandDispatcher](/api/javadoc/core/command/dispatch/ICommandDispatcher.md)<`?`> | protected | +| logger | [ILogger](/api/javadoc/core/logging/ILogger.md) | protected final | ## Methods @@ -53,7 +53,7 @@ Register a command public CommandData createCommandData(AbstractCommand command) ``` -**Returns:** [CommandData](/core/command/CommandData.md) +**Returns:** [CommandData](/api/javadoc/core/command/CommandData.md) ### getCommandData() @@ -61,7 +61,7 @@ public CommandData createCommandData(AbstractCommand command) public CommandData getCommandData(String command) ``` -**Returns:** [CommandData](/core/command/CommandData.md) +**Returns:** [CommandData](/api/javadoc/core/command/CommandData.md) ### getCommandData() @@ -69,7 +69,7 @@ public CommandData getCommandData(String command) public CommandData getCommandData(AbstractCommand command) ``` -**Returns:** [CommandData](/core/command/CommandData.md) +**Returns:** [CommandData](/api/javadoc/core/command/CommandData.md) ### getFeature() @@ -77,7 +77,7 @@ public CommandData getCommandData(AbstractCommand command) public Optional getFeature(String name) ``` -**Returns:** [Optional](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Optional.html)<[AbstractCommand](/core/command/AbstractCommand.md)> +**Returns:** [Optional](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Optional.html)<[AbstractCommand](/api/javadoc/core/command/AbstractCommand.md)> ### getFeatures() @@ -85,7 +85,7 @@ public Optional getFeature(String name) public List getFeatures() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[AbstractCommand](/core/command/AbstractCommand.md)> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[AbstractCommand](/api/javadoc/core/command/AbstractCommand.md)> ### getCommandProcessor() @@ -93,7 +93,7 @@ public List getFeatures() public CommandProcessor getCommandProcessor() ``` -**Returns:** [CommandProcessor](/core/command/processing/CommandProcessor.md) +**Returns:** [CommandProcessor](/api/javadoc/core/command/processing/CommandProcessor.md) ### getDispatcher() @@ -101,7 +101,7 @@ public CommandProcessor getCommandProcessor() public ICommandDispatcher getDispatcher() ``` -**Returns:** [ICommandDispatcher](/core/command/dispatch/ICommandDispatcher.md)<`?`> +**Returns:** [ICommandDispatcher](/api/javadoc/core/command/dispatch/ICommandDispatcher.md)<`?`> ### getPrefix() @@ -117,5 +117,5 @@ public String getPrefix() public ILogger getLogger() ``` -**Returns:** [ILogger](/core/logging/ILogger.md) +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) diff --git a/docs/api/core/command/CommandUtils.md b/docs/api/javadoc/core/command/CommandUtils.md similarity index 95% rename from docs/api/core/command/CommandUtils.md rename to docs/api/javadoc/core/command/CommandUtils.md index 7108fe3..f79246b 100644 --- a/docs/api/core/command/CommandUtils.md +++ b/docs/api/javadoc/core/command/CommandUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command` -**Source:** `org/rusherhack/core/command/CommandUtils.java` +**Source:** `org/rusherhack/api/javadoc/core/command/CommandUtils.java` **Author:** john@rusherhack.org 5/19/2024 diff --git a/docs/api/core/command/ICommandManager.md b/docs/api/javadoc/core/command/ICommandManager.md similarity index 67% rename from docs/api/core/command/ICommandManager.md rename to docs/api/javadoc/core/command/ICommandManager.md index 3ddbdf5..182745f 100644 --- a/docs/api/core/command/ICommandManager.md +++ b/docs/api/javadoc/core/command/ICommandManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command` -**Source:** `org/rusherhack/core/command/ICommandManager.java` +**Source:** `org/rusherhack/api/javadoc/core/command/ICommandManager.java` Interface for accessing the command manager * **Author:** john@rusherhack.org 7/15/2024 @@ -11,7 +11,7 @@ Interface for accessing the command manager ## Overview -`ICommandManager` is a interface that extends [IFeatureManager](/core/feature/IFeatureManager.md). +`ICommandManager` is a interface that extends [IFeatureManager](/api/javadoc/core/feature/IFeatureManager.md). ## Methods @@ -25,7 +25,7 @@ Interface for accessing the command manager -**Returns:** [ICommandProcessor](/core/command/processing/ICommandProcessor.md) +**Returns:** [ICommandProcessor](/api/javadoc/core/command/processing/ICommandProcessor.md) ### getDispatcher() @@ -37,7 +37,7 @@ Interface for accessing the command manager -**Returns:** [ICommandDispatcher](/core/command/dispatch/ICommandDispatcher.md)<`?`> +**Returns:** [ICommandDispatcher](/api/javadoc/core/command/dispatch/ICommandDispatcher.md)<`?`> ### getPrefix() diff --git a/docs/api/core/command/ICommandSource.md b/docs/api/javadoc/core/command/ICommandSource.md similarity index 87% rename from docs/api/core/command/ICommandSource.md rename to docs/api/javadoc/core/command/ICommandSource.md index c46ef5f..fcf8e69 100644 --- a/docs/api/core/command/ICommandSource.md +++ b/docs/api/javadoc/core/command/ICommandSource.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command` -**Source:** `org/rusherhack/core/command/ICommandSource.java` +**Source:** `org/rusherhack/api/javadoc/core/command/ICommandSource.java` The source of this command * **Author:** john@rusherhack.org 5/24/2024 diff --git a/docs/api/core/command/MethodData.md b/docs/api/javadoc/core/command/MethodData.md similarity index 58% rename from docs/api/core/command/MethodData.md rename to docs/api/javadoc/core/command/MethodData.md index 14d3fee..f3c7cef 100644 --- a/docs/api/core/command/MethodData.md +++ b/docs/api/javadoc/core/command/MethodData.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command` -**Source:** `org/rusherhack/core/command/CommandData.java` +**Source:** `org/rusherhack/api/javadoc/core/command/CommandData.java` ## Overview diff --git a/docs/api/core/command/annotations/Argument.md b/docs/api/javadoc/core/command/annotations/Argument.md similarity index 78% rename from docs/api/core/command/annotations/Argument.md rename to docs/api/javadoc/core/command/annotations/Argument.md index d769446..8f29306 100644 --- a/docs/api/core/command/annotations/Argument.md +++ b/docs/api/javadoc/core/command/annotations/Argument.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.annotations` -**Source:** `org/rusherhack/core/command/annotations/CommandExecutor.java` +**Source:** `org/rusherhack/api/javadoc/core/command/annotations/CommandExecutor.java` Used to map arguments to the method parameters. diff --git a/docs/api/javadoc/core/command/annotations/CommandExecutor.md b/docs/api/javadoc/core/command/annotations/CommandExecutor.md new file mode 100644 index 0000000..62516f9 --- /dev/null +++ b/docs/api/javadoc/core/command/annotations/CommandExecutor.md @@ -0,0 +1,19 @@ +# CommandExecutor + +**Package:** `org.rusherhack.core.command.annotations` + +**Source:** `org/rusherhack/api/javadoc/core/command/annotations/CommandExecutor.java` + +Annotation used on top of methods in [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) to register the methods to be executed with the command. + + + +If the method returns a String, it will act as the output of the command. +* **Author:** John200410 12/15/2022 + + + +## Overview + +`CommandExecutor` is a annotation. + diff --git a/docs/api/core/command/argument/StringCapture.md b/docs/api/javadoc/core/command/argument/StringCapture.md similarity index 74% rename from docs/api/core/command/argument/StringCapture.md rename to docs/api/javadoc/core/command/argument/StringCapture.md index 2f487ef..61d64be 100644 --- a/docs/api/core/command/argument/StringCapture.md +++ b/docs/api/javadoc/core/command/argument/StringCapture.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.argument` -**Source:** `org/rusherhack/core/command/argument/StringCapture.java` +**Source:** `org/rusherhack/api/javadoc/core/command/argument/StringCapture.java` Can be used as last argument of a command to capture the rest of the input as a string. * **Author:** John200410 8/4/2023 diff --git a/docs/api/core/command/argument/parser/IArg.md b/docs/api/javadoc/core/command/argument/parser/IArg.md similarity index 95% rename from docs/api/core/command/argument/parser/IArg.md rename to docs/api/javadoc/core/command/argument/parser/IArg.md index 91cf1c8..7da828a 100644 --- a/docs/api/core/command/argument/parser/IArg.md +++ b/docs/api/javadoc/core/command/argument/parser/IArg.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.argument.parser` -**Source:** `org/rusherhack/core/command/argument/parser/IArg.java` +**Source:** `org/rusherhack/api/javadoc/core/command/argument/parser/IArg.java` Interface for command argument parsers * **Author:** John200410 12/15/2022 diff --git a/docs/api/core/command/argument/parser/impl/BooleanArg.md b/docs/api/javadoc/core/command/argument/parser/impl/BooleanArg.md similarity index 84% rename from docs/api/core/command/argument/parser/impl/BooleanArg.md rename to docs/api/javadoc/core/command/argument/parser/impl/BooleanArg.md index 808c771..cb2a431 100644 --- a/docs/api/core/command/argument/parser/impl/BooleanArg.md +++ b/docs/api/javadoc/core/command/argument/parser/impl/BooleanArg.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.argument.parser.impl` -**Source:** `org/rusherhack/core/command/argument/parser/impl/BooleanArg.java` +**Source:** `org/rusherhack/api/javadoc/core/command/argument/parser/impl/BooleanArg.java` **Author:** John200410 12/15/2022 @@ -10,7 +10,7 @@ ## Overview -`BooleanArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). +`BooleanArg` is a class and implements [IArg](/api/javadoc/core/command/argument/parser/IArg.md). ## Fields diff --git a/docs/api/core/command/argument/parser/impl/ColorArg.md b/docs/api/javadoc/core/command/argument/parser/impl/ColorArg.md similarity index 76% rename from docs/api/core/command/argument/parser/impl/ColorArg.md rename to docs/api/javadoc/core/command/argument/parser/impl/ColorArg.md index 2ee4d17..0e4c18d 100644 --- a/docs/api/core/command/argument/parser/impl/ColorArg.md +++ b/docs/api/javadoc/core/command/argument/parser/impl/ColorArg.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.argument.parser.impl` -**Source:** `org/rusherhack/core/command/argument/parser/impl/ColorArg.java` +**Source:** `org/rusherhack/api/javadoc/core/command/argument/parser/impl/ColorArg.java` **Author:** John200410 7/19/2023 @@ -10,7 +10,7 @@ ## Overview -`ColorArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). +`ColorArg` is a class and implements [IArg](/api/javadoc/core/command/argument/parser/IArg.md). ## Methods diff --git a/docs/api/core/command/argument/parser/impl/DoubleArg.md b/docs/api/javadoc/core/command/argument/parser/impl/DoubleArg.md similarity index 64% rename from docs/api/core/command/argument/parser/impl/DoubleArg.md rename to docs/api/javadoc/core/command/argument/parser/impl/DoubleArg.md index 31c9e92..c49b90e 100644 --- a/docs/api/core/command/argument/parser/impl/DoubleArg.md +++ b/docs/api/javadoc/core/command/argument/parser/impl/DoubleArg.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.argument.parser.impl` -**Source:** `org/rusherhack/core/command/argument/parser/impl/DoubleArg.java` +**Source:** `org/rusherhack/api/javadoc/core/command/argument/parser/impl/DoubleArg.java` **Author:** John200410 12/15/2022 @@ -10,7 +10,7 @@ ## Overview -`DoubleArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). +`DoubleArg` is a class and implements [IArg](/api/javadoc/core/command/argument/parser/IArg.md). ## Methods diff --git a/docs/api/core/command/argument/parser/impl/EnumArg.md b/docs/api/javadoc/core/command/argument/parser/impl/EnumArg.md similarity index 76% rename from docs/api/core/command/argument/parser/impl/EnumArg.md rename to docs/api/javadoc/core/command/argument/parser/impl/EnumArg.md index bfbc345..20d62ad 100644 --- a/docs/api/core/command/argument/parser/impl/EnumArg.md +++ b/docs/api/javadoc/core/command/argument/parser/impl/EnumArg.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.argument.parser.impl` -**Source:** `org/rusherhack/core/command/argument/parser/impl/EnumArg.java` +**Source:** `org/rusherhack/api/javadoc/core/command/argument/parser/impl/EnumArg.java` **Author:** John200410 3/5/2024 @@ -10,7 +10,7 @@ ## Overview -`EnumArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). +`EnumArg` is a class and implements [IArg](/api/javadoc/core/command/argument/parser/IArg.md). ## Methods diff --git a/docs/api/core/command/argument/parser/impl/IntegerArg.md b/docs/api/javadoc/core/command/argument/parser/impl/IntegerArg.md similarity index 64% rename from docs/api/core/command/argument/parser/impl/IntegerArg.md rename to docs/api/javadoc/core/command/argument/parser/impl/IntegerArg.md index 932d588..4246c41 100644 --- a/docs/api/core/command/argument/parser/impl/IntegerArg.md +++ b/docs/api/javadoc/core/command/argument/parser/impl/IntegerArg.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.argument.parser.impl` -**Source:** `org/rusherhack/core/command/argument/parser/impl/IntegerArg.java` +**Source:** `org/rusherhack/api/javadoc/core/command/argument/parser/impl/IntegerArg.java` **Author:** John200410 12/15/2022 @@ -10,7 +10,7 @@ ## Overview -`IntegerArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). +`IntegerArg` is a class and implements [IArg](/api/javadoc/core/command/argument/parser/IArg.md). ## Methods diff --git a/docs/api/core/command/argument/parser/impl/StringArg.md b/docs/api/javadoc/core/command/argument/parser/impl/StringArg.md similarity index 64% rename from docs/api/core/command/argument/parser/impl/StringArg.md rename to docs/api/javadoc/core/command/argument/parser/impl/StringArg.md index c1a9ca3..91962f8 100644 --- a/docs/api/core/command/argument/parser/impl/StringArg.md +++ b/docs/api/javadoc/core/command/argument/parser/impl/StringArg.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.argument.parser.impl` -**Source:** `org/rusherhack/core/command/argument/parser/impl/StringArg.java` +**Source:** `org/rusherhack/api/javadoc/core/command/argument/parser/impl/StringArg.java` **Author:** John200410 12/16/2022 @@ -10,7 +10,7 @@ ## Overview -`StringArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). +`StringArg` is a class and implements [IArg](/api/javadoc/core/command/argument/parser/IArg.md). ## Methods diff --git a/docs/api/core/command/argument/parser/impl/StringCapturerArg.md b/docs/api/javadoc/core/command/argument/parser/impl/StringCapturerArg.md similarity index 59% rename from docs/api/core/command/argument/parser/impl/StringCapturerArg.md rename to docs/api/javadoc/core/command/argument/parser/impl/StringCapturerArg.md index e97d539..9424083 100644 --- a/docs/api/core/command/argument/parser/impl/StringCapturerArg.md +++ b/docs/api/javadoc/core/command/argument/parser/impl/StringCapturerArg.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.argument.parser.impl` -**Source:** `org/rusherhack/core/command/argument/parser/impl/StringCapturerArg.java` +**Source:** `org/rusherhack/api/javadoc/core/command/argument/parser/impl/StringCapturerArg.java` **Author:** John200410 8/4/2023 @@ -10,7 +10,7 @@ ## Overview -`StringCapturerArg` is a class and implements [IArg](/core/command/argument/parser/IArg.md). +`StringCapturerArg` is a class and implements [IArg](/api/javadoc/core/command/argument/parser/IArg.md). ## Methods @@ -20,7 +20,7 @@ public StringCapture parse(CommandProcessingSink context, String str) ``` -**Returns:** [StringCapture](/core/command/argument/StringCapture.md) +**Returns:** [StringCapture](/api/javadoc/core/command/argument/StringCapture.md) ### captureRemaining() diff --git a/docs/api/core/command/dispatch/ICommandDispatcher.md b/docs/api/javadoc/core/command/dispatch/ICommandDispatcher.md similarity index 93% rename from docs/api/core/command/dispatch/ICommandDispatcher.md rename to docs/api/javadoc/core/command/dispatch/ICommandDispatcher.md index 476f2a9..a9ae7e8 100644 --- a/docs/api/core/command/dispatch/ICommandDispatcher.md +++ b/docs/api/javadoc/core/command/dispatch/ICommandDispatcher.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.dispatch` -**Source:** `org/rusherhack/core/command/dispatch/ICommandDispatcher.java` +**Source:** `org/rusherhack/api/javadoc/core/command/dispatch/ICommandDispatcher.java` Command dispatcher interface * **Author:** John200410 5/24/2024 diff --git a/docs/api/core/command/dispatch/StringCommandDispatcher.md b/docs/api/javadoc/core/command/dispatch/StringCommandDispatcher.md similarity index 74% rename from docs/api/core/command/dispatch/StringCommandDispatcher.md rename to docs/api/javadoc/core/command/dispatch/StringCommandDispatcher.md index 6820971..7c8389d 100644 --- a/docs/api/core/command/dispatch/StringCommandDispatcher.md +++ b/docs/api/javadoc/core/command/dispatch/StringCommandDispatcher.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.dispatch` -**Source:** `org/rusherhack/core/command/dispatch/StringCommandDispatcher.java` +**Source:** `org/rusherhack/api/javadoc/core/command/dispatch/StringCommandDispatcher.java` **Author:** John200410 5/24/2024 @@ -10,7 +10,7 @@ ## Overview -`StringCommandDispatcher` is a class and implements [ICommandDispatcher](/core/command/dispatch/ICommandDispatcher.md). +`StringCommandDispatcher` is a class and implements [ICommandDispatcher](/api/javadoc/core/command/dispatch/ICommandDispatcher.md). ## Constructor @@ -22,7 +22,7 @@ public StringCommandDispatcher(CommandManager commandManager) | Name | Type | Modifiers | |------|------|----------| -| commandManager | [CommandManager](/core/command/CommandManager.md) | protected final | +| commandManager | [CommandManager](/api/javadoc/core/command/CommandManager.md) | protected final | ## Methods diff --git a/docs/api/core/command/exceptions/ArgumentException.md b/docs/api/javadoc/core/command/exceptions/ArgumentException.md similarity index 78% rename from docs/api/core/command/exceptions/ArgumentException.md rename to docs/api/javadoc/core/command/exceptions/ArgumentException.md index f07365f..2c8c99c 100644 --- a/docs/api/core/command/exceptions/ArgumentException.md +++ b/docs/api/javadoc/core/command/exceptions/ArgumentException.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.exceptions` -**Source:** `org/rusherhack/core/command/exceptions/ArgumentException.java` +**Source:** `org/rusherhack/api/javadoc/core/command/exceptions/ArgumentException.java` **Author:** John200410 5/19/2024 @@ -10,7 +10,7 @@ ## Overview -`ArgumentException` is a class that extends [CommandException](/core/command/exceptions/CommandException.md). +`ArgumentException` is a class that extends [CommandException](/api/javadoc/core/command/exceptions/CommandException.md). ## Constructor diff --git a/docs/api/core/command/exceptions/BadSyntaxException.md b/docs/api/javadoc/core/command/exceptions/BadSyntaxException.md similarity index 78% rename from docs/api/core/command/exceptions/BadSyntaxException.md rename to docs/api/javadoc/core/command/exceptions/BadSyntaxException.md index 4504dc9..535cb95 100644 --- a/docs/api/core/command/exceptions/BadSyntaxException.md +++ b/docs/api/javadoc/core/command/exceptions/BadSyntaxException.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.exceptions` -**Source:** `org/rusherhack/core/command/exceptions/BadSyntaxException.java` +**Source:** `org/rusherhack/api/javadoc/core/command/exceptions/BadSyntaxException.java` **Author:** John200410 12/15/2022 @@ -10,7 +10,7 @@ ## Overview -`BadSyntaxException` is a class that extends [CommandException](/core/command/exceptions/CommandException.md). +`BadSyntaxException` is a class that extends [CommandException](/api/javadoc/core/command/exceptions/CommandException.md). ## Constructor diff --git a/docs/api/core/command/exceptions/CommandException.md b/docs/api/javadoc/core/command/exceptions/CommandException.md similarity index 77% rename from docs/api/core/command/exceptions/CommandException.md rename to docs/api/javadoc/core/command/exceptions/CommandException.md index cd332ad..8e4b0cc 100644 --- a/docs/api/core/command/exceptions/CommandException.md +++ b/docs/api/javadoc/core/command/exceptions/CommandException.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.exceptions` -**Source:** `org/rusherhack/core/command/exceptions/CommandException.java` +**Source:** `org/rusherhack/api/javadoc/core/command/exceptions/CommandException.java` **Author:** John200410 5/14/2024 @@ -34,7 +34,7 @@ public CommandException(String message, CommandProcessingSink context, Throwable | Name | Type | Modifiers | |------|------|----------| -| context | [CommandProcessingSink](/core/command/processing/CommandProcessingSink.md) | private | +| context | [CommandProcessingSink](/api/javadoc/core/command/processing/CommandProcessingSink.md) | private | ## Methods @@ -51,7 +51,7 @@ public void setContext(CommandProcessingSink context) public CommandProcessingSink getContext() ``` -**Returns:** [CommandProcessingSink](/core/command/processing/CommandProcessingSink.md) +**Returns:** [CommandProcessingSink](/api/javadoc/core/command/processing/CommandProcessingSink.md) ### shouldPrintSyntax() diff --git a/docs/api/core/command/exceptions/DispatchException.md b/docs/api/javadoc/core/command/exceptions/DispatchException.md similarity index 84% rename from docs/api/core/command/exceptions/DispatchException.md rename to docs/api/javadoc/core/command/exceptions/DispatchException.md index 36b62c4..940d0f3 100644 --- a/docs/api/core/command/exceptions/DispatchException.md +++ b/docs/api/javadoc/core/command/exceptions/DispatchException.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.exceptions` -**Source:** `org/rusherhack/core/command/exceptions/DispatchException.java` +**Source:** `org/rusherhack/api/javadoc/core/command/exceptions/DispatchException.java` This exception is thrown when the commandmanager fails to dispatch a command. * **Author:** John200410 5/14/2024 diff --git a/docs/api/core/command/exceptions/UnknownArgumentTypeException.md b/docs/api/javadoc/core/command/exceptions/UnknownArgumentTypeException.md similarity index 62% rename from docs/api/core/command/exceptions/UnknownArgumentTypeException.md rename to docs/api/javadoc/core/command/exceptions/UnknownArgumentTypeException.md index 32704a1..c3783bb 100644 --- a/docs/api/core/command/exceptions/UnknownArgumentTypeException.md +++ b/docs/api/javadoc/core/command/exceptions/UnknownArgumentTypeException.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.exceptions` -**Source:** `org/rusherhack/core/command/exceptions/UnknownArgumentTypeException.java` +**Source:** `org/rusherhack/api/javadoc/core/command/exceptions/UnknownArgumentTypeException.java` **Author:** John200410 12/16/2022 @@ -10,7 +10,7 @@ ## Overview -`UnknownArgumentTypeException` is a class that extends [ArgumentException](/core/command/exceptions/ArgumentException.md). +`UnknownArgumentTypeException` is a class that extends [ArgumentException](/api/javadoc/core/command/exceptions/ArgumentException.md). ## Constructor diff --git a/docs/api/core/command/exceptions/UnknownCommandException.md b/docs/api/javadoc/core/command/exceptions/UnknownCommandException.md similarity index 66% rename from docs/api/core/command/exceptions/UnknownCommandException.md rename to docs/api/javadoc/core/command/exceptions/UnknownCommandException.md index 5f9c378..b553417 100644 --- a/docs/api/core/command/exceptions/UnknownCommandException.md +++ b/docs/api/javadoc/core/command/exceptions/UnknownCommandException.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.exceptions` -**Source:** `org/rusherhack/core/command/exceptions/UnknownCommandException.java` +**Source:** `org/rusherhack/api/javadoc/core/command/exceptions/UnknownCommandException.java` Throws when a command is not found * **Author:** John200410 6/26/2020 @@ -11,7 +11,7 @@ Throws when a command is not found ## Overview -`UnknownCommandException` is a class that extends [CommandException](/core/command/exceptions/CommandException.md). +`UnknownCommandException` is a class that extends [CommandException](/api/javadoc/core/command/exceptions/CommandException.md). ## Constructor diff --git a/docs/api/core/command/exceptions/ValidationException.md b/docs/api/javadoc/core/command/exceptions/ValidationException.md similarity index 68% rename from docs/api/core/command/exceptions/ValidationException.md rename to docs/api/javadoc/core/command/exceptions/ValidationException.md index 586a83b..211be33 100644 --- a/docs/api/core/command/exceptions/ValidationException.md +++ b/docs/api/javadoc/core/command/exceptions/ValidationException.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.exceptions` -**Source:** `org/rusherhack/core/command/exceptions/ValidationException.java` +**Source:** `org/rusherhack/api/javadoc/core/command/exceptions/ValidationException.java` Exception thrown when a source fails to validate a command * **Author:** John200410 5/24/2024 @@ -11,7 +11,7 @@ Exception thrown when a source fails to validate a command ## Overview -`ValidationException` is a class that extends [CommandException](/core/command/exceptions/CommandException.md). +`ValidationException` is a class that extends [CommandException](/api/javadoc/core/command/exceptions/CommandException.md). ## Constructor diff --git a/docs/api/core/command/processing/CommandProcessingSink.md b/docs/api/javadoc/core/command/processing/CommandProcessingSink.md similarity index 66% rename from docs/api/core/command/processing/CommandProcessingSink.md rename to docs/api/javadoc/core/command/processing/CommandProcessingSink.md index 8647121..2d2a333 100644 --- a/docs/api/core/command/processing/CommandProcessingSink.md +++ b/docs/api/javadoc/core/command/processing/CommandProcessingSink.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.processing` -**Source:** `org/rusherhack/core/command/processing/CommandProcessingSink.java` +**Source:** `org/rusherhack/api/javadoc/core/command/processing/CommandProcessingSink.java` Sink that processes command arguments * **Author:** john@rusherhack.org 5/14/2024 @@ -23,14 +23,14 @@ public CommandProcessingSink(CommandManager commandManager, CommandProcessor com | Name | Type | Modifiers | |------|------|----------| -| commandManager | [CommandManager](/core/command/CommandManager.md) | protected final | -| commandProcessor | [CommandProcessor](/core/command/processing/CommandProcessor.md) | protected final | -| commandData | [CommandData](/core/command/CommandData.md) | protected | +| commandManager | [CommandManager](/api/javadoc/core/command/CommandManager.md) | protected final | +| commandProcessor | [CommandProcessor](/api/javadoc/core/command/processing/CommandProcessor.md) | protected final | +| commandData | [CommandData](/api/javadoc/core/command/CommandData.md) | protected | | commandString | `StringJoiner` | protected final | | inputBuffer | [StringBuilder](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/StringBuilder.html) | protected | | arguments | [ArrayList](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/ArrayList.html)<[String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html)> | protected | -| candidates | [LinkedHashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashMap.html)<[CommandData](/core/command/CommandData.md), [HashSet](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashSet.html)<[MethodProcessor](/core/command/processing/MethodProcessor.md)>> | protected | -| currentEntry | [MethodProcessor](/core/command/processing/MethodProcessor.md) | private | +| candidates | [LinkedHashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashMap.html)<[CommandData](/api/javadoc/core/command/CommandData.md), [HashSet](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashSet.html)<[MethodProcessor](/api/javadoc/core/command/processing/MethodProcessor.md)>> | protected | +| currentEntry | [MethodProcessor](/api/javadoc/core/command/processing/MethodProcessor.md) | private | ## Methods @@ -52,7 +52,7 @@ Accept an argument to be processed public ProcessedCommand finish(boolean furthestDepth) ``` -**Returns:** [ProcessedCommand](/core/command/processing/ProcessedCommand.md) +**Returns:** [ProcessedCommand](/api/javadoc/core/command/processing/ProcessedCommand.md) ### getCommandString() @@ -81,7 +81,7 @@ public List getArguments() public CommandData getCommandData() ``` -**Returns:** [CommandData](/core/command/CommandData.md) +**Returns:** [CommandData](/api/javadoc/core/command/CommandData.md) ### getCurrentEntry() @@ -89,5 +89,5 @@ public CommandData getCommandData() public MethodProcessor getCurrentEntry() ``` -**Returns:** [MethodProcessor](/core/command/processing/MethodProcessor.md) +**Returns:** [MethodProcessor](/api/javadoc/core/command/processing/MethodProcessor.md) diff --git a/docs/api/core/command/processing/CommandProcessor.md b/docs/api/javadoc/core/command/processing/CommandProcessor.md similarity index 72% rename from docs/api/core/command/processing/CommandProcessor.md rename to docs/api/javadoc/core/command/processing/CommandProcessor.md index 87cfdd4..881cc7a 100644 --- a/docs/api/core/command/processing/CommandProcessor.md +++ b/docs/api/javadoc/core/command/processing/CommandProcessor.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.processing` -**Source:** `org/rusherhack/core/command/processing/CommandProcessor.java` +**Source:** `org/rusherhack/api/javadoc/core/command/processing/CommandProcessor.java` Command processor which processes command arguments * **Author:** john@rusherhack.org 12/15/2022 @@ -11,7 +11,7 @@ Command processor which processes command arguments ## Overview -`CommandProcessor` is a class and implements [ICommandProcessor](/core/command/processing/ICommandProcessor.md). +`CommandProcessor` is a class and implements [ICommandProcessor](/api/javadoc/core/command/processing/ICommandProcessor.md). ## Constructor @@ -23,7 +23,7 @@ public CommandProcessor() | Name | Type | Modifiers | |------|------|----------| -| argumentParserMap | [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[Predicate](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Predicate.html)<[Class](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Class.html)<`?`>>, [IArg](/core/command/argument/parser/IArg.md)<`?`>> | private final | +| argumentParserMap | [Map](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html)<[Predicate](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Predicate.html)<[Class](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Class.html)<`?`>>, [IArg](/api/javadoc/core/command/argument/parser/IArg.md)<`?`>> | private final | ## Methods @@ -34,7 +34,7 @@ public CommandProcessor() public CommandProcessingSink processCommand(CommandManager commandManager, String input) ``` -**Returns:** [CommandProcessingSink](/core/command/processing/CommandProcessingSink.md) +**Returns:** [CommandProcessingSink](/api/javadoc/core/command/processing/CommandProcessingSink.md) ### addArgumentParser() @@ -54,5 +54,5 @@ public void addArgumentParser(Predicate> predicate, IArg parser) public IArg getArgumentParser(Class typeClass) ``` -**Returns:** [IArg](/core/command/argument/parser/IArg.md)<`?`> +**Returns:** [IArg](/api/javadoc/core/command/argument/parser/IArg.md)<`?`> diff --git a/docs/api/core/command/processing/ICommandProcessor.md b/docs/api/javadoc/core/command/processing/ICommandProcessor.md similarity index 84% rename from docs/api/core/command/processing/ICommandProcessor.md rename to docs/api/javadoc/core/command/processing/ICommandProcessor.md index 7d0cc8d..3ee828f 100644 --- a/docs/api/core/command/processing/ICommandProcessor.md +++ b/docs/api/javadoc/core/command/processing/ICommandProcessor.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.processing` -**Source:** `org/rusherhack/core/command/processing/ICommandProcessor.java` +**Source:** `org/rusherhack/api/javadoc/core/command/processing/ICommandProcessor.java` Interface for the command processor * **Author:** john@rusherhack.org 3/12/2025 @@ -53,5 +53,5 @@ Adds an argument parser to the command processor -**Returns:** [IArg](/core/command/argument/parser/IArg.md)<`?`> +**Returns:** [IArg](/api/javadoc/core/command/argument/parser/IArg.md)<`?`> diff --git a/docs/api/core/command/processing/MethodProcessor.md b/docs/api/javadoc/core/command/processing/MethodProcessor.md similarity index 76% rename from docs/api/core/command/processing/MethodProcessor.md rename to docs/api/javadoc/core/command/processing/MethodProcessor.md index e739862..edaa472 100644 --- a/docs/api/core/command/processing/MethodProcessor.md +++ b/docs/api/javadoc/core/command/processing/MethodProcessor.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.processing` -**Source:** `org/rusherhack/core/command/processing/CommandProcessingSink.java` +**Source:** `org/rusherhack/api/javadoc/core/command/processing/CommandProcessingSink.java` ## Overview @@ -18,11 +18,11 @@ public MethodProcessor(CommandData commandData, CommandData.MethodData methodDat | Name | Type | Modifiers | |------|------|----------| -| commandData | [CommandData](/core/command/CommandData.md) | private final | +| commandData | [CommandData](/api/javadoc/core/command/CommandData.md) | private final | | methodData | `CommandData.MethodData` | private final | | argsDepth | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | | parsedArguments | [LinkedHashMap](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashMap.html)<`CommandData.ArgumentData`, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html)> | private final | -| err | [CommandException](/core/command/exceptions/CommandException.md) | private | +| err | [CommandException](/api/javadoc/core/command/exceptions/CommandException.md) | private | ## Methods @@ -39,7 +39,7 @@ public void process(String arguments) public ProcessedCommand processed() ``` -**Returns:** [ProcessedCommand](/core/command/processing/ProcessedCommand.md) +**Returns:** [ProcessedCommand](/api/javadoc/core/command/processing/ProcessedCommand.md) ### getError() @@ -47,7 +47,7 @@ public ProcessedCommand processed() public CommandException getError() ``` -**Returns:** [CommandException](/core/command/exceptions/CommandException.md) +**Returns:** [CommandException](/api/javadoc/core/command/exceptions/CommandException.md) ### getCommandData() @@ -55,7 +55,7 @@ public CommandException getError() public CommandData getCommandData() ``` -**Returns:** [CommandData](/core/command/CommandData.md) +**Returns:** [CommandData](/api/javadoc/core/command/CommandData.md) ### getMethodData() diff --git a/docs/api/core/command/processing/ProcessedCommand.md b/docs/api/javadoc/core/command/processing/ProcessedCommand.md similarity index 57% rename from docs/api/core/command/processing/ProcessedCommand.md rename to docs/api/javadoc/core/command/processing/ProcessedCommand.md index 57d2c00..efb9ad2 100644 --- a/docs/api/core/command/processing/ProcessedCommand.md +++ b/docs/api/javadoc/core/command/processing/ProcessedCommand.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.command.processing` -**Source:** `org/rusherhack/core/command/processing/CommandProcessingSink.java` +**Source:** `org/rusherhack/api/javadoc/core/command/processing/CommandProcessingSink.java` ## Overview diff --git a/docs/api/core/feature/IFeature.md b/docs/api/javadoc/core/feature/IFeature.md similarity index 78% rename from docs/api/core/feature/IFeature.md rename to docs/api/javadoc/core/feature/IFeature.md index bc14a23..0af5f7e 100644 --- a/docs/api/core/feature/IFeature.md +++ b/docs/api/javadoc/core/feature/IFeature.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.feature` -**Source:** `org/rusherhack/core/feature/IFeature.java` +**Source:** `org/rusherhack/api/javadoc/core/feature/IFeature.java` Interface for describable features * **Author:** John200410 @@ -11,7 +11,7 @@ Interface for describable features ## Overview -`IFeature` is a interface that extends [INamed](/core/interfaces/INamed.md), [IReferenceable](/core/interfaces/IReferenceable.md). +`IFeature` is a interface that extends [INamed](/api/javadoc/core/interfaces/INamed.md), [IReferenceable](/api/javadoc/core/interfaces/IReferenceable.md). ## Methods diff --git a/docs/api/core/feature/IFeatureConfigurable.md b/docs/api/javadoc/core/feature/IFeatureConfigurable.md similarity index 72% rename from docs/api/core/feature/IFeatureConfigurable.md rename to docs/api/javadoc/core/feature/IFeatureConfigurable.md index bfdc484..a052764 100644 --- a/docs/api/core/feature/IFeatureConfigurable.md +++ b/docs/api/javadoc/core/feature/IFeatureConfigurable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.feature` -**Source:** `org/rusherhack/core/feature/IFeatureConfigurable.java` +**Source:** `org/rusherhack/api/javadoc/core/feature/IFeatureConfigurable.java` A feature with configurable settings * **Author:** John200410 3/6/2023 @@ -11,7 +11,7 @@ A feature with configurable settings ## Overview -`IFeatureConfigurable` is a interface that extends [IFeature](/core/feature/IFeature.md). +`IFeatureConfigurable` is a interface that extends [IFeature](/api/javadoc/core/feature/IFeature.md). ## Methods @@ -25,7 +25,7 @@ A feature with configurable settings -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> ### registerSettings() @@ -50,7 +50,7 @@ Find a setting given its name -**Returns:** [Setting](/core/setting/Setting.md)<`?`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`?`> ### reset() diff --git a/docs/api/core/feature/IFeatureManager.md b/docs/api/javadoc/core/feature/IFeatureManager.md similarity index 92% rename from docs/api/core/feature/IFeatureManager.md rename to docs/api/javadoc/core/feature/IFeatureManager.md index 8f4dde8..436516b 100644 --- a/docs/api/core/feature/IFeatureManager.md +++ b/docs/api/javadoc/core/feature/IFeatureManager.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.feature` -**Source:** `org/rusherhack/core/feature/IFeatureManager.java` +**Source:** `org/rusherhack/api/javadoc/core/feature/IFeatureManager.java` Interface for feature management systems * **Author:** John200410 1/17/2023 diff --git a/docs/api/core/interfaces/IClickable.md b/docs/api/javadoc/core/interfaces/IClickable.md similarity index 78% rename from docs/api/core/interfaces/IClickable.md rename to docs/api/javadoc/core/interfaces/IClickable.md index 70d7fc9..417d782 100644 --- a/docs/api/core/interfaces/IClickable.md +++ b/docs/api/javadoc/core/interfaces/IClickable.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/IClickable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/IClickable.java` ## Overview -`IClickable` is a interface that extends [IHoverable](/core/interfaces/IHoverable.md). +`IClickable` is a interface that extends [IHoverable](/api/javadoc/core/interfaces/IHoverable.md). ## Methods diff --git a/docs/api/core/interfaces/IDraggable.md b/docs/api/javadoc/core/interfaces/IDraggable.md similarity index 66% rename from docs/api/core/interfaces/IDraggable.md rename to docs/api/javadoc/core/interfaces/IDraggable.md index 9705ef4..f1cbdf8 100644 --- a/docs/api/core/interfaces/IDraggable.md +++ b/docs/api/javadoc/core/interfaces/IDraggable.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/IDraggable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/IDraggable.java` ## Overview -`IDraggable` is a interface that extends [IClickable](/core/interfaces/IClickable.md). +`IDraggable` is a interface that extends [IClickable](/api/javadoc/core/interfaces/IClickable.md). ## Methods diff --git a/docs/api/core/interfaces/IHideable.md b/docs/api/javadoc/core/interfaces/IHideable.md similarity index 82% rename from docs/api/core/interfaces/IHideable.md rename to docs/api/javadoc/core/interfaces/IHideable.md index 88ea96a..083b301 100644 --- a/docs/api/core/interfaces/IHideable.md +++ b/docs/api/javadoc/core/interfaces/IHideable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/IHideable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/IHideable.java` Interface for things that can be hidden * **Author:** John200410 1/17/2023 diff --git a/docs/api/core/interfaces/IHoverable.md b/docs/api/javadoc/core/interfaces/IHoverable.md similarity index 85% rename from docs/api/core/interfaces/IHoverable.md rename to docs/api/javadoc/core/interfaces/IHoverable.md index 36a68c9..5f1f186 100644 --- a/docs/api/core/interfaces/IHoverable.md +++ b/docs/api/javadoc/core/interfaces/IHoverable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/IHoverable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/IHoverable.java` Interface for hoverable objects * **Author:** John200410 3/6/2024 diff --git a/docs/api/core/interfaces/INamed.md b/docs/api/javadoc/core/interfaces/INamed.md similarity index 91% rename from docs/api/core/interfaces/INamed.md rename to docs/api/javadoc/core/interfaces/INamed.md index 5f0d420..48d9535 100644 --- a/docs/api/core/interfaces/INamed.md +++ b/docs/api/javadoc/core/interfaces/INamed.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/INamed.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/INamed.java` **Author:** John200410 diff --git a/docs/api/core/interfaces/IPinnable.md b/docs/api/javadoc/core/interfaces/IPinnable.md similarity index 89% rename from docs/api/core/interfaces/IPinnable.md rename to docs/api/javadoc/core/interfaces/IPinnable.md index 45d0067..409e196 100644 --- a/docs/api/core/interfaces/IPinnable.md +++ b/docs/api/javadoc/core/interfaces/IPinnable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/IPinnable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/IPinnable.java` Interface for pinnable objects. * **Author:** John200410 4/8/2024 diff --git a/docs/api/core/interfaces/IReferenceable.md b/docs/api/javadoc/core/interfaces/IReferenceable.md similarity index 81% rename from docs/api/core/interfaces/IReferenceable.md rename to docs/api/javadoc/core/interfaces/IReferenceable.md index 41163c5..4a6138a 100644 --- a/docs/api/core/interfaces/IReferenceable.md +++ b/docs/api/javadoc/core/interfaces/IReferenceable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/IReferenceable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/IReferenceable.java` **Author:** john@rusherhack.org 12/22/2025 diff --git a/docs/api/core/interfaces/IScrollable.md b/docs/api/javadoc/core/interfaces/IScrollable.md similarity index 78% rename from docs/api/core/interfaces/IScrollable.md rename to docs/api/javadoc/core/interfaces/IScrollable.md index 1ae4e8e..77a0b22 100644 --- a/docs/api/core/interfaces/IScrollable.md +++ b/docs/api/javadoc/core/interfaces/IScrollable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/IScrollable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/IScrollable.java` Interface for objects that have a scrollable component * **Author:** John200410 2/10/2023 @@ -11,7 +11,7 @@ Interface for objects that have a scrollable component ## Overview -`IScrollable` is a interface that extends [IHoverable](/core/interfaces/IHoverable.md). +`IScrollable` is a interface that extends [IHoverable](/api/javadoc/core/interfaces/IHoverable.md). ## Methods diff --git a/docs/api/core/interfaces/ITickable.md b/docs/api/javadoc/core/interfaces/ITickable.md similarity index 68% rename from docs/api/core/interfaces/ITickable.md rename to docs/api/javadoc/core/interfaces/ITickable.md index bb1c559..cf7e1c4 100644 --- a/docs/api/core/interfaces/ITickable.md +++ b/docs/api/javadoc/core/interfaces/ITickable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/ITickable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/ITickable.java` ## Overview diff --git a/docs/api/core/interfaces/IToggleable.md b/docs/api/javadoc/core/interfaces/IToggleable.md similarity index 87% rename from docs/api/core/interfaces/IToggleable.md rename to docs/api/javadoc/core/interfaces/IToggleable.md index 63428be..6d814d2 100644 --- a/docs/api/core/interfaces/IToggleable.md +++ b/docs/api/javadoc/core/interfaces/IToggleable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/IToggleable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/IToggleable.java` **Author:** John200410 5/27/2020 for rusherhack-rewrite diff --git a/docs/api/core/interfaces/ITypeable.md b/docs/api/javadoc/core/interfaces/ITypeable.md similarity index 89% rename from docs/api/core/interfaces/ITypeable.md rename to docs/api/javadoc/core/interfaces/ITypeable.md index 1f28d1c..6cf2670 100644 --- a/docs/api/core/interfaces/ITypeable.md +++ b/docs/api/javadoc/core/interfaces/ITypeable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.interfaces` -**Source:** `org/rusherhack/core/interfaces/ITypeable.java` +**Source:** `org/rusherhack/api/javadoc/core/interfaces/ITypeable.java` ## Overview diff --git a/docs/api/core/logging/ILog.md b/docs/api/javadoc/core/logging/ILog.md similarity index 95% rename from docs/api/core/logging/ILog.md rename to docs/api/javadoc/core/logging/ILog.md index c25aedc..99ea6b8 100644 --- a/docs/api/core/logging/ILog.md +++ b/docs/api/javadoc/core/logging/ILog.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.logging` -**Source:** `org/rusherhack/core/logging/ILog.java` +**Source:** `org/rusherhack/api/javadoc/core/logging/ILog.java` **Author:** John200410 3/11/2023 diff --git a/docs/api/core/logging/ILoggable.md b/docs/api/javadoc/core/logging/ILoggable.md similarity index 60% rename from docs/api/core/logging/ILoggable.md rename to docs/api/javadoc/core/logging/ILoggable.md index b5c850f..77b1e74 100644 --- a/docs/api/core/logging/ILoggable.md +++ b/docs/api/javadoc/core/logging/ILoggable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.logging` -**Source:** `org/rusherhack/core/logging/ILoggable.java` +**Source:** `org/rusherhack/api/javadoc/core/logging/ILoggable.java` **Author:** John200410 3/14/2023 @@ -20,5 +20,5 @@ ILogger getLogger() ``` -**Returns:** [ILogger](/core/logging/ILogger.md) +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) diff --git a/docs/api/core/logging/ILogger.md b/docs/api/javadoc/core/logging/ILogger.md similarity index 62% rename from docs/api/core/logging/ILogger.md rename to docs/api/javadoc/core/logging/ILogger.md index 2b3d307..ff906ce 100644 --- a/docs/api/core/logging/ILogger.md +++ b/docs/api/javadoc/core/logging/ILogger.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.logging` -**Source:** `org/rusherhack/core/logging/ILogger.java` +**Source:** `org/rusherhack/api/javadoc/core/logging/ILogger.java` Interface for logging * **Author:** John200410 3/11/2023 @@ -11,7 +11,7 @@ Interface for logging ## Overview -`ILogger` is a interface that extends [ILog](/core/logging/ILog.md). +`ILogger` is a interface that extends [ILog](/api/javadoc/core/logging/ILog.md). ## Methods @@ -29,5 +29,5 @@ Interface for logging ILogger getParent() ``` -**Returns:** [ILogger](/core/logging/ILogger.md) +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) diff --git a/docs/api/core/logging/LogFormatter.md b/docs/api/javadoc/core/logging/LogFormatter.md similarity index 79% rename from docs/api/core/logging/LogFormatter.md rename to docs/api/javadoc/core/logging/LogFormatter.md index ee46856..5d68b07 100644 --- a/docs/api/core/logging/LogFormatter.md +++ b/docs/api/javadoc/core/logging/LogFormatter.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.logging` -**Source:** `org/rusherhack/core/logging/LogFormatter.java` +**Source:** `org/rusherhack/api/javadoc/core/logging/LogFormatter.java` **Author:** John200410 2/10/2024 @@ -16,7 +16,7 @@ | Name | Type | Modifiers | |------|------|----------| -| INSTANCE | [LogFormatter](/core/logging/LogFormatter.md) | static | +| INSTANCE | [LogFormatter](/api/javadoc/core/logging/LogFormatter.md) | static | ## Methods diff --git a/docs/api/core/logging/Logger.md b/docs/api/javadoc/core/logging/Logger.md similarity index 74% rename from docs/api/core/logging/Logger.md rename to docs/api/javadoc/core/logging/Logger.md index 1d06080..33cf108 100644 --- a/docs/api/core/logging/Logger.md +++ b/docs/api/javadoc/core/logging/Logger.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.logging` -**Source:** `org/rusherhack/core/logging/Logger.java` +**Source:** `org/rusherhack/api/javadoc/core/logging/Logger.java` TODO: implement slf4j Logger interface * **Author:** John200410 3/11/2023 @@ -11,7 +11,7 @@ TODO: implement slf4j Logger interface ## Overview -`Logger` is a class and implements [ILogger](/core/logging/ILogger.md). +`Logger` is a class and implements [ILogger](/api/javadoc/core/logging/ILogger.md). ## Constructor @@ -36,8 +36,8 @@ public Logger(String name, ILogger parentLogger, Path logDirectory) | Name | Type | Modifiers | |------|------|----------| | name | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | -| parentLogger | [ILogger](/core/logging/ILogger.md) | private final | -| outputs | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ILog](/core/logging/ILog.md)> | protected final | +| parentLogger | [ILogger](/api/javadoc/core/logging/ILogger.md) | private final | +| outputs | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[ILog](/api/javadoc/core/logging/ILog.md)> | protected final | ## Methods @@ -86,5 +86,5 @@ public String getName() public ILogger getParent() ``` -**Returns:** [ILogger](/core/logging/ILogger.md) +**Returns:** [ILogger](/api/javadoc/core/logging/ILogger.md) diff --git a/docs/api/core/logging/output/FileOutput.md b/docs/api/javadoc/core/logging/output/FileOutput.md similarity index 86% rename from docs/api/core/logging/output/FileOutput.md rename to docs/api/javadoc/core/logging/output/FileOutput.md index cb11fcf..ff0a04a 100644 --- a/docs/api/core/logging/output/FileOutput.md +++ b/docs/api/javadoc/core/logging/output/FileOutput.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.logging.output` -**Source:** `org/rusherhack/core/logging/output/FileOutput.java` +**Source:** `org/rusherhack/api/javadoc/core/logging/output/FileOutput.java` **Author:** John200410 2/9/2024 @@ -10,7 +10,7 @@ ## Overview -`FileOutput` is a class and implements [ILog](/core/logging/ILog.md). +`FileOutput` is a class and implements [ILog](/api/javadoc/core/logging/ILog.md). ## Constructor diff --git a/docs/api/core/notification/INotifiable.md b/docs/api/javadoc/core/notification/INotifiable.md similarity index 87% rename from docs/api/core/notification/INotifiable.md rename to docs/api/javadoc/core/notification/INotifiable.md index 5f84755..663a61a 100644 --- a/docs/api/core/notification/INotifiable.md +++ b/docs/api/javadoc/core/notification/INotifiable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.notification` -**Source:** `org/rusherhack/core/notification/INotifiable.java` +**Source:** `org/rusherhack/api/javadoc/core/notification/INotifiable.java` Interface for sending notifications * **Author:** John200410 2/9/2023 diff --git a/docs/api/core/notification/NotificationType.md b/docs/api/javadoc/core/notification/NotificationType.md similarity index 87% rename from docs/api/core/notification/NotificationType.md rename to docs/api/javadoc/core/notification/NotificationType.md index 6e07694..57457e4 100644 --- a/docs/api/core/notification/NotificationType.md +++ b/docs/api/javadoc/core/notification/NotificationType.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.notification` -**Source:** `org/rusherhack/core/notification/NotificationType.java` +**Source:** `org/rusherhack/api/javadoc/core/notification/NotificationType.java` **Author:** John200410 1/27/2023 @@ -72,5 +72,5 @@ public long getLifeSpan() public static NotificationType fromTypeID(int typeID) ``` -**Returns:** [NotificationType](/core/notification/NotificationType.md) +**Returns:** [NotificationType](/api/javadoc/core/notification/NotificationType.md) diff --git a/docs/api/core/notification/type/LivingNotification.md b/docs/api/javadoc/core/notification/type/LivingNotification.md similarity index 76% rename from docs/api/core/notification/type/LivingNotification.md rename to docs/api/javadoc/core/notification/type/LivingNotification.md index 95a0038..4597814 100644 --- a/docs/api/core/notification/type/LivingNotification.md +++ b/docs/api/javadoc/core/notification/type/LivingNotification.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.notification.type` -**Source:** `org/rusherhack/core/notification/type/LivingNotification.java` +**Source:** `org/rusherhack/api/javadoc/core/notification/type/LivingNotification.java` This is a notification that has a life span. It will be removed from the notification manager after the life span has passed. @@ -15,7 +15,7 @@ This is useful for notifications that are only meant to be displayed for a short ## Overview -`LivingNotification` is a class that extends [Notification](/core/notification/type/Notification.md) and implements [ITickable](/core/interfaces/ITickable.md). +`LivingNotification` is a class that extends [Notification](/api/javadoc/core/notification/type/Notification.md) and implements [ITickable](/api/javadoc/core/interfaces/ITickable.md). ## Constructor @@ -31,7 +31,7 @@ public LivingNotification(String text, NotificationType type, int id) | Name | Type | Modifiers | |------|------|----------| -| timer | [Timer](/core/utils/Timer.md) | private final | +| timer | [Timer](/api/javadoc/core/utils/Timer.md) | private final | | lifeSpan | [long](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Long.html) | private final | | shouldKill | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | private | @@ -44,7 +44,7 @@ public LivingNotification(String text, NotificationType type, int id) public Timer getTimer() ``` -**Returns:** [Timer](/core/utils/Timer.md) +**Returns:** [Timer](/api/javadoc/core/utils/Timer.md) ### getLifeSpan() diff --git a/docs/api/core/notification/type/Notification.md b/docs/api/javadoc/core/notification/type/Notification.md similarity index 79% rename from docs/api/core/notification/type/Notification.md rename to docs/api/javadoc/core/notification/type/Notification.md index 64d043e..20c4907 100644 --- a/docs/api/core/notification/type/Notification.md +++ b/docs/api/javadoc/core/notification/type/Notification.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.notification.type` -**Source:** `org/rusherhack/core/notification/type/Notification.java` +**Source:** `org/rusherhack/api/javadoc/core/notification/type/Notification.java` Abstract notification * **Author:** John200410 1/27/2023 @@ -28,7 +28,7 @@ public Notification(String text, NotificationType type, int id) | Name | Type | Modifiers | |------|------|----------| | text | [String](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html) | private final | -| type | [NotificationType](/core/notification/NotificationType.md) | private final | +| type | [NotificationType](/api/javadoc/core/notification/NotificationType.md) | private final | | id | [int](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html) | private final | @@ -48,7 +48,7 @@ public String getText() public NotificationType getType() ``` -**Returns:** [NotificationType](/core/notification/NotificationType.md) +**Returns:** [NotificationType](/api/javadoc/core/notification/NotificationType.md) ### getID() diff --git a/docs/api/core/serialize/ISerializable.md b/docs/api/javadoc/core/serialize/ISerializable.md similarity index 93% rename from docs/api/core/serialize/ISerializable.md rename to docs/api/javadoc/core/serialize/ISerializable.md index 477a761..81d07b7 100644 --- a/docs/api/core/serialize/ISerializable.md +++ b/docs/api/javadoc/core/serialize/ISerializable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.serialize` -**Source:** `org/rusherhack/core/serialize/ISerializable.java` +**Source:** `org/rusherhack/api/javadoc/core/serialize/ISerializable.java` Interface for things that can be saved to disk * **Author:** John200410 diff --git a/docs/api/core/serialize/JsonSerializable.md b/docs/api/javadoc/core/serialize/JsonSerializable.md similarity index 59% rename from docs/api/core/serialize/JsonSerializable.md rename to docs/api/javadoc/core/serialize/JsonSerializable.md index ae17cf8..bf56fe7 100644 --- a/docs/api/core/serialize/JsonSerializable.md +++ b/docs/api/javadoc/core/serialize/JsonSerializable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.serialize` -**Source:** `org/rusherhack/core/serialize/JsonSerializable.java` +**Source:** `org/rusherhack/api/javadoc/core/serialize/JsonSerializable.java` **Author:** John200410 7/6/2023 @@ -10,5 +10,5 @@ ## Overview -`JsonSerializable` is a interface that extends [ISerializable](/core/serialize/ISerializable.md). +`JsonSerializable` is a interface that extends [ISerializable](/api/javadoc/core/serialize/ISerializable.md). diff --git a/docs/api/core/serialize/TextSerializable.md b/docs/api/javadoc/core/serialize/TextSerializable.md similarity index 59% rename from docs/api/core/serialize/TextSerializable.md rename to docs/api/javadoc/core/serialize/TextSerializable.md index 3614712..7b4bfcc 100644 --- a/docs/api/core/serialize/TextSerializable.md +++ b/docs/api/javadoc/core/serialize/TextSerializable.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.serialize` -**Source:** `org/rusherhack/core/serialize/TextSerializable.java` +**Source:** `org/rusherhack/api/javadoc/core/serialize/TextSerializable.java` **Author:** John200410 7/6/2023 @@ -10,5 +10,5 @@ ## Overview -`TextSerializable` is a interface that extends [ISerializable](/core/serialize/ISerializable.md). +`TextSerializable` is a interface that extends [ISerializable](/api/javadoc/core/serialize/ISerializable.md). diff --git a/docs/api/core/setting/BooleanSetting.md b/docs/api/javadoc/core/setting/BooleanSetting.md similarity index 73% rename from docs/api/core/setting/BooleanSetting.md rename to docs/api/javadoc/core/setting/BooleanSetting.md index 0f318ad..ba456fa 100644 --- a/docs/api/core/setting/BooleanSetting.md +++ b/docs/api/javadoc/core/setting/BooleanSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/BooleanSetting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/BooleanSetting.java` **Author:** john@rusherhack.org 1/15/2023 @@ -10,7 +10,7 @@ ## Overview -`BooleanSetting` is a class that extends [Setting](/core/setting/Setting.md). +`BooleanSetting` is a class that extends [Setting](/api/javadoc/core/setting/Setting.md). ## Constructor @@ -70,7 +70,7 @@ public String getDisplayValue() public AbstractCommand createCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### setDescription() @@ -78,7 +78,7 @@ public AbstractCommand createCommand(AbstractCommand parent) public BooleanSetting setDescription(String description) ``` -**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) +**Returns:** [BooleanSetting](/api/javadoc/core/setting/BooleanSetting.md) ### setVisibility() @@ -86,7 +86,7 @@ public BooleanSetting setDescription(String description) public BooleanSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) +**Returns:** [BooleanSetting](/api/javadoc/core/setting/BooleanSetting.md) ### onChange() @@ -94,7 +94,7 @@ public BooleanSetting setVisibility(BooleanSupplier tester) public BooleanSetting onChange(Runnable run) ``` -**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) +**Returns:** [BooleanSetting](/api/javadoc/core/setting/BooleanSetting.md) ### onChange() @@ -102,7 +102,7 @@ public BooleanSetting onChange(Runnable run) public BooleanSetting onChange(Consumer consumer) ``` -**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) +**Returns:** [BooleanSetting](/api/javadoc/core/setting/BooleanSetting.md) ### setHidden() @@ -110,7 +110,7 @@ public BooleanSetting onChange(Consumer consumer) public BooleanSetting setHidden(boolean hidden) ``` -**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) +**Returns:** [BooleanSetting](/api/javadoc/core/setting/BooleanSetting.md) ### setShouldSerialize() @@ -118,5 +118,5 @@ public BooleanSetting setHidden(boolean hidden) public BooleanSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [BooleanSetting](/core/setting/BooleanSetting.md) +**Returns:** [BooleanSetting](/api/javadoc/core/setting/BooleanSetting.md) diff --git a/docs/api/core/setting/EnumSetting.md b/docs/api/javadoc/core/setting/EnumSetting.md similarity index 71% rename from docs/api/core/setting/EnumSetting.md rename to docs/api/javadoc/core/setting/EnumSetting.md index fe9a0de..c154614 100644 --- a/docs/api/core/setting/EnumSetting.md +++ b/docs/api/javadoc/core/setting/EnumSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/EnumSetting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/EnumSetting.java` **Author:** john@rusherhack.org 1/24/2023 @@ -10,7 +10,7 @@ ## Overview -`EnumSetting` is a class that extends [Setting](/core/setting/Setting.md). +`EnumSetting` is a class that extends [Setting](/api/javadoc/core/setting/Setting.md). ## Constructor @@ -66,7 +66,7 @@ public String getDisplayValue() public AbstractCommand createCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### deserializeValue() @@ -90,7 +90,7 @@ public JsonElement serializeValue() public EnumSetting setDescription(String description) ``` -**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> +**Returns:** [EnumSetting](/api/javadoc/core/setting/EnumSetting.md)<`T`> ### setVisibility() @@ -98,7 +98,7 @@ public EnumSetting setDescription(String description) public EnumSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> +**Returns:** [EnumSetting](/api/javadoc/core/setting/EnumSetting.md)<`T`> ### onChange() @@ -106,7 +106,7 @@ public EnumSetting setVisibility(BooleanSupplier tester) public EnumSetting onChange(Runnable run) ``` -**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> +**Returns:** [EnumSetting](/api/javadoc/core/setting/EnumSetting.md)<`T`> ### onChange() @@ -114,7 +114,7 @@ public EnumSetting onChange(Runnable run) public EnumSetting onChange(Consumer consumer) ``` -**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> +**Returns:** [EnumSetting](/api/javadoc/core/setting/EnumSetting.md)<`T`> ### setHidden() @@ -122,7 +122,7 @@ public EnumSetting onChange(Consumer consumer) public EnumSetting setHidden(boolean hidden) ``` -**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> +**Returns:** [EnumSetting](/api/javadoc/core/setting/EnumSetting.md)<`T`> ### setShouldSerialize() @@ -130,5 +130,5 @@ public EnumSetting setHidden(boolean hidden) public EnumSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [EnumSetting](/core/setting/EnumSetting.md)<`T`> +**Returns:** [EnumSetting](/api/javadoc/core/setting/EnumSetting.md)<`T`> diff --git a/docs/api/core/setting/ListHolder.md b/docs/api/javadoc/core/setting/ListHolder.md similarity index 58% rename from docs/api/core/setting/ListHolder.md rename to docs/api/javadoc/core/setting/ListHolder.md index 68da6b2..b0a8372 100644 --- a/docs/api/core/setting/ListHolder.md +++ b/docs/api/javadoc/core/setting/ListHolder.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/ListSetting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/ListSetting.java` ## Overview diff --git a/docs/api/core/setting/ListSetting.md b/docs/api/javadoc/core/setting/ListSetting.md similarity index 82% rename from docs/api/core/setting/ListSetting.md rename to docs/api/javadoc/core/setting/ListSetting.md index 2a9c568..b4bbfcf 100644 --- a/docs/api/core/setting/ListSetting.md +++ b/docs/api/javadoc/core/setting/ListSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/ListSetting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/ListSetting.java` A setting for a list of elements @@ -15,7 +15,7 @@ It extends Setting because listsettings can be toggled (like for Search ## Overview -`ListSetting` is a class that extends [Setting](/core/setting/Setting.md) and implements [Iterable](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Iterable.html). +`ListSetting` is a class that extends [Setting](/api/javadoc/core/setting/Setting.md) and implements [Iterable](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Iterable.html). ## Constructor @@ -86,7 +86,7 @@ public abstract String getElementDisplayName(T element) public ListHolder parseValue(String string, boolean set) ``` -**Returns:** [ListHolder](/core/setting/ListHolder.md)<`T`> +**Returns:** [ListHolder](/api/javadoc/core/setting/ListHolder.md)<`T`> ### getDisplayValue() @@ -214,7 +214,7 @@ public String[] getElementAttributes(T element) public AbstractCommand createCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createAddCommand() @@ -222,7 +222,7 @@ public AbstractCommand createCommand(AbstractCommand parent) protected AbstractCommand createAddCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createRemoveCommand() @@ -230,7 +230,7 @@ protected AbstractCommand createAddCommand(AbstractCommand parent) protected AbstractCommand createRemoveCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createListCommand() @@ -238,7 +238,7 @@ protected AbstractCommand createRemoveCommand(AbstractCommand parent) protected AbstractCommand createListCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### createClearCommand() @@ -246,7 +246,7 @@ protected AbstractCommand createListCommand(AbstractCommand parent) protected AbstractCommand createClearCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### deserializeValue() @@ -284,7 +284,7 @@ public Iterator iterator() public ListSetting setDescription(String description) ``` -**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> +**Returns:** [ListSetting](/api/javadoc/core/setting/ListSetting.md)<`T`> ### setVisibility() @@ -292,7 +292,7 @@ public ListSetting setDescription(String description) public ListSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> +**Returns:** [ListSetting](/api/javadoc/core/setting/ListSetting.md)<`T`> ### setHidden() @@ -300,7 +300,7 @@ public ListSetting setVisibility(BooleanSupplier tester) public ListSetting setHidden(boolean hidden) ``` -**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> +**Returns:** [ListSetting](/api/javadoc/core/setting/ListSetting.md)<`T`> ### onChange() @@ -308,7 +308,7 @@ public ListSetting setHidden(boolean hidden) public ListSetting onChange(Runnable run) ``` -**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> +**Returns:** [ListSetting](/api/javadoc/core/setting/ListSetting.md)<`T`> ### onChange() @@ -316,7 +316,7 @@ public ListSetting onChange(Runnable run) public ListSetting onChange(Consumer> consumer) ``` -**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> +**Returns:** [ListSetting](/api/javadoc/core/setting/ListSetting.md)<`T`> ### setShouldSerialize() @@ -324,5 +324,5 @@ public ListSetting onChange(Consumer> consumer) public ListSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [ListSetting](/core/setting/ListSetting.md)<`T`> +**Returns:** [ListSetting](/api/javadoc/core/setting/ListSetting.md)<`T`> diff --git a/docs/api/core/setting/NullSetting.md b/docs/api/javadoc/core/setting/NullSetting.md similarity index 71% rename from docs/api/core/setting/NullSetting.md rename to docs/api/javadoc/core/setting/NullSetting.md index d8ab2d0..6a8f5db 100644 --- a/docs/api/core/setting/NullSetting.md +++ b/docs/api/javadoc/core/setting/NullSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/NullSetting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/NullSetting.java` Setting to be used for placeholders * **Author:** john@rusherhack.org 1/24/2023 @@ -11,7 +11,7 @@ Setting to be used for placeholders ## Overview -`NullSetting` is a class that extends [Setting](/core/setting/Setting.md). +`NullSetting` is a class that extends [Setting](/api/javadoc/core/setting/Setting.md). ## Constructor @@ -69,7 +69,7 @@ public JsonElement serializeValue() public AbstractCommand createCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### setDescription() @@ -77,7 +77,7 @@ public AbstractCommand createCommand(AbstractCommand parent) public NullSetting setDescription(String description) ``` -**Returns:** [NullSetting](/core/setting/NullSetting.md) +**Returns:** [NullSetting](/api/javadoc/core/setting/NullSetting.md) ### setVisibility() @@ -85,7 +85,7 @@ public NullSetting setDescription(String description) public NullSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [NullSetting](/core/setting/NullSetting.md) +**Returns:** [NullSetting](/api/javadoc/core/setting/NullSetting.md) ### onChange() @@ -93,7 +93,7 @@ public NullSetting setVisibility(BooleanSupplier tester) public NullSetting onChange(Runnable run) ``` -**Returns:** [NullSetting](/core/setting/NullSetting.md) +**Returns:** [NullSetting](/api/javadoc/core/setting/NullSetting.md) ### onChange() @@ -101,7 +101,7 @@ public NullSetting onChange(Runnable run) public NullSetting onChange(Consumer consumer) ``` -**Returns:** [NullSetting](/core/setting/NullSetting.md) +**Returns:** [NullSetting](/api/javadoc/core/setting/NullSetting.md) ### setHidden() @@ -109,7 +109,7 @@ public NullSetting onChange(Consumer consumer) public NullSetting setHidden(boolean hidden) ``` -**Returns:** [NullSetting](/core/setting/NullSetting.md) +**Returns:** [NullSetting](/api/javadoc/core/setting/NullSetting.md) ### setShouldSerialize() @@ -117,5 +117,5 @@ public NullSetting setHidden(boolean hidden) public NullSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [NullSetting](/core/setting/NullSetting.md) +**Returns:** [NullSetting](/api/javadoc/core/setting/NullSetting.md) diff --git a/docs/api/core/setting/NumberSetting.md b/docs/api/javadoc/core/setting/NumberSetting.md similarity index 75% rename from docs/api/core/setting/NumberSetting.md rename to docs/api/javadoc/core/setting/NumberSetting.md index 39940dd..5bae65a 100644 --- a/docs/api/core/setting/NumberSetting.md +++ b/docs/api/javadoc/core/setting/NumberSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/NumberSetting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/NumberSetting.java` **Author:** john@rusherhack.org 1/15/2023 @@ -10,7 +10,7 @@ ## Overview -`NumberSetting` is a class that extends [Setting](/core/setting/Setting.md). +`NumberSetting` is a class that extends [Setting](/api/javadoc/core/setting/Setting.md). ## Constructor @@ -109,7 +109,7 @@ public T getMaximum() public NumberSetting clampMin() ``` -**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> +**Returns:** [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<`T`> ### clampMax() @@ -117,7 +117,7 @@ public NumberSetting clampMin() public NumberSetting clampMax() ``` -**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> +**Returns:** [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<`T`> ### incremental() @@ -125,7 +125,7 @@ public NumberSetting clampMax() public NumberSetting incremental(double incrementStep) ``` -**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> +**Returns:** [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<`T`> ### convertValue() @@ -141,7 +141,7 @@ private T convertValue(double value) public NumberSetting setDescription(String description) ``` -**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> +**Returns:** [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<`T`> ### setVisibility() @@ -149,7 +149,7 @@ public NumberSetting setDescription(String description) public NumberSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> +**Returns:** [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<`T`> ### onChange() @@ -157,7 +157,7 @@ public NumberSetting setVisibility(BooleanSupplier tester) public NumberSetting onChange(Runnable run) ``` -**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> +**Returns:** [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<`T`> ### onChange() @@ -165,7 +165,7 @@ public NumberSetting onChange(Runnable run) public NumberSetting onChange(Consumer consumer) ``` -**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> +**Returns:** [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<`T`> ### setHidden() @@ -173,7 +173,7 @@ public NumberSetting onChange(Consumer consumer) public NumberSetting setHidden(boolean hidden) ``` -**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> +**Returns:** [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<`T`> ### setShouldSerialize() @@ -181,5 +181,5 @@ public NumberSetting setHidden(boolean hidden) public NumberSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [NumberSetting](/core/setting/NumberSetting.md)<`T`> +**Returns:** [NumberSetting](/api/javadoc/core/setting/NumberSetting.md)<`T`> diff --git a/docs/api/core/setting/OptionSetting.md b/docs/api/javadoc/core/setting/OptionSetting.md similarity index 62% rename from docs/api/core/setting/OptionSetting.md rename to docs/api/javadoc/core/setting/OptionSetting.md index 62999cf..be48ace 100644 --- a/docs/api/core/setting/OptionSetting.md +++ b/docs/api/javadoc/core/setting/OptionSetting.md @@ -2,16 +2,16 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/OptionSetting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/OptionSetting.java` -Like [EnumSetting](/core/setting/EnumSetting.md) but better +Like [EnumSetting](/api/javadoc/core/setting/EnumSetting.md) but better * **Author:** john@rusherhack.org 12/26/2025 ## Overview -`OptionSetting` is a class that extends [Setting](/core/setting/Setting.md). +`OptionSetting` is a class that extends [Setting](/api/javadoc/core/setting/Setting.md). ## Constructor @@ -38,7 +38,7 @@ public OptionSetting(String name, String description, T value, T options) public OptionSetting addOption(T option) ``` -**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> +**Returns:** [OptionSetting](/api/javadoc/core/setting/OptionSetting.md)<`T`> ### getOptions() @@ -60,7 +60,7 @@ public void sort(Comparator comparator) public OptionSetting setDescription(String description) ``` -**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> +**Returns:** [OptionSetting](/api/javadoc/core/setting/OptionSetting.md)<`T`> ### setVisibility() @@ -68,7 +68,7 @@ public OptionSetting setDescription(String description) public OptionSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> +**Returns:** [OptionSetting](/api/javadoc/core/setting/OptionSetting.md)<`T`> ### onChange() @@ -76,7 +76,7 @@ public OptionSetting setVisibility(BooleanSupplier tester) public OptionSetting onChange(Runnable run) ``` -**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> +**Returns:** [OptionSetting](/api/javadoc/core/setting/OptionSetting.md)<`T`> ### onChange() @@ -84,7 +84,7 @@ public OptionSetting onChange(Runnable run) public OptionSetting onChange(Consumer consumer) ``` -**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> +**Returns:** [OptionSetting](/api/javadoc/core/setting/OptionSetting.md)<`T`> ### setHidden() @@ -92,7 +92,7 @@ public OptionSetting onChange(Consumer consumer) public OptionSetting setHidden(boolean hidden) ``` -**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> +**Returns:** [OptionSetting](/api/javadoc/core/setting/OptionSetting.md)<`T`> ### setShouldSerialize() @@ -100,5 +100,5 @@ public OptionSetting setHidden(boolean hidden) public OptionSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [OptionSetting](/core/setting/OptionSetting.md)<`T`> +**Returns:** [OptionSetting](/api/javadoc/core/setting/OptionSetting.md)<`T`> diff --git a/docs/api/core/setting/Setting.md b/docs/api/javadoc/core/setting/Setting.md similarity index 82% rename from docs/api/core/setting/Setting.md rename to docs/api/javadoc/core/setting/Setting.md index 034f415..eaf440c 100644 --- a/docs/api/core/setting/Setting.md +++ b/docs/api/javadoc/core/setting/Setting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/Setting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/Setting.java` **Author:** john@rusherhack.org 1/15/2023 @@ -10,7 +10,7 @@ ## Overview -`Setting` is a class and implements [IFeature](/core/feature/IFeature.md), [IHideable](/core/interfaces/IHideable.md), [JsonSerializable](/core/serialize/JsonSerializable.md). +`Setting` is a class and implements [IFeature](/api/javadoc/core/feature/IFeature.md), [IHideable](/api/javadoc/core/interfaces/IHideable.md), [JsonSerializable](/api/javadoc/core/serialize/JsonSerializable.md). ## Constructor @@ -32,9 +32,9 @@ public Setting(String name, String description, T value) | value | `T` | protected | | defaultValue | `T` | protected | | hidden | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | -| subSettings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> | protected final | -| parent | [Setting](/core/setting/Setting.md)<`?`> | protected | -| attachedFeature | [IFeature](/core/feature/IFeature.md) | protected | +| subSettings | [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> | protected final | +| parent | [Setting](/api/javadoc/core/setting/Setting.md)<`?`> | protected | +| attachedFeature | [IFeature](/api/javadoc/core/feature/IFeature.md) | protected | | consumer | [Consumer](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)<`T`> | protected | | visibilityTest | `BooleanSupplier` | protected | | shouldSerialize | [boolean](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Boolean.html) | protected | @@ -192,7 +192,7 @@ public String getDescription() public Setting setDescription(String description) ``` -**Returns:** [Setting](/core/setting/Setting.md)<`T`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`T`> ### getReferenceKey() @@ -208,7 +208,7 @@ public String getReferenceKey() public Setting setVisibility(BooleanSupplier tester) ``` -**Returns:** [Setting](/core/setting/Setting.md)<`T`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`T`> ### setHidden() @@ -216,7 +216,7 @@ public Setting setVisibility(BooleanSupplier tester) public Setting setHidden(boolean hidden) ``` -**Returns:** [Setting](/core/setting/Setting.md)<`T`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`T`> ### isHiddenByDefault() @@ -265,7 +265,7 @@ public void addSubSettings(Setting settings) public List> getSubSettings() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> ### getAllSubSettings() @@ -273,7 +273,7 @@ public List> getSubSettings() public List> getAllSubSettings() ``` -**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/core/setting/Setting.md)<`?`>> +**Returns:** [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html)<[Setting](/api/javadoc/core/setting/Setting.md)<`?`>> ### getSubSetting() @@ -281,7 +281,7 @@ public List> getAllSubSettings() public Setting getSubSetting(String name) ``` -**Returns:** [Setting](/core/setting/Setting.md)<`?`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`?`> ### setChangeAction() @@ -289,7 +289,7 @@ public Setting getSubSetting(String name) public Setting setChangeAction(Runnable run) ``` -**Returns:** [Setting](/core/setting/Setting.md)<`T`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`T`> ### onChange() @@ -297,7 +297,7 @@ public Setting setChangeAction(Runnable run) public Setting onChange(Runnable run) ``` -**Returns:** [Setting](/core/setting/Setting.md)<`T`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`T`> ### onChange() @@ -305,7 +305,7 @@ public Setting onChange(Runnable run) public Setting onChange(Consumer consumer) ``` -**Returns:** [Setting](/core/setting/Setting.md)<`T`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`T`> ### getConsumer() @@ -321,7 +321,7 @@ public Consumer getConsumer() public Setting setShouldHaveCommand(boolean shouldHaveCommand) ``` -**Returns:** [Setting](/core/setting/Setting.md)<`T`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`T`> ### shouldHaveCommand() @@ -337,7 +337,7 @@ public boolean shouldHaveCommand() public Setting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [Setting](/core/setting/Setting.md)<`T`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`T`> ### shouldSerialize() @@ -385,7 +385,7 @@ private boolean deserializeSubSettings(JsonElement subSettings) public AbstractCommand createCommand(AbstractCommand parent) ``` -**Returns:** [AbstractCommand](/core/command/AbstractCommand.md) +**Returns:** [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md) ### setAttachedFeature() @@ -407,5 +407,5 @@ public void setParent(Setting parent) public Setting getParent() ``` -**Returns:** [Setting](/core/setting/Setting.md)<`?`> +**Returns:** [Setting](/api/javadoc/core/setting/Setting.md)<`?`> diff --git a/docs/api/core/setting/SettingCommand.md b/docs/api/javadoc/core/setting/SettingCommand.md similarity index 74% rename from docs/api/core/setting/SettingCommand.md rename to docs/api/javadoc/core/setting/SettingCommand.md index 63c3428..f2b5264 100644 --- a/docs/api/core/setting/SettingCommand.md +++ b/docs/api/javadoc/core/setting/SettingCommand.md @@ -2,11 +2,11 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/Setting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/Setting.java` ## Overview -`SettingCommand` is a class that extends [AbstractCommand](/core/command/AbstractCommand.md). +`SettingCommand` is a class that extends [AbstractCommand](/api/javadoc/core/command/AbstractCommand.md). ## Constructor diff --git a/docs/api/core/setting/StringSetting.md b/docs/api/javadoc/core/setting/StringSetting.md similarity index 80% rename from docs/api/core/setting/StringSetting.md rename to docs/api/javadoc/core/setting/StringSetting.md index e45de9c..5c37227 100644 --- a/docs/api/core/setting/StringSetting.md +++ b/docs/api/javadoc/core/setting/StringSetting.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/StringSetting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/StringSetting.java` **Author:** john@rusherhack.org 1/24/2023 @@ -10,7 +10,7 @@ ## Overview -`StringSetting` is a class that extends [Setting](/core/setting/Setting.md). +`StringSetting` is a class that extends [Setting](/api/javadoc/core/setting/Setting.md). ## Constructor @@ -102,7 +102,7 @@ public boolean isNameVisible() public StringSetting setNameVisible(boolean isNameVisible) ``` -**Returns:** [StringSetting](/core/setting/StringSetting.md) +**Returns:** [StringSetting](/api/javadoc/core/setting/StringSetting.md) ### setDescription() @@ -110,7 +110,7 @@ public StringSetting setNameVisible(boolean isNameVisible) public StringSetting setDescription(String description) ``` -**Returns:** [StringSetting](/core/setting/StringSetting.md) +**Returns:** [StringSetting](/api/javadoc/core/setting/StringSetting.md) ### setVisibility() @@ -118,7 +118,7 @@ public StringSetting setDescription(String description) public StringSetting setVisibility(BooleanSupplier tester) ``` -**Returns:** [StringSetting](/core/setting/StringSetting.md) +**Returns:** [StringSetting](/api/javadoc/core/setting/StringSetting.md) ### onChange() @@ -126,7 +126,7 @@ public StringSetting setVisibility(BooleanSupplier tester) public StringSetting onChange(Runnable run) ``` -**Returns:** [StringSetting](/core/setting/StringSetting.md) +**Returns:** [StringSetting](/api/javadoc/core/setting/StringSetting.md) ### onChange() @@ -134,7 +134,7 @@ public StringSetting onChange(Runnable run) public StringSetting onChange(Consumer consumer) ``` -**Returns:** [StringSetting](/core/setting/StringSetting.md) +**Returns:** [StringSetting](/api/javadoc/core/setting/StringSetting.md) ### setHidden() @@ -142,7 +142,7 @@ public StringSetting onChange(Consumer consumer) public StringSetting setHidden(boolean hidden) ``` -**Returns:** [StringSetting](/core/setting/StringSetting.md) +**Returns:** [StringSetting](/api/javadoc/core/setting/StringSetting.md) ### setShouldSerialize() @@ -150,5 +150,5 @@ public StringSetting setHidden(boolean hidden) public StringSetting setShouldSerialize(boolean shouldSerialize) ``` -**Returns:** [StringSetting](/core/setting/StringSetting.md) +**Returns:** [StringSetting](/api/javadoc/core/setting/StringSetting.md) diff --git a/docs/api/core/setting/ValueHolder.md b/docs/api/javadoc/core/setting/ValueHolder.md similarity index 60% rename from docs/api/core/setting/ValueHolder.md rename to docs/api/javadoc/core/setting/ValueHolder.md index 9509019..a425838 100644 --- a/docs/api/core/setting/ValueHolder.md +++ b/docs/api/javadoc/core/setting/ValueHolder.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.setting` -**Source:** `org/rusherhack/core/setting/Setting.java` +**Source:** `org/rusherhack/api/javadoc/core/setting/Setting.java` ## Overview diff --git a/docs/api/core/utils/ColorUtils.md b/docs/api/javadoc/core/utils/ColorUtils.md similarity index 98% rename from docs/api/core/utils/ColorUtils.md rename to docs/api/javadoc/core/utils/ColorUtils.md index df4b793..420cf49 100644 --- a/docs/api/core/utils/ColorUtils.md +++ b/docs/api/javadoc/core/utils/ColorUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.utils` -**Source:** `org/rusherhack/core/utils/ColorUtils.java` +**Source:** `org/rusherhack/api/javadoc/core/utils/ColorUtils.java` Helper class containing color related functions * **Author:** John200410 diff --git a/docs/api/core/utils/IOUtils.md b/docs/api/javadoc/core/utils/IOUtils.md similarity index 94% rename from docs/api/core/utils/IOUtils.md rename to docs/api/javadoc/core/utils/IOUtils.md index ac2b0d3..c0bb732 100644 --- a/docs/api/core/utils/IOUtils.md +++ b/docs/api/javadoc/core/utils/IOUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.utils` -**Source:** `org/rusherhack/core/utils/IOUtils.java` +**Source:** `org/rusherhack/api/javadoc/core/utils/IOUtils.java` Helper class containing IO related functions * **Author:** John200410 diff --git a/docs/api/core/utils/MathUtils.md b/docs/api/javadoc/core/utils/MathUtils.md similarity index 97% rename from docs/api/core/utils/MathUtils.md rename to docs/api/javadoc/core/utils/MathUtils.md index cff0385..606de62 100644 --- a/docs/api/core/utils/MathUtils.md +++ b/docs/api/javadoc/core/utils/MathUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.utils` -**Source:** `org/rusherhack/core/utils/MathUtils.java` +**Source:** `org/rusherhack/api/javadoc/core/utils/MathUtils.java` Helper class containing math related functions * **Author:** John200410 2/2/2023 diff --git a/docs/api/core/utils/Pair.md b/docs/api/javadoc/core/utils/Pair.md similarity index 89% rename from docs/api/core/utils/Pair.md rename to docs/api/javadoc/core/utils/Pair.md index ecb7da2..ba7f5cf 100644 --- a/docs/api/core/utils/Pair.md +++ b/docs/api/javadoc/core/utils/Pair.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.utils` -**Source:** `org/rusherhack/core/utils/Pair.java` +**Source:** `org/rusherhack/api/javadoc/core/utils/Pair.java` **Author:** John200410 1/15/2024 diff --git a/docs/api/core/utils/StringUtils.md b/docs/api/javadoc/core/utils/StringUtils.md similarity index 93% rename from docs/api/core/utils/StringUtils.md rename to docs/api/javadoc/core/utils/StringUtils.md index 4373f10..160a9c3 100644 --- a/docs/api/core/utils/StringUtils.md +++ b/docs/api/javadoc/core/utils/StringUtils.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.utils` -**Source:** `org/rusherhack/core/utils/StringUtils.java` +**Source:** `org/rusherhack/api/javadoc/core/utils/StringUtils.java` Helper class containing String related functions * **Author:** John200410 2/10/2020 for rusherhack diff --git a/docs/api/core/utils/Timer.md b/docs/api/javadoc/core/utils/Timer.md similarity index 96% rename from docs/api/core/utils/Timer.md rename to docs/api/javadoc/core/utils/Timer.md index 9999a3d..c7427d5 100644 --- a/docs/api/core/utils/Timer.md +++ b/docs/api/javadoc/core/utils/Timer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.utils` -**Source:** `org/rusherhack/core/utils/Timer.java` +**Source:** `org/rusherhack/api/javadoc/core/utils/Timer.java` A simple timer * **Author:** John200410 diff --git a/docs/api/core/utils/TriConsumer.md b/docs/api/javadoc/core/utils/TriConsumer.md similarity index 85% rename from docs/api/core/utils/TriConsumer.md rename to docs/api/javadoc/core/utils/TriConsumer.md index 84781b1..bb5d1be 100644 --- a/docs/api/core/utils/TriConsumer.md +++ b/docs/api/javadoc/core/utils/TriConsumer.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.utils` -**Source:** `org/rusherhack/core/utils/TriConsumer.java` +**Source:** `org/rusherhack/api/javadoc/core/utils/TriConsumer.java` **Author:** John200410 12/11/2023 diff --git a/docs/api/core/utils/Version.md b/docs/api/javadoc/core/utils/Version.md similarity index 94% rename from docs/api/core/utils/Version.md rename to docs/api/javadoc/core/utils/Version.md index 088b13a..063ab31 100644 --- a/docs/api/core/utils/Version.md +++ b/docs/api/javadoc/core/utils/Version.md @@ -2,7 +2,7 @@ **Package:** `org.rusherhack.core.utils` -**Source:** `org/rusherhack/core/utils/Version.java` +**Source:** `org/rusherhack/api/javadoc/core/utils/Version.java` **Author:** John200410 6/2/2024 @@ -91,7 +91,7 @@ public int hashCode() public static Version fromString(String version) ``` -**Returns:** [Version](/core/utils/Version.md) +**Returns:** [Version](/api/javadoc/core/utils/Version.md) ### compareTo() diff --git a/docusaurus.config.js b/docusaurus.config.js index 35ae725..5dbf71c 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -8,7 +8,7 @@ const config = { baseUrl: '/rusherhack-docs/', organizationName: 'FelekDevYT', projectName: 'rusherhack-docs', - onBrokenLinks: 'throw', + onBrokenLinks: 'warn', onBrokenMarkdownLinks: 'warn', markdown: { format: 'detect', @@ -31,6 +31,18 @@ const config = { }), ], ], + themes: [ + [ + require.resolve("@easyops-cn/docusaurus-search-local"), + { + hashed: true, + language: ["en"], + highlightSearchTermsOnTargetPage: true, + explicitSearchResultPath: true, + indexDocs: true, + }, + ], + ], themeConfig: ({ colorMode: { diff --git a/package-lock.json b/package-lock.json index c1a06f3..5f35686 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@docusaurus/core": "3.10.1", "@docusaurus/faster": "3.10.1", "@docusaurus/preset-classic": "3.10.1", + "@easyops-cn/docusaurus-search-local": "^0.55.2", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", @@ -4124,6 +4125,125 @@ "node": ">=20.0" } }, + "node_modules/@easyops-cn/autocomplete.js": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz", + "integrity": "sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "immediate": "^3.2.3" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local": { + "version": "0.55.2", + "resolved": "https://registry.npmjs.org/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.55.2.tgz", + "integrity": "sha512-dI/riu+MbDxkAjAHAdc0uahjXRaWKvbIPe9IAmA6AGcUfnVb9xd8s2I/6wEPTOXsAd6eFqn4Yis3WBWh3KUd3g==", + "license": "MIT", + "dependencies": { + "@docusaurus/plugin-content-docs": "^2 || ^3", + "@docusaurus/theme-translations": "^2 || ^3", + "@docusaurus/utils": "^2 || ^3", + "@docusaurus/utils-common": "^2 || ^3", + "@docusaurus/utils-validation": "^2 || ^3", + "@easyops-cn/autocomplete.js": "^0.38.1", + "@node-rs/jieba": "^1.6.0", + "cheerio": "^1.0.0", + "clsx": "^2.1.1", + "comlink": "^4.4.2", + "debug": "^4.2.0", + "fs-extra": "^10.0.0", + "klaw-sync": "^6.0.0", + "lunr": "^2.3.9", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@docusaurus/theme-common": "^2 || ^3", + "open-ask-ai": "^0.7.3", + "react": "^16.14.0 || ^17 || ^18 || ^19", + "react-dom": "^16.14.0 || 17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "open-ask-ai": { + "optional": true + } + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/cheerio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.1.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.19.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, "node_modules/@emnapi/core": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", @@ -4800,6 +4920,271 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@node-rs/jieba": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba/-/jieba-1.10.4.tgz", + "integrity": "sha512-GvDgi8MnBiyWd6tksojej8anIx18244NmIOc1ovEw8WKNUejcccLfyu8vj66LWSuoZuKILVtNsOy4jvg3aoxIw==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/jieba-android-arm-eabi": "1.10.4", + "@node-rs/jieba-android-arm64": "1.10.4", + "@node-rs/jieba-darwin-arm64": "1.10.4", + "@node-rs/jieba-darwin-x64": "1.10.4", + "@node-rs/jieba-freebsd-x64": "1.10.4", + "@node-rs/jieba-linux-arm-gnueabihf": "1.10.4", + "@node-rs/jieba-linux-arm64-gnu": "1.10.4", + "@node-rs/jieba-linux-arm64-musl": "1.10.4", + "@node-rs/jieba-linux-x64-gnu": "1.10.4", + "@node-rs/jieba-linux-x64-musl": "1.10.4", + "@node-rs/jieba-wasm32-wasi": "1.10.4", + "@node-rs/jieba-win32-arm64-msvc": "1.10.4", + "@node-rs/jieba-win32-ia32-msvc": "1.10.4", + "@node-rs/jieba-win32-x64-msvc": "1.10.4" + } + }, + "node_modules/@node-rs/jieba-android-arm-eabi": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.10.4.tgz", + "integrity": "sha512-MhyvW5N3Fwcp385d0rxbCWH42kqDBatQTyP8XbnYbju2+0BO/eTeCCLYj7Agws4pwxn2LtdldXRSKavT7WdzNA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-android-arm64": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.10.4.tgz", + "integrity": "sha512-XyDwq5+rQ+Tk55A+FGi6PtJbzf974oqnpyCcCPzwU3QVXJCa2Rr4Lci+fx8oOpU4plT3GuD+chXMYLsXipMgJA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-arm64": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.10.4.tgz", + "integrity": "sha512-G++RYEJ2jo0rxF9626KUy90wp06TRUjAsvY/BrIzEOX/ingQYV/HjwQzNPRR1P1o32a6/U8RGo7zEBhfdybL6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-x64": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.10.4.tgz", + "integrity": "sha512-MmDNeOb2TXIZCPyWCi2upQnZpPjAxw5ZGEj6R8kNsPXVFALHIKMa6ZZ15LCOkSTsKXVC17j2t4h+hSuyYb6qfQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-freebsd-x64": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.10.4.tgz", + "integrity": "sha512-/x7aVQ8nqUWhpXU92RZqd333cq639i/olNpd9Z5hdlyyV5/B65LLy+Je2B2bfs62PVVm5QXRpeBcZqaHelp/bg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm-gnueabihf": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.10.4.tgz", + "integrity": "sha512-crd2M35oJBRLkoESs0O6QO3BBbhpv+tqXuKsqhIG94B1d02RVxtRIvSDwO33QurxqSdvN9IeSnVpHbDGkuXm3g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-gnu": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.10.4.tgz", + "integrity": "sha512-omIzNX1psUzPcsdnUhGU6oHeOaTCuCjUgOA/v/DGkvWC1jLcnfXe4vdYbtXMh4XOCuIgS1UCcvZEc8vQLXFbXQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-musl": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.10.4.tgz", + "integrity": "sha512-Y/tiJ1+HeS5nnmLbZOE+66LbsPOHZ/PUckAYVeLlQfpygLEpLYdlh0aPpS5uiaWMjAXYZYdFkpZHhxDmSLpwpw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-gnu": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.10.4.tgz", + "integrity": "sha512-WZO8ykRJpWGE9MHuZpy1lu3nJluPoeB+fIJJn5CWZ9YTVhNDWoCF4i/7nxz1ntulINYGQ8VVuCU9LD86Mek97g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-musl": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.10.4.tgz", + "integrity": "sha512-uBBD4S1rGKcgCyAk6VCKatEVQb6EDD5I40v/DxODi5CuZVCANi9m5oee/MQbAoaX7RydA2f0OSCE9/tcwXEwUg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-wasm32-wasi": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-wasm32-wasi/-/jieba-wasm32-wasi-1.10.4.tgz", + "integrity": "sha512-Y2umiKHjuIJy0uulNDz9SDYHdfq5Hmy7jY5nORO99B4pySKkcrMjpeVrmWXJLIsEKLJwcCXHxz8tjwU5/uhz0A==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@node-rs/jieba-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@node-rs/jieba-win32-arm64-msvc": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.10.4.tgz", + "integrity": "sha512-nwMtViFm4hjqhz1it/juQnxpXgqlGltCuWJ02bw70YUDMDlbyTy3grCJPpQQpueeETcALUnTxda8pZuVrLRcBA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-ia32-msvc": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.10.4.tgz", + "integrity": "sha512-DCAvLx7Z+W4z5oKS+7vUowAJr0uw9JBw8x1Y23Xs/xMA4Em+OOSiaF5/tCJqZUCJ8uC4QeImmgDFiBqGNwxlyA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-x64-msvc": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.10.4.tgz", + "integrity": "sha512-+sqemSfS1jjb+Tt7InNbNzrRh1Ua3vProVvC4BZRPg010/leCbGFFiQHpzcPRfpxAXZrzG5Y0YBTsPzN/I4yHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -7681,6 +8066,12 @@ "node": ">=10" } }, + "node_modules/comlink": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", + "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", + "license": "Apache-2.0" + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -8895,6 +9286,31 @@ "node": ">= 0.8" } }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.21.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", @@ -10585,6 +11001,12 @@ "node": ">=16.x" } }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -11171,6 +11593,15 @@ "node": ">=0.10.0" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -11599,6 +12030,24 @@ "yallist": "^3.0.2" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" + }, + "node_modules/lunr-languages": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.20.0.tgz", + "integrity": "sha512-3LVgE7ekWXt04NBci/hjm+NXJxXZeRXuyClL0kA0HONyBOjxhP3ZQkuWIM4Ok3pbeptUW/rj3XcJcJuJVPwPYA==", + "license": "MPL-1.1" + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "license": "MIT" + }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -14559,6 +15008,18 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/parse5/node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", @@ -18358,6 +18819,15 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/undici": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.27.2.tgz", + "integrity": "sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/undici-types": { "version": "7.19.2", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", @@ -19220,6 +19690,40 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 1f04ed7..b9dac10 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@docusaurus/core": "3.10.1", "@docusaurus/faster": "3.10.1", "@docusaurus/preset-classic": "3.10.1", + "@easyops-cn/docusaurus-search-local": "^0.55.2", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", From 90a8594a69a0625fd1e919dffb8ab4988079a58e Mon Sep 17 00:00:00 2001 From: FelekDevYT Date: Tue, 16 Jun 2026 12:41:20 +0300 Subject: [PATCH 5/6] added module docs --- .idea/.gitignore | 32 ------------------- .idea/modules.xml | 8 ----- .idea/rusherhack-documentation.iml | 12 ------- .idea/vcs.xml | 6 ---- .../api/guides/tutorial/your-first-module.mdx | 25 +++++++++++++++ 5 files changed, 25 insertions(+), 58 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/modules.xml delete mode 100644 .idea/rusherhack-documentation.iml delete mode 100644 .idea/vcs.xml create mode 100644 docs/api/guides/tutorial/your-first-module.mdx diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index d2d01a7..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,32 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml - -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -*.iml -/.idea \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 0df4282..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/rusherhack-documentation.iml b/.idea/rusherhack-documentation.iml deleted file mode 100644 index 24643cc..0000000 --- a/.idea/rusherhack-documentation.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/docs/api/guides/tutorial/your-first-module.mdx b/docs/api/guides/tutorial/your-first-module.mdx new file mode 100644 index 0000000..c2a4fbb --- /dev/null +++ b/docs/api/guides/tutorial/your-first-module.mdx @@ -0,0 +1,25 @@ +# Creating your own model for rusherhack + +:::tip +In the rusherhack api, the ToggleableModule class is allocated for creating modules. +::: + +Create a new class `ExampleModule` in your project. + +Next, paste the following code into it: +```java +package is for you.package.here; + +import org.rusherhack.client.api.feature.module.ToggleableModule; +import org.rusherhack.client.api.feature.module.Module category; + +public class MyFirstModule extends ToggleableModule { + public MyFirstModule() { + super("MyFirstModule", "My first module for RusherHack", ModuleCategory.CLIENT); + } +} +``` + +::: +The ModuleCategory class contains the standard categories in which your module will appear in ClickGUI. Available options are COMBAT, MISC, MOVEMENT, PLAYER, RENDER, WORLD, CLIENT, and EXTERNAL. +::: \ No newline at end of file From f63644aef7279bad0bd8562b6a6268a4259120f0 Mon Sep 17 00:00:00 2001 From: FelekDevYT Date: Tue, 16 Jun 2026 12:59:24 +0300 Subject: [PATCH 6/6] fixed config --- docusaurus.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 5dbf71c..fb9f611 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -5,9 +5,9 @@ const config = { tagline: 'Documentation for all things related to RusherHack.', favicon: 'img/logo.png', url: 'https://felekdevyt.github.io', - baseUrl: '/rusherhack-docs/', + baseUrl: '/rusherhack-documentation/', organizationName: 'FelekDevYT', - projectName: 'rusherhack-docs', + projectName: 'rusherhack-documentation', onBrokenLinks: 'warn', onBrokenMarkdownLinks: 'warn', markdown: {