@openmouse/protocol 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +167 -0
- package/README.md +89 -0
- package/dist/asus/index.d.ts +52 -0
- package/dist/asus/index.d.ts.map +1 -0
- package/dist/asus/index.js +248 -0
- package/dist/asus/index.js.map +1 -0
- package/dist/atk/index.d.ts +200 -0
- package/dist/atk/index.d.ts.map +1 -0
- package/dist/atk/index.js +480 -0
- package/dist/atk/index.js.map +1 -0
- package/dist/bitmouse/index.d.ts +284 -0
- package/dist/bitmouse/index.d.ts.map +1 -0
- package/dist/bitmouse/index.js +396 -0
- package/dist/bitmouse/index.js.map +1 -0
- package/dist/compx/codec.d.ts +31 -0
- package/dist/compx/codec.d.ts.map +1 -0
- package/dist/compx/codec.js +50 -0
- package/dist/compx/codec.js.map +1 -0
- package/dist/corsair/index.d.ts +147 -0
- package/dist/corsair/index.d.ts.map +1 -0
- package/dist/corsair/index.js +223 -0
- package/dist/corsair/index.js.map +1 -0
- package/dist/dareu/index.d.ts +136 -0
- package/dist/dareu/index.d.ts.map +1 -0
- package/dist/dareu/index.js +344 -0
- package/dist/dareu/index.js.map +1 -0
- package/dist/drivers/asus/hid.d.ts +29 -0
- package/dist/drivers/asus/hid.d.ts.map +1 -0
- package/dist/drivers/asus/hid.js +419 -0
- package/dist/drivers/asus/hid.js.map +1 -0
- package/dist/drivers/atk/bitmouse-hid.d.ts +80 -0
- package/dist/drivers/atk/bitmouse-hid.d.ts.map +1 -0
- package/dist/drivers/atk/bitmouse-hid.js +501 -0
- package/dist/drivers/atk/bitmouse-hid.js.map +1 -0
- package/dist/drivers/atk/hid.d.ts +163 -0
- package/dist/drivers/atk/hid.d.ts.map +1 -0
- package/dist/drivers/atk/hid.js +1368 -0
- package/dist/drivers/atk/hid.js.map +1 -0
- package/dist/drivers/atk/products.d.ts +13 -0
- package/dist/drivers/atk/products.d.ts.map +1 -0
- package/dist/drivers/atk/products.js +13 -0
- package/dist/drivers/atk/products.js.map +1 -0
- package/dist/drivers/attackshark/dpi.d.ts +41 -0
- package/dist/drivers/attackshark/dpi.d.ts.map +1 -0
- package/dist/drivers/attackshark/dpi.js +215 -0
- package/dist/drivers/attackshark/dpi.js.map +1 -0
- package/dist/drivers/attackshark/hid.d.ts +124 -0
- package/dist/drivers/attackshark/hid.d.ts.map +1 -0
- package/dist/drivers/attackshark/hid.js +728 -0
- package/dist/drivers/attackshark/hid.js.map +1 -0
- package/dist/drivers/corsair/hid.d.ts +70 -0
- package/dist/drivers/corsair/hid.d.ts.map +1 -0
- package/dist/drivers/corsair/hid.js +414 -0
- package/dist/drivers/corsair/hid.js.map +1 -0
- package/dist/drivers/dareu/hid.d.ts +59 -0
- package/dist/drivers/dareu/hid.d.ts.map +1 -0
- package/dist/drivers/dareu/hid.js +478 -0
- package/dist/drivers/dareu/hid.js.map +1 -0
- package/dist/drivers/endgame/egg-op1-hid.d.ts +107 -0
- package/dist/drivers/endgame/egg-op1-hid.d.ts.map +1 -0
- package/dist/drivers/endgame/egg-op1-hid.js +605 -0
- package/dist/drivers/endgame/egg-op1-hid.js.map +1 -0
- package/dist/drivers/endgame/egg-we-control.d.ts +42 -0
- package/dist/drivers/endgame/egg-we-control.d.ts.map +1 -0
- package/dist/drivers/endgame/egg-we-control.js +87 -0
- package/dist/drivers/endgame/egg-we-control.js.map +1 -0
- package/dist/drivers/endgame/egg-we-hid.d.ts +58 -0
- package/dist/drivers/endgame/egg-we-hid.d.ts.map +1 -0
- package/dist/drivers/endgame/egg-we-hid.js +514 -0
- package/dist/drivers/endgame/egg-we-hid.js.map +1 -0
- package/dist/drivers/fantech/hid.d.ts +106 -0
- package/dist/drivers/fantech/hid.d.ts.map +1 -0
- package/dist/drivers/fantech/hid.js +295 -0
- package/dist/drivers/fantech/hid.js.map +1 -0
- package/dist/drivers/finalmouse/hid.d.ts +31 -0
- package/dist/drivers/finalmouse/hid.d.ts.map +1 -0
- package/dist/drivers/finalmouse/hid.js +181 -0
- package/dist/drivers/finalmouse/hid.js.map +1 -0
- package/dist/drivers/gearhub/hid.d.ts +191 -0
- package/dist/drivers/gearhub/hid.d.ts.map +1 -0
- package/dist/drivers/gearhub/hid.js +542 -0
- package/dist/drivers/gearhub/hid.js.map +1 -0
- package/dist/drivers/glorious/classic-hid.d.ts +62 -0
- package/dist/drivers/glorious/classic-hid.d.ts.map +1 -0
- package/dist/drivers/glorious/classic-hid.js +326 -0
- package/dist/drivers/glorious/classic-hid.js.map +1 -0
- package/dist/drivers/glorious/hid.d.ts +39 -0
- package/dist/drivers/glorious/hid.d.ts.map +1 -0
- package/dist/drivers/glorious/hid.js +203 -0
- package/dist/drivers/glorious/hid.js.map +1 -0
- package/dist/drivers/gwolves/hid.d.ts +27 -0
- package/dist/drivers/gwolves/hid.d.ts.map +1 -0
- package/dist/drivers/gwolves/hid.js +225 -0
- package/dist/drivers/gwolves/hid.js.map +1 -0
- package/dist/drivers/gwolves/products.d.ts +17 -0
- package/dist/drivers/gwolves/products.d.ts.map +1 -0
- package/dist/drivers/gwolves/products.js +58 -0
- package/dist/drivers/gwolves/products.js.map +1 -0
- package/dist/drivers/hyperx/hid.d.ts +59 -0
- package/dist/drivers/hyperx/hid.d.ts.map +1 -0
- package/dist/drivers/hyperx/hid.js +229 -0
- package/dist/drivers/hyperx/hid.js.map +1 -0
- package/dist/drivers/incott/hid.d.ts +513 -0
- package/dist/drivers/incott/hid.d.ts.map +1 -0
- package/dist/drivers/incott/hid.js +1173 -0
- package/dist/drivers/incott/hid.js.map +1 -0
- package/dist/drivers/index.d.ts +5 -0
- package/dist/drivers/index.d.ts.map +1 -0
- package/dist/drivers/index.js +5 -0
- package/dist/drivers/index.js.map +1 -0
- package/dist/drivers/keychron/m6-hid.d.ts +81 -0
- package/dist/drivers/keychron/m6-hid.d.ts.map +1 -0
- package/dist/drivers/keychron/m6-hid.js +486 -0
- package/dist/drivers/keychron/m6-hid.js.map +1 -0
- package/dist/drivers/keychron/nape-hid.d.ts +60 -0
- package/dist/drivers/keychron/nape-hid.d.ts.map +1 -0
- package/dist/drivers/keychron/nape-hid.js +432 -0
- package/dist/drivers/keychron/nape-hid.js.map +1 -0
- package/dist/drivers/ksnake/hid.d.ts +74 -0
- package/dist/drivers/ksnake/hid.d.ts.map +1 -0
- package/dist/drivers/ksnake/hid.js +368 -0
- package/dist/drivers/ksnake/hid.js.map +1 -0
- package/dist/drivers/lamzu/hid.d.ts +58 -0
- package/dist/drivers/lamzu/hid.d.ts.map +1 -0
- package/dist/drivers/lamzu/hid.js +414 -0
- package/dist/drivers/lamzu/hid.js.map +1 -0
- package/dist/drivers/lamzu-atlantis/hid.d.ts +148 -0
- package/dist/drivers/lamzu-atlantis/hid.d.ts.map +1 -0
- package/dist/drivers/lamzu-atlantis/hid.js +587 -0
- package/dist/drivers/lamzu-atlantis/hid.js.map +1 -0
- package/dist/drivers/logitech/bolt.d.ts +41 -0
- package/dist/drivers/logitech/bolt.d.ts.map +1 -0
- package/dist/drivers/logitech/bolt.js +105 -0
- package/dist/drivers/logitech/bolt.js.map +1 -0
- package/dist/drivers/logitech/hidpp.d.ts +525 -0
- package/dist/drivers/logitech/hidpp.d.ts.map +1 -0
- package/dist/drivers/logitech/hidpp.js +2774 -0
- package/dist/drivers/logitech/hidpp.js.map +1 -0
- package/dist/drivers/logitech/mode-status.d.ts +53 -0
- package/dist/drivers/logitech/mode-status.d.ts.map +1 -0
- package/dist/drivers/logitech/mode-status.js +52 -0
- package/dist/drivers/logitech/mode-status.js.map +1 -0
- package/dist/drivers/logitech/onboard-profiles.d.ts +298 -0
- package/dist/drivers/logitech/onboard-profiles.d.ts.map +1 -0
- package/dist/drivers/logitech/onboard-profiles.js +965 -0
- package/dist/drivers/logitech/onboard-profiles.js.map +1 -0
- package/dist/drivers/logitech/rgb-effects.d.ts +20 -0
- package/dist/drivers/logitech/rgb-effects.d.ts.map +1 -0
- package/dist/drivers/logitech/rgb-effects.js +93 -0
- package/dist/drivers/logitech/rgb-effects.js.map +1 -0
- package/dist/drivers/mchose/a5-gen1-hid.d.ts +36 -0
- package/dist/drivers/mchose/a5-gen1-hid.d.ts.map +1 -0
- package/dist/drivers/mchose/a5-gen1-hid.js +219 -0
- package/dist/drivers/mchose/a5-gen1-hid.js.map +1 -0
- package/dist/drivers/mchose/dock-hid.d.ts +26 -0
- package/dist/drivers/mchose/dock-hid.d.ts.map +1 -0
- package/dist/drivers/mchose/dock-hid.js +176 -0
- package/dist/drivers/mchose/dock-hid.js.map +1 -0
- package/dist/drivers/mchose/hid.d.ts +118 -0
- package/dist/drivers/mchose/hid.d.ts.map +1 -0
- package/dist/drivers/mchose/hid.js +550 -0
- package/dist/drivers/mchose/hid.js.map +1 -0
- package/dist/drivers/mchose/v3-hid.d.ts +109 -0
- package/dist/drivers/mchose/v3-hid.d.ts.map +1 -0
- package/dist/drivers/mchose/v3-hid.js +572 -0
- package/dist/drivers/mchose/v3-hid.js.map +1 -0
- package/dist/drivers/microsoft/hid.d.ts +25 -0
- package/dist/drivers/microsoft/hid.d.ts.map +1 -0
- package/dist/drivers/microsoft/hid.js +247 -0
- package/dist/drivers/microsoft/hid.js.map +1 -0
- package/dist/drivers/moddo/hid.d.ts +31 -0
- package/dist/drivers/moddo/hid.d.ts.map +1 -0
- package/dist/drivers/moddo/hid.js +154 -0
- package/dist/drivers/moddo/hid.js.map +1 -0
- package/dist/drivers/mouse-types.d.ts +388 -0
- package/dist/drivers/mouse-types.d.ts.map +1 -0
- package/dist/drivers/mouse-types.js +2 -0
- package/dist/drivers/mouse-types.js.map +1 -0
- package/dist/drivers/ninjutso/hid.d.ts +62 -0
- package/dist/drivers/ninjutso/hid.d.ts.map +1 -0
- package/dist/drivers/ninjutso/hid.js +680 -0
- package/dist/drivers/ninjutso/hid.js.map +1 -0
- package/dist/drivers/orbital/hid.d.ts +24 -0
- package/dist/drivers/orbital/hid.d.ts.map +1 -0
- package/dist/drivers/orbital/hid.js +85 -0
- package/dist/drivers/orbital/hid.js.map +1 -0
- package/dist/drivers/orbital/host-protocol.d.ts +59 -0
- package/dist/drivers/orbital/host-protocol.d.ts.map +1 -0
- package/dist/drivers/orbital/host-protocol.js +884 -0
- package/dist/drivers/orbital/host-protocol.js.map +1 -0
- package/dist/drivers/pulsar/pulsar-hid.d.ts +63 -0
- package/dist/drivers/pulsar/pulsar-hid.d.ts.map +1 -0
- package/dist/drivers/pulsar/pulsar-hid.js +381 -0
- package/dist/drivers/pulsar/pulsar-hid.js.map +1 -0
- package/dist/drivers/pulsar/pulsar-pro-hid.d.ts +46 -0
- package/dist/drivers/pulsar/pulsar-pro-hid.d.ts.map +1 -0
- package/dist/drivers/pulsar/pulsar-pro-hid.js +343 -0
- package/dist/drivers/pulsar/pulsar-pro-hid.js.map +1 -0
- package/dist/drivers/pulsar/pulsar-xs1-hid.d.ts +40 -0
- package/dist/drivers/pulsar/pulsar-xs1-hid.d.ts.map +1 -0
- package/dist/drivers/pulsar/pulsar-xs1-hid.js +251 -0
- package/dist/drivers/pulsar/pulsar-xs1-hid.js.map +1 -0
- package/dist/drivers/rawm/hid.d.ts +29 -0
- package/dist/drivers/rawm/hid.d.ts.map +1 -0
- package/dist/drivers/rawm/hid.js +210 -0
- package/dist/drivers/rawm/hid.js.map +1 -0
- package/dist/drivers/razer/cobra-hid.d.ts +63 -0
- package/dist/drivers/razer/cobra-hid.d.ts.map +1 -0
- package/dist/drivers/razer/cobra-hid.js +282 -0
- package/dist/drivers/razer/cobra-hid.js.map +1 -0
- package/dist/drivers/razer/hid-open.d.ts +13 -0
- package/dist/drivers/razer/hid-open.d.ts.map +1 -0
- package/dist/drivers/razer/hid-open.js +29 -0
- package/dist/drivers/razer/hid-open.js.map +1 -0
- package/dist/drivers/razer/hid.d.ts +231 -0
- package/dist/drivers/razer/hid.d.ts.map +1 -0
- package/dist/drivers/razer/hid.js +772 -0
- package/dist/drivers/razer/hid.js.map +1 -0
- package/dist/drivers/razer/viper-hid.d.ts +33 -0
- package/dist/drivers/razer/viper-hid.d.ts.map +1 -0
- package/dist/drivers/razer/viper-hid.js +177 -0
- package/dist/drivers/razer/viper-hid.js.map +1 -0
- package/dist/drivers/razer/viper-mini-hid.d.ts +58 -0
- package/dist/drivers/razer/viper-mini-hid.d.ts.map +1 -0
- package/dist/drivers/razer/viper-mini-hid.js +273 -0
- package/dist/drivers/razer/viper-mini-hid.js.map +1 -0
- package/dist/drivers/razer/viper-v4-pro-hid.d.ts +26 -0
- package/dist/drivers/razer/viper-v4-pro-hid.d.ts.map +1 -0
- package/dist/drivers/razer/viper-v4-pro-hid.js +154 -0
- package/dist/drivers/razer/viper-v4-pro-hid.js.map +1 -0
- package/dist/drivers/registry.d.ts +70 -0
- package/dist/drivers/registry.d.ts.map +1 -0
- package/dist/drivers/registry.js +146 -0
- package/dist/drivers/registry.js.map +1 -0
- package/dist/drivers/steelseries/aerox3-hid.d.ts +53 -0
- package/dist/drivers/steelseries/aerox3-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/aerox3-hid.js +172 -0
- package/dist/drivers/steelseries/aerox3-hid.js.map +1 -0
- package/dist/drivers/steelseries/aerox5-hid.d.ts +54 -0
- package/dist/drivers/steelseries/aerox5-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/aerox5-hid.js +173 -0
- package/dist/drivers/steelseries/aerox5-hid.js.map +1 -0
- package/dist/drivers/steelseries/aerox5-wireless-hid.d.ts +69 -0
- package/dist/drivers/steelseries/aerox5-wireless-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/aerox5-wireless-hid.js +234 -0
- package/dist/drivers/steelseries/aerox5-wireless-hid.js.map +1 -0
- package/dist/drivers/steelseries/aerox9-wireless-hid.d.ts +70 -0
- package/dist/drivers/steelseries/aerox9-wireless-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/aerox9-wireless-hid.js +227 -0
- package/dist/drivers/steelseries/aerox9-wireless-hid.js.map +1 -0
- package/dist/drivers/steelseries/hid.d.ts +48 -0
- package/dist/drivers/steelseries/hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/hid.js +157 -0
- package/dist/drivers/steelseries/hid.js.map +1 -0
- package/dist/drivers/steelseries/prime-mini-wireless-hid.d.ts +62 -0
- package/dist/drivers/steelseries/prime-mini-wireless-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/prime-mini-wireless-hid.js +215 -0
- package/dist/drivers/steelseries/prime-mini-wireless-hid.js.map +1 -0
- package/dist/drivers/steelseries/prime-plus-hid.d.ts +51 -0
- package/dist/drivers/steelseries/prime-plus-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/prime-plus-hid.js +150 -0
- package/dist/drivers/steelseries/prime-plus-hid.js.map +1 -0
- package/dist/drivers/steelseries/rival3-wireless-hid.d.ts +61 -0
- package/dist/drivers/steelseries/rival3-wireless-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/rival3-wireless-hid.js +185 -0
- package/dist/drivers/steelseries/rival3-wireless-hid.js.map +1 -0
- package/dist/drivers/steelseries/rival310-hid.d.ts +59 -0
- package/dist/drivers/steelseries/rival310-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/rival310-hid.js +182 -0
- package/dist/drivers/steelseries/rival310-hid.js.map +1 -0
- package/dist/drivers/steelseries/rival650-hid.d.ts +68 -0
- package/dist/drivers/steelseries/rival650-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/rival650-hid.js +209 -0
- package/dist/drivers/steelseries/rival650-hid.js.map +1 -0
- package/dist/drivers/steelseries/sensei-ten-hid.d.ts +62 -0
- package/dist/drivers/steelseries/sensei-ten-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/sensei-ten-hid.js +186 -0
- package/dist/drivers/steelseries/sensei-ten-hid.js.map +1 -0
- package/dist/drivers/teevolution/hid.d.ts +82 -0
- package/dist/drivers/teevolution/hid.d.ts.map +1 -0
- package/dist/drivers/teevolution/hid.js +607 -0
- package/dist/drivers/teevolution/hid.js.map +1 -0
- package/dist/drivers/vendors.d.ts +254 -0
- package/dist/drivers/vendors.d.ts.map +1 -0
- package/dist/drivers/vendors.js +587 -0
- package/dist/drivers/vendors.js.map +1 -0
- package/dist/drivers/vgn/hid.d.ts +33 -0
- package/dist/drivers/vgn/hid.d.ts.map +1 -0
- package/dist/drivers/vgn/hid.js +213 -0
- package/dist/drivers/vgn/hid.js.map +1 -0
- package/dist/drivers/wallhack/keyboard-hid.d.ts +28 -0
- package/dist/drivers/wallhack/keyboard-hid.d.ts.map +1 -0
- package/dist/drivers/wallhack/keyboard-hid.js +80 -0
- package/dist/drivers/wallhack/keyboard-hid.js.map +1 -0
- package/dist/drivers/wallhack/mouse-hid.d.ts +45 -0
- package/dist/drivers/wallhack/mouse-hid.d.ts.map +1 -0
- package/dist/drivers/wallhack/mouse-hid.js +288 -0
- package/dist/drivers/wallhack/mouse-hid.js.map +1 -0
- package/dist/drivers/webhid.d.ts +59 -0
- package/dist/drivers/webhid.d.ts.map +1 -0
- package/dist/drivers/webhid.js +2 -0
- package/dist/drivers/webhid.js.map +1 -0
- package/dist/drivers/wlmouse/hid.d.ts +81 -0
- package/dist/drivers/wlmouse/hid.d.ts.map +1 -0
- package/dist/drivers/wlmouse/hid.js +576 -0
- package/dist/drivers/wlmouse/hid.js.map +1 -0
- package/dist/drivers/wooting/hid.d.ts +86 -0
- package/dist/drivers/wooting/hid.d.ts.map +1 -0
- package/dist/drivers/wooting/hid.js +320 -0
- package/dist/drivers/wooting/hid.js.map +1 -0
- package/dist/drivers/zaunkoenig/hid.d.ts +31 -0
- package/dist/drivers/zaunkoenig/hid.d.ts.map +1 -0
- package/dist/drivers/zaunkoenig/hid.js +162 -0
- package/dist/drivers/zaunkoenig/hid.js.map +1 -0
- package/dist/endgame-gear/op1.d.ts +165 -0
- package/dist/endgame-gear/op1.d.ts.map +1 -0
- package/dist/endgame-gear/op1.js +384 -0
- package/dist/endgame-gear/op1.js.map +1 -0
- package/dist/endgame-gear/wireless.d.ts +93 -0
- package/dist/endgame-gear/wireless.d.ts.map +1 -0
- package/dist/endgame-gear/wireless.js +242 -0
- package/dist/endgame-gear/wireless.js.map +1 -0
- package/dist/fantech/index.d.ts +9 -0
- package/dist/fantech/index.d.ts.map +1 -0
- package/dist/fantech/index.js +11 -0
- package/dist/fantech/index.js.map +1 -0
- package/dist/finalmouse/index.d.ts +41 -0
- package/dist/finalmouse/index.d.ts.map +1 -0
- package/dist/finalmouse/index.js +106 -0
- package/dist/finalmouse/index.js.map +1 -0
- package/dist/gearhub/index.d.ts +210 -0
- package/dist/gearhub/index.d.ts.map +1 -0
- package/dist/gearhub/index.js +282 -0
- package/dist/gearhub/index.js.map +1 -0
- package/dist/glorious/index.d.ts +89 -0
- package/dist/glorious/index.d.ts.map +1 -0
- package/dist/glorious/index.js +236 -0
- package/dist/glorious/index.js.map +1 -0
- package/dist/glorious-classic/index.d.ts +103 -0
- package/dist/glorious-classic/index.d.ts.map +1 -0
- package/dist/glorious-classic/index.js +304 -0
- package/dist/glorious-classic/index.js.map +1 -0
- package/dist/gwolves/index.d.ts +82 -0
- package/dist/gwolves/index.d.ts.map +1 -0
- package/dist/gwolves/index.js +197 -0
- package/dist/gwolves/index.js.map +1 -0
- package/dist/hyperx/index.d.ts +181 -0
- package/dist/hyperx/index.d.ts.map +1 -0
- package/dist/hyperx/index.js +303 -0
- package/dist/hyperx/index.js.map +1 -0
- package/dist/incott/index.d.ts +1067 -0
- package/dist/incott/index.d.ts.map +1 -0
- package/dist/incott/index.js +1482 -0
- package/dist/incott/index.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/keychron/index.d.ts +194 -0
- package/dist/keychron/index.d.ts.map +1 -0
- package/dist/keychron/index.js +341 -0
- package/dist/keychron/index.js.map +1 -0
- package/dist/ksnake/index.d.ts +157 -0
- package/dist/ksnake/index.d.ts.map +1 -0
- package/dist/ksnake/index.js +314 -0
- package/dist/ksnake/index.js.map +1 -0
- package/dist/lamzu/atlantis.d.ts +237 -0
- package/dist/lamzu/atlantis.d.ts.map +1 -0
- package/dist/lamzu/atlantis.js +263 -0
- package/dist/lamzu/atlantis.js.map +1 -0
- package/dist/lamzu/index.d.ts +60 -0
- package/dist/lamzu/index.d.ts.map +1 -0
- package/dist/lamzu/index.js +86 -0
- package/dist/lamzu/index.js.map +1 -0
- package/dist/logitech/controls.d.ts +138 -0
- package/dist/logitech/controls.d.ts.map +1 -0
- package/dist/logitech/controls.js +184 -0
- package/dist/logitech/controls.js.map +1 -0
- package/dist/logitech/friendly-name.d.ts +50 -0
- package/dist/logitech/friendly-name.d.ts.map +1 -0
- package/dist/logitech/friendly-name.js +74 -0
- package/dist/logitech/friendly-name.js.map +1 -0
- package/dist/logitech/haptics.d.ts +97 -0
- package/dist/logitech/haptics.d.ts.map +1 -0
- package/dist/logitech/haptics.js +116 -0
- package/dist/logitech/haptics.js.map +1 -0
- package/dist/logitech/hosts.d.ts +55 -0
- package/dist/logitech/hosts.d.ts.map +1 -0
- package/dist/logitech/hosts.js +80 -0
- package/dist/logitech/hosts.js.map +1 -0
- package/dist/logitech/index.d.ts +127 -0
- package/dist/logitech/index.d.ts.map +1 -0
- package/dist/logitech/index.js +233 -0
- package/dist/logitech/index.js.map +1 -0
- package/dist/logitech/wheel.d.ts +117 -0
- package/dist/logitech/wheel.d.ts.map +1 -0
- package/dist/logitech/wheel.js +133 -0
- package/dist/logitech/wheel.js.map +1 -0
- package/dist/mchose/a5-gen1.d.ts +38 -0
- package/dist/mchose/a5-gen1.d.ts.map +1 -0
- package/dist/mchose/a5-gen1.js +60 -0
- package/dist/mchose/a5-gen1.js.map +1 -0
- package/dist/mchose/buttons.d.ts +66 -0
- package/dist/mchose/buttons.d.ts.map +1 -0
- package/dist/mchose/buttons.js +184 -0
- package/dist/mchose/buttons.js.map +1 -0
- package/dist/mchose/dock.d.ts +77 -0
- package/dist/mchose/dock.d.ts.map +1 -0
- package/dist/mchose/dock.js +133 -0
- package/dist/mchose/dock.js.map +1 -0
- package/dist/mchose/index.d.ts +299 -0
- package/dist/mchose/index.d.ts.map +1 -0
- package/dist/mchose/index.js +429 -0
- package/dist/mchose/index.js.map +1 -0
- package/dist/mchose/v3-buttons.d.ts +64 -0
- package/dist/mchose/v3-buttons.d.ts.map +1 -0
- package/dist/mchose/v3-buttons.js +258 -0
- package/dist/mchose/v3-buttons.js.map +1 -0
- package/dist/mchose/v3.d.ts +380 -0
- package/dist/mchose/v3.d.ts.map +1 -0
- package/dist/mchose/v3.js +608 -0
- package/dist/mchose/v3.js.map +1 -0
- package/dist/microsoft/index.d.ts +19 -0
- package/dist/microsoft/index.d.ts.map +1 -0
- package/dist/microsoft/index.js +22 -0
- package/dist/microsoft/index.js.map +1 -0
- package/dist/moddo/index.d.ts +72 -0
- package/dist/moddo/index.d.ts.map +1 -0
- package/dist/moddo/index.js +147 -0
- package/dist/moddo/index.js.map +1 -0
- package/dist/ninjutso/index.d.ts +74 -0
- package/dist/ninjutso/index.d.ts.map +1 -0
- package/dist/ninjutso/index.js +133 -0
- package/dist/ninjutso/index.js.map +1 -0
- package/dist/orbital/index.d.ts +14 -0
- package/dist/orbital/index.d.ts.map +1 -0
- package/dist/orbital/index.js +19 -0
- package/dist/orbital/index.js.map +1 -0
- package/dist/pulsar/index.d.ts +81 -0
- package/dist/pulsar/index.d.ts.map +1 -0
- package/dist/pulsar/index.js +185 -0
- package/dist/pulsar/index.js.map +1 -0
- package/dist/rawm/index.d.ts +55 -0
- package/dist/rawm/index.d.ts.map +1 -0
- package/dist/rawm/index.js +229 -0
- package/dist/rawm/index.js.map +1 -0
- package/dist/razer/codec.d.ts +504 -0
- package/dist/razer/codec.d.ts.map +1 -0
- package/dist/razer/codec.js +648 -0
- package/dist/razer/codec.js.map +1 -0
- package/dist/razer/devices.d.ts +156 -0
- package/dist/razer/devices.d.ts.map +1 -0
- package/dist/razer/devices.js +540 -0
- package/dist/razer/devices.js.map +1 -0
- package/dist/razer/index.d.ts +2 -0
- package/dist/razer/index.d.ts.map +1 -0
- package/dist/razer/index.js +2 -0
- package/dist/razer/index.js.map +1 -0
- package/dist/razer/v4.d.ts +19 -0
- package/dist/razer/v4.d.ts.map +1 -0
- package/dist/razer/v4.js +51 -0
- package/dist/razer/v4.js.map +1 -0
- package/dist/steelseries/aerox3.d.ts +236 -0
- package/dist/steelseries/aerox3.d.ts.map +1 -0
- package/dist/steelseries/aerox3.js +311 -0
- package/dist/steelseries/aerox3.js.map +1 -0
- package/dist/steelseries/aerox5-wireless.d.ts +300 -0
- package/dist/steelseries/aerox5-wireless.d.ts.map +1 -0
- package/dist/steelseries/aerox5-wireless.js +389 -0
- package/dist/steelseries/aerox5-wireless.js.map +1 -0
- package/dist/steelseries/aerox5.d.ts +228 -0
- package/dist/steelseries/aerox5.d.ts.map +1 -0
- package/dist/steelseries/aerox5.js +294 -0
- package/dist/steelseries/aerox5.js.map +1 -0
- package/dist/steelseries/aerox9-wireless.d.ts +213 -0
- package/dist/steelseries/aerox9-wireless.d.ts.map +1 -0
- package/dist/steelseries/aerox9-wireless.js +305 -0
- package/dist/steelseries/aerox9-wireless.js.map +1 -0
- package/dist/steelseries/devices.d.ts +82 -0
- package/dist/steelseries/devices.d.ts.map +1 -0
- package/dist/steelseries/devices.js +310 -0
- package/dist/steelseries/devices.js.map +1 -0
- package/dist/steelseries/index.d.ts +13 -0
- package/dist/steelseries/index.d.ts.map +1 -0
- package/dist/steelseries/index.js +13 -0
- package/dist/steelseries/index.js.map +1 -0
- package/dist/steelseries/prime-mini-wireless.d.ts +253 -0
- package/dist/steelseries/prime-mini-wireless.d.ts.map +1 -0
- package/dist/steelseries/prime-mini-wireless.js +351 -0
- package/dist/steelseries/prime-mini-wireless.js.map +1 -0
- package/dist/steelseries/prime-plus.d.ts +179 -0
- package/dist/steelseries/prime-plus.d.ts.map +1 -0
- package/dist/steelseries/prime-plus.js +275 -0
- package/dist/steelseries/prime-plus.js.map +1 -0
- package/dist/steelseries/rival3-wireless.d.ts +222 -0
- package/dist/steelseries/rival3-wireless.d.ts.map +1 -0
- package/dist/steelseries/rival3-wireless.js +308 -0
- package/dist/steelseries/rival3-wireless.js.map +1 -0
- package/dist/steelseries/rival3.d.ts +99 -0
- package/dist/steelseries/rival3.d.ts.map +1 -0
- package/dist/steelseries/rival3.js +147 -0
- package/dist/steelseries/rival3.js.map +1 -0
- package/dist/steelseries/rival310.d.ts +230 -0
- package/dist/steelseries/rival310.d.ts.map +1 -0
- package/dist/steelseries/rival310.js +322 -0
- package/dist/steelseries/rival310.js.map +1 -0
- package/dist/steelseries/rival650.d.ts +215 -0
- package/dist/steelseries/rival650.d.ts.map +1 -0
- package/dist/steelseries/rival650.js +284 -0
- package/dist/steelseries/rival650.js.map +1 -0
- package/dist/steelseries/sensei-ten.d.ts +283 -0
- package/dist/steelseries/sensei-ten.d.ts.map +1 -0
- package/dist/steelseries/sensei-ten.js +389 -0
- package/dist/steelseries/sensei-ten.js.map +1 -0
- package/dist/teevolution/index.d.ts +211 -0
- package/dist/teevolution/index.d.ts.map +1 -0
- package/dist/teevolution/index.js +458 -0
- package/dist/teevolution/index.js.map +1 -0
- package/dist/valkyrie/index.d.ts +19 -0
- package/dist/valkyrie/index.d.ts.map +1 -0
- package/dist/valkyrie/index.js +43 -0
- package/dist/valkyrie/index.js.map +1 -0
- package/dist/valkyrie/settings.d.ts +28 -0
- package/dist/valkyrie/settings.d.ts.map +1 -0
- package/dist/valkyrie/settings.js +84 -0
- package/dist/valkyrie/settings.js.map +1 -0
- package/dist/vgn/index.d.ts +59 -0
- package/dist/vgn/index.d.ts.map +1 -0
- package/dist/vgn/index.js +165 -0
- package/dist/vgn/index.js.map +1 -0
- package/dist/wallhack/index.d.ts +165 -0
- package/dist/wallhack/index.d.ts.map +1 -0
- package/dist/wallhack/index.js +226 -0
- package/dist/wallhack/index.js.map +1 -0
- package/dist/wlmouse/index.d.ts +4 -0
- package/dist/wlmouse/index.d.ts.map +1 -0
- package/dist/wlmouse/index.js +7 -0
- package/dist/wlmouse/index.js.map +1 -0
- package/dist/wooting/index.d.ts +225 -0
- package/dist/wooting/index.d.ts.map +1 -0
- package/dist/wooting/index.js +296 -0
- package/dist/wooting/index.js.map +1 -0
- package/dist/zaunkoenig/index.d.ts +49 -0
- package/dist/zaunkoenig/index.d.ts.map +1 -0
- package/dist/zaunkoenig/index.js +127 -0
- package/dist/zaunkoenig/index.js.map +1 -0
- package/package.json +193 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure Endgame Gear WE-series (OP1we) profile protocol helpers.
|
|
3
|
+
* Used by EggWeHidClient and unit-tested without WebHID.
|
|
4
|
+
*
|
|
5
|
+
* Framing: feature report id 0x08, 16-byte payload, full report sum == 0x55.
|
|
6
|
+
* ReadEEPROM cmd 0x08 / WriteEEPROM cmd 0x07 — body [0, hi, lo, len, data…].
|
|
7
|
+
*/
|
|
8
|
+
export declare const WE_REPORT_ID = 8;
|
|
9
|
+
export declare const WE_PAYLOAD_LEN = 16;
|
|
10
|
+
export declare const WE_CHECKSUM_TARGET = 85;
|
|
11
|
+
export declare const WE_CMD_GET_POWER = 4;
|
|
12
|
+
export declare const WE_CMD_READ_EEPROM = 8;
|
|
13
|
+
export declare const WE_CMD_WRITE_EEPROM = 7;
|
|
14
|
+
export declare const WE_CMD_GET_CONNECT = 3;
|
|
15
|
+
export declare const WE_CMD_GET_CUR_PROFILE = 14;
|
|
16
|
+
export declare const WE_MAX_EEPROM_CHUNK = 8;
|
|
17
|
+
/** Profile map (NOTES.md / OEM GetProfile logs). */
|
|
18
|
+
export declare const WE_OFF: {
|
|
19
|
+
/**
|
|
20
|
+
* Header value+crc pairs (live dump: 01 54 | 04 51 | 01 54 | … | 02 53).
|
|
21
|
+
* Report-rate was briefly mis-mapped to 0x04, which is DEFLEVEL — writing “Hz”
|
|
22
|
+
* changed the active CPI stage. Correct map:
|
|
23
|
+
*/
|
|
24
|
+
/** Report-rate divider: 8→125, 4→250, 2→500, 1→1000 Hz (OEM max 1000). */
|
|
25
|
+
readonly reportRate: 0;
|
|
26
|
+
readonly dpiStageCount: 2;
|
|
27
|
+
readonly activeDpiLevel: 4;
|
|
28
|
+
readonly lod: 10;
|
|
29
|
+
readonly dpiStages: 12;
|
|
30
|
+
readonly dpiStageBytes: 4;
|
|
31
|
+
readonly maxDpiStages: 8;
|
|
32
|
+
readonly debounce: 169;
|
|
33
|
+
readonly sleep: 173;
|
|
34
|
+
};
|
|
35
|
+
/** OEM-style rates only (upper bound 1000 Hz — no 2K/4K/8K). */
|
|
36
|
+
export declare const WE_POLLING_RATES: readonly [125, 250, 500, 1000];
|
|
37
|
+
export type WePollingRate = (typeof WE_POLLING_RATES)[number];
|
|
38
|
+
export type WeLod = "Medium" | "High";
|
|
39
|
+
export interface WeDpiStage {
|
|
40
|
+
x: number;
|
|
41
|
+
y: number;
|
|
42
|
+
flags: number;
|
|
43
|
+
}
|
|
44
|
+
export interface WeProfile {
|
|
45
|
+
activeDpiLevel: number;
|
|
46
|
+
dpiStageCount: number;
|
|
47
|
+
pollingRateHz: number;
|
|
48
|
+
lod: WeLod | null;
|
|
49
|
+
lodRaw: number | null;
|
|
50
|
+
debounceMs: number | null;
|
|
51
|
+
sleepRaw: number | null;
|
|
52
|
+
stages: WeDpiStage[];
|
|
53
|
+
/** Active stage CPI (X axis). */
|
|
54
|
+
dpi: number;
|
|
55
|
+
}
|
|
56
|
+
/** Sum of reportId + first 15 payload bytes; last payload byte is checksum. */
|
|
57
|
+
export declare function weReportChecksum(reportId: number, data15: readonly number[]): number;
|
|
58
|
+
/** Build 16-byte WebHID feature payload (no report id). */
|
|
59
|
+
export declare function weBuildCmdPayload(cmd: number, dataAfterCmd?: readonly number[]): Uint8Array;
|
|
60
|
+
export declare function weBuildReadEepromPayload(addr: number, length: number): Uint8Array;
|
|
61
|
+
export declare function weBuildWriteEepromPayload(addr: number, data: readonly number[]): Uint8Array;
|
|
62
|
+
/**
|
|
63
|
+
* Parse input report 9 body (WebHID omits report id).
|
|
64
|
+
* ReadEEPROM success: [cmd, status, 0, addr_lo, len, data…]
|
|
65
|
+
*/
|
|
66
|
+
export declare function weParseReadEepromResponse(response: Uint8Array, expectedAddr: number, expectedLen: number): Uint8Array | null;
|
|
67
|
+
/** WriteEEPROM ACK: status 0 and optional echo. */
|
|
68
|
+
export declare function weParseWriteEepromResponse(response: Uint8Array): boolean;
|
|
69
|
+
export declare function weScalarCrc(value: number): number;
|
|
70
|
+
export declare function wePackScalarPair(value: number): [number, number];
|
|
71
|
+
export declare function weUnpackScalarPair(value: number, crc: number): number | null;
|
|
72
|
+
/** CPI ↔ stage byte: cpi = (byte + 1) * 50 (50…12800). */
|
|
73
|
+
export declare function weCpiToByte(cpi: number): number;
|
|
74
|
+
export declare function weByteToCpi(byte: number): number;
|
|
75
|
+
export declare function weStageCrc(x: number, y: number, flags: number): number;
|
|
76
|
+
export declare function wePackDpiStage(xCpi: number, yCpi: number, flags?: number): Uint8Array;
|
|
77
|
+
export declare function weUnpackDpiStage(bytes: Uint8Array | readonly number[]): WeDpiStage | null;
|
|
78
|
+
export declare function weEncodeLod(value: WeLod): number;
|
|
79
|
+
export declare function weDecodeLod(raw: number): WeLod | null;
|
|
80
|
+
/** Divider byte → Hz (1=1000, 2=500, 4=250, 8=125). */
|
|
81
|
+
export declare function weDecodeReportRate(raw: number): number | null;
|
|
82
|
+
export declare function weEncodeReportRate(hz: number): number;
|
|
83
|
+
export declare function weIsValidPollingRate(hz: number): hz is WePollingRate;
|
|
84
|
+
/**
|
|
85
|
+
* Decode a contiguous profile memory image starting at address 0
|
|
86
|
+
* (at least through 0xB4 for full basics).
|
|
87
|
+
*/
|
|
88
|
+
export declare function weDecodeProfile(mem: Uint8Array): WeProfile;
|
|
89
|
+
/** Patch only the selected DPI stage, preserving its protocol flags. */
|
|
90
|
+
export declare function wePatchActiveDpi(mem: Uint8Array, cpi: number, activeLevel: number): void;
|
|
91
|
+
export declare function wePatchScalar(mem: Uint8Array, addr: number, value: number): void;
|
|
92
|
+
export declare function weIsValidCpi(cpi: number): boolean;
|
|
93
|
+
//# sourceMappingURL=wireless.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wireless.d.ts","sourceRoot":"","sources":["../../src/endgame-gear/wireless.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure Endgame Gear WE-series (OP1we) profile protocol helpers.
|
|
3
|
+
* Used by EggWeHidClient and unit-tested without WebHID.
|
|
4
|
+
*
|
|
5
|
+
* Framing: feature report id 0x08, 16-byte payload, full report sum == 0x55.
|
|
6
|
+
* ReadEEPROM cmd 0x08 / WriteEEPROM cmd 0x07 — body [0, hi, lo, len, data…].
|
|
7
|
+
*/
|
|
8
|
+
export const WE_REPORT_ID = 0x08;
|
|
9
|
+
export const WE_PAYLOAD_LEN = 16;
|
|
10
|
+
export const WE_CHECKSUM_TARGET = 0x55;
|
|
11
|
+
export const WE_CMD_GET_POWER = 0x04;
|
|
12
|
+
export const WE_CMD_READ_EEPROM = 0x08;
|
|
13
|
+
export const WE_CMD_WRITE_EEPROM = 0x07;
|
|
14
|
+
export const WE_CMD_GET_CONNECT = 0x03;
|
|
15
|
+
export const WE_CMD_GET_CUR_PROFILE = 0x0e;
|
|
16
|
+
export const WE_MAX_EEPROM_CHUNK = 8;
|
|
17
|
+
/** Profile map (NOTES.md / OEM GetProfile logs). */
|
|
18
|
+
export const WE_OFF = {
|
|
19
|
+
/**
|
|
20
|
+
* Header value+crc pairs (live dump: 01 54 | 04 51 | 01 54 | … | 02 53).
|
|
21
|
+
* Report-rate was briefly mis-mapped to 0x04, which is DEFLEVEL — writing “Hz”
|
|
22
|
+
* changed the active CPI stage. Correct map:
|
|
23
|
+
*/
|
|
24
|
+
/** Report-rate divider: 8→125, 4→250, 2→500, 1→1000 Hz (OEM max 1000). */
|
|
25
|
+
reportRate: 0x00,
|
|
26
|
+
dpiStageCount: 0x02, // DM
|
|
27
|
+
activeDpiLevel: 0x04, // DEFLEVEL — which CPI stage is active (not report rate!)
|
|
28
|
+
lod: 0x0a, // 1=Medium, 2=High
|
|
29
|
+
dpiStages: 0x0c, // 8 × 4-byte stages
|
|
30
|
+
dpiStageBytes: 4,
|
|
31
|
+
maxDpiStages: 8,
|
|
32
|
+
debounce: 0xa9, // ms
|
|
33
|
+
sleep: 0xad, // raw; OEM displays raw*10
|
|
34
|
+
};
|
|
35
|
+
/** OEM-style rates only (upper bound 1000 Hz — no 2K/4K/8K). */
|
|
36
|
+
export const WE_POLLING_RATES = [125, 250, 500, 1000];
|
|
37
|
+
/** Sum of reportId + first 15 payload bytes; last payload byte is checksum. */
|
|
38
|
+
export function weReportChecksum(reportId, data15) {
|
|
39
|
+
let sum = reportId;
|
|
40
|
+
for (const byte of data15)
|
|
41
|
+
sum += byte & 0xff;
|
|
42
|
+
return (WE_CHECKSUM_TARGET - (sum & 0xff)) & 0xff;
|
|
43
|
+
}
|
|
44
|
+
/** Build 16-byte WebHID feature payload (no report id). */
|
|
45
|
+
export function weBuildCmdPayload(cmd, dataAfterCmd = []) {
|
|
46
|
+
const payload = new Uint8Array(WE_PAYLOAD_LEN);
|
|
47
|
+
payload[0] = cmd & 0xff;
|
|
48
|
+
for (let i = 0; i < Math.min(14, dataAfterCmd.length); i += 1) {
|
|
49
|
+
payload[i + 1] = dataAfterCmd[i] & 0xff;
|
|
50
|
+
}
|
|
51
|
+
const data15 = [...payload.subarray(0, 15)];
|
|
52
|
+
payload[15] = weReportChecksum(WE_REPORT_ID, data15);
|
|
53
|
+
return payload;
|
|
54
|
+
}
|
|
55
|
+
export function weBuildReadEepromPayload(addr, length) {
|
|
56
|
+
if (!Number.isInteger(length) || length < 1 || length > WE_MAX_EEPROM_CHUNK) {
|
|
57
|
+
throw new Error(`WE ReadEEPROM length must be 1–${WE_MAX_EEPROM_CHUNK}.`);
|
|
58
|
+
}
|
|
59
|
+
if (!Number.isInteger(addr) || addr < 0 || addr > 0xffff) {
|
|
60
|
+
throw new Error("WE EEPROM address out of range.");
|
|
61
|
+
}
|
|
62
|
+
const hi = (addr >> 8) & 0xff;
|
|
63
|
+
const lo = addr & 0xff;
|
|
64
|
+
return weBuildCmdPayload(WE_CMD_READ_EEPROM, [0, hi, lo, length]);
|
|
65
|
+
}
|
|
66
|
+
export function weBuildWriteEepromPayload(addr, data) {
|
|
67
|
+
if (data.length < 1 || data.length > WE_MAX_EEPROM_CHUNK) {
|
|
68
|
+
throw new Error(`WE WriteEEPROM length must be 1–${WE_MAX_EEPROM_CHUNK}.`);
|
|
69
|
+
}
|
|
70
|
+
if (!Number.isInteger(addr) || addr < 0 || addr > 0xffff) {
|
|
71
|
+
throw new Error("WE EEPROM address out of range.");
|
|
72
|
+
}
|
|
73
|
+
const hi = (addr >> 8) & 0xff;
|
|
74
|
+
const lo = addr & 0xff;
|
|
75
|
+
return weBuildCmdPayload(WE_CMD_WRITE_EEPROM, [0, hi, lo, data.length, ...data.map((b) => b & 0xff)]);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Parse input report 9 body (WebHID omits report id).
|
|
79
|
+
* ReadEEPROM success: [cmd, status, 0, addr_lo, len, data…]
|
|
80
|
+
*/
|
|
81
|
+
export function weParseReadEepromResponse(response, expectedAddr, expectedLen) {
|
|
82
|
+
let data = response;
|
|
83
|
+
if (data.length > 0 && data[0] === 0x09)
|
|
84
|
+
data = data.subarray(1);
|
|
85
|
+
if (data.length < 5 + expectedLen)
|
|
86
|
+
return null;
|
|
87
|
+
if (data[0] !== WE_CMD_READ_EEPROM)
|
|
88
|
+
return null;
|
|
89
|
+
if (data[1] !== 0)
|
|
90
|
+
return null;
|
|
91
|
+
if (data[3] !== (expectedAddr & 0xff))
|
|
92
|
+
return null;
|
|
93
|
+
if (data[4] !== expectedLen)
|
|
94
|
+
return null;
|
|
95
|
+
return data.subarray(5, 5 + expectedLen);
|
|
96
|
+
}
|
|
97
|
+
/** WriteEEPROM ACK: status 0 and optional echo. */
|
|
98
|
+
export function weParseWriteEepromResponse(response) {
|
|
99
|
+
let data = response;
|
|
100
|
+
if (data.length > 0 && data[0] === 0x09)
|
|
101
|
+
data = data.subarray(1);
|
|
102
|
+
if (data.length < 2)
|
|
103
|
+
return false;
|
|
104
|
+
return data[0] === WE_CMD_WRITE_EEPROM && data[1] === 0;
|
|
105
|
+
}
|
|
106
|
+
export function weScalarCrc(value) {
|
|
107
|
+
return (WE_CHECKSUM_TARGET - (value & 0xff)) & 0xff;
|
|
108
|
+
}
|
|
109
|
+
export function wePackScalarPair(value) {
|
|
110
|
+
const v = value & 0xff;
|
|
111
|
+
return [v, weScalarCrc(v)];
|
|
112
|
+
}
|
|
113
|
+
export function weUnpackScalarPair(value, crc) {
|
|
114
|
+
if (weScalarCrc(value) !== (crc & 0xff))
|
|
115
|
+
return null;
|
|
116
|
+
return value & 0xff;
|
|
117
|
+
}
|
|
118
|
+
/** CPI ↔ stage byte: cpi = (byte + 1) * 50 (50…12800). */
|
|
119
|
+
export function weCpiToByte(cpi) {
|
|
120
|
+
if (!Number.isInteger(cpi) || cpi < 50 || cpi > 12800 || cpi % 50 !== 0) {
|
|
121
|
+
throw new Error("WE CPI must be 50–12,800 in steps of 50.");
|
|
122
|
+
}
|
|
123
|
+
return cpi / 50 - 1;
|
|
124
|
+
}
|
|
125
|
+
export function weByteToCpi(byte) {
|
|
126
|
+
return ((byte & 0xff) + 1) * 50;
|
|
127
|
+
}
|
|
128
|
+
export function weStageCrc(x, y, flags) {
|
|
129
|
+
return (WE_CHECKSUM_TARGET - ((x + y + flags) & 0xff)) & 0xff;
|
|
130
|
+
}
|
|
131
|
+
export function wePackDpiStage(xCpi, yCpi, flags = 0) {
|
|
132
|
+
const x = weCpiToByte(xCpi);
|
|
133
|
+
const y = weCpiToByte(yCpi);
|
|
134
|
+
const f = flags & 0xff;
|
|
135
|
+
return new Uint8Array([x, y, f, weStageCrc(x, y, f)]);
|
|
136
|
+
}
|
|
137
|
+
export function weUnpackDpiStage(bytes) {
|
|
138
|
+
if (bytes.length < 4)
|
|
139
|
+
return null;
|
|
140
|
+
const x = bytes[0] & 0xff;
|
|
141
|
+
const y = bytes[1] & 0xff;
|
|
142
|
+
const flags = bytes[2] & 0xff;
|
|
143
|
+
const crc = bytes[3] & 0xff;
|
|
144
|
+
if (weStageCrc(x, y, flags) !== crc)
|
|
145
|
+
return null;
|
|
146
|
+
return { x: weByteToCpi(x), y: weByteToCpi(y), flags };
|
|
147
|
+
}
|
|
148
|
+
export function weEncodeLod(value) {
|
|
149
|
+
if (value === "Medium")
|
|
150
|
+
return 1;
|
|
151
|
+
if (value === "High")
|
|
152
|
+
return 2;
|
|
153
|
+
throw new Error("OP1we LOD supports Medium (1 mm class) or High only.");
|
|
154
|
+
}
|
|
155
|
+
export function weDecodeLod(raw) {
|
|
156
|
+
if (raw === 1)
|
|
157
|
+
return "Medium";
|
|
158
|
+
if (raw === 2)
|
|
159
|
+
return "High";
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
/** Divider byte → Hz (1=1000, 2=500, 4=250, 8=125). */
|
|
163
|
+
export function weDecodeReportRate(raw) {
|
|
164
|
+
const map = { 1: 1000, 2: 500, 4: 250, 8: 125 };
|
|
165
|
+
return map[raw & 0xff] ?? null;
|
|
166
|
+
}
|
|
167
|
+
export function weEncodeReportRate(hz) {
|
|
168
|
+
const map = { 1000: 1, 500: 2, 250: 4, 125: 8 };
|
|
169
|
+
if (!(hz in map)) {
|
|
170
|
+
throw new Error("OP1we supports 125, 250, 500, or 1000 Hz report rate.");
|
|
171
|
+
}
|
|
172
|
+
return map[hz];
|
|
173
|
+
}
|
|
174
|
+
export function weIsValidPollingRate(hz) {
|
|
175
|
+
return WE_POLLING_RATES.includes(hz);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Decode a contiguous profile memory image starting at address 0
|
|
179
|
+
* (at least through 0xB4 for full basics).
|
|
180
|
+
*/
|
|
181
|
+
export function weDecodeProfile(mem) {
|
|
182
|
+
const pair = (addr) => {
|
|
183
|
+
if (mem.length < addr + 2)
|
|
184
|
+
return null;
|
|
185
|
+
return weUnpackScalarPair(mem[addr], mem[addr + 1]);
|
|
186
|
+
};
|
|
187
|
+
const activeDpiLevel = pair(WE_OFF.activeDpiLevel) ?? 0;
|
|
188
|
+
let dpiStageCount = pair(WE_OFF.dpiStageCount) ?? 1;
|
|
189
|
+
dpiStageCount = Math.min(Math.max(dpiStageCount, 1), WE_OFF.maxDpiStages);
|
|
190
|
+
const rateRaw = pair(WE_OFF.reportRate);
|
|
191
|
+
const pollingRateHz = rateRaw !== null ? (weDecodeReportRate(rateRaw) ?? 1000) : 1000;
|
|
192
|
+
const lodRaw = pair(WE_OFF.lod);
|
|
193
|
+
const debounceMs = pair(WE_OFF.debounce);
|
|
194
|
+
const sleepRaw = pair(WE_OFF.sleep);
|
|
195
|
+
const stages = [];
|
|
196
|
+
for (let i = 0; i < WE_OFF.maxDpiStages; i += 1) {
|
|
197
|
+
const off = WE_OFF.dpiStages + i * WE_OFF.dpiStageBytes;
|
|
198
|
+
if (mem.length < off + 4)
|
|
199
|
+
break;
|
|
200
|
+
const stage = weUnpackDpiStage(mem.subarray(off, off + 4));
|
|
201
|
+
if (stage)
|
|
202
|
+
stages.push(stage);
|
|
203
|
+
else
|
|
204
|
+
stages.push({ x: 800, y: 800, flags: 0 });
|
|
205
|
+
}
|
|
206
|
+
const level = Math.min(Math.max(activeDpiLevel, 0), Math.max(stages.length - 1, 0));
|
|
207
|
+
const active = stages[level] ?? stages[0];
|
|
208
|
+
const dpi = active?.x ?? 800;
|
|
209
|
+
return {
|
|
210
|
+
activeDpiLevel: level,
|
|
211
|
+
dpiStageCount,
|
|
212
|
+
pollingRateHz,
|
|
213
|
+
lod: lodRaw !== null ? weDecodeLod(lodRaw) : null,
|
|
214
|
+
lodRaw,
|
|
215
|
+
debounceMs,
|
|
216
|
+
sleepRaw,
|
|
217
|
+
stages,
|
|
218
|
+
dpi,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/** Patch only the selected DPI stage, preserving its protocol flags. */
|
|
222
|
+
export function wePatchActiveDpi(mem, cpi, activeLevel) {
|
|
223
|
+
if (!Number.isInteger(activeLevel) || activeLevel < 0 || activeLevel >= WE_OFF.maxDpiStages) {
|
|
224
|
+
throw new Error("WE active DPI stage is out of range.");
|
|
225
|
+
}
|
|
226
|
+
const off = WE_OFF.dpiStages + activeLevel * WE_OFF.dpiStageBytes;
|
|
227
|
+
if (mem.length < off + WE_OFF.dpiStageBytes)
|
|
228
|
+
throw new Error("WE profile is missing the active DPI stage.");
|
|
229
|
+
const existing = weUnpackDpiStage(mem.subarray(off, off + WE_OFF.dpiStageBytes));
|
|
230
|
+
if (!existing)
|
|
231
|
+
throw new Error("WE active DPI stage checksum is invalid.");
|
|
232
|
+
mem.set(wePackDpiStage(cpi, cpi, existing.flags), off);
|
|
233
|
+
}
|
|
234
|
+
export function wePatchScalar(mem, addr, value) {
|
|
235
|
+
const [v, c] = wePackScalarPair(value);
|
|
236
|
+
mem[addr] = v;
|
|
237
|
+
mem[addr + 1] = c;
|
|
238
|
+
}
|
|
239
|
+
export function weIsValidCpi(cpi) {
|
|
240
|
+
return Number.isInteger(cpi) && cpi >= 50 && cpi <= 12800 && cpi % 50 === 0;
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=wireless.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wireless.js","sourceRoot":"","sources":["../../src/endgame-gear/wireless.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface FantechProduct {
|
|
2
|
+
model: string;
|
|
3
|
+
wireless: boolean;
|
|
4
|
+
pollingRates: readonly number[];
|
|
5
|
+
maxDpi?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const FANTECH_VENDOR_ID = 12625;
|
|
8
|
+
export declare const FANTECH_PRODUCTS: ReadonlyMap<number, FantechProduct>;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fantech/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAO/D,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const RATES_8K = [125, 250, 500, 1000, 2000, 4000, 8000];
|
|
2
|
+
export const FANTECH_VENDOR_ID = 0x3151;
|
|
3
|
+
export const FANTECH_PRODUCTS = new Map([
|
|
4
|
+
[0x503d, {
|
|
5
|
+
model: "WG14P Yari Pro Wireless 8K Gaming Mouse",
|
|
6
|
+
wireless: true,
|
|
7
|
+
pollingRates: RATES_8K,
|
|
8
|
+
maxDpi: 42000,
|
|
9
|
+
}],
|
|
10
|
+
]);
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fantech/index.ts"],"names":[],"mappings":"AAOA,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAElE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAwC,IAAI,GAAG,CAAC;IAC3E,CAAC,MAAM,EAAE;YACP,KAAK,EAAE,yCAAyC;YAChD,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,QAAQ;YACtB,MAAM,EAAE,KAAK;SACd,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const FINALMOUSE_REPORT: {
|
|
2
|
+
readonly dongle: 2;
|
|
3
|
+
readonly dongleInput: 3;
|
|
4
|
+
readonly main: 4;
|
|
5
|
+
readonly mainInput: 5;
|
|
6
|
+
};
|
|
7
|
+
export declare const FINALMOUSE_COMMAND: {
|
|
8
|
+
readonly dpi: 16;
|
|
9
|
+
readonly pollingRate: 17;
|
|
10
|
+
readonly motionSync: 18;
|
|
11
|
+
readonly dongleLed: 20;
|
|
12
|
+
readonly liftOffDistance: 21;
|
|
13
|
+
readonly tournamentScrollMode: 23;
|
|
14
|
+
readonly tournamentScrollTimeout: 24;
|
|
15
|
+
readonly wakeAll: 96;
|
|
16
|
+
readonly dongleInfo: 10;
|
|
17
|
+
};
|
|
18
|
+
export interface FinalmouseTelemetry {
|
|
19
|
+
dpi?: number;
|
|
20
|
+
pollingRateHz?: number;
|
|
21
|
+
batteryVoltageMv?: number;
|
|
22
|
+
batteryPercent?: number;
|
|
23
|
+
rssiDbm?: number;
|
|
24
|
+
liftOffDistanceMm?: number;
|
|
25
|
+
motionSync?: boolean;
|
|
26
|
+
dongleLedMode?: number;
|
|
27
|
+
tournamentScrollMode?: number;
|
|
28
|
+
tournamentScrollTimeoutMs?: number;
|
|
29
|
+
chargingState?: number;
|
|
30
|
+
mouseFirmware?: string;
|
|
31
|
+
dongleRfFirmware?: string;
|
|
32
|
+
dongleUsbFirmware?: string;
|
|
33
|
+
mouseSerial?: string;
|
|
34
|
+
}
|
|
35
|
+
/** Build xpanel's 63-byte WebHID payload. The browser supplies reportId separately. */
|
|
36
|
+
export declare function buildFinalmouseReport(command: number, payload?: Uint8Array<ArrayBuffer>): Uint8Array;
|
|
37
|
+
/** Decode one WebHID input payload after the browser has removed the report ID. */
|
|
38
|
+
export declare function decodeFinalmouseReport(reportId: number, data: Uint8Array): Partial<FinalmouseTelemetry> | null;
|
|
39
|
+
/** Finalmouse's ULX battery-voltage calibration curve from xpanel. */
|
|
40
|
+
export declare function finalmouseBatteryPercent(millivolts: number): number;
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/finalmouse/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;CAUrB,CAAC;AAIX,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,0BAAmB,GAAG,UAAU,CAS7F;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI,CA2C9G;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAenE"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export const FINALMOUSE_REPORT = {
|
|
2
|
+
dongle: 0x02,
|
|
3
|
+
dongleInput: 0x03,
|
|
4
|
+
main: 0x04,
|
|
5
|
+
mainInput: 0x05,
|
|
6
|
+
};
|
|
7
|
+
export const FINALMOUSE_COMMAND = {
|
|
8
|
+
dpi: 16,
|
|
9
|
+
pollingRate: 17,
|
|
10
|
+
motionSync: 18,
|
|
11
|
+
dongleLed: 20,
|
|
12
|
+
liftOffDistance: 21,
|
|
13
|
+
tournamentScrollMode: 23,
|
|
14
|
+
tournamentScrollTimeout: 24,
|
|
15
|
+
wakeAll: 96,
|
|
16
|
+
dongleInfo: 10,
|
|
17
|
+
};
|
|
18
|
+
const OUTPUT_REPORT_LENGTH = 63;
|
|
19
|
+
/** Build xpanel's 63-byte WebHID payload. The browser supplies reportId separately. */
|
|
20
|
+
export function buildFinalmouseReport(command, payload = new Uint8Array()) {
|
|
21
|
+
if (!Number.isInteger(command) || command < 0 || command > 0x7f)
|
|
22
|
+
throw new Error("Invalid Finalmouse command.");
|
|
23
|
+
if (payload.length > OUTPUT_REPORT_LENGTH - 3)
|
|
24
|
+
throw new Error("Finalmouse command payload is too large.");
|
|
25
|
+
const report = new Uint8Array(OUTPUT_REPORT_LENGTH);
|
|
26
|
+
report[0] = 2 + payload.length;
|
|
27
|
+
report[1] = 0x80 | command;
|
|
28
|
+
report[2] = payload.length;
|
|
29
|
+
report.set(payload, 3);
|
|
30
|
+
return report;
|
|
31
|
+
}
|
|
32
|
+
/** Decode one WebHID input payload after the browser has removed the report ID. */
|
|
33
|
+
export function decodeFinalmouseReport(reportId, data) {
|
|
34
|
+
if ((reportId !== FINALMOUSE_REPORT.dongleInput && reportId !== FINALMOUSE_REPORT.mainInput) || data.length < 3)
|
|
35
|
+
return null;
|
|
36
|
+
const innerLength = Math.min(data[0] ?? 0, data.length - 1);
|
|
37
|
+
const body = data.subarray(1, innerLength + 1);
|
|
38
|
+
if (body.length < 2)
|
|
39
|
+
return null;
|
|
40
|
+
const command = body[0] ?? -1;
|
|
41
|
+
const payloadLength = Math.min(body[1] ?? 0, Math.max(0, body.length - 2));
|
|
42
|
+
const payload = body.subarray(2, 2 + payloadLength);
|
|
43
|
+
if (reportId === FINALMOUSE_REPORT.dongleInput) {
|
|
44
|
+
return command === FINALMOUSE_COMMAND.dongleInfo
|
|
45
|
+
? { dongleUsbFirmware: decodeAscii(payload, payloadLength - 1) }
|
|
46
|
+
: null;
|
|
47
|
+
}
|
|
48
|
+
switch (command) {
|
|
49
|
+
case 3: {
|
|
50
|
+
const dpi = u16le(payload);
|
|
51
|
+
return dpi === null ? null : { dpi };
|
|
52
|
+
}
|
|
53
|
+
case 4: {
|
|
54
|
+
const pollingRateHz = u16le(payload);
|
|
55
|
+
return pollingRateHz === null ? null : { pollingRateHz };
|
|
56
|
+
}
|
|
57
|
+
case 5: {
|
|
58
|
+
const millivolts = u16le(payload);
|
|
59
|
+
return millivolts === null ? null : {
|
|
60
|
+
batteryVoltageMv: millivolts,
|
|
61
|
+
batteryPercent: finalmouseBatteryPercent(millivolts),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
case 11: return { dongleRfFirmware: decodeAscii(payload, payloadLength - 1) };
|
|
65
|
+
case 12: return { mouseFirmware: decodeAscii(payload, payloadLength - 1) };
|
|
66
|
+
case 13: return payload.length < 1 ? null : { rssiDbm: payload[0] > 127 ? payload[0] - 256 : payload[0] };
|
|
67
|
+
case 14: return { mouseSerial: decodeAscii(payload, payloadLength - 1) };
|
|
68
|
+
case 18: return payload.length < 1 ? null : { motionSync: payload[0] === 1 };
|
|
69
|
+
case 20: return payload.length < 1 ? null : { dongleLedMode: payload[0] };
|
|
70
|
+
case 21: return payload.length < 1 ? null : { liftOffDistanceMm: payload[0] };
|
|
71
|
+
case 23: return payload.length < 1 ? null : { tournamentScrollMode: payload[0] };
|
|
72
|
+
case 24: return payload.length < 1 ? null : { tournamentScrollTimeoutMs: payload[0] * 100 };
|
|
73
|
+
case 37: return payload.length < 1 ? null : { chargingState: payload[0] };
|
|
74
|
+
default: return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Finalmouse's ULX battery-voltage calibration curve from xpanel. */
|
|
78
|
+
export function finalmouseBatteryPercent(millivolts) {
|
|
79
|
+
if (millivolts <= 0)
|
|
80
|
+
return 0;
|
|
81
|
+
const voltage = millivolts / 1000;
|
|
82
|
+
const voltages = [3, 3.62, 3.66, 3.74, 3.88, 4.17, 4.38];
|
|
83
|
+
const percentages = [0.2, 5, 10, 25, 50, 75, 100];
|
|
84
|
+
if (voltage >= voltages.at(-1))
|
|
85
|
+
return 100;
|
|
86
|
+
if (voltage <= voltages[0])
|
|
87
|
+
return 0;
|
|
88
|
+
for (let index = 0; index < voltages.length - 1; index += 1) {
|
|
89
|
+
const low = voltages[index];
|
|
90
|
+
const high = voltages[index + 1];
|
|
91
|
+
if (voltage < low || voltage > high)
|
|
92
|
+
continue;
|
|
93
|
+
const fraction = (voltage - low) / (high - low);
|
|
94
|
+
return Math.round(percentages[index] + (percentages[index + 1] - percentages[index]) * fraction);
|
|
95
|
+
}
|
|
96
|
+
return 0;
|
|
97
|
+
}
|
|
98
|
+
function u16le(payload) {
|
|
99
|
+
return payload.length < 2 ? null : payload[0] | (payload[1] << 8);
|
|
100
|
+
}
|
|
101
|
+
function decodeAscii(payload, length) {
|
|
102
|
+
if (length <= 0)
|
|
103
|
+
return "";
|
|
104
|
+
return new TextDecoder("ascii").decode(payload.subarray(0, Math.min(length, payload.length))).replace(/[\0 ]+$/, "");
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/finalmouse/index.ts"],"names":[],"mappings":"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"}
|