@slippi/slippi-js
Version:
Official Project Slippi Javascript SDK
1 lines • 74.7 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("lodash/get"),t=require("lodash/isEqual"),r=require("lodash/keyBy"),n=require("lodash/last"),s=require("lodash/set"),o=require("lodash/size"),a=require("events"),i=require("lodash/filter"),E=require("lodash/groupBy"),l=require("lodash/orderBy"),T=require("lodash/first"),c=require("lodash/flatten"),u=require("lodash/mapValues"),_=require("lodash/zip"),p=require("date-fns"),m=require("fs"),A=require("lodash/forEach"),h=require("stream"),S=require("@shelacek/ubjson"),N=require("net"),R=require("reconnect-core"),d=require("iconv-lite"),f=require("lodash/map"),I=require("path"),C=require("semver"),O={0:{name:"Captain Falcon",shortName:"Falcon",colors:["Black","Red","White","Green","Blue"]},1:{name:"Donkey Kong",shortName:"DK",colors:["Black","Red","Blue","Green"]},2:{name:"Fox",colors:["Red","Blue","Green"]},3:{name:"Mr. Game & Watch",shortName:"G&W",colors:["Red","Blue","Green"]},4:{name:"Kirby",colors:["Yellow","Blue","Red","Green","White"]},5:{name:"Bowser",colors:["Red","Blue","Black"]},6:{name:"Link",colors:["Red","Blue","Black","White"]},7:{name:"Luigi",colors:["White","Blue","Red"]},8:{name:"Mario",colors:["Yellow","Black","Blue","Green"]},9:{name:"Marth",colors:["Red","Green","Black","White"]},10:{name:"Mewtwo",colors:["Red","Blue","Green"]},11:{name:"Ness",colors:["Yellow","Blue","Green"]},12:{name:"Peach",colors:["Daisy","White","Blue","Green"]},13:{name:"Pikachu",colors:["Red","Party Hat","Cowboy Hat"]},14:{name:"Ice Climbers",shortName:"ICs",colors:["Green","Orange","Red"]},15:{name:"Jigglypuff",shortName:"Puff",colors:["Red","Blue","Headband","Crown"]},16:{name:"Samus",colors:["Pink","Black","Green","Purple"]},17:{name:"Yoshi",colors:["Red","Blue","Yellow","Pink","Cyan"]},18:{name:"Zelda",colors:["Red","Blue","Green","White"]},19:{name:"Sheik",colors:["Red","Blue","Green","White"]},20:{name:"Falco",colors:["Red","Blue","Green"]},21:{name:"Young Link",shortName:"YLink",colors:["Red","Blue","White","Black"]},22:{name:"Dr. Mario",shortName:"Doc",colors:["Red","Blue","Green","Black"]},23:{name:"Roy",colors:["Red","Blue","Green","Yellow"]},24:{name:"Pichu",colors:["Red","Blue","Green"]},25:{name:"Ganondorf",shortName:"Ganon",colors:["Red","Blue","Green","Purple"]},26:{name:"Master Hand"},27:{name:"Wireframe (Male)"},28:{name:"Wireframe (Female)"},29:{name:"Gigabowser"},30:{name:"Crazy Hand"},31:{name:"Sandbag"},32:{name:"Popo"}};const F="Default",g={id:-1,name:"Unknown Character",shortName:"Unknown",colors:[F]};function D(e,t){var r,n;return t?{id:e,name:t.name,shortName:null!=(r=t.shortName)?r:t.name,colors:[F,...null!=(n=t.colors)?n:[]]}:g}function x(e){const t=O[e.toString()];return D(e,t)}var M={__proto__:null,UnknownCharacter:g,getAllCharacters:function(){return Object.entries(O).map((([e,t])=>D(parseInt(e,10),t))).sort(((e,t)=>e.id-t.id))},getCharacterColorName:function(e,t){return x(e).colors[t]||F},getCharacterInfo:x,getCharacterName:function(e){return x(e).name},getCharacterShortName:function(e){return x(e).shortName}},G={1:{name:"Miscellaneous",shortName:"misc"},2:{name:"Jab",shortName:"jab"},3:{name:"Jab",shortName:"jab"},4:{name:"Jab",shortName:"jab"},5:{name:"Rapid Jabs",shortName:"rapid-jabs"},6:{name:"Dash Attack",shortName:"dash"},7:{name:"Forward Tilt",shortName:"ftilt"},8:{name:"Up Tilt",shortName:"utilt"},9:{name:"Down Tilt",shortName:"dtilt"},10:{name:"Forward Smash",shortName:"fsmash"},11:{name:"Up Smash",shortName:"usmash"},12:{name:"Down Smash",shortName:"dsmash"},13:{name:"Neutral Air",shortName:"nair"},14:{name:"Forward Air",shortName:"fair"},15:{name:"Back Air",shortName:"bair"},16:{name:"Up Air",shortName:"uair"},17:{name:"Down Air",shortName:"dair"},18:{name:"Neutral B",shortName:"neutral-b"},19:{name:"Side B",shortName:"side-b"},20:{name:"Up B",shortName:"up-b"},21:{name:"Down B",shortName:"down-b"},50:{name:"Getup Attack",shortName:"getup"},51:{name:"Getup Attack (Slow)",shortName:"getup-slow"},52:{name:"Grab Pummel",shortName:"pummel"},53:{name:"Forward Throw",shortName:"fthrow"},54:{name:"Back Throw",shortName:"bthrow"},55:{name:"Up Throw",shortName:"uthrow"},56:{name:"Down Throw",shortName:"dthrow"},61:{name:"Edge Attack (Slow)",shortName:"edge-slow"},62:{name:"Edge Attack",shortName:"edge"}};const L={id:-1,name:"Unknown Move",shortName:"unknown"};function B(e){const t=G[e.toString()];return t?{id:e,name:t.name,shortName:t.shortName}:L}var y={__proto__:null,UnknownMove:L,getMoveInfo:B,getMoveName:function(e){return B(e).name},getMoveShortName:function(e){return B(e).shortName}},P={2:"Fountain of Dreams",3:"Pokémon Stadium",4:"Princess Peach's Castle",5:"Kongo Jungle",6:"Brinstar",7:"Corneria",8:"Yoshi's Story",9:"Onett",10:"Mute City",11:"Rainbow Cruise",12:"Jungle Japes",13:"Great Bay",14:"Hyrule Temple",15:"Brinstar Depths",16:"Yoshi's Island",17:"Green Greens",18:"Fourside",19:"Mushroom Kingdom I",20:"Mushroom Kingdom II",22:"Venom",23:"Poké Floats",24:"Big Blue",25:"Icicle Mountain",26:"Icetop",27:"Flat Zone",28:"Dream Land N64",29:"Yoshi's Island N64",30:"Kongo Jungle N64",31:"Battlefield",32:"Final Destination",33:"Target Test (Mario)",34:"Target Test (Captain Falcon)",35:"Target Test (Young Link)",36:"Target Test (Donkey Kong)",37:"Target Test (Dr. Mario)",38:"Target Test (Falco)",39:"Target Test (Fox)",40:"Target Test (Ice Climbers)",41:"Target Test (Kirby)",42:"Target Test (Bowser)",43:"Target Test (Link)",44:"Target Test (Luigi)",45:"Target Test (Marth)",46:"Target Test (Mewtwo)",47:"Target Test (Ness)",48:"Target Test (Peach)",49:"Target Test (Pichu)",50:"Target Test (Pikachu)",51:"Target Test (Jigglypuff)",52:"Target Test (Samus)",53:"Target Test (Sheik)",54:"Target Test (Yoshi)",55:"Target Test (Zelda)",56:"Target Test (Mr. Game & Watch)",57:"Target Test (Roy)",58:"Target Test (Ganondorf)",84:"Home-Run Contest"};const U={id:-1,name:"Unknown Stage"};function H(e){const t=P[e.toString()];return t?{id:e,name:t}:U}var v,w,k,W={__proto__:null,UnknownStage:U,getStageInfo:H,getStageName:function(e){return H(e).name}};exports.Character=void 0,(v=exports.Character||(exports.Character={}))[v.CAPTAIN_FALCON=0]="CAPTAIN_FALCON",v[v.DONKEY_KONG=1]="DONKEY_KONG",v[v.FOX=2]="FOX",v[v.GAME_AND_WATCH=3]="GAME_AND_WATCH",v[v.KIRBY=4]="KIRBY",v[v.BOWSER=5]="BOWSER",v[v.LINK=6]="LINK",v[v.LUIGI=7]="LUIGI",v[v.MARIO=8]="MARIO",v[v.MARTH=9]="MARTH",v[v.MEWTWO=10]="MEWTWO",v[v.NESS=11]="NESS",v[v.PEACH=12]="PEACH",v[v.PIKACHU=13]="PIKACHU",v[v.ICE_CLIMBERS=14]="ICE_CLIMBERS",v[v.JIGGLYPUFF=15]="JIGGLYPUFF",v[v.SAMUS=16]="SAMUS",v[v.YOSHI=17]="YOSHI",v[v.ZELDA=18]="ZELDA",v[v.SHEIK=19]="SHEIK",v[v.FALCO=20]="FALCO",v[v.YOUNG_LINK=21]="YOUNG_LINK",v[v.DR_MARIO=22]="DR_MARIO",v[v.ROY=23]="ROY",v[v.PICHU=24]="PICHU",v[v.GANONDORF=25]="GANONDORF",v[v.MASTER_HAND=26]="MASTER_HAND",v[v.WIREFRAME_MALE=27]="WIREFRAME_MALE",v[v.WIREFRAME_FEMALE=28]="WIREFRAME_FEMALE",v[v.GIGA_BOWSER=29]="GIGA_BOWSER",v[v.CRAZY_HAND=30]="CRAZY_HAND",v[v.SANDBAG=31]="SANDBAG",v[v.POPO=32]="POPO",exports.Stage=void 0,(w=exports.Stage||(exports.Stage={}))[w.FOUNTAIN_OF_DREAMS=2]="FOUNTAIN_OF_DREAMS",w[w.POKEMON_STADIUM=3]="POKEMON_STADIUM",w[w.PEACHS_CASTLE=4]="PEACHS_CASTLE",w[w.KONGO_JUNGLE=5]="KONGO_JUNGLE",w[w.BRINSTAR=6]="BRINSTAR",w[w.CORNERIA=7]="CORNERIA",w[w.YOSHIS_STORY=8]="YOSHIS_STORY",w[w.ONETT=9]="ONETT",w[w.MUTE_CITY=10]="MUTE_CITY",w[w.RAINBOW_CRUISE=11]="RAINBOW_CRUISE",w[w.JUNGLE_JAPES=12]="JUNGLE_JAPES",w[w.GREAT_BAY=13]="GREAT_BAY",w[w.HYRULE_TEMPLE=14]="HYRULE_TEMPLE",w[w.BRINSTAR_DEPTHS=15]="BRINSTAR_DEPTHS",w[w.YOSHIS_ISLAND=16]="YOSHIS_ISLAND",w[w.GREEN_GREENS=17]="GREEN_GREENS",w[w.FOURSIDE=18]="FOURSIDE",w[w.MUSHROOM_KINGDOM=19]="MUSHROOM_KINGDOM",w[w.MUSHROOM_KINGDOM_2=20]="MUSHROOM_KINGDOM_2",w[w.VENOM=22]="VENOM",w[w.POKE_FLOATS=23]="POKE_FLOATS",w[w.BIG_BLUE=24]="BIG_BLUE",w[w.ICICLE_MOUNTAIN=25]="ICICLE_MOUNTAIN",w[w.ICETOP=26]="ICETOP",w[w.FLAT_ZONE=27]="FLAT_ZONE",w[w.DREAMLAND=28]="DREAMLAND",w[w.YOSHIS_ISLAND_N64=29]="YOSHIS_ISLAND_N64",w[w.KONGO_JUNGLE_N64=30]="KONGO_JUNGLE_N64",w[w.BATTLEFIELD=31]="BATTLEFIELD",w[w.FINAL_DESTINATION=32]="FINAL_DESTINATION",w[w.TARGET_TEST_MARIO=33]="TARGET_TEST_MARIO",w[w.TARGET_TEST_CAPTAIN_FALCON=34]="TARGET_TEST_CAPTAIN_FALCON",w[w.TARGET_TEST_YOUNG_LINK=35]="TARGET_TEST_YOUNG_LINK",w[w.TARGET_TEST_DONKEY_KONG=36]="TARGET_TEST_DONKEY_KONG",w[w.TARGET_TEST_DR_MARIO=37]="TARGET_TEST_DR_MARIO",w[w.TARGET_TEST_FALCO=38]="TARGET_TEST_FALCO",w[w.TARGET_TEST_FOX=39]="TARGET_TEST_FOX",w[w.TARGET_TEST_ICE_CLIMBERS=40]="TARGET_TEST_ICE_CLIMBERS",w[w.TARGET_TEST_KIRBY=41]="TARGET_TEST_KIRBY",w[w.TARGET_TEST_BOWSER=42]="TARGET_TEST_BOWSER",w[w.TARGET_TEST_LINK=43]="TARGET_TEST_LINK",w[w.TARGET_TEST_LUIGI=44]="TARGET_TEST_LUIGI",w[w.TARGET_TEST_MARTH=45]="TARGET_TEST_MARTH",w[w.TARGET_TEST_MEWTWO=46]="TARGET_TEST_MEWTWO",w[w.TARGET_TEST_NESS=47]="TARGET_TEST_NESS",w[w.TARGET_TEST_PEACH=48]="TARGET_TEST_PEACH",w[w.TARGET_TEST_PICHU=49]="TARGET_TEST_PICHU",w[w.TARGET_TEST_PIKACHU=50]="TARGET_TEST_PIKACHU",w[w.TARGET_TEST_JIGGLYPUFF=51]="TARGET_TEST_JIGGLYPUFF",w[w.TARGET_TEST_SAMUS=52]="TARGET_TEST_SAMUS",w[w.TARGET_TEST_SHEIK=53]="TARGET_TEST_SHEIK",w[w.TARGET_TEST_YOSHI=54]="TARGET_TEST_YOSHI",w[w.TARGET_TEST_ZELDA=55]="TARGET_TEST_ZELDA",w[w.TARGET_TEST_GAME_AND_WATCH=56]="TARGET_TEST_GAME_AND_WATCH",w[w.TARGET_TEST_ROY=57]="TARGET_TEST_ROY",w[w.TARGET_TEST_GANONDORF=58]="TARGET_TEST_GANONDORF",w[w.RACE_TO_THE_FINISH=82]="RACE_TO_THE_FINISH",w[w.GRAB_THE_TROPHIES=83]="GRAB_THE_TROPHIES",w[w.HOME_RUN_CONTEST=84]="HOME_RUN_CONTEST",w[w.ALL_STAR_LOBBY=85]="ALL_STAR_LOBBY",w[w.EVENT_ONE=202]="EVENT_ONE",w[w.EVENT_EIGHTEEN=203]="EVENT_EIGHTEEN",w[w.EVENT_THREE=204]="EVENT_THREE",w[w.EVENT_FOUR=205]="EVENT_FOUR",w[w.EVENT_FIVE=206]="EVENT_FIVE",w[w.EVENT_SIX=207]="EVENT_SIX",w[w.EVENT_SEVEN=208]="EVENT_SEVEN",w[w.EVENT_EIGHT=209]="EVENT_EIGHT",w[w.EVENT_NINE=210]="EVENT_NINE",w[w.EVENT_TEN_PART_ONE=211]="EVENT_TEN_PART_ONE",w[w.EVENT_ELEVEN=212]="EVENT_ELEVEN",w[w.EVENT_TWELVE=213]="EVENT_TWELVE",w[w.EVENT_THIRTEEN=214]="EVENT_THIRTEEN",w[w.EVENT_FOURTEEN=215]="EVENT_FOURTEEN",w[w.EVENT_THIRTY_SEVEN=216]="EVENT_THIRTY_SEVEN",w[w.EVENT_SIXTEEN=217]="EVENT_SIXTEEN",w[w.EVENT_SEVENTEEN=218]="EVENT_SEVENTEEN",w[w.EVENT_TWO=219]="EVENT_TWO",w[w.EVENT_NINETEEN=220]="EVENT_NINETEEN",w[w.EVENT_TWENTY_PART_ONE=221]="EVENT_TWENTY_PART_ONE",w[w.EVENT_TWENTY_ONE=222]="EVENT_TWENTY_ONE",w[w.EVENT_TWENTY_TWO=223]="EVENT_TWENTY_TWO",w[w.EVENT_TWENTY_SEVEN=224]="EVENT_TWENTY_SEVEN",w[w.EVENT_TWENTY_FOUR=225]="EVENT_TWENTY_FOUR",w[w.EVENT_TWENTY_FIVE=226]="EVENT_TWENTY_FIVE",w[w.EVENT_TWENTY_SIX=227]="EVENT_TWENTY_SIX",w[w.EVENT_TWENTY_THREE=228]="EVENT_TWENTY_THREE",w[w.EVENT_TWENTY_EIGHT=229]="EVENT_TWENTY_EIGHT",w[w.EVENT_TWENTY_NINE=230]="EVENT_TWENTY_NINE",w[w.EVENT_THIRTY_PART_ONE=231]="EVENT_THIRTY_PART_ONE",w[w.EVENT_THIRTY_ONE=232]="EVENT_THIRTY_ONE",w[w.EVENT_THIRTY_TWO=233]="EVENT_THIRTY_TWO",w[w.EVENT_THIRTY_THREE=234]="EVENT_THIRTY_THREE",w[w.EVENT_THIRTY_FOUR=235]="EVENT_THIRTY_FOUR",w[w.EVENT_FORTY_EIGHT=236]="EVENT_FORTY_EIGHT",w[w.EVENT_THIRTY_SIX_PART_ONE=237]="EVENT_THIRTY_SIX_PART_ONE",w[w.EVENT_FIFTEEN=238]="EVENT_FIFTEEN",w[w.EVENT_THIRTY_EIGHT=239]="EVENT_THIRTY_EIGHT",w[w.EVENT_THIRTY_NINE=240]="EVENT_THIRTY_NINE",w[w.EVENT_FORTY_PART_ONE=241]="EVENT_FORTY_PART_ONE",w[w.EVENT_FORTY_ONE=242]="EVENT_FORTY_ONE",w[w.EVENT_FORTY_TWO=243]="EVENT_FORTY_TWO",w[w.EVENT_FORTY_THREE=244]="EVENT_FORTY_THREE",w[w.EVENT_FORTY_FOUR=245]="EVENT_FORTY_FOUR",w[w.EVENT_FORTY_FIVE=246]="EVENT_FORTY_FIVE",w[w.EVENT_FORTY_SIX=247]="EVENT_FORTY_SIX",w[w.EVENT_FORTY_SEVEN=248]="EVENT_FORTY_SEVEN",w[w.EVENT_THIRTY_FIVE=249]="EVENT_THIRTY_FIVE",w[w.EVENT_FORTY_NINE_PART_ONE=250]="EVENT_FORTY_NINE_PART_ONE",w[w.EVENT_FIFTY=251]="EVENT_FIFTY",w[w.EVENT_FIFTY_ONE=252]="EVENT_FIFTY_ONE",w[w.EVENT_TEN_PART_TWO=253]="EVENT_TEN_PART_TWO",w[w.EVENT_TEN_PART_THREE=254]="EVENT_TEN_PART_THREE",w[w.EVENT_TEN_PART_FOUR=255]="EVENT_TEN_PART_FOUR",w[w.EVENT_TEN_PART_FIVE=256]="EVENT_TEN_PART_FIVE",w[w.EVENT_TWENTY_PART_TWO=257]="EVENT_TWENTY_PART_TWO",w[w.EVENT_TWENTY_PART_THREE=258]="EVENT_TWENTY_PART_THREE",w[w.EVENT_TWENTY_PART_FOUR=259]="EVENT_TWENTY_PART_FOUR",w[w.EVENT_TWENTY_PART_FIVE=260]="EVENT_TWENTY_PART_FIVE",w[w.EVENT_THIRTY_PART_TWO=261]="EVENT_THIRTY_PART_TWO",w[w.EVENT_THIRTY_PART_THREE=262]="EVENT_THIRTY_PART_THREE",w[w.EVENT_THIRTY_PART_FOUR=263]="EVENT_THIRTY_PART_FOUR",w[w.EVENT_FORTY_PART_TWO=264]="EVENT_FORTY_PART_TWO",w[w.EVENT_FORTY_PART_THREE=265]="EVENT_FORTY_PART_THREE",w[w.EVENT_FORTY_PART_FOUR=266]="EVENT_FORTY_PART_FOUR",w[w.EVENT_FORTY_PART_FIVE=267]="EVENT_FORTY_PART_FIVE",w[w.EVENT_FORTY_NINE_PART_TWO=268]="EVENT_FORTY_NINE_PART_TWO",w[w.EVENT_FORTY_NINE_PART_THREE=269]="EVENT_FORTY_NINE_PART_THREE",w[w.EVENT_FORTY_NINE_PART_FOUR=270]="EVENT_FORTY_NINE_PART_FOUR",w[w.EVENT_FORTY_NINE_PART_FIVE=271]="EVENT_FORTY_NINE_PART_FIVE",w[w.EVENT_FORTY_NINE_PART_SIX=272]="EVENT_FORTY_NINE_PART_SIX",w[w.EVENT_THIRTY_SIX_PART_TWO=273]="EVENT_THIRTY_SIX_PART_TWO",w[w.MULTI_MAN_MELEE=285]="MULTI_MAN_MELEE",exports.State=void 0,(k=exports.State||(exports.State={}))[k.DAMAGE_START=75]="DAMAGE_START",k[k.DAMAGE_END=91]="DAMAGE_END",k[k.CAPTURE_START=223]="CAPTURE_START",k[k.CAPTURE_END=232]="CAPTURE_END",k[k.GUARD_START=178]="GUARD_START",k[k.GUARD_END=182]="GUARD_END",k[k.GROUNDED_CONTROL_START=14]="GROUNDED_CONTROL_START",k[k.GROUNDED_CONTROL_END=24]="GROUNDED_CONTROL_END",k[k.SQUAT_START=39]="SQUAT_START",k[k.SQUAT_END=41]="SQUAT_END",k[k.DOWN_START=183]="DOWN_START",k[k.DOWN_END=198]="DOWN_END",k[k.TECH_START=199]="TECH_START",k[k.TECH_END=204]="TECH_END",k[k.DYING_START=0]="DYING_START",k[k.DYING_END=10]="DYING_END",k[k.CONTROLLED_JUMP_START=24]="CONTROLLED_JUMP_START",k[k.CONTROLLED_JUMP_END=34]="CONTROLLED_JUMP_END",k[k.GROUND_ATTACK_START=44]="GROUND_ATTACK_START",k[k.GROUND_ATTACK_END=64]="GROUND_ATTACK_END",k[k.AERIAL_ATTACK_START=65]="AERIAL_ATTACK_START",k[k.AERIAL_ATTACK_END=74]="AERIAL_ATTACK_END",k[k.ATTACK_FTILT_START=51]="ATTACK_FTILT_START",k[k.ATTACK_FTILT_END=55]="ATTACK_FTILT_END",k[k.ATTACK_FSMASH_START=58]="ATTACK_FSMASH_START",k[k.ATTACK_FSMASH_END=62]="ATTACK_FSMASH_END",k[k.ROLL_FORWARD=233]="ROLL_FORWARD",k[k.ROLL_BACKWARD=234]="ROLL_BACKWARD",k[k.SPOT_DODGE=235]="SPOT_DODGE",k[k.AIR_DODGE=236]="AIR_DODGE",k[k.ACTION_WAIT=14]="ACTION_WAIT",k[k.ACTION_DASH=20]="ACTION_DASH",k[k.ACTION_KNEE_BEND=24]="ACTION_KNEE_BEND",k[k.GUARD_ON=178]="GUARD_ON",k[k.TECH_MISS_UP=183]="TECH_MISS_UP",k[k.JAB_RESET_UP=185]="JAB_RESET_UP",k[k.TECH_MISS_DOWN=191]="TECH_MISS_DOWN",k[k.JAB_RESET_DOWN=193]="JAB_RESET_DOWN",k[k.NEUTRAL_TECH=199]="NEUTRAL_TECH",k[k.FORWARD_TECH=200]="FORWARD_TECH",k[k.BACKWARD_TECH=201]="BACKWARD_TECH",k[k.WALL_TECH=202]="WALL_TECH",k[k.MISSED_WALL_TECH=247]="MISSED_WALL_TECH",k[k.DASH=20]="DASH",k[k.TURN=18]="TURN",k[k.LANDING_FALL_SPECIAL=43]="LANDING_FALL_SPECIAL",k[k.JUMP_FORWARD=25]="JUMP_FORWARD",k[k.JUMP_BACKWARD=26]="JUMP_BACKWARD",k[k.FALL_FORWARD=30]="FALL_FORWARD",k[k.FALL_BACKWARD=31]="FALL_BACKWARD",k[k.GRAB=212]="GRAB",k[k.DASH_GRAB=214]="DASH_GRAB",k[k.GRAB_WAIT=216]="GRAB_WAIT",k[k.PUMMEL=217]="PUMMEL",k[k.CLIFF_CATCH=252]="CLIFF_CATCH",k[k.THROW_UP=221]="THROW_UP",k[k.THROW_FORWARD=219]="THROW_FORWARD",k[k.THROW_DOWN=222]="THROW_DOWN",k[k.THROW_BACK=220]="THROW_BACK",k[k.DAMAGE_FALL=38]="DAMAGE_FALL",k[k.ATTACK_JAB1=44]="ATTACK_JAB1",k[k.ATTACK_JAB2=45]="ATTACK_JAB2",k[k.ATTACK_JAB3=46]="ATTACK_JAB3",k[k.ATTACK_JABM=47]="ATTACK_JABM",k[k.ATTACK_DASH=50]="ATTACK_DASH",k[k.ATTACK_UTILT=56]="ATTACK_UTILT",k[k.ATTACK_DTILT=57]="ATTACK_DTILT",k[k.ATTACK_USMASH=63]="ATTACK_USMASH",k[k.ATTACK_DSMASH=64]="ATTACK_DSMASH",k[k.AERIAL_NAIR=65]="AERIAL_NAIR",k[k.AERIAL_FAIR=66]="AERIAL_FAIR",k[k.AERIAL_BAIR=67]="AERIAL_BAIR",k[k.AERIAL_UAIR=68]="AERIAL_UAIR",k[k.AERIAL_DAIR=69]="AERIAL_DAIR",k[k.GNW_JAB1=341]="GNW_JAB1",k[k.GNW_JABM=342]="GNW_JABM",k[k.GNW_DTILT=345]="GNW_DTILT",k[k.GNW_FSMASH=346]="GNW_FSMASH",k[k.GNW_NAIR=347]="GNW_NAIR",k[k.GNW_BAIR=348]="GNW_BAIR",k[k.GNW_UAIR=349]="GNW_UAIR",k[k.PEACH_FSMASH1=349]="PEACH_FSMASH1",k[k.PEACH_FSMASH2=350]="PEACH_FSMASH2",k[k.PEACH_FSMASH3=351]="PEACH_FSMASH3",k[k.BARREL_WAIT=293]="BARREL_WAIT",k[k.COMMAND_GRAB_RANGE1_START=266]="COMMAND_GRAB_RANGE1_START",k[k.COMMAND_GRAB_RANGE1_END=304]="COMMAND_GRAB_RANGE1_END",k[k.COMMAND_GRAB_RANGE2_START=327]="COMMAND_GRAB_RANGE2_START",k[k.COMMAND_GRAB_RANGE2_END=338]="COMMAND_GRAB_RANGE2_END";const V={PUNISH_RESET_FRAMES:45,RECOVERY_RESET_FRAMES:45,COMBO_STRING_RESET_FRAMES:45};function Y(e){return e&&2===e.players.length?[{playerIndex:e.players[0].playerIndex,opponentIndex:e.players[1].playerIndex},{playerIndex:e.players[1].playerIndex,opponentIndex:e.players[0].playerIndex}]:[]}function b(e,t){return!(!e||!t)&&t.stocksRemaining-e.stocksRemaining>0}function K(e){const t=e>=exports.State.GROUNDED_CONTROL_START&&e<=exports.State.GROUNDED_CONTROL_END,r=e>=exports.State.SQUAT_START&&e<=exports.State.SQUAT_END,n=e>exports.State.GROUND_ATTACK_START&&e<=exports.State.GROUND_ATTACK_END,s=e===exports.State.GRAB;return t||r||n||s}function J(e){return e>=exports.State.TECH_START&&e<=exports.State.TECH_END}function X(e){return e>=exports.State.DOWN_START&&e<=exports.State.DOWN_END}function j(e){return e>=exports.State.DAMAGE_START&&e<=exports.State.DAMAGE_END||e===exports.State.DAMAGE_FALL||e===exports.State.JAB_RESET_UP||e===exports.State.JAB_RESET_DOWN}function z(e){return e>=exports.State.CAPTURE_START&&e<=exports.State.CAPTURE_END}function $(e){return(e>=exports.State.COMMAND_GRAB_RANGE1_START&&e<=exports.State.COMMAND_GRAB_RANGE1_END||e>=exports.State.COMMAND_GRAB_RANGE2_START&&e<=exports.State.COMMAND_GRAB_RANGE2_END)&&e!==exports.State.BARREL_WAIT}function q(e){return e>=exports.State.DYING_START&&e<=exports.State.DYING_END}function Z(e,t){var r,n;return(null!=(r=e.percent)?r:0)-(null!=(n=t.percent)?n:0)}const Q=[exports.State.DASH,exports.State.TURN,exports.State.DASH];class ee{constructor(){this.playerPermutations=new Array,this.state=new Map}setup(e){this.state=new Map,this.playerPermutations=Y(e),this.playerPermutations.forEach((e=>{this.state.set(e,{playerCounts:{playerIndex:e.playerIndex,wavedashCount:0,wavelandCount:0,airDodgeCount:0,dashDanceCount:0,spotDodgeCount:0,ledgegrabCount:0,rollCount:0,lCancelCount:{success:0,fail:0},attackCount:{jab1:0,jab2:0,jab3:0,jabm:0,dash:0,ftilt:0,utilt:0,dtilt:0,fsmash:0,usmash:0,dsmash:0,nair:0,fair:0,bair:0,uair:0,dair:0},grabCount:{success:0,fail:0},throwCount:{up:0,forward:0,back:0,down:0},groundTechCount:{away:0,in:0,neutral:0,fail:0},wallTechCount:{success:0,fail:0}},animations:[],actionFrameCounters:[]})}))}processFrame(a){this.playerPermutations.forEach((i=>{const E=this.state.get(i);E&&function(a,i,E){const l=E.players[i.playerIndex].post,T=E.players[i.opponentIndex].post,c=(t,r)=>{if(!r)return;const n=e(a.playerCounts,t,0);s(a.playerCounts,t,n+1)},u=l.actionStateId;a.animations.push(u);const _=l.actionStateCounter;a.actionFrameCounters.push(_);const p=a.animations.slice(-3),m=p[p.length-2];if(!(u!==m||a.actionFrameCounters[a.actionFrameCounters.length-2]>_))return;var A;c("dashDanceCount",t(p,Q)),c("rollCount",(A=u)===exports.State.ROLL_BACKWARD||A===exports.State.ROLL_FORWARD),c("spotDodgeCount",u===exports.State.SPOT_DODGE),c("airDodgeCount",u===exports.State.AIR_DODGE),c("ledgegrabCount",u===exports.State.CLIFF_CATCH),c("grabCount.success",re(m)&&te(u)),c("grabCount.fail",re(m)&&!te(u)),u===exports.State.DASH_GRAB&&m===exports.State.ATTACK_DASH&&(a.playerCounts.attackCount.dash-=1),c("attackCount.jab1",u===exports.State.ATTACK_JAB1),c("attackCount.jab2",u===exports.State.ATTACK_JAB2),c("attackCount.jab3",u===exports.State.ATTACK_JAB3),c("attackCount.jabm",u===exports.State.ATTACK_JABM),c("attackCount.dash",u===exports.State.ATTACK_DASH),c("attackCount.ftilt",function(e){return e>=exports.State.ATTACK_FTILT_START&&e<=exports.State.ATTACK_FTILT_END}(u)),c("attackCount.utilt",u===exports.State.ATTACK_UTILT),c("attackCount.dtilt",u===exports.State.ATTACK_DTILT),c("attackCount.fsmash",function(e){return e>=exports.State.ATTACK_FSMASH_START&&e<=exports.State.ATTACK_FSMASH_END}(u)),c("attackCount.usmash",u===exports.State.ATTACK_USMASH),c("attackCount.dsmash",u===exports.State.ATTACK_DSMASH),c("attackCount.nair",u===exports.State.AERIAL_NAIR),c("attackCount.fair",u===exports.State.AERIAL_FAIR),c("attackCount.bair",u===exports.State.AERIAL_BAIR),c("attackCount.uair",u===exports.State.AERIAL_UAIR),c("attackCount.dair",u===exports.State.AERIAL_DAIR),24===l.internalCharacterId&&(c("attackCount.jab1",u===exports.State.GNW_JAB1),c("attackCount.jabm",u===exports.State.GNW_JABM),c("attackCount.dtilt",u===exports.State.GNW_DTILT),c("attackCount.fsmash",u===exports.State.GNW_FSMASH),c("attackCount.nair",u===exports.State.GNW_NAIR),c("attackCount.bair",u===exports.State.GNW_BAIR),c("attackCount.uair",u===exports.State.GNW_UAIR)),9===l.internalCharacterId&&(c("attackCount.fsmash",u===exports.State.PEACH_FSMASH1),c("attackCount.fsmash",u===exports.State.PEACH_FSMASH2),c("attackCount.fsmash",u===exports.State.PEACH_FSMASH3)),c("throwCount.up",u===exports.State.THROW_UP),c("throwCount.forward",u===exports.State.THROW_FORWARD),c("throwCount.down",u===exports.State.THROW_DOWN),c("throwCount.back",u===exports.State.THROW_BACK);const h=l.facingDirection===(l.positionX>T.positionX?-1:1);c("groundTechCount.fail",function(e){return e===exports.State.TECH_MISS_DOWN||e===exports.State.TECH_MISS_UP}(u)),c("groundTechCount.in",u===exports.State.FORWARD_TECH&&h),c("groundTechCount.in",u===exports.State.BACKWARD_TECH&&!h),c("groundTechCount.neutral",u===exports.State.NEUTRAL_TECH),c("groundTechCount.away",u===exports.State.BACKWARD_TECH&&h),c("groundTechCount.away",u===exports.State.FORWARD_TECH&&!h),c("wallTechCount.success",u===exports.State.WALL_TECH),c("wallTechCount.fail",u===exports.State.MISSED_WALL_TECH),function(e){return e>=exports.State.AERIAL_ATTACK_START&&e<=exports.State.AERIAL_ATTACK_END}(u)&&(c("lCancelCount.success",1===l.lCancelStatus),c("lCancelCount.fail",2===l.lCancelStatus)),function(e,t){const s=n(t)===exports.State.LANDING_FALL_SPECIAL,a=function(e){if(e===exports.State.AIR_DODGE)return!0;const t=e>=exports.State.CONTROLLED_JUMP_START,r=e<=exports.State.CONTROLLED_JUMP_END;return t&&r}(t[t.length-2]);if(!s||!a)return;const i=t.slice(-8),E=r(i,(e=>e));2===o(E)&&E[exports.State.AIR_DODGE]||(E[exports.State.AIR_DODGE]&&(e.airDodgeCount-=1),E[exports.State.ACTION_KNEE_BEND]?e.wavedashCount+=1:e.wavelandCount+=1)}(a.playerCounts,a.animations)}(E,i,a)}))}fetch(){return Array.from(this.state.values()).map((e=>e.playerCounts))}}function te(e){return e>exports.State.GRAB&&e<=exports.State.THROW_DOWN&&e!==exports.State.DASH_GRAB}function re(e){return e===exports.State.GRAB||e===exports.State.DASH_GRAB}var ne,se,oe,ae,ie,Ee,le,Te,ce,ue,_e,pe,me,Ae;!function(e){e.COMBO_START="COMBO_START",e.COMBO_EXTEND="COMBO_EXTEND",e.COMBO_END="COMBO_END"}(ne||(ne={}));class he extends a.EventEmitter{constructor(...e){super(...e),this.playerPermutations=new Array,this.state=new Map,this.combos=new Array,this.settings=null}setup(e){this.settings=e,this.state=new Map,this.combos=[],this.playerPermutations=Y(e),this.playerPermutations.forEach((e=>{this.state.set(e,{combo:null,move:null,resetCounter:0,lastHitAnimation:null,event:null})}))}processFrame(e,t){this.playerPermutations.forEach((r=>{const s=this.state.get(r);s&&(function(e,t,r,n,s){const o=n.frame,a=n.players[r.playerIndex].post,i=n.players[r.opponentIndex].post,E=o-1;let l=null,T=null;e[E]&&(l=e[E].players[r.playerIndex].post,T=e[E].players[r.opponentIndex].post);const c=i.actionStateId,u=j(c),_=z(c),p=$(c),m=T?Z(i,T):0;if((a.actionStateId!==t.lastHitAnimation||a.actionStateCounter<(l?l.actionStateCounter:0))&&(t.lastHitAnimation=null),u||_||p){let e=!1;var A,h;t.combo||(t.combo={playerIndex:r.opponentIndex,startFrame:o,endFrame:null,startPercent:T&&null!=(A=T.percent)?A:0,currentPercent:null!=(h=i.percent)?h:0,endPercent:null,moves:[],didKill:!1,lastHitBy:r.playerIndex},s.push(t.combo),e=!0),m&&(null===t.lastHitAnimation&&(t.move={playerIndex:r.playerIndex,frame:o,moveId:a.lastAttackLanded,hitCount:0,damage:0},t.combo.moves.push(t.move),e||(t.event=ne.COMBO_EXTEND)),t.move&&(t.move.hitCount+=1,t.move.damage+=m),t.lastHitAnimation=l?l.actionStateId:null),e&&(t.event=ne.COMBO_START)}if(!t.combo)return;const S=J(c),N=X(c),R=T&&b(i,T),d=q(c);var f;R||(t.combo.currentPercent=null!=(f=i.percent)?f:0),u||_||p||S||N||d?t.resetCounter=0:t.resetCounter+=1;let I=!1;var C;R&&(t.combo.didKill=!0,I=!0),t.resetCounter>V.COMBO_STRING_RESET_FRAMES&&(I=!0),I&&(t.combo.endFrame=a.frame,t.combo.endPercent=T&&null!=(C=T.percent)?C:0,t.event=ne.COMBO_END,t.combo=null,t.move=null)}(t,s,r,e,this.combos),null!==s.event&&(this.emit(s.event,{combo:n(this.combos),settings:this.settings}),s.event=null))}))}fetch(){return this.combos}}class Se extends a.EventEmitter{constructor(){super(),this.playerPermutations=new Array,this.conversions=new Array,this.state=new Map,this.metadata=void 0,this.settings=null,this.metadata={lastEndFrameByOppIdx:{}}}setup(e){this.playerPermutations=Y(e),this.conversions=[],this.state=new Map,this.metadata={lastEndFrameByOppIdx:{}},this.settings=e,this.playerPermutations.forEach((e=>{this.state.set(e,{conversion:null,move:null,resetCounter:0,lastHitAnimation:null})}))}processFrame(e,t){this.playerPermutations.forEach((r=>{const s=this.state.get(r);if(s){const o=function(e,t,r,n,s){const o=n.frame,a=n.players[r.playerIndex].post,i=n.players[r.opponentIndex].post,E=o-1;let l=null,T=null;e[E]&&(l=e[E].players[r.playerIndex].post,T=e[E].players[r.opponentIndex].post);const c=i.actionStateId,u=j(c),_=z(c),p=$(c),m=T?Z(i,T):0;var A,h;if((a.actionStateId!==t.lastHitAnimation||a.actionStateCounter<(l?l.actionStateCounter:0))&&(t.lastHitAnimation=null),(u||_||p)&&(t.conversion||(t.conversion={playerIndex:r.opponentIndex,lastHitBy:r.playerIndex,startFrame:o,endFrame:null,startPercent:T&&null!=(A=T.percent)?A:0,currentPercent:null!=(h=i.percent)?h:0,endPercent:null,moves:[],didKill:!1,openingType:"unknown"},s.push(t.conversion)),m&&(null===t.lastHitAnimation&&(t.move={playerIndex:r.playerIndex,frame:o,moveId:a.lastAttackLanded,hitCount:0,damage:0},t.conversion.moves.push(t.move)),t.move&&(t.move.hitCount+=1,t.move.damage+=m),t.lastHitAnimation=l?l.actionStateId:null)),!t.conversion)return!1;const S=K(c),N=T&&b(i,T);var R;N||(t.conversion.currentPercent=null!=(R=i.percent)?R:0),(u||_||p)&&(t.resetCounter=0),(0===t.resetCounter&&S||t.resetCounter>0)&&(t.resetCounter+=1);let d=!1;var f;return N&&(t.conversion.didKill=!0,d=!0),t.resetCounter>V.PUNISH_RESET_FRAMES&&(d=!0),d&&(t.conversion.endFrame=a.frame,t.conversion.endPercent=T&&null!=(f=T.percent)?f:0,t.conversion=null,t.move=null),d}(t,s,r,e,this.conversions);o&&this.emit("CONVERSION",{combo:n(this.conversions),settings:this.settings})}}))}fetch(){return this._populateConversionTypes(),this.conversions}_populateConversionTypes(){const t=i(this.conversions,(e=>"unknown"===e.openingType)),r=E(t,"startFrame");l(r,(t=>e(t,[0,"startFrame"]))).forEach((e=>{const t=e.length>=2;e.forEach((e=>{if(this.metadata.lastEndFrameByOppIdx[e.playerIndex]=e.endFrame,t)return void(e.openingType="trade");const r=n(e.moves),s=this.metadata.lastEndFrameByOppIdx[r?r.playerIndex:e.playerIndex];e.openingType=s&&s>e.startFrame?"counter-attack":"neutral-win"}))}))}}exports.Command=void 0,(se=exports.Command||(exports.Command={}))[se.SPLIT_MESSAGE=16]="SPLIT_MESSAGE",se[se.MESSAGE_SIZES=53]="MESSAGE_SIZES",se[se.GAME_START=54]="GAME_START",se[se.PRE_FRAME_UPDATE=55]="PRE_FRAME_UPDATE",se[se.POST_FRAME_UPDATE=56]="POST_FRAME_UPDATE",se[se.GAME_END=57]="GAME_END",se[se.FRAME_START=58]="FRAME_START",se[se.ITEM_UPDATE=59]="ITEM_UPDATE",se[se.FRAME_BOOKEND=60]="FRAME_BOOKEND",se[se.GECKO_LIST=61]="GECKO_LIST",se[se.FOD_PLATFORM=63]="FOD_PLATFORM",se[se.WHISPY=64]="WHISPY",se[se.STADIUM_TRANSFORMATION=65]="STADIUM_TRANSFORMATION",exports.GameMode=void 0,(oe=exports.GameMode||(exports.GameMode={}))[oe.VS=2]="VS",oe[oe.ONLINE=8]="ONLINE",oe[oe.TARGET_TEST=15]="TARGET_TEST",oe[oe.HOME_RUN_CONTEST=32]="HOME_RUN_CONTEST",exports.Language=void 0,(ae=exports.Language||(exports.Language={}))[ae.JAPANESE=0]="JAPANESE",ae[ae.ENGLISH=1]="ENGLISH",exports.TimerType=void 0,(ie=exports.TimerType||(exports.TimerType={}))[ie.NONE=0]="NONE",ie[ie.DECREASING=2]="DECREASING",ie[ie.INCREASING=3]="INCREASING",exports.ItemSpawnType=void 0,(Ee=exports.ItemSpawnType||(exports.ItemSpawnType={}))[Ee.OFF=255]="OFF",Ee[Ee.VERY_LOW=0]="VERY_LOW",Ee[Ee.LOW=1]="LOW",Ee[Ee.MEDIUM=2]="MEDIUM",Ee[Ee.HIGH=3]="HIGH",Ee[Ee.VERY_HIGH=4]="VERY_HIGH",exports.EnabledItemType=void 0,(le=exports.EnabledItemType||(exports.EnabledItemType={}))[le.METAL_BOX=1]="METAL_BOX",le[le.CLOAKING_DEVICE=2]="CLOAKING_DEVICE",le[le.POKEBALL=4]="POKEBALL",le[le.UNKNOWN_ITEM_BIT_4=8]="UNKNOWN_ITEM_BIT_4",le[le.UNKNOWN_ITEM_BIT_5=16]="UNKNOWN_ITEM_BIT_5",le[le.UNKNOWN_ITEM_BIT_6=32]="UNKNOWN_ITEM_BIT_6",le[le.UNKNOWN_ITEM_BIT_7=64]="UNKNOWN_ITEM_BIT_7",le[le.UNKNOWN_ITEM_BIT_8=128]="UNKNOWN_ITEM_BIT_8",le[le.FAN=256]="FAN",le[le.FIRE_FLOWER=512]="FIRE_FLOWER",le[le.SUPER_MUSHROOM=1024]="SUPER_MUSHROOM",le[le.POISON_MUSHROOM=2048]="POISON_MUSHROOM",le[le.HAMMER=4096]="HAMMER",le[le.WARP_STAR=8192]="WARP_STAR",le[le.SCREW_ATTACK=16384]="SCREW_ATTACK",le[le.BUNNY_HOOD=32768]="BUNNY_HOOD",le[le.RAY_GUN=65536]="RAY_GUN",le[le.FREEZIE=131072]="FREEZIE",le[le.FOOD=262144]="FOOD",le[le.MOTION_SENSOR_BOMB=524288]="MOTION_SENSOR_BOMB",le[le.FLIPPER=1048576]="FLIPPER",le[le.SUPER_SCOPE=2097152]="SUPER_SCOPE",le[le.STAR_ROD=4194304]="STAR_ROD",le[le.LIPS_STICK=8388608]="LIPS_STICK",le[le.HEART_CONTAINER=16777216]="HEART_CONTAINER",le[le.MAXIM_TOMATO=33554432]="MAXIM_TOMATO",le[le.STARMAN=67108864]="STARMAN",le[le.HOME_RUN_BAT=134217728]="HOME_RUN_BAT",le[le.BEAM_SWORD=268435456]="BEAM_SWORD",le[le.PARASOL=536870912]="PARASOL",le[le.GREEN_SHELL=1073741824]="GREEN_SHELL",le[le.RED_SHELL=2147483648]="RED_SHELL",le[le.CAPSULE=4294967296]="CAPSULE",le[le.BOX=8589934592]="BOX",le[le.BARREL=17179869184]="BARREL",le[le.EGG=34359738368]="EGG",le[le.PARTY_BALL=68719476736]="PARTY_BALL",le[le.BARREL_CANNON=137438953472]="BARREL_CANNON",le[le.BOMB_OMB=274877906944]="BOMB_OMB",le[le.MR_SATURN=549755813888]="MR_SATURN",exports.GameEndMethod=void 0,(Te=exports.GameEndMethod||(exports.GameEndMethod={}))[Te.UNRESOLVED=0]="UNRESOLVED",Te[Te.RESOLVED=3]="RESOLVED",Te[Te.TIME=1]="TIME",Te[Te.GAME=2]="GAME",Te[Te.NO_CONTEST=7]="NO_CONTEST",exports.FodPlatformSide=void 0,(ce=exports.FodPlatformSide||(exports.FodPlatformSide={}))[ce.RIGHT=0]="RIGHT",ce[ce.LEFT=1]="LEFT",exports.WhispyBlowDirection=void 0,(ue=exports.WhispyBlowDirection||(exports.WhispyBlowDirection={}))[ue.NONE=0]="NONE",ue[ue.LEFT=1]="LEFT",ue[ue.RIGHT=2]="RIGHT",exports.StadiumTransformation=void 0,(_e=exports.StadiumTransformation||(exports.StadiumTransformation={}))[_e.FIRE=3]="FIRE",_e[_e.GRASS=4]="GRASS",_e[_e.NORMAL=5]="NORMAL",_e[_e.ROCK=6]="ROCK",_e[_e.WATER=9]="WATER",exports.StadiumTransformationEvent=void 0,(pe=exports.StadiumTransformationEvent||(exports.StadiumTransformationEvent={}))[pe.INITIATE=2]="INITIATE",pe[pe.ON_MONITOR=3]="ON_MONITOR",pe[pe.RECEDING=4]="RECEDING",pe[pe.RISING=5]="RISING",pe[pe.FINISH=6]="FINISH",exports.Frames=void 0,(me=exports.Frames||(exports.Frames={}))[me.FIRST=-123]="FIRST",me[me.FIRST_PLAYABLE=-39]="FIRST_PLAYABLE",function(e){e[e.DZ=0]="DZ",e[e.NE=1]="NE",e[e.SE=2]="SE",e[e.SW=3]="SW",e[e.NW=4]="NW",e[e.N=5]="N",e[e.E=6]="E",e[e.S=7]="S",e[e.W=8]="W"}(Ae||(Ae={}));class Ne{constructor(){this.state=new Map,this.playerPermutations=new Array}setup(e){this.state=new Map,this.playerPermutations=Y(e),this.playerPermutations.forEach((e=>{this.state.set(e,{playerIndex:e.playerIndex,opponentIndex:e.opponentIndex,inputCount:0,joystickInputCount:0,cstickInputCount:0,buttonInputCount:0,triggerInputCount:0})}))}processFrame(e,t){this.playerPermutations.forEach((r=>{const n=this.state.get(r);n&&function(e,t,r,n){const s=n.players[r.playerIndex].pre,o=s.frame,a=o-1,i=e[a]?e[a].players[r.playerIndex].pre:null;if(o<exports.Frames.FIRST_PLAYABLE||!i)return;const E=function(e){let t,r=e;for(t=0;r;t+=1)r&=r-1;return t}(~i.physicalButtons&s.physicalButtons&4095);t.inputCount+=E,t.buttonInputCount+=E;const l=Re(i.joystickX,i.joystickY),T=Re(s.joystickX,s.joystickY);l!==T&&T!==Ae.DZ&&(t.inputCount+=1,t.joystickInputCount+=1);const c=Re(i.cStickX,i.cStickY),u=Re(s.cStickX,s.cStickY);c!==u&&u!==Ae.DZ&&(t.inputCount+=1,t.cstickInputCount+=1),i.physicalLTrigger<.3&&s.physicalLTrigger>=.3&&(t.inputCount+=1,t.triggerInputCount+=1),i.physicalRTrigger<.3&&s.physicalRTrigger>=.3&&(t.inputCount+=1,t.triggerInputCount+=1)}(t,n,r,e)}))}fetch(){return Array.from(this.state.values())}}function Re(e,t){let r=Ae.DZ;return e>=.2875&&t>=.2875?r=Ae.NE:e>=.2875&&t<=-.2875?r=Ae.SE:e<=-.2875&&t<=-.2875?r=Ae.SW:e<=-.2875&&t>=.2875?r=Ae.NW:t>=.2875?r=Ae.N:e>=.2875?r=Ae.E:t<=-.2875?r=Ae.S:e<=-.2875&&(r=Ae.W),r}function de({settings:t,inputs:n,conversions:s,playableFrameCount:o}){const a=r(n,"playerIndex"),i=s,l=E(s,(e=>{var t;return null==(t=e.moves[0])?void 0:t.playerIndex})),T=u(l,(e=>E(e,"openingType"))),c=o/3600;return t.players.map((r=>{const n=r.playerIndex,s=e(a,n)||{},o={buttons:e(s,"buttonInputCount"),triggers:e(s,"triggerInputCount"),cstick:e(s,"cstickInputCount"),joystick:e(s,"joystickInputCount"),total:e(s,"inputCount")};let E=0,l=0;const u=t.players.filter((e=>e.playerIndex!==n&&(!t.isTeams||e.teamId!==r.teamId))).map((e=>e.playerIndex));let _=0,p=0;return i.filter((e=>e.playerIndex!==n)).forEach((e=>{E++,e.didKill&&e.lastHitBy===n&&(p+=1),e.moves.length>1&&e.moves[0].playerIndex===n&&l++,e.moves.forEach((e=>{e.playerIndex===n&&(_+=e.damage)}))})),{playerIndex:n,inputCounts:o,conversionCount:E,totalDamage:_,killCount:p,successfulConversions:fe(l,E),inputsPerMinute:fe(o.total,c),digitalInputsPerMinute:fe(o.buttons,c),openingsPerKill:fe(E,p),damagePerOpening:fe(_,E),neutralWinRatio:Ie(T,n,u,"neutral-win"),counterHitRatio:Ie(T,n,u,"counter-attack"),beneficialTradeRatio:Ce(T,n,u)}}))}function fe(e,t){return{count:e,total:t,ratio:t?e/t:null}}function Ie(t,r,n,s){const o=e(t,[r,s])||[],a=c(n.map((r=>e(t,[r,s])||[])));return fe(o.length,o.length+a.length)}function Ce(t,r,s){const o=e(t,[r,"trade"])||[],a=c(s.map((r=>e(t,[r,"trade"])||[]))),i=[];return _(o,a).forEach((e=>{const t=T(e),r=n(e);t&&r&&(t.didKill&&!r.didKill||t.currentPercent-t.startPercent>r.currentPercent-r.startPercent)&&i.push(t)})),fe(i.length,o.length)}const Oe={processOnTheFly:!1};class Fe{constructor(e){this.options=void 0,this.lastProcessedFrame=null,this.frames={},this.players=[],this.allComputers=new Array,this.options=Object.assign({},Oe,e)}setup(e){this.frames={},this.players=e.players.map((e=>e.playerIndex)),this.allComputers.forEach((t=>t.setup(e)))}register(...e){this.allComputers.push(...e)}process(){if(0===this.players.length)return;let e=null!==this.lastProcessedFrame?this.lastProcessedFrame+1:exports.Frames.FIRST;for(;this.frames[e];){const t=this.frames[e];if(!ge(this.players,t))return;this.allComputers.forEach((e=>e.processFrame(t,this.frames))),this.lastProcessedFrame=e,e++}}addFrame(e){this.frames[e.frame]=e,this.options.processOnTheFly&&this.process()}}function ge(t,r){if(!r)return!1;for(const n of t)if(!e(r,["players",n,"post"]))return!1;return!0}class De{constructor(){this.state=new Map,this.playerPermutations=new Array,this.stocks=new Array}setup(e){this.state=new Map,this.playerPermutations=Y(e),this.stocks=[],this.playerPermutations.forEach((e=>{this.state.set(e,{stock:null})}))}processFrame(e,t){this.playerPermutations.forEach((r=>{const n=this.state.get(r);n&&function(e,t,r,n,s){const o=n.players[r.playerIndex].post,a=o.frame,i=a-1,E=e[i]?e[i].players[r.playerIndex].post:null;if(t.stock)if(E&&b(o,E)){var l;t.stock.endFrame=o.frame,t.stock.endPercent=null!=(l=E.percent)?l:0,t.stock.deathAnimation=o.actionStateId,t.stock=null}else{var T;t.stock.currentPercent=null!=(T=o.percent)?T:0}else{if(q(o.actionStateId))return;t.stock={playerIndex:r.playerIndex,startFrame:a,endFrame:null,startPercent:0,endPercent:null,currentPercent:0,count:o.stocksRemaining,deathAnimation:null},s.push(t.stock)}}(t,n,r,e,this.stocks)}))}fetch(){return this.stocks}}function xe(e){return null!=e}class Me{constructor(){this.targetBreaks=new Array,this.isTargetTestGame=!1}setup(e){this.targetBreaks=[],this.isTargetTestGame=e.gameMode===exports.GameMode.TARGET_TEST}processFrame(e,t){this.isTargetTestGame&&function(e,t,r){var n,s,o,a;const i=t.frame,E=i-1;var l,T;i===exports.Frames.FIRST&&(null!=(l=null==(T=e[exports.Frames.FIRST])||null==(T=T.items)?void 0:T.filter((e=>209===e.typeId)))?l:[]).forEach((e=>{r.push({spawnId:e.spawnId,frameDestroyed:null,positionX:e.positionX,positionY:e.positionY})}));const c=null!=(n=null==(s=e[i])||null==(s=s.items)?void 0:s.filter((e=>209===e.typeId)))?n:[],u=null!=(o=null==(a=e[E])||null==(a=a.items)?void 0:a.filter((e=>209===e.typeId)))?o:[],_=c.map((e=>e.spawnId)).filter(xe);u.map((e=>e.spawnId)).filter(xe).filter((e=>!_.includes(e))).forEach((e=>{const t=r.find((t=>t.spawnId===e));t&&(t.frameDestroyed=i)}))}(t,e,this.targetBreaks)}fetch(){return this.targetBreaks}}var Ge,Le,Be,ye;exports.CommunicationType=void 0,(Ge=exports.CommunicationType||(exports.CommunicationType={}))[Ge.HANDSHAKE=1]="HANDSHAKE",Ge[Ge.REPLAY=2]="REPLAY",Ge[Ge.KEEP_ALIVE=3]="KEEP_ALIVE";class Pe{constructor(){this.receiveBuf=Buffer.from([]),this.messages=new Array}receive(e){for(this.receiveBuf=Buffer.concat([this.receiveBuf,e]);this.receiveBuf.length>=4;){const e=this.receiveBuf.readUInt32BE(0);if(this.receiveBuf.length<e+4)return;const t=this.receiveBuf.slice(4,e+4);this.messages.push(S.decode(t.buffer)),this.receiveBuf=this.receiveBuf.slice(e+4)}}getReceiveBuffer(){return this.receiveBuf}getMessages(){const e=this.messages;return this.messages=[],e}genHandshakeOut(e,t,r=!1){const n=Buffer.from([0,0,0,0]);n.writeUInt32BE(t,0);const s={type:exports.CommunicationType.HANDSHAKE,payload:{cursor:e,clientToken:Uint8Array.from(n),isRealtime:r}},o=S.encode(s,{optimizeArrays:!0}),a=Buffer.concat([Buffer.from([0,0,0,0]),Buffer.from(o)]);return a.writeUInt32BE(o.byteLength,0),a}}exports.ConnectionEvent=void 0,(Le=exports.ConnectionEvent||(exports.ConnectionEvent={})).CONNECT="connect",Le.MESSAGE="message",Le.HANDSHAKE="handshake",Le.STATUS_CHANGE="statusChange",Le.DATA="data",Le.ERROR="error",exports.ConnectionStatus=void 0,(Be=exports.ConnectionStatus||(exports.ConnectionStatus={}))[Be.DISCONNECTED=0]="DISCONNECTED",Be[Be.CONNECTING=1]="CONNECTING",Be[Be.CONNECTED=2]="CONNECTED",Be[Be.RECONNECT_WAIT=3]="RECONNECT_WAIT",exports.Ports=void 0,(ye=exports.Ports||(exports.Ports={}))[ye.DEFAULT=51441]="DEFAULT",ye[ye.LEGACY=666]="LEGACY",ye[ye.RELAY_START=53741]="RELAY_START";const Ue="HELO\0";var He;!function(e){e.INITIAL="initial",e.LEGACY="legacy",e.NORMAL="normal"}(He||(He={}));const ve={consoleNick:"unknown",gameDataCursor:Uint8Array.from([0,0,0,0,0,0,0,0]),version:"",clientToken:0},we={autoReconnect:!0};var ke,We,Ve;function Ye(e){const t=f(e,(e=>{return(t=e.charCodeAt(0))>65280&&t<65375?t-65280+32:12288===t?32:8217===t?39:8221===t?34:t;var t}));return String.fromCharCode(...t)}function be(e,t,r,n,s){switch(e.source){case exports.SlpInputSource.FILE:return m.readSync(e.fileDescriptor,t,r,n,s);case exports.SlpInputSource.BUFFER:return s>=e.buffer.length?0:e.buffer.copy(t,r,s,s+n);default:throw new Error("Source type not supported")}}function Ke(e){switch(e.source){case exports.SlpInputSource.FILE:return m.fstatSync(e.fileDescriptor).size;case exports.SlpInputSource.BUFFER:return e.buffer.length;default:throw new Error("Source type not supported")}}function Je(e){const t=function(e){switch(e.source){case exports.SlpInputSource.FILE:if(!e.filePath)throw new Error("File source requires a file path");const t=m.openSync(e.filePath,"r");return{source:e.source,fileDescriptor:t};case exports.SlpInputSource.BUFFER:return{source:e.source,buffer:e.buffer};default:throw new Error("Source type not supported")}}(e),r=function(e){const t=new Uint8Array(1);return be(e,t,0,t.length,0),54===t[0]||t[0]!=="{".charCodeAt(0)?0:15}(t),n=function(e,t){const r=Ke(e);if(0===t)return r;const n=new Uint8Array(4);be(e,n,0,n.length,t-4);const s=n[0]<<24|n[1]<<16|n[2]<<8|n[3];return s>0?s:r-t}(t,r),s=r+n+10,o=function(e,t){return Ke(e)-t-1}(t,s),a=function(e,t){const r={};if(0===t)return r[54]=320,r[55]=6,r[56]=70,r[57]=1,r;const n=new Uint8Array(2);if(be(e,n,0,n.length,t),n[0]!==exports.Command.MESSAGE_SIZES)return{};const s=n[1];r[53]=s;const o=new Uint8Array(s-1);be(e,o,0,o.length,t+2);for(let e=0;e<s-1;e+=3)r[o[e]]=o[e+1]<<8|o[e+2];return r}(t,r);return{ref:t,rawDataPosition:r,rawDataLength:n,metadataPosition:s,metadataLength:o,messageSizes:a}}function Xe(e){e.ref.source===exports.SlpInputSource.FILE&&m.closeSync(e.ref.fileDescriptor)}function je(e){return[1,256,65536,16777216,4294967296].reduce(((t,r,n)=>t+st(e,40+n)*r),0)}function ze(e){return{gameBitfield1:st(e,5),gameBitfield2:st(e,6),gameBitfield3:st(e,7),gameBitfield4:st(e,8),bombRainEnabled:(255&st(e,11))>0,selfDestructScoreValue:tt(e,17),itemSpawnBitfield1:st(e,40),itemSpawnBitfield2:st(e,41),itemSpawnBitfield3:st(e,42),itemSpawnBitfield4:st(e,43),itemSpawnBitfield5:st(e,44),damageRatio:Qe(e,53)}}function $e(e,t,r=null){const n=e.ref;let s=null!==r&&r>0?r:e.rawDataPosition;const o=e.rawDataPosition+e.rawDataLength,a=u(e.messageSizes,(e=>new Uint8Array(e+1)));let i=new Uint8Array(0);const E=new Uint8Array(1);for(;s<o;){var l;be(n,E,0,1,s);let e=null!=(l=E[0])?l:0,r=a[e];if(void 0===r)return s;if(r.length>o-s)return s;const u=r.length;if(be(n,r,0,r.length,s),e===exports.Command.SPLIT_MESSAGE){var T,c;const t=new DataView(r.buffer),n=null!=(T=nt(t,513))?T:512,s=ot(t,516),o=null!=(c=st(t,515))?c:0;0===i.length&&(i=new Uint8Array(1),i[0]=o);const a=r.slice(1,1+n),E=new Uint8Array(i.length+a.length);var _;E.set(i),E.set(a,i.length),i=E,s&&(e=null!=(_=i[0])?_:0,r=i,i=new Uint8Array(0))}if(t(e,qe(e,r),r))break;s+=u}return s}function qe(e,t){const r=new DataView(t.buffer);switch(e){case exports.Command.GAME_START:const e=e=>{const n=8*e,s=rt(r,321+n);let o="None";s!==rt(r,325+n)?o="Mixed":1===s?o="UCF":2===s&&(o="Dween");const a=353+16*e,i=t.slice(a,a+16),E=d.decode(i,"Shift_JIS").split("\0").shift(),l=E?Ye(E):"",T=421+31*e,c=t.slice(T,T+31),u=d.decode(c,"Shift_JIS").split("\0").shift(),_=u?Ye(u):"",p=545+10*e,m=t.slice(p,p+10),A=d.decode(m,"Shift_JIS").split("\0").shift(),h=A?Ye(A):"",S=585+29*e,N=t.slice(S,S+29),R=d.decode(N,"utf8").split("\0").shift(),f=null!=R?R:"",I=36*e;return{playerIndex:e,port:e+1,characterId:st(r,101+I),type:st(r,102+I),startStocks:st(r,103+I),characterColor:st(r,104+I),teamShade:st(r,108+I),handicap:st(r,109+I),teamId:st(r,110+I),staminaMode:Boolean(st(r,108+36*e,1)),silentCharacter:Boolean(st(r,108+36*e,2)),lowGravity:Boolean(st(r,108+36*e,4)),invisible:Boolean(st(r,108+36*e,8)),blackStockIcon:Boolean(st(r,108+36*e,16)),metal:Boolean(st(r,108+36*e,32)),startOnAngelPlatform:Boolean(st(r,108+36*e,64)),rumbleEnabled:Boolean(st(r,108+36*e,128)),cpuLevel:st(r,116+I),offenseRatio:Qe(r,125+I),defenseRatio:Qe(r,129+I),modelScale:Qe(r,133+I),controllerFix:o,nametag:l,displayName:_,connectCode:h,userId:f}},a=702,i=t.slice(a,a+51),E=d.decode(i,"utf8").split("\0").shift(),l=null!=E?E:"";return{slpVersion:`${st(r,1)}.${st(r,2)}.${st(r,3)}`,timerType:st(r,5,3),inGameMode:st(r,5,224),friendlyFireEnabled:!!st(r,6,1),isTeams:ot(r,13),itemSpawnBehavior:st(r,16),stageId:nt(r,19),startingTimerSeconds:rt(r,21),enabledItems:je(r),players:[0,1,2,3].map(e),scene:st(r,419),gameMode:st(r,420),language:st(r,701),gameInfoBlock:ze(r),randomSeed:rt(r,317),isPAL:ot(r,417),isFrozenPS:ot(r,418),matchInfo:{matchId:l,gameNumber:rt(r,753),tiebreakerNumber:rt(r,757)}};case exports.Command.FRAME_START:return{frame:et(r,1),seed:rt(r,5),sceneFrameCounter:rt(r,9)};case exports.Command.PRE_FRAME_UPDATE:return{frame:et(r,1),playerIndex:st(r,5),isFollower:ot(r,6),seed:rt(r,7),actionStateId:nt(r,11),positionX:Qe(r,13),positionY:Qe(r,17),facingDirection:Qe(r,21),joystickX:Qe(r,25),joystickY:Qe(r,29),cStickX:Qe(r,33),cStickY:Qe(r,37),trigger:Qe(r,41),buttons:rt(r,45),physicalButtons:nt(r,49),physicalLTrigger:Qe(r,51),physicalRTrigger:Qe(r,55),rawJoystickX:tt(r,59),percent:Qe(r,60)};case exports.Command.POST_FRAME_UPDATE:const T={airX:Qe(r,53),y:Qe(r,57),attackX:Qe(r,61),attackY:Qe(r,65),groundX:Qe(r,69)};return{frame:et(r,1),playerIndex:st(r,5),isFollower:ot(r,6),internalCharacterId:st(r,7),actionStateId:nt(r,8),positionX:Qe(r,10),positionY:Qe(r,14),facingDirection:Qe(r,18),percent:Qe(r,22),shieldSize:Qe(r,26),lastAttackLanded:st(r,30),currentComboCount:st(r,31),lastHitBy:st(r,32),stocksRemaining:st(r,33),actionStateCounter:Qe(r,34),miscActionState:Qe(r,43),isAirborne:ot(r,47),lastGroundId:nt(r,48),jumpsRemaining:st(r,50),lCancelStatus:st(r,51),hurtboxCollisionState:st(r,52),selfInducedSpeeds:T,hitlagRemaining:Qe(r,73),animationIndex:rt(r,77),instanceHitBy:nt(r,81),instanceId:nt(r,83)};case exports.Command.ITEM_UPDATE:return{frame:et(r,1),typeId:nt(r,5),state:st(r,7),facingDirection:Qe(r,8),velocityX:Qe(r,12),velocityY:Qe(r,16),positionX:Qe(r,20),positionY:Qe(r,24),damageTaken:nt(r,28),expirationTimer:Qe(r,30),spawnId:rt(r,34),missileType:st(r,38),turnipFace:st(r,39),chargeShotLaunched:st(r,40),chargePower:st(r,41),owner:tt(r,42),instanceId:nt(r,43)};case exports.Command.FRAME_BOOKEND:return{frame:et(r,1),latestFinalizedFrame:et(r,5)};case exports.Command.GAME_END:const c=[0,1,2,3].map((e=>({playerIndex:e,position:tt(r,3+e)})));return{gameEndMethod:st(r,1),lrasInitiatorIndex:tt(r,2),placements:c};case exports.Command.GECKO_LIST:const u=[];let _=1;for(;_<t.length;){var n;const e=null!=(n=rt(r,_))?n:0,a=e>>24&254,i=2147483648+(33554431&e);let E=8;var s;if(192===a||194===a)E=8+8*(null!=(s=rt(r,_+4))?s:0);else if(6===a){var o;E=8+((null!=(o=rt(r,_+4))?o:0)+7&4294967288)}else 8===a&&(E=16);u.push({type:a,address:i,contents:t.slice(_,_+E)}),_+=E}return{contents:t.slice(1),codes:u};case exports.Command.FOD_PLATFORM:return{frame:et(r,1),platform:tt(r,5),height:Qe(r,6)};case exports.Command.WHISPY:return{frame:et(r,1),direction:tt(r,5)};case exports.Command.STADIUM_TRANSFORMATION:return{frame:et(r,1),event:nt(r,5),transformation:nt(r,7)};default:return null}}function Ze(e,t,r){return t+r<=e.byteLength}function Qe(e,t){return Ze(e,t,4)?e.getFloat32(t):null}function et(e,t){return Ze(e,t,4)?e.getInt32(t):null}function tt(e,t){return Ze(e,t,1)?e.getInt8(t):null}function rt(e,t){return Ze(e,t,4)?e.getUint32(t):null}function nt(e,t){return Ze(e,t,2)?e.getUint16(t):null}function st(e,t,r=255){return Ze(e,t,1)?e.getUint8(t)&r:null}function ot(e,t){return Ze(e,t,1)?!!e.getUint8(t):null}function at(e){if(e.metadataLength<=0)return null;const t=new Uint8Array(e.metadataLength);be(e.ref,t,0,t.length,e.metadataPosition);let r=null;try{r=S.decode(t.buffer)}catch(e){}return r}function it(e){const{ref:t,rawDataPosition:r,rawDataLength:n,messageSizes:s}=e,o=s[exports.Command.GAME_END];if(!xe(o)||o<=0)return null;const a=o+1,i=r+n-a,E=new Uint8Array(a);return be(t,E,0,E.length,i),E[0]!==exports.Command.GAME_END?null:qe(exports.Command.GAME_END,E)||null}function Et(e){const{ref:t,rawDataPosition:r,rawDataLength:n,messageSizes:s}=e,o=s[exports.Command.POST_FRAME_UPDATE],a=s[exports.Command.GAME_END],i=s[exports.Command.FRAME_BOOKEND];if(!xe(o))return[];const E=o+1;let l=null,T=r+n-(a?a+1:0)-(i?i+1:0)-E;const c=[];do{const e=new Uint8Array(E);if(be(t,e,0,e.length,T),e[0]!==exports.Command.POST_FRAME_UPDATE)break;const r=qe(exports.Command.POST_FRAME_UPDATE,e);if(!r)break;if(null===l)l=r.frame;else if(l!==r.frame)break;c.unshift(r),T-=E}while(T>=r);return c}exports.DolphinMessageType=void 0,(ke=exports.DolphinMessageType||(exports.DolphinMessageType={})).CONNECT_REPLY="connect_reply",ke.GAME_EVENT="game_event",ke.START_GAME="start_game",ke.END_GAME="end_game",exports.SlpInputSource=void 0,(We=exports.SlpInputSource||(exports.SlpInputSource={})).BUFFER="buffer",We.FILE="file",exports.SlpStreamMode=void 0,(Ve=exports.SlpStreamMode||(exports.SlpStreamMode={})).AUTO="AUTO",Ve.MANUAL="MANUAL";const lt={suppressErrors:!1,mode:exports.SlpStreamMode.AUTO};var Tt;exports.SlpStreamEvent=void 0,(Tt=exports.SlpStreamEvent||(exports.SlpStreamEvent={})).RAW="slp-raw",Tt.COMMAND="slp-command";class ct extends h.Writable{constructor(e,t){super(t),this.gameEnded=!1,this.settings=void 0,this.payloadSizes=null,this.previousBuffer=Buffer.from([]),this.settings=Object.assign({},lt,e)}restart(){this.gameEnded=!1,this.payloadSizes=null}_write(e,t,r){if("buffer"!==t)throw new Error(`Unsupported stream encoding. Expected 'buffer' got '${t}'.`);const n=Uint8Array.from(Buffer.concat([this.previousBuffer,e]));this.previousBuffer=Buffer.from([]);const s=new DataView(n.buffer);let o=0;for(;o<n.length;){if(Buffer.from(n.slice(o,o+5)).toString()===Ue){o+=5;continue}const e=s.getUint8(o);let t=0;var a;if(this.payloadSizes&&(t=null!=(a=this.payloadSizes.get(e))?a:0),n.length-o<t+1){this.previousBuffer=n.slice(o);break}if(this.settings.mode===exports.SlpStreamMode.MANUAL&&this.gameEnded)break;o+=1;const r=n.slice(o),i=new DataView(n.buffer,o);let E=0;try{E=this._processCommand(e,r,i)}catch(e){if(!this.settings.suppressErrors)throw e;E=0}o+=E}r()}_writeCommand(e,t,r){const n=t.slice(0,r),s=Buffer.concat([Buffer.from([e]),n]);return this.emit(exports.SlpStreamEvent.RAW,{command:e,payload:s}),new Uint8Array(s)}_processCommand(e,t,r){if(e===exports.Command.MESSAGE_SIZES){const n=r.getUint8(0);return this.payloadSizes=ut(r),this._writeCommand(e,t,n),this.emit(exports.SlpStreamEvent.COMMAND,{command:e,payload:this.payloadSizes}),n}let n=0;var s;this.payloadSizes&&(n=null!=(s=this.payloadSizes.get(e))?s:0);let o,a=null;return n>0&&(o=this._writeCommand(e,t,n),a=qe(e,o)),a?(e===exports.Command.GAME_END&&this.settings.mode===exports.SlpStrea