{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/Player.ts","webpack:///./src/ui/numeralFormat.ts","webpack:///./src/Faction/data/FactionNames.ts","webpack:///./src/BitNode/BitNodeMultipliers.ts","webpack:///./src/Constants.ts","webpack:///./src/Settings/Settings.ts","webpack:///./src/Locations/data/LocationNames.ts","webpack:///./src/Augmentation/data/AugmentationNames.ts","webpack:///./src/ui/React/DialogBox.tsx","webpack:///./src/Locations/data/CityNames.ts","webpack:///./src/ui/React/Money.tsx","webpack:///./src/utils/StringHelperFunctions.ts","webpack:///./src/utils/JSONReviver.ts","webpack:///./src/Server/AllServers.ts","webpack:///./src/ui/Router.ts","webpack:///./src/utils/helpers/keyCodes.ts","webpack:///./src/Faction/Factions.ts","webpack:///./src/ui/Context.ts","webpack:///./src/Company/data/companypositionnames.ts","webpack:///./src/Netscript/RamCostGenerator.ts","webpack:///./src/utils/helpers/getRandomInt.ts","webpack:///./src/Corporation/data/Constants.ts","webpack:///./src/Hacknet/data/Constants.ts","webpack:///./src/Augmentation/Augmentation.tsx","webpack:///./src/ui/React/Modal.tsx","webpack:///./src/Bladeburner/data/ActionTypes.ts","webpack:///./src/ui/React/Table.tsx","webpack:///./src/InteractiveTutorial.ts","webpack:///./src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx","webpack:///./src/Server/Server.ts","webpack:///./src/Corporation/ui/Context.ts","webpack:///./src/Corporation/IndustryData.tsx","webpack:///./src/Locations/LocationTypeEnum.ts","webpack:///./src/Corporation/EmployeePositions.ts","webpack:///./src/Hacknet/HacknetHelpers.tsx","webpack:///./src/Augmentation/Augmentations.ts","webpack:///./src/Bladeburner/data/BlackOperationNames.ts","webpack:///./src/Bladeburner/data/Constants.ts","webpack:///./src/Literature/data/LiteratureNames.ts","webpack:///./src/Programs/Programs.ts","webpack:///./src/Company/Companies.ts","webpack:///./src/Corporation/Actions.ts","webpack:///./src/CotMG/FragmentType.ts","webpack:///./src/StockMarket/data/PositionTypes.ts","webpack:///./src/PersonObjects/Sleeve/SleeveTaskTypesEnum.ts","webpack:///./src/Gang/AllGangs.ts","webpack:///./src/SourceFile/SourceFileFlags.ts","webpack:///./src/Terminal/DirectoryHelpers.ts","webpack:///./src/Crime/Crimes.ts","webpack:///./src/Casino/utils.ts","webpack:///./src/Terminal.ts","webpack:///./src/Hacknet/HacknetServer.ts","webpack:///./src/Company/CompanyPositions.ts","webpack:///./src/ui/GameRoot.tsx","webpack:///./src/StockMarket/data/StockSymbols.ts","webpack:///./src/Script/isScriptFilename.ts","webpack:///./src/Hacking.ts","webpack:///./src/StockMarket/StockMarket.tsx","webpack:///./src/Server/data/SpecialServers.ts","webpack:///./src/Faction/FactionHelpers.tsx","webpack:///./src/Exploits/Exploit.ts","webpack:///./src/SaveObject.tsx","webpack:///./src/NetscriptEvaluator.ts","webpack:///./src/ui/React/MoneyRate.tsx","webpack:///./src/CodingContracts.ts","webpack:///./src/StockMarket/data/OrderTypes.ts","webpack:///./src/ui/React/Reputation.tsx","webpack:///./src/CotMG/Helper.tsx","webpack:///./src/utils/EventEmitter.ts","webpack:///./src/DevMenu/ui/Adjuster.tsx","webpack:///./src/Corporation/data/BaseResearchTree.ts","webpack:///./src/Server/ServerHelpers.ts","webpack:///./src/Augmentation/AugmentationHelpers.tsx","webpack:///./src/Infiltration/utils.ts","webpack:///./src/Bladeburner/data/SkillNames.ts","webpack:///./src/Bladeburner/BlackOperation.ts","webpack:///./src/Gang/ui/Context.ts","webpack:///./src/ui/React/Snackbar.tsx","webpack:///./src/Netscript/killWorkerScript.ts","webpack:///./src/Corporation/ui/MoneyCost.tsx","webpack:///./src/ui/React/StatsRow.tsx","webpack:///./src/utils/helpers/isString.ts","webpack:///./src/StockMarket/Stock.ts","webpack:///./src/Locations/Cities.ts","webpack:///./src/Alias.ts","webpack:///./src/Literature/Literature.ts","webpack:///./src/Themes/ui/Theme.tsx","webpack:///./src/ui/React/CopyableText.tsx","webpack:///./src/Corporation/MaterialSizes.ts","webpack:///./src/PersonObjects/formulas/skill.ts","webpack:///./src/Gang/data/upgrades.ts","webpack:///./src/ui/React/LogBoxManager.tsx","webpack:///./src/Netscript/WorkerScripts.ts","webpack:///./src/ui/React/StatsTable.tsx","webpack:///./src/Hacknet/formulas/HacknetServers.ts","webpack:///./src/Faction/FactionWorkTypeEnum.ts","webpack:///./src/ui/React/OptionSwitch.tsx","webpack:///./src/utils/helpers/createProgressBarText.ts","webpack:///./src/NetscriptWorker.ts","webpack:///./src/Corporation/Material.ts","webpack:///./src/Gang/formulas/formulas.ts","webpack:///./src/Faction/Faction.ts","webpack:///./src/Settings/SettingEnums.ts","webpack:///./src/Hacknet/formulas/HacknetNodes.ts","webpack:///./src/Casino/Game.tsx","webpack:///./src/CotMG/data/Shapes.ts","webpack:///./src/Infiltration/ui/KeyHandler.tsx","webpack:///./src/Infiltration/ui/GameTimer.tsx","webpack:///./src/Infiltration/ui/Difficulty.ts","webpack:///./src/Locations/Locations.ts","webpack:///./src/BitNode/BitNode.tsx","webpack:///./src/Hacknet/HacknetNode.ts","webpack:///./src/Server/ServerPurchases.ts","webpack:///./src/TextFile.ts","webpack:///./src/Bladeburner/Skills.ts","webpack:///./src/Gang/GangMemberUpgrades.ts","webpack:///./src/StockMarket/StockMarketHelpers.ts","webpack:///./src/StockMarket/StockMarketCosts.ts","webpack:///./src/Script/ScriptHelpers.ts","webpack:///./src/ui/React/Hashes.tsx","webpack:///./src/Bladeburner/Bladeburner.tsx","webpack:///./src/Company/Company.ts","webpack:///./src/Corporation/Warehouse.ts","webpack:///./src/Gang/GangMemberTasks.ts","webpack:///./src/Hacknet/HashUpgrades.ts","webpack:///./src/CotMG/Fragment.ts","webpack:///./src/PersonObjects/formulas/reputation.ts","webpack:///./src/StockMarket/BuyingAndSelling.tsx","webpack:///./src/Terminal/ITerminal.tsx","webpack:///./src/Bladeburner/Skill.ts","webpack:///./src/ui/React/ConfirmationModal.tsx","webpack:///./src/hash/hash.ts","webpack:///./src/Gang/data/Constants.ts","webpack:///./src/Script/Script.ts","webpack:///./src/utils/helpers/arrayToString.ts","webpack:///./src/DarkWeb/DarkWebItems.ts","webpack:///./src/Bladeburner/GeneralActions.tsx","webpack:///./src/Casino/CardDeck/Card.ts","webpack:///./src/Bladeburner/ActionIdentifier.ts","webpack:///./src/SourceFile/SourceFile.ts","webpack:///./src/PersonObjects/Person.ts","webpack:///./src/MathJaxWrapper.tsx","webpack:///./src/utils/helpers/exceptionAlert.ts","webpack:///./src/Message/MessageHelpers.ts","webpack:///./src/Netscript/WorkerScript.ts","webpack:///./src/Bladeburner/BlackOperations.tsx","webpack:///./src/Crime/Crime.ts","webpack:///./src/PersonObjects/formulas/intelligence.ts","webpack:///./src/Corporation/ResearchMap.ts","webpack:///./src/Locations/ui/ApplyToJobButton.tsx","webpack:///./src/Netscript/WorkerScriptStartStopEventEmitter.ts","webpack:///./src/Electron.tsx","webpack:///./src/Achievements/Achievements.ts","webpack:///./src/ui/React/CharacterOverview.tsx","webpack:///./src/Corporation/data/CorporationUnlockUpgrades.ts","webpack:///./src/RedPill.tsx","webpack:///./src/utils/helpers/addOffset.ts","webpack:///./src/DarkWeb/DarkWebItem.ts","webpack:///./src/Casino/RNG.ts","webpack:///./src/utils/helpers/compareArrays.ts","webpack:///./src/Corporation/IndustryUpgrades.ts","webpack:///./src/ui/React/Favor.tsx","webpack:///./src/PersonObjects/Sleeve/Sleeve.ts","webpack:///./src/Script/RamCalculationErrorCodes.ts","webpack:///./src/Terminal/TerminalEvents.ts","webpack:///./src/Message/Message.ts","webpack:///./src/StockMarket/OrderProcessing.tsx","webpack:///./src/Themes/Themes.ts","webpack:///./src/ui/React/AlertManager.tsx","webpack:///./src/utils/IPAddress.ts","webpack:///./src/db.tsx","webpack:///./src/Faction/formulas/favor.ts","webpack:///./src/ExportBonus.tsx","webpack:///./src/Bladeburner/Operation.ts","webpack:///./src/Server/data/servers.ts","webpack:///./src/Augmentation/PlayerOwnedAugmentation.ts","webpack:///./src/Company/CompanyPosition.ts","webpack:///./src/SourceFile/SourceFiles.tsx","webpack:///./src/Script/RunningScript.ts","webpack:///./src/Bladeburner/ui/StartButton.tsx","webpack:///./src/utils/helpers/formatTime.ts","webpack:///./src/Faction/FactionInfo.tsx","webpack:///./src/Corporation/data/CorporationUpgrades.ts","webpack:///./src/Hacknet/HashManager.ts","webpack:///./src/CodingContractGenerator.ts","webpack:///./src/ui/InteractiveTutorial/ITutorialEvents.ts","webpack:///./src/Crime/CrimeHelpers.ts","webpack:///./src/Corporation/OfficeSpace.ts","webpack:///./src/utils/Validator.ts","webpack:///./src/utils/MoneySourceTracker.ts","webpack:///./src/ui/React/StatsProgressBar.tsx","webpack:///./src/Themes/Styles.ts","webpack:///./src/Hospital/Hospital.ts","webpack:///./src/ui/React/PromptManager.tsx","webpack:///./src/Corporation/Product.ts","webpack:///./src/Corporation/ui/Helpers.tsx","webpack:///./src/Programs/ui/ProgramsRoot.tsx","webpack:///./src/Faction/ui/FactionsRoot.tsx","webpack:///./src/ui/React/RecoveryRoot.tsx","webpack:///./src/NetworkShare/Share.tsx","webpack:///./src/Corporation/Corporation.tsx","webpack:///./src/ui/React/HashRate.tsx","webpack:///./src/Bladeburner/City.ts","webpack:///./src/PersonObjects/Player/PlayerObjectGangMethods.ts","webpack:///./src/Locations/City.ts","webpack:///./src/Faction/ui/Option.tsx","webpack:///./src/StockMarket/ui/StockTickersConfig.tsx","webpack:///./src/PersonObjects/Player/PlayerObjectServerMethods.ts","webpack:///./src/Bladeburner/Action.tsx","webpack:///./src/Prestige.ts","webpack:///./src/ui/React/WorldMap.tsx","webpack:///./src/Bladeburner/ui/SuccessChance.tsx","webpack:///./src/ui/React/StaticModal.tsx","webpack:///./src/ui/React/CorruptableText.tsx","webpack:///./src/DarkWeb/DarkWeb.tsx","webpack:///./src/Hacking/netscriptCanHack.ts","webpack:///./src/PersonObjects/Grafting/GraftableAugmentation.ts","webpack:///./src/ui/React/ReputationRate.tsx","webpack:///./src/Terminal/Parser.ts","webpack:///./src/ui/React/CinematicText.tsx","webpack:///./src/PersonObjects/Sleeve/SleeveCovenantPurchases.tsx","webpack:///./src/Augmentation/AugmentationCreator.tsx","webpack:///./src/Script/RamCalculations.ts","webpack:///./src/utils/helpers/roundToTwo.ts","webpack:///./src/Gang/Gang.ts","webpack:///./src/Netscript/Pid.ts","webpack:///./src/NetscriptFunctions.ts","webpack:///./src/StockMarket/PlayerInfluencing.ts","webpack:///./src/Company/GetJobRequirementText.ts","webpack:///./src/Terminal/HelpText.ts","webpack:///./src/utils/ErrorHelper.ts","webpack:///./src/utils/helpers/getRandomByte.ts","webpack:///./src/Bladeburner/data/Growths.ts","webpack:///./src/Locations/createCityMap.ts","webpack:///./src/Casino/CardDeck/Hand.ts","webpack:///./src/StockMarket/ui/StockTickerTxButton.tsx","webpack:///./src/Server/BaseServer.ts","webpack:///./src/ui/React/CodingContractModal.tsx","webpack:///./src/BitNode/ui/BitFlumeModal.tsx","webpack:///./src/PersonObjects/Player/PlayerObject.ts","webpack:///./src/Faction/ui/InvitationModal.tsx","webpack:///./src/Literature/LiteratureHelpers.ts","webpack:///./src/Gang/GangMemberTask.ts","webpack:///./src/SourceFile/PlayerOwnedSourceFile.ts","webpack:///./src/Netscript/RecentScripts.ts","webpack:///./src/ThirdParty/JSInterpreter.js","webpack:///./src/Server/formulas/grow.ts","webpack:///./src/PersonObjects/Sleeve/SleeveHelpers.ts","webpack:///./src/CotMG/StaneksGiftEvents.ts","webpack:///./src/PersonObjects/Grafting/ui/GraftingRoot.tsx","webpack:///./src/Terminal/commands/download.ts","webpack:///./src/ui/React/AugmentationAccordion.tsx","webpack:///./src/Bladeburner/data/Icons.tsx","webpack:///./src/Bladeburner/ui/ActionLevel.tsx","webpack:///./src/Bladeburner/ui/Autolevel.tsx","webpack:///./src/Bladeburner/ui/TeamSizeButton.tsx","webpack:///./src/Infiltration/ui/BlinkingCursor.tsx","webpack:///./src/ui/React/DeleteGameButton.tsx","webpack:///./src/ui/React/SoftResetButton.tsx","webpack:///./src/Themes/ui/ThemeEditorButton.tsx","webpack:///./src/Themes/ui/ThemeCollaborate.tsx","webpack:///./src/Themes/ui/StyleEditorButton.tsx","webpack:///./src/Locations/ui/TravelAgencyRoot.tsx","webpack:///./src/ScriptEditor/ui/ScriptEditorRoot.tsx","webpack:///./src/NetscriptJSEvaluator.ts","webpack:///./src/NetscriptFunctions/Flags.ts","webpack:///./src/NetscriptFunctions/toNative.ts","webpack:///./src/ui/React/TablePaginationActionsAll.tsx","webpack:///./src/CotMG/ui/Cell.tsx","webpack:///./src/ui/Apr1.tsx","webpack:///./src/Script/RunningScriptHelpers.ts","webpack:///./src/Terminal/commands/common/editor.ts","webpack:///./src/PersonObjects/Player/PlayerObjectBladeburnerMethods.ts","webpack:///./src/Bladeburner/Contract.ts","webpack:///./src/Bladeburner/data/Help.ts","webpack:///./src/PersonObjects/Player/PlayerObjectCorporationMethods.ts","webpack:///./src/Corporation/ResearchTree.ts","webpack:///./src/StockMarket/StockMarketConstants.ts","webpack:///./src/CotMG/data/Constants.ts","webpack:///./src/Company/GetNextCompanyPosition.ts","webpack:///./src/engine.tsx","webpack:///./src/Themes/data/index.ts","webpack:///./src/ui/LoadingScreen.tsx","webpack:///./src/PersonObjects/Player/PlayerObjectAugmentationMethods.ts","webpack:///./src/utils/helpers/isValidNumber.ts","webpack:///./src/StockMarket/Order.ts","webpack:///./src/CotMG/StaneksGift.ts","webpack:///./src/CotMG/ActiveFragment.ts","webpack:///./src/Locations/Location.ts","webpack:///./src/PersonObjects/Sleeve/ui/StatsElement.tsx","webpack:///./src/ui/React/ServerDropdown.tsx","webpack:///./src/Casino/Blackjack.tsx","webpack:///./src/Casino/CardDeck/ReactCard.tsx","webpack:///./src/Milestones/Milestones.ts","webpack:///./src/Faction/formulas/donation.ts","webpack:///./src/StockMarket/data/TickerHeaderFormatData.ts","webpack:///./src/Achievements/AchievementEntry.tsx","webpack:///./src/ThirdParty/colorUtils.ts","webpack:///./src/PersonObjects/formulas/work.ts","webpack:///./src/Themes/data/default/index.ts","webpack:///./src/Themes/data/default-lite/index.ts","webpack:///./src/Themes/data/monokai-ish/index.ts","webpack:///./src/Themes/data/warmer/index.ts","webpack:///./src/Themes/data/dark-plus/index.ts","webpack:///./src/Themes/data/mayukai-dark/index.ts","webpack:///./src/Themes/data/purple/index.ts","webpack:///./src/Themes/data/smooth-green/index.ts","webpack:///./src/Themes/data/dracula/index.ts","webpack:///./src/Themes/data/dark-blue/index.ts","webpack:///./src/Themes/data/discord-like/index.ts","webpack:///./src/Themes/data/one-dark/index.ts","webpack:///./src/Themes/data/muted-gold-blue/index.ts","webpack:///./src/Themes/data/light/index.ts","webpack:///./src/Themes/data/default/screenshot.png","webpack:///./src/Themes/data/default-lite/screenshot.png","webpack:///./src/Themes/data/monokai-ish/screenshot.png","webpack:///./src/Themes/data/warmer/screenshot.png","webpack:///./src/Themes/data/dark-plus/screenshot.png","webpack:///./src/Themes/data/mayukai-dark/screenshot.png","webpack:///./src/Themes/data/purple/screenshot.png","webpack:///./src/Themes/data/smooth-green/screenshot.png","webpack:///./src/Themes/data/dracula/screenshot.png","webpack:///./src/Themes/data/dark-blue/screenshot.png","webpack:///./src/Themes/data/discord-like/screenshot.png","webpack:///./src/Themes/data/one-dark/screenshot.png","webpack:///./src/Themes/data/muted-gold-blue/screenshot.png","webpack:///./src/Themes/data/light/screenshot.png","webpack:///./src/Terminal/Terminal.ts","webpack:///./src/data/codingcontracttypes.ts","webpack:///./src/utils/helpers/createRandomString.ts","webpack:///./src/Programs/Program.ts","webpack:///./src/Programs/data/ProgramsMetadata.ts","webpack:///./src/utils/helpers/isValidIPAddress.ts","webpack:///./src/PersonObjects/Grafting/EntropyAccumulation.ts","webpack:///./src/utils/helpers/getTimestamp.ts","webpack:///./src/NetworkShare/formulas/share.tsx","webpack:///./src/Corporation/CorporationState.ts","webpack:///./src/Literature/Literatures.ts","webpack:///./src/Gang/data/tasks.ts","webpack:///./src/Gang/GangMember.ts","webpack:///./src/Gang/GangMemberUpgrade.ts","webpack:///./src/Gang/data/power.ts","webpack:///./src/Company/data/CompaniesMetadata.ts","webpack:///./src/Corporation/Research.ts","webpack:///./src/Corporation/data/ResearchMetadata.ts","webpack:///./src/Hacknet/HashUpgrade.ts","webpack:///./src/Hacknet/data/HashUpgradesMetadata.tsx","webpack:///./src/Netscript/Environment.ts","webpack:///./src/utils/helpers/isPowerOfTwo.ts","webpack:///./src/StockMarket/data/InitStockMetadata.ts","webpack:///./src/NetscriptFunctions/Gang.ts","webpack:///./src/NetscriptFunctions/Sleeve.ts","webpack:///./src/NetscriptFunctions/Extra.ts","webpack:///./src/NetscriptFunctions/Hacknet.ts","webpack:///./src/NetscriptFunctions/Stanek.ts","webpack:///./src/CotMG/formulas/effect.ts","webpack:///./src/NetscriptFunctions/UserInterface.ts","webpack:///./src/NetscriptFunctions/Bladeburner.ts","webpack:///./src/NetscriptFunctions/CodingContract.ts","webpack:///./src/utils/helpers/is2DArray.ts","webpack:///./src/NetscriptFunctions/Corporation.ts","webpack:///./src/Corporation/Industry.ts","webpack:///./src/utils/calculateEffectWithFactors.ts","webpack:///./src/Corporation/Employee.ts","webpack:///./src/Corporation/ProductRatingWeights.ts","webpack:///./src/NetscriptFunctions/Formulas.ts","webpack:///./src/NetscriptFunctions/StockMarket.ts","webpack:///./src/NetscriptFunctions/Grafting.ts","webpack:///./src/Locations/data/LocationsMetadata.ts","webpack:///./src/utils/v1APIBreak.ts","webpack:///./src/ui/InteractiveTutorial/InteractiveTutorialRoot.tsx","webpack:///./src/ui/React/Overview.tsx","webpack:///./src/Sidebar/ui/SidebarRoot.tsx","webpack:///./src/Programs/ProgramHelpers.ts","webpack:///./src/Augmentation/ui/AugmentationsRoot.tsx","webpack:///./src/Augmentation/ui/InstalledAugmentations.tsx","webpack:///./src/Augmentation/ui/PlayerMultipliers.tsx","webpack:///./src/Augmentation/ui/PurchasedAugmentations.tsx","webpack:///./src/Augmentation/ui/SourceFiles.tsx","webpack:///./src/Augmentation/ui/SourceFileMinus1.tsx","webpack:///./src/Augmentation/ui/OwnedSourceFiles.tsx","webpack:///./src/ui/React/SourceFileAccordion.tsx","webpack:///./src/DevMenu.tsx","webpack:///./src/DevMenu/ui/General.tsx","webpack:///./src/DevMenu/ui/Stats.tsx","webpack:///./src/DevMenu/ui/Factions.tsx","webpack:///./src/DevMenu/ui/Augmentations.tsx","webpack:///./src/DevMenu/ui/SourceFiles.tsx","webpack:///./src/DevMenu/ui/Programs.tsx","webpack:///./src/DevMenu/ui/Servers.tsx","webpack:///./src/DevMenu/ui/Companies.tsx","webpack:///./src/DevMenu/ui/Bladeburner.tsx","webpack:///./src/DevMenu/ui/Gang.tsx","webpack:///./src/DevMenu/ui/Corporation.tsx","webpack:///./src/DevMenu/ui/CodingContracts.tsx","webpack:///./src/DevMenu/ui/StockMarket.tsx","webpack:///./src/DevMenu/ui/Sleeves.tsx","webpack:///./src/DevMenu/ui/Stanek.tsx","webpack:///./src/DevMenu/ui/TimeSkip.tsx","webpack:///./src/DevMenu/ui/Achievements.tsx","webpack:///./src/DevMenu/ui/Entropy.tsx","webpack:///./src/Bladeburner/ui/BladeburnerRoot.tsx","webpack:///./src/Bladeburner/ui/Stats.tsx","webpack:///./src/Bladeburner/ui/TravelModal.tsx","webpack:///./src/Bladeburner/ui/Console.tsx","webpack:///./src/Bladeburner/ui/AllPages.tsx","webpack:///./src/Bladeburner/ui/GeneralActionPage.tsx","webpack:///./src/Bladeburner/ui/GeneralActionList.tsx","webpack:///./src/Bladeburner/ui/GeneralActionElem.tsx","webpack:///./src/Bladeburner/data/GeneralActions.tsx","webpack:///./src/Bladeburner/ui/ContractPage.tsx","webpack:///./src/Bladeburner/ui/ContractList.tsx","webpack:///./src/Bladeburner/ui/ContractElem.tsx","webpack:///./src/Bladeburner/data/Contracts.tsx","webpack:///./src/Bladeburner/ui/StealthIcon.tsx","webpack:///./src/Bladeburner/ui/KillIcon.tsx","webpack:///./src/Bladeburner/ui/OperationPage.tsx","webpack:///./src/Bladeburner/ui/OperationList.tsx","webpack:///./src/Bladeburner/ui/OperationElem.tsx","webpack:///./src/Bladeburner/ui/TeamSizeModal.tsx","webpack:///./src/Bladeburner/data/Operations.tsx","webpack:///./src/Bladeburner/ui/BlackOpPage.tsx","webpack:///./src/Bladeburner/ui/BlackOpList.tsx","webpack:///./src/Bladeburner/ui/BlackOpElem.tsx","webpack:///./src/Bladeburner/data/BlackOperations.tsx","webpack:///./src/Bladeburner/ui/SkillPage.tsx","webpack:///./src/Bladeburner/ui/SkillList.tsx","webpack:///./src/Bladeburner/ui/SkillElem.tsx","webpack:///./src/Gang/ui/GangRoot.tsx","webpack:///./src/Gang/ui/ManagementSubpage.tsx","webpack:///./src/Gang/ui/GangStats.tsx","webpack:///./src/Gang/ui/BonusTime.tsx","webpack:///./src/Gang/ui/GangMemberList.tsx","webpack:///./src/Gang/ui/GangMemberCard.tsx","webpack:///./src/Gang/ui/GangMemberCardContent.tsx","webpack:///./src/Gang/ui/GangMemberStats.tsx","webpack:///./src/ui/React/KillScriptsModal.tsx","webpack:///./src/Gang/ui/TaskSelector.tsx","webpack:///./src/Gang/ui/TaskDescription.tsx","webpack:///./src/Gang/ui/AscensionModal.tsx","webpack:///./src/Gang/ui/RecruitButton.tsx","webpack:///./src/Gang/ui/RecruitModal.tsx","webpack:///./src/Gang/ui/TerritorySubpage.tsx","webpack:///./src/Gang/ui/TerritoryInfoModal.tsx","webpack:///./src/Gang/ui/EquipmentsSubpage.tsx","webpack:///./src/Corporation/ui/CorporationRoot.tsx","webpack:///./src/Corporation/ui/MainPanel.tsx","webpack:///./src/Corporation/ui/CityTabs.tsx","webpack:///./src/Corporation/ui/Industry.tsx","webpack:///./src/Corporation/ui/IndustryOffice.tsx","webpack:///./src/Corporation/ui/UpgradeOfficeSizeModal.tsx","webpack:///./src/Corporation/ui/ThrowPartyModal.tsx","webpack:///./src/Corporation/ui/IndustryOverview.tsx","webpack:///./src/Corporation/ui/MakeProductModal.tsx","webpack:///./src/Corporation/ui/ResearchModal.tsx","webpack:///./src/Corporation/ui/IndustryWarehouse.tsx","webpack:///./src/Corporation/ui/SmartSupplyModal.tsx","webpack:///./src/Corporation/ui/ProductElem.tsx","webpack:///./src/Corporation/ui/DiscontinueProductModal.tsx","webpack:///./src/Corporation/ui/LimitProductProductionModal.tsx","webpack:///./src/Corporation/ui/SellProductModal.tsx","webpack:///./src/Corporation/ui/ProductMarketTaModal.tsx","webpack:///./src/Corporation/ui/MaterialElem.tsx","webpack:///./src/Corporation/ui/ExportModal.tsx","webpack:///./src/Corporation/ui/MaterialMarketTaModal.tsx","webpack:///./src/Corporation/ui/SellMaterialModal.tsx","webpack:///./src/Corporation/ui/PurchaseMaterialModal.tsx","webpack:///./src/Corporation/ui/IndustryProductEquation.tsx","webpack:///./src/Corporation/ui/ExpandNewCity.tsx","webpack:///./src/Corporation/ui/ExpandIndustryTab.tsx","webpack:///./src/Corporation/ui/Overview.tsx","webpack:///./src/Corporation/ui/LevelableUpgrade.tsx","webpack:///./src/Corporation/ui/UnlockUpgrade.tsx","webpack:///./src/Corporation/ui/BribeFactionModal.tsx","webpack:///./src/Corporation/ui/SellSharesModal.tsx","webpack:///./src/Corporation/ui/BuybackSharesModal.tsx","webpack:///./src/Corporation/ui/IssueDividendsModal.tsx","webpack:///./src/Corporation/ui/IssueNewSharesModal.tsx","webpack:///./src/Corporation/ui/FindInvestorsModal.tsx","webpack:///./src/Corporation/ui/GoPublicModal.tsx","webpack:///./src/Infiltration/ui/InfiltrationRoot.tsx","webpack:///./src/Infiltration/ui/Intro.tsx","webpack:///./src/Infiltration/ui/Game.tsx","webpack:///./src/Infiltration/ui/Countdown.tsx","webpack:///./src/Infiltration/ui/BracketGame.tsx","webpack:///./src/Infiltration/ui/SlashGame.tsx","webpack:///./src/Infiltration/ui/BackwardGame.tsx","webpack:///./src/Infiltration/ui/BribeGame.tsx","webpack:///./src/Infiltration/ui/CheatCodeGame.tsx","webpack:///./src/Infiltration/ui/Cyberpunk2077Game.tsx","webpack:///./src/Infiltration/ui/MinesweeperGame.tsx","webpack:///./src/Infiltration/ui/WireCuttingGame.tsx","webpack:///./src/Infiltration/ui/Victory.tsx","webpack:///./src/ui/WorkInProgressRoot.tsx","webpack:///./src/ui/React/GameOptionsRoot.tsx","webpack:///./src/Diagnostic/FileDiagnosticModal.tsx","webpack:///./src/Themes/ui/ThemeEditorModal.tsx","webpack:///./src/Themes/ui/StyleEditorModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/SleeveRoot.tsx","webpack:///./src/PersonObjects/Sleeve/ui/SleeveElem.tsx","webpack:///./src/PersonObjects/Sleeve/ui/SleeveAugmentationsModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/TravelModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/MoreStatsModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/MoreEarningsModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/TaskSelector.tsx","webpack:///./src/PersonObjects/Sleeve/ui/FAQModal.tsx","webpack:///./src/Hacknet/ui/HacknetRoot.tsx","webpack:///./src/Hacknet/ui/GeneralInfo.tsx","webpack:///./src/Hacknet/ui/HacknetNodeElem.tsx","webpack:///./src/Hacknet/ui/HacknetServerElem.tsx","webpack:///./src/Hacknet/ui/HashUpgradeModal.tsx","webpack:///./src/Hacknet/ui/HacknetUpgradeElem.tsx","webpack:///./src/Hacknet/ui/MultiplierButtons.tsx","webpack:///./src/Hacknet/ui/PlayerInfo.tsx","webpack:///./src/Hacknet/ui/PurchaseButton.tsx","webpack:///./src/Locations/ui/GenericLocation.tsx","webpack:///./src/Locations/ui/CompanyLocation.tsx","webpack:///./src/Company/data/CompanyPositionsMetadata.ts","webpack:///./src/Company/ui/QuitJobModal.tsx","webpack:///./src/Locations/ui/GymLocation.tsx","webpack:///./src/Locations/ui/HospitalLocation.tsx","webpack:///./src/Locations/ui/SlumsLocation.tsx","webpack:///./src/Locations/ui/SpecialLocation.tsx","webpack:///./src/Corporation/ui/CreateCorporationModal.tsx","webpack:///./src/utils/helpers/N00dles.ts","webpack:///./src/Arcade/ui/ArcadeRoot.tsx","webpack:///./src/Arcade/ui/BBCabinet.tsx","webpack:///./src/Locations/ui/TechVendorLocation.tsx","webpack:///./src/Locations/ui/RamButton.tsx","webpack:///./src/Locations/ui/TorButton.tsx","webpack:///./src/Locations/LocationsHelpers.tsx","webpack:///./src/Locations/ui/CoresButton.tsx","webpack:///./src/Locations/ui/PurchaseServerModal.tsx","webpack:///./src/Locations/ui/TravelConfirmationModal.tsx","webpack:///./src/Locations/ui/UniversityLocation.tsx","webpack:///./src/Locations/ui/CasinoLocation.tsx","webpack:///./src/Casino/CardDeck/Deck.ts","webpack:///./src/Casino/CoinFlip.tsx","webpack:///./src/Casino/Roulette.tsx","webpack:///./src/Casino/SlotMachine.tsx","webpack:///./src/Locations/ui/City.tsx","webpack:///./src/ScriptEditor/ui/OptionsModal.tsx","webpack:///./src/ScriptEditor/ui/themes.ts","webpack:///./src/ScriptEditor/NetscriptDefinitions.d.ts","webpack:///./src/Milestones/ui/MilestonesRoot.tsx","webpack:///./src/Terminal/ui/TerminalRoot.tsx","webpack:///./src/Terminal/ui/TerminalInput.tsx","webpack:///./src/Terminal/determineAllPossibilitiesForTabCompletion.ts","webpack:///./src/Terminal/DirectoryServerHelpers.ts","webpack:///./src/Script/ScriptUrl.ts","webpack:///./src/Terminal/tabCompletion.ts","webpack:///./src/Tutorial/ui/TutorialRoot.tsx","webpack:///./src/ui/ActiveScripts/ActiveScriptsRoot.tsx","webpack:///./src/ui/ActiveScripts/ActiveScriptsPage.tsx","webpack:///./src/ui/ActiveScripts/ScriptProduction.tsx","webpack:///./src/ui/ActiveScripts/ServerAccordions.tsx","webpack:///./src/ui/ActiveScripts/ServerAccordion.tsx","webpack:///./src/ui/ActiveScripts/ServerAccordionContent.tsx","webpack:///./src/ui/ActiveScripts/WorkerScriptAccordion.tsx","webpack:///./src/ui/ActiveScripts/RecentScriptsPage.tsx","webpack:///./src/ui/ActiveScripts/RecentScriptAccordion.tsx","webpack:///./src/Faction/ui/FactionRoot.tsx","webpack:///./src/Faction/ui/AugmentationsPage.tsx","webpack:///./src/Faction/ui/PurchaseableAugmentation.tsx","webpack:///./src/Faction/ui/PurchaseAugmentationModal.tsx","webpack:///./src/ui/React/Augmentation.tsx","webpack:///./src/Faction/ui/DonateOption.tsx","webpack:///./src/Faction/ui/Info.tsx","webpack:///./src/Faction/ui/CreateGangModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/CovenantPurchasesRoot.tsx","webpack:///./src/PersonObjects/Sleeve/ui/CovenantSleeveMemoryUpgrade.tsx","webpack:///./src/ui/CharacterStats.tsx","webpack:///./src/StockMarket/ui/StockMarketRoot.tsx","webpack:///./src/StockMarket/ui/InfoAndPurchases.tsx","webpack:///./src/StockMarket/ui/StockTickers.tsx","webpack:///./src/StockMarket/ui/StockTicker.tsx","webpack:///./src/StockMarket/ui/StockTickerHeaderText.tsx","webpack:///./src/StockMarket/ui/StockTickerOrderList.tsx","webpack:///./src/StockMarket/ui/StockTickerOrder.tsx","webpack:///./src/StockMarket/ui/StockTickerPositionText.tsx","webpack:///./src/StockMarket/ui/PlaceOrderModal.tsx","webpack:///./src/BitNode/ui/BitverseRoot.tsx","webpack:///./src/BitNode/ui/PortalModal.tsx","webpack:///./src/ui/React/CinematicLine.tsx","webpack:///./src/CotMG/ui/StaneksGiftRoot.tsx","webpack:///./src/CotMG/ui/MainBoard.tsx","webpack:///./src/CotMG/ui/FragmentInspector.tsx","webpack:///./src/CotMG/ui/FragmentSelector.tsx","webpack:///./src/CotMG/ui/FragmentPreview.tsx","webpack:///./src/Bladeburner/ui/BladeburnerCinematic.tsx","webpack:///./src/Exploits/Unclickable.tsx","webpack:///./src/Achievements/AchievementsRoot.tsx","webpack:///./src/Achievements/AchievementList.tsx","webpack:///./src/Achievements/AchievementIcon.tsx","webpack:///./src/ui/ErrorBoundary.tsx","webpack:///./src/Themes/ui/ThemeBrowser.tsx","webpack:///./src/Themes/ui/ThemeEntry.tsx","webpack:///./src/ui/React/ImportSaveRoot.tsx","webpack:///./src/ui/React/BypassWrapper.tsx","webpack:///./src/NetscriptFunctions/Singularity.ts","webpack:///./src/NetscriptPort.ts","webpack:///./src/utils/helpers/clearObject.ts","webpack:///./src/SourceFile/applySourceFile.ts","webpack:///./src/Exploits/applyExploits.ts","webpack:///./src/Terminal/commands/alias.ts","webpack:///./src/Terminal/commands/analyze.ts","webpack:///./src/Terminal/commands/backdoor.ts","webpack:///./src/Terminal/commands/buy.ts","webpack:///./src/Terminal/commands/cat.ts","webpack:///./src/Terminal/commands/cd.ts","webpack:///./src/Terminal/commands/check.ts","webpack:///./src/Terminal/commands/connect.ts","webpack:///./src/Terminal/commands/cp.ts","webpack:///./src/Terminal/commands/expr.ts","webpack:///./src/Terminal/commands/free.ts","webpack:///./src/Terminal/commands/grow.ts","webpack:///./src/Terminal/commands/hack.ts","webpack:///./src/Terminal/commands/help.ts","webpack:///./src/Terminal/commands/history.ts","webpack:///./src/Terminal/commands/home.ts","webpack:///./src/Terminal/commands/hostname.ts","webpack:///./src/Terminal/commands/kill.ts","webpack:///./src/Terminal/commands/killall.ts","webpack:///./src/Terminal/commands/ls.tsx","webpack:///./src/Terminal/commands/lscpu.ts","webpack:///./src/Terminal/commands/mem.ts","webpack:///./src/Terminal/commands/mv.ts","webpack:///./src/Terminal/commands/nano.ts","webpack:///./src/ScriptEditor/CursorPositions.ts","webpack:///./src/Terminal/commands/ps.ts","webpack:///./src/Terminal/commands/rm.ts","webpack:///./src/Terminal/commands/run.ts","webpack:///./src/Terminal/commands/runScript.ts","webpack:///./src/Terminal/commands/runProgram.ts","webpack:///./src/Terminal/commands/scan.ts","webpack:///./src/Terminal/commands/scananalyze.ts","webpack:///./src/Terminal/commands/scp.ts","webpack:///./src/Terminal/commands/sudov.ts","webpack:///./src/Terminal/commands/tail.ts","webpack:///./src/Terminal/commands/top.ts","webpack:///./src/Terminal/commands/unalias.ts","webpack:///./src/Terminal/commands/vim.ts","webpack:///./src/Terminal/commands/weaken.ts","webpack:///./src/Terminal/commands/wget.ts","webpack:///./src/Terminal/commands/apr1.ts","webpack:///./src/Exploits/loops.ts","webpack:///./src/UncaughtPromiseHandler.ts","webpack:///./src/index.tsx"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","Player","PlayerObject","loadPlayer","saveString","JSON","parse","Reviver","money","parseFloat","exploits","sanitizeExploits","extraFormats","extraNotations","gigaMultiplier","numeralWrapper","constructor","this","defaultLocale","updateLocale","numeral","locale","console","warn","format","Math","abs","answer","formatBigNumber","formatReallyBigNumber","decimalPlaces","nAbs","Infinity","repeat","str","formatHp","formatMoney","formatSkill","formatExp","formatHashes","formatReputation","formatFavor","formatSecurity","toFixed","formatRAM","Settings","UseIEC60027_2","formatPercentage","formatter","formatServerSecurity","formatRespect","formatWanted","formatMultiplier","formatSleeveShock","formatSleeveSynchro","formatSleeveMemory","formatPopulation","formatStamina","formatShares","formatInfiltrationSecurity","formatThreads","formatStaneksGiftHeat","formatStaneksGiftCharge","formatStaneksGiftPower","parseCustomLargeNumber","numericRegExp","RegExp","join","match","NaN","number","notation","notationIndex","indexOf","largestAbsoluteNumber","n1","n2","n3","isNaN","max","parseMoney","numeralValue","parsed","selfParsed","FactionNames","BitNodeMultipliers","HackingLevelMultiplier","StrengthLevelMultiplier","DefenseLevelMultiplier","DexterityLevelMultiplier","AgilityLevelMultiplier","CharismaLevelMultiplier","ServerGrowthRate","ServerMaxMoney","ServerStartingMoney","ServerStartingSecurity","ServerWeakenRate","HomeComputerRamCost","PurchasedServerCost","PurchasedServerSoftcap","PurchasedServerLimit","PurchasedServerMaxRam","CompanyWorkMoney","CrimeMoney","HacknetNodeMoney","ManualHackMoney","ScriptHackMoney","ScriptHackMoneyGain","CodingContractMoney","ClassGymExpGain","CompanyWorkExpGain","CrimeExpGain","FactionWorkExpGain","HackExpGain","FactionPassiveRepGain","FactionWorkRepGain","RepToDonateToFaction","AugmentationMoneyCost","AugmentationRepCost","InfiltrationMoney","InfiltrationRep","FourSigmaMarketDataCost","FourSigmaMarketDataApiCost","CorporationValuation","CorporationSoftCap","BladeburnerRank","BladeburnerSkillCost","GangSoftcap","GangUniqueAugs","DaedalusAugsRequirement","StaneksGiftPowerMultiplier","StaneksGiftExtraSize","WorldDaemonDifficulty","CONSTANTS","VersionString","VersionNumber","_idleSpeed","MaxSkillLevel","MilliPerCycle","CorpFactionRepRequirement","BaseCostFor1GBOfRamHome","BaseCostFor1GBOfRamServer","TravelCost","BaseFavorToDonate","DonateMoneyToRepDivisor","FactionReputationToFavorBase","FactionReputationToFavorMult","CompanyReputationToFavorBase","CompanyReputationToFavorMult","NeuroFluxGovernorLevelMult","NumNetscriptPorts","HomeComputerMaxRam","ServerBaseGrowthRate","ServerMaxGrowthRate","ServerFortifyAmount","ServerWeakenAmount","MultipleAugMultiplier","TorRouterCost","WSEAccountCost","TIXAPICost","MarketData4SCost","MarketDataTixApi4SCost","StockMarketCommission","HospitalCostPerHp","IntelligenceCrimeWeight","IntelligenceInfiltrationWeight","IntelligenceCrimeBaseExpGain","IntelligenceProgramBaseExpGain","IntelligenceGraftBaseExpGain","IntelligenceTerminalHackBaseExpGain","IntelligenceSingFnBaseExpGain","IntelligenceClassBaseExpGain","MillisecondsPer20Hours","GameCyclesPer20Hours","MillisecondsPer10Hours","GameCyclesPer10Hours","MillisecondsPer8Hours","GameCyclesPer8Hours","MillisecondsPer4Hours","GameCyclesPer4Hours","MillisecondsPer2Hours","GameCyclesPer2Hours","MillisecondsPerHour","GameCyclesPerHour","MillisecondsPerHalfHour","GameCyclesPerHalfHour","MillisecondsPerQuarterHour","GameCyclesPerQuarterHour","MillisecondsPerFiveMinutes","GameCyclesPerFiveMinutes","BaseFocusBonus","FactionWorkHacking","FactionWorkField","FactionWorkSecurity","WorkTypeCompany","WorkTypeCompanyPartTime","WorkTypeFaction","WorkTypeCreateProgram","WorkTypeStudyClass","WorkTypeCrime","WorkTypeGraftAugmentation","ClassStudyComputerScience","ClassDataStructures","ClassNetworks","ClassAlgorithms","ClassManagement","ClassLeadership","ClassGymStrength","ClassGymDefense","ClassGymDexterity","ClassGymAgility","ClassDataStructuresBaseCost","ClassNetworksBaseCost","ClassAlgorithmsBaseCost","ClassManagementBaseCost","ClassLeadershipBaseCost","ClassGymBaseCost","ClassStudyComputerScienceBaseExp","ClassDataStructuresBaseExp","ClassNetworksBaseExp","ClassAlgorithmsBaseExp","ClassManagementBaseExp","ClassLeadershipBaseExp","CrimeShoplift","CrimeRobStore","CrimeMug","CrimeLarceny","CrimeDrugs","CrimeBondForgery","CrimeTraffickArms","CrimeHomicide","CrimeGrandTheftAuto","CrimeKidnap","CrimeAssassination","CrimeHeist","CodingContractBaseFactionRepGain","CodingContractBaseCompanyRepGain","CodingContractBaseMoneyGain","AugmentationGraftingCostMult","AugmentationGraftingTimeBase","EntropyEffect","TotalNumBitNodes","LatestUpdate","defaultSettings","ActiveScriptsServerPageSize","ActiveScriptsScriptPageSize","AutosaveInterval","CodeInstructionRunTime","DisableASCIIArt","DisableHotkeys","DisableTextEffects","DisableOverviewProgressBars","EnableBashHotkeys","TimestampsFormat","Locale","MaxLogCapacity","MaxPortCapacity","MaxTerminalCapacity","SaveGameOnFileSave","SuppressBuyAugmentationConfirmation","SuppressFactionInvites","SuppressMessages","SuppressTravelConfirmation","SuppressBladeburnerPopup","SuppressTIXPopup","SuppressSavedGameToast","SuppressAutosaveDisabledWarnings","ExcludeRunningScriptsFromSave","IsSidebarOpened","theme","defaultTheme","styles","defaultStyles","overview","x","y","opened","OwnedAugmentationsOrder","OwnedAugmentationsOrderSetting","AcquirementTime","PurchaseAugmentationsOrder","PurchaseAugmentationsOrderSetting","Default","MonacoTheme","MonacoInsertSpaces","MonacoFontSize","MonacoVim","MonacoWordWrap","init","assign","load","save","LocationName","AugmentationNames","dialogBoxCreate","txt","AlertEvents","emit","component","sx","dangerouslySetInnerHTML","__html","CityName","useStyles","makeStyles","createStyles","unbuyable","color","palette","action","disabled","colors","Money","props","classes","undefined","player","Error","canAfford","className","convertTimeMsToTimeElapsedString","time","showMilli","floor","totalSeconds","days","secondPerHours","secTruncDays","hours","secondPerMinute","secTruncHours","minutes","secTruncMinutes","milliTruncSec","res","longestCommonStart","strings","containsAllStrings","A","concat","sort","a1","a2","L","a","charAt","b","toUpperCase","substring","arr","every","isString","formatNumber","num","numFractionDigits","toLocaleString","maximumFractionDigits","minimumFractionDigits","generateRandomString","chars","random","cyrb53","seed","h1","h2","ch","charCodeAt","imul","toString","ctor","constructors","fromJSON","obj","validationData","validateObject","Generic_toJSON","ctorName","keys","index","Generic_fromJSON","AllServers","GetServer","server","isValidIPAddress","hostname","GetServerByHostname","ipserver","ip","GetServerByIP","GetAllServers","servers","DeleteServer","serverkey","ipExists","createUniqueRandomIp","createRandomIp","AddToAllServers","initForeignServers","homeComputer","networkLayers","propertiesToPatternMatch","toNumber","getRandomInt","min","metadata","serverMetadata","serverParams","numOpenPortsRequired","organizationName","maxRamExponent","maxRam","pow","prop","Server","filename","literature","messages","SpecialServers","WorldDaemon","requiredHackingSkill","networkLayer","linkNetworkLayers","network1","selectServer","server1","server2","serversOnNetwork","getRandomArrayItem","prestigeAllServers","member","loadAllServers","saveAllServers","excludeRunningScripts","TempAllServers","stringify","runningScripts","runningScriptObj","logs","Page","KEY","Factions","loadFactions","faction","getInfo","err","error","factionExists","initFactions","FactionInfos","resetFaction","Faction","newFactionObject","factionName","favor","AddToFactions","Context","React","createContext","Router","use","useContext","SoftwareCompanyPositions","ITCompanyPositions","SecurityEngineerCompanyPositions","NetworkEngineerCompanyPositions","BusinessCompanyPositions","SecurityCompanyPositions","AgentCompanyPositions","MiscCompanyPositions","SoftwareConsultantCompanyPositions","BusinessConsultantCompanyPositions","PartTimeCompanyPositions","RamCostConstants","ScriptBaseRamCost","ScriptDomRamCost","ScriptCorporationRamCost","ScriptHackRamCost","ScriptHackAnalyzeRamCost","ScriptGrowRamCost","ScriptGrowthAnalyzeRamCost","ScriptWeakenRamCost","ScriptWeakenAnalyzeRamCost","ScriptScanRamCost","ScriptPortProgramRamCost","ScriptRunRamCost","ScriptExecRamCost","ScriptSpawnRamCost","ScriptScpRamCost","ScriptKillRamCost","ScriptHasRootAccessRamCost","ScriptGetHostnameRamCost","ScriptGetHackingLevelRamCost","ScriptGetMultipliersRamCost","ScriptGetServerRamCost","ScriptGetServerMaxRam","ScriptGetServerUsedRam","ScriptFileExistsRamCost","ScriptIsRunningRamCost","ScriptHacknetNodesRamCost","ScriptHNUpgLevelRamCost","ScriptHNUpgRamRamCost","ScriptHNUpgCoreRamCost","ScriptGetStockRamCost","ScriptBuySellStockRamCost","ScriptGetPurchaseServerRamCost","ScriptPurchaseServerRamCost","ScriptGetPurchasedServerLimit","ScriptGetPurchasedServerMaxRam","ScriptRoundRamCost","ScriptReadWriteRamCost","ScriptArbScriptRamCost","ScriptGetScriptRamCost","ScriptGetRunningScriptRamCost","ScriptGetHackTimeRamCost","ScriptGetFavorToDonate","ScriptCodingContractBaseRamCost","ScriptSleeveBaseRamCost","ScriptGetOwnedSourceFiles","ScriptSingularityFn1RamCost","ScriptSingularityFn2RamCost","ScriptSingularityFn3RamCost","ScriptGangApiBaseRamCost","ScriptBladeburnerApiBaseRamCost","ScriptStanekWidth","ScriptStanekHeight","ScriptStanekCharge","ScriptStanekFragmentDefinitions","ScriptStanekPlacedFragments","ScriptStanekClear","ScriptStanekCanPlace","ScriptStanekPlace","ScriptStanekFragmentAt","ScriptStanekDeleteAt","SF4Cost","cost","bitNodeN","sf4","sourceFileLvl","RamCosts","hacknet","numNodes","purchaseNode","getPurchaseNodeCost","getNodeStats","upgradeLevel","upgradeRam","upgradeCore","upgradeCache","getLevelUpgradeCost","getRamUpgradeCost","getCoreUpgradeCost","getCacheUpgradeCost","numHashes","hashCost","spendHashes","sprintf","vsprintf","scan","hack","hackAnalyzeThreads","hackAnalyze","hackAnalyzeSecurity","hackAnalyzeChance","sleep","asleep","share","getSharePower","grow","growthAnalyze","growthAnalyzeSecurity","weaken","weakenAnalyze","print","printf","tprint","clearLog","disableLog","enableLog","isLogEnabled","getScriptLogs","nuke","brutessh","ftpcrack","relaysmtp","httpworm","sqlinject","run","exec","spawn","kill","killall","exit","atExit","scp","ls","ps","hasRootAccess","getIp","getHostname","getHackingLevel","getHackingMultipliers","getHacknetMultipliers","getBitNodeMultipliers","getServer","getServerMoneyAvailable","getServerSecurityLevel","getServerBaseSecurityLevel","getServerMinSecurityLevel","getServerRequiredHackingLevel","getServerMaxMoney","getServerGrowth","getServerNumPortsRequired","getServerRam","getServerMaxRam","getServerUsedRam","serverExists","fileExists","isRunning","stock","getSymbols","getPrice","getAskPrice","getBidPrice","getPosition","getMaxShares","getPurchaseCost","getSaleGain","buy","sell","short","sellShort","placeOrder","cancelOrder","getOrders","getVolatility","getForecast","purchase4SMarketData","purchase4SMarketDataTixApi","purchaseWseAccount","purchaseTixApi","getPurchasedServerLimit","getPurchasedServerMaxRam","getPurchasedServerCost","purchaseServer","deleteServer","getPurchasedServers","write","tryWritePort","read","peek","clear","writePort","readPort","getPortHandle","rm","scriptRunning","scriptKill","getScriptName","getScriptRam","getHackTime","getGrowTime","getWeakenTime","getScriptIncome","getScriptExpGain","getRunningScript","nFormat","tFormat","getTimeSinceLastAug","prompt","wget","getFavorToDonate","getPlayer","mv","getOwnedSourceFiles","tail","toast","universityCourse","gymWorkout","travelToCity","goToLocation","purchaseTor","purchaseProgram","getCurrentServer","connect","manualHack","installBackdoor","getDarkwebProgramCost","getDarkwebPrograms","getStats","getCharacterInformation","hospitalize","isBusy","stopAction","upgradeHomeRam","upgradeHomeCores","getUpgradeHomeRamCost","getUpgradeHomeCoresCost","workForCompany","applyToCompany","getCompanyRep","getCompanyFavor","getCompanyFavorGain","checkFactionInvitations","joinFaction","workForFaction","getFactionRep","getFactionFavor","getFactionFavorGain","donateToFaction","createProgram","commitCrime","getCrimeChance","getCrimeStats","getOwnedAugmentations","getAugmentationsFromFaction","getAugmentationCost","getAugmentationPrereq","getAugmentationPrice","getAugmentationRepReq","getAugmentationStats","purchaseAugmentation","softReset","installAugmentations","isFocused","setFocus","gang","createGang","inGang","getMemberNames","getGangInformation","getOtherGangInformation","getMemberInformation","canRecruitMember","recruitMember","getTaskNames","getTaskStats","setMemberTask","getEquipmentNames","getEquipmentCost","getEquipmentType","getEquipmentStats","purchaseEquipment","ascendMember","getAscensionResult","setTerritoryWarfare","getChanceToWinClash","getBonusTime","bladeburner","getContractNames","getOperationNames","getBlackOpNames","getBlackOpRank","getGeneralActionNames","getSkillNames","startAction","stopBladeburnerAction","getCurrentAction","getActionTime","getActionEstimatedSuccessChance","getActionRepGain","getActionCountRemaining","getActionMaxLevel","getActionCurrentLevel","getActionAutolevel","setActionAutolevel","setActionLevel","getRank","getSkillPoints","getSkillLevel","getSkillUpgradeCost","upgradeSkill","getTeamSize","setTeamSize","getCityEstimatedPopulation","getCityCommunities","getCityChaos","getCity","switchCity","getStamina","joinBladeburnerFaction","joinBladeburnerDivision","codingcontract","attempt","getContractType","getData","getDescription","getNumTriesRemaining","sleeve","getNumSleeves","setToShockRecovery","setToSynchronize","setToCommitCrime","setToUniversityCourse","travel","setToCompanyWork","setToFactionWork","setToGymWorkout","getSleeveStats","getTask","getInformation","getSleeveAugmentations","getSleevePurchasableAugs","purchaseSleeveAug","stanek","giftWidth","giftHeight","chargeFragment","fragmentDefinitions","activeFragments","clearGift","canPlaceFragment","placeFragment","getFragment","removeFragment","ui","getTheme","setTheme","resetTheme","getStyles","setStyles","resetStyles","getGameInfo","grafting","getAugmentationGraftPrice","getAugmentationGraftTime","graftAugmentation","heart","break","getRamCost","args","curr","currType","lower","upper","AllCorporationStates","CorporationConstants","INITIALSHARES","SHARESPERPRICEUPDATE","IssueNewSharesCooldown","SellSharesCooldown","CyclesPerMarketCycle","CyclesPerIndustryStateCycle","SecsPerMarketCycle","Cities","Aevum","Chongqing","Sector12","NewTokyo","Ishima","Volhaven","WarehouseInitialCost","WarehouseInitialSize","WarehouseUpgradeBaseCost","OfficeInitialCost","OfficeInitialSize","OfficeUpgradeBaseCost","BribeThreshold","BribeToRepRatio","ProductProductionCostRatio","DividendMaxPercentage","EmployeeSalaryMultiplier","CyclesPerEmployeeRaise","EmployeeRaiseAmount","BaseMaxProducts","AllMaterials","FundingRoundShares","FundingRoundMultiplier","HacknetNodeConstants","MoneyGainPerLevel","BaseCost","LevelBaseCost","RamBaseCost","CoreBaseCost","PurchaseNextMult","UpgradeLevelMult","UpgradeRamMult","UpgradeCoreMult","MaxLevel","MaxRam","MaxCores","PurchaseMultipliers","x1","x5","x10","MAX","HacknetServerConstants","HashesPerLevel","CacheBaseCost","PurchaseMult","UpgradeCacheMult","MaxServers","MaxCache","Augmentation","params","info","moneyCost","repCost","factions","prereqs","baseRepRequirement","baseCost","startingCost","isSpecial","level","hacking_mult","mults","strength_mult","defense_mult","dexterity_mult","agility_mult","charisma_mult","hacking_exp_mult","strength_exp_mult","defense_exp_mult","dexterity_exp_mult","agility_exp_mult","charisma_exp_mult","hacking_chance_mult","hacking_speed_mult","hacking_money_mult","hacking_grow_mult","company_rep_mult","faction_rep_mult","crime_money_mult","crime_success_mult","work_money_mult","hacknet_node_money_mult","hacknet_node_purchase_cost_mult","hacknet_node_ram_cost_mult","hacknet_node_core_cost_mult","hacknet_node_level_cost_mult","bladeburner_max_stamina_mult","bladeburner_stamina_gain_mult","bladeburner_analysis_mult","bladeburner_success_chance_mult","stats","programs","startingMoney","f","decimals","desc","generateStatsDescription","addToFactions","factionList","augmentations","addToAllFactions","fac","facObj","special","toJSON","modal","display","alignItems","justifyContent","paper","backgroundColor","background","default","border","primary","main","boxShadow","dark","padding","maxWidth","maxHeight","overflow","scrollbarWidth","Modal","disableRestoreFocus","disableScrollLock","disableEnforceFocus","disableAutoFocus","open","onClose","closeAfterTransition","in","children","ActionTypes","Idle","Contract","Operation","BlackOp","BlackOperation","Training","Recruitment","FieldAnalysis","Diplomacy","root","borderBottom","small","width","TableCell","Table","iTutorialSteps","ITutorial","currStep","Start","stepIsDone","GoToCharacterPage","CharacterPage","CharacterGoToTerminalPage","TerminalIntro","TerminalHelp","TerminalLs","TerminalScan","TerminalScanAnalyze1","TerminalScanAnalyze2","TerminalConnect","TerminalAnalyze","TerminalNuke","TerminalManualHack","TerminalHackingMechanics","TerminalGoHome","TerminalCreateScript","TerminalTypeScript","TerminalFree","TerminalRunScript","TerminalGoToActiveScriptsPage","ActiveScriptsPage","ActiveScriptsToTerminal","TerminalTailScript","GoToHacknetNodesPage","HacknetNodesIntroduction","HacknetNodesGoToWorldPage","WorldDescription","TutorialPageInfo","End","iTutorialStart","iTutorialNextStep","iTutorialEnd","ITutorialEvents","iTutorialPrevStep","getHomeComputer","LiteratureNames","HackersStartingHandbook","t_homeComp","safetlyCreateUniqueServer","adminRights","isConnectedTo","purchasedByPlayer","currentServer","Home","Programs","NukeProgram","prestigeAugmentation","numPeopleKilled","hacking","strength","defense","dexterity","agility","charisma","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","city","location","TravelAgency","companyName","jobs","purchasedServers","factionInvitations","queuedAugmentations","numSleeves","SourceFileFlags","sleevesFromCovenant","sleeves","Sleeve","shock","synchronize","shockRecovery","isWorking","currentWorkFactionName","currentWorkFactionDescription","createProgramName","crimeType","workHackExpGainRate","workStrExpGainRate","workDefExpGainRate","workDexExpGainRate","workAgiExpGainRate","workChaExpGainRate","workRepGainRate","workMoneyGainRate","workHackExpGained","workStrExpGained","workDefExpGained","workDexExpGained","workAgiExpGained","workChaExpGained","workRepGained","workMoneyGained","timeWorked","lastUpdate","Date","getTime","playtimeSinceLastAug","scriptProdSinceLastAug","moneySourceA","reset","hacknetNodes","hashManager","prestige","reapplyAllAugmentations","hp","max_hp","prestigeSourceFile","entropy","karma","sync","resetGangs","hasWseAccount","hasTixApiAccess","has4SData","has4SDataTixApi","corporation","moneySourceB","playtimeSinceLastBitnode","receiveInvite","includes","calculateSkill","exp","mult","calculateSkillF","calculateSkillProgress","calculateSkillProgressF","updateSkillLevels","intelligence","intelligence_exp","ratio","round","resetMultipliers","hasProgram","programName","home","toLowerCase","setMoney","gainMoney","source","recordMoneySource","loseMoney","amt","MoneySourceTracker","record","gainHackingExp","gainStrengthExp","gainDefenseExp","gainDexterityExp","gainAgilityExp","gainCharismaExp","gainIntelligenceExp","queryStatFromString","tempStr","resetWorkStatus","generalType","group","workType","factionWorkType","singularityStopWork","workMoneyLossRate","timeWorkedCreateProgram","timeWorkedGraftAugmentation","graftAugmentationName","processWorkEarnings","numCycles","focusBonus","hasAugmentation","focus","hackExpGain","strExpGain","defExpGain","dexExpGain","agiExpGain","chaExpGain","moneyGain","startWork","getWorkHackExpGain","getWorkStrExpGain","getWorkDefExpGain","getWorkDexExpGain","getWorkAgiExpGain","getWorkChaExpGain","getWorkRepGain","getWorkMoneyGain","timeNeededToCompleteWork","process","router","toFaction","createProgramWork","toTerminal","takeClass","toCity","toLocation","Locations","Slums","workPartTime","graftAugmentationWork","toGrafting","work","cancelationPenalty","find","specialName","backdoorInstalled","overMax","comp","Companies","influenceStockThroughCompanyWork","finishWork","cancelled","sing","penaltyString","playerReputation","content","reputation","startWorkPartTime","finishWorkPartTime","startFocusing","stopFocusing","startFactionWork","favorMult","startFactionHackWork","getHackingWorkRepGain","startFactionFieldWork","getFactionFieldWorkRepGain","startFactionSecurityWork","getFactionSecurityWorkRepGain","finishFactionWork","bn11Mult","company","companyPositionName","companyPosition","CompanyPositions","baseSalary","salaryMultiplier","hackingExpGain","expMultiplier","strengthExpGain","defenseExpGain","dexterityExpGain","agilityExpGain","charismaExpGain","jobPerformance","calculateJobPerformance","startCreateProgramWork","reqLevel","createProgramReqLvl","programFile","startsWith","endsWith","split","percComplete","Number","reqLvl","skillMult","getIntelligenceBonus","finishCreateProgramWork","incompleteName","startGraftAugmentationWork","augmentationName","craftAugmentationWork","NeuroreceptorManager","finishGraftAugmentationWork","augName","applyAugmentation","Augmentations","CongruityImplant","applyEntropy","startClass","costMult","expMult","workCostMult","workExpMult","earnings","calculateClassEarnings","finishClass","startCrime","hackExp","strExp","defExp","dexExp","agiExp","chaExp","workerscript","committingCrimeThruSingFn","singFnCrimeWorkerScript","toWork","finishCrime","determineCrimeSuccess","crime","Crimes","type","kills","ws","disableLogs","ALL","scriptRef","log","takeDamage","regenerateHp","getHospitalizationCost","SnackbarEvents","applyForJob","entryPosType","currCompany","currPositionName","Company","pos","isQualified","reqText","getJobRequirementText","hasPosition","newPos","getNextCompanyPositionHelper","nextPos","getNextCompanyPosition","currentPositionName","currentPosition","isSoftwareJob","isITJob","isBusinessJob","isSecurityEngineerJob","isNetworkEngineerJob","isSecurityJob","isAgentJob","isSoftwareConsultantJob","isBusinessConsultantJob","isPartTimeJob","quitJob","hasJob","Boolean","applyForSoftwareJob","posNames","applyForSoftwareConsultantJob","applyForItJob","applyForSecurityEngineerJob","applyForNetworkEngineerJob","applyForBusinessJob","applyForBusinessConsultantJob","applyForSecurityJob","applyForAgentJob","applyForEmployeeJob","position","applyForPartTimeEmployeeJob","applyForWaiterJob","applyForPartTimeWaiterJob","offset","jobStatReqOffset","reqHacking","requiredHacking","reqStrength","requiredStrength","reqDefense","requiredDefense","reqDexterity","requiredDexterity","reqAgility","reqCharisma","requiredCharisma","requiredReputation","playerAug","aug","owned","NeuroFluxGovernor","reapplyAllSourceFiles","sourceFiles","srcFileKey","SourceFiles","applySourceFile","applyExploit","checkForFactionInvitations","invitedFactions","numAugmentations","allCompanies","allPositions","values","checkMegacorpRequirements","repNeeded","illuminatiFac","Illuminati","isBanned","isMember","alreadyInvited","daedalusFac","Daedalus","covenantFac","TheCovenant","ecorpFac","ECorp","AevumECorp","megacorpFac","MegaCorp","Sector12MegaCorp","bachmanandassociatesFac","BachmanAssociates","AevumBachmanAndAssociates","bladeindustriesFac","BladeIndustries","Sector12BladeIndustries","nwoFac","NWO","VolhavenNWO","clarkeincorporatedFac","ClarkeIncorporated","AevumClarkeIncorporated","omnitekincorporatedFac","OmniTekIncorporated","VolhavenOmniTekIncorporated","foursigmaFac","FourSigma","Sector12FourSigma","kuaigonginternationalFac","KuaiGongInternational","ChongqingKuaiGongInternational","fulcrumsecrettechonologiesFac","FulcrumSecretTechnologies","fulcrumSecretServer","AevumFulcrumTechnologies","bitrunnersFac","BitRunners","bitrunnersServer","BitRunnersServer","theblackhandFac","TheBlackHand","blackhandServer","TheBlackHandServer","nitesecFac","NiteSec","nitesecServer","NiteSecServer","chongqingFac","sector12Fac","newtokyoFac","aevumFac","ishimaFac","volhavenFac","speakersforthedeadFac","SpeakersForTheDead","Sector12CIA","Sector12NSA","thedarkarmyFac","TheDarkArmy","thesyndicateFac","TheSyndicate","silhouetteFac","Silhouette","tetradsFac","Tetrads","slumsnakesFac","SlumSnakes","netburnersFac","Netburners","totalHacknetRam","totalHacknetCores","totalHacknetLevels","v","hserver","HacknetServer","cores","ram","tiandihuiFac","TianDiHui","cybersecFac","CyberSec","cybersecServer","CyberSecServer","setBitNodeNumber","queueAugmentation","PlayerOwnedAugmentation","gainCodingContractReward","reward","difficulty","CodingContractRewardType","FactionReputation","FactionReputationAll","repGain","totalGain","specialFactions","Bladeburners","filter","gainPerFaction","facName","CompanyReputation","to","gotoLocation","canAccessGrafting","giveExploit","exploit","giveAchievement","achievementId","achievement","achievements","map","ID","unlockedOn","Name","weight","calculateIntelligenceBonus","getCasinoWinnings","casino","getMult","setMult","canAccessCotMG","sf","lvl","BaseServer","super","createRandomString","moneyAvailable","moneyMax","hackDifficulty","baseDifficulty","minDifficulty","serverGrowth","capDifficulty","changeMinimumSecurity","perc","changeMaximumMoney","aboveCap","fortify","Corporation","Division","useCorporation","useDivision","Industries","Energy","Utilities","Agriculture","Fishing","Mining","Food","Tobacco","Chemical","Pharmaceutical","Computer","Robotics","Software","Healthcare","RealEstate","IndustryStartingCosts","IndustryDescriptions","corp","IndustryResearchTrees","getBaseResearchTreeCopy","getProductIndustryResearchTreeCopy","resetIndustryResearchTrees","LocationType","EmployeePositions","Operations","Engineer","Business","Management","RandD","Unassigned","hasHacknetServers","purchaseHacknet","numOwned","getCostOfNextHacknetServer","createHacknetServer","updateHashManagerCapacity","getCostOfNextHacknetNode","node","HacknetNode","hasMaxNumberHacknetServers","calculateNodeCost","calculateServerCost","getMaxNumberLevelUpgrades","nodeObj","maxLevel","calculateLevelUpgradeCost","levelsToMax","getMaxNumberRamUpgrades","calculateRamUpgradeCost","log2","getMaxNumberCoreUpgrades","calculateCoreUpgradeCost","getMaxNumberCacheUpgrades","calculateCacheUpgradeCost","cache","purchaseLevelUpgrade","levels","sanitizedLevels","isServer","purchaseRamUpgrade","purchaseCoreUpgrade","purchaseCacheUpgrade","processHacknetEarnings","HashManager","hashes","updateHashRate","h","wastedHashes","storeHashes","upgrade","HashUpgrades","multiplier","processAllHacknetServerEarnings","total","processSingleHacknetNodeEarnings","processAllHacknetNodeEarnings","totalEarnings","nodes","updateCapacity","hashCapacity","purchaseHashUpgrade","upgName","upgTarget","upg","refundUpgrade","funds","target","e","division","divisions","sciResearch","qty","changeRank","skillPoints","generateRandomContract","BlackOperationNames","BladeburnerConstants","CityNames","CyclesPerSecond","StaminaGainPerSecond","BaseStaminaLoss","MaxStaminaToGainFactor","DifficultyToTimeFactor","DiffMultExponentialFactor","DiffMultLinearFactor","EffAgiLinearFactor","EffDexLinearFactor","EffAgiExponentialFactor","EffDexExponentialFactor","BaseRecruitmentTimeNeeded","PopulationThreshold","PopulationExponent","ChaosThreshold","BaseStatGain","BaseIntGain","ActionCountGrowthPeriod","RankToFactionRepFactor","RankNeededForFaction","ContractSuccessesPerLevel","OperationSuccessesPerLevel","RanksPerSkillPoint","ContractBaseMoneyGain","HrcHpGain","HrcStaminaGain","CorporationManagementHandbook","HistoryOfSynthoids","AGreenTomorrow","AlphaOmega","SimulatedReality","BeyondMan","BrighterThanTheSun","DemocracyIsDead","Sector12Crime","ManAndMachine","SecretSocieties","TheFailedFrontier","CodedIntelligence","SyntheticMuscles","TensionsInTechRace","CostOfImmortality","TheHiddenWorld","TheNewGod","NewTriads","TheSecretWar","programsMetadata","Program","initCompanies","oldCompanies","companiesMetadata","forEach","loadCompanies","NewIndustry","industry","Industry","NewCity","offices","OfficeSpace","loc","size","UnlockUpgrade","unlockUpgrades","unlock","LevelUpgrade","priceMult","upgrades","IssueDividends","percent","dividendPercentage","SellMaterial","mat","price","replace","temp","bCost","eval","sCost","q","tempQty","maxsll","prd","sllman","SellProduct","product","all","cities","tempCity","SetSmartSupply","warehouse","smartSupply","smartSupplyEnabled","SetSmartSupplyUseLeftovers","material","useLeftover","smartSupplyUseLeftovers","BuyMaterial","BulkPurchase","matSize","MaterialSizes","maxAmount","sizeUsed","SellShares","numShares","public","shareSaleCooldown","stockSaleResults","calculateShareSale","profit","newSharePrice","newSharesUntilUpdate","issuedShares","sharePrice","shareSalesUntilPriceUpdate","BuyBackShares","buybackPrice","AssignJob","employee","job","UpgradeOfficeSize","office","initialPriceMult","ThrowParty","costPerEmployee","totalCost","employees","throwParty","PurchaseWarehouse","warehouses","Warehouse","UpgradeWarehouse","sizeUpgradeCost","updateSize","BuyCoffee","IndustryUpgrades","HireAdVert","MakeProduct","productName","designInvest","marketingInvest","makesProducts","maxProducts","hasResearch","products","Product","createCity","designCost","advCost","Research","researchName","researchTree","getAllNodes","research","ResearchMap","researched","ExportMaterial","divisionName","cityName","sanitizedAmt","isRelevantMaterial","exportObj","ind","CancelExportMaterial","LimitProductProduction","prdman","SetMaterialMarketTA1","on","marketTa1","SetMaterialMarketTA2","marketTa2","SetProductMarketTA1","SetProductMarketTA2","FragmentType","Effect","tpe","HackingChance","HackingSpeed","HackingMoney","HackingGrow","Hacking","Strength","Defense","Dexterity","Agility","Charisma","HacknetMoney","HacknetCost","Rep","WorkMoney","Crime","Bladeburner","PositionTypes","SleeveTaskType","AllGangs","power","territory","loadAllGangs","Array","updateSourceFileFlags","removeLeadingSlash","removeTrailingSlash","isValidFilename","isValidDirectoryName","isValidDirectoryPath","path","t_path","dirs","dir","isValidFilePath","fnSeparator","lastIndexOf","fn","getFirstParentDirectory","getAllParentDirectories","lastSlash","getDestinationFilepath","destination","cwd","dstDir","evaluateDirectoryPath","fileName","getFileName","isInRootDirectory","currPath","reconstructedPath","pop","evaluateFilePath","areFilesEqual","f0","f1","areImportsEquals","Shoplift","dexterity_success_weight","agility_success_weight","RobStore","hacking_success_weight","Mug","strength_success_weight","defense_success_weight","Larceny","DealDrugs","charisma_success_weight","BondForgery","TraffickArms","Homicide","GrandTheftAuto","Kidnap","Assassination","Heist","trusted","event","isTrusted","Terminal","TTerminal","updateHashCapacity","seconds","onlineTimeSeconds","hashRate","totalHashesGenerated","prodMult","cpuCores","runScript","script","updateRamUsed","calculateHashGainRate","ramUsed","companyPositionMetadata","CompanyPosition","htmlLocation","margin","spacing","flexGrow","minHeight","boxSizing","uninitialized","isInitialized","page","allowRouting","toActiveScripts","toAugmentations","toBitVerse","toBladeburner","toStats","toCorporation","toCreateProgram","toDevMenu","toFactions","toGameOptions","toGang","toHacknetNodes","toInfiltration","toJob","toMilestones","toScriptEditor","toSleeves","toStockMarket","toTravel","toTutorial","toBladeburnerCinematic","toStaneksGift","toAchievements","toThemeBrowser","toImportSave","GameRoot","engine","terminal","files","vim","setEditorOptions","useState","setPage","RecoveryMode","Recovery","Work","determineStartPage","setRerender","augPage","setAugPage","setFaction","flume","setFlume","quick","setQuick","setLocation","Infiltration","Location","Job","cinematicText","setCinematicText","errorBoundaryKey","setErrorBoundaryKey","sidebarOpened","setSideBarOpened","importString","setImportString","importAutomatic","setImportAutomatic","ImportSave","allowRoutingCalls","setAllowRoutingCalls","rerender","old","killAllScripts","saveObject","saveGame","setTimeout","reload","useEffect","subscribe","ActiveScripts","Stats","CreateProgram","DevMenu","Options","Gang","Hacknet","Milestones","Grafting","options","ScriptEditor","Sleeves","StockMarket","Tutorial","City","Travel","calculateAchievements","BitVerse","BladeburnerCinematic","StaneksGift","Achievements","ThemeBrowser","base64save","automatic","_functions","fnName","_wrap","func","scrollTo","mainPage","withSidebar","withPopups","bypassGame","enter","enterBitNode","staneksGift","workerScripts","reactivateTutorial","buyStockLong","buyStock","buyStockShort","shortStock","eventEmitterForReset","eventEmitterForUiReset","initStockMarket","initStockMarketFnForReact","sellStockLong","sellStock","sellStockShort","stockMarket","export","onExport","exportGame","forceKill","exportGameFn","installAugmentationsFn","Provider","killScripts","flexDirection","onToggled","isOpened","StockSymbols","IshimaStormTechnologies","NewTokyoDefComm","VolhavenHeliosLabs","NewTokyoVitaLife","Sector12IcarusMicrosystems","Sector12UniversalEnergy","AevumAeroCorp","VolhavenOmniaCybersystems","ChongqingSolarisSpaceSystems","NewTokyoGlobalPharmaceuticals","IshimaNovaMedical","AevumWatchdogSecurity","VolhavenLexoCorp","AevumRhoConstruction","Sector12AlphaEnterprises","VolhavenSysCoreSecurities","VolhavenCompuTek","AevumNetLinkTechnologies","IshimaOmegaSoftware","Sector12FoodNStuff","Sector12JoesGuns","validScriptExtensions","isScriptFilename","some","ext","calculateHackingChance","difficultyMult","chance","calculateHackingExpGain","expGain","calculatePercentMoneyHacked","percentMoneyHacked","calculateHackingTime","skillFactor","calculateGrowTime","calculateWeakenTime","Orders","storedCycles","ticksUntilCycle","SymbolToStockMap","shares","workerScript","Stock","order","Order","symbol","orders","stk","processOrderRefs","symbolToStockMap","processOrders","stockOrders","stockSymbol","orderTxt","loadStockMarket","deleteStockMarket","InitStockMetadata","TicksPerCycle","initSymbolToStockMap","cyclesPerStockUpdate","processStockPrices","timeNow","flipForecastForecast","stockMarketCycle","av","chc","otlkMag","cap","changePrice","OrderTypes","LimitBuy","Short","LimitSell","Long","StopBuy","StopSell","otlkMagChange","cycleForecast","cycleForecastForecast","shareTxUntilMovement","shareTxForMovement","EventEmitter","TheDarkArmyServer","DaedalusServer","DarkWeb","inviteToFaction","InvitationEvent","allFactions","factionInfo","enemy","enemies","hasAugmentationPrereqs","hasPrereqs","prereqAug","augmentationPriceMult","queuedAugmentation","getNextNeurofluxLevel","nextLevel","currLevel","processPassiveFactionRepGain","offersWork","getGangName","hRep","sRep","fRep","rate","getFactionAugmentationsFiltered","hasGangWith","augs","blacklist","TheRedPill","rng","SFC32RNG","uniqueFilter","Exploit","names","Bypass","EditSaveFile","PrototypeTampering","TimeCompression","Unclickable","UndocumentedFunctionCall","RealityAlteration","N00dles","YoureNotMeantToAccessThis","TrueRecursion","INeedARainbow","ExploitName","Set","BitburnerSaveObject","getSaveString","PlayerSave","AllServersSave","CompaniesSave","FactionsSave","AliasesSave","Aliases","GlobalAliasesSave","GlobalAliases","MessagesSave","Messages","StockMarketSave","SettingsSave","VersionSave","LastExportBonus","ExportBonus","StaneksGiftSave","AllGangsSave","btoa","unescape","encodeURIComponent","emitToastEvent","savedOn","lastSave","Promise","resolve","reject","then","saveData","playerIdentifier","identifier","getSaveFileName","pushGameSaved","catch","isRecovery","epochTime","now","bn","download","importGame","base64Save","getImportStringFromFile","file","reader","FileReader","promise","onload","readAsText","newSave","parsedSave","atob","trim","base64","importedPlayer","playerData","totalPlaytime","reduce","current","bitNode","bitNodeLevel","loadGame","navigator","userAgent","setInterval","decodeURIComponent","escape","saveObj","loadStaneksGift","loadAliases","loadGlobalAliases","loadMessages","initMessages","ver","anyPlayer","positionName","companyPositions","changes","convert","code","change","scripts","v1APIBreak","nf","revenue","expenses","lastCycleRevenue","lastCycleExpenses","thisCycleRevenue","thisCycleExpenses","augmentation","resleeves","evaluateVersionCompatibility","href","resets","createNewUpdateText","whiteSpace","paddingLeft","lineHeight","Blob","msSaveOrOpenBlob","document","createElement","url","URL","createObjectURL","body","appendChild","click","removeChild","revokeObjectURL","netscriptDelay","delayReject","delay","env","stopFlag","makeRuntimeRejectMsg","msg","scriptUrl","dependencies","resolveNetscriptRequestedThreads","functionName","requestedThreads","threads","requestedThreadsAsInt","isScriptErrorMessage","MoneyRate","CodingContractType","gen","solver","diff","numTries","generate","CodingContractTypes","md","codingContractTypesMetadata","CodingContractResult","CodingContract","getDifficulty","getMaxNumTries","getType","isSolution","solution","Cancelled","onAttempt","val","Success","Failure","CodingContractEvent","rep","Reputation","uuidv4","uuid","subscribers","sub","Adjuster","setValue","label","placeholder","add","subtract","tons","onChange","InputProps","startAdornment","title","onClick","style","transform","endAdornment","makeNode","Node","text","createBaseResearchTreeNodes","rootNode","autoBrew","autoParty","autoDrugs","bulkPurchasing","cph4","drones","dronesAssembly","dronesTransport","goJuice","hrRecruitment","hrTraining","joywire","marketta1","marketta2","overclock","scAssemblers","stimu","addChild","baseResearchTree","ResearchTree","setRoot","upgradeFulcrum","upgradeCapacity1","upgradeCapacity2","upgradeDashboard","numCycleForGrowth","growth","ajdGrowthRate","serverGrowthPercentage","coreBonus","numCycleForGrowthCorrected","targetMoney","startMoney","adjGrowthRate","exponentialBase","coreMultiplier","threadMultiplier","w","ey","cycles","bt","corr","bct","opc","fca","cca","ceil","processSingleServerGrowth","calculateServerGrowth","oldMoneyAvailable","isValidNumber","usedCycles","prestigeHomeComputer","homeComp","hasBitflume","BitFlume","updateRamUsage","getServerOnNetwork","isBackdoorInstalled","initAugmentations","resetFactionAugmentations","clearObject","initNeuroFluxGovernor","initUnstableCircadianModulator","initGeneralAugmentations","initBladeburnerAugmentations","ChurchOfTheMachineGod","initChurchOfTheMachineGodAugmentations","resetAugmentation","augmentationToUpdate","updateNeuroFluxGovernorCosts","getGenericAugmentationPriceMultiplier","updateAugmentationCosts","getBaseAugmentationPriceMultiplier","neuroFluxGovernorAugmentation","getNextNeuroFluxLevel","augmentationExists","AddToAugmentations","reapply","augObj","ownedAug","force","augmentationList","nfgIndex","isRepeatableAug","upArrowSymbol","downArrowSymbol","leftArrowSymbol","rightArrowSymbol","getArrow","UP_ARROW","W","LEFT_ARROW","DOWN_ARROW","S","RIGHT_ARROW","D","SkillNames","BladesIntuition","Cloak","Marksman","WeaponProficiency","ShortCircuit","DigitalObserver","Tracer","Overclock","Reaper","EvasiveSystem","Datamancer","CybersEdge","HandsOfMidas","Hyperdrive","count","getActionTimePenalty","getChaosCompetencePenalty","getChaosDifficultyBonus","useGang","snackbar","zIndex","logBoxBaseZIndex","alignSelf","SnackbarProvider","dense","maxSnack","anchorOrigin","horizontal","vertical","autoHideDuration","containerRoot","Snackbar","enqueueSnackbar","closeSnackbar","useSnackbar","variant","duration","id","severity","k","killWorkerScript","rerenderUi","WorkerScript","stopAndCleanUpWorkerScript","RunningScript","killWorkerScriptByPid","pid","compareArrays","clearTimeout","killNetscriptDelay","runningScript","rs","ramUsage","delete","AddRecentScript","WorkerScriptStartStopEventEmitter","removeWorkerScript","MoneyCost","StatsRow","cellNone","align","String","defaultConstructorParams","initPrice","marketCap","spreadPerc","range","divisor","lastPrice","playerShares","playerAvgPx","playerShortShares","playerAvgShortPx","otlkMagForecast","getAbsoluteForecast","totalSharesUnrounded","totalShares","maxShares","changeForecastForecast","newff","newPrice","changeAmt","increaseChance","getForecastIncreaseChance","influenceForecast","influenceForecastForecast","printAliases","parseAliasDeclaration","dec","global","matches","addGlobalAlias","addAlias","getAlias","getGlobalAlias","removeAlias","substituteAliases","origCommand","commandArray","somethingSubstituted","depth","alias","Literature","ThemeEvents","refreshTheme","createTheme","combat","cha","int","backgroundprimary","backgroundsecondary","button","successlight","success","successdark","white","black","light","primarylight","primarydark","secondary","secondarylight","secondarydark","errorlight","errordark","infolight","infodark","warning","warninglight","warningdark","well","typography","fontFamily","textTransform","components","MuiInputBase","styleOverrides","input","userSelect","MuiInput","borderBottomColor","underline","MuiInputLabel","MuiButtonGroup","marginRight","MuiButton","borderRadius","MuiSelect","icon","defaultProps","MuiTextField","MuiTypography","MuiMenu","list","MuiMenuItem","MuiAccordionSummary","MuiAccordionDetails","MuiIconButton","MuiTooltip","tooltip","fontSize","disableInteractive","MuiSlider","valueLabel","MuiDrawer","paperAnchorDockedLeft","borderRight","welllight","MuiDivider","MuiFormControlLabel","MuiSwitch","switchBase","track","MuiPaper","MuiTablePagination","select","selectLabel","displayedRows","MuiTab","textColorPrimary","MuiTabs","scrollButtons","opacity","TabIndicatorProps","MuiAlert","standardSuccess","standardError","standardWarning","standardInfo","TTheme","injectFirst","CopyableText","setOpen","copyText","setSelectionRange","execCommand","Water","Plants","Metal","Hardware","Chemicals","Drugs","Robots","AICores","calculateExp","skill","currentSkill","nextSkill","baseExperience","nextExperience","progress","currentExperience","remainingExperience","experience","UpgradeType","gangMemberUpgradesMetadata","def","upgType","Weapon","dex","agi","Armor","Vehicle","Rootkit","layerCounter","LogBoxEvents","LogBoxClearEvents","LogBoxManager","LogWindow","close","visibility","overflowY","overflowX","draggableRef","useRef","rootRef","setScript","container","minimized","setMinimized","updateLayer","full","maxLength","clearInterval","addEventListener","onResize","removeEventListener","debounce","isOnScreen","resetPosition","bounds","getBoundingClientRect","right","bottom","left","innerWidth","top","outerWidth","state","setState","handle","onDrag","clientX","clientY","innerHeight","ref","flexFlow","onMouseDown","cursor","has","findRunningScript","startWorkerScript","overflowWrap","height","line","Map","StatsTable","rows","wide","T","MuiTable","row","elem","noWrap","startingLevel","extraLevels","totalMultiplier","startingRam","numUpgrades","currentRam","startingCores","currentCores","startingCache","currentCache","FactionWorkType","OptionSwitch","checked","control","createProgressBarText","derived","totalTicks","bars","dashes","NetscriptPorts","NetscriptPort","prestigeWorkerScripts","port","startNetscript1Script","codeWithImports","codeLineOffset","running","importProcessingRes","ast","ecmaVersion","allowReserved","sourceType","generatedCode","hasImports","walksimple","ImportDeclaration","scriptName","getScript","scriptAst","specifiers","namespace","local","fnNames","fnDeclarations","FunctionDeclaration","fnsToImport","lineOffset","linesRemoved","processNetscript1Imports","interpreterInitialization","scope","NetscriptFunctions","entry","tempWrapper","fnArgs","pseudoToNative","cb","errorTextArray","errorMsg","setProperty","createAsyncFunction","createNativeFunction","nativeToPseudo","interpreter","Interpreter","runInterpreter","more","step","errorMessage","parent","createAndAddWorkerScript","oneRamUsage","getRamUsageFromRunningScript","roundToTwo","arrayToString","generateNextPid","set","runningFn","wrap","propName","finally","vars","charge","executeJSScript","SyntaxError","message","stack","startNetscript2Script","onlineExpGained","onlineMoneyMade","updateOnlineScriptTimes","onlineRunningTime","loadAllRunningScripts","skipScriptLoad","markUpdated","scriptCalculateOfflineProduction","runScriptFromScript","caller","scriptname","isArray","arg","ramAvailable","hasAdminRights","Material","getMarkupLimit","qlt","mku","dmd","dmdR","cmp","cmpR","processMarket","priceChange","compChange","dmdChange","calculateWantedPenalty","respect","wantedLevel","calculateRespectGain","task","baseRespect","statWeight","hackWeight","strWeight","defWeight","dexWeight","agiWeight","chaWeight","territoryMult","territoryPenalty","respectMult","calculateWantedLevelGain","baseWanted","wanted","calc","calculateMoneyGain","baseMoney","calculateAscensionPointsGain","calculateAscensionMult","points","gainFavor","getFavorGain","totalRep","favorToRep","repToFavor","calculateMoneyGainRate","startingCore","sanitizedCores","coreBaseCost","win","reachedLimit","reached","Game","_","X","Shapes","O","I","J","Z","KeyHandler","press","onKeyDown","TimerProgress","withStyles","bar","transition","LinearProgress","GameTimer","setV","intervalId","onExpire","millis","item","xs","interpolate","settings","out","lerpD","lerp","Trivial","Normal","Hard","Impossible","constructLocation","asciiArt","LocationsMetadata","addLocation","BitNode","BitNodes","initBitNodeMultipliers","sf12Lvl","inc","updateMoneyGainRate","gain","moneyGainRatePerSecond","totalMoneyGenerated","minMax","getPurchaseServerCost","sanitizedRam","isPowerOfTwo","sign","getPurchaseServerMaxRam","getPurchaseServerLimit","clz32","newServ","purchaseRamForHomeComputer","TextFile","append","show","getTextFile","textFiles","createTextFile","Skills","Skill","costInc","successChanceAll","successChanceStealth","successChanceKill","successChanceOperation","successChanceContract","maxLvl","actionTime","effStr","effDef","effDex","effAgi","successChanceEstimate","stamina","GangMemberUpgrades","GangMemberUpgrade","getBuyTransactionCost","posType","getSellTransactionGain","processTransactionForecastMovement","firstShares","remainingShares","numIterations","forecastChange","forecastForecastChange","calculateBuyMaxAmount","isLong","remainingMoney","currPrice","getStockMarket4SDataCost","getStockMarket4STixApiCost","getStockMarketWseCost","getStockMarketTixApiCost","timePassed","confidence","dataMap","serv","timesGrown","host","offlineRunningTime","offlineExpGained","timesWeakened","findRunningScriptByPid","Hashes","ActionIdentifier","general","contracts","ops","blackops","events","updateSkillMultipliers","calculateMaxStamina","maxStamina","getCurrentCity","calculateStaminaPenalty","canAttemptBlackOp","actionId","getActionObject","reqdRank","rank","nm","BlackOperations","isAvailable","actionTimeCurrent","actionTimeToComplete","resetAction","exceptionAlert","comms","testBlackOp","getRecruitmentTime","skillName","skills","executeConsoleCommands","commands","consoleHistory","arrayOfCommands","executeConsoleCommand","postToConsole","saveToLogs","consoleLogs","getTimestamp","clearConsole","bladeburnerFac","storeCycles","getActionIdFromTypeAndName","convertedType","convertedName","operations","executeStartConsoleCommand","GeneralActions","executeSkillConsoleCommand","skillNames","multKeys","skillMultipliers","currentLevel","pointCost","calculateCost","executeLogConsoleCommand","flag","logging","executeHelpConsoleCommand","ConsoleHelpText","helpList","helpText","executeAutomateConsoleCommand","variable","highLow","automateActionHigh","automateActionLow","automateThreshHigh","automateThreshLow","automateEnabled","parseCommandArguments","command","start","endQuote","SPACE","substr","triggerMigration","sourceCityName","destCityName","destCity","sourceCity","rand","percentage","triggerPotentialMigration","randomEvent","chaos","gainActionStats","successMult","unweightedGain","unweightedIntGain","weights","getDiplomacyEffectiveness","getRecruitmentSuccessChance","teamSize","effCharisma","effCha","charismaFactor","resetSkillMultipliers","effHack","effInt","multiplierNames","multiplierName","getMultiplier","multiplierValue","completeOperation","teamCount","losses","teamLost","improvePopulationEstimateByPercentage","changePopulationByPercentage","changeEstEqually","nonZero","changeChaosByCount","changeChaosByPercentage","changePopulationByCount","estChange","estOffset","completeContract","improvePopulationEstimateByCount","completeAction","isOperation","difficultyMultiplier","rewardMultiplier","rewardFac","successes","setMaxLevel","rankGain","addOffset","failures","loss","damage","rankLoss","hpLoss","hpLost","calculateHospitalizationCost","numHosp","moneyLost","logLossText","autoLevel","teamLossMax","OperationDaedalus","staminaGain","staminaBonus","eff","successChance","contract","growthF","Growths","operation","maxRank","bladeburnersFactionName","favorBonus","rankNeededForSp","totalSkillPoints","gainedSkillPoints","processAction","actionTimeOverflow","calculateStaminaGainPerSecond","effAgility","maxStaminaBonus","oldMax","difficultyFac","decays","isStealth","isKill","BladesSimulacrum","op","randomEventCounter","getTypeAndNameFromActionId","types","getContractNamesNetscriptFn","getOperationNamesNetscriptFn","getBlackOpNamesNetscriptFn","getGeneralActionNamesNetscriptFn","getSkillNamesNetscriptFn","startActionNetscriptFn","errorLogText","canRunOp","getActionTimeNetscriptFn","actionObj","getActionEstimatedSuccessChanceNetscriptFn","getEstSuccessChance","recChance","getActionCountRemainingNetscriptFn","getSkillLevelNetscriptFn","getSkillUpgradeCostNetscriptFn","upgradeSkillNetscriptFn","getTeamSizeNetscriptFn","setTeamSizeNetscriptFn","sanitizedSize","joinBladeburnerFactionNetscriptFn","DefaultConstructorParams","isPlayerEmployed","isMegacorp","hasAgentPositions","hasBusinessConsultantPositions","hasBusinessPositions","hasEmployeePositions","hasITPositions","hasSecurityPositions","hasSoftwareConsultantPositions","hasSoftwarePositions","hasWaiterPositions","materials","updateMaterialSizeUsed","matName","getStorageMultiplier","GangMemberTasks","gangMemberTasksMetadata","GangMemberTask","isHacking","isCombat","HashUpgradesMetadata","HashUpgrade","Fragments","Fragment","shape","limit","fullAt","rotation","sy","mx","my","qx","qy","neighboors","candidates","coord","cells","candidate","cell","copy","FragmentById","fragment","Booster","NoneFragment","None","DeleteFragment","Delete","CalculateShareMult","opts","suppressDialog","totalPrice","origTotal","newTotal","rerenderFn","resultTxt","gains","netProfit","origCost","Output","formatTime","RawOutput","raw","Link","TTimer","timeLeft","ConfirmationModal","confirmationText","onConfirm","additionalButton","hash","__COMMIT_HASH__","GangConstants","GangRespectToReputationRatio","MaximumGangMembers","CyclesPerTerritoryAndPowerUpdate","AscensionMultiplierRatio","Names","globalModuleSequenceNumber","Script","otherScripts","moduleSequenceNumber","saveScript","formatCode","dependent","dependents","dependentScript","calculateRamUsage","ramUsageEntries","entries","imports","vals","DarkWebItems","BruteSSHProgram","DarkWebItem","FTPCrackProgram","RelaySMTPProgram","HTTPWormProgram","SQLInjectProgram","ServerProfiler","DeepscanV1","DeepscanV2","AutolinkProgram","AutoLink","FormulasProgram","Formulas","actionNames","actionName","Action","Suit","Card","suit","formatValue","isRedSuit","Hearts","Diamonds","getStringRepresentation","SourceFile","bitnodeKey","bitnode","createTaskTracker","Person","calculateStat","getFactionHackingWorkRepGain","updateStatLevels","MathJaxWrapper","version","src","lineNumber","sendMessage","forced","recvd","showMessage","serverHostname","other","addMessageToServer","checkForMessagesToSend","redPillFlag","jumper0","MessageFilenames","Jumper0","jumper1","Jumper1","jumper2","Jumper2","jumper3","Jumper3","jumper4","Jumper4","cybersecTest","CyberSecTest","nitesecTest","NiteSecTest","bitrunnersTest","BitRunnersTest","redpill","RedPill","redpillOwned","flightName","Flight","AddToAllMessages","Message","nsFuncsGenerator","sanitizedPid","found","Environment","getScriptOnServer","shouldLog","OperationTyphoon","OperationZero","OperationX","OperationTitan","OperationAres","OperationArchangel","OperationJuggernaut","OperationRedDragon","OperationK","OperationDeckard","OperationTyrell","OperationWallace","OperationShoulderOfOrion","OperationHyron","OperationMorpheus","OperationIonStorm","OperationAnnihilus","OperationUltron","OperationCenturion","OperationVindictus","commit","div","successRate","researchMetadata","ApplyToJobButton","getJobRequirementTooltip","initElectron","normalizeFileName","getFiles","deleteFile","removeFile","saveFile","Buffer","from","overwritten","writeToScriptFile","initWebserver","funcs","typesFn","appNotifier","initAppNotifier","triggerSave","triggerGameExport","triggerScriptsExport","exportScripts","getSaveData","getSaveInfo","async","getImportDataFromString","pushSaveData","appSaveFns","initSaveFunctions","bridge","electronBridge","receive","send","initElectronBridge","pushGameReady","playtime","game","pushImportResult","wasImported","pushDisableRestore","achievementData","bitNodeFinishedState","wd","hasAccessToSF","knowsAboutBitverse","Icon","Condition","THE_BLACK_HAND","THE_COVENANT","Visible","MONEY_1Q","MONEY_M1B","Secret","INSTALL_1","INSTALL_100","QUEUE_40","HACKING_100000","COMBAT_3000","NEUROFLUX_255","NS2","FROZE","RUNNING_SCRIPTS_1000","DRAIN_SERVER","MAX_RAM","MAX_CORES","SCRIPTS_30","KARMA_1000000","STOCK_1q","DISCOUNT","SCRIPT_32GB","FIRST_HACKNET_NODE","MAX_HACKNET_NODE","HACKNET_NODE_10M","REPUTATION_10M","DONATION","TRAVEL","WORKOUT","TOR","hasTorRouter","HOSPITALIZED","hospitalization","GANG","FULL_GANG","members","GANG_TERRITORY","GANG_MEMBER_POWER","CORPORATION","CORPORATION_BRIBE","CORPORATION_PROD_1000","CORPORATION_EMPLOYEE_3000","CORPORATION_REAL_ESTATE","Description","INTELLIGENCE_255","BLADEBURNER_DIVISION","BLADEBURNER_OVERCLOCK","BLADEBURNER_UNSPENT_100000","FIRST_HACKNET_SERVER","AdditionalUnlock","ALL_HACKNET_SERVER","MAX_HACKNET_SERVER","hs","HACKNET_SERVER_1B","MAX_CACHE","capacity","SLEEVE_8","INDECISIVE","FAST_BN","CHALLENGE_BN1","CHALLENGE_BN2","CHALLENGE_BN3","CHALLENGE_BN6","CHALLENGE_BN7","CHALLENGE_BN8","CHALLENGE_BN9","hacknet_expenses","CHALLENGE_BN10","CHALLENGE_BN12","BYPASS","PROTOTYPETAMPERING","UNCLICKABLE","UNDOCUMENTEDFUNCTIONCALL","TIMECOMPRESSION","REALITYALTERATION","N00DLES","EDITSAVEFILE","UNACHIEVABLE","CHALLENGE_BN13","StaneksGift1","DEVMENU","RAINBOW","TRUE_RECURSION","playerAchievements","missingAchievements","flatMap","Intelligence","useTheme","colSpan","WorkInProgressOverview","onClickFocus","header","workCell","workHeader","pt","pb","workSubtitles","mt","details","innerText","textAlign","CharacterOverview","killOpen","setKillOpen","hackingProgress","strengthProgress","defenseProgress","dexterityProgress","agilityProgress","charismaProgress","borderTop","flex","aria-label","CorporationUnlockUpgrades","setRedPillFlag","destroyedBitNode","newBitNode","bitNodeNumber","sourceFileKey","sourceFile","alreadyOwned","ownedSourceFile","playerSrcFile","PlayerOwnedSourceFile","giveSourceFile","midpoint","program","description","BadRNG","WHRNG","s1","s2","s3","genSeed","Favor","crimeKey","currentTask","finishTask","resetTaskStatus","gainRatesForTask","currentTaskLocation","currentTaskMaxTime","retValue","currentTaskTime","successGainRates","keysForIteration","gainExperience","fromOtherSleeve","multFac","pHackExp","pStrExp","pDefExp","pDexExp","pAgiExp","pChaExp","earningsForPlayer","earningsForTask","earningsForSleeves","getMemoryUpgradeCost","memory","currCost","currMemory","getRepGain","Field","Security","installAugmentation","cyclesUsed","Class","Gym","updateTaskGainRates","Synchro","gymStatType","takeUniversityCourse","universityName","AevumSummitUniversity","Sector12RothmanUniversity","VolhavenZBInstituteOfTechnology","newCity","tryBuyAugmentation","AevumCrushFitnessGym","AevumSnapFitnessGym","Sector12IronGym","Sector12PowerhouseGym","VolhavenMilleniumFitnessGym","baseGymExp","totalExpMultiplier","getTrainingMult","sanitizedStat","totalExpMult","getStudyMult","upgradeMemory","sanitizedWorkType","offerHackingWork","offerFieldWork","offerSecurityWork","workoutAtGym","gymName","stat","RamCalculationErrorCode","TerminalEvents","TerminalClearEvents","orderType","refs","orderBook","executeOrder","isBuy","predefined","getPredefinedThemes","AlertManager","alerts","setAlerts","sha256","getMessageHash","getRandomByte","getDB","indexedDB","indexedDbRequest","onupgradeneeded","createObjectStore","onerror","ev","onsuccess","db","transaction","objectStore","request","put","deleteGame","canGetBonus","setLastExportBonus","unixTime","getTeamSuccessBonus","inst","getActionTypeSkillSuccessBonus","AevumGalacticCybersystems","Sector12DeltaOne","AevumPolice","NewTokyoNoodleBar","nextPosition","repMultiplier","reqdHacking","reqdStrength","reqdDefense","reqdDexterity","requiredAgility","reqdAgility","reqdCharisma","reqdReputation","hackingEffectiveness","strengthEffectiveness","defenseEffectiveness","dexterityEffectiveness","agilityEffectiveness","charismaEffectiveness","hackRatio","strRatio","defRatio","dexRatio","agiRatio","chaRatio","reputationGain","logEntry","logUpd","displayLog","recordHack","moneyGained","recordGrow","recordWeaken","StartButton","fmt","FactionInfo","infoText","offerHackingMission","keep","augmentationRepRequirementMult","CorporationUpgrades","getUpgrade","getUpgradeCost","getCost","newCap","problemType","getRandomProblemType","getRandomReward","randServer","getRandomServer","contractFn","getRandomFilename","addContract","generateRandomContractOnHome","generateContract","problemTypes","rewardType","factionsThatAllowHacking","sanitizeRewardType","numFactions","randFaction","allJobs","randIndex","findCrime","roughName","atCapacity","marketCycles","emp","hireRandomEmployee","maxEne","maxHap","maxMor","perfMult","hasAutobrew","hasAutoparty","salaryPaid","mor","hap","ene","calculateEmployeeProductivity","employeeProd","prod","calculateProductivity","getElementById","cre","sal","Employee","creativity","efficiency","salary","assignEmployeeToJob","unassignEmployeeFromJob","setEmployeeToJob","amount","jobCount","acc","validator","paramValidator","sanitizedSource","StatsProgressBar","remaining","StatsProgressOverviewCell","characterOverviewStyles","paddingBottom","oldhp","PromptEvent","PromptManager","setPrompt","PromptMenuText","PromptMenuSelect","PromptContent","PromptMenuBoolean","paddingTop","submit","autoFocus","onInput","stopPropagation","ENTER","preventDefault","choices","getItems","createCityMap","demand","competition","markup","quality","per","performance","dur","durability","rel","reliability","aes","aesthetics","fea","features","siz","reqMats","req","createProduct","empWorkMult","fin","prog","finishProduct","progrMult","engrRatio","mgmtRatio","rndRatio","opsRatio","busRatio","totalMult","sciFac","calculateRating","advMult","busmgtgRatio","isFinite","awareness","popularity","reqMat","ProductRatingWeights","rat","Quality","Performance","Durability","Reliability","Aesthetics","Features","prodMats","ProgramsSeen","ProgramsRoot","getHackingLevelRemaining","disableGutters","mb","gridTemplateColumns","curCompletion","getProgCompletion","Paper","flexWrap","mr","InvitationsSeen","FactionsRoot","allJoinedFactions","ml","openFaction","openFactionAugPage","getAugsLeft","acceptInvitation","ActivateRecoveryMode","RecoveryRoot","errorData","resetError","issueUrl","newIssueUrl","startIcon","onTriggered","px","multiline","fullWidth","sharePower","StartSharing","CSM","CorporationState","numUnlockUpgrades","fill","upgradeMultipliers","addFunds","getState","gameCycles","issueNewSharesCooldown","cycleProfit","retainedEarnings","getDividends","updateSharePrice","nextState","dividendsPerShare","dividends","determineValuation","getTargetSharePrice","targetPrice","immediatelyUpdateSharePrice","sharesTracker","sharesUntilUpdate","sharesSold","maxIterations","convertCooldownToString","cd","upgN","dividendTaxPercentage","basePrice","upgradeAmt","getProductionMultiplier","getDreamSenseGain","getAdvertisingMultiplier","getEmployeeCreMultiplier","getEmployeeChaMultiplier","getEmployeeIntMultiplier","getEmployeeEffMultiplier","getSalesMultiplier","getScientificResearchMultiplier","getStarterGuide","hasHandbook","handbookFn","showLiterature","HashRate","popEst","canAccessGang","getGangFaction","startGang","locations","Option","buttonText","TickerDisplayMode","DisplayModeButton","tickerDisplayMode","Portfolio","changeDisplayMode","StockTickersConfig","changeWatchlistFilter","sum","EPSILON","decay","getSuccessChance","baseTime","skillFac","effDexterity","statFac","est","clamp","real","low","high","competence","playerStatLvl","effMultiplier","getSuccessesNeededForNextLevel","baseSuccessesPerLevel","maintainMembership","Neurolink","CashRoot","PCMatrix","finishAction","penalty","hack_asc_points","str_asc_points","def_asc_points","dex_asc_points","agi_asc_points","cha_asc_points","resetPidCounter","setMaxRam","currentCity","onTravel","WorldMap","SuccessChance","estimatedSuccessChance","StaticModal","char","CorruptableText","setContent","counter","timers","letter","randFrom","randomize","timerId","checkIfConnectedToDarkweb","listAllDarkwebItems","printRaw","buyDarkwebItem","itemName","programsRef","existingPartialExeIndex","findIndex","buyAllDarkwebItems","itemsToBuy","baseCheck","netscriptCanHack","initialCheck","netscriptCanGrow","netscriptCanWeaken","GraftableAugmentation","antiLog","ReputationRate","isNumber","ParseCommands","allCommands","flat","ParseCommand","inQuote","prevChar","escaped","DOUBLE_QUOTE","QUOTE","CinematicText","setI","done","setDone","lines","onDone","newI","auto","MaxSleevesFromCovenant","BaseCostPerSleeve","HemoRecirculator","Targeting1","Targeting2","Targeting3","SyntheticHeart","SynfibrilMuscle","CombatRib1","CombatRib2","CombatRib3","NanofiberWeave","SubdermalArmor","WiredReflexes","GrapheneBoneLacings","BionicSpine","GrapheneBionicSpine","BionicLegs","GrapheneBionicLegs","SpeechProcessor","TITN41Injection","EnhancedSocialInteractionImplant","BitWire","ArtificialBioNeuralNetwork","ArtificialSynapticPotentiation","EnhancedMyelinSheathing","SynapticEnhancement","NeuralRetentionEnhancement","DataJack","ENM","ENMCore","ENMCoreV2","ENMCoreV3","ENMAnalyzeEngine","ENMDMA","Neuralstimulator","NeuralAccelerator","CranialSignalProcessorsG1","CranialSignalProcessorsG2","CranialSignalProcessorsG3","CranialSignalProcessorsG4","CranialSignalProcessorsG5","NeuronalDensification","NuoptimalInjectorImplant","SpeechEnhancement","FocusWire","PCDNI","PCDNIOptimizer","PCDNINeuralNetwork","ADRPheromone1","ADRPheromone2","ShadowsSimulacrum","HacknetNodeCPUUpload","HacknetNodeCacheUpload","HacknetNodeNICUpload","HacknetNodeKernelDNI","HacknetNodeCoreDNI","Neurotrainer1","Neurotrainer2","Neurotrainer3","Hypersight","LuminCloaking1","LuminCloaking2","SmartSonar","PowerRecirculator","QLink","SPTN97","HiveMind","CordiARCReactor","SmartJaw","Neotra","Xanipher","HydroflameLeftArm","nextSENS","OmniTekInfoLoad","PhotosyntheticCells","CRTX42AA","Neuregen","NutriGen","INFRARet","DermaForce","GrapheneBrachiBlades","BrachiBlades","GrapheneBionicArms","BionicArms","SNA","EsperEyewear","EMS4Recombination","OrionShoulder","HyperionV1","HyperionV2","GolemSerum","VangelisVirus","VangelisVirus3","INTERLINKED","BladeRunner","BladeArmor","BladeArmorPowerCells","BladeArmorEnergyShielding","BladeArmorUnibeam","BladeArmorOmnibeam","BladeArmorIPU","StaneksGift2","StaneksGift3","randomBonuses","bonuses","randomNumber","getRandomBonus","UnstableCircadianModulatorParams","UnstableCircadianModulator","specialReferenceIF","specialReferenceFOR","specialReferenceWHILE","memCheckGlobalKey","parseOnlyRamCalculate","dependencyMap","completedParses","parseQueue","parseCode","moduleName","parseOnlyCalculateDeps","additionalModules","initialModule","nextModule","URLImportError","ImportError","detailedCosts","unresolvedRefs","resolvedRefs","prefix","ident","dep","applyFuncRam","loadedFns","refDetail","fnRam","checkInfiniteLoop","missingAwaitLine","walk","WhileStatement","st","walkDeeper","nodeHasTrueTest","test","hasAwait","AwaitExpression","currentModule","globalKey","internalToExternal","addRef","external","objectPrototypeProperties","getOwnPropertyNames","commonVisitors","Identifier","DoWhileStatement","ForStatement","update","IfStatement","consequent","alternate","MemberExpression","importModuleName","spec","imported","codeCopy","decimal","isHackingGang","respectGainRate","wantedGainRate","moneyGainRate","storedTerritoryAndPowerCycles","territoryClashChance","territoryWarfareEngaged","notifyMemberDeath","getPower","getTerritory","processGains","processExperienceGains","processTerritoryAndPowerGains","moneyGains","respectGains","wantedLevelGains","justice","recordEarnedRespect","oldWanted","newWanted","gangName","calculatePower","gainRoll","multiplicativeGain","powerMult","PowerMultiplier","additiveGain","gangs","g","others","thisGang","otherGang","thisPwr","thisChance","calculateTerritoryGain","winGang","loseGang","powerBonus","territoryGain","clash","won","baseDeathChance","modifiedDeathChance","killMember","getRespectNeededToRecruitMember","GangMember","getWantedPenalty","memberTotal","totalRespect","lostRespect","earnedRespect","ascend","getDiscount","discount","getAllTaskNames","taskName","pidCounter","tempCounter","MAX_SAFE_INTEGER","updateDynamicRam","ramCost","dynamicLoadedFns","dynamicRamUsage","safeGetServer","callingFnName","makeRuntimeErrorMsg","scriptArgs","getRunningScriptByPid","getCannotFindRunningScriptErrorMessage","failOnHacknetServer","callingFn","errstack","userstack","stackline","dependency","parseChromeStackline","lineMatch","funcMatch","chromeCall","parseFirefoxStackline","lio","firefoxCall","rejectMsg","manual","hackingTime","canHack","hackChance","expGainedOnSuccess","expGainedOnFailure","percentHacked","maxThreadNeeded","moneyDrained","influenceStockThroughServerHack","argsToString","toNative","helper","string","funcName","argName","boolean","checkSingularityAccess","getValidPort","iport","NetscriptGang","NetscriptSleeve","extra","NetscriptExtra","NetscriptHacknet","NetscriptStanek","NetscriptBladeburner","NetscriptCodingContract","NetscriptCorporation","formulas","NetscriptFormulas","singularity","NetscriptSingularity","stockmarket","NetscriptStockMarket","NetscriptUserInterface","NetscriptGrafting","_hostname","_hackAmount","hackAmount","_threads","_time","growTime","moneyBefore","moneyAfter","logGrowPercent","influenceStockThroughServerGrow","_growth","_cores","weakenTime","end","_format","tprintf","_fn","possibleLogs","arguments","openPortCount","sshPortOpen","ftpPortOpen","smtpPortOpen","httpPortOpen","sqlPortOpen","_scriptname","scriptServer","spawnDelay","killByPid","scriptsRunning","_hostname1","hostname2","hostname1","destServer","currServ","txtFile","newFile","sourceScript","oldScript","newScript","_grep","grep","allFiles","processes","speed","production","purchaseCost","coreCost","levelCost","_filename","_ram","_name","hostnameStr","_port","_mode","tryWrite","_file","clearPort","status","suc","offlineMoneyMade","_n","_milliseconds","_milliPrecision","milliseconds","milliPrecision","alert","_message","_variant","_txt","_url","_target","$","writeToTextFile","fail","tor","inBladeburner","hasCorporation","_host","_source","_destination","source_is_txt","dest_is_txt","source_file","dest_file","flags","Flags","fromEntries","getFunctionNames","functionNames","moneyHacked","orgName","percTotalMoneyHacked","moneyGrown","percTotalMoneyGrown","performanceMult","cyclesOfWork","compName","tooltiptext","reqRep","TerminalHelpText","TemplatedHelpTexts","HelpTexts","analyze","backdoor","cat","check","cls","cp","expr","free","help","history","lscpu","mem","nano","sudov","unalias","GameEnv","Platform","getErrorForDisplay","errorInfo","isElectron","Production","toDisplay","language","cookiesEnabled","cookieEnabled","doNotTrack","indexedDb","platform","Steam","Browser","environment","getErrorMetadata","Development","componentStack","Tracking","Retirement","Investigation","Raid","initValue","Hand","cards","addCards","removeByIndex","StockTickerTxButton","getContract","contractName","removeContract","ret","CodingContractModal","setProps","setAnswer","contractType","tries","BitFlumeEvent","BitFlumeModal","terminalCommandHistory","generalMethods","augmentationMethods","canAccessBladeburner","bladeburnerMethods","startBladeburner","canAccessCorporation","corporationMethods","startCorporation","gangMethods","serverMethods","InvitationModal","litObj","Literatures","recentScripts","unshift","timestamp","opt_initFunc","sourceCode","sourceCodeLineOffset","acorn","PARSE_OPTIONS","initFunc_","paused_","polyfills_","functionCounter_","stepFunctions_","stepMatch","methodName","createScope","stripLocations_","State","stateStack","nodeConstructor","READONLY_DESCRIPTOR","configurable","writable","NONENUMERABLE_DESCRIPTOR","READONLY_NONENUMERABLE_DESCRIPTOR","VARIABLE_DESCRIPTOR","STEP_ERROR","SCOPE_REFERENCE","VALUE_IN_DESCRIPTOR","toStringCycles_","getErrorLineNumber","getErrorLineNumberMessage","appendCode","populateScope_","initGlobalScope","OBJECT_PROTO","FUNCTION_PROTO","initFunction","initObject","proto","OBJECT","initArray","initString","initBoolean","initNumber","initDate","initRegExp","initError","initMath","initJSON","thisInterpreter","EvalError","parseInt","strFunctions","decodeURI","encodeURI","wrapper","nativeFunc","throwException","URI_ERROR","FUNCTION","ARRAY","ARRAY_PROTO","REGEXP","REGEXP_PROTO","DATE","DATE_PROTO","identifierRegexp","var_args","calledWithNew","newFunc","createObjectProto","argsStr","SYNTAX_ERROR","parentScope","boxThis","isObject","getScope","strict","box","getPrototype","thisArg","func_","funcThis_","arguments_","arrayPseudoToNative","TYPE_ERROR","doneExec_","setNativeFunctionPrototype","valueOf","throwIfNullUndefined","properties","arrayNativeToPseudo","descriptor","preventExtensions","getOwnPropertyDescriptor","setter","hasValue","pseudoDescriptor","propertyIsEnumerable","newArray","first","legalArrayLength","RANGE_ERROR","class","reverse","howmany","opt_begin","opt_end","opt_separator","iLength","getProperty","hasProperty","element","isa","jLength","searchElement","opt_fromIndex","STRING","fromCharCode","functions","compareString","locales","localeCompare","separator","jsList","regexp","search","newSubstr","BOOLEAN","NUMBER","numConsts","fractionDigits","toExponential","ERROR","digits","precision","toPrecision","radix","Function","UTC","pattern","rgx","populateRegExp","lastIndex","opt_message","newError","createObject","createErrorSubclass","EVAL_ERROR","REFERENCE_ERROR","myMath","mathConsts","numFunctions","myJSON","nativeObj","child","legalArrayIndex","Value","strs","pseudoRegexp","nativeRegexp","ignoreCase","createFunction","opt_constructor","illegalConstructor","asyncFunc","pseudoDate","pseudoObj","opt_cycles","pseudo","native","nativeArray","pseudoArray","lineNum","isGetter","TypeError","opt_descriptor","ReferenceError","defObj","firstNode","expression","createSpecialScope","opt_scope","getValueFromScope","prevNode","setValueToScope","nodeClass","isConstructor","getValue","Completion","NORMAL","BREAK","CONTINUE","RETURN","THROW","errorClass","lineNumErrorMsg","unwind","lineNumberMsg","cv","labels","isLoop","isSwitch","realError","errorTable","RangeError","URIError","createGetter_","funcThis","doneCallee_","doneArgs_","createSetter_","elements","n_","array_","doneLeft_","doneRight_","leftReference_","doneGetter_","leftValue_","leftValue","doneSetter_","setterValue_","rightValue","directEval_","funcNode","paramName","paramValue","argsList","evalNode","argsWithCallback","done_","throwValue","mode_","test_","doneInit_","doneObject_","variable_","object_","visited_","name_","gotPropName","props_","doneVariable_","doneProperty_","properties_","kinds","switchValue_","defaultCase_","index_","switchCase","matched_","tested_","doneBlock_","doneHandler_","doneFinalizer_","leftSide_","changeValue","returnValue","declarations","declarationNode","init_","doneBody_","numServerGrowthCycles","numServerGrowthCyclesAdjusted","findSleevePurchasableAugs","ownedAugNames","availableAugs","isAvailableForSleeve","validMults","StaneksGiftEvents","GraftableAugmentations","getAvailableAugs","canGraft","AugPreReqsChecklist","preAug","GraftingRoot","graftableAug","selectedAug","setSelectedAug","graftOpen","setGraftOpen","selected","matchEnding","zip","JSZip","zipFiles","fileNames","fileContents","zipFn","generateAsync","FileSaver","saveAs","AugmentationAccordion","displayName","unmountOnExit","stealthIcon","xmlns","viewBox","killIcon","ActionLevel","isActive","canIncrease","canDecrease","Autolevel","TeamSizeButton","BlinkingCursor","setOn","DeleteGameButton","modalOpened","setModalOpened","SoftResetButton","noConfirmation","ThemeEditorButton","themeEditorOpen","setThemeEditorOpen","ThemeCollaborate","StyleEditorButton","styleEditorOpen","setStyleEditorOpen","TravelAgencyRoot","setDestination","startTravel","symbolsLoaded","symbols","SetupTextEditor","populate","exclude","OpenScript","lastPosition","model","openScripts","currentScript","Root","editorRef","monacoRef","vimStatusRef","vimEditor","setVimEditor","editor","setEditor","setFilter","searchExpanded","setSearchExpanded","setRAM","ramEntries","setRamEntries","updatingRam","setUpdatingRam","decorations","setDecorations","optionsOpen","setOptionsOpen","setOptions","insertSpaces","wordWrap","ramInfoOpen","setRamInfoOpen","dimensions","setDimensions","regenerateModel","createModel","debouncedHandleResize","updateRAM","keydown","ctrlKey","metaKey","require","initVimMode","VimMode","Vim","defineEx","defineAction","_cm","nTabs","currIndex","currentTabIndex","onTabClick","nextIndex","mapCommand","context","dispose","debouncedSetRAM","useMemo","newCode","entriesDisp","scriptToSave","textFile","curIndex","isDisposed","setModel","setPosition","revealLineInCenter","onTabClose","closingScript","savedScriptIndex","savedScriptCode","serverScriptIndex","indexOffset","getServerCode","openScript","serverScript","handleFilterChange","handleExpandSearch","filteredOpenScripts","editorHeight","tabMaxWidth","tabTextWidth","tabIconWidth","onDragEnd","items","startIndex","endIndex","removed","reorder","droppableId","direction","provided","snapshot","innerRef","droppableProps","isDraggingOver","spellCheck","iconButtonStyle","minWidth","borderColor","scriptTabText","serverScriptCode","dirty","draggableId","disableInteractiveElementBlocking","draggableProps","dragHandleProps","flexShrink","textOverflow","onTabUpdate","beforeMount","monaco","languages","registerCompletionItemProvider","provideCompletionItems","suggestions","kind","CompletionItemKind","insertText","insertTextRules","CompletionItemInsertTextRule","InsertAsSnippet","getLanguages","loader","tokenizer","token","libSource","typescript","javascriptDefaults","addExtraLib","typescriptDefaults","loadThemes","onMount","Position","loading","defaultLanguage","defaultValue","newArr","tempScript","awaitWarning","newDecorations","deltaDecorations","startLineNumber","startColumn","endLineNumber","endColumn","isWholeLine","glyphMarginClassName","glyphMarginHoverMessage","infLoop","glyphMargin","getAction","makeScriptBlob","compile","shouldCompile","uurls","_getScriptUrls","loadedModule","isDependencyOutOfDate","scriptModuleSequenceNumber","depScript","seen","urlStack","ranges","importNodes","ExportNamedDeclaration","ExportAllDeclaration","transformedCode","matchingScripts","importedScript","urls","blob","ScriptUrl","vargs","numDashes","libarg","argv","defaultInterpreter","TablePaginationActionsAll","rowsPerPage","onPageChange","Cell","cellProps","onMouseEnter","frames","Apr1Events","Apr1","getMonth","getDate","isApr1","setN","allow","newNs2Template","detectSimpleScriptGlob","globString","globDatabase","parsedGlob","glob","preGlob","postGlob","globError","globMatches","globAgainst","parseSimpleScriptGlob","commonEditor","scriptEditorRouteOptions","filesToLoadOrCreate","globSearch","isEmpty","filepath","getFilepath","fileIsNs2","isNs2","CursorPositions","saveCursor","column","automate","stop","corpName","additionalShares","warehouseApi","OfficeApi","createTreantMarkup","childrenArray","htmlClass","HTMLclass","innerHTML","findNode","setParent","chart","nodeStructure","queue","getMultiplierHelper","getProductProductionMultiplier","StanekConstants","RAMBonus","BaseSize","MaxSize","currPos","nextPosName","Engine","_lastUpdate","updateGame","expForOtherSleeves","decrementAllCounters","checkCounters","Counters","autoSaveCounter","updateSkillLevelsCounter","updateDisplays","updateDisplaysLong","updateActiveScriptsDisplay","createProgramNotifications","augmentationsNotifications","passiveFactionGrowth","mechanicProcess","contractGeneration","achievementsCounter","counterName","warningToast","warnAutosaveDisabled","adjustedCycles","startExploits","setupUncaughtPromiseHandler","timeOffline","numCyclesOffline","offlineReputation","offlineHackingIncome","offlineProductionFromHacknetNodes","hacknetProdInfo","timeOfflineString","_thisUpdate","requestAnimationFrame","LoadingScreen","setShow","loaded","setLoaded","reason","doLoad","installed","stacks","newMultipliers","calculateEntropy","typ","invalidArgs","baseSize","af","highestCharge","numCharge","cotmg","inBonus","updateMults","effect","fragmentAt","boost","neighboor","CalculateEffect","canPlace","rootX","rootY","newFrag","ActiveFragment","aFrag","fragments","collide","place","findFragment","worldX","worldY","clearCharge","thisFragment","otherFragment","dx","dy","Void","infiltrationData","techVendorMaxRam","techVendorMinRam","StatsElement","EarningsElement","ServerType","All","Foreign","Owned","Purchased","ServerDropdown","isValidServer","purchased","serverType","purchase","canPurchase","DECK_COUNT","Result","Blackjack","bet","canStartGame","playerHand","deck","safeDrawCard","dealerHand","gameInProgress","Pending","getTrueHandValue","finishGame","Tie","PlayerWonByBlackjack","DealerWon","hand","handValues","getHandValue","valuesUnder21","isHandBusted","newHand","newDealerHand","PlayerWon","dealerHandValue","playerHandValue","betInput","wager","wagerInvalid","wagerInvalidHelperText","startGame","Deck","render","playerHandValues","getHandDisplayValues","dealerHandValues","wagerOnChange","helperText","playerHit","playerStay","startOnClick","elevation","card","prev","hidden","fontWeight","red","ReactCard","Clubs","Spades","allFactionAugs","factionAugs","factionAug","repFromDonation","TickerHeaderFormatData","longestName","longestSymbol","AchievementEntry","cssFiltersUnlocked","cssFiltersLocked","isUnlocked","mainColor","achievedOn","unlocked","colorFilters","Color","hueRotate","angle","PI","sin","cos","multiply","grayscale","sepia","saturate","matrix","newR","newG","newB","brightness","linear","contrast","slope","intercept","invert","hsl","Solver","targetHSL","reusedColor","solve","solveNarrow","solveWide","css","best","initial","spsa","A1","iters","bestLoss","deltas","highArgs","lowArgs","ck","lossDiff","ak","fix","idx","filters","colorHSL","getFiltersFromHex","hex","rgb","hexToRgb","gameCPS","Theme","credit","screenshot","img1","reference","outputHistory","startHack","startGrow","startWeaken","startBackdoor","startAnalyze","finishHack","oldSec","newSec","finishGrow","finishWeaken","finishBackdoor","finishAnalyze","isHacknet","org","canRunScripts","hackingSkill","security","hackingChance","numPort","getProgressText","getFile","getLitFile","lit","currDir","setcwd","contractOpen","executeScanAnalyzeCommand","visited","depthQueue","newS","titleDashes","connectToServer","executeCommands","commandHistory","commandHistoryIndex","executeCommand","n00dlesServ","commandName","scananalyze","apr1","removeBracketsFromArrayString","strCpy","removeQuotesFromString","convert2DArrayToString","ans","len","nums","ways","padStart","spiral","u","col","playerAns","reach","intervals","numIntervals","interval","sanitizedResult","sanitizedAns","B","C","ansArr","ipInAns","maxCur","maxSoFar","hold1","MIN_SAFE_INTEGER","hold2","release1","release2","prices","hold","rele","cur","createTriangleRecurse","numLevels","createTriangle","triangle","dp","numRows","numColumns","currentRow","gridString","grid","obstacleGrid","roll","dfs","pair","playerAnsArray","resultInAnswer","numDigits","digitsArray","sanitizedPlayerAnsArr","evaluated","multed","htmlID","requireHackingLevel","targetServer","numAugReq","ipaddress","byteRange","multipliers","formattedHours","getHours","formattedMinutes","getMinutes","formattedSeconds","getSeconds","hack_exp","hack_mult","str_exp","str_mult","def_exp","def_mult","dex_exp","dex_mult","agi_exp","agi_mult","cha_exp","cha_mult","assignToTask","unassignFromTask","difficultyPerCycles","getGainedAscensionPoints","canAscend","getCurrentAscensionMults","getAscensionMultsAfterAscend","getAscensionResults","postAscend","preAscend","applyUpgrade","respectToDeduct","buyUpgrade","createDescription","AllSoftwarePositions","AllITPositions","AllNetworkEngineerPositions","SecurityEngineerPositions","AllTechnologyPositions","AllBusinessPositions","AllAgentPositions","AllSecurityPositions","AllSoftwareConsultantPositions","AllBusinessConsultantPositions","SoftwarePositionsUpToHeadOfEngineering","SoftwarePositionsUpToLeadDeveloper","BusinessPositionsUpToOperationsManager","WaiterOnly","EmployeeOnly","PartTimeWaiterOnly","PartTimeEmployeeOnly","OperationsManagerOnly","CEOOnly","Sector12CarmichaelSecurity","advertisingMult","employeeChaMult","employeeCreMult","employeeEffMult","employeeIntMult","productionMult","productProductionMult","salesMult","sciResearchMult","storageMult","effectText","costPerLevel","hasTargetServer","lookup","checkGangApiAccess","getGangMember","updateRam","_faction","wantedLevelGainRate","wantedPenalty","cpy","_memberName","memberName","hack_asc_mult","str_asc_mult","def_asc_mult","dex_asc_mult","agi_asc_mult","cha_asc_mult","respectGain","wantedLevelGain","recruited","tasks","_taskName","getGangTask","_equipName","equipName","equipment","typecheck","_engage","engage","_otherGang","playerPower","checkSleeveAPIAccess","checkSleeveNumber","sleeveNumber","sl","_sleeveNumber","_crimeRoughName","crimeRoughName","_universityName","_className","_cityName","acompanyName","_factionName","_workType","_gymName","_stat","jobTitle","maxHp","agilityExp","charismaExp","companyRep","crimeMoney","crimeSuccess","defenseExp","dexterityExp","factionRep","hackingExp","strengthExp","workMoney","workHackExpGain","workStrExpGain","workDefExpGain","workDexExpGain","workAgiExpGain","workChaExpGain","workMoneyGain","workRepGain","purchasableAugs","_augName","bypass","doc","completely_unused_field","real_document","alterReality","recur","rainbow","guess","bcrypt","tryGuess","getHacknetNode","hi","maxNumNodes","_i","hasUpgraded","timeOnline","totalProduction","_upgName","_upgTarget","getHashUpgrades","getHashUpgradeLevel","checkStanekAPIAccess","_rootX","_rootY","_rotation","_fragmentId","fragmentId","avgCharge","newTheme","currentTheme","errors","newStyles","currentStyles","checkBladeburnerAccess","skipjoined","apiDenied","bladeburnerDenied","checkBladeburnerCity","getBladeburnerActionObject","_blackOpName","blackOpName","_type","_level","_autoLevel","_skillName","_size","getCodingContract","returnReward","is2DArray","answerComponents","creward","hasUnlockUpgrade","upgradeName","getCorporation","hasResearched","getDivision","getOffice","getWarehouse","getMaterial","materialName","getProduct","getEmployee","employeeName","checkAccess","api","getSafeDivision","getPurchaseWarehouseCost","getUpgradeWarehouseCost","_divisionName","hasWarehouse","_materialName","sll","_productName","pCost","cityData","developmentProgress","purchaseWarehouse","upgradeWarehouse","sellMaterial","_amt","_price","sellProduct","_all","discontinueProduct","setSmartSupply","_enabled","enabled","setSmartSupplyUseLeftovers","buyMaterial","bulkPurchase","makeProduct","_designInvest","_marketingInvest","exportMaterial","_sourceDivision","_sourceCity","_targetDivision","_targetCity","sourceDivision","targetDivision","targetCity","cancelExportMaterial","setMaterialMarketTA1","_on","setMaterialMarketTA2","setProductMarketTA1","setProductMarketTA2","getHireAdVertCost","getHireAdVertCount","getResearchCost","_researchName","setAutoJobAssignment","_job","_amount","getOfficeSizeUpgradeCost","assignJob","_employeeName","hireEmployee","upgradeOfficeSize","_costPerEmployee","buyCoffee","hireAdVert","minEne","minHap","expandIndustry","_industryName","industryName","expandCity","unlockUpgrade","_upgradeName","levelUpgrade","issueDividends","_percent","createCorporation","_corporationName","_selfFund","corporationName","selfFund","getUnlockUpgradeCost","getUpgradeLevel","getUpgradeLevelCost","getExpandIndustryCost","getExpandCityCost","getInvestmentOffer","fundingRound","percShares","acceptInvestmentOffer","funding","investShares","goPublic","_numShares","initialSharePrice","sellShares","buyBackShares","bribe","_amountCash","_amountShares","amountCash","amountShares","reFac","robFac","aiFac","advFac","hwFac","getProductDescriptionText","getMaximumNumberProducts","additional","hasMaximumNumberProducts","calculateProductionFactors","multSum","cityMult","updateWarehouseSizeUsed","prodName","newInd","employeeSalary","officeLoc","processMaterialMarket","processProductMarket","popularityGain","awarenessGain","MAX_VALUE","processMaterials","processProducts","wh","foo","imp","buyAmt","maxAmt","smartBuy","smartSupplyStore","worseAmt","totalSize","freeSpace","maxProd","getOfficeProductivity","totalMatSize","tmp","reqMatName","normQty","producableFrac","reqMatQtyNeeded","fooProd","fooI","businessFactor","getBusinessFactor","advertisingFactor","getAdvertisingFactors","marketFactor","getMarketFactor","markupLimit","numerator","sqrtNumerator","sqrtDenominator","denominator","sqrt","optimalPrice","marketTa2Price","sellAmt","totalExp","expI","amtStr","expIndustry","expWarehouse","engrProd","mgmtProd","opProd","mgmtFactor","processProduct","totalProfit","forProduct","netStorageSize","sCostString","businessProd","calculateEffectWithFactors","awarenessFac","popularityFac","ratioFac","updateResearchTree","expFac","linearFac","morale","happiness","energy","det","trainingEff","effCre","effEff","prodBase","checkFormulasAccess","calculateFavorToRep","_favor","calculateRepToFavor","_rep","_exp","_mult","_skill","hackPercent","growPercent","hackTime","levelUpgradeCost","_startingLevel","_extraLevels","_costMult","ramUpgradeCost","_startingRam","coreUpgradeCost","_startingCore","_extraCores","extraCores","hacknetNodeCost","constants","hacknetServers","hashGainRate","_ramUsed","_maxRam","HScalculateHashGainRate","HScalculateLevelUpgradeCost","HScalculateRamUpgradeCost","HScalculateCoreUpgradeCost","cacheUpgradeCost","_startingCache","_extraCache","extraCache","HScalculateCacheUpgradeCost","hashUpgradeCost","hacknetServerCost","HScalculateServerCost","ascensionPointsGain","ascensionMultiplier","_points","checkTixApiAccess","getStockFromSymbol","_symbol","_shares","_posType","sanitizedPosType","_pos","orderPos","ltype","lpos","stockMarketOrders","forecast","checkGraftingAPIAccess","_focus","wasFocusing","craftableAug","maxClearanceLevel","startingSecurityLevel","TechVendor","University","AevumCasino","Casino","Special","NewTokyoArcade","Sector12CityHall","Hospital","WorldStockExchange","ChongqingChurchOfTheMachineGod","IshimaGlitch","detect","hasChanges","orig","fl","backups","textfield","InteractiveTutorialRoot","contents","canNext","square","overviewContainer","visibilityToggle","collapse","Overview","setX","setY","CurrentIcon","KeyboardArrowUpIcon","KeyboardArrowDownIcon","LeftIcon","SchoolIcon","EqualizerIcon","fakeDrag","triggerMouseEvent","eventType","clickEvent","createEvent","initEvent","dispatchEvent","Loading","onStop","defaultPosition","onDoubleClick","openedMixin","transitions","easing","sharp","enteringScreen","closedMixin","leavingScreen","breakpoints","up","Drawer","styled","shouldForwardProp","active","borderLeft","listitem","SidebarRoot","hackingOpen","setHackingOpen","characterOpen","setCharacterOpen","worldOpen","setWorldOpen","helpOpen","setHelpOpen","flashTerminal","flashStats","flashActiveScripts","flashHacknet","flashCity","flashTutorial","augmentationCount","invitationsCount","programCount","getAvailableCreatePrograms","canOpenFactions","canOpenAugmentations","canOpenSleeves","canCorporation","canGang","canJob","canStockMarket","canBladeburner","canStaneksGift","clickTerminal","clickScriptEditor","clickStats","clickActiveScripts","clickCreateProgram","clickFactions","clickAugmentations","clickHacknet","clickCity","clickTravel","clickJob","clickBladeburner","clickGang","clickTutorial","handleShortcuts","altKey","E","H","R","P","F","U","G","anchor","timeout","clsx","badgeContent","AugmentationsRoot","installOpen","setInstallOpen","InstalledAugmentations","sourceAugs","Alphabetically","aug1","aug2","Improvements","BN5Stat","base","MultiplierTable","PlayerMultipliers","augP","calculateAugmentedStats","BladeburnerMults","PurchasedAugmentations","SourceFileMinus1","OwnedSourceFiles","sourceSfs","sf1","sf2","sfObj","SourceFileAccordion","DevMenuRoot","General","setError","addMoney","TransitionProps","expandIcon","bigNumber","modifyExp","modifier","modifyKarma","resetExperience","modifyFactionRep","AllFaction","modifyFactionFavor","labelId","arial-label","setAugmentation","validSFN","setSF","sfN","sfLvl","setAllSF","setProgram","AllPrograms","Servers","setServer","setCompany","modifyCompanyRep","AllCompanies","modifyCompanyFavor","modifyBladeburnerRank","modify","modifyBladeburnerCycles","modifyGangCycles","modifyCorporationFunds","modifyCorporationCycles","CodingContracts","setCodingcontract","cc","stockPrice","setStockPrice","setStockSymbol","processStocks","inputSymbols","SM","stocks","sleeveSetStoredCycles","Stanek","modCycles","modCharge","TimeSkip","timeskip","playerAchievement","setPlayerAchievements","achieved","grantAchievement","removeAchievement","Entropy","BladeburnerRoot","travelOpen","setTravelOpen","inFaction","wordBreak","gap","TravelModal","nopadding","preformatted","Line","Console","setCommand","consoleInput","consoleHistoryIndex","setConsoleHistoryIndex","Logs","tabIndex","inputRef","prevCommand","currentTarget","scrollHook","scrollTop","scrollHeight","AllPages","tab","GeneralActionPage","GeneralActionList","actions","GeneralActionElem","computedActionTimeCurrent","actionData","ContractPage","ContractList","ContractElem","Contracts","StealthIcon","KillIcon","OperationPage","OperationList","OperationElem","TeamSizeModal","BlackOpPage","BlackOpList","blackopName","blackop","BlackOpElem","hasReqdRank","SkillPage","valid","onUpgrade","SkillList","SkillElem","canLevel","GangRoot","ManagementSubpage","GangStats","territoryStr","BonusTime","CyclerPerSecond","bonusMillis","GangMemberList","ascendOnly","setAscendOnly","onRecruit","newValue","GangMemberCard","GangMemberCardContent","ascendOpen","setAscendOpen","borderRightWidth","onAscend","borderLeftWidth","onTaskChange","GangMemberStats","asc","KillScriptsModal","TaskSelector","setCurrentTask","contextMember","TaskDescription","AscensionModal","RecruitButton","RecruitModal","setName","recruit","onKeyUp","TerritorySubpage","gangNames","infoOpen","setInfoOpen","formatTerritory","OtherGangTerritory","clashVictoryChance","TerritoryInfoModal","NextReveal","PurchasedUpgrade","UpgradeButton","GangMemberUpgradePanel","currentCategory","setCurrentCategory","filterUpgrades","weaponUpgrades","armorUpgrades","vehicleUpgrades","rootkitUpgrades","augUpgrades","categories","Weapons","Vehicles","Rootkits","EquipmentsSubpage","CorporationRoot","setDivisionName","canExpand","industryType","MainPanel","CityTabs","setCity","cityStateSetter","countEmployee","SwitchButton","manualMode","switchMode","ManualManagement","setEmployee","employeePositionSelectorInitialValue","employeePositions","positionNames","AutoAssignJob","numJob","numUnassigned","AutoManagement","vechain","totalMorale","totalHappiness","totalEnergy","totalSalary","avgMorale","avgHappiness","avgEnergy","IndustryOffice","upgradeOfficeSizeOpen","setUpgradeOfficeSizeOpen","throwPartyOpen","setThrowPartyOpen","employeeManualAssignMode","setEmployeeManualAssignMode","UpgradeSizeButton","upgradeSize","UpgradeOfficeSizeModal","upgradeCost","upgradeCost15","maxMult","maxNum","multIncrease","upgradeCostMax","ThrowPartyModal","setCost","canParty","EffectText","MakeProductButton","makeOpen","setMakeOpen","hasMaxProducts","createProductButtonText","Text","researchOpen","setResearchOpen","advertisingInfo","advertisingFactors","totalAdvertisingFac","convertEffectFacToGraphic","Upgrades","IndustryOverview","MakeProductModal","allCities","design","setDesign","marketing","setMarketing","createProductPopupText","Upgrade","wrapInTooltip","ele","but","ResearchModal","retainHeight","WarehouseRoot","smartSupplyOpen","setSmartSupplyOpen","canAffordUpgrade","stateText","mats","isInStock","isRelevant","breakdownItems","breakdown","previous","IndustryWarehouse","EmptyWarehouse","Leftover","setChecked","SmartSupplyModal","ProductElem","sellOpen","setSellOpen","limitOpen","setLimitOpen","discontinueOpen","setDiscontinueOpen","marketTaOpen","setMarketTaOpen","nfB","hasUpgradeDashboard","sellButtonText","limitProductionButtonText","DiscontinueProductModal","LimitProductProductionModal","setLimit","limitProductProduction","SellProductModal","iQty","setQty","setPx","initialPrice","MarketTA2","ProductMarketTaModal","MaterialElem","purchaseMaterialOpen","setPurchaseMaterialOpen","exportOpen","setExportOpen","sellMaterialOpen","setSellMaterialOpen","materialMarketTaOpen","setMaterialMarketTaOpen","tutorial","purchaseButtonText","ExportModal","possibleDivisions","defaultDivision","setIndustry","setAmt","removeExport","currentDivision","possibleCities","newCost","setNewCost","MaterialMarketTaModal","SellMaterialModal","setPrice","BulkPurchaseText","parsedAmt","BulkPurchaseSection","setBuyAmt","PurchaseMaterialModal","purchaseMaterial","IndustryProductEquation","reqs","reqAmt","ExpandNewCity","ExpandIndustryTab","possibleIndustries","newIndustry","multRows","appendMult","DividendsStats","PublicButtons","PrivateButtons","BribeButton","findInvestorsopen","setFindInvestorsopen","goPublicopen","setGoPublicopen","fundingAvailable","findInvestorsTooltip","upgradeData","sellSharesOpen","setSellSharesOpen","buybackSharesOpen","setBuybackSharesOpen","issueNewSharesOpen","setIssueNewSharesOpen","issueDividendsOpen","setIssueDividendsOpen","sellSharesOnCd","sellSharesTooltip","issueNewSharesOnCd","issueNewSharesTooltip","canBribe","totalDividends","storedTime","LevelableUpgrade","UU","BribeFactionModal","setStock","selectedFaction","setSelectedFaction","getRepText","SellSharesModal","setShares","ProfitIndicator","BuybackSharesModal","CostIndicator","IssueDividendsModal","setPercent","canIssue","maxNewSharesUnrounded","maxNewShares","newShares","IssueNewSharesModal","issueNewShares","privateShares","FindInvestorsModal","GoPublicModal","calcRawDiff","startingDifficulty","InfiltrationRoot","setStart","calcDifficulty","calcReward","StartingDifficulty","Difficulty","Reward","cancel","arrowPart","arrow","Intro","Stage","minigames","SlashGame","BracketGame","BackwardGame","BribeGame","CheatCodeGame","Cyberpunk2077Game","MinesweeperGame","WireCuttingGame","setLevel","stage","setStage","Countdown","results","setResults","gameIds","setGameIds","lastGames","nextGameId","ids","setupNextGame","pushResult","next","stageComponent","onFinish","Minigame","MiniGame","onSuccess","Sell","onFailure","automated","Progress","difficulties","timer","setRight","OPEN_BRACKET","LESS_THAN","OPEN_PARENTHESIS","OPEN_BRACE","generateLeftSide","CLOSE_PARENTHESIS","CLOSE_BRACKET","CLOSE_BRACE","GREATER_THAN","getChar","phase","setPhase","words","makeAnswer","setGuess","BACKSPACE","nextGuess","positive","option","negative","array","shuffleArray","makeChoices","setIndex","newIndex","arrows","generateCode","puzzle","randChar","generatePuzzle","generateAnswer","setPos","move","mines","minefield","field","generateEmptyField","generateMinefield","memoryPhase","setMemoryPhase","fieldEquals","wiresmin","wiresmax","rules","PIPE","DOT","FORWARD_SLASH","HYPHEN","HASH","colorNames","blue","wires","numWires","wireColors","generateWires","cutWires","setCutWires","questions","numQuestions","questionGenerators","randomPositionQuestion","randomColorQuestion","generateQuestion","question","wire","wireNum","shouldCut","checkWire","wiresToBeCut","shouldBeCut","cutColor","Victory","quitInfiltration","levelBonus","CYCLES_PER_SEC","WorkInProgressRoot","unfocus","stopText","numBars","progressBar","GameOptionsRoot","importInput","execTime","setExecTime","logSize","setLogSize","portSize","setPortSize","terminalSize","setTerminalSize","autosaveInterval","setAutosaveInterval","timestampFormat","setTimestampFormat","setLocale","diagnosticOpen","setDiagnosticOpen","importSaveOpen","setImportSaveOpen","importData","setImportData","gutterBottom","sm","valueLabelDisplay","marks","method","alt","File","FileList","ii","ex","confirmedImportGame","ServerAccordion","FileDiagnosticModal","ColorEditor","onColorChange","defaultColor","hideTextfield","deferred","newColor","disableAlpha","ThemeEditorModal","customTheme","setCustomTheme","setTemplateTheme","py","placement","maxRows","importedTheme","FontFamilyField","refreshId","errorText","setErrorText","setFontFamily","LineHeightField","setLineHeight","StyleEditorModal","setRefreshId","customStyle","setCustomStyle","persistToSettings","endIcon","SleeveRoot","FAQOpen","setFAQOpen","SleeveElem","statsOpen","setStatsOpen","earningsOpen","setEarningsOpen","augmentationsOpen","setAugmentationsOpen","abc","setABC","doing","SleeveAugmentationsModal","MoreStatsModal","MoreEarningsModal","universitySelectorOptions","gymSelectorOptions","possibleJobs","forbiddenCompanies","otherSleeve","possibleFactions","forbiddenFactions","facInfo","second","universities","gyms","Synchronize","canDo","getABC","s0","setS0","setS1","setS2","validActions","detailsF","details2","detail","FAQModal","HacknetRoot","purchaseMultiplier","setPurchaseMultiplier","purchaseMultiplierOnClicks","onClicks","GeneralInfo","HacknetNodeElem","purchaseMult","upgradeLevelButton","upgradeRAMButton","upgradeCoresButton","increase","upgradeLevelCost","upgradeRamCost","upgradeCoreCost","HacknetServerElem","upgradeRamButton","upgradeCacheButton","upgradeCacheCost","HashUpgradeModal","serversMap","HacknetUpgradeElem","selectedServer","setSelectedServer","MultiplierButton","MultiplierButtons","buttons","btnProps","PlayerInfo","hasServers","PurchaseButton","GenericLocation","locContent","locName","getLocationSpecificContent","serverMeta","CompanyLocation","quitOpen","setQuitOpen","isEmployedHere","favorGain","onQuit","QuitJobModal","GymLocation","train","HospitalLocation","btnStyle","getHealed","currHp","SlumsLocation","shopliftChance","robStoreChance","mugChance","larcenyChance","drugsChance","bondChance","armsChance","homicideChance","gtaChance","kidnapChance","assassinateChance","heistChance","SpecialLocation","handleBladeburner","new","worldHeader","HTMLElement","handleGrafting","CreateCorporation","handleCotMG","renderBladeburner","renderCotMG","CreateCorporationModal","canSelfFund","n00dlePower","ArcadeRoot","Megabyteburner2000","currentGame","BBCabinetRoot","origin","joystick","borderStyle","borderWidth","ServerButton","TechVendorLocation","purchaseServerButtons","RamButton","TorButton","purchaseTorRouter","darkweb","CoresButton","maxCores","PurchaseServerModal","setHostname","tryToPurchaseServer","TravelConfirmationModal","UniversityLocation","take","dataStructuresCost","networksCost","algorithmsCost","managementCost","leadershipCost","GameType","CasinoLocation","setGame","Coin","Slots","Roulette","numDecks","shuffle","drawCard","CoinFlip","investment","setInvestment","setResult","setStatus","playLock","setPlayLock","play","correct","redNumbers","strategies","Red","payout","Black","Odd","Even","High","Low","Third1","Third2","Third3","Single","canPlay","setCanPlay","lock","setLock","strategy","playerWin","isRed","currentNumber","getPayout","payLines","SlotMachine","locks","setLocks","stoppedOne","getPaylineData","payline","point","countSequence","checkWinnings","getTable","LocationLetter","ASCIICity","locationLettersRegex","letterMap","K","M","N","Q","V","Y","lineElems","elems","startI","endI","locationI","ListCity","locationButtons","LocationCity","OptionsModal","setInsertSpaces","setFontSize","setWordWrap","setVim","defineTheme","inherit","foreground","fontStyle","MilestonesRoot","milestones","highestMilestone","milestone","ActionTimer","paragraph","TerminalRoot","setKey","doScroll","hook","scrollIntoView","debounced","maxWait","unsubscribe","scrollId","TerminalInput","terminalInput","postUpdateValue","setPostUpdateValue","possibilities","setPossibilities","saveValue","postUpdate","modifyInput","mod","inputLength","selectionStart","inputText","delStart","moveTextCursor","keyDown","autoComplete","TAB","semiColonIndex","allPos","determineAllPossibilitiesForTabCompletion","tabCompletion","selectionEnd","parentDirPath","evaledParentDirPath","addAllCodingContracts","cct","addAllLitFiles","addAllPrograms","addAllScripts","processFilepath","addAllTextFiles","addAllDirectories","subdirs","getSubdirectories","t_parentDirPath","convertParentPath","isCommand","cmd","t_cmd","autocomplete","runArgs","permissive","flagFunc","autocompleteData","txts","schema","pos2","scriptAutocomplete","addAllMessages","t_dir","processFile","subdir","allPossibilities","oldValue","longestStartSubstr","TutorialRoot","confirmResetOpen","setConfirmResetOpen","ActiveScriptsRoot","setTab","ScriptProduction","prodRateSinceLastAug","ServerAccordions","setRowsPerPage","serverToScriptMap","filtered","rowsPerPageOptions","newPage","onRowsPerPageChange","ActionsComponent","paddedName","barOptions","headerTxt","ServerAccordionContent","disablePadding","noborder","WorkerScriptAccordion","killScript","onlineMps","onlineEps","RecentScriptsPage","recentScript","RecentScriptAccordion","MainPage","onAugmentations","sleevesOpen","setSleevesOpen","gangOpen","setGangOpen","isPlayersGang","favorToDonate","canDonate","canPurchaseSleeves","startHackingContracts","startFieldWork","startSecurityWork","FactionRoot","purchasingAugs","setPurchasingAugs","routeToMainPage","AugmentationsPage","getAugs","switchSortOrder","newOrder","Cost","augName1","augName2","getAugsSortedByCost","getAugsSortedByReputation","Purchasable","canBuy","hasReq","hasRep","cantBuy","getAugsSortedByPurchasable","getAugsSorted","purchasable","purchaseableAugmentation","augListElems","ownedElem","Requirements","PurchaseableAugmentation","hasCost","btnTxt","PurchaseAugmentationModal","DonateOption","donateAmt","setDonateAmt","Status","noformat","Info","CreateGangModal","CovenantPurchasesRoot","setUpdate","purchaseDisabled","upgradePanels","CovenantSleeveMemoryUpgrade","maxMemory","purchaseBtnDisabled","purchaseBtnContent","LastEmployer","LastJob","Employers","bn5Stat","CurrentBitNode","MoneyModal","convertMoneySourceTrackerToString","parts","infiltration","CharacterStats","moneyOpen","setMoneyOpen","timeRows","StockMarketRoot","Purchase4SMarketDataTixApiAccessButton","PurchaseWseAccountButton","PurchaseTixApiAccessButton","Purchase4SMarketDataButton","InfoAndPurchases","StockTickers","setTickerDisplayMode","AllStocks","watchlistSymbols","setWatchlistSymbols","tickers","stockMarketProp","rerenderAllTickers","sanitizedWatchlist","SelectorOrderType","StockTicker","setOrderType","Market","tickerOpen","setTicketOpen","modalProps","setModalProps","placeText","getQuantity","hasOrderAccess","Limit","Stop","getBuyTransactionCostContent","getSellTransactionCostContent","playerMoney","localesWithLongPriceFormat","StockTickerHeaderText","stockPriceFormat","spacesAllottedForStockPrice","spacesAfterStockName","spacesBeforePrice","hdrText","plusOrMinus","StockTickerOrderList","StockTickerOrder","posTxt","LongPosition","percentageGains","ShortPosition","StockTickerPositionText","PlaceOrderModal","portal","level0","level1","level2","level3","BitNodePortal","portalOpen","setPortalOpen","cssClass","aria-description","BitverseRoot","destroyed","destroySequence","setDestroySequence","nextSourceFileFlags","PortalModal","bitNodeKey","maxSourceFileLevel","newLevel","CinematicLine","setLength","ms","newLength","advance","StaneksGiftRoot","gift","zeros","MainBoard","calculateGrid","newgrid","setGrid","ghostGrid","setGhostGrid","setRotation","selectedFragment","setSelectedFragment","moveGhost","clickAt","deleteAt","randomColor","doRotate","selectFragment","FragmentInspector","setC","effectAmt","FragmentOption","colorAt","FragmentSelector","FragmentPreview","getComputedStyle","Element","AchievementsRoot","AchievementList","cssPrimary","cssSecondary","secret","unavailable","locked","pr","defaultExpanded","AchievementIcon","imgLoaded","setImgLoaded","onLoad","ErrorBoundary","Component","hasError","componentDidCatch","previousScrollY","modalOpen","setModalOpen","modalImageSrc","setModalImageSrc","predefinedThemes","themes","templateTheme","onActivated","scrollY","previousColors","onImageClick","handleZoom","ThemeEntry","subheader","image","ComparisonIcon","isBetter","initialAutosave","ImportSaveRoot","currentData","setCurrentData","importModalOpen","setImportModalOpen","headback","setHeadback","dataBeingImported","dataCurrentlyInGame","fetchData","BypassWrapper","getAugmentation","getFaction","getCompany","runAfterReset","cbScript","_purchased","_facName","_cbScript","_locationName","locationName","_programName","baseserver","installTime","jobTitles","_companyName","wasFocused","_field","repNeededToDonate","empty","srcFile","sourceFileObject","incMult","decMult","normalServer","relative_filename","evaledDir","t_dst","dst","srcExt","tRes","sRes","sanitizedExpr","used","avail","usedPercent","incorrectUsage","newPath","allPrograms","allScripts","allTextFiles","allContracts","allMessages","folders","handleFn","dest","parsedFn","firstParentDir","msgOrLit","ClickableScriptRow","scriptLinksWrap","scriptLink","textDecorationLine","paddingRight","rowSplitArray","rowItem","onScriptLinkClick","postSegments","segments","linked","filesPerRow","groups","numThreads","verboseEntries","t_dest","sourcePath","destFile","destPath","positions","getCursor","re","matching","rsObj","delTarget","executableName","runContract","runProgram","commandArgs","threadFlag","tailFlag","toLocaleLowerCase","hasRoot","maxHostname","maxIP","args2","headers","currRunningScripts","numSpacesScript","spacesScript","numSpacesPid","spacesPid","numSpacesThread","spacesThread","tampering","last","minute","timeCompression","ReactDOM","globalThis","onbeforeunload"],"mappings":"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88F,EAAiBr/F,EAAIoD,mBAoC3B,OAnCIg8F,GACFl/F,EAAU,gBACVA,GAAWuC,EAAWv9B,WAAa,eACnCg7B,GAAWyC,EAAYz9B,WAAa,gBACpCg7B,GAAW2C,EAAW39B,WAAa,eACnCg7B,GAAW6C,EAAa79B,WAAa,iBACrCg7B,GAAW+C,EAAW/9B,WAAa,eACnCg7B,GAAWgD,EAAYh+B,WAAa,gBACpCg7B,GAAWm/F,EAAOn6H,WAAa,gBAE/Bg7B,EAAU,aACNuC,EAAa,IACfvC,GAAWuC,EAAa,cAEtBE,EAAc,IAChBzC,GAAWyC,EAAc,eAEvBE,EAAa,IACf3C,GAAW2C,EAAa,cAEtBE,EAAe,IACjB7C,GAAW6C,EAAe,gBAExBE,EAAa,IACf/C,GAAW+C,EAAa,cAEtBC,EAAc,IAChBhD,GAAWgD,EAAc,eAEvBm8F,EAAS,IACXn/F,GAAWm/F,EAAS,iBAEtBn/F,EAAUA,EAAQp8B,UAAU,EAAGo8B,EAAQr1C,OAAS,GAChDq1C,GAAW,KAENA,EAjDT,mC,8BCHA,oEAGO,MAAMo/F,EAA6B,CACxC,oDACA,IACA,8EACA,sFACA,sFACA,mFACA,8EACA,qEACA,6EACA,2EACA,gEACA,uEACA,uDACA,4FACA,8EACA,kFACA,mHACA,oEACA,kGACA,wEACA,oEACA,gFACA,6FACA,4FACA,6EACA,2FACA,iGACA,6EACA,4GACA,0FACA,yEACA,uEACA,gGACA,iGACA,iFACA,+FACA,0FACA,4FACA,uEACA,wHACA,sFACA,iFACA,KAGIC,EACW3yC,GACN,CACJ,UAASA,wBACT,IACA,8GACA,4FACA,IACA,4CAA2CA,kDAC3C,kBAAiBA,yEACjB,IACA,YACA,IACA,OAAMA,YACN,OAAMA,qBACN,IACA,OAAMA,WACN,OAAMA,iBACN,KAKM4yC,EAA4B,CACvC3yD,MAAO,CACL,oCACA,IACA,4FACA,uGACA,yHACA,kGACA,IACA,gCACA,IACA,mHACA,yHACA,4CACA,IACA,gCACA,IACA,6DACA,IACA,eACA,IACA,2HACA,4HACA,IACA,mCACA,IACA,8GACA,IACA,uHACA,uCACA,IACA,uDACA,KAEF4yD,QAAS,CACP,iBACA,IACA,0GACA,mHACA,kHACA,gCACA,KAEFC,SAAU,CACR,kBACA,IACA,6FACA,IACA,+BACA,KAEFrqH,IAAK,CACH,iCACA,IACA,yEACA,IACA,oHACA,oDACA,IACA,+FACA,IACA,wGACA,KAEFsqH,IAAK,CACH,oBACA,IACA,6EACA,IACA,iBACA,IACA,kBACA,IACA,sBACA,KAEF5f,GAAI,CACF,kBACA,IACA,yGACA,iFACA,IACA,yBACA,IACA,eACA,IACA,aACA,KAEF6f,MAAO,CACL,uCACA,IACA,+HACA,uDACA,kIACA,IACA,oCACA,IACA,gGACA,IACA,sCACA,KAEFhpH,MAAO,CACL,eACA,IACA,mIACA,uIACA,KAEFipH,IAAK,CACH,aACA,IACA,mIACA,yIACA,KAEFhnH,QAAS,CACP,4BACA,IACA,+FACA,sIACA,iEACA,KAEFinH,GAAI,CAAC,wBAAyB,IAAK,wEAAyE,KAC5GhoE,SAAU,CACR,qCACA,IACA,mFACA,IACA,4GACA,IACA,kDACA,IACA,0CACA,IACA,0CACA,KAEFioE,KAAM,CACJ,wCACA,IACA,oFACA,IACA,oBACA,IACA,WACA,IACA,wBACA,IACA,qFACA,KAEFC,KAAM,CACJ,cACA,IACA,gIACA,gCACA,KAEFvuH,KAAM,CACJ,cACA,IACA,6GACA,2CACA,KAEFT,KAAM,CACJ,cACA,IACA,uHACA,KAEFivH,KAAM,CACJ,wBACA,IACA,yHACA,0HACA,mEACA,IACA,iBACA,IACA,wBACA,KAEFC,QAAS,CACP,sBACA,IACA,6GACA,KAEF9qG,KAAM,CACJ,cACA,IACA,sGACA,KAEFlvB,SAAU,CAAC,kBAAmB,IAAK,4CAA6C,KAChF6M,KAAM,CACJ,mDACA,IACA,4EACA,IACA,6EACA,4EACA,iFACA,4DACA,IACA,uCACA,IACA,qEACA,IACA,wCACA,IACA,qFACA,KAEFC,QAAS,CACP,iBACA,IACA,4CACA,2HACA,uHACA,2EACA,KAEFI,GAAI,CACF,wCACA,IACA,iIACA,sDACA,IACA,8FACA,IACA,gFACA,IACA,yHACA,IACA,YACA,IACA,wEACA,IACA,2BACA,IACA,iEACA,IACA,yBACA,IACA,uFACA,IACA,oCACA,KAEF+sH,MAAO,CAAC,eAAgB,IAAK,wDAAyD,KAEtFC,IAAK,CACH,4CACA,IACA,6HACA,2HACA,gFACA,IACA,qBACA,IACA,2BACA,IACA,4HACA,iFACA,KAEFloH,GAAI,CACF,yBACA,IACA,6FACA,6FACA,kCACA,IACA,kFACA,kBACA,aACA,IACA,qEACA,IACA,oCACA,KAEFmoH,KAAMd,EAAgC,QACtClsH,GAAI,CAAC,YAAa,IAAK,4DAA6D,KACpF2D,GAAI,CACF,mBACA,IACA,6GACA,IACA,kDACA,KAEFpE,IAAK,CACH,sDACA,IACA,gDACA,IACA,sHACA,2GACA,gEACA,2DACA,2FACA,IACA,kHACA,iFACA,KAEF7B,KAAM,CACJ,cACA,IACA,6HACA,2CACA,KAEF,eAAgB,CACd,mCACA,IACA,kGACA,wGACA,4EACA,IACA,uGACA,qGACA,0BACA,IACA,iHACA,yGACA,UACA,IACA,2GACA,sEACA,KAEFoC,IAAK,CACH,4CACA,IACA,8EACA,2GACA,oCACA,2FACA,IACA,6BACA,IACA,wCACA,KAEFmtH,MAAO,CAAC,eAAgB,IAAK,oEAAqE,KAElGloH,KAAM,CACJ,sCACA,IACA,oHACA,uHACA,oEACA,IACA,8BACA,IACA,gFACA,IACA,+BACA,KAEFo+D,IAAK,CACH,aACA,IACA,yGACA,+BACA,KAEF+pD,QAAS,CACP,8BACA,IACA,mFACA,IACA,iDACA,IACA,oBACA,IACA,kCACA,IACA,gBACA,IACA,kGACA,KAEFz5E,IAAKy4E,EAAgC,OACrC3tH,OAAQ,CACN,gBACA,IACA,oHACA,iEACA,KAEFmG,KAAM,CACJ,kCACA,IACA,iGACA,oGACA,0CACA,IACA,mGACA,iDACA,IACA,mGACA,O,6BC/dJ,wEAIKyoH,EAKAC,EATL,yB,SAIKD,O,2BAAAA,I,8BAAAA,M,cAKAC,O,qBAAAA,I,kBAAAA,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CA,+CACA,YACA,IACA,OACA,IACA,aACA,KACA,sBACA,iBACA,MACA,IAIA,oDACA,8CACA,gCACA,kEACA,YACA,wBACA,4BACA,yCACA,SACA,oBACA,4CACA,OACA,IACA,IACA,MAIA,uDACA,8CACA,sBACA,0DACA,IACA,yCACA,wBACA,mDACA,4BACA,mCACA,mBACA,gBACA,IACA,yCACA,qEACA,yBACA,uBACA,qBACA,oBACA,2BACA,+BACA,uDACA,iCACA,8FACA,IACA,8BACA,oBACA,+DACA,wEACA,4CACA,eACA,IACA,0BACA,OACA,IACA,qBACA,gBACA,IACA,MAIA,gDACA,8CACA,gCACA,8DACA,eACA,wBACA,4BACA,yCACA,sBACA,SACA,oBACA,mDACA,OACA,IACA,YACA,IACA,MAIA,mDACA,8CACA,0CACA,kEACA,4DACA,gCACA,wBACA,WACA,oCACA,kBACA,kEACA,IACA,kBACA,IACA,yBACA,mDACA,IACA,gBACA,IACA,MAIA,wDACA,8CACA,0CACA,yGACA,kEACA,+BACA,wBACA,WACA,mCACA,eACA,kEACA,IACA,kBACA,IACA,wBACA,mDACA,IACA,gBACA,IACA,MAIA,iDACA,8CACA,+BACA,6DACA,wBACA,4BACA,+DACA,kCACA,iDACA,eACA,IACA,IACA,gBACA,IACA,MAEA,gBACA,oCACA,8CAEA,wCACA,2BACA,IAEA,0CACA,mBACA,kDACA,4CACA,sBACA,yBACA,sBACA,aACA,IACA,IACA,uBACA,IACA,eACA,KACA,QAEA,2DACA,8CACA,eACA,gBACA,0CACA,wFACA,IACA,wBACA,IACA,MACA,KAQJixF,EAAYrxF,UAAUy7I,WAAa,SAAUlrD,GAC3C,IACIgsD,EADAN,EAAkB73I,KAGtBm4I,EAAU,SAAUn6I,GAElB,OADAA,EAAQk9E,OAAOl9E,GACX65I,EAAgBmB,iBAElBh5I,KAAK9E,KAAO8C,EACLgC,MAGAhC,GAGXgC,KAAKi8I,OAASj8I,KAAK8sF,qBAAqBqrD,GAAS,GACjDn4I,KAAK4sF,YAAYT,EAAO,SAAUn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,UACA,WACA,OACA,YACA,UACA,SACA,MACA,MACA,OACA,QACA,YACA,UACA,KACA,SACA,SACA,YACA,QACA,YACA,UACA,UACA,WACA,WACA,YACA,SACA,OACA,MACA,aACA,aACA,YACA,OACA,SACA,WACA,QACA,aACA,SACA,UACA,cACA,UACA,OACA,MACA,WACA,SACA,cACA,MACA,aACA,WACA,OACA,MACA,UACA,QACA,WACA,UACA,aACA,QACA,UACA,MACA,OACA,SACA,WACA,WACA,UACA,QACA,cACA,cACA,YACA,SACA,OACA,SACA,QACA,WACA,WACA,WACA,OACA,SACA,WACA,YACA,OACA,OACA,YACA,YACA,OACA,QACA,UACA,YACA,WACA,aACA,YACA,OACA,WACA,WACA,SACA,MACA,WACA,UACA,SACA,gBACA,OACA,QACA,UACA,QACA,QACA,UACA,YACA,QACA,YACA,UACA,QACA,SACA,SACA,QACA,UACA,cACA,QACA,aACA,MACA,UACA,OACA,WACA,WACA,UACA,SACA,aACA,YACA,SACA,SACA,SACA,OACA,WACA,QACA,OACA,WACA,SACA,SACA,WACA,SACA,UACA,QACA,SACA,QACA,UACA,UACA,UACA,UACA,aACA,WACA,QACA,SACA,MACA,WACA,SACA,aACA,UACA,MACA,OACA,SACA,UACA,OACA,OACA,UACA,SACA,aACA,SACA,SACA,SACA,SACA,SACA,WACA,SACA,YACA,QACA,QACA,YACA,WACA,oBACA,WACA,OACA,UACA,cACA,UACA,SACA,UACA,gBACA,OACA,SACA,QACA,MACA,WACA,WACA,WACA,cACA,SACA,UACA,QACA,eACA,WACA,OACA,OACA,SACA,MACA,OACA,iBACA,WACA,UACA,UACA,UACA,iBACA,QACA,MACA,YACA,UACA,SACA,OACA,SACA,UACA,WACA,YACA,cACA,MACA,OACA,MACA,MACA,Q,6BCvTF,iHAgBA,MAAMf,EAKF,CACF51G,QAAS,CAAE61G,MAAO,KAAO9hJ,KAAM,GAC/BksC,OAAQ,CAAE41G,M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","file":"main.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1508,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { PlayerObject } from \"./PersonObjects/Player/PlayerObject\";\nimport { sanitizeExploits } from \"./Exploits/Exploit\";\n\nimport { Reviver } from \"./utils/JSONReviver\";\n\nexport let Player = new PlayerObject();\n\nexport function loadPlayer(saveString: string): void {\n Player = JSON.parse(saveString, Reviver);\n Player.money = parseFloat(Player.money as any);\n Player.exploits = sanitizeExploits(Player.exploits);\n}\n","import numeral from \"numeral\";\nimport \"numeral/locales/bg\";\nimport \"numeral/locales/cs\";\nimport \"numeral/locales/da-dk\";\nimport \"numeral/locales/de\";\nimport \"numeral/locales/en-au\";\nimport \"numeral/locales/en-gb\";\nimport \"numeral/locales/es\";\nimport \"numeral/locales/fr\";\nimport \"numeral/locales/hu\";\nimport \"numeral/locales/it\";\nimport \"numeral/locales/lv\";\nimport \"numeral/locales/no\";\nimport \"numeral/locales/pl\";\nimport \"numeral/locales/ru\";\n\nimport { Settings } from \"../Settings/Settings\";\n\nconst extraFormats = [1e15, 1e18, 1e21, 1e24, 1e27, 1e30];\nconst extraNotations = [\"q\", \"Q\", \"s\", \"S\", \"o\", \"n\"];\nconst gigaMultiplier = { standard: 1e9, iec60027_2: 2 ** 30 };\n\nclass NumeralFormatter {\n // Default Locale\n defaultLocale = \"en\";\n\n constructor() {\n this.defaultLocale = \"en\";\n }\n\n updateLocale(l: string): boolean {\n if (numeral.locale(l) == null) {\n console.warn(`Invalid locale for numeral: ${l}`);\n\n numeral.locale(this.defaultLocale);\n return false;\n }\n return true;\n }\n\n format(n: number, format: string): string {\n // numeraljs doesnt properly format numbers that are too big or too small\n if (Math.abs(n) < 1e-6) {\n n = 0;\n }\n const answer = numeral(n).format(format);\n if (answer === \"NaN\") {\n return `${n}`;\n }\n return answer;\n }\n\n formatBigNumber(n: number): string {\n return this.format(n, \"0.000a\");\n }\n\n // TODO: leverage numeral.js to do it. This function also implies you can\n // use this format in some text field but you can't. ( \"1t\" will parse but\n // \"1s\" will not)\n formatReallyBigNumber(n: number, decimalPlaces = 3): string {\n const nAbs = Math.abs(n);\n if (n === Infinity) return \"∞\";\n for (let i = 0; i < extraFormats.length; i++) {\n if (extraFormats[i] < nAbs && nAbs <= extraFormats[i] * 1000) {\n return this.format(n / extraFormats[i], \"0.\" + \"0\".repeat(decimalPlaces)) + extraNotations[i];\n }\n }\n if (nAbs < 1000) {\n return this.format(n, \"0.\" + \"0\".repeat(decimalPlaces));\n }\n const str = this.format(n, \"0.\" + \"0\".repeat(decimalPlaces) + \"a\");\n if (str === \"NaNt\") return this.format(n, \"0.\" + \" \".repeat(decimalPlaces) + \"e+0\");\n return str;\n }\n\n formatHp(n: number): string {\n if (n < 1e6) {\n return this.format(n, \"0,0\");\n }\n return this.formatReallyBigNumber(n);\n }\n\n formatMoney(n: number): string {\n return \"$\" + this.formatReallyBigNumber(n);\n }\n\n formatSkill(n: number): string {\n if (n < 1e15) {\n return this.format(n, \"0,0\");\n }\n return this.formatReallyBigNumber(n);\n }\n\n formatExp(n: number): string {\n return this.formatReallyBigNumber(n);\n }\n\n formatHashes(n: number): string {\n return this.formatReallyBigNumber(n);\n }\n\n formatReputation(n: number): string {\n return this.formatReallyBigNumber(n);\n }\n\n formatFavor(n: number): string {\n return this.format(n, \"0,0\");\n }\n\n formatSecurity(n: number): string {\n return n.toFixed(3);\n }\n\n formatRAM(n: number): string {\n if (Settings.UseIEC60027_2) {\n return this.format(n * gigaMultiplier.iec60027_2, \"0.00ib\");\n }\n return this.format(n * gigaMultiplier.standard, \"0.00b\");\n }\n\n formatPercentage(n: number, decimalPlaces = 2): string {\n const formatter: string = \"0.\" + \"0\".repeat(decimalPlaces) + \"%\";\n return this.format(n, formatter);\n }\n\n formatServerSecurity(n: number): string {\n return this.format(n, \"0,0.000\");\n }\n\n formatRespect(n: number): string {\n return this.formatReallyBigNumber(n, 5);\n }\n\n formatWanted(n: number): string {\n return this.formatReallyBigNumber(n, 5);\n }\n\n formatMultiplier(n: number): string {\n return this.format(n, \"0,0.00\");\n }\n\n formatSleeveShock(n: number): string {\n return this.format(n, \"0,0.000\");\n }\n\n formatSleeveSynchro(n: number): string {\n return this.format(n, \"0,0.000\");\n }\n\n formatSleeveMemory(n: number): string {\n return this.format(n, \"0\");\n }\n\n formatPopulation(n: number): string {\n return this.format(n, \"0.000a\");\n }\n\n formatStamina(n: number): string {\n return this.format(n, \"0.0\");\n }\n\n formatShares(n: number): string {\n if (n < 1000) {\n return this.format(n, \"0\");\n }\n return this.formatReallyBigNumber(n);\n }\n\n formatInfiltrationSecurity(n: number): string {\n return this.formatReallyBigNumber(n);\n }\n\n formatThreads(n: number): string {\n return this.format(n, \"0,0\");\n }\n\n formatStaneksGiftHeat(n: number): string {\n return this.format(n, \"0.000a\");\n }\n\n formatStaneksGiftCharge(n: number): string {\n return this.format(n, \"0.000a\");\n }\n\n formatStaneksGiftPower(n: number): string {\n return this.format(n, \"0.00\");\n }\n\n parseCustomLargeNumber(str: string): number {\n const numericRegExp = new RegExp(\"^(-?\\\\d+\\\\.?\\\\d*)([\" + extraNotations.join(\"\") + \"]?)$\");\n const match = str.match(numericRegExp);\n if (match == null) {\n return NaN;\n }\n const [, number, notation] = match;\n const notationIndex = extraNotations.indexOf(notation);\n if (notationIndex === -1) {\n return NaN;\n }\n return parseFloat(number) * extraFormats[notationIndex];\n }\n\n largestAbsoluteNumber(n1: number, n2 = 0, n3 = 0): number {\n if (isNaN(n1)) n1 = 0;\n if (isNaN(n2)) n2 = 0;\n if (isNaN(n3)) n3 = 0;\n const largestAbsolute = Math.max(Math.abs(n1), Math.abs(n2), Math.abs(n3));\n switch (largestAbsolute) {\n case Math.abs(n1):\n return n1;\n case Math.abs(n2):\n return n2;\n case Math.abs(n3):\n return n3;\n }\n return 0;\n }\n\n parseMoney(s: string): number {\n // numeral library does not handle formats like 1s (returns 1) and 1e10 (returns 110) well,\n // so if more then 1 return a valid number, return the one farthest from 0\n const numeralValue = numeral(s).value();\n const parsed = parseFloat(s);\n const selfParsed = this.parseCustomLargeNumber(s);\n // Check for one or more NaN values\n if (isNaN(parsed) && numeralValue === null && isNaN(selfParsed)) {\n // 3x NaN\n return NaN;\n } else if (isNaN(parsed) && isNaN(selfParsed)) {\n // 2x NaN\n return numeralValue;\n } else if (numeralValue === null && isNaN(selfParsed)) {\n // 2x NaN\n return parsed;\n } else if (isNaN(parsed) && numeralValue === null) {\n // 2x NaN\n return selfParsed;\n } else if (isNaN(parsed)) {\n // 1x NaN\n return this.largestAbsoluteNumber(numeralValue, selfParsed);\n } else if (numeralValue === null) {\n // 1x NaN\n return this.largestAbsoluteNumber(parsed, selfParsed);\n } else if (isNaN(selfParsed)) {\n // 1x NaN\n return this.largestAbsoluteNumber(numeralValue, parsed);\n } else {\n // no NaN\n return this.largestAbsoluteNumber(numeralValue, parsed, selfParsed);\n }\n }\n}\n\nexport const numeralWrapper = new NumeralFormatter();\n","export enum FactionNames {\n Illuminati = \"Illuminati\",\n Daedalus = \"Daedalus\",\n TheCovenant = \"The Covenant\",\n ECorp = \"ECorp\",\n MegaCorp = \"MegaCorp\",\n BachmanAssociates = \"Bachman & Associates\",\n BladeIndustries = \"Blade Industries\",\n NWO = \"NWO\",\n ClarkeIncorporated = \"Clarke Incorporated\",\n OmniTekIncorporated = \"OmniTek Incorporated\",\n FourSigma = \"Four Sigma\",\n KuaiGongInternational = \"KuaiGong International\",\n FulcrumSecretTechnologies = \"Fulcrum Secret Technologies\",\n BitRunners = \"BitRunners\",\n TheBlackHand = \"The Black Hand\",\n NiteSec = \"NiteSec\",\n Aevum = \"Aevum\",\n Chongqing = \"Chongqing\",\n Ishima = \"Ishima\",\n NewTokyo = \"New Tokyo\",\n Sector12 = \"Sector-12\",\n Volhaven = \"Volhaven\",\n SpeakersForTheDead = \"Speakers for the Dead\",\n TheDarkArmy = \"The Dark Army\",\n TheSyndicate = \"The Syndicate\",\n Silhouette = \"Silhouette\",\n Tetrads = \"Tetrads\",\n SlumSnakes = \"Slum Snakes\",\n Netburners = \"Netburners\",\n TianDiHui = \"Tian Di Hui\",\n CyberSec = \"CyberSec\",\n Bladeburners = \"Bladeburners\",\n ChurchOfTheMachineGod = \"Church of the Machine God\",\n}\n","/**\n * Bitnode multipliers influence the difficulty of different aspects of the game.\n * Each Bitnode has a different theme/strategy to achieving the end goal, so these multipliers will can help drive the\n * player toward the intended strategy. Unless they really want to play the long, slow game of waiting...\n */\ninterface IBitNodeMultipliers {\n /**\n * Influences how quickly the player's agility level (not exp) scales\n */\n AgilityLevelMultiplier: number;\n\n /**\n * Influences the base cost to purchase an augmentation.\n */\n AugmentationMoneyCost: number;\n\n /**\n * Influences the base rep the player must have with a faction to purchase an augmentation.\n */\n AugmentationRepCost: number;\n\n /**\n * Influences how quickly the player can gain rank within Bladeburner.\n */\n BladeburnerRank: number;\n\n /**\n * Influences the cost of skill levels from Bladeburner.\n */\n BladeburnerSkillCost: number;\n\n /**\n * Influences how quickly the player's charisma level (not exp) scales\n */\n CharismaLevelMultiplier: number;\n\n /**\n * Influences the experience gained for each ability when a player completes a class.\n */\n ClassGymExpGain: number;\n\n /**\n * Influences the amount of money gained from completing Coding Contracts\n **/\n CodingContractMoney: number;\n\n /**\n * Influences the experience gained for each ability when the player completes working their job.\n */\n CompanyWorkExpGain: number;\n\n /**\n * Influences how much money the player earns when completing working their job.\n */\n CompanyWorkMoney: number;\n\n /**\n * Influences the valuation of corporations created by the player.\n */\n CorporationValuation: number;\n\n /**\n * Influences the base experience gained for each ability when the player commits a crime.\n */\n CrimeExpGain: number;\n\n /**\n * Influences the base money gained when the player commits a crime.\n */\n CrimeMoney: number;\n\n /**\n * Influences how many Augmentations you need in order to get invited to the Daedalus faction\n */\n DaedalusAugsRequirement: number;\n\n /**\n * Influences how quickly the player's defense level (not exp) scales\n */\n DefenseLevelMultiplier: number;\n\n /**\n * Influences how quickly the player's dexterity level (not exp) scales\n */\n DexterityLevelMultiplier: number;\n\n /**\n * Influences how much rep the player gains in each faction simply by being a member.\n */\n FactionPassiveRepGain: number;\n\n /**\n * Influences the experience gained for each ability when the player completes work for a Faction.\n */\n FactionWorkExpGain: number;\n\n /**\n * Influences how much rep the player gains when performing work for a faction.\n */\n FactionWorkRepGain: number;\n\n /**\n * Influences how much it costs to unlock the stock market's 4S Market Data API\n */\n FourSigmaMarketDataApiCost: number;\n\n /**\n * Influences how much it costs to unlock the stock market's 4S Market Data (NOT API)\n */\n FourSigmaMarketDataCost: number;\n\n /**\n * Reduces gangs earning.\n */\n GangSoftcap: number;\n\n /**\n * Percentage of unique augs that the gang has.\n */\n GangUniqueAugs: number;\n\n /**\n * Influences the experienced gained when hacking a server.\n */\n HackExpGain: number;\n\n /**\n * Influences how quickly the player's hacking level (not experience) scales\n */\n HackingLevelMultiplier: number;\n\n /**\n * Influences how much money is produced by Hacknet Nodes.\n * Influeces the hash rate of Hacknet Servers (unlocked in BitNode-9)\n */\n HacknetNodeMoney: number;\n\n /**\n * Influences how much money it costs to upgrade your home computer's RAM\n */\n HomeComputerRamCost: number;\n\n /**\n * Influences how much money is gained when the player infiltrates a company.\n */\n InfiltrationMoney: number;\n\n /**\n * Influences how much rep the player can gain from factions when selling stolen documents and secrets\n */\n InfiltrationRep: number;\n\n /**\n * Influences how much money can be stolen from a server when the player performs a hack against it through\n * the Terminal.\n */\n ManualHackMoney: number;\n\n /**\n * Influence how much it costs to purchase a server\n */\n PurchasedServerCost: number;\n\n /**\n * Influence how much it costs to purchase a server\n */\n PurchasedServerSoftcap: number;\n\n /**\n * Influences the maximum number of purchased servers you can have\n */\n PurchasedServerLimit: number;\n\n /**\n * Influences the maximum allowed RAM for a purchased server\n */\n PurchasedServerMaxRam: number;\n /**\n * Influences the minimum favor the player must have with a faction before they can donate to gain rep.\n */\n RepToDonateToFaction: number;\n\n /**\n * Influences how much money can be stolen from a server when a script performs a hack against it.\n */\n ScriptHackMoney: number;\n\n /**\n * The amount of money actually gained when script hack a server. This is\n * different than the above because you can reduce the amount of money but\n * not gain that same amount.\n */\n ScriptHackMoneyGain: number;\n\n /**\n * Influences the growth percentage per cycle against a server.\n */\n ServerGrowthRate: number;\n\n /**\n * Influences the maxmimum money that a server can grow to.\n */\n ServerMaxMoney: number;\n\n /**\n * Influences the initial money that a server starts with.\n */\n ServerStartingMoney: number;\n\n /**\n * Influences the initial security level (hackDifficulty) of a server.\n */\n ServerStartingSecurity: number;\n\n /**\n * Influences the weaken amount per invocation against a server.\n */\n ServerWeakenRate: number;\n\n /**\n * Influences how quickly the player's strength level (not exp) scales\n */\n StrengthLevelMultiplier: number;\n\n /**\n * Influences the power of the gift.\n */\n StaneksGiftPowerMultiplier: number;\n\n /**\n * Influences the size of the gift.\n */\n StaneksGiftExtraSize: number;\n\n /**\n * Influences the hacking skill required to backdoor the world daemon.\n */\n WorldDaemonDifficulty: number;\n\n /**\n * Influences corporation dividends.\n */\n CorporationSoftCap: number;\n\n // Index signature\n [key: string]: number;\n}\n\n/**\n * The multipliers that are influenced by current Bitnode progression.\n */\n// tslint:disable-next-line:variable-name\nexport const BitNodeMultipliers: IBitNodeMultipliers = {\n HackingLevelMultiplier: 1,\n StrengthLevelMultiplier: 1,\n DefenseLevelMultiplier: 1,\n DexterityLevelMultiplier: 1,\n AgilityLevelMultiplier: 1,\n CharismaLevelMultiplier: 1,\n\n ServerGrowthRate: 1,\n ServerMaxMoney: 1,\n ServerStartingMoney: 1,\n ServerStartingSecurity: 1,\n ServerWeakenRate: 1,\n\n HomeComputerRamCost: 1,\n\n PurchasedServerCost: 1,\n PurchasedServerSoftcap: 1,\n PurchasedServerLimit: 1,\n PurchasedServerMaxRam: 1,\n\n CompanyWorkMoney: 1,\n CrimeMoney: 1,\n HacknetNodeMoney: 1,\n ManualHackMoney: 1,\n ScriptHackMoney: 1,\n ScriptHackMoneyGain: 1,\n CodingContractMoney: 1,\n\n ClassGymExpGain: 1,\n CompanyWorkExpGain: 1,\n CrimeExpGain: 1,\n FactionWorkExpGain: 1,\n HackExpGain: 1,\n\n FactionPassiveRepGain: 1,\n FactionWorkRepGain: 1,\n RepToDonateToFaction: 1,\n\n AugmentationMoneyCost: 1,\n AugmentationRepCost: 1,\n\n InfiltrationMoney: 1,\n InfiltrationRep: 1,\n\n FourSigmaMarketDataCost: 1,\n FourSigmaMarketDataApiCost: 1,\n\n CorporationValuation: 1,\n CorporationSoftCap: 1,\n\n BladeburnerRank: 1,\n BladeburnerSkillCost: 1,\n\n GangSoftcap: 1,\n GangUniqueAugs: 1,\n\n DaedalusAugsRequirement: 1,\n\n StaneksGiftPowerMultiplier: 1,\n StaneksGiftExtraSize: 0,\n\n WorldDaemonDifficulty: 1,\n};\n","/**\n * Generic Game Constants\n *\n * Constants for specific mechanics or features will NOT be here.\n */\nexport const CONSTANTS: {\n VersionString: string;\n VersionNumber: number;\n _idleSpeed: number;\n MaxSkillLevel: number;\n MilliPerCycle: number;\n CorpFactionRepRequirement: number;\n BaseFocusBonus: number;\n BaseCostFor1GBOfRamHome: number;\n BaseCostFor1GBOfRamServer: number;\n TravelCost: number;\n BaseFavorToDonate: number;\n DonateMoneyToRepDivisor: number;\n FactionReputationToFavorBase: number;\n FactionReputationToFavorMult: number;\n CompanyReputationToFavorBase: number;\n CompanyReputationToFavorMult: number;\n NeuroFluxGovernorLevelMult: number;\n NumNetscriptPorts: number;\n HomeComputerMaxRam: number;\n ServerBaseGrowthRate: number;\n ServerMaxGrowthRate: number;\n ServerFortifyAmount: number;\n ServerWeakenAmount: number;\n PurchasedServerLimit: number;\n PurchasedServerMaxRam: number;\n MultipleAugMultiplier: number;\n TorRouterCost: number;\n WSEAccountCost: number;\n TIXAPICost: number;\n MarketData4SCost: number;\n MarketDataTixApi4SCost: number;\n StockMarketCommission: number;\n HospitalCostPerHp: number;\n IntelligenceCrimeWeight: number;\n IntelligenceInfiltrationWeight: number;\n IntelligenceCrimeBaseExpGain: number;\n IntelligenceProgramBaseExpGain: number;\n IntelligenceGraftBaseExpGain: number;\n IntelligenceTerminalHackBaseExpGain: number;\n IntelligenceSingFnBaseExpGain: number;\n IntelligenceClassBaseExpGain: number;\n MillisecondsPer20Hours: number;\n GameCyclesPer20Hours: number;\n MillisecondsPer10Hours: number;\n GameCyclesPer10Hours: number;\n MillisecondsPer8Hours: number;\n GameCyclesPer8Hours: number;\n MillisecondsPer4Hours: number;\n GameCyclesPer4Hours: number;\n MillisecondsPer2Hours: number;\n GameCyclesPer2Hours: number;\n MillisecondsPerHour: number;\n GameCyclesPerHour: number;\n MillisecondsPerHalfHour: number;\n GameCyclesPerHalfHour: number;\n MillisecondsPerQuarterHour: number;\n GameCyclesPerQuarterHour: number;\n MillisecondsPerFiveMinutes: number;\n GameCyclesPerFiveMinutes: number;\n FactionWorkHacking: string;\n FactionWorkField: string;\n FactionWorkSecurity: string;\n WorkTypeCompany: string;\n WorkTypeCompanyPartTime: string;\n WorkTypeFaction: string;\n WorkTypeCreateProgram: string;\n WorkTypeStudyClass: string;\n WorkTypeCrime: string;\n WorkTypeGraftAugmentation: string;\n ClassStudyComputerScience: string;\n ClassDataStructures: string;\n ClassNetworks: string;\n ClassAlgorithms: string;\n ClassManagement: string;\n ClassLeadership: string;\n ClassGymStrength: string;\n ClassGymDefense: string;\n ClassGymDexterity: string;\n ClassGymAgility: string;\n ClassDataStructuresBaseCost: number;\n ClassNetworksBaseCost: number;\n ClassAlgorithmsBaseCost: number;\n ClassManagementBaseCost: number;\n ClassLeadershipBaseCost: number;\n ClassGymBaseCost: number;\n ClassStudyComputerScienceBaseExp: number;\n ClassDataStructuresBaseExp: number;\n ClassNetworksBaseExp: number;\n ClassAlgorithmsBaseExp: number;\n ClassManagementBaseExp: number;\n ClassLeadershipBaseExp: number;\n CrimeShoplift: string;\n CrimeRobStore: string;\n CrimeMug: string;\n CrimeLarceny: string;\n CrimeDrugs: string;\n CrimeBondForgery: string;\n CrimeTraffickArms: string;\n CrimeHomicide: string;\n CrimeGrandTheftAuto: string;\n CrimeKidnap: string;\n CrimeAssassination: string;\n CrimeHeist: string;\n CodingContractBaseFactionRepGain: number;\n CodingContractBaseCompanyRepGain: number;\n CodingContractBaseMoneyGain: number;\n AugmentationGraftingCostMult: number;\n AugmentationGraftingTimeBase: number;\n EntropyEffect: number;\n TotalNumBitNodes: number;\n LatestUpdate: string;\n} = {\n VersionString: \"1.6.3\",\n VersionNumber: 13,\n\n // Speed (in ms) at which the main loop is updated\n _idleSpeed: 200,\n\n /** Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience\n * and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then\n * the player will have this level assuming no multipliers. Multipliers can cause skills to go above this.\n */\n MaxSkillLevel: 975,\n\n // Milliseconds per game cycle\n MilliPerCycle: 200,\n\n // How much reputation is needed to join a megacorporation's faction\n CorpFactionRepRequirement: 200e3,\n\n // Base RAM costs\n BaseCostFor1GBOfRamHome: 32000,\n BaseCostFor1GBOfRamServer: 55000, //1 GB of RAM\n\n // Cost to travel to another city\n TravelCost: 200e3,\n\n // Faction and Company favor-related things\n BaseFavorToDonate: 150,\n DonateMoneyToRepDivisor: 1e6,\n FactionReputationToFavorBase: 500,\n FactionReputationToFavorMult: 1.02,\n CompanyReputationToFavorBase: 500,\n CompanyReputationToFavorMult: 1.02,\n\n // NeuroFlux Governor Augmentation cost multiplier\n NeuroFluxGovernorLevelMult: 1.14,\n\n NumNetscriptPorts: 20,\n\n // Server-related constants\n HomeComputerMaxRam: 1073741824, // 2 ^ 30\n ServerBaseGrowthRate: 1.03, // Unadjusted Growth rate\n ServerMaxGrowthRate: 1.0035, // Maximum possible growth rate (max rate accounting for server security)\n ServerFortifyAmount: 0.002, // Amount by which server's security increases when its hacked/grown\n ServerWeakenAmount: 0.05, // Amount by which server's security decreases when weakened\n\n PurchasedServerLimit: 25,\n PurchasedServerMaxRam: 1048576, // 2^20\n\n // Augmentation Constants\n MultipleAugMultiplier: 1.9,\n\n // TOR Router\n TorRouterCost: 200e3,\n\n // Stock market\n WSEAccountCost: 200e6,\n TIXAPICost: 5e9,\n MarketData4SCost: 1e9,\n MarketDataTixApi4SCost: 25e9,\n StockMarketCommission: 100e3,\n\n // Hospital/Health\n HospitalCostPerHp: 100e3,\n\n // Intelligence-related constants\n IntelligenceCrimeWeight: 0.025, // Weight for how much int affects crime success rates\n IntelligenceInfiltrationWeight: 0.1, // Weight for how much int affects infiltration success rates\n IntelligenceCrimeBaseExpGain: 0.05,\n IntelligenceProgramBaseExpGain: 0.1, // Program required hack level divided by this to determine int exp gain\n IntelligenceGraftBaseExpGain: 0.05,\n IntelligenceTerminalHackBaseExpGain: 200, // Hacking exp divided by this to determine int exp gain\n IntelligenceSingFnBaseExpGain: 1.5,\n IntelligenceClassBaseExpGain: 0.01,\n\n // Time-related constants\n MillisecondsPer20Hours: 72000000,\n GameCyclesPer20Hours: 72000000 / 200,\n\n MillisecondsPer10Hours: 36000000,\n GameCyclesPer10Hours: 36000000 / 200,\n\n MillisecondsPer8Hours: 28800000,\n GameCyclesPer8Hours: 28800000 / 200,\n\n MillisecondsPer4Hours: 14400000,\n GameCyclesPer4Hours: 14400000 / 200,\n\n MillisecondsPer2Hours: 7200000,\n GameCyclesPer2Hours: 7200000 / 200,\n\n MillisecondsPerHour: 3600000,\n GameCyclesPerHour: 3600000 / 200,\n\n MillisecondsPerHalfHour: 1800000,\n GameCyclesPerHalfHour: 1800000 / 200,\n\n MillisecondsPerQuarterHour: 900000,\n GameCyclesPerQuarterHour: 900000 / 200,\n\n MillisecondsPerFiveMinutes: 300000,\n GameCyclesPerFiveMinutes: 300000 / 200,\n\n // Player Work & Action\n BaseFocusBonus: 0.8,\n FactionWorkHacking: \"Faction Hacking Work\",\n FactionWorkField: \"Faction Field Work\",\n FactionWorkSecurity: \"Faction Security Work\",\n\n WorkTypeCompany: \"Working for Company\",\n WorkTypeCompanyPartTime: \"Working for Company part-time\",\n WorkTypeFaction: \"Working for Faction\",\n WorkTypeCreateProgram: \"Working on Create a Program\",\n WorkTypeStudyClass: \"Studying or Taking a class at university\",\n WorkTypeCrime: \"Committing a crime\",\n WorkTypeGraftAugmentation: \"Grafting an Augmentation\",\n\n ClassStudyComputerScience: \"studying Computer Science\",\n ClassDataStructures: \"taking a Data Structures course\",\n ClassNetworks: \"taking a Networks course\",\n ClassAlgorithms: \"taking an Algorithms course\",\n ClassManagement: \"taking a Management course\",\n ClassLeadership: \"taking a Leadership course\",\n ClassGymStrength: \"training your strength at a gym\",\n ClassGymDefense: \"training your defense at a gym\",\n ClassGymDexterity: \"training your dexterity at a gym\",\n ClassGymAgility: \"training your agility at a gym\",\n\n ClassDataStructuresBaseCost: 40,\n ClassNetworksBaseCost: 80,\n ClassAlgorithmsBaseCost: 320,\n ClassManagementBaseCost: 160,\n ClassLeadershipBaseCost: 320,\n ClassGymBaseCost: 120,\n\n ClassStudyComputerScienceBaseExp: 0.5,\n ClassDataStructuresBaseExp: 1,\n ClassNetworksBaseExp: 2,\n ClassAlgorithmsBaseExp: 4,\n ClassManagementBaseExp: 2,\n ClassLeadershipBaseExp: 4,\n\n CrimeShoplift: \"shoplift\",\n CrimeRobStore: \"rob a store\",\n CrimeMug: \"mug someone\",\n CrimeLarceny: \"commit larceny\",\n CrimeDrugs: \"deal drugs\",\n CrimeBondForgery: \"forge corporate bonds\",\n CrimeTraffickArms: \"traffick illegal arms\",\n CrimeHomicide: \"commit homicide\",\n CrimeGrandTheftAuto: \"commit grand theft auto\",\n CrimeKidnap: \"kidnap someone for ransom\",\n CrimeAssassination: \"assassinate a high-profile target\",\n CrimeHeist: \"pull off the ultimate heist\",\n\n // Coding Contract\n // TODO: Move this into Coding contract implementation?\n CodingContractBaseFactionRepGain: 2500,\n CodingContractBaseCompanyRepGain: 4000,\n CodingContractBaseMoneyGain: 75e6,\n\n // Augmentation crafting multipliers\n AugmentationGraftingCostMult: 3,\n AugmentationGraftingTimeBase: 3600000,\n\n // Value raised to the number of entropy stacks, then multiplied to player multipliers\n EntropyEffect: 0.98,\n\n // BitNode/Source-File related stuff\n TotalNumBitNodes: 24,\n\n LatestUpdate: `\n v1.6.3 - 2022-04-01 Few stanek fixes\n ----------------------------\n\n Stanek Gift \n\n * Has a minimum size of 2x3\n * Active Fragment property 'avgCharge' renamed to 'highestCharge'\n * Formula for fragment effect updated to make 561% more sense. \n Now you can charge to your heart content.\n * Logs for the 'chargeFragment' function updated.\n\n Misc. \n\n * Nerf noodle bar.\n`,\n};\n","import { ISelfInitializer, ISelfLoading } from \"../types\";\nimport { OwnedAugmentationsOrderSetting, PurchaseAugmentationsOrderSetting } from \"./SettingEnums\";\nimport { defaultTheme, ITheme } from \"../Themes/Themes\";\nimport { defaultStyles } from \"../Themes/Styles\";\nimport { WordWrapOptions } from \"../ScriptEditor/ui/Options\";\nimport { OverviewSettings } from \"../ui/React/Overview\";\nimport { IStyleSettings } from \"../ScriptEditor/NetscriptDefinitions\";\n\n/**\n * Represents the default settings the player could customize.\n */\ninterface IDefaultSettings {\n /**\n * How many servers per page\n */\n ActiveScriptsServerPageSize: number;\n /**\n * How many scripts per page\n */\n ActiveScriptsScriptPageSize: number;\n /**\n * How often the game should autosave the player's progress, in seconds.\n */\n AutosaveInterval: number;\n\n /**\n * How many milliseconds between execution points for Netscript 1 statements.\n */\n CodeInstructionRunTime: number;\n\n /**\n * Render city as list of buttons.\n */\n DisableASCIIArt: boolean;\n\n /**\n * Whether global keyboard shortcuts should be recognized throughout the game.\n */\n DisableHotkeys: boolean;\n\n /**\n * Whether text effects such as corruption should be visible.\n */\n DisableTextEffects: boolean;\n\n /**\n * Whether overview progress bars should be visible.\n */\n DisableOverviewProgressBars: boolean;\n\n /**\n * Enable bash hotkeys\n */\n EnableBashHotkeys: boolean;\n\n /**\n * Timestamps format\n */\n TimestampsFormat: string;\n\n /**\n * Locale used for display numbers\n */\n Locale: string;\n\n /**\n * Limit the number of log entries for each script being executed on each server.\n */\n MaxLogCapacity: number;\n\n /**\n * Limit how many entries can be written to a Netscript Port before entries start to get pushed out.\n */\n MaxPortCapacity: number;\n\n /**\n * Limit the number of entries in the terminal.\n */\n MaxTerminalCapacity: number;\n\n /**\n * Save the game when you save any file.\n */\n SaveGameOnFileSave: boolean;\n\n /**\n * Whether the player should be asked to confirm purchasing each and every augmentation.\n */\n SuppressBuyAugmentationConfirmation: boolean;\n\n /**\n * Whether the user should be prompted to join each faction via a dialog box.\n */\n SuppressFactionInvites: boolean;\n\n /**\n * Whether the user should be shown a dialog box whenever they receive a new message file.\n */\n SuppressMessages: boolean;\n\n /**\n * Whether the user should be asked to confirm travelling between cities.\n */\n SuppressTravelConfirmation: boolean;\n\n /**\n * Whether the user should be displayed a popup message when his Bladeburner actions are cancelled.\n */\n SuppressBladeburnerPopup: boolean;\n\n /**\n * Whether the user should be displayed a popup message on stock market actions.\n */\n SuppressTIXPopup: boolean;\n\n /**\n * Whether the user should be displayed a toast alert when the game is saved.\n */\n SuppressSavedGameToast: boolean;\n\n /**\n * Whether the user should be displayed a toast warning when the autosave is disabled.\n */\n SuppressAutosaveDisabledWarnings: boolean;\n\n /*\n * Whether the game should skip saving the running scripts for late game\n */\n ExcludeRunningScriptsFromSave: boolean;\n\n /*\n * Theme colors\n */\n theme: ITheme;\n\n /*\n * Interface styles\n */\n styles: IStyleSettings;\n\n /*\n * Use GiB instead of GB\n */\n UseIEC60027_2: boolean;\n\n /*\n * Character overview settings\n */\n overview: OverviewSettings;\n\n /**\n * If the game's sidebar is opened\n */\n IsSidebarOpened: boolean;\n}\n\n/**\n * Represents all possible settings the player wants to customize to their play style.\n */\ninterface ISettings extends IDefaultSettings {\n /**\n * What order the player's owned Augmentations/Source Files should be displayed in\n */\n OwnedAugmentationsOrder: OwnedAugmentationsOrderSetting;\n\n /**\n * What order the Augmentations should be displayed in when purchasing from a Faction\n */\n PurchaseAugmentationsOrder: PurchaseAugmentationsOrderSetting;\n\n MonacoTheme: string;\n\n MonacoInsertSpaces: boolean;\n\n MonacoFontSize: number;\n\n MonacoVim: boolean;\n\n MonacoWordWrap: WordWrapOptions;\n}\n\nexport const defaultSettings: IDefaultSettings = {\n ActiveScriptsServerPageSize: 10,\n ActiveScriptsScriptPageSize: 10,\n AutosaveInterval: 60,\n CodeInstructionRunTime: 50,\n DisableASCIIArt: false,\n DisableHotkeys: false,\n DisableTextEffects: false,\n DisableOverviewProgressBars: false,\n EnableBashHotkeys: false,\n TimestampsFormat: \"\",\n Locale: \"en\",\n MaxLogCapacity: 50,\n MaxPortCapacity: 50,\n MaxTerminalCapacity: 500,\n SaveGameOnFileSave: true,\n SuppressBuyAugmentationConfirmation: false,\n SuppressFactionInvites: false,\n SuppressMessages: false,\n SuppressTravelConfirmation: false,\n SuppressBladeburnerPopup: false,\n SuppressTIXPopup: false,\n SuppressSavedGameToast: false,\n SuppressAutosaveDisabledWarnings: false,\n UseIEC60027_2: false,\n ExcludeRunningScriptsFromSave: false,\n IsSidebarOpened: true,\n\n theme: defaultTheme,\n styles: defaultStyles,\n overview: { x: 0, y: 0, opened: true },\n};\n\n/**\n * The current options the player has customized to their play style.\n */\n// tslint:disable-next-line:variable-name\nexport const Settings: ISettings & ISelfInitializer & ISelfLoading = {\n ActiveScriptsServerPageSize: defaultSettings.ActiveScriptsServerPageSize,\n ActiveScriptsScriptPageSize: defaultSettings.ActiveScriptsScriptPageSize,\n AutosaveInterval: defaultSettings.AutosaveInterval,\n CodeInstructionRunTime: 25,\n DisableASCIIArt: defaultSettings.DisableASCIIArt,\n DisableHotkeys: defaultSettings.DisableHotkeys,\n DisableTextEffects: defaultSettings.DisableTextEffects,\n DisableOverviewProgressBars: defaultSettings.DisableOverviewProgressBars,\n EnableBashHotkeys: defaultSettings.EnableBashHotkeys,\n TimestampsFormat: defaultSettings.TimestampsFormat,\n Locale: \"en\",\n MaxLogCapacity: defaultSettings.MaxLogCapacity,\n MaxPortCapacity: defaultSettings.MaxPortCapacity,\n MaxTerminalCapacity: defaultSettings.MaxTerminalCapacity,\n OwnedAugmentationsOrder: OwnedAugmentationsOrderSetting.AcquirementTime,\n PurchaseAugmentationsOrder: PurchaseAugmentationsOrderSetting.Default,\n SaveGameOnFileSave: defaultSettings.SaveGameOnFileSave,\n SuppressBuyAugmentationConfirmation: defaultSettings.SuppressBuyAugmentationConfirmation,\n SuppressFactionInvites: defaultSettings.SuppressFactionInvites,\n SuppressMessages: defaultSettings.SuppressMessages,\n SuppressTravelConfirmation: defaultSettings.SuppressTravelConfirmation,\n SuppressBladeburnerPopup: defaultSettings.SuppressBladeburnerPopup,\n SuppressTIXPopup: defaultSettings.SuppressTIXPopup,\n SuppressSavedGameToast: defaultSettings.SuppressSavedGameToast,\n SuppressAutosaveDisabledWarnings: defaultSettings.SuppressAutosaveDisabledWarnings,\n UseIEC60027_2: defaultSettings.UseIEC60027_2,\n ExcludeRunningScriptsFromSave: defaultSettings.ExcludeRunningScriptsFromSave,\n IsSidebarOpened: defaultSettings.IsSidebarOpened,\n\n MonacoTheme: \"monokai\",\n MonacoInsertSpaces: false,\n MonacoFontSize: 20,\n MonacoVim: false,\n MonacoWordWrap: \"off\",\n\n theme: { ...defaultTheme },\n styles: { ...defaultStyles },\n overview: defaultSettings.overview,\n init() {\n Object.assign(Settings, defaultSettings);\n },\n load(saveString: string) {\n const save = JSON.parse(saveString);\n Object.assign(Settings.theme, save.theme);\n delete save.theme;\n Object.assign(Settings.styles, save.styles);\n delete save.styles;\n Object.assign(Settings.overview, save.overview);\n delete save.overview;\n Object.assign(Settings, save);\n },\n};\n","/**\n * Names of all locations\n */\nexport enum LocationName {\n // Aevum Locations\n AevumAeroCorp = \"AeroCorp\",\n AevumBachmanAndAssociates = \"Bachman & Associates\",\n AevumClarkeIncorporated = \"Clarke Incorporated\",\n AevumCrushFitnessGym = \"Crush Fitness Gym\",\n AevumECorp = \"ECorp\",\n AevumFulcrumTechnologies = \"Fulcrum Technologies\",\n AevumGalacticCybersystems = \"Galactic Cybersystems\",\n AevumNetLinkTechnologies = \"NetLink Technologies\",\n AevumPolice = \"Aevum Police Headquarters\",\n AevumRhoConstruction = \"Rho Construction\",\n AevumSnapFitnessGym = \"Snap Fitness Gym\",\n AevumSummitUniversity = \"Summit University\",\n AevumWatchdogSecurity = \"Watchdog Security\",\n AevumCasino = \"Iker Molina Casino\",\n\n // Chongqing locations\n ChongqingKuaiGongInternational = \"KuaiGong International\",\n ChongqingSolarisSpaceSystems = \"Solaris Space Systems\",\n ChongqingChurchOfTheMachineGod = \"Church of the Machine God\",\n\n // Sector 12\n Sector12AlphaEnterprises = \"Alpha Enterprises\",\n Sector12BladeIndustries = \"Blade Industries\",\n Sector12CIA = \"Central Intelligence Agency\",\n Sector12CarmichaelSecurity = \"Carmichael Security\",\n Sector12CityHall = \"Sector-12 City Hall\",\n Sector12DeltaOne = \"DeltaOne\",\n Sector12FoodNStuff = \"FoodNStuff\",\n Sector12FourSigma = \"Four Sigma\",\n Sector12IcarusMicrosystems = \"Icarus Microsystems\",\n Sector12IronGym = \"Iron Gym\",\n Sector12JoesGuns = \"Joe's Guns\",\n Sector12MegaCorp = \"MegaCorp\",\n Sector12NSA = \"National Security Agency\",\n Sector12PowerhouseGym = \"Powerhouse Gym\",\n Sector12RothmanUniversity = \"Rothman University\",\n Sector12UniversalEnergy = \"Universal Energy\",\n\n // New Tokyo\n NewTokyoDefComm = \"DefComm\",\n NewTokyoGlobalPharmaceuticals = \"Global Pharmaceuticals\",\n NewTokyoNoodleBar = \"Noodle Bar\",\n NewTokyoVitaLife = \"VitaLife\",\n NewTokyoArcade = \"Arcade\",\n\n // Ishima\n IshimaNovaMedical = \"Nova Medical\",\n IshimaOmegaSoftware = \"Omega Software\",\n IshimaStormTechnologies = \"Storm Technologies\",\n IshimaGlitch = \"0x6C1\",\n\n // Volhaven\n VolhavenCompuTek = \"CompuTek\",\n VolhavenHeliosLabs = \"Helios Labs\",\n VolhavenLexoCorp = \"LexoCorp\",\n VolhavenMilleniumFitnessGym = \"Millenium Fitness Gym\",\n VolhavenNWO = \"NWO\",\n VolhavenOmniTekIncorporated = \"OmniTek Incorporated\",\n VolhavenOmniaCybersystems = \"Omnia Cybersystems\",\n VolhavenSysCoreSecurities = \"SysCore Securities\",\n VolhavenZBInstituteOfTechnology = \"ZB Institute of Technology\",\n\n // Generic locations\n Hospital = \"Hospital\",\n Slums = \"The Slums\",\n TravelAgency = \"Travel Agency\",\n WorldStockExchange = \"World Stock Exchange\",\n\n // Default name for Location objects\n Void = \"The Void\",\n}\n","export enum AugmentationNames {\n Targeting1 = \"Augmented Targeting I\",\n Targeting2 = \"Augmented Targeting II\",\n Targeting3 = \"Augmented Targeting III\",\n SyntheticHeart = \"Synthetic Heart\",\n SynfibrilMuscle = \"Synfibril Muscle\",\n CombatRib1 = \"Combat Rib I\",\n CombatRib2 = \"Combat Rib II\",\n CombatRib3 = \"Combat Rib III\",\n NanofiberWeave = \"Nanofiber Weave\",\n SubdermalArmor = \"NEMEAN Subdermal Weave\",\n WiredReflexes = \"Wired Reflexes\",\n GrapheneBoneLacings = \"Graphene Bone Lacings\",\n BionicSpine = \"Bionic Spine\",\n GrapheneBionicSpine = \"Graphene Bionic Spine Upgrade\",\n BionicLegs = \"Bionic Legs\",\n GrapheneBionicLegs = \"Graphene Bionic Legs Upgrade\",\n SpeechProcessor = \"Speech Processor Implant\",\n TITN41Injection = \"TITN-41 Gene-Modification Injection\",\n EnhancedSocialInteractionImplant = \"Enhanced Social Interaction Implant\",\n BitWire = \"BitWire\",\n ArtificialBioNeuralNetwork = \"Artificial Bio-neural Network Implant\",\n ArtificialSynapticPotentiation = \"Artificial Synaptic Potentiation\",\n EnhancedMyelinSheathing = \"Enhanced Myelin Sheathing\",\n SynapticEnhancement = \"Synaptic Enhancement Implant\",\n NeuralRetentionEnhancement = \"Neural-Retention Enhancement\",\n DataJack = \"DataJack\",\n ENM = \"Embedded Netburner Module\",\n ENMCore = \"Embedded Netburner Module Core Implant\",\n ENMCoreV2 = \"Embedded Netburner Module Core V2 Upgrade\",\n ENMCoreV3 = \"Embedded Netburner Module Core V3 Upgrade\",\n ENMAnalyzeEngine = \"Embedded Netburner Module Analyze Engine\",\n ENMDMA = \"Embedded Netburner Module Direct Memory Access Upgrade\",\n Neuralstimulator = \"Neuralstimulator\",\n NeuralAccelerator = \"Neural Accelerator\",\n CranialSignalProcessorsG1 = \"Cranial Signal Processors - Gen I\",\n CranialSignalProcessorsG2 = \"Cranial Signal Processors - Gen II\",\n CranialSignalProcessorsG3 = \"Cranial Signal Processors - Gen III\",\n CranialSignalProcessorsG4 = \"Cranial Signal Processors - Gen IV\",\n CranialSignalProcessorsG5 = \"Cranial Signal Processors - Gen V\",\n NeuronalDensification = \"Neuronal Densification\",\n NeuroreceptorManager = \"Neuroreceptor Management Implant\",\n NuoptimalInjectorImplant = \"Nuoptimal Nootropic Injector Implant\",\n SpeechEnhancement = \"Speech Enhancement\",\n FocusWire = \"FocusWire\",\n PCDNI = \"PC Direct-Neural Interface\",\n PCDNIOptimizer = \"PC Direct-Neural Interface Optimization Submodule\",\n PCDNINeuralNetwork = \"PC Direct-Neural Interface NeuroNet Injector\",\n PCMatrix = \"PCMatrix\",\n ADRPheromone1 = \"ADR-V1 Pheromone Gene\",\n ADRPheromone2 = \"ADR-V2 Pheromone Gene\",\n ShadowsSimulacrum = \"The Shadow's Simulacrum\",\n HacknetNodeCPUUpload = \"Hacknet Node CPU Architecture Neural-Upload\",\n HacknetNodeCacheUpload = \"Hacknet Node Cache Architecture Neural-Upload\",\n HacknetNodeNICUpload = \"Hacknet Node NIC Architecture Neural-Upload\",\n HacknetNodeKernelDNI = \"Hacknet Node Kernel Direct-Neural Interface\",\n HacknetNodeCoreDNI = \"Hacknet Node Core Direct-Neural Interface\",\n NeuroFluxGovernor = \"NeuroFlux Governor\",\n Neurotrainer1 = \"Neurotrainer I\",\n Neurotrainer2 = \"Neurotrainer II\",\n Neurotrainer3 = \"Neurotrainer III\",\n Hypersight = \"HyperSight Corneal Implant\",\n LuminCloaking1 = \"LuminCloaking-V1 Skin Implant\",\n LuminCloaking2 = \"LuminCloaking-V2 Skin Implant\",\n HemoRecirculator = \"HemoRecirculator\",\n SmartSonar = \"SmartSonar Implant\",\n PowerRecirculator = \"Power Recirculation Core\",\n QLink = \"QLink\",\n TheRedPill = \"The Red Pill\",\n SPTN97 = \"SPTN-97 Gene Modification\",\n HiveMind = \"ECorp HVMind Implant\",\n CordiARCReactor = \"CordiARC Fusion Reactor\",\n SmartJaw = \"SmartJaw\",\n Neotra = \"Neotra\",\n Xanipher = \"Xanipher\",\n nextSENS = \"nextSENS Gene Modification\",\n OmniTekInfoLoad = \"OmniTek InfoLoad\",\n PhotosyntheticCells = \"Photosynthetic Cells\",\n Neurolink = \"BitRunners Neurolink\",\n TheBlackHand = \"The Black Hand\",\n UnstableCircadianModulator = \"Unstable Circadian Modulator\",\n CRTX42AA = \"CRTX42-AA Gene Modification\",\n Neuregen = \"Neuregen Gene Modification\",\n CashRoot = \"CashRoot Starter Kit\",\n NutriGen = \"NutriGen Implant\",\n INFRARet = \"INFRARET Enhancement\",\n DermaForce = \"DermaForce Particle Barrier\",\n GrapheneBrachiBlades = \"Graphene BrachiBlades Upgrade\",\n GrapheneBionicArms = \"Graphene Bionic Arms Upgrade\",\n BrachiBlades = \"BrachiBlades\",\n BionicArms = \"Bionic Arms\",\n SNA = \"Social Negotiation Assistant (S.N.A)\",\n HydroflameLeftArm = \"Hydroflame Left Arm\",\n CongruityImplant = \"nickofolas Congruity Implant\",\n EsperEyewear = \"EsperTech Bladeburner Eyewear\",\n EMS4Recombination = \"EMS-4 Recombination\",\n OrionShoulder = \"ORION-MKIV Shoulder\",\n HyperionV1 = \"Hyperion Plasma Cannon V1\",\n HyperionV2 = \"Hyperion Plasma Cannon V2\",\n GolemSerum = \"GOLEM Serum\",\n VangelisVirus = \"Vangelis Virus\",\n VangelisVirus3 = \"Vangelis Virus 3.0\",\n INTERLINKED = \"I.N.T.E.R.L.I.N.K.E.D\",\n BladeRunner = \"Blade's Runners\",\n BladeArmor = \"BLADE-51b Tesla Armor\",\n BladeArmorPowerCells = \"BLADE-51b Tesla Armor: Power Cells Upgrade\",\n BladeArmorEnergyShielding = \"BLADE-51b Tesla Armor: Energy Shielding Upgrade\",\n BladeArmorUnibeam = \"BLADE-51b Tesla Armor: Unibeam Upgrade\",\n BladeArmorOmnibeam = \"BLADE-51b Tesla Armor: Omnibeam Upgrade\",\n BladeArmorIPU = \"BLADE-51b Tesla Armor: IPU Upgrade\",\n BladesSimulacrum = \"The Blade's Simulacrum\",\n\n StaneksGift1 = \"Stanek's Gift - Genesis\",\n StaneksGift2 = \"Stanek's Gift - Awakening\",\n StaneksGift3 = \"Stanek's Gift - Serenity\",\n\n //Wasteland Augs\n //PepBoy: \"P.E.P-Boy\", Plasma Energy Projection System\n //PepBoyForceField Generates plasma force fields\n //PepBoyBlasts Generate high density plasma concussive blasts\n //PepBoyDataStorage STore more data on pep boy,\n}\n","import { AlertEvents } from \"./AlertManager\";\n\nimport React from \"react\";\nimport { SxProps } from \"@mui/system\";\nimport { Typography } from \"@mui/material\";\n\nexport function dialogBoxCreate(txt: string | JSX.Element, styles?: SxProps): void {\n if (typeof txt !== \"string\") {\n AlertEvents.emit(txt);\n } else {\n AlertEvents.emit();\n }\n}\n","/**\n * All possible Cities in the game. Names only, not actual \"City\" object\n * Implemented as an enum for typing purposes\n */\nexport enum CityName {\n Aevum = \"Aevum\",\n Chongqing = \"Chongqing\",\n Ishima = \"Ishima\",\n NewTokyo = \"New Tokyo\",\n Sector12 = \"Sector-12\",\n Volhaven = \"Volhaven\",\n}\n","import * as React from \"react\";\nimport { numeralWrapper } from \"../numeralFormat\";\nimport { IPlayer } from \"../../PersonObjects/IPlayer\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n unbuyable: {\n color: theme.palette.action.disabled,\n },\n money: {\n color: theme.colors.money,\n },\n }),\n);\n\ninterface IProps {\n money: number | string;\n player?: IPlayer;\n}\nexport function Money(props: IProps): React.ReactElement {\n const classes = useStyles();\n if (props.player !== undefined) {\n if (typeof props.money !== \"number\") throw new Error(\"if player if provided, money should be number, contact dev\");\n if (!props.player.canAfford(props.money))\n return {numeralWrapper.formatMoney(props.money)};\n }\n return (\n \n {typeof props.money === \"number\" ? numeralWrapper.formatMoney(props.money) : props.money}\n \n );\n}\n","import { EqualityFunc } from \"../types\";\nimport { isString } from \"./helpers/isString\";\n\n/*\nConverts a date representing time in milliseconds to a string with the format H hours M minutes and S seconds\ne.g. 10000 -> \"10 seconds\"\n 120000 -> \"2 minutes and 0 seconds\"\n*/\nfunction convertTimeMsToTimeElapsedString(time: number, showMilli = false): string {\n time = Math.floor(time);\n const millisecondsPerSecond = 1000;\n const secondPerMinute = 60;\n const minutesPerHours = 60;\n const secondPerHours: number = secondPerMinute * minutesPerHours;\n const hoursPerDays = 24;\n const secondPerDay: number = secondPerHours * hoursPerDays;\n\n // Convert ms to seconds, since we only have second-level precision\n const totalSeconds: number = Math.floor(time / millisecondsPerSecond);\n\n const days: number = Math.floor(totalSeconds / secondPerDay);\n const secTruncDays: number = totalSeconds % secondPerDay;\n\n const hours: number = Math.floor(secTruncDays / secondPerHours);\n const secTruncHours: number = secTruncDays % secondPerHours;\n\n const minutes: number = Math.floor(secTruncHours / secondPerMinute);\n const secTruncMinutes: number = secTruncHours % secondPerMinute;\n\n const milliTruncSec: string = (() => {\n let str = `${time % millisecondsPerSecond}`;\n while (str.length < 3) str = \"0\" + str;\n return str;\n })();\n\n const seconds: string = showMilli ? `${secTruncMinutes}.${milliTruncSec}` : `${secTruncMinutes}`;\n\n let res = \"\";\n if (days > 0) {\n res += `${days} days `;\n }\n if (hours > 0) {\n res += `${hours} hours `;\n }\n if (minutes > 0) {\n res += `${minutes} minutes `;\n }\n res += `${seconds} seconds`;\n\n return res;\n}\n\n// Finds the longest common starting substring in a set of strings\nfunction longestCommonStart(strings: string[]): string {\n if (!containsAllStrings(strings)) {\n return \"\";\n }\n if (strings.length === 0) {\n return \"\";\n }\n\n const A: string[] = strings.concat().sort();\n const a1: string = A[0];\n const a2: string = A[A.length - 1];\n const L: number = a1.length;\n let i = 0;\n const areEqualCaseInsensitive: EqualityFunc = (a: string, b: string) => a.toUpperCase() === b.toUpperCase();\n while (i < L && areEqualCaseInsensitive(a1.charAt(i), a2.charAt(i))) {\n i++;\n }\n\n return a1.substring(0, i);\n}\n\n// Returns whether an array contains entirely of string objects\nfunction containsAllStrings(arr: string[]): boolean {\n return arr.every(isString);\n}\n\n// Formats a number with commas and a specific number of decimal digits\nfunction formatNumber(num: number, numFractionDigits = 0): string {\n return num.toLocaleString(undefined, {\n maximumFractionDigits: numFractionDigits,\n minimumFractionDigits: numFractionDigits,\n });\n}\n\n// Generates a random alphanumeric string with N characters\nfunction generateRandomString(n: number): string {\n let str = \"\";\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (let i = 0; i < n; i++) {\n str += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return str;\n}\n\n/**\n * Hashes the input string. This is a fast hash, so NOT good for cryptography.\n * This has been ripped off here: https://stackoverflow.com/a/52171480\n * @param str The string that is to be hashed\n * @param seed A seed to randomize the result\n * @returns An hexadecimal string representation of the hashed input\n */\nfunction cyrb53(str: string, seed = 0): string {\n let h1 = 0xdeadbeef ^ seed;\n let h2 = 0x41c6ce57 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(16);\n}\n\nexport {\n convertTimeMsToTimeElapsedString,\n longestCommonStart,\n containsAllStrings,\n formatNumber,\n generateRandomString,\n cyrb53,\n};\n","/* Generic Reviver, toJSON, and fromJSON functions used for saving and loading objects */\n\nimport { validateObject } from \"./Validator\";\n\ninterface IReviverValue {\n ctor: string;\n data: any;\n}\n\n// A generic \"smart reviver\" function.\n// Looks for object values with a `ctor` property and\n// a `data` property. If it finds them, and finds a matching\n// constructor that has a `fromJSON` property on it, it hands\n// off to that `fromJSON` fuunction, passing in the value.\nexport function Reviver(key: string, value: IReviverValue | null): any {\n if (value == null) {\n return null;\n }\n\n if (typeof value === \"object\" && typeof value.ctor === \"string\" && typeof value.data !== \"undefined\") {\n // Compatibility for version v0.43.1\n // TODO Remove this eventually\n if (value.ctor === \"AllServersMap\") {\n console.warn(\"Converting AllServersMap for v0.43.1\");\n return value.data;\n }\n\n const ctor = Reviver.constructors[value.ctor];\n\n if (typeof ctor === \"function\" && typeof ctor.fromJSON === \"function\") {\n const obj = ctor.fromJSON(value);\n if (ctor.validationData !== undefined) {\n validateObject(obj, ctor.validationData);\n }\n return obj;\n }\n }\n return value;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Reviver {\n export const constructors: { [key: string]: any } = {};\n}\n\n// A generic \"toJSON\" function that creates the data expected\n// by Reviver.\n// `ctorName` The name of the constructor to use to revive it\n// `obj` The object being serialized\n// `keys` (Optional) Array of the properties to serialize,\n// if not given then all of the objects \"own\" properties\n// that don't have function values will be serialized.\n// (Note: If you list a property in `keys`, it will be serialized\n// regardless of whether it's an \"own\" property.)\n// Returns: The structure (which will then be turned into a string\n// as part of the JSON.stringify algorithm)\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function Generic_toJSON(ctorName: string, obj: any, keys?: string[]): IReviverValue {\n if (!keys) {\n keys = Object.keys(obj); // Only \"own\" properties are included\n }\n\n const data: any = {};\n for (let index = 0; index < keys.length; ++index) {\n const key = keys[index];\n data[key] = obj[key];\n }\n return { ctor: ctorName, data: data };\n}\n\n// A generic \"fromJSON\" function for use with Reviver: Just calls the\n// constructor function with no arguments, then applies all of the\n// key/value pairs from the raw data to the instance. Only useful for\n// constructors that can be reasonably called without arguments!\n// `ctor` The constructor to call\n// `data` The data to apply\n// Returns: The object\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function Generic_fromJSON(ctor: new () => T, data: any): T {\n const obj: any = new ctor();\n for (const name in data) {\n obj[name] = data[name];\n }\n return obj;\n}\n","import { Server } from \"./Server\";\nimport { BaseServer } from \"./BaseServer\";\nimport { serverMetadata } from \"./data/servers\";\n\nimport { HacknetServer } from \"../Hacknet/HacknetServer\";\n\nimport { IMap } from \"../types\";\nimport { createRandomIp } from \"../utils/IPAddress\";\nimport { getRandomInt } from \"../utils/helpers/getRandomInt\";\nimport { Reviver } from \"../utils/JSONReviver\";\nimport { isValidIPAddress } from \"../utils/helpers/isValidIPAddress\";\nimport { SpecialServers } from \"./data/SpecialServers\";\nimport { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\n\n/**\n * Map of all Servers that exist in the game\n * Key (string) = IP\n * Value = Server object\n */\nlet AllServers: IMap = {};\n\nfunction GetServerByIP(ip: string): BaseServer | undefined {\n for (const key of Object.keys(AllServers)) {\n const server = AllServers[key];\n if (server.ip !== ip) continue;\n return server;\n }\n}\n\n//Returns server object with corresponding hostname\n// Relatively slow, would rather not use this a lot\nfunction GetServerByHostname(hostname: string): BaseServer | null {\n for (const key of Object.keys(AllServers)) {\n const server = AllServers[key];\n if (server.hostname == hostname) {\n return server;\n }\n }\n\n return null;\n}\n\n//Get server by IP or hostname. Returns null if invalid\nexport function GetServer(s: string): BaseServer | null {\n if (AllServers.hasOwnProperty(s)) {\n const server = AllServers[s];\n if (server) return server;\n }\n\n if (!isValidIPAddress(s)) {\n return GetServerByHostname(s);\n }\n\n const ipserver = GetServerByIP(s);\n if (ipserver !== undefined) {\n return ipserver;\n }\n\n return null;\n}\n\nexport function GetAllServers(): BaseServer[] {\n const servers: BaseServer[] = [];\n for (const key of Object.keys(AllServers)) {\n servers.push(AllServers[key]);\n }\n return servers;\n}\n\nexport function DeleteServer(serverkey: string): void {\n for (const key of Object.keys(AllServers)) {\n const server = AllServers[key];\n if (server.ip !== serverkey && server.hostname !== serverkey) continue;\n delete AllServers[key];\n break;\n }\n}\n\nexport function ipExists(ip: string): boolean {\n return AllServers[ip] != null;\n}\n\nexport function createUniqueRandomIp(): string {\n let ip: string;\n // Repeat generating ip, until unique one is found\n do {\n ip = createRandomIp();\n } while (ipExists(ip));\n\n return ip;\n}\n\n// Saftely add a Server to the AllServers map\nexport function AddToAllServers(server: Server | HacknetServer): void {\n if (GetServer(server.hostname)) {\n console.warn(`Hostname of the server thats being added: ${server.hostname}`);\n console.warn(`The server that already has this IP is: ${AllServers[server.hostname].hostname}`);\n throw new Error(\"Error: Trying to add a server with an existing IP\");\n }\n\n AllServers[server.hostname] = server;\n}\n\ninterface IServerParams {\n hackDifficulty?: number;\n hostname: string;\n ip: string;\n maxRam?: number;\n moneyAvailable?: number;\n numOpenPortsRequired: number;\n organizationName: string;\n requiredHackingSkill?: number;\n serverGrowth?: number;\n\n [key: string]: any;\n}\n\nexport function initForeignServers(homeComputer: Server): void {\n /* Create a randomized network for all the foreign servers */\n //Groupings for creating a randomized network\n const networkLayers: Server[][] = [];\n for (let i = 0; i < 15; i++) {\n networkLayers.push([]);\n }\n\n // Essentially any property that is of type 'number | IMinMaxRange'\n const propertiesToPatternMatch: string[] = [\n \"hackDifficulty\",\n \"moneyAvailable\",\n \"requiredHackingSkill\",\n \"serverGrowth\",\n ];\n\n const toNumber = (value: any): any => {\n switch (typeof value) {\n case \"number\":\n return value;\n case \"object\":\n return getRandomInt(value.min, value.max);\n default:\n throw Error(`Do not know how to convert the type '${typeof value}' to a number`);\n }\n };\n\n for (const metadata of serverMetadata) {\n const serverParams: IServerParams = {\n hostname: metadata.hostname,\n ip: createUniqueRandomIp(),\n numOpenPortsRequired: metadata.numOpenPortsRequired,\n organizationName: metadata.organizationName,\n };\n\n if (metadata.maxRamExponent !== undefined) {\n serverParams.maxRam = Math.pow(2, toNumber(metadata.maxRamExponent));\n }\n\n for (const prop of propertiesToPatternMatch) {\n if (metadata[prop] !== undefined) {\n serverParams[prop] = toNumber(metadata[prop]);\n }\n }\n\n const server = new Server(serverParams);\n for (const filename of metadata.literature || []) {\n server.messages.push(filename);\n }\n\n if (server.hostname === SpecialServers.WorldDaemon) {\n server.requiredHackingSkill *= BitNodeMultipliers.WorldDaemonDifficulty;\n }\n AddToAllServers(server);\n if (metadata.networkLayer !== undefined) {\n networkLayers[toNumber(metadata.networkLayer) - 1].push(server);\n }\n }\n\n /* Create a randomized network for all the foreign servers */\n const linkComputers = (server1: Server, server2: Server): void => {\n server1.serversOnNetwork.push(server2.hostname);\n server2.serversOnNetwork.push(server1.hostname);\n };\n\n const getRandomArrayItem = (arr: any[]): any => arr[Math.floor(Math.random() * arr.length)];\n\n const linkNetworkLayers = (network1: Server[], selectServer: () => Server): void => {\n for (const server of network1) {\n linkComputers(server, selectServer());\n }\n };\n\n // Connect the first tier of servers to the player's home computer\n linkNetworkLayers(networkLayers[0], () => homeComputer);\n for (let i = 1; i < networkLayers.length; i++) {\n linkNetworkLayers(networkLayers[i], () => getRandomArrayItem(networkLayers[i - 1]));\n }\n}\n\nexport function prestigeAllServers(): void {\n for (const member of Object.keys(AllServers)) {\n delete AllServers[member];\n }\n AllServers = {};\n}\n\nexport function loadAllServers(saveString: string): void {\n AllServers = JSON.parse(saveString, Reviver);\n}\n\nexport function saveAllServers(excludeRunningScripts = false): string {\n const TempAllServers = JSON.parse(JSON.stringify(AllServers), Reviver);\n for (const key of Object.keys(TempAllServers)) {\n const server = TempAllServers[key];\n if (excludeRunningScripts) {\n server.runningScripts = [];\n continue;\n }\n for (let i = 0; i < server.runningScripts.length; ++i) {\n const runningScriptObj = server.runningScripts[i];\n runningScriptObj.logs.length = 0;\n runningScriptObj.logs = [];\n }\n }\n\n return JSON.stringify(TempAllServers);\n}\n","import { Faction } from \"../Faction/Faction\";\nimport { Location } from \"../Locations/Location\";\n\n/**\n * The full-screen page the player is currently be on.\n * These pages are mutually exclusive.\n */\nexport enum Page {\n ActiveScripts,\n Augmentations,\n BitVerse,\n Bladeburner,\n City,\n Corporation,\n CreateProgram,\n ScriptEditor,\n DevMenu,\n Faction,\n Factions,\n Gang,\n Hacknet,\n Infiltration,\n Job,\n Milestones,\n Options,\n Grafting,\n Sleeves,\n Stats,\n StockMarket,\n Terminal,\n Travel,\n Tutorial,\n Work,\n BladeburnerCinematic,\n Location,\n Loading,\n StaneksGift,\n Recovery,\n Achievements,\n ThemeBrowser,\n ImportSave,\n}\n\nexport interface ScriptEditorRouteOptions {\n vim: boolean;\n}\n\n/**\n * This class keeps track of player navigation/routing within the game.\n */\nexport interface IRouter {\n // toCinematicText(): void;\n // toInfiltration(): void;\n // toMission(): void;\n // toRedPill(): void;\n // toworkInProgress(): void;\n isInitialized: boolean;\n page(): Page;\n allowRouting(value: boolean): void;\n toActiveScripts(): void;\n toAugmentations(): void;\n toBitVerse(flume: boolean, quick: boolean): void;\n toBladeburner(): void;\n toStats(): void;\n toCity(): void; // travel ? city ?\n toCorporation(): void;\n toCreateProgram(): void;\n toDevMenu(): void;\n toFaction(faction: Faction, augPage?: boolean): void; // faction name\n toFactions(): void;\n toGameOptions(): void;\n toGang(): void;\n toHacknetNodes(): void;\n toInfiltration(location: Location): void;\n toJob(): void;\n toMilestones(): void;\n toGrafting(): void;\n toScriptEditor(files?: Record, options?: ScriptEditorRouteOptions): void;\n toSleeves(): void;\n toStockMarket(): void;\n toTerminal(): void;\n toTravel(): void;\n toTutorial(): void;\n toWork(): void;\n toBladeburnerCinematic(): void;\n toLocation(location: Location): void;\n toStaneksGift(): void;\n toAchievements(): void;\n toThemeBrowser(): void;\n toImportSave(base64Save: string, automatic?: boolean): void;\n}\n","/**\n * Keyboard key codes\n */\nexport enum KEY {\n //SHIFT: 16, // Check by `&& event.shiftKey`\n //CTRL: 17, // Check by `&& event.ctrlKey`\n //ALT: 18, // Check by `&& event.altKey`\n ENTER = \"Enter\",\n ESC = \"Escape\",\n TAB = \"Tab\",\n SPACE = \" \",\n BACKSPACE = \"Backspace\",\n UP_ARROW = \"ArrowUp\",\n DOWN_ARROW = \"ArrowDown\",\n LEFT_ARROW = \"ArrowLeft\",\n RIGHT_ARROW = \"ArrowRight\",\n\n QUOTE = \"'\",\n DOUBLE_QUOTE = '\"',\n OPEN_BRACKET = \"[\",\n CLOSE_BRACKET = \"]\",\n LESS_THAN = \"<\",\n GREATER_THAN = \">\",\n OPEN_PARENTHESIS = \"(\",\n CLOSE_PARENTHESIS = \")\",\n OPEN_BRACE = \"{\",\n CLOSE_BRACE = \"}\",\n\n PIPE = \"|\",\n DOT = \".\",\n FORWARD_SLASH = \"/\",\n HYPHEN = \"-\",\n HASH = \"#\",\n\n k0 = \"0\",\n k1 = \"1\",\n k2 = \"2\",\n k3 = \"3\",\n k4 = \"4\",\n k5 = \"5\",\n k6 = \"6\",\n k7 = \"7\",\n k8 = \"8\",\n k9 = \"9\",\n\n A = \"a\",\n B = \"b\",\n C = \"c\",\n D = \"d\",\n E = \"e\",\n F = \"f\",\n G = \"g\",\n H = \"h\",\n I = \"i\",\n J = \"j\",\n K = \"k\",\n L = \"l\",\n M = \"m\",\n N = \"n\",\n O = \"o\",\n P = \"p\",\n Q = \"q\",\n R = \"r\",\n S = \"s\",\n T = \"t\",\n U = \"u\",\n V = \"v\",\n W = \"w\",\n X = \"x\",\n Y = \"y\",\n Z = \"z\",\n}\n","/**\n * Initialization and manipulation of the Factions object, which stores data\n * about all Factions in the game\n */\nimport { Faction } from \"./Faction\";\nimport { FactionInfos } from \"./FactionInfo\";\n\nimport { IMap } from \"../types\";\n\nimport { Reviver } from \"../utils/JSONReviver\";\n\nexport let Factions: IMap = {};\n\nexport function loadFactions(saveString: string): void {\n Factions = JSON.parse(saveString, Reviver);\n // safety check for when we load older save file that don't have newer factions\n for (const faction of Object.keys(Factions)) {\n try {\n Factions[faction].getInfo();\n } catch (err) {\n console.error(\"deleting \" + faction);\n delete Factions[faction];\n }\n }\n}\n\nfunction AddToFactions(faction: Faction): void {\n const name: string = faction.name;\n Factions[name] = faction;\n}\n\nexport function factionExists(name: string): boolean {\n return Factions.hasOwnProperty(name);\n}\n\nexport function initFactions(): void {\n for (const name of Object.keys(FactionInfos)) {\n resetFaction(new Faction(name));\n }\n}\n\n//Resets a faction during (re-)initialization. Saves the favor in the new\n//Faction object and deletes the old Faction Object from \"Factions\". Then\n//reinserts the new Faction object\nfunction resetFaction(newFactionObject: Faction): void {\n if (!(newFactionObject instanceof Faction)) {\n throw new Error(\"Invalid argument 'newFactionObject' passed into resetFaction()\");\n }\n const factionName: string = newFactionObject.name;\n if (factionExists(factionName)) {\n newFactionObject.favor = Factions[factionName].favor;\n delete Factions[factionName];\n }\n AddToFactions(newFactionObject);\n}\n","import React, { useContext } from \"react\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { IRouter } from \"./Router\";\n\nexport const Context: {\n Player: React.Context;\n Router: React.Context;\n} = {\n Player: React.createContext({} as IPlayer),\n Router: React.createContext({} as IRouter),\n};\n\nexport const use: {\n Player: () => IPlayer;\n Router: () => IRouter;\n} = {\n Player: () => useContext(Context.Player),\n Router: () => useContext(Context.Router),\n};\n","// Defs for job titles, stored in arrays and categorized by job \"type\"\n\nexport const SoftwareCompanyPositions: string[] = [\n \"Software Engineering Intern\",\n \"Junior Software Engineer\",\n \"Senior Software Engineer\",\n \"Lead Software Developer\",\n \"Head of Software\",\n \"Head of Engineering\",\n \"Vice President of Technology\",\n \"Chief Technology Officer\",\n];\n\nexport const ITCompanyPositions: string[] = [\"IT Intern\", \"IT Analyst\", \"IT Manager\", \"Systems Administrator\"];\n\nexport const SecurityEngineerCompanyPositions: string[] = [\"Security Engineer\"];\n\nexport const NetworkEngineerCompanyPositions: string[] = [\"Network Engineer\", \"Network Administrator\"];\n\nexport const BusinessCompanyPositions: string[] = [\n \"Business Intern\",\n \"Business Analyst\",\n \"Business Manager\",\n \"Operations Manager\",\n \"Chief Financial Officer\",\n \"Chief Executive Officer\",\n];\n\nexport const SecurityCompanyPositions: string[] = [\n \"Police Officer\",\n \"Police Chief\",\n \"Security Guard\",\n \"Security Officer\",\n \"Security Supervisor\",\n \"Head of Security\",\n];\n\nexport const AgentCompanyPositions: string[] = [\"Field Agent\", \"Secret Agent\", \"Special Operative\"];\n\nexport const MiscCompanyPositions: string[] = [\"Waiter\", \"Employee\"];\n\nexport const SoftwareConsultantCompanyPositions: string[] = [\"Software Consultant\", \"Senior Software Consultant\"];\n\nexport const BusinessConsultantCompanyPositions: string[] = [\"Business Consultant\", \"Senior Business Consultant\"];\n\nexport const PartTimeCompanyPositions: string[] = [\"Part-time Waiter\", \"Part-time Employee\"];\n","import { IPlayer } from \"src/PersonObjects/IPlayer\";\nimport { IMap } from \"../types\";\n\n// TODO remember to update RamCalculations.js and WorkerScript.js\n\n// RAM costs for Netscript functions\nexport const RamCostConstants: IMap = {\n ScriptBaseRamCost: 1.6,\n ScriptDomRamCost: 25,\n ScriptCorporationRamCost: 1024 - 1.6,\n ScriptHackRamCost: 0.1,\n ScriptHackAnalyzeRamCost: 1,\n ScriptGrowRamCost: 0.15,\n ScriptGrowthAnalyzeRamCost: 1,\n ScriptWeakenRamCost: 0.15,\n ScriptWeakenAnalyzeRamCost: 1,\n ScriptScanRamCost: 0.2,\n ScriptPortProgramRamCost: 0.05,\n ScriptRunRamCost: 1.0,\n ScriptExecRamCost: 1.3,\n ScriptSpawnRamCost: 2.0,\n ScriptScpRamCost: 0.6,\n ScriptKillRamCost: 0.5,\n ScriptHasRootAccessRamCost: 0.05,\n ScriptGetHostnameRamCost: 0.05,\n ScriptGetHackingLevelRamCost: 0.05,\n ScriptGetMultipliersRamCost: 4.0,\n ScriptGetServerRamCost: 0.1,\n ScriptGetServerMaxRam: 0.05,\n ScriptGetServerUsedRam: 0.05,\n ScriptFileExistsRamCost: 0.1,\n ScriptIsRunningRamCost: 0.1,\n ScriptHacknetNodesRamCost: 4.0,\n ScriptHNUpgLevelRamCost: 0.4,\n ScriptHNUpgRamRamCost: 0.6,\n ScriptHNUpgCoreRamCost: 0.8,\n ScriptGetStockRamCost: 2.0,\n ScriptBuySellStockRamCost: 2.5,\n ScriptGetPurchaseServerRamCost: 0.25,\n ScriptPurchaseServerRamCost: 2.25,\n ScriptGetPurchasedServerLimit: 0.05,\n ScriptGetPurchasedServerMaxRam: 0.05,\n ScriptRoundRamCost: 0.05,\n ScriptReadWriteRamCost: 1.0,\n ScriptArbScriptRamCost: 1.0,\n ScriptGetScriptRamCost: 0.1,\n ScriptGetRunningScriptRamCost: 0.3,\n ScriptGetHackTimeRamCost: 0.05,\n ScriptGetFavorToDonate: 0.1,\n ScriptCodingContractBaseRamCost: 10,\n ScriptSleeveBaseRamCost: 4,\n ScriptGetOwnedSourceFiles: 5,\n\n ScriptSingularityFn1RamCost: 2,\n ScriptSingularityFn2RamCost: 3,\n ScriptSingularityFn3RamCost: 5,\n\n ScriptGangApiBaseRamCost: 4,\n\n ScriptBladeburnerApiBaseRamCost: 4,\n\n ScriptStanekWidth: 0.4,\n ScriptStanekHeight: 0.4,\n ScriptStanekCharge: 0.4,\n ScriptStanekFragmentDefinitions: 0,\n ScriptStanekPlacedFragments: 5,\n ScriptStanekClear: 0,\n ScriptStanekCanPlace: 0.5,\n ScriptStanekPlace: 5,\n ScriptStanekFragmentAt: 2,\n ScriptStanekDeleteAt: 0.15,\n};\n\nfunction SF4Cost(cost: number): (player: IPlayer) => number {\n return (player: IPlayer): number => {\n if (player.bitNodeN === 4) return cost;\n const sf4 = player.sourceFileLvl(4);\n if (sf4 <= 1) return cost * 16;\n if (sf4 === 2) return cost * 4;\n return cost;\n };\n}\n\nexport const RamCosts: IMap = {\n hacknet: {\n numNodes: 0,\n purchaseNode: 0,\n getPurchaseNodeCost: 0,\n getNodeStats: 0,\n upgradeLevel: 0,\n upgradeRam: 0,\n upgradeCore: 0,\n upgradeCache: 0,\n getLevelUpgradeCost: 0,\n getRamUpgradeCost: 0,\n getCoreUpgradeCost: 0,\n getCacheUpgradeCost: 0,\n numHashes: 0,\n hashCost: 0,\n spendHashes: 0,\n },\n sprintf: 0,\n vsprintf: 0,\n scan: RamCostConstants.ScriptScanRamCost,\n hack: RamCostConstants.ScriptHackRamCost,\n hackAnalyzeThreads: RamCostConstants.ScriptHackAnalyzeRamCost,\n hackAnalyze: RamCostConstants.ScriptHackAnalyzeRamCost,\n hackAnalyzeSecurity: RamCostConstants.ScriptHackAnalyzeRamCost,\n hackAnalyzeChance: RamCostConstants.ScriptHackAnalyzeRamCost,\n sleep: 0,\n asleep: 0,\n share: 2.4,\n getSharePower: 0.2,\n grow: RamCostConstants.ScriptGrowRamCost,\n growthAnalyze: RamCostConstants.ScriptGrowthAnalyzeRamCost,\n growthAnalyzeSecurity: RamCostConstants.ScriptGrowthAnalyzeRamCost,\n weaken: RamCostConstants.ScriptWeakenRamCost,\n weakenAnalyze: RamCostConstants.ScriptWeakenAnalyzeRamCost,\n print: 0,\n printf: 0,\n tprint: 0,\n clearLog: 0,\n disableLog: 0,\n enableLog: 0,\n isLogEnabled: 0,\n getScriptLogs: 0,\n nuke: RamCostConstants.ScriptPortProgramRamCost,\n brutessh: RamCostConstants.ScriptPortProgramRamCost,\n ftpcrack: RamCostConstants.ScriptPortProgramRamCost,\n relaysmtp: RamCostConstants.ScriptPortProgramRamCost,\n httpworm: RamCostConstants.ScriptPortProgramRamCost,\n sqlinject: RamCostConstants.ScriptPortProgramRamCost,\n run: RamCostConstants.ScriptRunRamCost,\n exec: RamCostConstants.ScriptExecRamCost,\n spawn: RamCostConstants.ScriptSpawnRamCost,\n kill: RamCostConstants.ScriptKillRamCost,\n killall: RamCostConstants.ScriptKillRamCost,\n exit: 0,\n atExit: 0,\n scp: RamCostConstants.ScriptScpRamCost,\n ls: RamCostConstants.ScriptScanRamCost,\n ps: RamCostConstants.ScriptScanRamCost,\n hasRootAccess: RamCostConstants.ScriptHasRootAccessRamCost,\n getIp: RamCostConstants.ScriptGetHostnameRamCost,\n getHostname: RamCostConstants.ScriptGetHostnameRamCost,\n getHackingLevel: RamCostConstants.ScriptGetHackingLevelRamCost,\n getHackingMultipliers: RamCostConstants.ScriptGetMultipliersRamCost,\n getHacknetMultipliers: RamCostConstants.ScriptGetMultipliersRamCost,\n getBitNodeMultipliers: RamCostConstants.ScriptGetMultipliersRamCost,\n getServer: RamCostConstants.ScriptGetMultipliersRamCost / 2,\n getServerMoneyAvailable: RamCostConstants.ScriptGetServerRamCost,\n getServerSecurityLevel: RamCostConstants.ScriptGetServerRamCost,\n getServerBaseSecurityLevel: RamCostConstants.ScriptGetServerRamCost,\n getServerMinSecurityLevel: RamCostConstants.ScriptGetServerRamCost,\n getServerRequiredHackingLevel: RamCostConstants.ScriptGetServerRamCost,\n getServerMaxMoney: RamCostConstants.ScriptGetServerRamCost,\n getServerGrowth: RamCostConstants.ScriptGetServerRamCost,\n getServerNumPortsRequired: RamCostConstants.ScriptGetServerRamCost,\n getServerRam: RamCostConstants.ScriptGetServerRamCost,\n getServerMaxRam: RamCostConstants.ScriptGetServerMaxRam,\n getServerUsedRam: RamCostConstants.ScriptGetServerUsedRam,\n serverExists: RamCostConstants.ScriptGetServerRamCost,\n fileExists: RamCostConstants.ScriptFileExistsRamCost,\n isRunning: RamCostConstants.ScriptIsRunningRamCost,\n stock: {\n getSymbols: RamCostConstants.ScriptGetStockRamCost,\n getPrice: RamCostConstants.ScriptGetStockRamCost,\n getAskPrice: RamCostConstants.ScriptGetStockRamCost,\n getBidPrice: RamCostConstants.ScriptGetStockRamCost,\n getPosition: RamCostConstants.ScriptGetStockRamCost,\n getMaxShares: RamCostConstants.ScriptGetStockRamCost,\n getPurchaseCost: RamCostConstants.ScriptGetStockRamCost,\n getSaleGain: RamCostConstants.ScriptGetStockRamCost,\n buy: RamCostConstants.ScriptBuySellStockRamCost,\n sell: RamCostConstants.ScriptBuySellStockRamCost,\n short: RamCostConstants.ScriptBuySellStockRamCost,\n sellShort: RamCostConstants.ScriptBuySellStockRamCost,\n placeOrder: RamCostConstants.ScriptBuySellStockRamCost,\n cancelOrder: RamCostConstants.ScriptBuySellStockRamCost,\n getOrders: RamCostConstants.ScriptBuySellStockRamCost,\n getVolatility: RamCostConstants.ScriptBuySellStockRamCost,\n getForecast: RamCostConstants.ScriptBuySellStockRamCost,\n purchase4SMarketData: RamCostConstants.ScriptBuySellStockRamCost,\n purchase4SMarketDataTixApi: RamCostConstants.ScriptBuySellStockRamCost,\n purchaseWseAccount: RamCostConstants.ScriptBuySellStockRamCost,\n purchaseTixApi: RamCostConstants.ScriptBuySellStockRamCost,\n },\n getPurchasedServerLimit: RamCostConstants.ScriptGetPurchasedServerLimit,\n getPurchasedServerMaxRam: RamCostConstants.ScriptGetPurchasedServerMaxRam,\n getPurchasedServerCost: RamCostConstants.ScriptGetPurchaseServerRamCost,\n purchaseServer: RamCostConstants.ScriptPurchaseServerRamCost,\n deleteServer: RamCostConstants.ScriptPurchaseServerRamCost,\n getPurchasedServers: RamCostConstants.ScriptPurchaseServerRamCost,\n write: 0,\n tryWritePort: 0,\n read: 0,\n peek: 0,\n clear: 0,\n writePort: 0,\n readPort: 0,\n getPortHandle: 0,\n rm: RamCostConstants.ScriptReadWriteRamCost,\n scriptRunning: RamCostConstants.ScriptArbScriptRamCost,\n scriptKill: RamCostConstants.ScriptArbScriptRamCost,\n getScriptName: 0,\n getScriptRam: RamCostConstants.ScriptGetScriptRamCost,\n getHackTime: RamCostConstants.ScriptGetHackTimeRamCost,\n getGrowTime: RamCostConstants.ScriptGetHackTimeRamCost,\n getWeakenTime: RamCostConstants.ScriptGetHackTimeRamCost,\n getScriptIncome: RamCostConstants.ScriptGetScriptRamCost,\n getScriptExpGain: RamCostConstants.ScriptGetScriptRamCost,\n getRunningScript: RamCostConstants.ScriptGetRunningScriptRamCost,\n nFormat: 0,\n tFormat: 0,\n getTimeSinceLastAug: RamCostConstants.ScriptGetHackTimeRamCost,\n prompt: 0,\n wget: 0,\n getFavorToDonate: RamCostConstants.ScriptGetFavorToDonate,\n getPlayer: RamCostConstants.ScriptSingularityFn1RamCost / 4,\n mv: 0,\n getOwnedSourceFiles: RamCostConstants.ScriptGetOwnedSourceFiles,\n tail: 0,\n toast: 0,\n\n // Singularity Functions\n universityCourse: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost),\n gymWorkout: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost),\n travelToCity: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost),\n goToLocation: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n purchaseTor: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost),\n purchaseProgram: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost),\n getCurrentServer: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost),\n connect: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost),\n manualHack: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost),\n installBackdoor: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost),\n getDarkwebProgramCost: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost / 4),\n getDarkwebPrograms: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost / 4),\n getStats: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost / 4),\n getCharacterInformation: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost / 4),\n hospitalize: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost / 4),\n isBusy: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost / 4),\n stopAction: SF4Cost(RamCostConstants.ScriptSingularityFn1RamCost / 2),\n upgradeHomeRam: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost),\n upgradeHomeCores: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost),\n getUpgradeHomeRamCost: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost / 2),\n getUpgradeHomeCoresCost: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost / 2),\n workForCompany: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost),\n applyToCompany: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost),\n getCompanyRep: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost / 3),\n getCompanyFavor: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost / 3),\n getCompanyFavorGain: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost / 4),\n checkFactionInvitations: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost),\n joinFaction: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost),\n workForFaction: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost),\n getFactionRep: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost / 3),\n getFactionFavor: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost / 3),\n getFactionFavorGain: SF4Cost(RamCostConstants.ScriptSingularityFn2RamCost / 4),\n donateToFaction: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n createProgram: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n commitCrime: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n getCrimeChance: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n getCrimeStats: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n getOwnedAugmentations: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n getAugmentationsFromFaction: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n getAugmentationCost: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n getAugmentationPrereq: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n getAugmentationPrice: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost / 2),\n getAugmentationRepReq: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost / 2),\n getAugmentationStats: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n purchaseAugmentation: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n softReset: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n installAugmentations: SF4Cost(RamCostConstants.ScriptSingularityFn3RamCost),\n isFocused: SF4Cost(0.1),\n setFocus: SF4Cost(0.1),\n\n // Gang API\n gang: {\n createGang: RamCostConstants.ScriptGangApiBaseRamCost / 4,\n inGang: RamCostConstants.ScriptGangApiBaseRamCost / 4,\n getMemberNames: RamCostConstants.ScriptGangApiBaseRamCost / 4,\n getGangInformation: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n getOtherGangInformation: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n getMemberInformation: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n canRecruitMember: RamCostConstants.ScriptGangApiBaseRamCost / 4,\n recruitMember: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n getTaskNames: RamCostConstants.ScriptGangApiBaseRamCost / 4,\n getTaskStats: RamCostConstants.ScriptGangApiBaseRamCost / 4,\n setMemberTask: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n getEquipmentNames: RamCostConstants.ScriptGangApiBaseRamCost / 4,\n getEquipmentCost: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n getEquipmentType: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n getEquipmentStats: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n purchaseEquipment: RamCostConstants.ScriptGangApiBaseRamCost,\n ascendMember: RamCostConstants.ScriptGangApiBaseRamCost,\n getAscensionResult: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n setTerritoryWarfare: RamCostConstants.ScriptGangApiBaseRamCost / 2,\n getChanceToWinClash: RamCostConstants.ScriptGangApiBaseRamCost,\n getBonusTime: 0,\n },\n\n // Bladeburner API\n bladeburner: {\n getContractNames: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 10,\n getOperationNames: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 10,\n getBlackOpNames: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 10,\n getBlackOpRank: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 2,\n getGeneralActionNames: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 10,\n getSkillNames: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 10,\n startAction: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n stopBladeburnerAction: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 2,\n getCurrentAction: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 4,\n getActionTime: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getActionEstimatedSuccessChance: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getActionRepGain: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getActionCountRemaining: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getActionMaxLevel: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getActionCurrentLevel: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getActionAutolevel: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n setActionAutolevel: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n setActionLevel: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getRank: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getSkillPoints: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getSkillLevel: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getSkillUpgradeCost: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n upgradeSkill: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getTeamSize: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n setTeamSize: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getCityEstimatedPopulation: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getCityCommunities: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getCityChaos: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getCity: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n switchCity: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getStamina: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n joinBladeburnerFaction: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n joinBladeburnerDivision: RamCostConstants.ScriptBladeburnerApiBaseRamCost,\n getBonusTime: 0,\n },\n\n // Coding Contract API\n codingcontract: {\n attempt: RamCostConstants.ScriptCodingContractBaseRamCost,\n getContractType: RamCostConstants.ScriptCodingContractBaseRamCost / 2,\n getData: RamCostConstants.ScriptCodingContractBaseRamCost / 2,\n getDescription: RamCostConstants.ScriptCodingContractBaseRamCost / 2,\n getNumTriesRemaining: RamCostConstants.ScriptCodingContractBaseRamCost / 5,\n },\n\n // Duplicate Sleeve API\n sleeve: {\n getNumSleeves: RamCostConstants.ScriptSleeveBaseRamCost,\n setToShockRecovery: RamCostConstants.ScriptSleeveBaseRamCost,\n setToSynchronize: RamCostConstants.ScriptSleeveBaseRamCost,\n setToCommitCrime: RamCostConstants.ScriptSleeveBaseRamCost,\n setToUniversityCourse: RamCostConstants.ScriptSleeveBaseRamCost,\n travel: RamCostConstants.ScriptSleeveBaseRamCost,\n setToCompanyWork: RamCostConstants.ScriptSleeveBaseRamCost,\n setToFactionWork: RamCostConstants.ScriptSleeveBaseRamCost,\n setToGymWorkout: RamCostConstants.ScriptSleeveBaseRamCost,\n getSleeveStats: RamCostConstants.ScriptSleeveBaseRamCost,\n getTask: RamCostConstants.ScriptSleeveBaseRamCost,\n getInformation: RamCostConstants.ScriptSleeveBaseRamCost,\n getSleeveAugmentations: RamCostConstants.ScriptSleeveBaseRamCost,\n getSleevePurchasableAugs: RamCostConstants.ScriptSleeveBaseRamCost,\n purchaseSleeveAug: RamCostConstants.ScriptSleeveBaseRamCost,\n },\n\n stanek: {\n giftWidth: RamCostConstants.ScriptStanekWidth,\n giftHeight: RamCostConstants.ScriptStanekHeight,\n chargeFragment: RamCostConstants.ScriptStanekCharge,\n fragmentDefinitions: RamCostConstants.ScriptStanekFragmentDefinitions,\n activeFragments: RamCostConstants.ScriptStanekPlacedFragments,\n clearGift: RamCostConstants.ScriptStanekClear,\n canPlaceFragment: RamCostConstants.ScriptStanekCanPlace,\n placeFragment: RamCostConstants.ScriptStanekPlace,\n getFragment: RamCostConstants.ScriptStanekFragmentAt,\n removeFragment: RamCostConstants.ScriptStanekDeleteAt,\n },\n\n ui: {\n getTheme: 0,\n setTheme: 0,\n resetTheme: 0,\n getStyles: 0,\n setStyles: 0,\n resetStyles: 0,\n getGameInfo: 0,\n },\n\n grafting: {\n getAugmentationGraftPrice: 3.75,\n getAugmentationGraftTime: 3.75,\n graftAugmentation: 7.5,\n },\n\n heart: {\n // Easter egg function\n break: 0,\n },\n};\n\nexport function getRamCost(player: IPlayer, ...args: string[]): number {\n if (args.length === 0) {\n console.warn(`No arguments passed to getRamCost()`);\n return 0;\n }\n\n let curr = RamCosts[args[0]];\n for (let i = 1; i < args.length; ++i) {\n if (curr == null) {\n console.warn(`Invalid function passed to getRamCost: ${args}`);\n return 0;\n }\n\n const currType = typeof curr;\n if (currType === \"function\" || currType === \"number\") {\n break;\n }\n\n curr = curr[args[i]];\n }\n\n if (typeof curr === \"number\") {\n return curr;\n }\n\n if (typeof curr === \"function\") {\n return curr(player);\n }\n\n console.warn(`Unexpected type (${curr}) for value [${args}]`);\n return 0;\n}\n","/**\n * Gets a random integer bounded by the values passed in.\n * @param min The minimum value in the range.\n * @param max The maximum value in the range.\n */\nexport function getRandomInt(min: number, max: number): number {\n const lower: number = Math.min(min, max);\n const upper: number = Math.max(min, max);\n\n return Math.floor(Math.random() * (upper - lower + 1)) + lower;\n}\n","import { CityName } from \"./../../Locations/data/CityNames\";\nconst CyclesPerMarketCycle = 50;\nconst AllCorporationStates = [\"START\", \"PURCHASE\", \"PRODUCTION\", \"SALE\", \"EXPORT\"];\nexport const CorporationConstants: {\n INITIALSHARES: number;\n SHARESPERPRICEUPDATE: number;\n IssueNewSharesCooldown: number;\n SellSharesCooldown: number;\n CyclesPerMarketCycle: number;\n CyclesPerIndustryStateCycle: number;\n SecsPerMarketCycle: number;\n Cities: string[];\n WarehouseInitialCost: number;\n WarehouseInitialSize: number;\n WarehouseUpgradeBaseCost: number;\n OfficeInitialCost: number;\n OfficeInitialSize: number;\n OfficeUpgradeBaseCost: number;\n BribeThreshold: number;\n BribeToRepRatio: number;\n ProductProductionCostRatio: number;\n DividendMaxPercentage: number;\n EmployeeSalaryMultiplier: number;\n CyclesPerEmployeeRaise: number;\n EmployeeRaiseAmount: number;\n BaseMaxProducts: number;\n AllCorporationStates: string[];\n AllMaterials: string[];\n FundingRoundShares: number[];\n FundingRoundMultiplier: number[];\n} = {\n INITIALSHARES: 1e9, //Total number of shares you have at your company\n SHARESPERPRICEUPDATE: 1e6, //When selling large number of shares, price is dynamically updated for every batch of this amount\n IssueNewSharesCooldown: 216e3, // 12 Hour in terms of game cycles\n SellSharesCooldown: 18e3, // 1 Hour in terms of game cycles\n\n CyclesPerMarketCycle: CyclesPerMarketCycle,\n CyclesPerIndustryStateCycle: CyclesPerMarketCycle / AllCorporationStates.length,\n SecsPerMarketCycle: CyclesPerMarketCycle / 5,\n\n Cities: [\n CityName.Aevum,\n CityName.Chongqing,\n CityName.Sector12,\n CityName.NewTokyo,\n CityName.Ishima,\n CityName.Volhaven,\n ],\n\n WarehouseInitialCost: 5e9, //Initial purchase cost of warehouse\n WarehouseInitialSize: 100,\n WarehouseUpgradeBaseCost: 1e9,\n\n OfficeInitialCost: 4e9,\n OfficeInitialSize: 3,\n OfficeUpgradeBaseCost: 1e9,\n\n BribeThreshold: 100e12, //Money needed to be able to bribe for faction rep\n BribeToRepRatio: 1e9, //Bribe Value divided by this = rep gain\n\n ProductProductionCostRatio: 5, //Ratio of material cost of a product to its production cost\n\n DividendMaxPercentage: 1,\n\n EmployeeSalaryMultiplier: 3, // Employee stats multiplied by this to determine initial salary\n CyclesPerEmployeeRaise: 400, // All employees get a raise every X market cycles\n EmployeeRaiseAmount: 50, // Employee salary increases by this (additive)\n\n BaseMaxProducts: 3, // Initial value for maximum number of products allowed\n AllCorporationStates: AllCorporationStates,\n AllMaterials: [\n \"Water\",\n \"Energy\",\n \"Food\",\n \"Plants\",\n \"Metal\",\n \"Hardware\",\n \"Chemicals\",\n \"Drugs\",\n \"Robots\",\n \"AI Cores\",\n \"Real Estate\",\n ],\n FundingRoundShares: [0.1, 0.35, 0.25, 0.2],\n FundingRoundMultiplier: [4, 3, 3, 2.5],\n};\n","export const HacknetNodeConstants: {\n // Constants for Hacknet Node production\n MoneyGainPerLevel: number;\n\n // Constants for Hacknet Node purchase/upgrade costs\n BaseCost: number;\n LevelBaseCost: number;\n RamBaseCost: number;\n CoreBaseCost: number;\n\n PurchaseNextMult: number;\n UpgradeLevelMult: number;\n UpgradeRamMult: number;\n UpgradeCoreMult: number;\n\n // Constants for max upgrade levels for Hacknet Nodes\n MaxLevel: number;\n MaxRam: number;\n MaxCores: number;\n} = {\n MoneyGainPerLevel: 1.5,\n\n BaseCost: 1000,\n LevelBaseCost: 1,\n RamBaseCost: 30e3,\n CoreBaseCost: 500e3,\n\n PurchaseNextMult: 1.85,\n UpgradeLevelMult: 1.04,\n UpgradeRamMult: 1.28,\n UpgradeCoreMult: 1.48,\n\n MaxLevel: 200,\n MaxRam: 64,\n MaxCores: 16,\n};\n\nexport const PurchaseMultipliers: {\n [key: string]: number | \"MAX\" | undefined;\n x1: number;\n x5: number;\n x10: number;\n MAX: \"MAX\";\n} = {\n x1: 1,\n x5: 5,\n x10: 10,\n MAX: \"MAX\",\n};\n\nexport const HacknetServerConstants: {\n // Constants for Hacknet Server stats/production\n HashesPerLevel: number;\n\n // Constants for Hacknet Server purchase/upgrade costs\n BaseCost: number;\n RamBaseCost: number;\n CoreBaseCost: number;\n CacheBaseCost: number;\n\n PurchaseMult: number; // Multiplier for puchasing an additional Hacknet Server\n UpgradeLevelMult: number; // Multiplier for cost when upgrading level\n UpgradeRamMult: number; // Multiplier for cost when upgrading RAM\n UpgradeCoreMult: number; // Multiplier for cost when buying another core\n UpgradeCacheMult: number; // Multiplier for cost when upgrading cache\n MaxServers: number; // Max number of Hacknet Servers you can own\n\n // Constants for max upgrade levels for Hacknet Server\n MaxLevel: number;\n MaxRam: number;\n MaxCores: number;\n MaxCache: number;\n} = {\n HashesPerLevel: 0.001,\n\n BaseCost: 50e3,\n RamBaseCost: 200e3,\n CoreBaseCost: 1e6,\n CacheBaseCost: 10e6,\n\n PurchaseMult: 3.2,\n UpgradeLevelMult: 1.1,\n UpgradeRamMult: 1.4,\n UpgradeCoreMult: 1.55,\n UpgradeCacheMult: 1.85,\n\n MaxServers: 20,\n\n MaxLevel: 300,\n MaxRam: 8192,\n MaxCores: 128,\n MaxCache: 15,\n};\n","// Class definition for a single Augmentation object\nimport * as React from \"react\";\nimport { IMap } from \"../types\";\n\nimport { Faction } from \"../Faction/Faction\";\nimport { Factions } from \"../Faction/Factions\";\nimport { numeralWrapper } from \"../ui/numeralFormat\";\nimport { Money } from \"../ui/React/Money\";\n\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\n\nexport interface IConstructorParams {\n info: string | JSX.Element;\n stats?: JSX.Element | null;\n isSpecial?: boolean;\n moneyCost: number;\n name: string;\n prereqs?: string[];\n repCost: number;\n factions: string[];\n\n hacking_mult?: number;\n strength_mult?: number;\n defense_mult?: number;\n dexterity_mult?: number;\n agility_mult?: number;\n charisma_mult?: number;\n hacking_exp_mult?: number;\n strength_exp_mult?: number;\n defense_exp_mult?: number;\n dexterity_exp_mult?: number;\n agility_exp_mult?: number;\n charisma_exp_mult?: number;\n hacking_chance_mult?: number;\n hacking_speed_mult?: number;\n hacking_money_mult?: number;\n hacking_grow_mult?: number;\n company_rep_mult?: number;\n faction_rep_mult?: number;\n crime_money_mult?: number;\n crime_success_mult?: number;\n work_money_mult?: number;\n hacknet_node_money_mult?: number;\n hacknet_node_purchase_cost_mult?: number;\n hacknet_node_ram_cost_mult?: number;\n hacknet_node_core_cost_mult?: number;\n hacknet_node_level_cost_mult?: number;\n bladeburner_max_stamina_mult?: number;\n bladeburner_stamina_gain_mult?: number;\n bladeburner_analysis_mult?: number;\n bladeburner_success_chance_mult?: number;\n\n startingMoney?: number;\n programs?: string[];\n}\n\nfunction generateStatsDescription(mults: IMap, programs?: string[], startingMoney?: number): JSX.Element {\n const f = (x: number, decimals = 0): string => {\n // look, I don't know how to make a \"smart decimals\"\n // todo, make it smarter\n if (x === 1.0777 - 1) return \"7.77%\";\n if (x === 1.777 - 1) return \"77.7%\";\n return numeralWrapper.formatPercentage(x, decimals);\n };\n let desc = <>Effects:>;\n\n if (\n mults.hacking_mult &&\n mults.hacking_mult == mults.strength_mult &&\n mults.hacking_mult == mults.defense_mult &&\n mults.hacking_mult == mults.dexterity_mult &&\n mults.hacking_mult == mults.agility_mult &&\n mults.hacking_mult == mults.charisma_mult\n ) {\n desc = (\n <>\n {desc}\n +{f(mults.hacking_mult - 1)} all skills\n >\n );\n } else {\n if (mults.hacking_mult)\n desc = (\n <>\n {desc}\n +{f(mults.hacking_mult - 1)} hacking skill\n >\n );\n\n if (\n mults.strength_mult &&\n mults.strength_mult == mults.defense_mult &&\n mults.strength_mult == mults.dexterity_mult &&\n mults.strength_mult == mults.agility_mult\n ) {\n desc = (\n <>\n {desc}\n +{f(mults.strength_mult - 1)} combat skills\n >\n );\n } else {\n if (mults.strength_mult)\n desc = (\n <>\n {desc}\n +{f(mults.strength_mult - 1)} strength skill\n >\n );\n if (mults.defense_mult)\n desc = (\n <>\n {desc}\n +{f(mults.defense_mult - 1)} defense skill\n >\n );\n if (mults.dexterity_mult)\n desc = (\n <>\n {desc}\n +{f(mults.dexterity_mult - 1)} dexterity skill\n >\n );\n if (mults.agility_mult)\n desc = (\n <>\n {desc}\n +{f(mults.agility_mult - 1)} agility skill\n >\n );\n }\n if (mults.charisma_mult)\n desc = (\n <>\n {desc}\n +{f(mults.charisma_mult - 1)} Charisma skill\n >\n );\n }\n\n if (\n mults.hacking_exp_mult &&\n mults.hacking_exp_mult === mults.strength_exp_mult &&\n mults.hacking_exp_mult === mults.defense_exp_mult &&\n mults.hacking_exp_mult === mults.dexterity_exp_mult &&\n mults.hacking_exp_mult === mults.agility_exp_mult &&\n mults.hacking_exp_mult === mults.charisma_exp_mult\n ) {\n desc = (\n <>\n {desc}\n +{f(mults.hacking_exp_mult - 1)} exp for all skills\n >\n );\n } else {\n if (mults.hacking_exp_mult)\n desc = (\n <>\n {desc}\n +{f(mults.hacking_exp_mult - 1)} hacking exp\n >\n );\n\n if (\n mults.strength_exp_mult &&\n mults.strength_exp_mult === mults.defense_exp_mult &&\n mults.strength_exp_mult === mults.dexterity_exp_mult &&\n mults.strength_exp_mult === mults.agility_exp_mult\n ) {\n desc = (\n <>\n {desc}\n +{f(mults.strength_exp_mult - 1)} combat exp\n >\n );\n } else {\n if (mults.strength_exp_mult)\n desc = (\n <>\n {desc}\n +{f(mults.strength_exp_mult - 1)} strength exp\n >\n );\n if (mults.defense_exp_mult)\n desc = (\n <>\n {desc}\n +{f(mults.defense_exp_mult - 1)} defense exp\n >\n );\n if (mults.dexterity_exp_mult)\n desc = (\n <>\n {desc}\n +{f(mults.dexterity_exp_mult - 1)} dexterity exp\n >\n );\n if (mults.agility_exp_mult)\n desc = (\n <>\n {desc}\n +{f(mults.agility_exp_mult - 1)} agility exp\n >\n );\n }\n if (mults.charisma_exp_mult)\n desc = (\n <>\n {desc}\n +{f(mults.charisma_exp_mult - 1)} charisma exp\n >\n );\n }\n\n if (mults.hacking_speed_mult)\n desc = (\n <>\n {desc}\n +{f(mults.hacking_speed_mult - 1)} faster hack(), grow(), and weaken()\n >\n );\n if (mults.hacking_chance_mult)\n desc = (\n <>\n {desc}\n +{f(mults.hacking_chance_mult - 1)} hack() success chance\n >\n );\n if (mults.hacking_money_mult)\n desc = (\n <>\n {desc}\n +{f(mults.hacking_money_mult - 1)} hack() power\n >\n );\n if (mults.hacking_grow_mult)\n desc = (\n <>\n {desc}\n +{f(mults.hacking_grow_mult - 1)} grow() power\n >\n );\n\n if (mults.faction_rep_mult && mults.faction_rep_mult === mults.company_rep_mult) {\n desc = (\n <>\n {desc}\n +{f(mults.faction_rep_mult - 1)} reputation from factions and companies\n >\n );\n } else {\n if (mults.faction_rep_mult)\n desc = (\n <>\n {desc}\n +{f(mults.faction_rep_mult - 1)} reputation from factions\n >\n );\n if (mults.company_rep_mult)\n desc = (\n <>\n {desc}\n +{f(mults.company_rep_mult - 1)} reputation from companies\n >\n );\n }\n\n if (mults.crime_money_mult)\n desc = (\n <>\n {desc}\n +{f(mults.crime_money_mult - 1)} crime money\n >\n );\n if (mults.crime_success_mult)\n desc = (\n <>\n {desc}\n +{f(mults.crime_success_mult - 1)} crime success rate\n >\n );\n if (mults.work_money_mult)\n desc = (\n <>\n {desc}\n +{f(mults.work_money_mult - 1)} work money\n >\n );\n\n if (mults.hacknet_node_money_mult)\n desc = (\n <>\n {desc}\n +{f(mults.hacknet_node_money_mult - 1)} hacknet production\n >\n );\n if (mults.hacknet_node_purchase_cost_mult)\n desc = (\n <>\n {desc}\n -{f(-(mults.hacknet_node_purchase_cost_mult - 1))} hacknet nodes cost\n >\n );\n if (mults.hacknet_node_level_cost_mult)\n desc = (\n <>\n {desc}\n -{f(-(mults.hacknet_node_level_cost_mult - 1))} hacknet nodes upgrade cost\n >\n );\n\n if (mults.bladeburner_max_stamina_mult)\n desc = (\n <>\n {desc}\n +{f(mults.bladeburner_max_stamina_mult - 1)} Bladeburner Max Stamina\n >\n );\n if (mults.bladeburner_stamina_gain_mult)\n desc = (\n <>\n {desc}\n +{f(mults.bladeburner_stamina_gain_mult - 1)} Bladeburner Stamina gain\n >\n );\n if (mults.bladeburner_analysis_mult)\n desc = (\n <>\n {desc}\n +{f(mults.bladeburner_analysis_mult - 1)} Bladeburner Field Analysis effectiveness\n >\n );\n if (mults.bladeburner_success_chance_mult)\n desc = (\n <>\n {desc}\n +{f(mults.bladeburner_success_chance_mult - 1)} Bladeburner Contracts and Operations success chance\n >\n );\n\n if (startingMoney)\n desc = (\n <>\n {desc}\n \n Start with after installing Augmentations.\n >\n );\n\n if (programs)\n desc = (\n <>\n {desc}\n \n Start with {programs.join(\" and \")} after installing Augmentations.\n >\n );\n return desc;\n}\n\nexport class Augmentation {\n // How much money this costs to buy\n baseCost = 0;\n\n // How much faction reputation is required to unlock this\n baseRepRequirement = 0;\n\n // Description of what this Aug is and what it does\n info: string | JSX.Element;\n\n // Description of the stats, often autogenerated, sometimes manually written.\n stats: JSX.Element | null;\n\n // Any Augmentation not immediately available in BitNode-1 is special (e.g. Bladeburner augs)\n isSpecial = false;\n\n // Augmentation level - for repeatable Augs like NeuroFlux Governor\n level = 0;\n\n // Name of Augmentation\n name = \"\";\n\n // Whether the player owns this Augmentation\n owned = false;\n\n // Array of names of all prerequisites\n prereqs: string[] = [];\n\n // Multipliers given by this Augmentation. Must match the property name in\n // The Player/Person classes\n mults: IMap = {};\n\n // Initial cost. Doesn't change when you purchase multiple Augmentation\n startingCost = 0;\n\n // Factions that offer this aug.\n factions: string[] = [];\n\n constructor(\n params: IConstructorParams = {\n info: \"\",\n moneyCost: 0,\n name: \"\",\n repCost: 0,\n factions: [],\n },\n ) {\n this.name = params.name;\n this.info = params.info;\n this.prereqs = params.prereqs ? params.prereqs : [];\n\n this.baseRepRequirement = params.repCost;\n this.baseCost = params.moneyCost;\n this.startingCost = this.baseCost;\n this.factions = params.factions;\n\n if (params.isSpecial) {\n this.isSpecial = true;\n }\n\n this.level = 0;\n\n // Set multipliers\n if (params.hacking_mult) {\n this.mults.hacking_mult = params.hacking_mult;\n }\n if (params.strength_mult) {\n this.mults.strength_mult = params.strength_mult;\n }\n if (params.defense_mult) {\n this.mults.defense_mult = params.defense_mult;\n }\n if (params.dexterity_mult) {\n this.mults.dexterity_mult = params.dexterity_mult;\n }\n if (params.agility_mult) {\n this.mults.agility_mult = params.agility_mult;\n }\n if (params.charisma_mult) {\n this.mults.charisma_mult = params.charisma_mult;\n }\n if (params.hacking_exp_mult) {\n this.mults.hacking_exp_mult = params.hacking_exp_mult;\n }\n if (params.strength_exp_mult) {\n this.mults.strength_exp_mult = params.strength_exp_mult;\n }\n if (params.defense_exp_mult) {\n this.mults.defense_exp_mult = params.defense_exp_mult;\n }\n if (params.dexterity_exp_mult) {\n this.mults.dexterity_exp_mult = params.dexterity_exp_mult;\n }\n if (params.agility_exp_mult) {\n this.mults.agility_exp_mult = params.agility_exp_mult;\n }\n if (params.charisma_exp_mult) {\n this.mults.charisma_exp_mult = params.charisma_exp_mult;\n }\n if (params.hacking_chance_mult) {\n this.mults.hacking_chance_mult = params.hacking_chance_mult;\n }\n if (params.hacking_speed_mult) {\n this.mults.hacking_speed_mult = params.hacking_speed_mult;\n }\n if (params.hacking_money_mult) {\n this.mults.hacking_money_mult = params.hacking_money_mult;\n }\n if (params.hacking_grow_mult) {\n this.mults.hacking_grow_mult = params.hacking_grow_mult;\n }\n if (params.company_rep_mult) {\n this.mults.company_rep_mult = params.company_rep_mult;\n }\n if (params.faction_rep_mult) {\n this.mults.faction_rep_mult = params.faction_rep_mult;\n }\n if (params.crime_money_mult) {\n this.mults.crime_money_mult = params.crime_money_mult;\n }\n if (params.crime_success_mult) {\n this.mults.crime_success_mult = params.crime_success_mult;\n }\n if (params.work_money_mult) {\n this.mults.work_money_mult = params.work_money_mult;\n }\n if (params.hacknet_node_money_mult) {\n this.mults.hacknet_node_money_mult = params.hacknet_node_money_mult;\n }\n if (params.hacknet_node_purchase_cost_mult) {\n this.mults.hacknet_node_purchase_cost_mult = params.hacknet_node_purchase_cost_mult;\n }\n if (params.hacknet_node_ram_cost_mult) {\n this.mults.hacknet_node_ram_cost_mult = params.hacknet_node_ram_cost_mult;\n }\n if (params.hacknet_node_core_cost_mult) {\n this.mults.hacknet_node_core_cost_mult = params.hacknet_node_core_cost_mult;\n }\n if (params.hacknet_node_level_cost_mult) {\n this.mults.hacknet_node_level_cost_mult = params.hacknet_node_level_cost_mult;\n }\n if (params.bladeburner_max_stamina_mult) {\n this.mults.bladeburner_max_stamina_mult = params.bladeburner_max_stamina_mult;\n }\n if (params.bladeburner_stamina_gain_mult) {\n this.mults.bladeburner_stamina_gain_mult = params.bladeburner_stamina_gain_mult;\n }\n if (params.bladeburner_analysis_mult) {\n this.mults.bladeburner_analysis_mult = params.bladeburner_analysis_mult;\n }\n if (params.bladeburner_success_chance_mult) {\n this.mults.bladeburner_success_chance_mult = params.bladeburner_success_chance_mult;\n }\n\n if (params.stats === undefined)\n this.stats = generateStatsDescription(this.mults, params.programs, params.startingMoney);\n else this.stats = params.stats;\n }\n\n // Adds this Augmentation to the specified Factions\n addToFactions(factionList: string[]): void {\n for (let i = 0; i < factionList.length; ++i) {\n const faction: Faction | null = Factions[factionList[i]];\n if (faction == null) {\n console.warn(`In Augmentation.addToFactions(), could not find faction with this name: ${factionList[i]}`);\n continue;\n }\n faction.augmentations.push(this.name);\n }\n }\n\n // Adds this Augmentation to all Factions\n addToAllFactions(): void {\n for (const fac of Object.keys(Factions)) {\n if (Factions.hasOwnProperty(fac)) {\n const facObj: Faction | null = Factions[fac];\n if (facObj == null) {\n console.warn(`Invalid Faction object in addToAllFactions(). Key value: ${fac}`);\n continue;\n }\n if (facObj.getInfo().special) continue;\n facObj.augmentations.push(this.name);\n }\n }\n }\n\n // Serialize the current object to a JSON save state.\n toJSON(): any {\n return Generic_toJSON(\"Augmentation\", this);\n }\n\n // Initiatizes a Augmentation object from a JSON save state.\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Augmentation {\n return Generic_fromJSON(Augmentation, value.data);\n }\n}\n\nReviver.constructors.Augmentation = Augmentation;\n","import React from \"react\";\nimport { Theme } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport M from \"@mui/material/Modal\";\nimport Fade from \"@mui/material/Fade\";\nimport Box from \"@mui/material/Box\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n modal: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n paper: {\n backgroundColor: theme.palette.background.default,\n border: \"2px solid \" + theme.palette.primary.main,\n boxShadow: `0px 3px 5px -1px ${theme.palette.primary.dark},0px 5px 8px 0px ${theme.palette.primary.dark},0px 1px 14px 0px ${theme.palette.primary.dark}`,\n padding: 2,\n maxWidth: \"80%\",\n maxHeight: \"80%\",\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n // webkit\n display: \"none\",\n },\n scrollbarWidth: \"none\", // firefox\n },\n }),\n);\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n}\n\nexport const Modal = (props: IProps): React.ReactElement => {\n const classes = useStyles();\n return (\n \n \n
\n {props.children}\n
\n \n \n );\n};\n","// Action Identifier enum\nexport const ActionTypes: {\n [key: string]: number;\n Idle: number;\n Contract: number;\n Operation: number;\n BlackOp: number;\n BlackOperation: number;\n Training: number;\n Recruitment: number;\n FieldAnalysis: number;\n \"Field Analysis\": number;\n Diplomacy: number;\n \"Hyperbolic Regeneration Chamber\": number;\n \"Incite Violence\": number;\n} = {\n Idle: 1,\n Contract: 2,\n Operation: 3,\n BlackOp: 4,\n BlackOperation: 4,\n Training: 5,\n Recruitment: 6,\n FieldAnalysis: 7,\n \"Field Analysis\": 7,\n Diplomacy: 8,\n \"Hyperbolic Regeneration Chamber\": 9,\n \"Incite Violence\": 10,\n};\n","import React from \"react\";\nimport { TableCell as MuiTableCell, TableCellProps, Table as MuiTable, TableProps } from \"@mui/material\";\n\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst useStyles = makeStyles({\n root: {\n borderBottom: \"none\",\n },\n small: {\n width: \"1px\",\n },\n});\n\nexport const TableCell: React.FC = (props: TableCellProps) => {\n return (\n \n );\n};\n\nexport const Table: React.FC = (props: TableProps) => {\n return (\n \n );\n};\n","import { Player } from \"./Player\";\n\nimport { LiteratureNames } from \"./Literature/data/LiteratureNames\";\n\nimport { ITutorialEvents } from \"./ui/InteractiveTutorial/ITutorialEvents\";\n\n// Ordered array of keys to Interactive Tutorial Steps\nenum iTutorialSteps {\n Start,\n GoToCharacterPage, // Click on 'Stats' page\n CharacterPage, // Introduction to 'Stats' page\n CharacterGoToTerminalPage, // Go back to Terminal\n TerminalIntro, // Introduction to Terminal\n TerminalHelp, // Using 'help' Terminal command\n TerminalLs, // Using 'ls' Terminal command\n TerminalScan, // Using 'scan' Terminal command\n TerminalScanAnalyze1, // Using 'scan-analyze' Terminal command\n TerminalScanAnalyze2, // Using 'scan-analyze 3' Terminal command\n TerminalConnect, // Connecting to n00dles\n TerminalAnalyze, // Analyzing n00dles\n TerminalNuke, // NUKE n00dles\n TerminalManualHack, // Hack n00dles\n TerminalHackingMechanics, // Explanation of hacking mechanics\n TerminalGoHome, // Go home before creating a script.\n TerminalCreateScript, // Create a script using 'nano'\n TerminalTypeScript, // Script Editor page - Type script and then save & close\n TerminalFree, // Using 'Free' Terminal command\n TerminalRunScript, // Running script using 'run' Terminal command\n TerminalGoToActiveScriptsPage,\n ActiveScriptsPage,\n ActiveScriptsToTerminal,\n TerminalTailScript,\n GoToHacknetNodesPage,\n HacknetNodesIntroduction,\n HacknetNodesGoToWorldPage,\n WorldDescription,\n TutorialPageInfo,\n End,\n}\n\nconst ITutorial: {\n currStep: iTutorialSteps;\n isRunning: boolean;\n stepIsDone: {\n [iTutorialSteps.Start]: boolean;\n [iTutorialSteps.GoToCharacterPage]: boolean;\n [iTutorialSteps.CharacterPage]: boolean;\n [iTutorialSteps.CharacterGoToTerminalPage]: boolean;\n [iTutorialSteps.TerminalIntro]: boolean;\n [iTutorialSteps.TerminalHelp]: boolean;\n [iTutorialSteps.TerminalLs]: boolean;\n [iTutorialSteps.TerminalScan]: boolean;\n [iTutorialSteps.TerminalScanAnalyze1]: boolean;\n [iTutorialSteps.TerminalScanAnalyze2]: boolean;\n [iTutorialSteps.TerminalConnect]: boolean;\n [iTutorialSteps.TerminalAnalyze]: boolean;\n [iTutorialSteps.TerminalNuke]: boolean;\n [iTutorialSteps.TerminalManualHack]: boolean;\n [iTutorialSteps.TerminalHackingMechanics]: boolean;\n [iTutorialSteps.TerminalGoHome]: boolean;\n [iTutorialSteps.TerminalCreateScript]: boolean;\n [iTutorialSteps.TerminalTypeScript]: boolean;\n [iTutorialSteps.TerminalFree]: boolean;\n [iTutorialSteps.TerminalRunScript]: boolean;\n [iTutorialSteps.TerminalGoToActiveScriptsPage]: boolean;\n [iTutorialSteps.ActiveScriptsPage]: boolean;\n [iTutorialSteps.ActiveScriptsToTerminal]: boolean;\n [iTutorialSteps.TerminalTailScript]: boolean;\n [iTutorialSteps.GoToHacknetNodesPage]: boolean;\n [iTutorialSteps.HacknetNodesIntroduction]: boolean;\n [iTutorialSteps.HacknetNodesGoToWorldPage]: boolean;\n [iTutorialSteps.WorldDescription]: boolean;\n [iTutorialSteps.TutorialPageInfo]: boolean;\n [iTutorialSteps.End]: boolean;\n };\n} = {\n currStep: iTutorialSteps.Start,\n isRunning: false,\n\n // Keeps track of whether each step has been done\n stepIsDone: {\n [iTutorialSteps.Start]: false,\n [iTutorialSteps.GoToCharacterPage]: false,\n [iTutorialSteps.CharacterPage]: false,\n [iTutorialSteps.CharacterGoToTerminalPage]: false,\n [iTutorialSteps.TerminalIntro]: false,\n [iTutorialSteps.TerminalHelp]: false,\n [iTutorialSteps.TerminalLs]: false,\n [iTutorialSteps.TerminalScan]: false,\n [iTutorialSteps.TerminalScanAnalyze1]: false,\n [iTutorialSteps.TerminalScanAnalyze2]: false,\n [iTutorialSteps.TerminalConnect]: false,\n [iTutorialSteps.TerminalAnalyze]: false,\n [iTutorialSteps.TerminalNuke]: false,\n [iTutorialSteps.TerminalManualHack]: false,\n [iTutorialSteps.TerminalHackingMechanics]: false,\n [iTutorialSteps.TerminalGoHome]: false,\n [iTutorialSteps.TerminalCreateScript]: false,\n [iTutorialSteps.TerminalTypeScript]: false,\n [iTutorialSteps.TerminalFree]: false,\n [iTutorialSteps.TerminalRunScript]: false,\n [iTutorialSteps.TerminalGoToActiveScriptsPage]: false,\n [iTutorialSteps.ActiveScriptsPage]: false,\n [iTutorialSteps.ActiveScriptsToTerminal]: false,\n [iTutorialSteps.TerminalTailScript]: false,\n [iTutorialSteps.GoToHacknetNodesPage]: false,\n [iTutorialSteps.HacknetNodesIntroduction]: false,\n [iTutorialSteps.HacknetNodesGoToWorldPage]: false,\n [iTutorialSteps.WorldDescription]: false,\n [iTutorialSteps.TutorialPageInfo]: false,\n [iTutorialSteps.End]: false,\n },\n};\n\nfunction iTutorialStart(): void {\n ITutorial.isRunning = true;\n ITutorial.currStep = iTutorialSteps.Start;\n}\n\n// Go to the next step and evaluate it\nfunction iTutorialNextStep(): void {\n ITutorial.stepIsDone[ITutorial.currStep] = true;\n if (ITutorial.currStep < iTutorialSteps.End) {\n ITutorial.currStep += 1;\n }\n if (ITutorial.currStep === iTutorialSteps.End) iTutorialEnd();\n ITutorialEvents.emit();\n}\n\n// Go to previous step and evaluate\nfunction iTutorialPrevStep(): void {\n if (ITutorial.currStep > iTutorialSteps.Start) {\n ITutorial.currStep -= 1;\n }\n ITutorialEvents.emit();\n}\n\nfunction iTutorialEnd(): void {\n ITutorial.isRunning = false;\n ITutorial.currStep = iTutorialSteps.Start;\n Player.getHomeComputer().messages.push(LiteratureNames.HackersStartingHandbook);\n ITutorialEvents.emit();\n}\n\nexport { iTutorialSteps, iTutorialEnd, iTutorialStart, iTutorialNextStep, ITutorial, iTutorialPrevStep };\n","import { IPlayer } from \"../IPlayer\";\nimport { PlayerObject } from \"./PlayerObject\";\nimport { Augmentations } from \"../../Augmentation/Augmentations\";\nimport { applyAugmentation } from \"../../Augmentation/AugmentationHelpers\";\nimport { PlayerOwnedAugmentation } from \"../../Augmentation/PlayerOwnedAugmentation\";\nimport { AugmentationNames } from \"../../Augmentation/data/AugmentationNames\";\nimport { BitNodeMultipliers } from \"../../BitNode/BitNodeMultipliers\";\nimport { CodingContractRewardType, ICodingContractReward } from \"../../CodingContracts\";\nimport { Company } from \"../../Company/Company\";\nimport { Companies } from \"../../Company/Companies\";\nimport { getNextCompanyPositionHelper } from \"../../Company/GetNextCompanyPosition\";\nimport { getJobRequirementText } from \"../../Company/GetJobRequirementText\";\nimport { CompanyPositions } from \"../../Company/CompanyPositions\";\nimport { CompanyPosition } from \"../../Company/CompanyPosition\";\nimport * as posNames from \"../../Company/data/companypositionnames\";\nimport { CONSTANTS } from \"../../Constants\";\nimport { Programs } from \"../../Programs/Programs\";\nimport { determineCrimeSuccess } from \"../../Crime/CrimeHelpers\";\nimport { Crimes } from \"../../Crime/Crimes\";\nimport { Exploit } from \"../../Exploits/Exploit\";\nimport { Faction } from \"../../Faction/Faction\";\nimport { Factions } from \"../../Faction/Factions\";\nimport { resetGangs } from \"../../Gang/AllGangs\";\nimport { Cities } from \"../../Locations/Cities\";\nimport { Locations } from \"../../Locations/Locations\";\nimport { CityName } from \"../../Locations/data/CityNames\";\nimport { LocationName } from \"../../Locations/data/LocationNames\";\nimport { Sleeve } from \"../Sleeve/Sleeve\";\nimport {\n calculateSkill as calculateSkillF,\n calculateSkillProgress as calculateSkillProgressF,\n ISkillProgress,\n} from \"../formulas/skill\";\nimport { calculateIntelligenceBonus } from \"../formulas/intelligence\";\nimport {\n getHackingWorkRepGain,\n getFactionSecurityWorkRepGain,\n getFactionFieldWorkRepGain,\n} from \"../formulas/reputation\";\nimport { GetServer, AddToAllServers, createUniqueRandomIp } from \"../../Server/AllServers\";\nimport { Server } from \"../../Server/Server\";\nimport { safetlyCreateUniqueServer } from \"../../Server/ServerHelpers\";\n\nimport { SpecialServers } from \"../../Server/data/SpecialServers\";\nimport { applySourceFile } from \"../../SourceFile/applySourceFile\";\nimport { applyExploit } from \"../../Exploits/applyExploits\";\nimport { SourceFiles } from \"../../SourceFile/SourceFiles\";\nimport { SourceFileFlags } from \"../../SourceFile/SourceFileFlags\";\nimport { influenceStockThroughCompanyWork } from \"../../StockMarket/PlayerInfluencing\";\nimport { getHospitalizationCost } from \"../../Hospital/Hospital\";\nimport { WorkerScript } from \"../../Netscript/WorkerScript\";\nimport { HacknetServer } from \"../../Hacknet/HacknetServer\";\n\nimport { numeralWrapper } from \"../../ui/numeralFormat\";\nimport { IRouter } from \"../../ui/Router\";\nimport { MoneySourceTracker } from \"../../utils/MoneySourceTracker\";\nimport { dialogBoxCreate } from \"../../ui/React/DialogBox\";\nimport { convertTimeMsToTimeElapsedString } from \"../../utils/StringHelperFunctions\";\n\nimport { Reputation } from \"../../ui/React/Reputation\";\nimport { Money } from \"../../ui/React/Money\";\n\nimport React from \"react\";\nimport { serverMetadata } from \"../../Server/data/servers\";\nimport { SnackbarEvents } from \"../../ui/React/Snackbar\";\nimport { calculateClassEarnings } from \"../formulas/work\";\nimport { achievements } from \"../../Achievements/Achievements\";\nimport { FactionNames } from \"../../Faction/data/FactionNames\";\n\nexport function init(this: IPlayer): void {\n /* Initialize Player's home computer */\n const t_homeComp = safetlyCreateUniqueServer({\n adminRights: true,\n hostname: \"home\",\n ip: createUniqueRandomIp(),\n isConnectedTo: true,\n maxRam: 8,\n organizationName: \"Home PC\",\n purchasedByPlayer: true,\n });\n this.currentServer = SpecialServers.Home;\n AddToAllServers(t_homeComp);\n\n this.getHomeComputer().programs.push(Programs.NukeProgram.name);\n}\n\nexport function prestigeAugmentation(this: PlayerObject): void {\n this.currentServer = SpecialServers.Home;\n\n this.numPeopleKilled = 0;\n\n //Reset stats\n this.hacking = 1;\n\n this.strength = 1;\n this.defense = 1;\n this.dexterity = 1;\n this.agility = 1;\n\n this.charisma = 1;\n\n this.hacking_exp = 0;\n this.strength_exp = 0;\n this.defense_exp = 0;\n this.dexterity_exp = 0;\n this.agility_exp = 0;\n this.charisma_exp = 0;\n\n this.money = 1000;\n\n this.city = CityName.Sector12;\n this.location = LocationName.TravelAgency;\n\n this.companyName = \"\";\n this.jobs = {};\n\n this.purchasedServers = [];\n\n this.factions = [];\n this.factionInvitations = [];\n\n this.queuedAugmentations = [];\n\n const numSleeves = Math.min(3, SourceFileFlags[10] + (this.bitNodeN === 10 ? 1 : 0)) + this.sleevesFromCovenant;\n if (this.sleeves.length > numSleeves) this.sleeves.length = numSleeves;\n for (let i = this.sleeves.length; i < numSleeves; i++) {\n this.sleeves.push(new Sleeve(this));\n }\n\n for (let i = 0; i < this.sleeves.length; ++i) {\n if (this.sleeves[i] instanceof Sleeve) {\n if (this.sleeves[i].shock >= 100) {\n this.sleeves[i].synchronize(this);\n } else {\n this.sleeves[i].shockRecovery(this);\n }\n }\n }\n\n this.isWorking = false;\n this.currentWorkFactionName = \"\";\n this.currentWorkFactionDescription = \"\";\n this.createProgramName = \"\";\n this.className = \"\";\n this.crimeType = \"\";\n\n this.workHackExpGainRate = 0;\n this.workStrExpGainRate = 0;\n this.workDefExpGainRate = 0;\n this.workDexExpGainRate = 0;\n this.workAgiExpGainRate = 0;\n this.workChaExpGainRate = 0;\n this.workRepGainRate = 0;\n this.workMoneyGainRate = 0;\n\n this.workHackExpGained = 0;\n this.workStrExpGained = 0;\n this.workDefExpGained = 0;\n this.workDexExpGained = 0;\n this.workAgiExpGained = 0;\n this.workChaExpGained = 0;\n this.workRepGained = 0;\n this.workMoneyGained = 0;\n\n this.timeWorked = 0;\n\n this.lastUpdate = new Date().getTime();\n\n // Statistics Trackers\n this.playtimeSinceLastAug = 0;\n this.scriptProdSinceLastAug = 0;\n this.moneySourceA.reset();\n\n this.hacknetNodes.length = 0;\n this.hashManager.prestige();\n\n // Reapply augs, re-calculate skills and reset HP\n this.reapplyAllAugmentations(true);\n this.hp = this.max_hp;\n}\n\nexport function prestigeSourceFile(this: IPlayer): void {\n this.entropy = 0;\n this.prestigeAugmentation();\n this.karma = 0;\n // Duplicate sleeves are reset to level 1 every Bit Node (but the number of sleeves you have persists)\n for (let i = 0; i < this.sleeves.length; ++i) {\n if (this.sleeves[i] instanceof Sleeve) {\n this.sleeves[i].prestige(this);\n } else {\n this.sleeves[i] = new Sleeve(this);\n }\n }\n\n if (this.bitNodeN === 10) {\n for (let i = 0; i < this.sleeves.length; i++) {\n this.sleeves[i].shock = Math.max(25, this.sleeves[i].shock);\n this.sleeves[i].sync = Math.max(25, this.sleeves[i].sync);\n }\n }\n\n this.timeWorked = 0;\n\n // Gang\n this.gang = null;\n resetGangs();\n\n // Reset Stock market\n this.hasWseAccount = false;\n this.hasTixApiAccess = false;\n this.has4SData = false;\n this.has4SDataTixApi = false;\n\n // BitNode 3: Corporatocracy\n this.corporation = null;\n\n this.moneySourceB.reset();\n this.playtimeSinceLastBitnode = 0;\n this.augmentations = [];\n}\n\nexport function receiveInvite(this: IPlayer, factionName: string): void {\n if (this.factionInvitations.includes(factionName) || this.factions.includes(factionName)) {\n return;\n }\n this.factionInvitations.push(factionName);\n}\n\n//Calculates skill level based on experience. The same formula will be used for every skill\nexport function calculateSkill(this: IPlayer, exp: number, mult = 1): number {\n return calculateSkillF(exp, mult);\n}\n\n//Calculates skill level progress based on experience. The same formula will be used for every skill\nexport function calculateSkillProgress(this: IPlayer, exp: number, mult = 1): ISkillProgress {\n return calculateSkillProgressF(exp, mult);\n}\n\nexport function updateSkillLevels(this: IPlayer): void {\n this.hacking = Math.max(\n 1,\n Math.floor(this.calculateSkill(this.hacking_exp, this.hacking_mult * BitNodeMultipliers.HackingLevelMultiplier)),\n );\n this.strength = Math.max(\n 1,\n Math.floor(this.calculateSkill(this.strength_exp, this.strength_mult * BitNodeMultipliers.StrengthLevelMultiplier)),\n );\n this.defense = Math.max(\n 1,\n Math.floor(this.calculateSkill(this.defense_exp, this.defense_mult * BitNodeMultipliers.DefenseLevelMultiplier)),\n );\n this.dexterity = Math.max(\n 1,\n Math.floor(\n this.calculateSkill(this.dexterity_exp, this.dexterity_mult * BitNodeMultipliers.DexterityLevelMultiplier),\n ),\n );\n this.agility = Math.max(\n 1,\n Math.floor(this.calculateSkill(this.agility_exp, this.agility_mult * BitNodeMultipliers.AgilityLevelMultiplier)),\n );\n this.charisma = Math.max(\n 1,\n Math.floor(this.calculateSkill(this.charisma_exp, this.charisma_mult * BitNodeMultipliers.CharismaLevelMultiplier)),\n );\n\n if (this.intelligence > 0) {\n this.intelligence = Math.floor(this.calculateSkill(this.intelligence_exp));\n } else {\n this.intelligence = 0;\n }\n\n const ratio = this.hp / this.max_hp;\n this.max_hp = Math.floor(10 + this.defense / 10);\n this.hp = Math.round(this.max_hp * ratio);\n}\n\nexport function resetMultipliers(this: IPlayer): void {\n this.hacking_chance_mult = 1;\n this.hacking_speed_mult = 1;\n this.hacking_money_mult = 1;\n this.hacking_grow_mult = 1;\n\n this.hacking_mult = 1;\n this.strength_mult = 1;\n this.defense_mult = 1;\n this.dexterity_mult = 1;\n this.agility_mult = 1;\n this.charisma_mult = 1;\n\n this.hacking_exp_mult = 1;\n this.strength_exp_mult = 1;\n this.defense_exp_mult = 1;\n this.dexterity_exp_mult = 1;\n this.agility_exp_mult = 1;\n this.charisma_exp_mult = 1;\n\n this.company_rep_mult = 1;\n this.faction_rep_mult = 1;\n\n this.crime_money_mult = 1;\n this.crime_success_mult = 1;\n\n this.hacknet_node_money_mult = 1;\n this.hacknet_node_purchase_cost_mult = 1;\n this.hacknet_node_ram_cost_mult = 1;\n this.hacknet_node_core_cost_mult = 1;\n this.hacknet_node_level_cost_mult = 1;\n\n this.work_money_mult = 1;\n\n this.bladeburner_max_stamina_mult = 1;\n this.bladeburner_stamina_gain_mult = 1;\n this.bladeburner_analysis_mult = 1;\n this.bladeburner_success_chance_mult = 1;\n}\n\nexport function hasProgram(this: IPlayer, programName: string): boolean {\n const home = this.getHomeComputer();\n if (home == null) {\n return false;\n }\n\n for (let i = 0; i < home.programs.length; ++i) {\n if (programName.toLowerCase() == home.programs[i].toLowerCase()) {\n return true;\n }\n }\n return false;\n}\n\nexport function setMoney(this: PlayerObject, money: number): void {\n if (isNaN(money)) {\n console.error(\"NaN passed into Player.setMoney()\");\n return;\n }\n this.money = money;\n}\n\nexport function gainMoney(this: PlayerObject, money: number, source: string): void {\n if (isNaN(money)) {\n console.error(\"NaN passed into Player.gainMoney()\");\n return;\n }\n\n this.money = this.money + money;\n this.recordMoneySource(money, source);\n}\n\nexport function loseMoney(this: PlayerObject, money: number, source: string): void {\n if (isNaN(money)) {\n console.error(\"NaN passed into Player.loseMoney()\");\n return;\n }\n if (this.money === Infinity && money === Infinity) return;\n this.money = this.money - money;\n this.recordMoneySource(-1 * money, source);\n}\n\nexport function canAfford(this: IPlayer, cost: number): boolean {\n if (isNaN(cost)) {\n console.error(`NaN passed into Player.canAfford()`);\n return false;\n }\n return this.money >= cost;\n}\n\nexport function recordMoneySource(this: PlayerObject, amt: number, source: string): void {\n if (!(this.moneySourceA instanceof MoneySourceTracker)) {\n console.warn(`Player.moneySourceA was not properly initialized. Resetting`);\n this.moneySourceA = new MoneySourceTracker();\n }\n if (!(this.moneySourceB instanceof MoneySourceTracker)) {\n console.warn(`Player.moneySourceB was not properly initialized. Resetting`);\n this.moneySourceB = new MoneySourceTracker();\n }\n this.moneySourceA.record(amt, source);\n this.moneySourceB.record(amt, source);\n}\n\nexport function gainHackingExp(this: IPlayer, exp: number): void {\n if (isNaN(exp)) {\n console.error(\"ERR: NaN passed into Player.gainHackingExp()\");\n return;\n }\n this.hacking_exp += exp;\n if (this.hacking_exp < 0) {\n this.hacking_exp = 0;\n }\n\n this.hacking = calculateSkillF(this.hacking_exp, this.hacking_mult * BitNodeMultipliers.HackingLevelMultiplier);\n}\n\nexport function gainStrengthExp(this: IPlayer, exp: number): void {\n if (isNaN(exp)) {\n console.error(\"ERR: NaN passed into Player.gainStrengthExp()\");\n return;\n }\n this.strength_exp += exp;\n if (this.strength_exp < 0) {\n this.strength_exp = 0;\n }\n\n this.strength = calculateSkillF(this.strength_exp, this.strength_mult * BitNodeMultipliers.StrengthLevelMultiplier);\n}\n\nexport function gainDefenseExp(this: IPlayer, exp: number): void {\n if (isNaN(exp)) {\n console.error(\"ERR: NaN passed into player.gainDefenseExp()\");\n return;\n }\n this.defense_exp += exp;\n if (this.defense_exp < 0) {\n this.defense_exp = 0;\n }\n\n this.defense = calculateSkillF(this.defense_exp, this.defense_mult * BitNodeMultipliers.DefenseLevelMultiplier);\n const ratio = this.hp / this.max_hp;\n this.max_hp = Math.floor(10 + this.defense / 10);\n this.hp = Math.round(this.max_hp * ratio);\n}\n\nexport function gainDexterityExp(this: IPlayer, exp: number): void {\n if (isNaN(exp)) {\n console.error(\"ERR: NaN passed into Player.gainDexterityExp()\");\n return;\n }\n this.dexterity_exp += exp;\n if (this.dexterity_exp < 0) {\n this.dexterity_exp = 0;\n }\n\n this.dexterity = calculateSkillF(\n this.dexterity_exp,\n this.dexterity_mult * BitNodeMultipliers.DexterityLevelMultiplier,\n );\n}\n\nexport function gainAgilityExp(this: IPlayer, exp: number): void {\n if (isNaN(exp)) {\n console.error(\"ERR: NaN passed into Player.gainAgilityExp()\");\n return;\n }\n this.agility_exp += exp;\n if (this.agility_exp < 0) {\n this.agility_exp = 0;\n }\n\n this.agility = calculateSkillF(this.agility_exp, this.agility_mult * BitNodeMultipliers.AgilityLevelMultiplier);\n}\n\nexport function gainCharismaExp(this: IPlayer, exp: number): void {\n if (isNaN(exp)) {\n console.error(\"ERR: NaN passed into Player.gainCharismaExp()\");\n return;\n }\n this.charisma_exp += exp;\n if (this.charisma_exp < 0) {\n this.charisma_exp = 0;\n }\n\n this.charisma = calculateSkillF(this.charisma_exp, this.charisma_mult * BitNodeMultipliers.CharismaLevelMultiplier);\n}\n\nexport function gainIntelligenceExp(this: IPlayer, exp: number): void {\n if (isNaN(exp)) {\n console.error(\"ERROR: NaN passed into Player.gainIntelligenceExp()\");\n return;\n }\n if (SourceFileFlags[5] > 0 || this.intelligence > 0) {\n this.intelligence_exp += exp;\n this.intelligence = Math.floor(this.calculateSkill(this.intelligence_exp));\n }\n}\n\n//Given a string expression like \"str\" or \"strength\", returns the given stat\nexport function queryStatFromString(this: IPlayer, str: string): number {\n const tempStr = str.toLowerCase();\n if (tempStr.includes(\"hack\")) {\n return this.hacking;\n }\n if (tempStr.includes(\"str\")) {\n return this.strength;\n }\n if (tempStr.includes(\"def\")) {\n return this.defense;\n }\n if (tempStr.includes(\"dex\")) {\n return this.dexterity;\n }\n if (tempStr.includes(\"agi\")) {\n return this.agility;\n }\n if (tempStr.includes(\"cha\")) {\n return this.charisma;\n }\n if (tempStr.includes(\"int\")) {\n return this.intelligence;\n }\n return 0;\n}\n\n/******* Working functions *******/\nexport function resetWorkStatus(this: IPlayer, generalType?: string, group?: string, workType?: string): void {\n if (this.workType !== CONSTANTS.WorkTypeFaction && generalType === this.workType && group === this.companyName)\n return;\n if (generalType === this.workType && group === this.currentWorkFactionName && workType === this.factionWorkType)\n return;\n if (this.isWorking) this.singularityStopWork();\n this.workHackExpGainRate = 0;\n this.workStrExpGainRate = 0;\n this.workDefExpGainRate = 0;\n this.workDexExpGainRate = 0;\n this.workAgiExpGainRate = 0;\n this.workChaExpGainRate = 0;\n this.workRepGainRate = 0;\n this.workMoneyGainRate = 0;\n this.workMoneyLossRate = 0;\n\n this.workHackExpGained = 0;\n this.workStrExpGained = 0;\n this.workDefExpGained = 0;\n this.workDexExpGained = 0;\n this.workAgiExpGained = 0;\n this.workChaExpGained = 0;\n this.workRepGained = 0;\n this.workMoneyGained = 0;\n\n this.timeWorked = 0;\n this.timeWorkedCreateProgram = 0;\n this.timeWorkedGraftAugmentation = 0;\n\n this.currentWorkFactionName = \"\";\n this.currentWorkFactionDescription = \"\";\n this.createProgramName = \"\";\n this.graftAugmentationName = \"\";\n this.className = \"\";\n this.workType = \"\";\n}\n\nexport function processWorkEarnings(this: IPlayer, numCycles = 1): void {\n let focusBonus = 1;\n if (!this.hasAugmentation(AugmentationNames[\"NeuroreceptorManager\"])) {\n focusBonus = this.focus ? 1 : CONSTANTS.BaseFocusBonus;\n }\n const hackExpGain = focusBonus * this.workHackExpGainRate * numCycles;\n const strExpGain = focusBonus * this.workStrExpGainRate * numCycles;\n const defExpGain = focusBonus * this.workDefExpGainRate * numCycles;\n const dexExpGain = focusBonus * this.workDexExpGainRate * numCycles;\n const agiExpGain = focusBonus * this.workAgiExpGainRate * numCycles;\n const chaExpGain = focusBonus * this.workChaExpGainRate * numCycles;\n const moneyGain = (this.workMoneyGainRate - this.workMoneyLossRate) * numCycles;\n this.gainHackingExp(hackExpGain);\n this.gainStrengthExp(strExpGain);\n this.gainDefenseExp(defExpGain);\n this.gainDexterityExp(dexExpGain);\n this.gainAgilityExp(agiExpGain);\n this.gainCharismaExp(chaExpGain);\n this.gainMoney(moneyGain, this.className ? \"class\" : \"work\");\n this.workHackExpGained += hackExpGain;\n this.workStrExpGained += strExpGain;\n this.workDefExpGained += defExpGain;\n this.workDexExpGained += dexExpGain;\n this.workAgiExpGained += agiExpGain;\n this.workChaExpGained += chaExpGain;\n this.workRepGained += focusBonus * this.workRepGainRate * numCycles;\n this.workMoneyGained += focusBonus * this.workMoneyGainRate * numCycles;\n this.workMoneyGained -= focusBonus * this.workMoneyLossRate * numCycles;\n}\n\n/* Working for Company */\nexport function startWork(this: IPlayer, companyName: string): void {\n this.resetWorkStatus(CONSTANTS.WorkTypeCompany, companyName);\n this.isWorking = true;\n this.companyName = companyName;\n this.workType = CONSTANTS.WorkTypeCompany;\n\n this.workHackExpGainRate = this.getWorkHackExpGain();\n this.workStrExpGainRate = this.getWorkStrExpGain();\n this.workDefExpGainRate = this.getWorkDefExpGain();\n this.workDexExpGainRate = this.getWorkDexExpGain();\n this.workAgiExpGainRate = this.getWorkAgiExpGain();\n this.workChaExpGainRate = this.getWorkChaExpGain();\n this.workRepGainRate = this.getWorkRepGain();\n this.workMoneyGainRate = this.getWorkMoneyGain();\n\n this.timeNeededToCompleteWork = CONSTANTS.MillisecondsPer8Hours;\n}\n\nexport function process(this: IPlayer, router: IRouter, numCycles = 1): void {\n // Working\n if (this.isWorking) {\n if (this.workType == CONSTANTS.WorkTypeFaction) {\n if (this.workForFaction(numCycles)) {\n router.toFaction(Factions[this.currentWorkFactionName]);\n }\n } else if (this.workType == CONSTANTS.WorkTypeCreateProgram) {\n if (this.createProgramWork(numCycles)) {\n router.toTerminal();\n }\n } else if (this.workType == CONSTANTS.WorkTypeStudyClass) {\n if (this.takeClass(numCycles)) {\n router.toCity();\n }\n } else if (this.workType == CONSTANTS.WorkTypeCrime) {\n if (this.commitCrime(numCycles)) {\n router.toLocation(Locations[LocationName.Slums]);\n }\n } else if (this.workType == CONSTANTS.WorkTypeCompanyPartTime) {\n if (this.workPartTime(numCycles)) {\n router.toCity();\n }\n } else if (this.workType === CONSTANTS.WorkTypeGraftAugmentation) {\n if (this.graftAugmentationWork(numCycles)) {\n router.toGrafting();\n }\n } else if (this.work(numCycles)) {\n router.toCity();\n }\n }\n}\n\nexport function cancelationPenalty(this: IPlayer): number {\n const data = serverMetadata.find((s) => s.specialName === this.companyName);\n if (!data) return 0.5; // Does not have special server.\n const server = GetServer(data.hostname);\n if (server instanceof Server) {\n if (server && server.backdoorInstalled) return 0.75;\n }\n\n return 0.5;\n}\n\nexport function work(this: IPlayer, numCycles: number): boolean {\n // Cap the number of cycles being processed to whatever would put you at\n // the work time limit (8 hours)\n let overMax = false;\n if (this.timeWorked + CONSTANTS._idleSpeed * numCycles >= CONSTANTS.MillisecondsPer8Hours) {\n overMax = true;\n numCycles = Math.round((CONSTANTS.MillisecondsPer8Hours - this.timeWorked) / CONSTANTS._idleSpeed);\n }\n this.timeWorked += CONSTANTS._idleSpeed * numCycles;\n\n this.workRepGainRate = this.getWorkRepGain();\n this.workMoneyGainRate = this.getWorkMoneyGain();\n this.processWorkEarnings(numCycles);\n\n const comp = Companies[this.companyName];\n influenceStockThroughCompanyWork(comp, this.workRepGainRate, numCycles);\n\n // If timeWorked == 8 hours, then finish. You can only gain 8 hours worth of exp and money\n if (overMax || this.timeWorked >= CONSTANTS.MillisecondsPer8Hours) {\n this.finishWork(false);\n return true;\n }\n return false;\n}\n\nexport function finishWork(this: IPlayer, cancelled: boolean, sing = false): string {\n //Since the work was cancelled early, player only gains half of what they've earned so far\n if (cancelled) {\n this.workRepGained *= this.cancelationPenalty();\n }\n\n const penaltyString = this.cancelationPenalty() === 0.5 ? \"half\" : \"three-quarters\";\n\n const company = Companies[this.companyName];\n company.playerReputation += this.workRepGained;\n\n this.updateSkillLevels();\n\n let content = (\n <>\n You earned a total of: \n \n \n reputation for the company \n {this.workHackExpGained > 0 && (\n <>\n {numeralWrapper.formatExp(this.workHackExpGained)} hacking exp \n >\n )}\n {this.workStrExpGained > 0 && (\n <>\n {numeralWrapper.formatExp(this.workStrExpGained)} strength exp \n >\n )}\n {this.workDefExpGained > 0 && (\n <>\n {numeralWrapper.formatExp(this.workDefExpGained)} defense exp \n >\n )}\n {this.workDexExpGained > 0 && (\n <>\n {numeralWrapper.formatExp(this.workDexExpGained)} dexterity exp \n >\n )}\n {this.workAgiExpGained > 0 && (\n <>\n {numeralWrapper.formatExp(this.workAgiExpGained)} agility exp \n >\n )}\n {this.workChaExpGained > 0 && (\n <>\n {numeralWrapper.formatExp(this.workChaExpGained)} charisma exp \n >\n )}\n \n >\n );\n\n if (cancelled) {\n content = (\n <>\n You worked a short shift of {convertTimeMsToTimeElapsedString(this.timeWorked)} \n \n Since you cancelled your work early, you only gained {penaltyString} of the reputation you earned. \n \n {content}\n >\n );\n } else {\n content = (\n <>\n You worked a full shift of 8 hours! \n \n {content}\n >\n );\n }\n if (!sing) {\n dialogBoxCreate(content);\n }\n\n this.isWorking = false;\n this.focus = false;\n\n this.resetWorkStatus();\n if (sing) {\n const res =\n \"You worked a short shift of \" +\n convertTimeMsToTimeElapsedString(this.timeWorked) +\n \" and \" +\n \"earned $\" +\n numeralWrapper.formatMoney(this.workMoneyGained) +\n \", \" +\n numeralWrapper.formatReputation(this.workRepGained) +\n \" reputation, \" +\n numeralWrapper.formatExp(this.workHackExpGained) +\n \" hacking exp, \" +\n numeralWrapper.formatExp(this.workStrExpGained) +\n \" strength exp, \" +\n numeralWrapper.formatExp(this.workDefExpGained) +\n \" defense exp, \" +\n numeralWrapper.formatExp(this.workDexExpGained) +\n \" dexterity exp, \" +\n numeralWrapper.formatExp(this.workAgiExpGained) +\n \" agility exp, and \" +\n numeralWrapper.formatExp(this.workChaExpGained) +\n \" charisma exp.\";\n\n return res;\n }\n\n return \"\";\n}\n\nexport function startWorkPartTime(this: IPlayer, companyName: string): void {\n this.resetWorkStatus(CONSTANTS.WorkTypeCompanyPartTime, companyName);\n this.isWorking = true;\n this.companyName = companyName;\n this.workType = CONSTANTS.WorkTypeCompanyPartTime;\n\n this.workHackExpGainRate = this.getWorkHackExpGain();\n this.workStrExpGainRate = this.getWorkStrExpGain();\n this.workDefExpGainRate = this.getWorkDefExpGain();\n this.workDexExpGainRate = this.getWorkDexExpGain();\n this.workAgiExpGainRate = this.getWorkAgiExpGain();\n this.workChaExpGainRate = this.getWorkChaExpGain();\n this.workRepGainRate = this.getWorkRepGain();\n this.workMoneyGainRate = this.getWorkMoneyGain();\n\n this.timeNeededToCompleteWork = CONSTANTS.MillisecondsPer8Hours;\n}\n\nexport function workPartTime(this: IPlayer, numCycles: number): boolean {\n //Cap the number of cycles being processed to whatever would put you at the\n //work time limit (8 hours)\n let overMax = false;\n if (this.timeWorked + CONSTANTS._idleSpeed * numCycles >= CONSTANTS.MillisecondsPer8Hours) {\n overMax = true;\n numCycles = Math.round((CONSTANTS.MillisecondsPer8Hours - this.timeWorked) / CONSTANTS._idleSpeed);\n }\n this.timeWorked += CONSTANTS._idleSpeed * numCycles;\n\n this.workRepGainRate = this.getWorkRepGain();\n this.processWorkEarnings(numCycles);\n\n //If timeWorked == 8 hours, then finish. You can only gain 8 hours worth of exp and money\n if (overMax || this.timeWorked >= CONSTANTS.MillisecondsPer8Hours) {\n this.finishWorkPartTime();\n return true;\n }\n return false;\n}\n\nexport function finishWorkPartTime(this: IPlayer, sing = false): string {\n const company = Companies[this.companyName];\n company.playerReputation += this.workRepGained;\n\n this.updateSkillLevels();\n\n const content = (\n <>\n You worked for {convertTimeMsToTimeElapsedString(this.timeWorked)}\n \n \n You earned a total of: \n \n \n reputation for the company \n {numeralWrapper.formatExp(this.workHackExpGained)} hacking exp \n {numeralWrapper.formatExp(this.workStrExpGained)} strength exp \n {numeralWrapper.formatExp(this.workDefExpGained)} defense exp \n {numeralWrapper.formatExp(this.workDexExpGained)} dexterity exp \n {numeralWrapper.formatExp(this.workAgiExpGained)} agility exp \n {numeralWrapper.formatExp(this.workChaExpGained)} charisma exp\n \n >\n );\n if (!sing) {\n dialogBoxCreate(content);\n }\n\n this.isWorking = false;\n this.resetWorkStatus();\n\n if (sing) {\n const res =\n \"You worked for \" +\n convertTimeMsToTimeElapsedString(this.timeWorked) +\n \" and \" +\n \"earned a total of \" +\n \"$\" +\n numeralWrapper.formatMoney(this.workMoneyGained) +\n \", \" +\n numeralWrapper.formatReputation(this.workRepGained) +\n \" reputation, \" +\n numeralWrapper.formatExp(this.workHackExpGained) +\n \" hacking exp, \" +\n numeralWrapper.formatExp(this.workStrExpGained) +\n \" strength exp, \" +\n numeralWrapper.formatExp(this.workDefExpGained) +\n \" defense exp, \" +\n numeralWrapper.formatExp(this.workDexExpGained) +\n \" dexterity exp, \" +\n numeralWrapper.formatExp(this.workAgiExpGained) +\n \" agility exp, and \" +\n numeralWrapper.formatExp(this.workChaExpGained) +\n \" charisma exp\";\n return res;\n }\n return \"\";\n}\n\nexport function startFocusing(this: IPlayer): void {\n this.focus = true;\n}\n\nexport function stopFocusing(this: IPlayer): void {\n this.focus = false;\n}\n\n/* Working for Faction */\nexport function startFactionWork(this: IPlayer, faction: Faction): void {\n //Update reputation gain rate to account for faction favor\n let favorMult = 1 + faction.favor / 100;\n if (isNaN(favorMult)) {\n favorMult = 1;\n }\n this.workRepGainRate *= favorMult;\n this.workRepGainRate *= BitNodeMultipliers.FactionWorkRepGain;\n\n this.isWorking = true;\n this.workType = CONSTANTS.WorkTypeFaction;\n this.currentWorkFactionName = faction.name;\n\n this.timeNeededToCompleteWork = CONSTANTS.MillisecondsPer20Hours;\n}\n\nexport function startFactionHackWork(this: IPlayer, faction: Faction): void {\n this.resetWorkStatus(CONSTANTS.WorkTypeFaction, faction.name, CONSTANTS.FactionWorkHacking);\n\n this.workHackExpGainRate = 0.15 * this.hacking_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workRepGainRate = getHackingWorkRepGain(this, faction);\n\n this.factionWorkType = CONSTANTS.FactionWorkHacking;\n this.currentWorkFactionDescription = \"carrying out hacking contracts\";\n\n this.startFactionWork(faction);\n}\n\nexport function startFactionFieldWork(this: IPlayer, faction: Faction): void {\n this.resetWorkStatus(CONSTANTS.WorkTypeFaction, faction.name, CONSTANTS.FactionWorkField);\n\n this.workHackExpGainRate = 0.1 * this.hacking_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workStrExpGainRate = 0.1 * this.strength_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workDefExpGainRate = 0.1 * this.defense_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workDexExpGainRate = 0.1 * this.dexterity_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workAgiExpGainRate = 0.1 * this.agility_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workChaExpGainRate = 0.1 * this.charisma_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workRepGainRate = getFactionFieldWorkRepGain(this, faction);\n\n this.factionWorkType = CONSTANTS.FactionWorkField;\n this.currentWorkFactionDescription = \"carrying out field missions\";\n\n this.startFactionWork(faction);\n}\n\nexport function startFactionSecurityWork(this: IPlayer, faction: Faction): void {\n this.resetWorkStatus(CONSTANTS.WorkTypeFaction, faction.name, CONSTANTS.FactionWorkSecurity);\n\n this.workHackExpGainRate = 0.05 * this.hacking_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workStrExpGainRate = 0.15 * this.strength_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workDefExpGainRate = 0.15 * this.defense_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workDexExpGainRate = 0.15 * this.dexterity_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workAgiExpGainRate = 0.15 * this.agility_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workChaExpGainRate = 0.0 * this.charisma_exp_mult * BitNodeMultipliers.FactionWorkExpGain;\n this.workRepGainRate = getFactionSecurityWorkRepGain(this, faction);\n\n this.factionWorkType = CONSTANTS.FactionWorkSecurity;\n this.currentWorkFactionDescription = \"performing security detail\";\n\n this.startFactionWork(faction);\n}\n\nexport function workForFaction(this: IPlayer, numCycles: number): boolean {\n const faction = Factions[this.currentWorkFactionName];\n\n if (!faction) {\n return false;\n }\n\n //Constantly update the rep gain rate\n switch (this.factionWorkType) {\n case CONSTANTS.FactionWorkHacking:\n this.workRepGainRate = getHackingWorkRepGain(this, faction);\n break;\n case CONSTANTS.FactionWorkField:\n this.workRepGainRate = getFactionFieldWorkRepGain(this, faction);\n break;\n case CONSTANTS.FactionWorkSecurity:\n this.workRepGainRate = getFactionSecurityWorkRepGain(this, faction);\n break;\n default:\n break;\n }\n this.workRepGainRate *= BitNodeMultipliers.FactionWorkRepGain;\n\n //Cap the number of cycles being processed to whatever would put you at limit (20 hours)\n let overMax = false;\n if (this.timeWorked + CONSTANTS._idleSpeed * numCycles >= CONSTANTS.MillisecondsPer20Hours) {\n overMax = true;\n numCycles = Math.round((CONSTANTS.MillisecondsPer20Hours - this.timeWorked) / CONSTANTS._idleSpeed);\n }\n this.timeWorked += CONSTANTS._idleSpeed * numCycles;\n\n this.processWorkEarnings(numCycles);\n\n //If timeWorked == 20 hours, then finish. You can only work for the faction for 20 hours\n if (overMax || this.timeWorked >= CONSTANTS.MillisecondsPer20Hours) {\n this.finishFactionWork(false);\n return true;\n }\n return false;\n}\n\nexport function finishFactionWork(this: IPlayer, cancelled: boolean, sing = false): string {\n const faction = Factions[this.currentWorkFactionName];\n faction.playerReputation += this.workRepGained;\n\n this.updateSkillLevels();\n\n if (!sing) {\n dialogBoxCreate(\n <>\n You worked for your faction {faction.name} for a total of {convertTimeMsToTimeElapsedString(this.timeWorked)}{\" \"}\n \n \n You earned a total of: \n \n \n reputation for the faction \n {numeralWrapper.formatExp(this.workHackExpGained)} hacking exp \n {numeralWrapper.formatExp(this.workStrExpGained)} strength exp \n {numeralWrapper.formatExp(this.workDefExpGained)} defense exp \n {numeralWrapper.formatExp(this.workDexExpGained)} dexterity exp \n {numeralWrapper.formatExp(this.workAgiExpGained)} agility exp \n {numeralWrapper.formatExp(this.workChaExpGained)} charisma exp\n \n >,\n );\n }\n\n this.isWorking = false;\n this.resetWorkStatus();\n if (sing) {\n const res =\n \"You worked for your faction \" +\n faction.name +\n \" for a total of \" +\n convertTimeMsToTimeElapsedString(this.timeWorked) +\n \". \" +\n \"You earned \" +\n numeralWrapper.formatReputation(this.workRepGained) +\n \" rep, \" +\n numeralWrapper.formatExp(this.workHackExpGained) +\n \" hacking exp, \" +\n numeralWrapper.formatExp(this.workStrExpGained) +\n \" str exp, \" +\n numeralWrapper.formatExp(this.workDefExpGained) +\n \" def exp, \" +\n numeralWrapper.formatExp(this.workDexExpGained) +\n \" dex exp, \" +\n numeralWrapper.formatExp(this.workAgiExpGained) +\n \" agi exp, and \" +\n numeralWrapper.formatExp(this.workChaExpGained) +\n \" cha exp.\";\n\n return res;\n }\n return \"\";\n}\n\n//Money gained per game cycle\nexport function getWorkMoneyGain(this: IPlayer): number {\n // If player has SF-11, calculate salary multiplier from favor\n let bn11Mult = 1;\n const company = Companies[this.companyName];\n if (SourceFileFlags[11] > 0) {\n bn11Mult = 1 + company.favor / 100;\n }\n\n // Get base salary\n const companyPositionName = this.jobs[this.companyName];\n const companyPosition = CompanyPositions[companyPositionName];\n if (companyPosition == null) {\n console.error(`Could not find CompanyPosition object for ${companyPositionName}. Work salary will be 0`);\n return 0;\n }\n\n return (\n companyPosition.baseSalary *\n company.salaryMultiplier *\n this.work_money_mult *\n BitNodeMultipliers.CompanyWorkMoney *\n bn11Mult\n );\n}\n\n//Hack exp gained per game cycle\nexport function getWorkHackExpGain(this: IPlayer): number {\n const company = Companies[this.companyName];\n const companyPositionName = this.jobs[this.companyName];\n const companyPosition = CompanyPositions[companyPositionName];\n if (company == null || companyPosition == null) {\n console.error(\n [\n `Could not find Company object for ${this.companyName}`,\n `or CompanyPosition object for ${companyPositionName}.`,\n `Work hack exp gain will be 0`,\n ].join(\" \"),\n );\n return 0;\n }\n\n return (\n companyPosition.hackingExpGain *\n company.expMultiplier *\n this.hacking_exp_mult *\n BitNodeMultipliers.CompanyWorkExpGain\n );\n}\n\n//Str exp gained per game cycle\nexport function getWorkStrExpGain(this: IPlayer): number {\n const company = Companies[this.companyName];\n const companyPositionName = this.jobs[this.companyName];\n const companyPosition = CompanyPositions[companyPositionName];\n if (company == null || companyPosition == null) {\n console.error(\n [\n `Could not find Company object for ${this.companyName}`,\n `or CompanyPosition object for ${companyPositionName}.`,\n `Work str exp gain will be 0`,\n ].join(\" \"),\n );\n return 0;\n }\n\n return (\n companyPosition.strengthExpGain *\n company.expMultiplier *\n this.strength_exp_mult *\n BitNodeMultipliers.CompanyWorkExpGain\n );\n}\n\n//Def exp gained per game cycle\nexport function getWorkDefExpGain(this: IPlayer): number {\n const company = Companies[this.companyName];\n const companyPositionName = this.jobs[this.companyName];\n const companyPosition = CompanyPositions[companyPositionName];\n if (company == null || companyPosition == null) {\n console.error(\n [\n `Could not find Company object for ${this.companyName}`,\n `or CompanyPosition object for ${companyPositionName}.`,\n `Work def exp gain will be 0`,\n ].join(\" \"),\n );\n return 0;\n }\n\n return (\n companyPosition.defenseExpGain *\n company.expMultiplier *\n this.defense_exp_mult *\n BitNodeMultipliers.CompanyWorkExpGain\n );\n}\n\n//Dex exp gained per game cycle\nexport function getWorkDexExpGain(this: IPlayer): number {\n const company = Companies[this.companyName];\n const companyPositionName = this.jobs[this.companyName];\n const companyPosition = CompanyPositions[companyPositionName];\n if (company == null || companyPosition == null) {\n console.error(\n [\n `Could not find Company object for ${this.companyName}`,\n `or CompanyPosition object for ${companyPositionName}.`,\n `Work dex exp gain will be 0`,\n ].join(\" \"),\n );\n return 0;\n }\n\n return (\n companyPosition.dexterityExpGain *\n company.expMultiplier *\n this.dexterity_exp_mult *\n BitNodeMultipliers.CompanyWorkExpGain\n );\n}\n\n//Agi exp gained per game cycle\nexport function getWorkAgiExpGain(this: IPlayer): number {\n const company = Companies[this.companyName];\n const companyPositionName = this.jobs[this.companyName];\n const companyPosition = CompanyPositions[companyPositionName];\n if (company == null || companyPosition == null) {\n console.error(\n [\n `Could not find Company object for ${this.companyName}`,\n `or CompanyPosition object for ${companyPositionName}.`,\n `Work agi exp gain will be 0`,\n ].join(\" \"),\n );\n return 0;\n }\n\n return (\n companyPosition.agilityExpGain *\n company.expMultiplier *\n this.agility_exp_mult *\n BitNodeMultipliers.CompanyWorkExpGain\n );\n}\n\n//Charisma exp gained per game cycle\nexport function getWorkChaExpGain(this: IPlayer): number {\n const company = Companies[this.companyName];\n const companyPositionName = this.jobs[this.companyName];\n const companyPosition = CompanyPositions[companyPositionName];\n if (company == null || companyPosition == null) {\n console.error(\n [\n `Could not find Company object for ${this.companyName}`,\n `or CompanyPosition object for ${companyPositionName}.`,\n `Work cha exp gain will be 0`,\n ].join(\" \"),\n );\n return 0;\n }\n\n return (\n companyPosition.charismaExpGain *\n company.expMultiplier *\n this.charisma_exp_mult *\n BitNodeMultipliers.CompanyWorkExpGain\n );\n}\n\n//Reputation gained per game cycle\nexport function getWorkRepGain(this: IPlayer): number {\n const company = Companies[this.companyName];\n const companyPositionName = this.jobs[this.companyName];\n const companyPosition = CompanyPositions[companyPositionName];\n if (company == null || companyPosition == null) {\n console.error(\n [\n `Could not find Company object for ${this.companyName}`,\n `or CompanyPosition object for ${companyPositionName}.`,\n `Work rep gain will be 0`,\n ].join(\" \"),\n );\n return 0;\n }\n\n let jobPerformance = companyPosition.calculateJobPerformance(\n this.hacking,\n this.strength,\n this.defense,\n this.dexterity,\n this.agility,\n this.charisma,\n );\n\n //Intelligence provides a flat bonus to job performance\n jobPerformance += this.intelligence / CONSTANTS.MaxSkillLevel;\n\n //Update reputation gain rate to account for company favor\n let favorMult = 1 + company.favor / 100;\n if (isNaN(favorMult)) {\n favorMult = 1;\n }\n return jobPerformance * this.company_rep_mult * favorMult;\n}\n\n// export function getFactionSecurityWorkRepGain(this: IPlayer) {\n// var t = 0.9 * (this.hacking / CONSTANTS.MaxSkillLevel +\n// this.strength / CONSTANTS.MaxSkillLevel +\n// this.defense / CONSTANTS.MaxSkillLevel +\n// this.dexterity / CONSTANTS.MaxSkillLevel +\n// this.agility / CONSTANTS.MaxSkillLevel) / 4.5;\n// return t * this.faction_rep_mult;\n// }\n\n// export function getFactionFieldWorkRepGain(this: IPlayer) {\n// var t = 0.9 * (this.hacking / CONSTANTS.MaxSkillLevel +\n// this.strength / CONSTANTS.MaxSkillLevel +\n// this.defense / CONSTANTS.MaxSkillLevel +\n// this.dexterity / CONSTANTS.MaxSkillLevel +\n// this.agility / CONSTANTS.MaxSkillLevel +\n// this.charisma / CONSTANTS.MaxSkillLevel +\n// this.intelligence / CONSTANTS.MaxSkillLevel) / 5.5;\n// return t * this.faction_rep_mult;\n// }\n\n/* Creating a Program */\nexport function startCreateProgramWork(this: IPlayer, programName: string, time: number, reqLevel: number): void {\n this.resetWorkStatus();\n this.isWorking = true;\n this.workType = CONSTANTS.WorkTypeCreateProgram;\n\n //Time needed to complete work affected by hacking skill (linearly based on\n //ratio of (your skill - required level) to MAX skill)\n //var timeMultiplier = (CONSTANTS.MaxSkillLevel - (this.hacking - reqLevel)) / CONSTANTS.MaxSkillLevel;\n //if (timeMultiplier > 1) {timeMultiplier = 1;}\n //if (timeMultiplier < 0.01) {timeMultiplier = 0.01;}\n this.createProgramReqLvl = reqLevel;\n\n this.timeNeededToCompleteWork = time;\n //Check for incomplete program\n for (let i = 0; i < this.getHomeComputer().programs.length; ++i) {\n const programFile = this.getHomeComputer().programs[i];\n if (programFile.startsWith(programName) && programFile.endsWith(\"%-INC\")) {\n const res = programFile.split(\"-\");\n if (res.length != 3) {\n break;\n }\n const percComplete = Number(res[1].slice(0, -1));\n if (isNaN(percComplete) || percComplete < 0 || percComplete >= 100) {\n break;\n }\n this.timeWorkedCreateProgram = (percComplete / 100) * this.timeNeededToCompleteWork;\n this.getHomeComputer().programs.splice(i, 1);\n }\n }\n\n this.createProgramName = programName;\n}\n\nexport function createProgramWork(this: IPlayer, numCycles: number): boolean {\n let focusBonus = 1;\n if (!this.hasAugmentation(AugmentationNames[\"NeuroreceptorManager\"])) {\n focusBonus = this.focus ? 1 : CONSTANTS.BaseFocusBonus;\n }\n //Higher hacking skill will allow you to create programs faster\n const reqLvl = this.createProgramReqLvl;\n let skillMult = (this.hacking / reqLvl) * this.getIntelligenceBonus(3); //This should always be greater than 1;\n skillMult = 1 + (skillMult - 1) / 5; //The divider constant can be adjusted as necessary\n skillMult *= focusBonus;\n //Skill multiplier directly applied to \"time worked\"\n this.timeWorked += CONSTANTS._idleSpeed * numCycles;\n this.timeWorkedCreateProgram += CONSTANTS._idleSpeed * numCycles * skillMult;\n\n if (this.timeWorkedCreateProgram >= this.timeNeededToCompleteWork) {\n this.finishCreateProgramWork(false);\n return true;\n }\n return false;\n}\n\nexport function finishCreateProgramWork(this: IPlayer, cancelled: boolean): string {\n const programName = this.createProgramName;\n if (cancelled === false) {\n dialogBoxCreate(`You've finished creating ${programName}! The new program can be found on your home computer.`);\n\n this.getHomeComputer().programs.push(programName);\n } else {\n const perc = (Math.floor((this.timeWorkedCreateProgram / this.timeNeededToCompleteWork) * 10000) / 100).toString();\n const incompleteName = programName + \"-\" + perc + \"%-INC\";\n this.getHomeComputer().programs.push(incompleteName);\n }\n\n if (!cancelled) {\n this.gainIntelligenceExp((CONSTANTS.IntelligenceProgramBaseExpGain * this.timeWorked) / 1000);\n }\n\n this.isWorking = false;\n\n this.resetWorkStatus();\n return \"You've finished creating \" + programName + \"! The new program can be found on your home computer.\";\n}\n\nexport function startGraftAugmentationWork(this: IPlayer, augmentationName: string, time: number): void {\n this.resetWorkStatus();\n this.isWorking = true;\n this.workType = CONSTANTS.WorkTypeGraftAugmentation;\n\n this.timeNeededToCompleteWork = time;\n this.graftAugmentationName = augmentationName;\n}\n\nexport function craftAugmentationWork(this: IPlayer, numCycles: number): boolean {\n let focusBonus = 1;\n if (!this.hasAugmentation(AugmentationNames.NeuroreceptorManager)) {\n focusBonus = this.focus ? 1 : CONSTANTS.BaseFocusBonus;\n }\n\n let skillMult = 1 + (this.getIntelligenceBonus(3) - 1) / 3;\n skillMult *= focusBonus;\n\n this.timeWorked += CONSTANTS._idleSpeed * numCycles;\n this.timeWorkedGraftAugmentation += CONSTANTS._idleSpeed * numCycles * skillMult;\n\n if (this.timeWorkedGraftAugmentation >= this.timeNeededToCompleteWork) {\n this.finishGraftAugmentationWork(false);\n return true;\n }\n return false;\n}\n\nexport function finishGraftAugmentationWork(this: IPlayer, cancelled: boolean): string {\n const augName = this.graftAugmentationName;\n if (cancelled === false) {\n dialogBoxCreate(\n `You've finished crafting ${augName}. The augmentation has been grafted to your body, but you feel a bit off.`,\n );\n\n applyAugmentation(Augmentations[augName]);\n\n if (!this.hasAugmentation(AugmentationNames.CongruityImplant)) {\n this.entropy += 1;\n this.applyEntropy(this.entropy);\n }\n } else {\n dialogBoxCreate(`You cancelled the crafting of ${augName}. Your money was not returned to you.`);\n }\n\n // Intelligence gain\n if (!cancelled) {\n this.gainIntelligenceExp((CONSTANTS.IntelligenceGraftBaseExpGain * this.timeWorked) / 10000);\n }\n\n this.isWorking = false;\n this.resetWorkStatus();\n return `Grafting of ${augName} has ended.`;\n}\n\n/* Studying/Taking Classes */\nexport function startClass(this: IPlayer, costMult: number, expMult: number, className: string): void {\n this.resetWorkStatus();\n this.isWorking = true;\n this.workType = CONSTANTS.WorkTypeStudyClass;\n this.workCostMult = costMult;\n this.workExpMult = expMult;\n this.className = className;\n const earnings = calculateClassEarnings(this);\n this.workMoneyLossRate = earnings.workMoneyLossRate;\n this.workHackExpGainRate = earnings.workHackExpGainRate;\n this.workStrExpGainRate = earnings.workStrExpGainRate;\n this.workDefExpGainRate = earnings.workDefExpGainRate;\n this.workDexExpGainRate = earnings.workDexExpGainRate;\n this.workAgiExpGainRate = earnings.workAgiExpGainRate;\n this.workChaExpGainRate = earnings.workChaExpGainRate;\n}\n\nexport function takeClass(this: IPlayer, numCycles: number): boolean {\n this.timeWorked += CONSTANTS._idleSpeed * numCycles;\n const earnings = calculateClassEarnings(this);\n this.workMoneyLossRate = earnings.workMoneyLossRate;\n this.workHackExpGainRate = earnings.workHackExpGainRate;\n this.workStrExpGainRate = earnings.workStrExpGainRate;\n this.workDefExpGainRate = earnings.workDefExpGainRate;\n this.workDexExpGainRate = earnings.workDexExpGainRate;\n this.workAgiExpGainRate = earnings.workAgiExpGainRate;\n this.workChaExpGainRate = earnings.workChaExpGainRate;\n this.processWorkEarnings(numCycles);\n return false;\n}\n\n//The 'sing' argument defines whether or not this function was called\n//through a Singularity Netscript function\nexport function finishClass(this: IPlayer, sing = false): string {\n this.gainIntelligenceExp(CONSTANTS.IntelligenceClassBaseExpGain * Math.round(this.timeWorked / 1000));\n\n if (this.workMoneyGained > 0) {\n throw new Error(\"ERR: Somehow gained money while taking class\");\n }\n\n this.updateSkillLevels();\n if (!sing) {\n dialogBoxCreate(\n <>\n After {this.className} for {convertTimeMsToTimeElapsedString(this.timeWorked)}, \n you spent a total of . \n \n You earned a total of: \n {numeralWrapper.formatExp(this.workHackExpGained)} hacking exp \n {numeralWrapper.formatExp(this.workStrExpGained)} strength exp \n {numeralWrapper.formatExp(this.workDefExpGained)} defense exp \n {numeralWrapper.formatExp(this.workDexExpGained)} dexterity exp \n {numeralWrapper.formatExp(this.workAgiExpGained)} agility exp \n {numeralWrapper.formatExp(this.workChaExpGained)} charisma exp\n \n >,\n );\n }\n\n this.isWorking = false;\n\n if (sing) {\n const res =\n \"After \" +\n this.className +\n \" for \" +\n convertTimeMsToTimeElapsedString(this.timeWorked) +\n \", \" +\n \"you spent a total of \" +\n numeralWrapper.formatMoney(this.workMoneyGained * -1) +\n \". \" +\n \"You earned a total of: \" +\n numeralWrapper.formatExp(this.workHackExpGained) +\n \" hacking exp, \" +\n numeralWrapper.formatExp(this.workStrExpGained) +\n \" strength exp, \" +\n numeralWrapper.formatExp(this.workDefExpGained) +\n \" defense exp, \" +\n numeralWrapper.formatExp(this.workDexExpGained) +\n \" dexterity exp, \" +\n numeralWrapper.formatExp(this.workAgiExpGained) +\n \" agility exp, and \" +\n numeralWrapper.formatExp(this.workChaExpGained) +\n \" charisma exp\";\n this.resetWorkStatus();\n return res;\n }\n this.resetWorkStatus();\n return \"\";\n}\n\n//The EXP and $ gains are hardcoded. Time is in ms\nexport function startCrime(\n this: IPlayer,\n router: IRouter,\n crimeType: string,\n hackExp: number,\n strExp: number,\n defExp: number,\n dexExp: number,\n agiExp: number,\n chaExp: number,\n money: number,\n time: number,\n workerscript: WorkerScript | null = null,\n): void {\n this.crimeType = crimeType;\n\n this.resetWorkStatus();\n this.isWorking = true;\n this.focus = true;\n this.workType = CONSTANTS.WorkTypeCrime;\n\n if (workerscript !== null) {\n this.committingCrimeThruSingFn = true;\n this.singFnCrimeWorkerScript = workerscript;\n }\n\n this.workHackExpGained = hackExp * this.hacking_exp_mult * BitNodeMultipliers.CrimeExpGain;\n this.workStrExpGained = strExp * this.strength_exp_mult * BitNodeMultipliers.CrimeExpGain;\n this.workDefExpGained = defExp * this.defense_exp_mult * BitNodeMultipliers.CrimeExpGain;\n this.workDexExpGained = dexExp * this.dexterity_exp_mult * BitNodeMultipliers.CrimeExpGain;\n this.workAgiExpGained = agiExp * this.agility_exp_mult * BitNodeMultipliers.CrimeExpGain;\n this.workChaExpGained = chaExp * this.charisma_exp_mult * BitNodeMultipliers.CrimeExpGain;\n this.workMoneyGained = money * this.crime_money_mult * BitNodeMultipliers.CrimeMoney;\n\n this.timeNeededToCompleteWork = time;\n router.toWork();\n}\n\nexport function commitCrime(this: IPlayer, numCycles: number): boolean {\n this.timeWorked += CONSTANTS._idleSpeed * numCycles;\n\n if (this.timeWorked >= this.timeNeededToCompleteWork) {\n this.finishCrime(false);\n return true;\n }\n return false;\n}\n\nexport function finishCrime(this: IPlayer, cancelled: boolean): string {\n //Determine crime success/failure\n if (!cancelled) {\n if (determineCrimeSuccess(this, this.crimeType)) {\n //Handle Karma and crime statistics\n let crime = null;\n for (const i of Object.keys(Crimes)) {\n if (Crimes[i].type == this.crimeType) {\n crime = Crimes[i];\n break;\n }\n }\n if (crime == null) {\n dialogBoxCreate(\n `ERR: Unrecognized crime type (${this.crimeType}). This is probably a bug please contact the developer`,\n );\n return \"\";\n }\n this.gainMoney(this.workMoneyGained, \"crime\");\n this.karma -= crime.karma;\n this.numPeopleKilled += crime.kills;\n if (crime.intelligence_exp > 0) {\n this.gainIntelligenceExp(crime.intelligence_exp);\n }\n\n //On a crime success, gain 2x exp\n this.workHackExpGained *= 2;\n this.workStrExpGained *= 2;\n this.workDefExpGained *= 2;\n this.workDexExpGained *= 2;\n this.workAgiExpGained *= 2;\n this.workChaExpGained *= 2;\n const ws = this.singFnCrimeWorkerScript;\n if (this.committingCrimeThruSingFn && ws !== null) {\n if (ws.disableLogs.ALL == null && ws.disableLogs.commitCrime == null) {\n ws.scriptRef.log(\n \"SUCCESS: Crime successful! Gained \" +\n numeralWrapper.formatMoney(this.workMoneyGained) +\n \", \" +\n numeralWrapper.formatExp(this.workHackExpGained) +\n \" hack exp, \" +\n numeralWrapper.formatExp(this.workStrExpGained) +\n \" str exp, \" +\n numeralWrapper.formatExp(this.workDefExpGained) +\n \" def exp, \" +\n numeralWrapper.formatExp(this.workDexExpGained) +\n \" dex exp, \" +\n numeralWrapper.formatExp(this.workAgiExpGained) +\n \" agi exp, \" +\n numeralWrapper.formatExp(this.workChaExpGained) +\n \" cha exp.\",\n );\n }\n } else {\n dialogBoxCreate(\n <>\n Crime successful!\n \n \n You gained:\n \n \n \n {numeralWrapper.formatExp(this.workHackExpGained)} hacking experience \n {numeralWrapper.formatExp(this.workStrExpGained)} strength experience\n \n {numeralWrapper.formatExp(this.workDefExpGained)} defense experience\n \n {numeralWrapper.formatExp(this.workDexExpGained)} dexterity experience\n \n {numeralWrapper.formatExp(this.workAgiExpGained)} agility experience\n \n {numeralWrapper.formatExp(this.workChaExpGained)} charisma experience\n >,\n );\n }\n } else {\n //Exp halved on failure\n this.workHackExpGained /= 2;\n this.workStrExpGained /= 2;\n this.workDefExpGained /= 2;\n this.workDexExpGained /= 2;\n this.workAgiExpGained /= 2;\n this.workChaExpGained /= 2;\n const ws = this.singFnCrimeWorkerScript;\n if (this.committingCrimeThruSingFn && ws !== null) {\n if (ws.disableLogs.ALL == null && ws.disableLogs.commitCrime == null) {\n ws.scriptRef.log(\n \"FAIL: Crime failed! Gained \" +\n numeralWrapper.formatExp(this.workHackExpGained) +\n \" hack exp, \" +\n numeralWrapper.formatExp(this.workStrExpGained) +\n \" str exp, \" +\n numeralWrapper.formatExp(this.workDefExpGained) +\n \" def exp, \" +\n numeralWrapper.formatExp(this.workDexExpGained) +\n \" dex exp, \" +\n numeralWrapper.formatExp(this.workAgiExpGained) +\n \" agi exp, \" +\n numeralWrapper.formatExp(this.workChaExpGained) +\n \" cha exp.\",\n );\n }\n } else {\n dialogBoxCreate(\n <>\n Crime failed!\n \n \n You gained:\n \n {numeralWrapper.formatExp(this.workHackExpGained)} hacking experience \n {numeralWrapper.formatExp(this.workStrExpGained)} strength experience\n \n {numeralWrapper.formatExp(this.workDefExpGained)} defense experience\n \n {numeralWrapper.formatExp(this.workDexExpGained)} dexterity experience\n \n {numeralWrapper.formatExp(this.workAgiExpGained)} agility experience\n \n {numeralWrapper.formatExp(this.workChaExpGained)} charisma experience\n >,\n );\n }\n }\n\n this.gainHackingExp(this.workHackExpGained);\n this.gainStrengthExp(this.workStrExpGained);\n this.gainDefenseExp(this.workDefExpGained);\n this.gainDexterityExp(this.workDexExpGained);\n this.gainAgilityExp(this.workAgiExpGained);\n this.gainCharismaExp(this.workChaExpGained);\n }\n this.committingCrimeThruSingFn = false;\n this.singFnCrimeWorkerScript = null;\n this.isWorking = false;\n this.crimeType = \"\";\n this.resetWorkStatus();\n return \"\";\n}\n\n//Cancels the player's current \"work\" assignment and gives the proper rewards\n//Used only for Singularity functions, so no popups are created\nexport function singularityStopWork(this: IPlayer): string {\n if (!this.isWorking) {\n return \"\";\n }\n let res = \"\"; //Earnings text for work\n switch (this.workType) {\n case CONSTANTS.WorkTypeStudyClass:\n res = this.finishClass(true);\n break;\n case CONSTANTS.WorkTypeCompany:\n res = this.finishWork(true, true);\n break;\n case CONSTANTS.WorkTypeCompanyPartTime:\n res = this.finishWorkPartTime(true);\n break;\n case CONSTANTS.WorkTypeFaction:\n res = this.finishFactionWork(true, true);\n break;\n case CONSTANTS.WorkTypeCreateProgram:\n res = this.finishCreateProgramWork(true);\n break;\n case CONSTANTS.WorkTypeCrime:\n res = this.finishCrime(true);\n break;\n default:\n console.error(`Unrecognized work type (${this.workType})`);\n return \"\";\n }\n return res;\n}\n\n// Returns true if hospitalized, false otherwise\nexport function takeDamage(this: IPlayer, amt: number): boolean {\n if (typeof amt !== \"number\") {\n console.warn(`Player.takeDamage() called without a numeric argument: ${amt}`);\n return false;\n }\n\n this.hp -= amt;\n if (this.hp <= 0) {\n this.hospitalize();\n return true;\n } else {\n return false;\n }\n}\n\nexport function regenerateHp(this: IPlayer, amt: number): void {\n if (typeof amt !== \"number\") {\n console.warn(`Player.regenerateHp() called without a numeric argument: ${amt}`);\n return;\n }\n this.hp += amt;\n if (this.hp > this.max_hp) {\n this.hp = this.max_hp;\n }\n}\n\nexport function hospitalize(this: IPlayer): number {\n const cost = getHospitalizationCost(this);\n SnackbarEvents.emit(`You've been Hospitalized for ${numeralWrapper.formatMoney(cost)}`, \"warning\", 2000);\n\n this.loseMoney(cost, \"hospitalization\");\n this.hp = this.max_hp;\n return cost;\n}\n\n/********* Company job application **********/\n//Determines the job that the Player should get (if any) at the current company\n//The 'sing' argument designates whether or not this is being called from\n//the applyToCompany() Netscript Singularity function\nexport function applyForJob(this: IPlayer, entryPosType: CompanyPosition, sing = false): boolean {\n // Get current company and job\n let currCompany = null;\n if (this.companyName !== \"\") {\n currCompany = Companies[this.companyName];\n }\n const currPositionName = this.jobs[this.companyName];\n\n // Get company that's being applied to\n const company = Companies[this.location]; //Company being applied to\n if (!(company instanceof Company)) {\n console.error(`Could not find company that matches the location: ${this.location}. Player.applyToCompany() failed`);\n return false;\n }\n\n let pos = entryPosType;\n\n if (!this.isQualified(company, pos)) {\n const reqText = getJobRequirementText(company, pos);\n if (!sing) {\n dialogBoxCreate(\"Unfortunately, you do not qualify for this position \" + reqText);\n }\n return false;\n }\n\n // Check if this company has the position\n if (!company.hasPosition(pos)) {\n return false;\n }\n\n while (true) {\n const newPos = getNextCompanyPositionHelper(pos);\n if (newPos == null) {\n break;\n }\n\n //Check if this company has this position\n if (company.hasPosition(newPos)) {\n if (!this.isQualified(company, newPos)) {\n //If player not qualified for next job, break loop so player will be given current job\n break;\n }\n pos = newPos;\n } else {\n break;\n }\n }\n\n //Check if the determined job is the same as the player's current job\n if (currCompany != null) {\n if (currCompany.name == company.name && pos.name == currPositionName) {\n const nextPos = getNextCompanyPositionHelper(pos);\n if (nextPos == null) {\n if (!sing) {\n dialogBoxCreate(\"You are already at the highest position for your field! No promotion available\");\n }\n return false;\n } else if (company.hasPosition(nextPos)) {\n if (!sing) {\n const reqText = getJobRequirementText(company, nextPos);\n dialogBoxCreate(\"Unfortunately, you do not qualify for a promotion \" + reqText);\n }\n return false;\n } else {\n if (!sing) {\n dialogBoxCreate(\"You are already at the highest position for your field! No promotion available\");\n }\n return false;\n }\n }\n }\n\n this.jobs[company.name] = pos.name;\n if (!this.focus && this.isWorking && this.companyName !== this.location) this.resetWorkStatus();\n this.companyName = this.location;\n\n if (!sing) {\n dialogBoxCreate(\"Congratulations! You were offered a new job at \" + this.companyName + \" as a \" + pos.name + \"!\");\n }\n return true;\n}\n\n//Returns your next position at a company given the field (software, business, etc.)\nexport function getNextCompanyPosition(\n this: IPlayer,\n company: Company,\n entryPosType: CompanyPosition,\n): CompanyPosition | null {\n let currCompany = null;\n if (this.companyName !== \"\") {\n currCompany = Companies[this.companyName];\n }\n\n //Not employed at this company, so return the entry position\n if (currCompany == null || currCompany.name != company.name) {\n return entryPosType;\n }\n\n //If the entry pos type and the player's current position have the same type,\n //return the player's \"nextCompanyPosition\". Otherwise return the entryposType\n //Employed at this company, so just return the next position if it exists.\n const currentPositionName = this.jobs[this.companyName];\n if (!currentPositionName) return entryPosType;\n const currentPosition = CompanyPositions[currentPositionName];\n if (\n (currentPosition.isSoftwareJob() && entryPosType.isSoftwareJob()) ||\n (currentPosition.isITJob() && entryPosType.isITJob()) ||\n (currentPosition.isBusinessJob() && entryPosType.isBusinessJob()) ||\n (currentPosition.isSecurityEngineerJob() && entryPosType.isSecurityEngineerJob()) ||\n (currentPosition.isNetworkEngineerJob() && entryPosType.isNetworkEngineerJob()) ||\n (currentPosition.isSecurityJob() && entryPosType.isSecurityJob()) ||\n (currentPosition.isAgentJob() && entryPosType.isAgentJob()) ||\n (currentPosition.isSoftwareConsultantJob() && entryPosType.isSoftwareConsultantJob()) ||\n (currentPosition.isBusinessConsultantJob() && entryPosType.isBusinessConsultantJob()) ||\n (currentPosition.isPartTimeJob() && entryPosType.isPartTimeJob())\n ) {\n return getNextCompanyPositionHelper(currentPosition);\n }\n\n return entryPosType;\n}\n\nexport function quitJob(this: IPlayer, company: string): void {\n if (this.isWorking == true && this.workType.includes(\"Working for Company\") && this.companyName == company) {\n this.isWorking = false;\n this.companyName = \"\";\n }\n if (this.companyName === company) {\n this.companyName = \"\";\n }\n delete this.jobs[company];\n}\n\n/**\n * Method to see if the player has at least one job assigned to them\n * @param this The player instance\n * @returns Whether the user has at least one job\n */\nexport function hasJob(this: IPlayer): boolean {\n return Boolean(Object.keys(this.jobs).length);\n}\n\nexport function applyForSoftwareJob(this: IPlayer, sing = false): boolean {\n return this.applyForJob(CompanyPositions[posNames.SoftwareCompanyPositions[0]], sing);\n}\n\nexport function applyForSoftwareConsultantJob(this: IPlayer, sing = false): boolean {\n return this.applyForJob(CompanyPositions[posNames.SoftwareConsultantCompanyPositions[0]], sing);\n}\n\nexport function applyForItJob(this: IPlayer, sing = false): boolean {\n return this.applyForJob(CompanyPositions[posNames.ITCompanyPositions[0]], sing);\n}\n\nexport function applyForSecurityEngineerJob(this: IPlayer, sing = false): boolean {\n const company = Companies[this.location]; //Company being applied to\n if (this.isQualified(company, CompanyPositions[posNames.SecurityEngineerCompanyPositions[0]])) {\n return this.applyForJob(CompanyPositions[posNames.SecurityEngineerCompanyPositions[0]], sing);\n } else {\n if (!sing) {\n dialogBoxCreate(\"Unfortunately, you do not qualify for this position\");\n }\n return false;\n }\n}\n\nexport function applyForNetworkEngineerJob(this: IPlayer, sing = false): boolean {\n const company = Companies[this.location]; //Company being applied to\n if (this.isQualified(company, CompanyPositions[posNames.NetworkEngineerCompanyPositions[0]])) {\n const pos = CompanyPositions[posNames.NetworkEngineerCompanyPositions[0]];\n return this.applyForJob(pos, sing);\n } else {\n if (!sing) {\n dialogBoxCreate(\"Unfortunately, you do not qualify for this position\");\n }\n return false;\n }\n}\n\nexport function applyForBusinessJob(this: IPlayer, sing = false): boolean {\n return this.applyForJob(CompanyPositions[posNames.BusinessCompanyPositions[0]], sing);\n}\n\nexport function applyForBusinessConsultantJob(this: IPlayer, sing = false): boolean {\n return this.applyForJob(CompanyPositions[posNames.BusinessConsultantCompanyPositions[0]], sing);\n}\n\nexport function applyForSecurityJob(this: IPlayer, sing = false): boolean {\n // TODO Police Jobs\n // Indexing starts at 2 because 0 is for police officer\n return this.applyForJob(CompanyPositions[posNames.SecurityCompanyPositions[2]], sing);\n}\n\nexport function applyForAgentJob(this: IPlayer, sing = false): boolean {\n const company = Companies[this.location]; //Company being applied to\n if (this.isQualified(company, CompanyPositions[posNames.AgentCompanyPositions[0]])) {\n const pos = CompanyPositions[posNames.AgentCompanyPositions[0]];\n return this.applyForJob(pos, sing);\n } else {\n if (!sing) {\n dialogBoxCreate(\"Unfortunately, you do not qualify for this position\");\n }\n return false;\n }\n}\n\nexport function applyForEmployeeJob(this: IPlayer, sing = false): boolean {\n const company = Companies[this.location]; //Company being applied to\n const position = posNames.MiscCompanyPositions[1];\n // Check if this company has the position\n if (!company.hasPosition(position)) {\n return false;\n }\n if (this.isQualified(company, CompanyPositions[position])) {\n this.jobs[company.name] = position;\n if (!this.focus && this.isWorking && this.companyName !== company.name) this.resetWorkStatus();\n this.companyName = company.name;\n\n if (!sing) {\n dialogBoxCreate(\"Congratulations, you are now employed at \" + this.location);\n }\n\n return true;\n } else {\n if (!sing) {\n dialogBoxCreate(\"Unfortunately, you do not qualify for this position\");\n }\n\n return false;\n }\n}\n\nexport function applyForPartTimeEmployeeJob(this: IPlayer, sing = false): boolean {\n const company = Companies[this.location]; //Company being applied to\n const position = posNames.PartTimeCompanyPositions[1];\n // Check if this company has the position\n if (!company.hasPosition(position)) {\n return false;\n }\n if (this.isQualified(company, CompanyPositions[position])) {\n this.jobs[company.name] = position;\n if (!this.focus && this.isWorking && this.companyName !== company.name) this.resetWorkStatus();\n this.companyName = company.name;\n if (!sing) {\n dialogBoxCreate(\"Congratulations, you are now employed part-time at \" + this.location);\n }\n\n return true;\n } else {\n if (!sing) {\n dialogBoxCreate(\"Unfortunately, you do not qualify for this position\");\n }\n\n return false;\n }\n}\n\nexport function applyForWaiterJob(this: IPlayer, sing = false): boolean {\n const company = Companies[this.location]; //Company being applied to\n const position = posNames.MiscCompanyPositions[0];\n // Check if this company has the position\n if (!company.hasPosition(position)) {\n return false;\n }\n if (this.isQualified(company, CompanyPositions[position])) {\n this.jobs[company.name] = position;\n if (!this.focus && this.isWorking && this.companyName !== company.name) this.resetWorkStatus();\n this.companyName = company.name;\n if (!sing) {\n dialogBoxCreate(\"Congratulations, you are now employed as a waiter at \" + this.location);\n }\n return true;\n } else {\n if (!sing) {\n dialogBoxCreate(\"Unfortunately, you do not qualify for this position\");\n }\n return false;\n }\n}\n\nexport function applyForPartTimeWaiterJob(this: IPlayer, sing = false): boolean {\n const company = Companies[this.location]; //Company being applied to\n const position = posNames.PartTimeCompanyPositions[0];\n // Check if this company has the position\n if (!company.hasPosition(position)) {\n return false;\n }\n if (this.isQualified(company, CompanyPositions[position])) {\n this.jobs[company.name] = position;\n if (!this.focus && this.isWorking && this.companyName !== company.name) this.resetWorkStatus();\n this.companyName = company.name;\n if (!sing) {\n dialogBoxCreate(\"Congratulations, you are now employed as a part-time waiter at \" + this.location);\n }\n return true;\n } else {\n if (!sing) {\n dialogBoxCreate(\"Unfortunately, you do not qualify for this position\");\n }\n return false;\n }\n}\n\n//Checks if the Player is qualified for a certain position\nexport function isQualified(this: IPlayer, company: Company, position: CompanyPosition): boolean {\n const offset = company.jobStatReqOffset;\n const reqHacking = position.requiredHacking > 0 ? position.requiredHacking + offset : 0;\n const reqStrength = position.requiredStrength > 0 ? position.requiredStrength + offset : 0;\n const reqDefense = position.requiredDefense > 0 ? position.requiredDefense + offset : 0;\n const reqDexterity = position.requiredDexterity > 0 ? position.requiredDexterity + offset : 0;\n const reqAgility = position.requiredDexterity > 0 ? position.requiredDexterity + offset : 0;\n const reqCharisma = position.requiredCharisma > 0 ? position.requiredCharisma + offset : 0;\n\n return (\n this.hacking >= reqHacking &&\n this.strength >= reqStrength &&\n this.defense >= reqDefense &&\n this.dexterity >= reqDexterity &&\n this.agility >= reqAgility &&\n this.charisma >= reqCharisma &&\n company.playerReputation >= position.requiredReputation\n );\n}\n\n/********** Reapplying Augmentations and Source File ***********/\nexport function reapplyAllAugmentations(this: IPlayer, resetMultipliers = true): void {\n if (resetMultipliers) {\n this.resetMultipliers();\n }\n\n for (let i = 0; i < this.augmentations.length; ++i) {\n //Compatibility with new version\n if (this.augmentations[i].name === \"HacknetNode NIC Architecture Neural-Upload\") {\n this.augmentations[i].name = \"Hacknet Node NIC Architecture Neural-Upload\";\n }\n\n const playerAug = this.augmentations[i];\n const augName = playerAug.name;\n const aug = Augmentations[augName];\n if (aug == null) {\n console.warn(`Invalid augmentation name in Player.reapplyAllAugmentations(). Aug ${augName} will be skipped`);\n continue;\n }\n aug.owned = true;\n if (augName == AugmentationNames.NeuroFluxGovernor) {\n for (let j = 0; j < playerAug.level; ++j) {\n applyAugmentation(this.augmentations[i], true);\n }\n continue;\n }\n applyAugmentation(this.augmentations[i], true);\n }\n\n this.updateSkillLevels();\n}\n\nexport function reapplyAllSourceFiles(this: IPlayer): void {\n //Will always be called after reapplyAllAugmentations() so multipliers do not have to be reset\n //this.resetMultipliers();\n\n for (let i = 0; i < this.sourceFiles.length; ++i) {\n const srcFileKey = \"SourceFile\" + this.sourceFiles[i].n;\n const sourceFileObject = SourceFiles[srcFileKey];\n if (sourceFileObject == null) {\n console.error(`Invalid source file number: ${this.sourceFiles[i].n}`);\n continue;\n }\n applySourceFile(this.sourceFiles[i]);\n }\n applyExploit();\n this.updateSkillLevels();\n}\n\n/*************** Check for Faction Invitations *************/\n//This function sets the requirements to join a Faction. It checks whether the Player meets\n//those requirements and will return an array of all factions that the Player should\n//receive an invitation to\nexport function checkForFactionInvitations(this: IPlayer): Faction[] {\n const invitedFactions: Faction[] = []; //Array which will hold all Factions the player should be invited to\n\n const numAugmentations = this.augmentations.length;\n\n const allCompanies = Object.keys(this.jobs);\n const allPositions = Object.values(this.jobs);\n\n // Given a company name, safely returns the reputation (returns 0 if invalid company is specified)\n function getCompanyRep(companyName: string): number {\n const company = Companies[companyName];\n if (company == null) {\n return 0;\n } else {\n return company.playerReputation;\n }\n }\n\n // Helper function that returns a boolean indicating whether the Player meets\n // the requirements for the specified company. There are two requirements:\n // 1. High enough reputation\n // 2. Player is employed at the company\n function checkMegacorpRequirements(companyName: string, repNeeded = CONSTANTS.CorpFactionRepRequirement): boolean {\n return allCompanies.includes(companyName) && getCompanyRep(companyName) > repNeeded;\n }\n\n //Illuminati\n const illuminatiFac = Factions[FactionNames.Illuminati];\n if (\n !illuminatiFac.isBanned &&\n !illuminatiFac.isMember &&\n !illuminatiFac.alreadyInvited &&\n numAugmentations >= 30 &&\n this.money >= 150000000000 &&\n this.hacking >= 1500 &&\n this.strength >= 1200 &&\n this.defense >= 1200 &&\n this.dexterity >= 1200 &&\n this.agility >= 1200\n ) {\n invitedFactions.push(illuminatiFac);\n }\n\n //Daedalus\n const daedalusFac = Factions[FactionNames.Daedalus];\n if (\n !daedalusFac.isBanned &&\n !daedalusFac.isMember &&\n !daedalusFac.alreadyInvited &&\n numAugmentations >= Math.round(30 * BitNodeMultipliers.DaedalusAugsRequirement) &&\n this.money >= 100000000000 &&\n (this.hacking >= 2500 ||\n (this.strength >= 1500 && this.defense >= 1500 && this.dexterity >= 1500 && this.agility >= 1500))\n ) {\n invitedFactions.push(daedalusFac);\n }\n\n //The Covenant\n const covenantFac = Factions[FactionNames.TheCovenant];\n if (\n !covenantFac.isBanned &&\n !covenantFac.isMember &&\n !covenantFac.alreadyInvited &&\n numAugmentations >= 20 &&\n this.money >= 75000000000 &&\n this.hacking >= 850 &&\n this.strength >= 850 &&\n this.defense >= 850 &&\n this.dexterity >= 850 &&\n this.agility >= 850\n ) {\n invitedFactions.push(covenantFac);\n }\n\n //ECorp\n const ecorpFac = Factions[FactionNames.ECorp];\n if (\n !ecorpFac.isBanned &&\n !ecorpFac.isMember &&\n !ecorpFac.alreadyInvited &&\n checkMegacorpRequirements(LocationName.AevumECorp)\n ) {\n invitedFactions.push(ecorpFac);\n }\n\n //MegaCorp\n const megacorpFac = Factions[FactionNames.MegaCorp];\n if (\n !megacorpFac.isBanned &&\n !megacorpFac.isMember &&\n !megacorpFac.alreadyInvited &&\n checkMegacorpRequirements(LocationName.Sector12MegaCorp)\n ) {\n invitedFactions.push(megacorpFac);\n }\n\n //Bachman & Associates\n const bachmanandassociatesFac = Factions[FactionNames.BachmanAssociates];\n if (\n !bachmanandassociatesFac.isBanned &&\n !bachmanandassociatesFac.isMember &&\n !bachmanandassociatesFac.alreadyInvited &&\n checkMegacorpRequirements(LocationName.AevumBachmanAndAssociates)\n ) {\n invitedFactions.push(bachmanandassociatesFac);\n }\n\n //Blade Industries\n const bladeindustriesFac = Factions[FactionNames.BladeIndustries];\n if (\n !bladeindustriesFac.isBanned &&\n !bladeindustriesFac.isMember &&\n !bladeindustriesFac.alreadyInvited &&\n checkMegacorpRequirements(LocationName.Sector12BladeIndustries)\n ) {\n invitedFactions.push(bladeindustriesFac);\n }\n\n //NWO\n const nwoFac = Factions[FactionNames.NWO];\n if (\n !nwoFac.isBanned &&\n !nwoFac.isMember &&\n !nwoFac.alreadyInvited &&\n checkMegacorpRequirements(LocationName.VolhavenNWO)\n ) {\n invitedFactions.push(nwoFac);\n }\n\n //Clarke Incorporated\n const clarkeincorporatedFac = Factions[FactionNames.ClarkeIncorporated];\n if (\n !clarkeincorporatedFac.isBanned &&\n !clarkeincorporatedFac.isMember &&\n !clarkeincorporatedFac.alreadyInvited &&\n checkMegacorpRequirements(LocationName.AevumClarkeIncorporated)\n ) {\n invitedFactions.push(clarkeincorporatedFac);\n }\n\n //OmniTek Incorporated\n const omnitekincorporatedFac = Factions[FactionNames.OmniTekIncorporated];\n if (\n !omnitekincorporatedFac.isBanned &&\n !omnitekincorporatedFac.isMember &&\n !omnitekincorporatedFac.alreadyInvited &&\n checkMegacorpRequirements(LocationName.VolhavenOmniTekIncorporated)\n ) {\n invitedFactions.push(omnitekincorporatedFac);\n }\n\n //Four Sigma\n const foursigmaFac = Factions[FactionNames.FourSigma];\n if (\n !foursigmaFac.isBanned &&\n !foursigmaFac.isMember &&\n !foursigmaFac.alreadyInvited &&\n checkMegacorpRequirements(LocationName.Sector12FourSigma)\n ) {\n invitedFactions.push(foursigmaFac);\n }\n\n //KuaiGong International\n const kuaigonginternationalFac = Factions[FactionNames.KuaiGongInternational];\n if (\n !kuaigonginternationalFac.isBanned &&\n !kuaigonginternationalFac.isMember &&\n !kuaigonginternationalFac.alreadyInvited &&\n checkMegacorpRequirements(LocationName.ChongqingKuaiGongInternational)\n ) {\n invitedFactions.push(kuaigonginternationalFac);\n }\n\n //Fulcrum Secret Technologies - If u've unlocked fulcrum secret technolgoies server and have a high rep with the company\n const fulcrumsecrettechonologiesFac = Factions[FactionNames.FulcrumSecretTechnologies];\n const fulcrumSecretServer = GetServer(SpecialServers.FulcrumSecretTechnologies);\n if (!(fulcrumSecretServer instanceof Server))\n throw new Error(`${FactionNames.FulcrumSecretTechnologies} should be normal server`);\n if (fulcrumSecretServer == null) {\n console.error(`Could not find ${FactionNames.FulcrumSecretTechnologies} Server`);\n } else if (\n !fulcrumsecrettechonologiesFac.isBanned &&\n !fulcrumsecrettechonologiesFac.isMember &&\n !fulcrumsecrettechonologiesFac.alreadyInvited &&\n fulcrumSecretServer.backdoorInstalled &&\n checkMegacorpRequirements(LocationName.AevumFulcrumTechnologies, 250e3)\n ) {\n invitedFactions.push(fulcrumsecrettechonologiesFac);\n }\n\n //BitRunners\n const bitrunnersFac = Factions[FactionNames.BitRunners];\n const bitrunnersServer = GetServer(SpecialServers.BitRunnersServer);\n if (!(bitrunnersServer instanceof Server)) throw new Error(`${FactionNames.BitRunners} should be normal server`);\n if (bitrunnersServer == null) {\n console.error(`Could not find ${FactionNames.BitRunners} Server`);\n } else if (\n !bitrunnersFac.isBanned &&\n !bitrunnersFac.isMember &&\n bitrunnersServer.backdoorInstalled &&\n !bitrunnersFac.alreadyInvited\n ) {\n invitedFactions.push(bitrunnersFac);\n }\n\n //The Black Hand\n\n const theblackhandFac = Factions[FactionNames.TheBlackHand];\n const blackhandServer = GetServer(SpecialServers.TheBlackHandServer);\n if (!(blackhandServer instanceof Server)) throw new Error(`${FactionNames.TheBlackHand} should be normal server`);\n if (blackhandServer == null) {\n console.error(`Could not find ${FactionNames.TheBlackHand} Server`);\n } else if (\n !theblackhandFac.isBanned &&\n !theblackhandFac.isMember &&\n blackhandServer.backdoorInstalled &&\n !theblackhandFac.alreadyInvited\n ) {\n invitedFactions.push(theblackhandFac);\n }\n\n //NiteSec\n const nitesecFac = Factions[FactionNames.NiteSec];\n const nitesecServer = GetServer(SpecialServers.NiteSecServer);\n if (!(nitesecServer instanceof Server)) throw new Error(`${FactionNames.NiteSec} should be normal server`);\n if (nitesecServer == null) {\n console.error(`Could not find ${FactionNames.NiteSec} Server`);\n } else if (\n !nitesecFac.isBanned &&\n !nitesecFac.isMember &&\n nitesecServer.backdoorInstalled &&\n !nitesecFac.alreadyInvited\n ) {\n invitedFactions.push(nitesecFac);\n }\n\n //Chongqing\n const chongqingFac = Factions[FactionNames.Chongqing];\n if (\n !chongqingFac.isBanned &&\n !chongqingFac.isMember &&\n !chongqingFac.alreadyInvited &&\n this.money >= 20000000 &&\n this.city == CityName.Chongqing\n ) {\n invitedFactions.push(chongqingFac);\n }\n\n //Sector-12\n const sector12Fac = Factions[FactionNames.Sector12];\n if (\n !sector12Fac.isBanned &&\n !sector12Fac.isMember &&\n !sector12Fac.alreadyInvited &&\n this.money >= 15000000 &&\n this.city == CityName.Sector12\n ) {\n invitedFactions.push(sector12Fac);\n }\n\n //New Tokyo\n const newtokyoFac = Factions[FactionNames.NewTokyo];\n if (\n !newtokyoFac.isBanned &&\n !newtokyoFac.isMember &&\n !newtokyoFac.alreadyInvited &&\n this.money >= 20000000 &&\n this.city == CityName.NewTokyo\n ) {\n invitedFactions.push(newtokyoFac);\n }\n\n //Aevum\n const aevumFac = Factions[FactionNames.Aevum];\n if (\n !aevumFac.isBanned &&\n !aevumFac.isMember &&\n !aevumFac.alreadyInvited &&\n this.money >= 40000000 &&\n this.city == CityName.Aevum\n ) {\n invitedFactions.push(aevumFac);\n }\n\n //Ishima\n const ishimaFac = Factions[FactionNames.Ishima];\n if (\n !ishimaFac.isBanned &&\n !ishimaFac.isMember &&\n !ishimaFac.alreadyInvited &&\n this.money >= 30000000 &&\n this.city == CityName.Ishima\n ) {\n invitedFactions.push(ishimaFac);\n }\n\n //Volhaven\n const volhavenFac = Factions[FactionNames.Volhaven];\n if (\n !volhavenFac.isBanned &&\n !volhavenFac.isMember &&\n !volhavenFac.alreadyInvited &&\n this.money >= 50000000 &&\n this.city == CityName.Volhaven\n ) {\n invitedFactions.push(volhavenFac);\n }\n\n //Speakers for the Dead\n const speakersforthedeadFac = Factions[FactionNames.SpeakersForTheDead];\n if (\n !speakersforthedeadFac.isBanned &&\n !speakersforthedeadFac.isMember &&\n !speakersforthedeadFac.alreadyInvited &&\n this.hacking >= 100 &&\n this.strength >= 300 &&\n this.defense >= 300 &&\n this.dexterity >= 300 &&\n this.agility >= 300 &&\n this.numPeopleKilled >= 30 &&\n this.karma <= -45 &&\n !allCompanies.includes(LocationName.Sector12CIA) &&\n !allCompanies.includes(LocationName.Sector12NSA)\n ) {\n invitedFactions.push(speakersforthedeadFac);\n }\n\n //The Dark Army\n const thedarkarmyFac = Factions[FactionNames.TheDarkArmy];\n if (\n !thedarkarmyFac.isBanned &&\n !thedarkarmyFac.isMember &&\n !thedarkarmyFac.alreadyInvited &&\n this.hacking >= 300 &&\n this.strength >= 300 &&\n this.defense >= 300 &&\n this.dexterity >= 300 &&\n this.agility >= 300 &&\n this.city == CityName.Chongqing &&\n this.numPeopleKilled >= 5 &&\n this.karma <= -45 &&\n !allCompanies.includes(LocationName.Sector12CIA) &&\n !allCompanies.includes(LocationName.Sector12NSA)\n ) {\n invitedFactions.push(thedarkarmyFac);\n }\n\n //The Syndicate\n const thesyndicateFac = Factions[FactionNames.TheSyndicate];\n if (\n !thesyndicateFac.isBanned &&\n !thesyndicateFac.isMember &&\n !thesyndicateFac.alreadyInvited &&\n this.hacking >= 200 &&\n this.strength >= 200 &&\n this.defense >= 200 &&\n this.dexterity >= 200 &&\n this.agility >= 200 &&\n (this.city == CityName.Aevum || this.city == CityName.Sector12) &&\n this.money >= 10000000 &&\n this.karma <= -90 &&\n !allCompanies.includes(LocationName.Sector12CIA) &&\n !allCompanies.includes(LocationName.Sector12NSA)\n ) {\n invitedFactions.push(thesyndicateFac);\n }\n\n //Silhouette\n const silhouetteFac = Factions[FactionNames.Silhouette];\n if (\n !silhouetteFac.isBanned &&\n !silhouetteFac.isMember &&\n !silhouetteFac.alreadyInvited &&\n (allPositions.includes(\"Chief Technology Officer\") ||\n allPositions.includes(\"Chief Financial Officer\") ||\n allPositions.includes(\"Chief Executive Officer\")) &&\n this.money >= 15000000 &&\n this.karma <= -22\n ) {\n invitedFactions.push(silhouetteFac);\n }\n\n //Tetrads\n const tetradsFac = Factions[FactionNames.Tetrads];\n if (\n !tetradsFac.isBanned &&\n !tetradsFac.isMember &&\n !tetradsFac.alreadyInvited &&\n (this.city == CityName.Chongqing || this.city == CityName.NewTokyo || this.city == CityName.Ishima) &&\n this.strength >= 75 &&\n this.defense >= 75 &&\n this.dexterity >= 75 &&\n this.agility >= 75 &&\n this.karma <= -18\n ) {\n invitedFactions.push(tetradsFac);\n }\n\n //SlumSnakes\n const slumsnakesFac = Factions[FactionNames.SlumSnakes];\n if (\n !slumsnakesFac.isBanned &&\n !slumsnakesFac.isMember &&\n !slumsnakesFac.alreadyInvited &&\n this.strength >= 30 &&\n this.defense >= 30 &&\n this.dexterity >= 30 &&\n this.agility >= 30 &&\n this.karma <= -9 &&\n this.money >= 1000000\n ) {\n invitedFactions.push(slumsnakesFac);\n }\n\n //Netburners\n const netburnersFac = Factions[FactionNames.Netburners];\n let totalHacknetRam = 0;\n let totalHacknetCores = 0;\n let totalHacknetLevels = 0;\n for (let i = 0; i < this.hacknetNodes.length; ++i) {\n const v = this.hacknetNodes[i];\n if (typeof v === \"string\") {\n const hserver = GetServer(v);\n if (hserver === null || !(hserver instanceof HacknetServer))\n throw new Error(\"player hacknet server was not HacknetServer\");\n totalHacknetLevels += hserver.level;\n totalHacknetRam += hserver.maxRam;\n totalHacknetCores += hserver.cores;\n } else {\n totalHacknetLevels += v.level;\n totalHacknetRam += v.ram;\n totalHacknetCores += v.cores;\n }\n }\n if (\n !netburnersFac.isBanned &&\n !netburnersFac.isMember &&\n !netburnersFac.alreadyInvited &&\n this.hacking >= 80 &&\n totalHacknetRam >= 8 &&\n totalHacknetCores >= 4 &&\n totalHacknetLevels >= 100\n ) {\n invitedFactions.push(netburnersFac);\n }\n\n //Tian Di Hui\n const tiandihuiFac = Factions[FactionNames.TianDiHui];\n if (\n !tiandihuiFac.isBanned &&\n !tiandihuiFac.isMember &&\n !tiandihuiFac.alreadyInvited &&\n this.money >= 1000000 &&\n this.hacking >= 50 &&\n (this.city == CityName.Chongqing || this.city == CityName.NewTokyo || this.city == CityName.Ishima)\n ) {\n invitedFactions.push(tiandihuiFac);\n }\n\n //CyberSec\n const cybersecFac = Factions[FactionNames.CyberSec];\n const cybersecServer = GetServer(SpecialServers.CyberSecServer);\n if (!(cybersecServer instanceof Server)) throw new Error(`${FactionNames.CyberSec} should be normal server`);\n if (cybersecServer == null) {\n console.error(`Could not find ${FactionNames.CyberSec} Server`);\n } else if (\n !cybersecFac.isBanned &&\n !cybersecFac.isMember &&\n cybersecServer.backdoorInstalled &&\n !cybersecFac.alreadyInvited\n ) {\n invitedFactions.push(cybersecFac);\n }\n\n return invitedFactions;\n}\n\n/************* BitNodes **************/\nexport function setBitNodeNumber(this: IPlayer, n: number): void {\n this.bitNodeN = n;\n}\n\nexport function queueAugmentation(this: IPlayer, name: string): void {\n for (const aug of this.queuedAugmentations) {\n if (aug.name == name) {\n console.warn(`tried to queue ${name} twice, this may be a bug`);\n return;\n }\n }\n\n for (const aug of this.augmentations) {\n if (aug.name == name) {\n console.warn(`tried to queue ${name} twice, this may be a bug`);\n return;\n }\n }\n\n this.queuedAugmentations.push(new PlayerOwnedAugmentation(name));\n}\n\n/************* Coding Contracts **************/\nexport function gainCodingContractReward(this: IPlayer, reward: ICodingContractReward, difficulty = 1): string {\n if (reward == null || reward.type == null) {\n return `No reward for this contract`;\n }\n\n /* eslint-disable no-case-declarations */\n switch (reward.type) {\n case CodingContractRewardType.FactionReputation:\n if (reward.name == null || !(Factions[reward.name] instanceof Faction)) {\n // If no/invalid faction was designated, just give rewards to all factions\n reward.type = CodingContractRewardType.FactionReputationAll;\n return this.gainCodingContractReward(reward);\n }\n const repGain = CONSTANTS.CodingContractBaseFactionRepGain * difficulty;\n Factions[reward.name].playerReputation += repGain;\n return `Gained ${repGain} faction reputation for ${reward.name}`;\n case CodingContractRewardType.FactionReputationAll:\n const totalGain = CONSTANTS.CodingContractBaseFactionRepGain * difficulty;\n\n // Ignore Bladeburners and other special factions for this calculation\n const specialFactions = [FactionNames.Bladeburners as string];\n const factions = this.factions.slice().filter((f) => {\n return !specialFactions.includes(f);\n });\n\n // If the player was only part of the special factions, we'll just give money\n if (factions.length == 0) {\n reward.type = CodingContractRewardType.Money;\n return this.gainCodingContractReward(reward, difficulty);\n }\n\n const gainPerFaction = Math.floor(totalGain / factions.length);\n for (const facName of factions) {\n if (!(Factions[facName] instanceof Faction)) {\n continue;\n }\n Factions[facName].playerReputation += gainPerFaction;\n }\n return `Gained ${gainPerFaction} reputation for each of the following factions: ${factions.toString()}`;\n case CodingContractRewardType.CompanyReputation: {\n if (reward.name == null || !(Companies[reward.name] instanceof Company)) {\n //If no/invalid company was designated, just give rewards to all factions\n reward.type = CodingContractRewardType.FactionReputationAll;\n return this.gainCodingContractReward(reward);\n }\n const repGain = CONSTANTS.CodingContractBaseCompanyRepGain * difficulty;\n Companies[reward.name].playerReputation += repGain;\n return `Gained ${repGain} company reputation for ${reward.name}`;\n }\n case CodingContractRewardType.Money:\n default: {\n const moneyGain = CONSTANTS.CodingContractBaseMoneyGain * difficulty * BitNodeMultipliers.CodingContractMoney;\n this.gainMoney(moneyGain, \"codingcontract\");\n return `Gained ${numeralWrapper.formatMoney(moneyGain)}`;\n }\n }\n /* eslint-enable no-case-declarations */\n}\n\nexport function travel(this: IPlayer, to: CityName): boolean {\n if (Cities[to] == null) {\n console.warn(`Player.travel() called with invalid city: ${to}`);\n return false;\n }\n this.city = to;\n\n return true;\n}\n\nexport function gotoLocation(this: IPlayer, to: LocationName): boolean {\n if (Locations[to] == null) {\n console.warn(`Player.gotoLocation() called with invalid location: ${to}`);\n return false;\n }\n this.location = to;\n\n return true;\n}\n\nexport function canAccessGrafting(this: IPlayer): boolean {\n return this.bitNodeN === 10 || SourceFileFlags[10] > 0;\n}\n\nexport function giveExploit(this: IPlayer, exploit: Exploit): void {\n if (!this.exploits.includes(exploit)) {\n this.exploits.push(exploit);\n SnackbarEvents.emit(\"SF -1 acquired!\", \"success\", 2000);\n }\n}\n\nexport function giveAchievement(this: IPlayer, achievementId: string): void {\n const achievement = achievements[achievementId];\n if (!achievement) return;\n if (!this.achievements.map((a) => a.ID).includes(achievementId)) {\n this.achievements.push({ ID: achievementId, unlockedOn: new Date().getTime() });\n SnackbarEvents.emit(`Unlocked Achievement: \"${achievement.Name}\"`, \"success\", 2000);\n }\n}\n\nexport function getIntelligenceBonus(this: IPlayer, weight: number): number {\n return calculateIntelligenceBonus(this.intelligence, weight);\n}\n\nexport function getCasinoWinnings(this: IPlayer): number {\n return this.moneySourceA.casino;\n}\n\nexport function getMult(this: IPlayer, name: string): number {\n if (!this.hasOwnProperty(name)) return 1;\n return (this as any)[name];\n}\n\nexport function setMult(this: IPlayer, name: string, mult: number): void {\n if (!this.hasOwnProperty(name)) return;\n (this as any)[name] = mult;\n}\n\nexport function canAccessCotMG(this: IPlayer): boolean {\n return this.bitNodeN === 13 || SourceFileFlags[13] > 0;\n}\n\nexport function sourceFileLvl(this: IPlayer, n: number): number {\n const sf = this.sourceFiles.find((sf) => sf.n === n);\n if (!sf) return 0;\n return sf.lvl;\n}\n","// Class representing a single hackable Server\nimport { BaseServer } from \"./BaseServer\";\n\nimport { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\n\nimport { createRandomString } from \"../utils/helpers/createRandomString\";\nimport { createRandomIp } from \"../utils/IPAddress\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\n\nexport interface IConstructorParams {\n adminRights?: boolean;\n hackDifficulty?: number;\n hostname: string;\n ip?: string;\n isConnectedTo?: boolean;\n maxRam?: number;\n moneyAvailable?: number;\n numOpenPortsRequired?: number;\n organizationName?: string;\n purchasedByPlayer?: boolean;\n requiredHackingSkill?: number;\n serverGrowth?: number;\n}\n\nexport class Server extends BaseServer {\n // Flag indicating whether this server has a backdoor installed by a player\n backdoorInstalled = false;\n\n // Initial server security level\n // (i.e. security level when the server was created)\n baseDifficulty = 1;\n\n // Server Security Level\n hackDifficulty = 1;\n\n // Minimum server security level that this server can be weakened to\n minDifficulty = 1;\n\n // How much money currently resides on the server and can be hacked\n moneyAvailable = 0;\n\n // Maximum amount of money that this server can hold\n moneyMax = 0;\n\n // Number of open ports required in order to gain admin/root access\n numOpenPortsRequired = 5;\n\n // How many ports are currently opened on the server\n openPortCount = 0;\n\n // Hacking level required to hack this server\n requiredHackingSkill = 1;\n\n // Parameter that affects how effectively this server's money can\n // be increased using the grow() Netscript function\n serverGrowth = 1;\n\n constructor(params: IConstructorParams = { hostname: \"\", ip: createRandomIp() }) {\n super(params);\n\n // \"hacknet-node-X\" hostnames are reserved for Hacknet Servers\n if (this.hostname.startsWith(\"hacknet-node-\")) {\n this.hostname = createRandomString(10);\n }\n\n this.purchasedByPlayer = params.purchasedByPlayer != null ? params.purchasedByPlayer : false;\n\n //RAM, CPU speed and Scripts\n this.maxRam = params.maxRam != null ? params.maxRam : 0; //GB\n\n /* Hacking information (only valid for \"foreign\" aka non-purchased servers) */\n this.requiredHackingSkill = params.requiredHackingSkill != null ? params.requiredHackingSkill : 1;\n this.moneyAvailable =\n params.moneyAvailable != null ? params.moneyAvailable * BitNodeMultipliers.ServerStartingMoney : 0;\n this.moneyMax = 25 * this.moneyAvailable * BitNodeMultipliers.ServerMaxMoney;\n\n //Hack Difficulty is synonymous with server security. Base Difficulty = Starting difficulty\n this.hackDifficulty =\n params.hackDifficulty != null ? params.hackDifficulty * BitNodeMultipliers.ServerStartingSecurity : 1;\n this.baseDifficulty = this.hackDifficulty;\n this.minDifficulty = Math.max(1, Math.round(this.hackDifficulty / 3));\n this.serverGrowth = params.serverGrowth != null ? params.serverGrowth : 1; //Integer from 0 to 100. Affects money increase from grow()\n\n //Port information, required for porthacking servers to get admin rights\n this.numOpenPortsRequired = params.numOpenPortsRequired != null ? params.numOpenPortsRequired : 5;\n }\n\n /**\n * Ensures that the server's difficulty (server security) doesn't get too high\n */\n capDifficulty(): void {\n if (this.hackDifficulty < this.minDifficulty) {\n this.hackDifficulty = this.minDifficulty;\n }\n if (this.hackDifficulty < 1) {\n this.hackDifficulty = 1;\n }\n\n // Place some arbitrarily limit that realistically should never happen unless someone is\n // screwing around with the game\n if (this.hackDifficulty > 100) {\n this.hackDifficulty = 100;\n }\n }\n\n /**\n * Change this server's minimum security\n * @param n - Value by which to increase/decrease the server's minimum security\n * @param perc - Whether it should be changed by a percentage, or a flat value\n */\n changeMinimumSecurity(n: number, perc = false): void {\n if (perc) {\n this.minDifficulty *= n;\n } else {\n this.minDifficulty += n;\n }\n\n // Server security cannot go below 1\n this.minDifficulty = Math.max(1, this.minDifficulty);\n }\n\n /**\n * Change this server's maximum money\n * @param n - Value by which to change the server's maximum money\n */\n changeMaximumMoney(n: number): void {\n const softCap = 10e12;\n if (this.moneyMax > softCap) {\n const aboveCap = this.moneyMax - softCap;\n n = 1 + (n - 1) / Math.log(aboveCap) / Math.log(8);\n }\n\n this.moneyMax *= n;\n }\n\n /**\n * Strengthens a server's security level (difficulty) by the specified amount\n */\n fortify(amt: number): void {\n this.hackDifficulty += amt;\n this.capDifficulty();\n }\n\n /**\n * Lowers the server's security level (difficulty) by the specified amount)\n */\n weaken(amt: number): void {\n this.hackDifficulty -= amt * BitNodeMultipliers.ServerWeakenRate;\n this.capDifficulty();\n }\n\n /**\n * Serialize the current object to a JSON save state\n */\n toJSON(): any {\n return Generic_toJSON(\"Server\", this);\n }\n\n // Initializes a Server Object from a JSON save state\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Server {\n return Generic_fromJSON(Server, value.data);\n }\n}\n\nReviver.constructors.Server = Server;\n","import React, { useContext } from \"react\";\nimport { ICorporation } from \"../ICorporation\";\nimport { IIndustry } from \"../IIndustry\";\n\nexport const Context: {\n Corporation: React.Context;\n Division: React.Context;\n} = {\n Corporation: React.createContext({} as ICorporation),\n Division: React.createContext({} as IIndustry),\n};\n\nexport const useCorporation = (): ICorporation => useContext(Context.Corporation);\nexport const useDivision = (): IIndustry => useContext(Context.Division);\n","import React from \"react\";\nimport { ResearchTree } from \"./ResearchTree\";\nimport { ICorporation } from \"./ICorporation\";\nimport { getBaseResearchTreeCopy, getProductIndustryResearchTreeCopy } from \"./data/BaseResearchTree\";\nimport { MoneyCost } from \"./ui/MoneyCost\";\n\ninterface IIndustryMap {\n [key: string]: T | undefined;\n Energy: T;\n Utilities: T;\n Agriculture: T;\n Fishing: T;\n Mining: T;\n Food: T;\n Tobacco: T;\n Chemical: T;\n Pharmaceutical: T;\n Computer: T;\n Robotics: T;\n Software: T;\n Healthcare: T;\n RealEstate: T;\n}\n\n// Map of official names for each Industry\nexport const Industries: IIndustryMap = {\n Energy: \"Energy\",\n Utilities: \"Water Utilities\",\n Agriculture: \"Agriculture\",\n Fishing: \"Fishing\",\n Mining: \"Mining\",\n Food: \"Food\",\n Tobacco: \"Tobacco\",\n Chemical: \"Chemical\",\n Pharmaceutical: \"Pharmaceutical\",\n Computer: \"Computer Hardware\",\n Robotics: \"Robotics\",\n Software: \"Software\",\n Healthcare: \"Healthcare\",\n RealEstate: \"RealEstate\",\n};\n\n// Map of how much money it takes to start each industry\nexport const IndustryStartingCosts: IIndustryMap = {\n Energy: 225e9,\n Utilities: 150e9,\n Agriculture: 40e9,\n Fishing: 80e9,\n Mining: 300e9,\n Food: 10e9,\n Tobacco: 20e9,\n Chemical: 70e9,\n Pharmaceutical: 200e9,\n Computer: 500e9,\n Robotics: 1e12,\n Software: 25e9,\n Healthcare: 750e9,\n RealEstate: 600e9,\n};\n\n// Map of description for each industry\nexport const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.ReactElement> = {\n Energy: (corp: ICorporation) => (\n <>\n Engage in the production and distribution of energy.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n Utilities: (corp: ICorporation) => (\n <>\n Distribute water and provide wastewater services.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n Agriculture: (corp: ICorporation) => (\n <>\n Cultivate crops and breed livestock to produce food.\n \n \n Starting cost: \n \n Recommended starting Industry: YES\n >\n ),\n Fishing: (corp: ICorporation) => (\n <>\n Produce food through the breeding and processing of fish and fish products.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n Mining: (corp: ICorporation) => (\n <>\n Extract and process metals from the earth.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n Food: (corp: ICorporation) => (\n <>\n Create your own restaurants all around the world.\n \n \n Starting cost: \n \n Recommended starting Industry: YES\n >\n ),\n Tobacco: (corp: ICorporation) => (\n <>\n Create and distribute tobacco and tobacco-related products.\n \n \n Starting cost: \n \n Recommended starting Industry: YES\n >\n ),\n Chemical: (corp: ICorporation) => (\n <>\n Produce industrial chemicals.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n Pharmaceutical: (corp: ICorporation) => (\n <>\n Discover, develop, and create new pharmaceutical drugs.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n Computer: (corp: ICorporation) => (\n <>\n Develop and manufacture new computer hardware and networking infrastructures.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n Robotics: (corp: ICorporation) => (\n <>\n Develop and create robots.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n Software: (corp: ICorporation) => (\n <>\n Develop computer software and create AI Cores.\n \n \n Starting cost: \n \n Recommended starting Industry: YES\n >\n ),\n Healthcare: (corp: ICorporation) => (\n <>\n Create and manage hospitals.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n RealEstate: (corp: ICorporation) => (\n <>\n Develop and manage real estate properties.\n \n \n Starting cost: \n \n Recommended starting Industry: NO\n >\n ),\n};\n\n// Map of available Research for each Industry. This data is held in a\n// ResearchTree object\nexport const IndustryResearchTrees: IIndustryMap = {\n Energy: getBaseResearchTreeCopy(),\n Utilities: getBaseResearchTreeCopy(),\n Agriculture: getBaseResearchTreeCopy(),\n Fishing: getBaseResearchTreeCopy(),\n Mining: getBaseResearchTreeCopy(),\n Food: getProductIndustryResearchTreeCopy(),\n Tobacco: getProductIndustryResearchTreeCopy(),\n Chemical: getBaseResearchTreeCopy(),\n Pharmaceutical: getProductIndustryResearchTreeCopy(),\n Computer: getProductIndustryResearchTreeCopy(),\n Robotics: getProductIndustryResearchTreeCopy(),\n Software: getProductIndustryResearchTreeCopy(),\n Healthcare: getProductIndustryResearchTreeCopy(),\n RealEstate: getProductIndustryResearchTreeCopy(),\n};\n\nexport function resetIndustryResearchTrees(): void {\n IndustryResearchTrees.Energy = getBaseResearchTreeCopy();\n IndustryResearchTrees.Utilities = getBaseResearchTreeCopy();\n IndustryResearchTrees.Agriculture = getBaseResearchTreeCopy();\n IndustryResearchTrees.Fishing = getBaseResearchTreeCopy();\n IndustryResearchTrees.Mining = getBaseResearchTreeCopy();\n IndustryResearchTrees.Food = getProductIndustryResearchTreeCopy();\n IndustryResearchTrees.Tobacco = getProductIndustryResearchTreeCopy();\n IndustryResearchTrees.Chemical = getBaseResearchTreeCopy();\n IndustryResearchTrees.Pharmaceutical = getProductIndustryResearchTreeCopy();\n IndustryResearchTrees.Computer = getProductIndustryResearchTreeCopy();\n IndustryResearchTrees.Robotics = getProductIndustryResearchTreeCopy();\n IndustryResearchTrees.Software = getProductIndustryResearchTreeCopy();\n IndustryResearchTrees.Healthcare = getProductIndustryResearchTreeCopy();\n IndustryResearchTrees.RealEstate = getProductIndustryResearchTreeCopy();\n}\n","/**\n * Enum defining the different types of possible locations\n */\nexport enum LocationType {\n Company,\n Gym,\n Hospital,\n Slums,\n Special, // This location has special options/activities (e.g. Bladeburner, Re-sleeving)\n StockMarket,\n TechVendor,\n TravelAgency,\n University,\n Casino,\n}\n","import { IMap } from \"../types\";\n\nexport const EmployeePositions: IMap = {\n Operations: \"Operations\",\n Engineer: \"Engineer\",\n Business: \"Business\",\n Management: \"Management\",\n RandD: \"Research & Development\",\n Training: \"Training\",\n Unassigned: \"Unassigned\",\n};\n","/**\n * Generic helper/utility functions for the Hacknet mechanic:\n * - Purchase nodes/upgrades\n * - Calculating maximum number of upgrades\n * - Processing Hacknet earnings\n * - Updating Hash Manager capacity\n * - Purchasing hash upgrades\n *\n * TODO Should probably split the different types of functions into their own modules\n */\nimport { HacknetNode } from \"./HacknetNode\";\nimport { calculateNodeCost } from \"./formulas/HacknetNodes\";\nimport { calculateServerCost } from \"./formulas/HacknetServers\";\nimport { HacknetNodeConstants, HacknetServerConstants } from \"./data/Constants\";\nimport { HacknetServer } from \"./HacknetServer\";\nimport { HashManager } from \"./HashManager\";\nimport { HashUpgrades } from \"./HashUpgrades\";\n\nimport { generateRandomContract } from \"../CodingContractGenerator\";\nimport { iTutorialSteps, iTutorialNextStep, ITutorial } from \"../InteractiveTutorial\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { GetServer } from \"../Server/AllServers\";\nimport { Server } from \"../Server/Server\";\nimport { SourceFileFlags } from \"../SourceFile/SourceFileFlags\";\n\n// Returns a boolean indicating whether the player has Hacknet Servers\n// (the upgraded form of Hacknet Nodes)\nexport function hasHacknetServers(player: IPlayer): boolean {\n return player.bitNodeN === 9 || SourceFileFlags[9] > 0;\n}\n\nexport function purchaseHacknet(player: IPlayer): number {\n /* INTERACTIVE TUTORIAL */\n if (ITutorial.isRunning) {\n if (ITutorial.currStep === iTutorialSteps.HacknetNodesIntroduction) {\n iTutorialNextStep();\n } else {\n return -1;\n }\n }\n /* END INTERACTIVE TUTORIAL */\n\n const numOwned = player.hacknetNodes.length;\n if (hasHacknetServers(player)) {\n const cost = getCostOfNextHacknetServer(player);\n if (isNaN(cost)) {\n throw new Error(`Calculated cost of purchasing HacknetServer is NaN`);\n }\n\n if (!player.canAfford(cost) || numOwned >= HacknetServerConstants.MaxServers) {\n return -1;\n }\n player.loseMoney(cost, \"hacknet_expenses\");\n player.createHacknetServer();\n updateHashManagerCapacity(player);\n\n return numOwned;\n } else {\n const cost = getCostOfNextHacknetNode(player);\n if (isNaN(cost)) {\n throw new Error(`Calculated cost of purchasing HacknetNode is NaN`);\n }\n\n if (!player.canAfford(cost)) {\n return -1;\n }\n\n // Auto generate a name for the Node\n const name = \"hacknet-node-\" + numOwned;\n const node = new HacknetNode(name, player.hacknet_node_money_mult);\n\n player.loseMoney(cost, \"hacknet_expenses\");\n player.hacknetNodes.push(node);\n\n return numOwned;\n }\n}\n\nexport function hasMaxNumberHacknetServers(player: IPlayer): boolean {\n return hasHacknetServers(player) && player.hacknetNodes.length >= HacknetServerConstants.MaxServers;\n}\n\nexport function getCostOfNextHacknetNode(player: IPlayer): number {\n return calculateNodeCost(player.hacknetNodes.length + 1, player.hacknet_node_purchase_cost_mult);\n}\n\nexport function getCostOfNextHacknetServer(player: IPlayer): number {\n return calculateServerCost(player.hacknetNodes.length + 1, player.hacknet_node_purchase_cost_mult);\n}\n\n// Calculate the maximum number of times the Player can afford to upgrade a Hacknet Node's level\nexport function getMaxNumberLevelUpgrades(\n player: IPlayer,\n nodeObj: HacknetNode | HacknetServer,\n maxLevel: number,\n): number {\n if (maxLevel == null) {\n throw new Error(`getMaxNumberLevelUpgrades() called without maxLevel arg`);\n }\n\n if (player.money < nodeObj.calculateLevelUpgradeCost(1, player.hacknet_node_level_cost_mult)) {\n return 0;\n }\n\n let min = 1;\n let max = maxLevel - 1;\n const levelsToMax = maxLevel - nodeObj.level;\n if (player.money > nodeObj.calculateLevelUpgradeCost(levelsToMax, player.hacknet_node_level_cost_mult)) {\n return levelsToMax;\n }\n\n while (min <= max) {\n const curr = ((min + max) / 2) | 0;\n if (\n curr !== maxLevel &&\n player.money > nodeObj.calculateLevelUpgradeCost(curr, player.hacknet_node_level_cost_mult) &&\n player.money < nodeObj.calculateLevelUpgradeCost(curr + 1, player.hacknet_node_level_cost_mult)\n ) {\n return Math.min(levelsToMax, curr);\n } else if (player.money < nodeObj.calculateLevelUpgradeCost(curr, player.hacknet_node_level_cost_mult)) {\n max = curr - 1;\n } else if (player.money > nodeObj.calculateLevelUpgradeCost(curr, player.hacknet_node_level_cost_mult)) {\n min = curr + 1;\n } else {\n return Math.min(levelsToMax, curr);\n }\n }\n return 0;\n}\n\n// Calculate the maximum number of times the Player can afford to upgrade a Hacknet Node's RAM\nexport function getMaxNumberRamUpgrades(\n player: IPlayer,\n nodeObj: HacknetNode | HacknetServer,\n maxLevel: number,\n): number {\n if (maxLevel == null) {\n throw new Error(`getMaxNumberRamUpgrades() called without maxLevel arg`);\n }\n\n if (player.money < nodeObj.calculateRamUpgradeCost(1, player.hacknet_node_ram_cost_mult)) {\n return 0;\n }\n\n let levelsToMax;\n if (nodeObj instanceof HacknetServer) {\n levelsToMax = Math.round(Math.log2(maxLevel / nodeObj.maxRam));\n } else {\n levelsToMax = Math.round(Math.log2(maxLevel / nodeObj.ram));\n }\n if (player.money > nodeObj.calculateRamUpgradeCost(levelsToMax, player.hacknet_node_ram_cost_mult)) {\n return levelsToMax;\n }\n\n //We'll just loop until we find the max\n for (let i = levelsToMax - 1; i >= 0; --i) {\n if (player.money > nodeObj.calculateRamUpgradeCost(i, player.hacknet_node_ram_cost_mult)) {\n return i;\n }\n }\n return 0;\n}\n\n// Calculate the maximum number of times the Player can afford to upgrade a Hacknet Node's cores\nexport function getMaxNumberCoreUpgrades(\n player: IPlayer,\n nodeObj: HacknetNode | HacknetServer,\n maxLevel: number,\n): number {\n if (maxLevel == null) {\n throw new Error(`getMaxNumberCoreUpgrades() called without maxLevel arg`);\n }\n\n if (player.money < nodeObj.calculateCoreUpgradeCost(1, player.hacknet_node_core_cost_mult)) {\n return 0;\n }\n\n let min = 1;\n let max = maxLevel - 1;\n const levelsToMax = maxLevel - nodeObj.cores;\n if (player.money > nodeObj.calculateCoreUpgradeCost(levelsToMax, player.hacknet_node_core_cost_mult)) {\n return levelsToMax;\n }\n\n // Use a binary search to find the max possible number of upgrades\n while (min <= max) {\n const curr = ((min + max) / 2) | 0;\n if (\n curr != maxLevel &&\n player.money > nodeObj.calculateCoreUpgradeCost(curr, player.hacknet_node_core_cost_mult) &&\n player.money < nodeObj.calculateCoreUpgradeCost(curr + 1, player.hacknet_node_core_cost_mult)\n ) {\n return Math.min(levelsToMax, curr);\n } else if (player.money < nodeObj.calculateCoreUpgradeCost(curr, player.hacknet_node_core_cost_mult)) {\n max = curr - 1;\n } else if (player.money > nodeObj.calculateCoreUpgradeCost(curr, player.hacknet_node_core_cost_mult)) {\n min = curr + 1;\n } else {\n return Math.min(levelsToMax, curr);\n }\n }\n\n return 0;\n}\n\n// Calculate the maximum number of times the Player can afford to upgrade a Hacknet Node's cache\nexport function getMaxNumberCacheUpgrades(player: IPlayer, nodeObj: HacknetServer, maxLevel: number): number {\n if (maxLevel == null) {\n throw new Error(`getMaxNumberCacheUpgrades() called without maxLevel arg`);\n }\n\n if (!player.canAfford(nodeObj.calculateCacheUpgradeCost(1))) {\n return 0;\n }\n\n let min = 1;\n let max = maxLevel - 1;\n const levelsToMax = maxLevel - nodeObj.cache;\n if (player.canAfford(nodeObj.calculateCacheUpgradeCost(levelsToMax))) {\n return levelsToMax;\n }\n\n // Use a binary search to find the max possible number of upgrades\n while (min <= max) {\n const curr = ((min + max) / 2) | 0;\n if (\n curr != maxLevel &&\n player.canAfford(nodeObj.calculateCacheUpgradeCost(curr)) &&\n !player.canAfford(nodeObj.calculateCacheUpgradeCost(curr + 1))\n ) {\n return Math.min(levelsToMax, curr);\n } else if (!player.canAfford(nodeObj.calculateCacheUpgradeCost(curr))) {\n max = curr - 1;\n } else if (player.canAfford(nodeObj.calculateCacheUpgradeCost(curr))) {\n min = curr + 1;\n } else {\n return Math.min(levelsToMax, curr);\n }\n }\n\n return 0;\n}\n\nexport function purchaseLevelUpgrade(player: IPlayer, node: HacknetNode | HacknetServer, levels = 1): boolean {\n const sanitizedLevels = Math.round(levels);\n const cost = node.calculateLevelUpgradeCost(sanitizedLevels, player.hacknet_node_level_cost_mult);\n if (isNaN(cost) || cost <= 0 || sanitizedLevels < 0) {\n return false;\n }\n\n const isServer = node instanceof HacknetServer;\n\n // If we're at max level, return false\n if (node.level >= (isServer ? HacknetServerConstants.MaxLevel : HacknetNodeConstants.MaxLevel)) {\n return false;\n }\n\n // If the number of specified upgrades would exceed the max level, calculate\n // the maximum number of upgrades and use that\n if (node.level + sanitizedLevels > (isServer ? HacknetServerConstants.MaxLevel : HacknetNodeConstants.MaxLevel)) {\n const diff = Math.max(0, (isServer ? HacknetServerConstants.MaxLevel : HacknetNodeConstants.MaxLevel) - node.level);\n return purchaseLevelUpgrade(player, node, diff);\n }\n\n if (!player.canAfford(cost)) {\n return false;\n }\n\n player.loseMoney(cost, \"hacknet_expenses\");\n node.upgradeLevel(sanitizedLevels, player.hacknet_node_money_mult);\n\n return true;\n}\n\nexport function purchaseRamUpgrade(player: IPlayer, node: HacknetNode | HacknetServer, levels = 1): boolean {\n const sanitizedLevels = Math.round(levels);\n const cost = node.calculateRamUpgradeCost(sanitizedLevels, player.hacknet_node_ram_cost_mult);\n if (isNaN(cost) || cost <= 0 || sanitizedLevels < 0) {\n return false;\n }\n\n if (node instanceof HacknetServer && node.maxRam >= HacknetServerConstants.MaxRam) {\n return false;\n }\n\n if (node instanceof HacknetNode && node.ram >= HacknetNodeConstants.MaxRam) {\n return false;\n }\n\n // If the number of specified upgrades would exceed the max RAM, calculate the\n // max possible number of upgrades and use that\n if (node instanceof HacknetServer) {\n if (node.maxRam * Math.pow(2, sanitizedLevels) > HacknetServerConstants.MaxRam) {\n const diff = Math.max(0, Math.log2(Math.round(HacknetServerConstants.MaxRam / node.maxRam)));\n return purchaseRamUpgrade(player, node, diff);\n }\n } else if (node instanceof HacknetNode) {\n if (node.ram * Math.pow(2, sanitizedLevels) > HacknetNodeConstants.MaxRam) {\n const diff = Math.max(0, Math.log2(Math.round(HacknetNodeConstants.MaxRam / node.ram)));\n return purchaseRamUpgrade(player, node, diff);\n }\n }\n\n if (!player.canAfford(cost)) {\n return false;\n }\n\n player.loseMoney(cost, \"hacknet_expenses\");\n node.upgradeRam(sanitizedLevels, player.hacknet_node_money_mult);\n\n return true;\n}\n\nexport function purchaseCoreUpgrade(player: IPlayer, node: HacknetNode | HacknetServer, levels = 1): boolean {\n const sanitizedLevels = Math.round(levels);\n const cost = node.calculateCoreUpgradeCost(sanitizedLevels, player.hacknet_node_core_cost_mult);\n if (isNaN(cost) || cost <= 0 || sanitizedLevels < 0) {\n return false;\n }\n\n const isServer = node instanceof HacknetServer;\n\n // Fail if we're already at max\n if (node.cores >= (isServer ? HacknetServerConstants.MaxCores : HacknetNodeConstants.MaxCores)) {\n return false;\n }\n\n // If the specified number of upgrades would exceed the max Cores, calculate\n // the max possible number of upgrades and use that\n if (node.cores + sanitizedLevels > (isServer ? HacknetServerConstants.MaxCores : HacknetNodeConstants.MaxCores)) {\n const diff = Math.max(0, (isServer ? HacknetServerConstants.MaxCores : HacknetNodeConstants.MaxCores) - node.cores);\n return purchaseCoreUpgrade(player, node, diff);\n }\n\n if (!player.canAfford(cost)) {\n return false;\n }\n\n player.loseMoney(cost, \"hacknet_expenses\");\n node.upgradeCore(sanitizedLevels, player.hacknet_node_money_mult);\n\n return true;\n}\n\nexport function purchaseCacheUpgrade(player: IPlayer, node: HacknetServer, levels = 1): boolean {\n const sanitizedLevels = Math.round(levels);\n const cost = node.calculateCacheUpgradeCost(sanitizedLevels);\n if (isNaN(cost) || cost <= 0 || sanitizedLevels < 0) {\n return false;\n }\n\n if (!(node instanceof HacknetServer)) {\n console.warn(`purchaseCacheUpgrade() called for a non-HacknetNode`);\n return false;\n }\n\n // Fail if we're already at max\n if (node.cache + sanitizedLevels > HacknetServerConstants.MaxCache) {\n const diff = Math.max(0, HacknetServerConstants.MaxCache - node.cache);\n return purchaseCacheUpgrade(player, node, diff);\n }\n\n if (!player.canAfford(cost)) {\n return false;\n }\n\n player.loseMoney(cost, \"hacknet_expenses\");\n node.upgradeCache(sanitizedLevels);\n\n return true;\n}\n\nexport function processHacknetEarnings(player: IPlayer, numCycles: number): number {\n // Determine if player has Hacknet Nodes or Hacknet Servers, then\n // call the appropriate function\n if (player.hacknetNodes.length === 0) {\n return 0;\n }\n if (hasHacknetServers(player)) {\n return processAllHacknetServerEarnings(player, numCycles);\n } else if (player.hacknetNodes[0] instanceof HacknetNode) {\n return processAllHacknetNodeEarnings(player, numCycles);\n } else {\n return 0;\n }\n}\n\nfunction processAllHacknetNodeEarnings(player: IPlayer, numCycles: number): number {\n let total = 0;\n for (let i = 0; i < player.hacknetNodes.length; ++i) {\n const node = player.hacknetNodes[i];\n if (typeof node === \"string\") throw new Error(\"player node should not be ip string\");\n total += processSingleHacknetNodeEarnings(player, numCycles, node);\n }\n\n return total;\n}\n\nfunction processSingleHacknetNodeEarnings(player: IPlayer, numCycles: number, nodeObj: HacknetNode): number {\n const totalEarnings = nodeObj.process(numCycles);\n player.gainMoney(totalEarnings, \"hacknet\");\n\n return totalEarnings;\n}\n\nfunction processAllHacknetServerEarnings(player: IPlayer, numCycles: number): number {\n if (!(player.hashManager instanceof HashManager)) {\n throw new Error(`Player does not have a HashManager (should be in 'hashManager' prop)`);\n }\n\n let hashes = 0;\n for (let i = 0; i < player.hacknetNodes.length; ++i) {\n // hacknetNodes array only contains the IP addresses of the servers.\n // Also, update the hash rate before processing\n const ip = player.hacknetNodes[i];\n if (ip instanceof HacknetNode) throw new Error(`player nodes should not be HacketNode`);\n const hserver = GetServer(ip);\n if (!(hserver instanceof HacknetServer)) throw new Error(`player nodes shoud not be Server`);\n hserver.updateHashRate(player.hacknet_node_money_mult);\n const h = hserver.process(numCycles);\n hashes += h;\n }\n\n const wastedHashes = player.hashManager.storeHashes(hashes);\n if (wastedHashes > 0) {\n const upgrade = HashUpgrades[\"Sell for Money\"];\n if (upgrade === null) throw new Error(\"Could not get the hash upgrade\");\n if (!upgrade.cost) throw new Error(\"Upgrade is not properly configured\");\n\n const multiplier = Math.floor(wastedHashes / upgrade.cost);\n if (multiplier > 0) {\n player.gainMoney(upgrade.value * multiplier, \"hacknet\");\n }\n }\n\n return hashes;\n}\n\nexport function updateHashManagerCapacity(player: IPlayer): void {\n if (!(player.hashManager instanceof HashManager)) {\n console.error(`Player does not have a HashManager`);\n return;\n }\n\n const nodes = player.hacknetNodes;\n if (nodes.length === 0) {\n player.hashManager.updateCapacity(0);\n return;\n }\n\n let total = 0;\n for (let i = 0; i < nodes.length; ++i) {\n if (typeof nodes[i] !== \"string\") {\n player.hashManager.updateCapacity(0);\n return;\n }\n const ip = nodes[i];\n if (ip instanceof HacknetNode) throw new Error(`player nodes should be string but isn't`);\n const h = GetServer(ip);\n if (!(h instanceof HacknetServer)) {\n player.hashManager.updateCapacity(0);\n return;\n }\n\n total += h.hashCapacity;\n }\n\n player.hashManager.updateCapacity(total);\n}\n\nexport function purchaseHashUpgrade(player: IPlayer, upgName: string, upgTarget: string): boolean {\n if (!(player.hashManager instanceof HashManager)) {\n console.error(`Player does not have a HashManager`);\n return false;\n }\n\n // HashManager handles the transaction. This just needs to actually implement\n // the effects of the upgrade\n if (player.hashManager.upgrade(upgName)) {\n const upg = HashUpgrades[upgName];\n\n switch (upgName) {\n case \"Sell for Money\": {\n player.gainMoney(upg.value, \"hacknet\");\n break;\n }\n case \"Sell for Corporation Funds\": {\n const corp = player.corporation;\n if (corp === null) {\n player.hashManager.refundUpgrade(upgName);\n return false;\n }\n corp.funds = corp.funds + upg.value;\n break;\n }\n case \"Reduce Minimum Security\": {\n try {\n const target = GetServer(upgTarget);\n if (target == null) {\n console.error(`Invalid target specified in purchaseHashUpgrade(): ${upgTarget}`);\n return false;\n }\n if (!(target instanceof Server)) throw new Error(`'${upgTarget}' is not a normal server.`);\n\n target.changeMinimumSecurity(upg.value, true);\n } catch (e) {\n player.hashManager.refundUpgrade(upgName);\n return false;\n }\n break;\n }\n case \"Increase Maximum Money\": {\n try {\n const target = GetServer(upgTarget);\n if (target == null) {\n console.error(`Invalid target specified in purchaseHashUpgrade(): ${upgTarget}`);\n return false;\n }\n if (!(target instanceof Server)) throw new Error(`'${upgTarget}' is not a normal server.`);\n\n target.changeMaximumMoney(upg.value);\n } catch (e) {\n player.hashManager.refundUpgrade(upgName);\n return false;\n }\n break;\n }\n case \"Improve Studying\": {\n // Multiplier handled by HashManager\n break;\n }\n case \"Improve Gym Training\": {\n // Multiplier handled by HashManager\n break;\n }\n case \"Exchange for Corporation Research\": {\n // This will throw if player doesn't have a corporation\n const corp = player.corporation;\n if (corp === null) {\n player.hashManager.refundUpgrade(upgName);\n return false;\n }\n for (const division of corp.divisions) {\n division.sciResearch.qty += upg.value;\n }\n break;\n }\n case \"Exchange for Bladeburner Rank\": {\n // This will throw if player isnt in Bladeburner\n const bladeburner = player.bladeburner;\n if (bladeburner === null) {\n player.hashManager.refundUpgrade(upgName);\n return false;\n }\n bladeburner.changeRank(player, upg.value);\n break;\n }\n case \"Exchange for Bladeburner SP\": {\n // This will throw if player isnt in Bladeburner\n const bladeburner = player.bladeburner;\n if (bladeburner === null) {\n player.hashManager.refundUpgrade(upgName);\n return false;\n }\n\n bladeburner.skillPoints += upg.value;\n break;\n }\n case \"Generate Coding Contract\": {\n generateRandomContract();\n break;\n }\n default:\n console.warn(`Unrecognized upgrade name ${upgName}. Upgrade has no effect`);\n player.hashManager.refundUpgrade(upgName);\n return false;\n }\n\n return true;\n }\n\n return false;\n}\n","import { Augmentation } from \"./Augmentation\";\nimport { IMap } from \"../types\";\n\nexport const Augmentations: IMap = {};\n","export enum BlackOperationNames {\n OperationTyphoon = \"Operation Typhoon\",\n OperationZero = \"Operation Zero\",\n OperationX = \"Operation X\",\n OperationTitan = \"Operation Titan\",\n OperationAres = \"Operation Ares\",\n OperationArchangel = \"Operation Archangel\",\n OperationJuggernaut = \"Operation Juggernaut\",\n OperationRedDragon = \"Operation Red Dragon\",\n OperationK = \"Operation K\",\n OperationDeckard = \"Operation Deckard\",\n OperationTyrell = \"Operation Tyrell\",\n OperationWallace = \"Operation Wallace\",\n OperationShoulderOfOrion = \"Operation Shoulder of Orion\",\n OperationHyron = \"Operation Hyron\",\n OperationMorpheus = \"Operation Morpheus\",\n OperationIonStorm = \"Operation Ion Storm\",\n OperationAnnihilus = \"Operation Annihilus\",\n OperationUltron = \"Operation Ultron\",\n OperationCenturion = \"Operation Centurion\",\n OperationVindictus = \"Operation Vindictus\",\n OperationDaedalus = \"Operation Daedalus\",\n}\n","import { CityName } from \"./../../Locations/data/CityNames\";\nexport const BladeburnerConstants: {\n CityNames: string[];\n CyclesPerSecond: number;\n StaminaGainPerSecond: number;\n BaseStaminaLoss: number;\n MaxStaminaToGainFactor: number;\n DifficultyToTimeFactor: number;\n DiffMultExponentialFactor: number;\n DiffMultLinearFactor: number;\n EffAgiLinearFactor: number;\n EffDexLinearFactor: number;\n EffAgiExponentialFactor: number;\n EffDexExponentialFactor: number;\n BaseRecruitmentTimeNeeded: number;\n PopulationThreshold: number;\n PopulationExponent: number;\n ChaosThreshold: number;\n BaseStatGain: number;\n BaseIntGain: number;\n ActionCountGrowthPeriod: number;\n RankToFactionRepFactor: number;\n RankNeededForFaction: number;\n ContractSuccessesPerLevel: number;\n OperationSuccessesPerLevel: number;\n RanksPerSkillPoint: number;\n ContractBaseMoneyGain: number;\n HrcHpGain: number;\n HrcStaminaGain: number;\n} = {\n CityNames: [\n CityName.Aevum,\n CityName.Chongqing,\n CityName.Sector12,\n CityName.NewTokyo,\n CityName.Ishima,\n CityName.Volhaven,\n ],\n CyclesPerSecond: 5, // Game cycle is 200 ms\n\n StaminaGainPerSecond: 0.0085,\n BaseStaminaLoss: 0.285, // Base stamina loss per action. Increased based on difficulty\n MaxStaminaToGainFactor: 70000, // Max Stamina is divided by this to get bonus stamina gain\n\n DifficultyToTimeFactor: 10, // Action Difficulty divided by this to get base action time\n\n /**\n * The difficulty multiplier affects stamina loss and hp loss of an action. Also affects\n * experience gain. Its formula is:\n * difficulty ^ exponentialFactor + difficulty / linearFactor\n */\n DiffMultExponentialFactor: 0.28,\n DiffMultLinearFactor: 650,\n\n /**\n * These factors are used to calculate action time.\n * They affect how much action time is reduced based on your agility and dexterity\n */\n EffAgiLinearFactor: 10e3,\n EffDexLinearFactor: 10e3,\n EffAgiExponentialFactor: 0.04,\n EffDexExponentialFactor: 0.035,\n\n BaseRecruitmentTimeNeeded: 300, // Base time needed (s) to complete a Recruitment action\n\n PopulationThreshold: 1e9, // Population which determines baseline success rate\n PopulationExponent: 0.7, // Exponent that influences how different populations affect success rate\n ChaosThreshold: 50, // City chaos level after which it starts making tasks harder\n\n BaseStatGain: 1, // Base stat gain per second\n BaseIntGain: 0.003, // Base intelligence stat gain\n\n ActionCountGrowthPeriod: 480, // Time (s) it takes for action count to grow by its specified value\n\n RankToFactionRepFactor: 2, // Delta Faction Rep = this * Delta Rank\n RankNeededForFaction: 25,\n\n ContractSuccessesPerLevel: 3, // How many successes you need to level up a contract\n OperationSuccessesPerLevel: 2.5, // How many successes you need to level up an op\n\n RanksPerSkillPoint: 3, // How many ranks needed to get 1 Skill Point\n\n ContractBaseMoneyGain: 250e3, // Base Money Gained per contract\n\n HrcHpGain: 2, // HP Gained from Hyperbolic Regeneration chamber\n HrcStaminaGain: 1, // Percentage Stamina gained from Hyperbolic Regeneration Chamber\n};\n","import { IMap } from \"../../types\";\n\nexport const LiteratureNames: IMap = {\n HackersStartingHandbook: \"hackers-starting-handbook.lit\",\n CorporationManagementHandbook: \"corporation-management-handbook.lit\",\n HistoryOfSynthoids: \"history-of-synthoids.lit\",\n AGreenTomorrow: \"A-Green-Tomorrow.lit\",\n AlphaOmega: \"alpha-omega.lit\",\n SimulatedReality: \"simulated-reality.lit\",\n BeyondMan: \"beyond-man.lit\",\n BrighterThanTheSun: \"brighter-than-the-sun.lit\",\n DemocracyIsDead: \"democracy-is-dead.lit\",\n Sector12Crime: \"sector-12-crime.lit\",\n ManAndMachine: \"man-and-machine.lit\",\n SecretSocieties: \"secret-societies.lit\",\n TheFailedFrontier: \"the-failed-frontier.lit\",\n CodedIntelligence: \"coded-intelligence.lit\",\n SyntheticMuscles: \"synthetic-muscles.lit\",\n TensionsInTechRace: \"tensions-in-tech-race.lit\",\n CostOfImmortality: \"cost-of-immortality.lit\",\n TheHiddenWorld: \"the-hidden-world.lit\",\n TheNewGod: \"the-new-god.lit\",\n NewTriads: \"new-triads.lit\",\n TheSecretWar: \"the-secret-war.lit\",\n};\n","import { Program } from \"./Program\";\nimport { programsMetadata } from \"./data/ProgramsMetadata\";\nimport { IMap } from \"../types\";\n\nexport const Programs: IMap = {};\n\nfor (const params of programsMetadata) {\n Programs[params.key] = new Program(params.name, params.create, params.run);\n}\n","// Constructs all CompanyPosition objects using the metadata in data/companypositions.ts\nimport { companiesMetadata } from \"./data/CompaniesMetadata\";\nimport { Company, IConstructorParams } from \"./Company\";\nimport { IMap } from \"../types\";\nimport { Reviver } from \"../utils/JSONReviver\";\n\nexport let Companies: IMap = {};\n\nfunction addCompany(params: IConstructorParams): void {\n if (Companies[params.name] != null) {\n console.warn(`Duplicate Company Position being defined: ${params.name}`);\n }\n Companies[params.name] = new Company(params);\n}\n\n// Used to initialize new Company objects for the Companies map\n// Called when creating new game or after a prestige/reset\nexport function initCompanies(): void {\n // Save Old Company data for 'favor'\n const oldCompanies = Companies;\n\n // Re-construct all Companies\n Companies = {};\n companiesMetadata.forEach((e) => {\n addCompany(e);\n });\n\n // Reset data\n for (const companyName of Object.keys(Companies)) {\n const company = Companies[companyName];\n const oldCompany = oldCompanies[companyName];\n if (!(oldCompany instanceof Company)) {\n // New game, so no OldCompanies data\n company.favor = 0;\n } else {\n company.favor = oldCompanies[companyName].favor;\n if (isNaN(company.favor)) {\n company.favor = 0;\n }\n }\n }\n}\n\n// Used to load Companies map from a save\nexport function loadCompanies(saveString: string): void {\n Companies = JSON.parse(saveString, Reviver);\n}\n","import { IPlayer } from \"src/PersonObjects/IPlayer\";\nimport { MaterialSizes } from \"./MaterialSizes\";\nimport { ICorporation } from \"./ICorporation\";\nimport { IIndustry } from \"./IIndustry\";\nimport { IndustryStartingCosts, IndustryResearchTrees } from \"./IndustryData\";\nimport { Industry } from \"./Industry\";\nimport { CorporationConstants } from \"./data/Constants\";\nimport { OfficeSpace } from \"./OfficeSpace\";\nimport { Material } from \"./Material\";\nimport { Product } from \"./Product\";\nimport { Warehouse } from \"./Warehouse\";\nimport { CorporationUnlockUpgrade } from \"./data/CorporationUnlockUpgrades\";\nimport { CorporationUpgrade } from \"./data/CorporationUpgrades\";\nimport { Cities } from \"../Locations/Cities\";\nimport { EmployeePositions } from \"./EmployeePositions\";\nimport { Employee } from \"./Employee\";\nimport { IndustryUpgrades } from \"./IndustryUpgrades\";\nimport { ResearchMap } from \"./ResearchMap\";\nimport { isRelevantMaterial } from \"./ui/Helpers\";\n\nexport function NewIndustry(corporation: ICorporation, industry: string, name: string): void {\n if (corporation.divisions.find(({ type }) => industry == type))\n throw new Error(`You have already expanded into the ${industry} industry!`);\n\n for (let i = 0; i < corporation.divisions.length; ++i) {\n if (corporation.divisions[i].name === name) {\n throw new Error(\"This division name is already in use!\");\n }\n }\n\n const cost = IndustryStartingCosts[industry];\n if (cost === undefined) {\n throw new Error(`Invalid industry: '${industry}'`);\n }\n if (corporation.funds < cost) {\n throw new Error(\"Not enough money to create a new division in this industry\");\n } else if (name === \"\") {\n throw new Error(\"New division must have a name!\");\n } else {\n corporation.funds = corporation.funds - cost;\n corporation.divisions.push(\n new Industry({\n corp: corporation,\n name: name,\n type: industry,\n }),\n );\n }\n}\n\nexport function NewCity(corporation: ICorporation, division: IIndustry, city: string): void {\n if (corporation.funds < CorporationConstants.OfficeInitialCost) {\n throw new Error(\"You don't have enough company funds to open a new office!\");\n } else {\n corporation.funds = corporation.funds - CorporationConstants.OfficeInitialCost;\n division.offices[city] = new OfficeSpace({\n loc: city,\n size: CorporationConstants.OfficeInitialSize,\n });\n }\n}\n\nexport function UnlockUpgrade(corporation: ICorporation, upgrade: CorporationUnlockUpgrade): void {\n if (corporation.funds < upgrade[1]) {\n throw new Error(\"Insufficient funds\");\n }\n if (corporation.unlockUpgrades[upgrade[0]] === 1) {\n throw new Error(`You have already unlocked the ${upgrade[2]} upgrade!`);\n }\n corporation.unlock(upgrade);\n}\n\nexport function LevelUpgrade(corporation: ICorporation, upgrade: CorporationUpgrade): void {\n const baseCost = upgrade[1];\n const priceMult = upgrade[2];\n const level = corporation.upgrades[upgrade[0]];\n const cost = baseCost * Math.pow(priceMult, level);\n if (corporation.funds < cost) {\n throw new Error(\"Insufficient funds\");\n } else {\n corporation.upgrade(upgrade);\n }\n}\n\nexport function IssueDividends(corporation: ICorporation, percent: number): void {\n if (isNaN(percent) || percent < 0 || percent > CorporationConstants.DividendMaxPercentage) {\n throw new Error(`Invalid value. Must be an integer between 0 and ${CorporationConstants.DividendMaxPercentage}`);\n }\n\n corporation.dividendPercentage = percent * 100;\n}\n\nexport function SellMaterial(mat: Material, amt: string, price: string): void {\n if (price === \"\") price = \"0\";\n if (amt === \"\") amt = \"0\";\n let cost = price.replace(/\\s+/g, \"\");\n cost = cost.replace(/[^-()\\d/*+.MPe]/g, \"\"); //Sanitize cost\n let temp = cost.replace(/MP/g, mat.bCost + \"\");\n try {\n temp = eval(temp);\n } catch (e) {\n throw new Error(\"Invalid value or expression for sell price field: \" + e);\n }\n\n if (temp == null || isNaN(parseFloat(temp)) || parseFloat(temp) < 0) {\n throw new Error(\"Invalid value or expression for sell price field\");\n }\n\n if (cost.includes(\"MP\")) {\n mat.sCost = cost; //Dynamically evaluated\n } else {\n mat.sCost = temp;\n }\n\n //Parse quantity\n amt = amt.toUpperCase();\n if (amt.includes(\"MAX\") || amt.includes(\"PROD\")) {\n let q = amt.replace(/\\s+/g, \"\");\n q = q.replace(/[^-()\\d/*+.MAXPROD]/g, \"\");\n let tempQty = q.replace(/MAX/g, mat.maxsll.toString());\n tempQty = tempQty.replace(/PROD/g, mat.prd.toString());\n try {\n tempQty = eval(tempQty);\n } catch (e) {\n throw new Error(\"Invalid value or expression for sell quantity field: \" + e);\n }\n\n if (tempQty == null || isNaN(parseFloat(tempQty)) || parseFloat(tempQty) < 0) {\n throw new Error(\"Invalid value or expression for sell quantity field\");\n }\n\n mat.sllman[0] = true;\n mat.sllman[1] = q; //Use sanitized input\n } else if (isNaN(parseFloat(amt)) || parseFloat(amt) < 0) {\n throw new Error(\"Invalid value for sell quantity field! Must be numeric or 'PROD' or 'MAX'\");\n } else {\n let q = parseFloat(amt);\n if (isNaN(q)) {\n q = 0;\n }\n if (q === 0) {\n mat.sllman[0] = false;\n mat.sllman[1] = 0;\n } else {\n mat.sllman[0] = true;\n mat.sllman[1] = q;\n }\n }\n}\n\nexport function SellProduct(product: Product, city: string, amt: string, price: string, all: boolean): void {\n //Parse price\n if (price.includes(\"MP\")) {\n //Dynamically evaluated quantity. First test to make sure its valid\n //Sanitize input, then replace dynamic variables with arbitrary numbers\n price = price.replace(/\\s+/g, \"\");\n price = price.replace(/[^-()\\d/*+.MP]/g, \"\");\n let temp = price.replace(/MP/g, \"1\");\n try {\n temp = eval(temp);\n } catch (e) {\n throw new Error(\"Invalid value or expression for sell price field: \" + e);\n }\n if (temp == null || isNaN(parseFloat(temp)) || parseFloat(temp) < 0) {\n throw new Error(\"Invalid value or expression for sell price field.\");\n }\n product.sCost = price; //Use sanitized price\n } else {\n const cost = parseFloat(price);\n if (isNaN(cost)) {\n throw new Error(\"Invalid value for sell price field\");\n }\n product.sCost = cost;\n }\n\n // Array of all cities. Used later\n const cities = Object.keys(Cities);\n\n // Parse quantity\n amt = amt.toUpperCase();\n if (amt.includes(\"MAX\") || amt.includes(\"PROD\")) {\n //Dynamically evaluated quantity. First test to make sure its valid\n let qty = amt.replace(/\\s+/g, \"\");\n qty = qty.replace(/[^-()\\d/*+.MAXPROD]/g, \"\");\n let temp = qty.replace(/MAX/g, product.maxsll.toString());\n temp = temp.replace(/PROD/g, product.data[city][1].toString());\n try {\n temp = eval(temp);\n } catch (e) {\n throw new Error(\"Invalid value or expression for sell quantity field: \" + e);\n }\n\n if (temp == null || isNaN(parseFloat(temp)) || parseFloat(temp) < 0) {\n throw new Error(\"Invalid value or expression for sell quantity field\");\n }\n if (all) {\n for (let i = 0; i < cities.length; ++i) {\n const tempCity = cities[i];\n product.sllman[tempCity][0] = true;\n product.sllman[tempCity][1] = qty; //Use sanitized input\n }\n } else {\n product.sllman[city][0] = true;\n product.sllman[city][1] = qty; //Use sanitized input\n }\n } else if (isNaN(parseFloat(amt)) || parseFloat(amt) < 0) {\n throw new Error(\"Invalid value for sell quantity field! Must be numeric or 'PROD' or 'MAX'\");\n } else {\n let qty = parseFloat(amt);\n if (isNaN(qty)) {\n qty = 0;\n }\n if (qty === 0) {\n if (all) {\n for (let i = 0; i < cities.length; ++i) {\n const tempCity = cities[i];\n product.sllman[tempCity][0] = false;\n product.sllman[tempCity][1] = \"\";\n }\n } else {\n product.sllman[city][0] = false;\n product.sllman[city][1] = \"\";\n }\n } else if (all) {\n for (let i = 0; i < cities.length; ++i) {\n const tempCity = cities[i];\n product.sllman[tempCity][0] = true;\n product.sllman[tempCity][1] = qty;\n }\n } else {\n product.sllman[city][0] = true;\n product.sllman[city][1] = qty;\n }\n }\n}\n\nexport function SetSmartSupply(warehouse: Warehouse, smartSupply: boolean): void {\n warehouse.smartSupplyEnabled = smartSupply;\n}\n\nexport function SetSmartSupplyUseLeftovers(warehouse: Warehouse, material: Material, useLeftover: boolean): void {\n if (!Object.keys(warehouse.smartSupplyUseLeftovers).includes(material.name.replace(/ /g, \"\")))\n throw new Error(`Invalid material '${material.name}'`);\n warehouse.smartSupplyUseLeftovers[material.name.replace(/ /g, \"\")] = useLeftover;\n}\n\nexport function BuyMaterial(material: Material, amt: number): void {\n if (isNaN(amt) || amt < 0) {\n throw new Error(`Invalid amount '${amt}' to buy material '${material.name}'`);\n }\n material.buy = amt;\n}\n\nexport function BulkPurchase(corp: ICorporation, warehouse: Warehouse, material: Material, amt: number): void {\n const matSize = MaterialSizes[material.name];\n const maxAmount = (warehouse.size - warehouse.sizeUsed) / matSize;\n if (isNaN(amt) || amt < 0) {\n throw new Error(`Invalid input amount`);\n }\n if (amt * matSize <= maxAmount) {\n throw new Error(`You do not have enough warehouse size to fit this purchase`);\n }\n const cost = amt * material.bCost;\n if (corp.funds >= cost) {\n corp.funds = corp.funds - cost;\n material.qty += amt;\n } else {\n throw new Error(`You cannot afford this purchase.`);\n }\n}\n\nexport function SellShares(corporation: ICorporation, player: IPlayer, numShares: number): number {\n if (isNaN(numShares)) throw new Error(\"Invalid value for number of shares\");\n if (numShares < 0) throw new Error(\"Invalid value for number of shares\");\n if (numShares > corporation.numShares) throw new Error(\"You don't have that many shares to sell!\");\n if (!corporation.public) throw new Error(\"You haven't gone public!\");\n if (corporation.shareSaleCooldown) throw new Error(\"Share sale on cooldown!\");\n const stockSaleResults = corporation.calculateShareSale(numShares);\n const profit = stockSaleResults[0];\n const newSharePrice = stockSaleResults[1];\n const newSharesUntilUpdate = stockSaleResults[2];\n\n corporation.numShares -= numShares;\n corporation.issuedShares += numShares;\n corporation.sharePrice = newSharePrice;\n corporation.shareSalesUntilPriceUpdate = newSharesUntilUpdate;\n corporation.shareSaleCooldown = CorporationConstants.SellSharesCooldown;\n player.gainMoney(profit, \"corporation\");\n return profit;\n}\n\nexport function BuyBackShares(corporation: ICorporation, player: IPlayer, numShares: number): boolean {\n if (isNaN(numShares)) throw new Error(\"Invalid value for number of shares\");\n if (numShares < 0) throw new Error(\"Invalid value for number of shares\");\n if (numShares > corporation.issuedShares) throw new Error(\"You don't have that many shares to buy!\");\n if (!corporation.public) throw new Error(\"You haven't gone public!\");\n const buybackPrice = corporation.sharePrice * 1.1;\n if (player.money < numShares * buybackPrice) throw new Error(\"You cant afford that many shares!\");\n corporation.numShares += numShares;\n corporation.issuedShares -= numShares;\n player.loseMoney(numShares * buybackPrice, \"corporation\");\n return true;\n}\n\nexport function AssignJob(employee: Employee, job: string): void {\n if (!Object.values(EmployeePositions).includes(job)) throw new Error(`'${job}' is not a valid job.`);\n employee.pos = job;\n}\n\nexport function UpgradeOfficeSize(corp: ICorporation, office: OfficeSpace, size: number): void {\n const initialPriceMult = Math.round(office.size / CorporationConstants.OfficeInitialSize);\n const costMultiplier = 1.09;\n // Calculate cost to upgrade size by 15 employees\n let mult = 0;\n for (let i = 0; i < size / CorporationConstants.OfficeInitialSize; ++i) {\n mult += Math.pow(costMultiplier, initialPriceMult + i);\n }\n const cost = CorporationConstants.OfficeInitialCost * mult;\n if (corp.funds < cost) return;\n office.size += size;\n corp.funds = corp.funds - cost;\n}\n\nexport function ThrowParty(corp: ICorporation, office: OfficeSpace, costPerEmployee: number): number {\n const totalCost = costPerEmployee * office.employees.length;\n if (corp.funds < totalCost) return 0;\n corp.funds = corp.funds - totalCost;\n let mult = 0;\n for (let i = 0; i < office.employees.length; ++i) {\n mult = office.employees[i].throwParty(costPerEmployee);\n }\n\n return mult;\n}\n\nexport function PurchaseWarehouse(corp: ICorporation, division: IIndustry, city: string): void {\n if (corp.funds < CorporationConstants.WarehouseInitialCost) return;\n if (division.warehouses[city] instanceof Warehouse) return;\n division.warehouses[city] = new Warehouse({\n corp: corp,\n industry: division,\n loc: city,\n size: CorporationConstants.WarehouseInitialSize,\n });\n corp.funds = corp.funds - CorporationConstants.WarehouseInitialCost;\n}\n\nexport function UpgradeWarehouse(corp: ICorporation, division: IIndustry, warehouse: Warehouse): void {\n const sizeUpgradeCost = CorporationConstants.WarehouseUpgradeBaseCost * Math.pow(1.07, warehouse.level + 1);\n if (corp.funds < sizeUpgradeCost) return;\n ++warehouse.level;\n warehouse.updateSize(corp, division);\n corp.funds = corp.funds - sizeUpgradeCost;\n}\n\nexport function BuyCoffee(corp: ICorporation, division: IIndustry, office: OfficeSpace): void {\n const upgrade = IndustryUpgrades[0];\n const cost = office.employees.length * upgrade[1];\n if (corp.funds < cost) return;\n corp.funds = corp.funds - cost;\n division.upgrade(upgrade, {\n corporation: corp,\n office: office,\n });\n}\n\nexport function HireAdVert(corp: ICorporation, division: IIndustry, office: OfficeSpace): void {\n const upgrade = IndustryUpgrades[1];\n const cost = upgrade[1] * Math.pow(upgrade[2], division.upgrades[1]);\n if (corp.funds < cost) return;\n corp.funds = corp.funds - cost;\n division.upgrade(upgrade, {\n corporation: corp,\n office: office,\n });\n}\n\nexport function MakeProduct(\n corp: ICorporation,\n division: IIndustry,\n city: string,\n productName: string,\n designInvest: number,\n marketingInvest: number,\n): void {\n if (designInvest < 0) {\n designInvest = 0;\n }\n if (marketingInvest < 0) {\n marketingInvest = 0;\n }\n if (productName == null || productName === \"\") {\n throw new Error(\"You must specify a name for your product!\");\n }\n if (!division.makesProducts) {\n throw new Error(\"You cannot create products for this industry!\");\n }\n if (isNaN(designInvest)) {\n throw new Error(\"Invalid value for design investment\");\n }\n if (isNaN(marketingInvest)) {\n throw new Error(\"Invalid value for marketing investment\");\n }\n if (corp.funds < designInvest + marketingInvest) {\n throw new Error(\"You don't have enough company funds to make this large of an investment\");\n }\n let maxProducts = 3;\n if (division.hasResearch(\"uPgrade: Capacity.II\")) {\n maxProducts = 5;\n } else if (division.hasResearch(\"uPgrade: Capacity.I\")) {\n maxProducts = 4;\n }\n const products = division.products;\n if (Object.keys(products).length >= maxProducts) {\n throw new Error(`You are already at the max products (${maxProducts}) for division: ${division.name}!`);\n }\n\n const product = new Product({\n name: productName.replace(/[<>]/g, \"\"), //Sanitize for HTMl elements\n createCity: city,\n designCost: designInvest,\n advCost: marketingInvest,\n });\n if (products[product.name] instanceof Product) {\n throw new Error(`You already have a product with this name!`);\n }\n\n corp.funds = corp.funds - (designInvest + marketingInvest);\n products[product.name] = product;\n}\n\nexport function Research(division: IIndustry, researchName: string): void {\n const researchTree = IndustryResearchTrees[division.type];\n if (researchTree === undefined) throw new Error(`No research tree for industry '${division.type}'`);\n const allResearch = researchTree.getAllNodes();\n if (!allResearch.includes(researchName)) throw new Error(`No research named '${researchName}'`);\n const research = ResearchMap[researchName];\n\n if (division.sciResearch.qty < research.cost)\n throw new Error(`You do not have enough Scientific Research for ${research.name}`);\n division.sciResearch.qty -= research.cost;\n\n // Get the Node from the Research Tree and set its 'researched' property\n researchTree.research(researchName);\n division.researched[researchName] = true;\n}\n\nexport function ExportMaterial(\n divisionName: string,\n cityName: string,\n material: Material,\n amt: string,\n division?: Industry,\n): void {\n // Sanitize amt\n let sanitizedAmt = amt.replace(/\\s+/g, \"\").toUpperCase();\n sanitizedAmt = sanitizedAmt.replace(/[^-()\\d/*+.MAX]/g, \"\");\n let temp = sanitizedAmt.replace(/MAX/g, \"1\");\n try {\n temp = eval(temp);\n } catch (e) {\n throw new Error(\"Invalid expression entered for export amount: \" + e);\n }\n\n const n = parseFloat(temp);\n\n if (n == null || isNaN(n) || n < 0) {\n throw new Error(\"Invalid amount entered for export\");\n }\n\n if (!division || !isRelevantMaterial(material.name, division)) {\n throw new Error(`You cannot export material: ${material.name} to division: ${divisionName}!`);\n }\n\n const exportObj = { ind: divisionName, city: cityName, amt: sanitizedAmt };\n material.exp.push(exportObj);\n}\n\nexport function CancelExportMaterial(divisionName: string, cityName: string, material: Material, amt: string): void {\n for (let i = 0; i < material.exp.length; ++i) {\n if (material.exp[i].ind !== divisionName || material.exp[i].city !== cityName || material.exp[i].amt !== amt)\n continue;\n material.exp.splice(i, 1);\n break;\n }\n}\n\nexport function LimitProductProduction(product: Product, cityName: string, qty: number): void {\n if (qty < 0 || isNaN(qty)) {\n product.prdman[cityName][0] = false;\n } else {\n product.prdman[cityName][0] = true;\n product.prdman[cityName][1] = qty;\n }\n}\n\nexport function SetMaterialMarketTA1(material: Material, on: boolean): void {\n material.marketTa1 = on;\n}\n\nexport function SetMaterialMarketTA2(material: Material, on: boolean): void {\n material.marketTa2 = on;\n}\n\nexport function SetProductMarketTA1(product: Product, on: boolean): void {\n product.marketTa1 = on;\n}\n\nexport function SetProductMarketTA2(product: Product, on: boolean): void {\n product.marketTa2 = on;\n}\n","export enum FragmentType {\n // Special fragments for the UI\n None,\n Delete,\n\n // Stats boosting fragments\n HackingChance,\n HackingSpeed,\n HackingMoney,\n HackingGrow,\n Hacking,\n Strength,\n Defense,\n Dexterity,\n Agility,\n Charisma,\n HacknetMoney,\n HacknetCost,\n Rep,\n WorkMoney,\n Crime,\n Bladeburner,\n\n // utility fragments.\n Booster,\n}\n\nexport function Effect(tpe: FragmentType): string {\n switch (tpe) {\n case FragmentType.HackingChance: {\n return \"+x% hack() success chance\";\n }\n case FragmentType.HackingSpeed: {\n return \"+x% faster hack(), grow(), and weaken()\";\n }\n case FragmentType.HackingMoney: {\n return \"+x% hack() power\";\n }\n case FragmentType.HackingGrow: {\n return \"+x% grow() power\";\n }\n case FragmentType.Hacking: {\n return \"+x% hacking skill\";\n }\n case FragmentType.Strength: {\n return \"+x% strength skill\";\n }\n case FragmentType.Defense: {\n return \"+x% defense skill\";\n }\n case FragmentType.Dexterity: {\n return \"+x% dexterity skill\";\n }\n case FragmentType.Agility: {\n return \"+x% agility skill\";\n }\n case FragmentType.Charisma: {\n return \"+x% charisma skill\";\n }\n case FragmentType.HacknetMoney: {\n return \"+x% hacknet production\";\n }\n case FragmentType.HacknetCost: {\n return \"-x% cheaper hacknet cost\";\n }\n case FragmentType.Rep: {\n return \"+x% reputation from factions and companies\";\n }\n case FragmentType.WorkMoney: {\n return \"+x% work money\";\n }\n case FragmentType.Crime: {\n return \"+x% crime money\";\n }\n case FragmentType.Bladeburner: {\n return \"+x% all bladeburner stats\";\n }\n }\n throw new Error(\"Calling effect for fragment type that doesn't have an effect \" + tpe);\n}\n","export enum PositionTypes {\n Long = \"L\",\n Short = \"S\",\n}\n","/**\n * Enum for different types of tasks that a Sleeve can perform\n */\nexport enum SleeveTaskType {\n // Same Order as selectable order in UI\n Idle,\n Company,\n Faction,\n Crime,\n Class,\n Gym,\n Recovery,\n Synchro,\n}\n","import { FactionNames } from \"../Faction/data/FactionNames\";\nimport { Reviver } from \"../utils/JSONReviver\";\n\ninterface GangTerritory {\n power: number;\n territory: number;\n}\n\nexport let AllGangs: {\n [key: string]: GangTerritory;\n} = {\n [FactionNames.SlumSnakes]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.Tetrads]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.TheSyndicate]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.TheDarkArmy]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.SpeakersForTheDead]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.NiteSec]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.TheBlackHand]: {\n power: 1,\n territory: 1 / 7,\n },\n};\n\nexport function resetGangs(): void {\n AllGangs = {\n [FactionNames.SlumSnakes]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.Tetrads]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.TheSyndicate]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.TheDarkArmy]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.SpeakersForTheDead]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.NiteSec]: {\n power: 1,\n territory: 1 / 7,\n },\n [FactionNames.TheBlackHand]: {\n power: 1,\n territory: 1 / 7,\n },\n };\n}\n\nexport function loadAllGangs(saveString: string): void {\n AllGangs = JSON.parse(saveString, Reviver);\n}\n","// Contains an array containing information about the player's source files\n// Array[n] returns what level the player has of Source-File N.\n\nimport { CONSTANTS } from \"../Constants\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\n\nexport const SourceFileFlags: number[] = Array(CONSTANTS.TotalNumBitNodes + 1); // Skip index 0\n\nexport function updateSourceFileFlags(p: IPlayer): void {\n for (let i = 0; i < SourceFileFlags.length; ++i) {\n SourceFileFlags[i] = 0;\n }\n\n for (let i = 0; i < p.sourceFiles.length; ++i) {\n const sf = p.sourceFiles[i];\n SourceFileFlags[sf.n] = sf.lvl;\n }\n}\n","/**\n * Helper functions that implement \"directory\" functionality in the Terminal.\n * These aren't \"real\" directories, it's more of a pseudo-directory implementation\n * that uses mainly string manipulation.\n *\n * This file contains functions that deal only with that string manipulation.\n * Functions that need to access/process Server-related things can be\n * found in ./DirectoryServerHelpers.ts\n */\n\n/**\n * Removes leading forward slash (\"/\") from a string.\n */\nexport function removeLeadingSlash(s: string): string {\n if (s.startsWith(\"/\")) {\n return s.slice(1);\n }\n\n return s;\n}\n\n/**\n * Removes trailing forward slash (\"/\") from a string.\n * Note that this will also remove the slash if it is the leading slash (i.e. if s = \"/\")\n */\nexport function removeTrailingSlash(s: string): string {\n if (s.endsWith(\"/\")) {\n return s.slice(0, -1);\n }\n\n return s;\n}\n\n/**\n * Checks whether a string is a valid filename. Only used for the filename itself,\n * not the entire filepath\n */\nexport function isValidFilename(filename: string): boolean {\n // Allows alphanumerics, hyphens, underscores, and percentage signs\n // Must have a file extension\n const regex = /^[.a-zA-Z0-9_-]+[.][a-zA-Z0-9]+(?:-\\d+(?:\\.\\d*)?%-INC)?$/;\n\n // match() returns null if no match is found\n return filename.match(regex) != null;\n}\n\n/**\n * Checks whether a string is a valid directory name. Only used for the directory itself,\n * not an entire path\n */\nexport function isValidDirectoryName(name: string): boolean {\n // Allows alphanumerics, hyphens, underscores, and percentage signs.\n // Name can begin with a single period, but otherwise cannot have any\n const regex = /^.?[a-zA-Z0-9_-]+$/;\n\n // match() returns null if no match is found\n return name.match(regex) != null;\n}\n\n/**\n * Checks whether a string is a valid directory path.\n * This only checks if it has the proper formatting. It does NOT check\n * if the directories actually exist on Terminal\n */\nexport function isValidDirectoryPath(path: string): boolean {\n let t_path: string = path;\n\n if (t_path.length === 0) {\n return false;\n }\n if (t_path.length === 1) {\n return t_path === \"/\";\n }\n\n // A full path must have a leading slash, but we'll ignore it for the checks\n if (t_path.startsWith(\"/\")) {\n t_path = t_path.slice(1);\n } else {\n return false;\n }\n\n // Trailing slash does not matter\n t_path = removeTrailingSlash(t_path);\n\n // Check that every section of the path is a valid directory name\n const dirs = t_path.split(\"/\");\n for (const dir of dirs) {\n // Special case, \".\" and \"..\" are valid for path\n if (dir === \".\" || dir === \"..\") {\n continue;\n }\n if (!isValidDirectoryName(dir)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Checks whether a string is a valid file path. This only checks if it has the\n * proper formatting. It dose NOT check if the file actually exists on Terminal\n */\nexport function isValidFilePath(path: string): boolean {\n if (path == null || typeof path !== \"string\") {\n return false;\n }\n const t_path = path;\n\n // Impossible for filename to have less than length of 3\n if (t_path.length < 3) {\n return false;\n }\n\n // Full filepath can't end with trailing slash because it must be a file\n if (t_path.endsWith(\"/\")) {\n return false;\n }\n\n // Everything after the last forward slash is the filename. Everything before\n // it is the file path\n const fnSeparator = t_path.lastIndexOf(\"/\");\n if (fnSeparator === -1) {\n return isValidFilename(t_path);\n }\n\n const fn = t_path.slice(fnSeparator + 1);\n const dirPath = t_path.slice(0, fnSeparator + 1);\n\n return isValidDirectoryPath(dirPath) && isValidFilename(fn);\n}\n\n/**\n * Returns a formatted string for the first parent directory in a filepath. For example:\n * /home/var/test/ -> home/\n * If there is no first parent directory, then it returns \"/\" for root\n */\nexport function getFirstParentDirectory(path: string): string {\n let t_path = path;\n t_path = removeLeadingSlash(t_path);\n t_path = removeTrailingSlash(t_path);\n\n if (t_path.lastIndexOf(\"/\") === -1) {\n return \"/\";\n }\n\n const dirs = t_path.split(\"/\");\n if (dirs.length === 0) {\n return \"/\";\n }\n\n return dirs[0] + \"/\";\n}\n\n/**\n * Given a filepath, returns a formatted string for all of the parent directories\n * in that filepath. For example:\n * /home/var/tes -> home/var/\n * /home/var/test/ -> home/var/test/\n * If there are no parent directories, it returns the empty string\n */\nexport function getAllParentDirectories(path: string): string {\n const t_path = path;\n const lastSlash = t_path.lastIndexOf(\"/\");\n if (lastSlash === -1) {\n return \"\";\n }\n\n return t_path.slice(0, lastSlash + 1);\n}\n\n/**\n * Given a destination that only contains a directory part, returns the\n * path to the source filename inside the new destination directory.\n * Otherwise, returns the path to the destination file.\n * @param destination The destination path or file name\n * @param source The source path\n * @param cwd The current working directory\n * @returns A file path which may be absolute or relative\n */\nexport function getDestinationFilepath(destination: string, source: string, cwd: string): string {\n const dstDir = evaluateDirectoryPath(destination, cwd);\n // If evaluating the directory for this destination fails, we have a filename or full path.\n if (dstDir === null) {\n return destination;\n } else {\n // Append the filename to the directory provided.\n const t_path = removeTrailingSlash(dstDir);\n const fileName = getFileName(source);\n return t_path + \"/\" + fileName;\n }\n}\n\n/**\n * Given a filepath, returns the file name (e.g. without directory parts)\n * For example:\n * /home/var/test.js -> test.js\n * ./var/test.js -> test.js\n * test.js -> test.js\n */\nexport function getFileName(path: string): string {\n const t_path = path;\n const lastSlash = t_path.lastIndexOf(\"/\");\n if (lastSlash === -1) {\n return t_path;\n }\n\n return t_path.slice(lastSlash + 1);\n}\n\n/**\n * Checks if a file path refers to a file in the root directory.\n */\nexport function isInRootDirectory(path: string): boolean {\n if (!isValidFilePath(path)) {\n return false;\n }\n if (path == null || path.length === 0) {\n return false;\n }\n\n return path.lastIndexOf(\"/\") <= 0;\n}\n\n/**\n * Evaluates a directory path, including the processing of linux dots.\n * Returns the full, proper path, or null if an invalid path is passed in\n */\nexport function evaluateDirectoryPath(path: string, currPath?: string): string | null {\n let t_path = path;\n\n // If the path begins with a slash, then its an absolute path. Otherwise its relative\n // For relative paths, we need to prepend the current directory\n if (!t_path.startsWith(\"/\") && currPath != null) {\n t_path = currPath + (currPath.endsWith(\"/\") ? \"\" : \"/\") + t_path;\n }\n\n if (!isValidDirectoryPath(t_path)) {\n return null;\n }\n\n // Trim leading/trailing slashes\n t_path = removeLeadingSlash(t_path);\n t_path = removeTrailingSlash(t_path);\n\n const dirs = t_path.split(\"/\");\n const reconstructedPath: string[] = [];\n\n for (const dir of dirs) {\n if (dir === \".\") {\n // Current directory, do nothing\n continue;\n } else if (dir === \"..\") {\n // Parent directory\n const res = reconstructedPath.pop();\n if (res == null) {\n return null; // Array was empty, invalid path\n }\n } else {\n reconstructedPath.push(dir);\n }\n }\n\n return \"/\" + reconstructedPath.join(\"/\");\n}\n\n/**\n * Evaluates a file path, including the processing of linux dots.\n * Returns the full, proper path, or null if an invalid path is passed in\n */\nexport function evaluateFilePath(path: string, currPath?: string): string | null {\n let t_path = path;\n\n // If the path begins with a slash, then its an absolute path. Otherwise its relative\n // For relative paths, we need to prepend the current directory\n if (!t_path.startsWith(\"/\") && currPath != null) {\n t_path = currPath + (currPath.endsWith(\"/\") ? \"\" : \"/\") + t_path;\n }\n\n if (!isValidFilePath(t_path)) {\n return null;\n }\n\n // Trim leading/trailing slashes\n t_path = removeLeadingSlash(t_path);\n\n const dirs = t_path.split(\"/\");\n const reconstructedPath: string[] = [];\n\n for (const dir of dirs) {\n if (dir === \".\") {\n // Current directory, do nothing\n continue;\n } else if (dir === \"..\") {\n // Parent directory\n const res = reconstructedPath.pop();\n if (res == null) {\n return null; // Array was empty, invalid path\n }\n } else {\n reconstructedPath.push(dir);\n }\n }\n\n return \"/\" + reconstructedPath.join(\"/\");\n}\n\nexport function areFilesEqual(f0: string, f1: string): boolean {\n if (!f0.startsWith(\"/\")) f0 = \"/\" + f0;\n if (!f1.startsWith(\"/\")) f1 = \"/\" + f1;\n return f0 === f1;\n}\n\nexport function areImportsEquals(f0: string, f1: string): boolean {\n if (!f0.endsWith(\".ns\") && !f0.endsWith(\".js\")) f0 = f0 + \".js\";\n if (!f1.endsWith(\".ns\") && !f1.endsWith(\".js\")) f1 = f1 + \".js\";\n return areFilesEqual(f0, f1);\n}\n","import { Crime } from \"./Crime\";\n\nimport { CONSTANTS } from \"../Constants\";\nimport { IMap } from \"../types\";\n\nexport const Crimes: IMap = {\n Shoplift: new Crime(\"Shoplift\", CONSTANTS.CrimeShoplift, 2e3, 15e3, 1 / 20, 0.1, {\n dexterity_success_weight: 1,\n agility_success_weight: 1,\n\n dexterity_exp: 2,\n agility_exp: 2,\n }),\n\n RobStore: new Crime(\"Rob Store\", CONSTANTS.CrimeRobStore, 60e3, 400e3, 1 / 5, 0.5, {\n hacking_exp: 30,\n dexterity_exp: 45,\n agility_exp: 45,\n\n hacking_success_weight: 0.5,\n dexterity_success_weight: 2,\n agility_success_weight: 1,\n\n intelligence_exp: 7.5 * CONSTANTS.IntelligenceCrimeBaseExpGain,\n }),\n\n Mug: new Crime(\"Mug\", CONSTANTS.CrimeMug, 4e3, 36e3, 1 / 5, 0.25, {\n strength_exp: 3,\n defense_exp: 3,\n dexterity_exp: 3,\n agility_exp: 3,\n\n strength_success_weight: 1.5,\n defense_success_weight: 0.5,\n dexterity_success_weight: 1.5,\n agility_success_weight: 0.5,\n }),\n\n Larceny: new Crime(\"Larceny\", CONSTANTS.CrimeLarceny, 90e3, 800e3, 1 / 3, 1.5, {\n hacking_exp: 45,\n dexterity_exp: 60,\n agility_exp: 60,\n\n hacking_success_weight: 0.5,\n dexterity_success_weight: 1,\n agility_success_weight: 1,\n\n intelligence_exp: 15 * CONSTANTS.IntelligenceCrimeBaseExpGain,\n }),\n\n DealDrugs: new Crime(\"Deal Drugs\", CONSTANTS.CrimeDrugs, 10e3, 120e3, 1, 0.5, {\n dexterity_exp: 5,\n agility_exp: 5,\n charisma_exp: 10,\n\n charisma_success_weight: 3,\n dexterity_success_weight: 2,\n agility_success_weight: 1,\n }),\n\n BondForgery: new Crime(\"Bond Forgery\", CONSTANTS.CrimeBondForgery, 300e3, 4.5e6, 1 / 2, 0.1, {\n hacking_exp: 100,\n dexterity_exp: 150,\n charisma_exp: 15,\n\n hacking_success_weight: 0.05,\n dexterity_success_weight: 1.25,\n\n intelligence_exp: 60 * CONSTANTS.IntelligenceCrimeBaseExpGain,\n }),\n\n TraffickArms: new Crime(\"Traffick Arms\", CONSTANTS.CrimeTraffickArms, 40e3, 600e3, 2, 1, {\n strength_exp: 20,\n defense_exp: 20,\n dexterity_exp: 20,\n agility_exp: 20,\n charisma_exp: 40,\n\n charisma_success_weight: 1,\n strength_success_weight: 1,\n defense_success_weight: 1,\n dexterity_success_weight: 1,\n agility_success_weight: 1,\n }),\n\n Homicide: new Crime(\"Homicide\", CONSTANTS.CrimeHomicide, 3e3, 45e3, 1, 3, {\n strength_exp: 2,\n defense_exp: 2,\n dexterity_exp: 2,\n agility_exp: 2,\n\n strength_success_weight: 2,\n defense_success_weight: 2,\n dexterity_success_weight: 0.5,\n agility_success_weight: 0.5,\n\n kills: 1,\n }),\n\n GrandTheftAuto: new Crime(\"Grand Theft Auto\", CONSTANTS.CrimeGrandTheftAuto, 80e3, 1.6e6, 8, 5, {\n strength_exp: 20,\n defense_exp: 20,\n dexterity_exp: 20,\n agility_exp: 80,\n charisma_exp: 40,\n\n hacking_success_weight: 1,\n strength_success_weight: 1,\n dexterity_success_weight: 4,\n agility_success_weight: 2,\n charisma_success_weight: 2,\n\n intelligence_exp: 16 * CONSTANTS.IntelligenceCrimeBaseExpGain,\n }),\n\n Kidnap: new Crime(\"Kidnap\", CONSTANTS.CrimeKidnap, 120e3, 3.6e6, 5, 6, {\n strength_exp: 80,\n defense_exp: 80,\n dexterity_exp: 80,\n agility_exp: 80,\n charisma_exp: 80,\n\n charisma_success_weight: 1,\n strength_success_weight: 1,\n dexterity_success_weight: 1,\n agility_success_weight: 1,\n\n intelligence_exp: 26 * CONSTANTS.IntelligenceCrimeBaseExpGain,\n }),\n\n Assassination: new Crime(\"Assassination\", CONSTANTS.CrimeAssassination, 300e3, 12e6, 8, 10, {\n strength_exp: 300,\n defense_exp: 300,\n dexterity_exp: 300,\n agility_exp: 300,\n\n strength_success_weight: 1,\n dexterity_success_weight: 2,\n agility_success_weight: 1,\n\n intelligence_exp: 65 * CONSTANTS.IntelligenceCrimeBaseExpGain,\n\n kills: 1,\n }),\n\n Heist: new Crime(\"Heist\", CONSTANTS.CrimeHeist, 600e3, 120e6, 18, 15, {\n hacking_exp: 450,\n strength_exp: 450,\n defense_exp: 450,\n dexterity_exp: 450,\n agility_exp: 450,\n charisma_exp: 450,\n\n hacking_success_weight: 1,\n strength_success_weight: 1,\n defense_success_weight: 1,\n dexterity_success_weight: 1,\n agility_success_weight: 1,\n charisma_success_weight: 1,\n\n intelligence_exp: 130 * CONSTANTS.IntelligenceCrimeBaseExpGain,\n }),\n};\n","import * as React from \"react\";\n\nexport function trusted(f: () => void): (event: React.MouseEvent) => any {\n return function (event: React.MouseEvent): any {\n if (!event.isTrusted) return;\n f();\n };\n}\n","import { Terminal as TTerminal } from \"./Terminal/Terminal\";\n\nexport const Terminal = new TTerminal();\n","/**\n * Hacknet Servers - Reworked Hacknet Node mechanic for BitNode-9\n */\nimport { CONSTANTS } from \"../Constants\";\n\nimport { IHacknetNode } from \"./IHacknetNode\";\n\nimport { BaseServer } from \"../Server/BaseServer\";\nimport { RunningScript } from \"../Script/RunningScript\";\nimport { HacknetServerConstants } from \"./data/Constants\";\nimport {\n calculateHashGainRate,\n calculateLevelUpgradeCost,\n calculateRamUpgradeCost,\n calculateCoreUpgradeCost,\n calculateCacheUpgradeCost,\n} from \"./formulas/HacknetServers\";\n\nimport { createRandomIp } from \"../utils/IPAddress\";\n\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\n\ninterface IConstructorParams {\n adminRights?: boolean;\n hostname: string;\n ip?: string;\n isConnectedTo?: boolean;\n maxRam?: number;\n organizationName?: string;\n}\n\nexport class HacknetServer extends BaseServer implements IHacknetNode {\n // Cache level. Affects hash Capacity\n cache = 1;\n\n // Number of cores. Improves hash production\n cores = 1;\n\n // Number of hashes that can be stored by this Hacknet Server\n hashCapacity = 0;\n\n // Hashes produced per second\n hashRate = 0;\n\n // Similar to Node level. Improves hash production\n level = 1;\n\n // How long this HacknetServer has existed, in seconds\n onlineTimeSeconds = 0;\n\n // Total number of hashes earned by this server\n totalHashesGenerated = 0;\n\n // Flag indicating wehther this is a purchased server\n purchasedByPlayer = true;\n\n constructor(params: IConstructorParams = { hostname: \"\", ip: createRandomIp() }) {\n super(params);\n\n this.maxRam = 1;\n this.updateHashCapacity();\n }\n\n calculateCacheUpgradeCost(levels: number): number {\n return calculateCacheUpgradeCost(this.cache, levels);\n }\n\n calculateCoreUpgradeCost(levels: number, costMult: number): number {\n return calculateCoreUpgradeCost(this.cores, levels, costMult);\n }\n\n calculateLevelUpgradeCost(levels: number, costMult: number): number {\n return calculateLevelUpgradeCost(this.level, levels, costMult);\n }\n\n calculateRamUpgradeCost(levels: number, costMult: number): number {\n return calculateRamUpgradeCost(this.maxRam, levels, costMult);\n }\n\n // Process this Hacknet Server in the game loop. Returns the number of hashes generated\n process(numCycles = 1): number {\n const seconds = (numCycles * CONSTANTS.MilliPerCycle) / 1000;\n this.onlineTimeSeconds += seconds;\n\n const hashes = this.hashRate * seconds;\n this.totalHashesGenerated += hashes;\n\n return hashes;\n }\n\n upgradeCache(levels: number): void {\n this.cache = Math.min(HacknetServerConstants.MaxCache, Math.round(this.cache + levels));\n this.updateHashCapacity();\n }\n\n upgradeCore(levels: number, prodMult: number): void {\n this.cores = Math.min(HacknetServerConstants.MaxCores, Math.round(this.cores + levels));\n this.updateHashRate(prodMult);\n this.cpuCores = this.cores;\n }\n\n upgradeLevel(levels: number, prodMult: number): void {\n this.level = Math.min(HacknetServerConstants.MaxLevel, Math.round(this.level + levels));\n this.updateHashRate(prodMult);\n }\n\n upgradeRam(levels: number, prodMult: number): boolean {\n for (let i = 0; i < levels; ++i) {\n this.maxRam *= 2;\n }\n this.maxRam = Math.min(HacknetServerConstants.MaxRam, Math.round(this.maxRam));\n this.updateHashRate(prodMult);\n\n return true;\n }\n\n // Whenever a script is run, we must update this server's hash rate\n runScript(script: RunningScript, prodMult?: number): void {\n super.runScript(script);\n if (prodMult != null && typeof prodMult === \"number\") {\n this.updateHashRate(prodMult);\n }\n }\n\n updateRamUsed(ram: number, player: IPlayer): void {\n super.updateRamUsed(ram, player);\n this.updateHashRate(player.hacknet_node_money_mult);\n }\n\n updateHashCapacity(): void {\n this.hashCapacity = 32 * Math.pow(2, this.cache);\n }\n\n updateHashRate(prodMult: number): void {\n this.hashRate = calculateHashGainRate(this.level, this.ramUsed, this.maxRam, this.cores, prodMult);\n\n if (isNaN(this.hashRate)) {\n this.hashRate = 0;\n console.error(\n `Error calculating Hacknet Server hash production. This is a bug. Please report to game dev`,\n false,\n );\n }\n }\n\n // Serialize the current object to a JSON save state\n toJSON(): any {\n return Generic_toJSON(\"HacknetServer\", this);\n }\n\n // Initializes a HacknetServer Object from a JSON save state\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): HacknetServer {\n return Generic_fromJSON(HacknetServer, value.data);\n }\n}\n\nReviver.constructors.HacknetServer = HacknetServer;\n","// Constructs all CompanyPosition objects using the metadata in data/companypositions.ts\nimport { companyPositionMetadata } from \"./data/CompanyPositionsMetadata\";\nimport { CompanyPosition, IConstructorParams } from \"./CompanyPosition\";\nimport { IMap } from \"../types\";\n\nexport const CompanyPositions: IMap = {};\n\nfunction addCompanyPosition(params: IConstructorParams): void {\n if (CompanyPositions[params.name] != null) {\n console.warn(`Duplicate Company Position being defined: ${params.name}`);\n }\n CompanyPositions[params.name] = new CompanyPosition(params);\n}\n\ncompanyPositionMetadata.forEach((e) => {\n addCompanyPosition(e);\n});\n","import React, { useState, useEffect } from \"react\";\n\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { IEngine } from \"../IEngine\";\nimport { ITerminal } from \"../Terminal/ITerminal\";\nimport { installAugmentations } from \"../Augmentation/AugmentationHelpers\";\nimport { saveObject } from \"../SaveObject\";\nimport { onExport } from \"../ExportBonus\";\nimport { LocationName } from \"../Locations/data/LocationNames\";\nimport { Location } from \"../Locations/Location\";\nimport { Locations } from \"../Locations/Locations\";\nimport { ITutorial, iTutorialStart } from \"../InteractiveTutorial\";\nimport { InteractiveTutorialRoot } from \"./InteractiveTutorial/InteractiveTutorialRoot\";\nimport { ITutorialEvents } from \"./InteractiveTutorial/ITutorialEvents\";\n\nimport { Faction } from \"../Faction/Faction\";\nimport { prestigeAugmentation } from \"../Prestige\";\nimport { dialogBoxCreate } from \"./React/DialogBox\";\nimport { GetAllServers } from \"../Server/AllServers\";\nimport { Factions } from \"../Faction/Factions\";\nimport { buyStock, sellStock, shortStock, sellShort } from \"../StockMarket/BuyingAndSelling\";\nimport {\n cancelOrder,\n eventEmitterForUiReset,\n initStockMarketFnForReact,\n placeOrder,\n StockMarket,\n} from \"../StockMarket/StockMarket\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\n\nimport { Page, IRouter, ScriptEditorRouteOptions } from \"./Router\";\nimport { Overview } from \"./React/Overview\";\nimport { SidebarRoot } from \"../Sidebar/ui/SidebarRoot\";\nimport { AugmentationsRoot } from \"../Augmentation/ui/AugmentationsRoot\";\nimport { DevMenuRoot } from \"../DevMenu\";\nimport { BladeburnerRoot } from \"../Bladeburner/ui/BladeburnerRoot\";\nimport { GangRoot } from \"../Gang/ui/GangRoot\";\nimport { CorporationRoot } from \"../Corporation/ui/CorporationRoot\";\nimport { InfiltrationRoot } from \"../Infiltration/ui/InfiltrationRoot\";\nimport { GraftingRoot } from \"../PersonObjects/Grafting/ui/GraftingRoot\";\nimport { WorkInProgressRoot } from \"./WorkInProgressRoot\";\nimport { GameOptionsRoot } from \"./React/GameOptionsRoot\";\nimport { SleeveRoot } from \"../PersonObjects/Sleeve/ui/SleeveRoot\";\nimport { HacknetRoot } from \"../Hacknet/ui/HacknetRoot\";\nimport { GenericLocation } from \"../Locations/ui/GenericLocation\";\nimport { LocationCity } from \"../Locations/ui/City\";\nimport { ProgramsRoot } from \"../Programs/ui/ProgramsRoot\";\nimport { Root as ScriptEditorRoot } from \"../ScriptEditor/ui/ScriptEditorRoot\";\nimport { MilestonesRoot } from \"../Milestones/ui/MilestonesRoot\";\nimport { TerminalRoot } from \"../Terminal/ui/TerminalRoot\";\nimport { TutorialRoot } from \"../Tutorial/ui/TutorialRoot\";\nimport { ActiveScriptsRoot } from \"./ActiveScripts/ActiveScriptsRoot\";\nimport { FactionsRoot } from \"../Faction/ui/FactionsRoot\";\nimport { FactionRoot } from \"../Faction/ui/FactionRoot\";\nimport { CharacterStats } from \"./CharacterStats\";\nimport { TravelAgencyRoot } from \"../Locations/ui/TravelAgencyRoot\";\nimport { StockMarketRoot } from \"../StockMarket/ui/StockMarketRoot\";\nimport { BitverseRoot } from \"../BitNode/ui/BitverseRoot\";\nimport { StaneksGiftRoot } from \"../CotMG/ui/StaneksGiftRoot\";\nimport { staneksGift } from \"../CotMG/Helper\";\nimport { CharacterOverview } from \"./React/CharacterOverview\";\nimport { BladeburnerCinematic } from \"../Bladeburner/ui/BladeburnerCinematic\";\nimport { workerScripts } from \"../Netscript/WorkerScripts\";\nimport { Unclickable } from \"../Exploits/Unclickable\";\nimport { Snackbar, SnackbarProvider } from \"./React/Snackbar\";\nimport { LogBoxManager } from \"./React/LogBoxManager\";\nimport { AlertManager } from \"./React/AlertManager\";\nimport { PromptManager } from \"./React/PromptManager\";\nimport { InvitationModal } from \"../Faction/ui/InvitationModal\";\nimport { calculateAchievements } from \"../Achievements/Achievements\";\n\nimport { enterBitNode } from \"../RedPill\";\nimport { Context } from \"./Context\";\nimport { RecoveryMode, RecoveryRoot } from \"./React/RecoveryRoot\";\nimport { AchievementsRoot } from \"../Achievements/AchievementsRoot\";\nimport { ErrorBoundary } from \"./ErrorBoundary\";\nimport { Settings } from \"../Settings/Settings\";\nimport { ThemeBrowser } from \"../Themes/ui/ThemeBrowser\";\nimport { ImportSaveRoot } from \"./React/ImportSaveRoot\";\nimport { BypassWrapper } from \"./React/BypassWrapper\";\n\nimport _wrap from \"lodash/wrap\";\nimport _functions from \"lodash/functions\";\nimport { Apr1 } from \"./Apr1\";\n\nconst htmlLocation = location;\n\ninterface IProps {\n terminal: ITerminal;\n player: IPlayer;\n engine: IEngine;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n \"-ms-overflow-style\": \"none\" /* for Internet Explorer, Edge */,\n \"scrollbar-width\": \"none\" /* for Firefox */,\n margin: theme.spacing(0),\n flexGrow: 1,\n display: \"block\",\n padding: \"8px\",\n minHeight: \"100vh\",\n boxSizing: \"border-box\",\n },\n }),\n);\n\nconst uninitialized = (): any => {\n throw new Error(\"Router called before initialization\");\n};\n\nexport let Router: IRouter = {\n isInitialized: false,\n page: uninitialized,\n allowRouting: uninitialized,\n toActiveScripts: uninitialized,\n toAugmentations: uninitialized,\n toBitVerse: uninitialized,\n toBladeburner: uninitialized,\n toStats: uninitialized,\n toCity: uninitialized,\n toCorporation: uninitialized,\n toCreateProgram: uninitialized,\n toDevMenu: uninitialized,\n toFaction: uninitialized,\n toFactions: uninitialized,\n toGameOptions: uninitialized,\n toGang: uninitialized,\n toHacknetNodes: uninitialized,\n toInfiltration: uninitialized,\n toJob: uninitialized,\n toMilestones: uninitialized,\n toGrafting: uninitialized,\n toScriptEditor: uninitialized,\n toSleeves: uninitialized,\n toStockMarket: uninitialized,\n toTerminal: uninitialized,\n toTravel: uninitialized,\n toTutorial: uninitialized,\n toWork: uninitialized,\n toBladeburnerCinematic: uninitialized,\n toLocation: uninitialized,\n toStaneksGift: uninitialized,\n toAchievements: uninitialized,\n toThemeBrowser: uninitialized,\n toImportSave: uninitialized,\n};\n\nfunction determineStartPage(player: IPlayer): Page {\n if (RecoveryMode) return Page.Recovery;\n if (player.isWorking) return Page.Work;\n return Page.Terminal;\n}\n\nexport function GameRoot({ player, engine, terminal }: IProps): React.ReactElement {\n const classes = useStyles();\n const [{ files, vim }, setEditorOptions] = useState({ files: {}, vim: false });\n const [page, setPage] = useState(determineStartPage(player));\n const setRerender = useState(0)[1];\n const [augPage, setAugPage] = useState(false);\n const [faction, setFaction] = useState(\n player.currentWorkFactionName ? Factions[player.currentWorkFactionName] : (undefined as unknown as Faction),\n );\n if (faction === undefined && page === Page.Faction)\n throw new Error(\"Trying to go to a page without the proper setup\");\n\n const [flume, setFlume] = useState(false);\n const [quick, setQuick] = useState(false);\n const [location, setLocation] = useState(undefined as unknown as Location);\n if (location === undefined && (page === Page.Infiltration || page === Page.Location || page === Page.Job))\n throw new Error(\"Trying to go to a page without the proper setup\");\n\n const [cinematicText, setCinematicText] = useState(\"\");\n const [errorBoundaryKey, setErrorBoundaryKey] = useState(0);\n const [sidebarOpened, setSideBarOpened] = useState(Settings.IsSidebarOpened);\n\n const [importString, setImportString] = useState(undefined as unknown as string);\n const [importAutomatic, setImportAutomatic] = useState(false);\n if (importString === undefined && page === Page.ImportSave)\n throw new Error(\"Trying to go to a page without the proper setup\");\n\n const [allowRoutingCalls, setAllowRoutingCalls] = useState(true);\n\n function resetErrorBoundary(): void {\n setErrorBoundaryKey(errorBoundaryKey + 1);\n }\n\n function rerender(): void {\n setRerender((old) => old + 1);\n }\n useEffect(() => {\n return ITutorialEvents.subscribe(rerender);\n }, []);\n\n function killAllScripts(): void {\n for (const server of GetAllServers()) {\n server.runningScripts = [];\n }\n saveObject.saveGame();\n setTimeout(() => htmlLocation.reload(), 2000);\n }\n\n Router = {\n isInitialized: true,\n page: () => page,\n allowRouting: (value: boolean) => setAllowRoutingCalls(value),\n toActiveScripts: () => setPage(Page.ActiveScripts),\n toAugmentations: () => setPage(Page.Augmentations),\n toBladeburner: () => setPage(Page.Bladeburner),\n toStats: () => setPage(Page.Stats),\n toCorporation: () => setPage(Page.Corporation),\n toCreateProgram: () => setPage(Page.CreateProgram),\n toDevMenu: () => setPage(Page.DevMenu),\n toFaction: (faction: Faction, augPage = false) => {\n setAugPage(augPage);\n setPage(Page.Faction);\n if (faction) setFaction(faction);\n },\n toFactions: () => setPage(Page.Factions),\n toGameOptions: () => setPage(Page.Options),\n toGang: () => setPage(Page.Gang),\n toHacknetNodes: () => setPage(Page.Hacknet),\n toMilestones: () => setPage(Page.Milestones),\n toGrafting: () => setPage(Page.Grafting),\n toScriptEditor: (files: Record, options?: ScriptEditorRouteOptions) => {\n setEditorOptions({\n files,\n vim: !!options?.vim,\n });\n setPage(Page.ScriptEditor);\n },\n toSleeves: () => setPage(Page.Sleeves),\n toStockMarket: () => setPage(Page.StockMarket),\n toTerminal: () => setPage(Page.Terminal),\n toTutorial: () => setPage(Page.Tutorial),\n toJob: () => {\n setLocation(Locations[player.companyName]);\n setPage(Page.Job);\n },\n toCity: () => {\n setPage(Page.City);\n },\n toTravel: () => {\n player.gotoLocation(LocationName.TravelAgency);\n setPage(Page.Travel);\n },\n toBitVerse: (flume: boolean, quick: boolean) => {\n setFlume(flume);\n setQuick(quick);\n calculateAchievements();\n setPage(Page.BitVerse);\n },\n toInfiltration: (location: Location) => {\n setLocation(location);\n setPage(Page.Infiltration);\n },\n toWork: () => setPage(Page.Work),\n toBladeburnerCinematic: () => {\n setPage(Page.BladeburnerCinematic);\n setCinematicText(cinematicText);\n },\n toLocation: (location: Location) => {\n setLocation(location);\n setPage(Page.Location);\n },\n toStaneksGift: () => {\n setPage(Page.StaneksGift);\n },\n toAchievements: () => {\n setPage(Page.Achievements);\n },\n toThemeBrowser: () => {\n setPage(Page.ThemeBrowser);\n },\n toImportSave: (base64save: string, automatic = false) => {\n setImportString(base64save);\n setImportAutomatic(automatic);\n setPage(Page.ImportSave);\n },\n };\n\n useEffect(() => {\n // Wrap Router navigate functions to be able to disable the execution\n _functions(Router)\n .filter((fnName) => fnName.startsWith(\"to\"))\n .forEach((fnName) => {\n // @ts-ignore - tslint does not like this, couldn't find a way to make it cooperate\n Router[fnName] = _wrap(Router[fnName], (func, ...args) => {\n if (!allowRoutingCalls) {\n // Let's just log to console.\n console.log(`Routing is currently disabled - Attempted router.${fnName}()`);\n return;\n }\n\n // Call the function normally\n return func(...args);\n });\n });\n });\n\n useEffect(() => {\n if (page !== Page.Terminal) window.scrollTo(0, 0);\n });\n\n function softReset(): void {\n dialogBoxCreate(\"Soft Reset!\");\n installAugmentations(true);\n resetErrorBoundary();\n Router.toTerminal();\n }\n\n let mainPage = Cannot load;\n let withSidebar = true;\n let withPopups = true;\n let bypassGame = false;\n switch (page) {\n case Page.Recovery: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n bypassGame = true;\n break;\n }\n case Page.BitVerse: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n break;\n }\n case Page.Infiltration: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n break;\n }\n case Page.BladeburnerCinematic: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n break;\n }\n case Page.Work: {\n mainPage = ;\n withSidebar = false;\n break;\n }\n case Page.Terminal: {\n mainPage = ;\n break;\n }\n case Page.Sleeves: {\n mainPage = ;\n break;\n }\n case Page.StaneksGift: {\n mainPage = ;\n break;\n }\n case Page.Stats: {\n mainPage = ;\n break;\n }\n case Page.ScriptEditor: {\n mainPage = (\n \n );\n break;\n }\n case Page.ActiveScripts: {\n mainPage = ;\n break;\n }\n case Page.Hacknet: {\n mainPage = ;\n break;\n }\n case Page.CreateProgram: {\n mainPage = ;\n break;\n }\n case Page.Factions: {\n mainPage = ;\n break;\n }\n case Page.Faction: {\n mainPage = ;\n break;\n }\n case Page.Milestones: {\n mainPage = ;\n break;\n }\n case Page.Tutorial: {\n mainPage = (\n {\n prestigeAugmentation();\n Router.toTerminal();\n iTutorialStart();\n }}\n />\n );\n break;\n }\n case Page.DevMenu: {\n mainPage = ;\n break;\n }\n case Page.Gang: {\n mainPage = ;\n break;\n }\n case Page.Corporation: {\n mainPage = ;\n break;\n }\n case Page.Bladeburner: {\n mainPage = ;\n break;\n }\n case Page.Grafting: {\n mainPage = ;\n break;\n }\n case Page.Travel: {\n mainPage = ;\n break;\n }\n case Page.StockMarket: {\n mainPage = (\n \n );\n break;\n }\n case Page.City: {\n mainPage = ;\n break;\n }\n case Page.Job:\n case Page.Location: {\n mainPage = ;\n break;\n }\n case Page.Options: {\n mainPage = (\n saveObject.saveGame()}\n export={() => {\n // Apply the export bonus before saving the game\n onExport(player);\n saveObject.exportGame();\n }}\n forceKill={killAllScripts}\n softReset={softReset}\n />\n );\n break;\n }\n case Page.Augmentations: {\n mainPage = (\n {\n // Apply the export bonus before saving the game\n onExport(player);\n saveObject.exportGame();\n }}\n installAugmentationsFn={() => {\n installAugmentations();\n Router.toTerminal();\n }}\n />\n );\n break;\n }\n case Page.Achievements: {\n mainPage = ;\n break;\n }\n case Page.ThemeBrowser: {\n mainPage = ;\n break;\n }\n case Page.ImportSave: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n bypassGame = true;\n }\n }\n\n return (\n \n \n \n \n \n \n {!ITutorial.isRunning ? (\n saveObject.saveGame()} killScripts={killAllScripts} />\n ) : (\n \n )}\n \n {withSidebar ? (\n \n {\n setSideBarOpened(isOpened);\n Settings.IsSidebarOpened = isOpened;\n }}\n />\n {mainPage}\n \n ) : (\n {mainPage}\n )}\n \n {withPopups && (\n <>\n \n \n \n \n \n >\n )}\n \n \n \n \n \n \n );\n}\n","import { IMap } from \"../../types\";\nimport { LocationName } from \"../../Locations/data/LocationNames\";\n\nexport const StockSymbols: IMap = {};\n\n// Stocks for companies at which you can work\nStockSymbols[LocationName.AevumECorp] = \"ECP\";\nStockSymbols[LocationName.Sector12MegaCorp] = \"MGCP\";\nStockSymbols[LocationName.Sector12BladeIndustries] = \"BLD\";\nStockSymbols[LocationName.AevumClarkeIncorporated] = \"CLRK\";\nStockSymbols[LocationName.VolhavenOmniTekIncorporated] = \"OMTK\";\nStockSymbols[LocationName.Sector12FourSigma] = \"FSIG\";\nStockSymbols[LocationName.ChongqingKuaiGongInternational] = \"KGI\";\nStockSymbols[LocationName.AevumFulcrumTechnologies] = \"FLCM\";\nStockSymbols[LocationName.IshimaStormTechnologies] = \"STM\";\nStockSymbols[LocationName.NewTokyoDefComm] = \"DCOMM\";\nStockSymbols[LocationName.VolhavenHeliosLabs] = \"HLS\";\nStockSymbols[LocationName.NewTokyoVitaLife] = \"VITA\";\nStockSymbols[LocationName.Sector12IcarusMicrosystems] = \"ICRS\";\nStockSymbols[LocationName.Sector12UniversalEnergy] = \"UNV\";\nStockSymbols[LocationName.AevumAeroCorp] = \"AERO\";\nStockSymbols[LocationName.VolhavenOmniaCybersystems] = \"OMN\";\nStockSymbols[LocationName.ChongqingSolarisSpaceSystems] = \"SLRS\";\nStockSymbols[LocationName.NewTokyoGlobalPharmaceuticals] = \"GPH\";\nStockSymbols[LocationName.IshimaNovaMedical] = \"NVMD\";\nStockSymbols[LocationName.AevumWatchdogSecurity] = \"WDS\";\nStockSymbols[LocationName.VolhavenLexoCorp] = \"LXO\";\nStockSymbols[LocationName.AevumRhoConstruction] = \"RHOC\";\nStockSymbols[LocationName.Sector12AlphaEnterprises] = \"APHE\";\nStockSymbols[LocationName.VolhavenSysCoreSecurities] = \"SYSC\";\nStockSymbols[LocationName.VolhavenCompuTek] = \"CTK\";\nStockSymbols[LocationName.AevumNetLinkTechnologies] = \"NTLK\";\nStockSymbols[LocationName.IshimaOmegaSoftware] = \"OMGA\";\nStockSymbols[LocationName.Sector12FoodNStuff] = \"FNS\";\nStockSymbols[LocationName.Sector12JoesGuns] = \"JGN\";\n\n// Stocks for other companies\nStockSymbols[\"Sigma Cosmetics\"] = \"SGC\";\nStockSymbols[\"Catalyst Ventures\"] = \"CTYS\";\nStockSymbols[\"Microdyne Technologies\"] = \"MDYN\";\nStockSymbols[\"Titan Laboratories\"] = \"TITN\";\n","export const validScriptExtensions: Array = [`.js`, `.script`, `.ns`];\n\nexport function isScriptFilename(f: string): boolean {\n return validScriptExtensions.some((ext) => f.endsWith(ext));\n}\n","import { BitNodeMultipliers } from \"./BitNode/BitNodeMultipliers\";\nimport { IPlayer } from \"./PersonObjects/IPlayer\";\nimport { calculateIntelligenceBonus } from \"./PersonObjects/formulas/intelligence\";\nimport { Server } from \"./Server/Server\";\n\n/**\n * Returns the chance the player has to successfully hack a server\n */\nexport function calculateHackingChance(server: Server, player: IPlayer): number {\n const hackFactor = 1.75;\n const difficultyMult = (100 - server.hackDifficulty) / 100;\n const skillMult = hackFactor * player.hacking;\n const skillChance = (skillMult - server.requiredHackingSkill) / skillMult;\n const chance =\n skillChance * difficultyMult * player.hacking_chance_mult * calculateIntelligenceBonus(player.intelligence, 1);\n if (chance > 1) {\n return 1;\n }\n if (chance < 0) {\n return 0;\n }\n\n return chance;\n}\n\n/**\n * Returns the amount of hacking experience the player will gain upon\n * successfully hacking a server\n */\nexport function calculateHackingExpGain(server: Server, player: IPlayer): number {\n const baseExpGain = 3;\n const diffFactor = 0.3;\n if (server.baseDifficulty == null) {\n server.baseDifficulty = server.hackDifficulty;\n }\n let expGain = baseExpGain;\n expGain += server.baseDifficulty * diffFactor;\n\n return expGain * player.hacking_exp_mult * BitNodeMultipliers.HackExpGain;\n}\n\n/**\n * Returns the percentage of money that will be stolen from a server if\n * it is successfully hacked (returns the decimal form, not the actual percent value)\n */\nexport function calculatePercentMoneyHacked(server: Server, player: IPlayer): number {\n // Adjust if needed for balancing. This is the divisor for the final calculation\n const balanceFactor = 240;\n\n const difficultyMult = (100 - server.hackDifficulty) / 100;\n const skillMult = (player.hacking - (server.requiredHackingSkill - 1)) / player.hacking;\n const percentMoneyHacked =\n (difficultyMult * skillMult * player.hacking_money_mult * BitNodeMultipliers.ScriptHackMoney) / balanceFactor;\n if (percentMoneyHacked < 0) {\n return 0;\n }\n if (percentMoneyHacked > 1) {\n return 1;\n }\n\n return percentMoneyHacked;\n}\n\n/**\n * Returns time it takes to complete a hack on a server, in seconds\n */\nexport function calculateHackingTime(server: Server, player: IPlayer): number {\n const difficultyMult = server.requiredHackingSkill * server.hackDifficulty;\n\n const baseDiff = 500;\n const baseSkill = 50;\n const diffFactor = 2.5;\n let skillFactor = diffFactor * difficultyMult + baseDiff;\n // tslint:disable-next-line\n skillFactor /= player.hacking + baseSkill;\n\n const hackTimeMultiplier = 5;\n const hackingTime =\n (hackTimeMultiplier * skillFactor) /\n (player.hacking_speed_mult * calculateIntelligenceBonus(player.intelligence, 1));\n\n return hackingTime;\n}\n\n/**\n * Returns time it takes to complete a grow operation on a server, in seconds\n */\nexport function calculateGrowTime(server: Server, player: IPlayer): number {\n const growTimeMultiplier = 3.2; // Relative to hacking time. 16/5 = 3.2\n\n return growTimeMultiplier * calculateHackingTime(server, player);\n}\n\n/**\n * Returns time it takes to complete a weaken operation on a server, in seconds\n */\nexport function calculateWeakenTime(server: Server, player: IPlayer): number {\n const weakenTimeMultiplier = 4; // Relative to hacking time\n\n return weakenTimeMultiplier * calculateHackingTime(server, player);\n}\n","import { IOrderBook } from \"./IOrderBook\";\nimport { IStockMarket } from \"./IStockMarket\";\nimport { Order } from \"./Order\";\nimport { processOrders } from \"./OrderProcessing\";\nimport { Stock } from \"./Stock\";\nimport { TicksPerCycle } from \"./StockMarketConstants\";\nimport { InitStockMetadata } from \"./data/InitStockMetadata\";\nimport { OrderTypes } from \"./data/OrderTypes\";\nimport { PositionTypes } from \"./data/PositionTypes\";\nimport { StockSymbols } from \"./data/StockSymbols\";\n\nimport { CONSTANTS } from \"../Constants\";\nimport { WorkerScript } from \"../Netscript/WorkerScript\";\nimport { IMap } from \"../types\";\nimport { EventEmitter } from \"../utils/EventEmitter\";\n\nimport { numeralWrapper } from \"../ui/numeralFormat\";\n\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { Reviver } from \"../utils/JSONReviver\";\n\nexport let StockMarket: IStockMarket = {\n lastUpdate: 0,\n Orders: {},\n storedCycles: 0,\n ticksUntilCycle: 0,\n} as IStockMarket; // Maps full stock name -> Stock object\nexport const SymbolToStockMap: IMap = {}; // Maps symbol -> Stock object\n\nexport function placeOrder(\n stock: Stock,\n shares: number,\n price: number,\n type: OrderTypes,\n position: PositionTypes,\n workerScript: WorkerScript | null = null,\n): boolean {\n if (!(stock instanceof Stock)) {\n if (workerScript) {\n workerScript.log(\"stock.placeOrder\", () => `Invalid stock: '${stock}'`);\n } else {\n dialogBoxCreate(`ERROR: Invalid stock passed to placeOrder() function`);\n }\n return false;\n }\n if (typeof shares !== \"number\" || typeof price !== \"number\") {\n if (workerScript) {\n workerScript.log(\"stock.placeOrder\", () => `Invalid arguments: shares='${shares}' price='${price}'`);\n } else {\n dialogBoxCreate(\"ERROR: Invalid numeric value provided for either 'shares' or 'price' argument\");\n }\n return false;\n }\n\n const order = new Order(stock.symbol, shares, price, type, position);\n if (StockMarket[\"Orders\"] == null) {\n const orders: IOrderBook = {};\n for (const name of Object.keys(StockMarket)) {\n const stk = StockMarket[name];\n if (!(stk instanceof Stock)) {\n continue;\n }\n orders[stk.symbol] = [];\n }\n StockMarket[\"Orders\"] = orders;\n }\n StockMarket[\"Orders\"][stock.symbol].push(order);\n\n // Process to see if it should be executed immediately\n const processOrderRefs = {\n stockMarket: StockMarket as IStockMarket,\n symbolToStockMap: SymbolToStockMap,\n };\n processOrders(stock, order.type, order.pos, processOrderRefs);\n\n return true;\n}\n\n// Returns true if successfully cancels an order, false otherwise\ninterface ICancelOrderParams {\n order?: Order;\n pos?: PositionTypes;\n price?: number;\n shares?: number;\n stock?: Stock;\n type?: OrderTypes;\n}\nexport function cancelOrder(params: ICancelOrderParams, workerScript: WorkerScript | null = null): boolean {\n if (StockMarket[\"Orders\"] == null) {\n return false;\n }\n if (params.order && params.order instanceof Order) {\n const order = params.order;\n // An 'Order' object is passed in\n const stockOrders = StockMarket[\"Orders\"][order.stockSymbol];\n for (let i = 0; i < stockOrders.length; ++i) {\n if (order == stockOrders[i]) {\n stockOrders.splice(i, 1);\n return true;\n }\n }\n return false;\n } else if (\n params.stock &&\n params.shares &&\n params.price &&\n params.type &&\n params.pos &&\n params.stock instanceof Stock\n ) {\n // Order properties are passed in. Need to look for the order\n const stockOrders = StockMarket[\"Orders\"][params.stock.symbol];\n const orderTxt = params.stock.symbol + \" - \" + params.shares + \" @ \" + numeralWrapper.formatMoney(params.price);\n for (let i = 0; i < stockOrders.length; ++i) {\n const order = stockOrders[i];\n if (\n params.shares === order.shares &&\n params.price === order.price &&\n params.type === order.type &&\n params.pos === order.pos\n ) {\n stockOrders.splice(i, 1);\n if (workerScript) {\n workerScript.scriptRef.log(\"Successfully cancelled order: \" + orderTxt);\n }\n return true;\n }\n }\n if (workerScript) {\n workerScript.scriptRef.log(\"Failed to cancel order: \" + orderTxt);\n }\n return false;\n }\n return false;\n}\n\nexport function loadStockMarket(saveString: string): void {\n if (saveString === \"\") {\n StockMarket = {\n lastUpdate: 0,\n Orders: {},\n storedCycles: 0,\n ticksUntilCycle: 0,\n } as IStockMarket;\n } else {\n StockMarket = JSON.parse(saveString, Reviver);\n }\n}\n\nexport function deleteStockMarket(): void {\n StockMarket = {\n lastUpdate: 0,\n Orders: {},\n storedCycles: 0,\n ticksUntilCycle: 0,\n } as IStockMarket;\n}\n\nexport function initStockMarket(): void {\n for (const stk of Object.keys(StockMarket)) {\n if (StockMarket.hasOwnProperty(stk)) {\n delete StockMarket[stk];\n }\n }\n\n for (const metadata of InitStockMetadata) {\n const name = metadata.name;\n StockMarket[name] = new Stock(metadata);\n }\n\n const orders: IOrderBook = {};\n for (const name of Object.keys(StockMarket)) {\n const stock = StockMarket[name];\n if (!(stock instanceof Stock)) {\n continue;\n }\n orders[stock.symbol] = [];\n }\n StockMarket[\"Orders\"] = orders;\n\n StockMarket.storedCycles = 0;\n StockMarket.lastUpdate = 0;\n StockMarket.ticksUntilCycle = TicksPerCycle;\n}\n\nexport function initSymbolToStockMap(): void {\n for (const name of Object.keys(StockSymbols)) {\n if (StockSymbols.hasOwnProperty(name)) {\n const stock = StockMarket[name];\n if (stock == null) {\n console.error(`Could not find Stock for ${name}`);\n continue;\n }\n const symbol = StockSymbols[name];\n SymbolToStockMap[symbol] = stock;\n }\n }\n}\n\nfunction stockMarketCycle(): void {\n for (const name of Object.keys(StockMarket)) {\n const stock = StockMarket[name];\n if (!(stock instanceof Stock)) {\n continue;\n }\n\n const roll = Math.random();\n if (roll < 0.45) {\n stock.b = !stock.b;\n stock.flipForecastForecast();\n }\n\n StockMarket.ticksUntilCycle = TicksPerCycle;\n }\n}\n\n// Stock prices updated every 6 seconds\nconst msPerStockUpdate = 6e3;\nconst cyclesPerStockUpdate = msPerStockUpdate / CONSTANTS.MilliPerCycle;\nexport function processStockPrices(numCycles = 1): void {\n if (StockMarket.storedCycles == null || isNaN(StockMarket.storedCycles)) {\n StockMarket.storedCycles = 0;\n }\n StockMarket.storedCycles += numCycles;\n\n if (StockMarket.storedCycles < cyclesPerStockUpdate) {\n return;\n }\n\n // We can process the update every 4 seconds as long as there are enough\n // stored cycles. This lets us account for offline time\n const timeNow = new Date().getTime();\n if (timeNow - StockMarket.lastUpdate < 4e3) {\n return;\n }\n\n StockMarket.lastUpdate = timeNow;\n StockMarket.storedCycles -= cyclesPerStockUpdate;\n\n // Cycle\n if (StockMarket.ticksUntilCycle == null || typeof StockMarket.ticksUntilCycle !== \"number\") {\n StockMarket.ticksUntilCycle = TicksPerCycle;\n }\n --StockMarket.ticksUntilCycle;\n if (StockMarket.ticksUntilCycle <= 0) {\n stockMarketCycle();\n }\n\n const v = Math.random();\n for (const name of Object.keys(StockMarket)) {\n const stock = StockMarket[name];\n if (!(stock instanceof Stock)) {\n continue;\n }\n let av = (v * stock.mv) / 100;\n if (isNaN(av)) {\n av = 0.02;\n }\n\n let chc = 50;\n if (stock.b) {\n chc = (chc + stock.otlkMag) / 100;\n } else {\n chc = (chc - stock.otlkMag) / 100;\n }\n if (stock.price >= stock.cap) {\n chc = 0.1; // \"Soft Limit\" on stock price. It could still go up but its unlikely\n stock.b = false;\n }\n if (isNaN(chc)) {\n chc = 0.5;\n }\n\n const c = Math.random();\n const processOrderRefs = {\n stockMarket: StockMarket,\n symbolToStockMap: SymbolToStockMap,\n };\n if (c < chc) {\n stock.changePrice(stock.price * (1 + av));\n processOrders(stock, OrderTypes.LimitBuy, PositionTypes.Short, processOrderRefs);\n processOrders(stock, OrderTypes.LimitSell, PositionTypes.Long, processOrderRefs);\n processOrders(stock, OrderTypes.StopBuy, PositionTypes.Long, processOrderRefs);\n processOrders(stock, OrderTypes.StopSell, PositionTypes.Short, processOrderRefs);\n } else {\n stock.changePrice(stock.price / (1 + av));\n processOrders(stock, OrderTypes.LimitBuy, PositionTypes.Long, processOrderRefs);\n processOrders(stock, OrderTypes.LimitSell, PositionTypes.Short, processOrderRefs);\n processOrders(stock, OrderTypes.StopBuy, PositionTypes.Short, processOrderRefs);\n processOrders(stock, OrderTypes.StopSell, PositionTypes.Long, processOrderRefs);\n }\n\n let otlkMagChange = stock.otlkMag * av;\n if (stock.otlkMag < 5) {\n if (stock.otlkMag <= 1) {\n otlkMagChange = 1;\n } else {\n otlkMagChange *= 10;\n }\n }\n stock.cycleForecast(otlkMagChange);\n stock.cycleForecastForecast(otlkMagChange / 2);\n\n // Shares required for price movement gradually approaches max over time\n stock.shareTxUntilMovement = Math.min(stock.shareTxUntilMovement + 10, stock.shareTxForMovement);\n }\n}\n\nexport function initStockMarketFnForReact(): void {\n initStockMarket();\n initSymbolToStockMap();\n}\n\nexport const eventEmitterForUiReset = new EventEmitter<[]>();\n","/* Holds IP of Special Servers */\nexport const SpecialServers: {\n [key: string]: string | undefined;\n\n Home: string;\n FulcrumSecretTechnologies: string;\n CyberSecServer: string;\n NiteSecServer: string;\n TheBlackHandServer: string;\n BitRunnersServer: string;\n TheDarkArmyServer: string;\n DaedalusServer: string;\n WorldDaemon: string;\n DarkWeb: string;\n} = {\n Home: \"home\",\n FulcrumSecretTechnologies: \"fulcrumassets\",\n CyberSecServer: \"CSEC\",\n NiteSecServer: \"avmnite-02h\",\n TheBlackHandServer: \"I.I.I.I\",\n BitRunnersServer: \"run4theh111z\",\n TheDarkArmyServer: \".\",\n DaedalusServer: \"The-Cave\",\n WorldDaemon: \"w0r1d_d43m0n\",\n DarkWeb: \"darkweb\",\n};\n","import { Augmentations } from \"../Augmentation/Augmentations\";\nimport { Augmentation } from \"../Augmentation/Augmentation\";\nimport { PlayerOwnedAugmentation } from \"../Augmentation/PlayerOwnedAugmentation\";\nimport { AugmentationNames } from \"../Augmentation/data/AugmentationNames\";\nimport { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\nimport { CONSTANTS } from \"../Constants\";\n\nimport { Faction } from \"./Faction\";\nimport { Factions } from \"./Factions\";\nimport { Player } from \"../Player\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { Settings } from \"../Settings/Settings\";\nimport {\n getHackingWorkRepGain,\n getFactionSecurityWorkRepGain,\n getFactionFieldWorkRepGain,\n} from \"../PersonObjects/formulas/reputation\";\nimport { SourceFileFlags } from \"../SourceFile/SourceFileFlags\";\n\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { InvitationEvent } from \"./ui/InvitationModal\";\nimport { FactionNames } from \"./data/FactionNames\";\nimport { SFC32RNG } from \"../Casino/RNG\";\n\nexport function inviteToFaction(faction: Faction): void {\n Player.receiveInvite(faction.name);\n faction.alreadyInvited = true;\n if (!Settings.SuppressFactionInvites) {\n InvitationEvent.emit(faction);\n }\n}\n\nexport function joinFaction(faction: Faction): void {\n if (faction.isMember) return;\n faction.isMember = true;\n Player.factions.push(faction.name);\n const allFactions = Object.values(FactionNames).map((faction) => faction as string);\n Player.factions.sort((a, b) => allFactions.indexOf(a) - allFactions.indexOf(b));\n const factionInfo = faction.getInfo();\n\n //Determine what factions you are banned from now that you have joined this faction\n for (const enemy of factionInfo.enemies) {\n if (Factions[enemy] instanceof Faction) {\n Factions[enemy].isBanned = true;\n }\n }\n for (let i = 0; i < Player.factionInvitations.length; ++i) {\n if (Player.factionInvitations[i] == faction.name || Factions[Player.factionInvitations[i]].isBanned) {\n Player.factionInvitations.splice(i, 1);\n i--;\n }\n }\n}\n\n//Returns a boolean indicating whether the player has the prerequisites for the\n//specified Augmentation\nexport function hasAugmentationPrereqs(aug: Augmentation): boolean {\n let hasPrereqs = true;\n if (aug.prereqs && aug.prereqs.length > 0) {\n for (let i = 0; i < aug.prereqs.length; ++i) {\n const prereqAug = Augmentations[aug.prereqs[i]];\n if (prereqAug == null) {\n console.error(`Invalid prereq Augmentation ${aug.prereqs[i]}`);\n continue;\n }\n if (prereqAug.owned === false) {\n hasPrereqs = false;\n\n // Check if the aug is purchased\n for (let j = 0; j < Player.queuedAugmentations.length; ++j) {\n if (Player.queuedAugmentations[j].name === prereqAug.name) {\n hasPrereqs = true;\n break;\n }\n }\n }\n }\n }\n\n return hasPrereqs;\n}\n\nexport function purchaseAugmentation(aug: Augmentation, fac: Faction, sing = false): string {\n const factionInfo = fac.getInfo();\n const hasPrereqs = hasAugmentationPrereqs(aug);\n if (!hasPrereqs) {\n const txt = `You must first purchase or install ${aug.prereqs.join(\",\")} before you can purchase this one.`;\n if (sing) {\n return txt;\n } else {\n dialogBoxCreate(txt);\n }\n } else if (aug.baseCost !== 0 && Player.money < aug.baseCost * factionInfo.augmentationPriceMult) {\n const txt = \"You don't have enough money to purchase \" + aug.name;\n if (sing) {\n return txt;\n }\n dialogBoxCreate(txt);\n } else if (fac.playerReputation < aug.baseRepRequirement) {\n const txt = \"You don't have enough faction reputation to purchase \" + aug.name;\n if (sing) {\n return txt;\n }\n dialogBoxCreate(txt);\n } else if (aug.baseCost === 0 || Player.money >= aug.baseCost * factionInfo.augmentationPriceMult) {\n const queuedAugmentation = new PlayerOwnedAugmentation(aug.name);\n if (aug.name == AugmentationNames.NeuroFluxGovernor) {\n queuedAugmentation.level = getNextNeurofluxLevel();\n }\n Player.queuedAugmentations.push(queuedAugmentation);\n\n Player.loseMoney(aug.baseCost * factionInfo.augmentationPriceMult, \"augmentations\");\n\n // If you just purchased Neuroflux Governor, recalculate the cost\n if (aug.name == AugmentationNames.NeuroFluxGovernor) {\n let nextLevel = getNextNeurofluxLevel();\n --nextLevel;\n const mult = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, nextLevel);\n aug.baseRepRequirement = 500 * mult * BitNodeMultipliers.AugmentationRepCost;\n aug.baseCost = 750e3 * mult * BitNodeMultipliers.AugmentationMoneyCost;\n\n for (let i = 0; i < Player.queuedAugmentations.length - 1; ++i) {\n aug.baseCost *= CONSTANTS.MultipleAugMultiplier * [1, 0.96, 0.94, 0.93][SourceFileFlags[11]];\n }\n }\n\n for (const name of Object.keys(Augmentations)) {\n if (Augmentations.hasOwnProperty(name)) {\n Augmentations[name].baseCost *= CONSTANTS.MultipleAugMultiplier * [1, 0.96, 0.94, 0.93][SourceFileFlags[11]];\n }\n }\n\n if (sing) {\n return \"You purchased \" + aug.name;\n } else if (!Settings.SuppressBuyAugmentationConfirmation) {\n dialogBoxCreate(\n \"You purchased \" +\n aug.name +\n \". Its enhancements will not take \" +\n \"effect until they are installed. To install your augmentations, go to the \" +\n \"'Augmentations' tab on the left-hand navigation menu. Purchasing additional \" +\n \"augmentations will now be more expensive.\",\n );\n }\n } else {\n dialogBoxCreate(\n \"Hmm, something went wrong when trying to purchase an Augmentation. \" +\n \"Please report this to the game developer with an explanation of how to \" +\n \"reproduce this.\",\n );\n }\n return \"\";\n}\n\nexport function getNextNeurofluxLevel(): number {\n // Get current Neuroflux level based on Player's augmentations\n let currLevel = 0;\n for (let i = 0; i < Player.augmentations.length; ++i) {\n if (Player.augmentations[i].name === AugmentationNames.NeuroFluxGovernor) {\n currLevel = Player.augmentations[i].level;\n }\n }\n\n // Account for purchased but uninstalled Augmentations\n for (let i = 0; i < Player.queuedAugmentations.length; ++i) {\n if (Player.queuedAugmentations[i].name == AugmentationNames.NeuroFluxGovernor) {\n ++currLevel;\n }\n }\n return currLevel + 1;\n}\n\nexport function processPassiveFactionRepGain(numCycles: number): void {\n for (const name of Object.keys(Factions)) {\n if (name === Player.currentWorkFactionName) continue;\n if (!Factions.hasOwnProperty(name)) continue;\n const faction = Factions[name];\n if (!faction.isMember) continue;\n // No passive rep for special factions\n const info = faction.getInfo();\n if (!info.offersWork()) continue;\n // No passive rep for gangs.\n if (Player.getGangName() === name) continue;\n // 0 favor = 1%/s\n // 50 favor = 6%/s\n // 100 favor = 11%/s\n const favorMult = Math.min(0.1, faction.favor / 1000 + 0.01);\n // Find the best of all possible favor gain, minimum 1 rep / 2 minute.\n const hRep = getHackingWorkRepGain(Player, faction);\n const sRep = getFactionSecurityWorkRepGain(Player, faction);\n const fRep = getFactionFieldWorkRepGain(Player, faction);\n const rate = Math.max(hRep * favorMult, sRep * favorMult, fRep * favorMult, 1 / 120);\n\n faction.playerReputation += rate * numCycles * Player.faction_rep_mult * BitNodeMultipliers.FactionPassiveRepGain;\n }\n}\n\nexport const getFactionAugmentationsFiltered = (player: IPlayer, faction: Faction): string[] => {\n // If player has a gang with this faction, return (almost) all augmentations\n if (player.hasGangWith(faction.name)) {\n let augs = Object.values(Augmentations);\n\n // Remove special augs\n augs = augs.filter((a) => !a.isSpecial);\n\n const blacklist: string[] = [AugmentationNames.NeuroFluxGovernor];\n\n if (player.bitNodeN !== 2) {\n // TRP is not available outside of BN2 for Gangs\n blacklist.push(AugmentationNames.TheRedPill);\n }\n\n const rng = SFC32RNG(`BN${player.bitNodeN}.${player.sourceFileLvl(player.bitNodeN)}`);\n // Remove faction-unique augs that don't belong to this faction\n const uniqueFilter = (a: Augmentation): boolean => {\n // Keep all the non-unique one\n if (a.factions.length > 1) {\n return true;\n }\n // Keep all the ones that this faction has anyway.\n if (faction.augmentations.includes(a.name)) {\n return true;\n }\n\n return rng() >= 1 - BitNodeMultipliers.GangUniqueAugs;\n };\n augs = augs.filter(uniqueFilter);\n\n // Remove blacklisted augs\n augs = augs.filter((a) => !blacklist.includes(a.name));\n\n return augs.map((a) => a.name);\n }\n\n return faction.augmentations.slice();\n};\n","/*\nThe game cannot block every possible exploits. Specially since one of them is\nthat you can just edit your save file and that's impragmatic to prevent.\n\nSo instead we have source file minus 1. It is not obtained by destroying a\nBitNode but instead it is awarded when the player finds innovative ways to break\nthe game, this serves 2 purpose, [one] the developpers don't have to spend time\ntrying to implement anti-cheat measures and [two] finding ways to break a\nhacking game is very much in the spirit of the game.\nSource-File minus 1 is extremely weak because it can be fully level up quickly.\n*/\n\nexport enum Exploit {\n Bypass = \"Bypass\",\n PrototypeTampering = \"PrototypeTampering\",\n Unclickable = \"Unclickable\",\n UndocumentedFunctionCall = \"UndocumentedFunctionCall\",\n TimeCompression = \"TimeCompression\",\n RealityAlteration = \"RealityAlteration\",\n N00dles = \"N00dles\",\n YoureNotMeantToAccessThis = \"YoureNotMeantToAccessThis\",\n TrueRecursion = \"TrueRecursion\",\n INeedARainbow = \"INeedARainbow\",\n // To the players reading this. Yes you're supposed to add EditSaveFile by\n // editing your save file, yes you could add them all, no we don't care\n // that's not the point.\n EditSaveFile = \"EditSaveFile\",\n}\n\nconst names: {\n [key: string]: string;\n} = {\n Bypass: \"by circumventing the ram cost of document.\",\n EditSaveFile: \"by editing your save file.\",\n PrototypeTampering: \"by tampering with Numbers prototype.\",\n TimeCompression: \"by compressing time.\",\n Unclickable: \"by clicking the unclickable.\",\n UndocumentedFunctionCall: \"by looking beyond the documentation.\",\n RealityAlteration: \"by altering reality to suit your whims.\",\n N00dles: \"by harnessing the power of the n00dles.\",\n YoureNotMeantToAccessThis: \"by accessing the dev menu.\",\n TrueRecursion: \"by truly recursing.\",\n INeedARainbow: \"by using the power of the rainbow.\",\n};\n\nexport function ExploitName(exploit: string): string {\n return names[exploit];\n}\n\nexport function sanitizeExploits(exploits: Exploit[]): Exploit[] {\n exploits = exploits.filter((e: Exploit) => Object.keys(Exploit).includes(e));\n return [...new Set(exploits)];\n}\n","import { loadAliases, loadGlobalAliases, Aliases, GlobalAliases } from \"./Alias\";\nimport { Companies, loadCompanies } from \"./Company/Companies\";\nimport { CONSTANTS } from \"./Constants\";\nimport { Factions, loadFactions } from \"./Faction/Factions\";\nimport { loadAllGangs, AllGangs } from \"./Gang/AllGangs\";\nimport { loadMessages, initMessages, Messages } from \"./Message/MessageHelpers\";\nimport { Player, loadPlayer } from \"./Player\";\nimport { saveAllServers, loadAllServers, GetAllServers } from \"./Server/AllServers\";\nimport { Settings } from \"./Settings/Settings\";\nimport { SourceFileFlags } from \"./SourceFile/SourceFileFlags\";\nimport { loadStockMarket, StockMarket } from \"./StockMarket/StockMarket\";\nimport { staneksGift, loadStaneksGift } from \"./CotMG/Helper\";\n\nimport { SnackbarEvents } from \"./ui/React/Snackbar\";\n\nimport * as ExportBonus from \"./ExportBonus\";\n\nimport { dialogBoxCreate } from \"./ui/React/DialogBox\";\nimport { Reviver, Generic_toJSON, Generic_fromJSON } from \"./utils/JSONReviver\";\nimport { save } from \"./db\";\nimport { v1APIBreak } from \"./utils/v1APIBreak\";\nimport { AugmentationNames } from \"./Augmentation/data/AugmentationNames\";\nimport { PlayerOwnedAugmentation } from \"./Augmentation/PlayerOwnedAugmentation\";\nimport { LocationName } from \"./Locations/data/LocationNames\";\nimport { SxProps } from \"@mui/system\";\nimport { PlayerObject } from \"./PersonObjects/Player/PlayerObject\";\nimport { pushGameSaved } from \"./Electron\";\n\n/* SaveObject.js\n * Defines the object used to save/load games\n */\n\nexport interface SaveData {\n playerIdentifier: string;\n fileName: string;\n save: string;\n savedOn: number;\n}\n\nexport interface ImportData {\n base64: string;\n parsed: any;\n playerData?: ImportPlayerData;\n}\n\nexport interface ImportPlayerData {\n identifier: string;\n lastSave: number;\n totalPlaytime: number;\n\n money: number;\n hacking: number;\n\n augmentations: number;\n factions: number;\n achievements: number;\n\n bitNode: number;\n bitNodeLevel: number;\n sourceFiles: number;\n}\n\nclass BitburnerSaveObject {\n PlayerSave = \"\";\n AllServersSave = \"\";\n CompaniesSave = \"\";\n FactionsSave = \"\";\n AliasesSave = \"\";\n GlobalAliasesSave = \"\";\n MessagesSave = \"\";\n StockMarketSave = \"\";\n SettingsSave = \"\";\n VersionSave = \"\";\n AllGangsSave = \"\";\n LastExportBonus = \"\";\n StaneksGiftSave = \"\";\n\n getSaveString(excludeRunningScripts = false): string {\n this.PlayerSave = JSON.stringify(Player);\n\n this.AllServersSave = saveAllServers(excludeRunningScripts);\n this.CompaniesSave = JSON.stringify(Companies);\n this.FactionsSave = JSON.stringify(Factions);\n this.AliasesSave = JSON.stringify(Aliases);\n this.GlobalAliasesSave = JSON.stringify(GlobalAliases);\n this.MessagesSave = JSON.stringify(Messages);\n this.StockMarketSave = JSON.stringify(StockMarket);\n this.SettingsSave = JSON.stringify(Settings);\n this.VersionSave = JSON.stringify(CONSTANTS.VersionNumber);\n this.LastExportBonus = JSON.stringify(ExportBonus.LastExportBonus);\n this.StaneksGiftSave = JSON.stringify(staneksGift);\n\n if (Player.inGang()) {\n this.AllGangsSave = JSON.stringify(AllGangs);\n }\n const saveString = btoa(unescape(encodeURIComponent(JSON.stringify(this))));\n\n return saveString;\n }\n\n saveGame(emitToastEvent = true): Promise {\n const savedOn = new Date().getTime();\n Player.lastSave = savedOn;\n const saveString = this.getSaveString(Settings.ExcludeRunningScriptsFromSave);\n return new Promise((resolve, reject) => {\n save(saveString)\n .then(() => {\n const saveData: SaveData = {\n playerIdentifier: Player.identifier,\n fileName: this.getSaveFileName(),\n save: saveString,\n savedOn,\n };\n pushGameSaved(saveData);\n\n if (emitToastEvent) {\n SnackbarEvents.emit(\"Game Saved!\", \"info\", 2000);\n }\n return resolve();\n })\n .catch((err) => {\n console.error(err);\n return reject();\n });\n });\n }\n\n getSaveFileName(isRecovery = false): string {\n // Save file name is based on current timestamp and BitNode\n const epochTime = Math.round(Date.now() / 1000);\n const bn = Player.bitNodeN;\n let filename = `bitburnerSave_${epochTime}_BN${bn}x${SourceFileFlags[bn]}.json`;\n if (isRecovery) filename = \"RECOVERY\" + filename;\n return filename;\n }\n\n exportGame(): void {\n const saveString = this.getSaveString(Settings.ExcludeRunningScriptsFromSave);\n const filename = this.getSaveFileName();\n download(filename, saveString);\n }\n\n importGame(base64Save: string, reload = true): Promise {\n if (!base64Save || base64Save === \"\") throw new Error(\"Invalid import string\");\n return save(base64Save).then(() => {\n if (reload) setTimeout(() => location.reload(), 1000);\n return Promise.resolve();\n });\n }\n\n getImportStringFromFile(files: FileList | null): Promise {\n if (files === null) return Promise.reject(new Error(\"No file selected\"));\n const file = files[0];\n if (!file) return Promise.reject(new Error(\"Invalid file selected\"));\n\n const reader = new FileReader();\n const promise: Promise = new Promise((resolve, reject) => {\n reader.onload = function (this: FileReader, e: ProgressEvent) {\n const target = e.target;\n if (target === null) {\n return reject(new Error(\"Error importing file\"));\n }\n const result = target.result;\n if (typeof result !== \"string\") {\n return reject(new Error(\"FileReader event was not type string\"));\n }\n const contents = result;\n resolve(contents);\n };\n });\n reader.readAsText(file);\n return promise;\n }\n\n async getImportDataFromString(base64Save: string): Promise {\n if (!base64Save || base64Save === \"\") throw new Error(\"Invalid import string\");\n\n let newSave;\n try {\n newSave = window.atob(base64Save);\n newSave = newSave.trim();\n } catch (error) {\n console.error(error); // We'll handle below\n }\n\n if (!newSave || newSave === \"\") {\n return Promise.reject(new Error(\"Save game had not content or was not base64 encoded\"));\n }\n\n let parsedSave;\n try {\n parsedSave = JSON.parse(newSave);\n } catch (error) {\n console.log(error); // We'll handle below\n }\n\n if (!parsedSave || parsedSave.ctor !== \"BitburnerSaveObject\" || !parsedSave.data) {\n return Promise.reject(new Error(\"Save game did not seem valid\"));\n }\n\n const data: ImportData = {\n base64: base64Save,\n parsed: parsedSave,\n };\n\n const importedPlayer = PlayerObject.fromJSON(JSON.parse(parsedSave.data.PlayerSave));\n\n const playerData: ImportPlayerData = {\n identifier: importedPlayer.identifier,\n lastSave: importedPlayer.lastSave,\n totalPlaytime: importedPlayer.totalPlaytime,\n\n money: importedPlayer.money,\n hacking: importedPlayer.hacking,\n\n augmentations: importedPlayer.augmentations?.reduce((total, current) => (total += current.level), 0) ?? 0,\n factions: importedPlayer.factions?.length ?? 0,\n achievements: importedPlayer.achievements?.length ?? 0,\n\n bitNode: importedPlayer.bitNodeN,\n bitNodeLevel: importedPlayer.sourceFileLvl(Player.bitNodeN) + 1,\n sourceFiles: importedPlayer.sourceFiles?.reduce((total, current) => (total += current.lvl), 0) ?? 0,\n };\n\n data.playerData = playerData;\n return Promise.resolve(data);\n }\n\n toJSON(): any {\n return Generic_toJSON(\"BitburnerSaveObject\", this);\n }\n\n static fromJSON(value: { data: any }): BitburnerSaveObject {\n return Generic_fromJSON(BitburnerSaveObject, value.data);\n }\n}\n\n// Makes necessary changes to the loaded/imported data to ensure\n// the game stills works with new versions\nfunction evaluateVersionCompatibility(ver: string | number): void {\n // We have to do this because ts won't let us otherwise\n const anyPlayer = Player as any;\n if (typeof ver === \"string\") {\n // This version refactored the Company/job-related code\n if (ver <= \"0.41.2\") {\n // Player's company position is now a string\n if (anyPlayer.companyPosition != null && typeof anyPlayer.companyPosition !== \"string\") {\n anyPlayer.companyPosition = anyPlayer.companyPosition.data.positionName;\n if (anyPlayer.companyPosition == null) {\n anyPlayer.companyPosition = \"\";\n }\n }\n\n // The \"companyName\" property of all Companies is renamed to \"name\"\n for (const companyName of Object.keys(Companies)) {\n const company: any = Companies[companyName];\n if (company.name == 0 && company.companyName != null) {\n company.name = company.companyName;\n }\n\n if (company.companyPositions instanceof Array) {\n const pos: any = {};\n\n for (let i = 0; i < company.companyPositions.length; ++i) {\n pos[company.companyPositions[i]] = true;\n }\n company.companyPositions = pos;\n }\n }\n }\n\n // This version allowed players to hold multiple jobs\n if (ver < \"0.43.0\") {\n if (anyPlayer.companyName !== \"\" && anyPlayer.companyPosition != null && anyPlayer.companyPosition !== \"\") {\n anyPlayer.jobs[anyPlayer.companyName] = anyPlayer.companyPosition;\n }\n\n delete anyPlayer.companyPosition;\n }\n if (ver < \"0.56.0\") {\n for (const q of anyPlayer.queuedAugmentations) {\n if (q.name === \"Graphene BranchiBlades Upgrade\") {\n q.name = \"Graphene BrachiBlades Upgrade\";\n }\n }\n for (const q of anyPlayer.augmentations) {\n if (q.name === \"Graphene BranchiBlades Upgrade\") {\n q.name = \"Graphene BrachiBlades Upgrade\";\n }\n }\n }\n if (ver < \"0.56.1\") {\n if (anyPlayer.bladeburner === 0) {\n anyPlayer.bladeburner = null;\n }\n if (anyPlayer.gang === 0) {\n anyPlayer.gang = null;\n }\n if (anyPlayer.corporation === 0) {\n anyPlayer.corporation = null;\n }\n // convert all Messages to just filename to save space.\n const home = anyPlayer.getHomeComputer();\n for (let i = 0; i < home.messages.length; i++) {\n if (home.messages[i].filename) {\n home.messages[i] = home.messages[i].filename;\n }\n }\n }\n if (ver < \"0.58.0\") {\n const changes: [RegExp, string][] = [\n [/getStockSymbols/g, \"stock.getSymbols\"],\n [/getStockPrice/g, \"stock.getPrice\"],\n [/getStockAskPrice/g, \"stock.getAskPrice\"],\n [/getStockBidPrice/g, \"stock.getBidPrice\"],\n [/getStockPosition/g, \"stock.getPosition\"],\n [/getStockMaxShares/g, \"stock.getMaxShares\"],\n [/getStockPurchaseCost/g, \"stock.getPurchaseCost\"],\n [/getStockSaleGain/g, \"stock.getSaleGain\"],\n [/buyStock/g, \"stock.buy\"],\n [/sellStock/g, \"stock.sell\"],\n [/shortStock/g, \"stock.short\"],\n [/sellShort/g, \"stock.sellShort\"],\n [/placeOrder/g, \"stock.placeOrder\"],\n [/cancelOrder/g, \"stock.cancelOrder\"],\n [/getOrders/g, \"stock.getOrders\"],\n [/getStockVolatility/g, \"stock.getVolatility\"],\n [/getStockForecast/g, \"stock.getForecast\"],\n [/purchase4SMarketData/g, \"stock.purchase4SMarketData\"],\n [/purchase4SMarketDataTixApi/g, \"stock.purchase4SMarketDataTixApi\"],\n ];\n function convert(code: string): string {\n for (const change of changes) {\n code = code.replace(change[0], change[1]);\n }\n return code;\n }\n for (const server of GetAllServers()) {\n for (const script of server.scripts) {\n script.code = convert(script.code);\n }\n }\n }\n v1APIBreak();\n ver = 1;\n }\n if (typeof ver === \"number\") {\n if (ver < 2) {\n // Give 10 neuroflux because v1 API break.\n const nf = Player.augmentations.find((a) => a.name === AugmentationNames.NeuroFluxGovernor);\n if (nf) {\n nf.level += 10;\n } else {\n const nf = new PlayerOwnedAugmentation(AugmentationNames.NeuroFluxGovernor);\n nf.level = 10;\n Player.augmentations.push(nf);\n }\n Player.reapplyAllAugmentations(true);\n Player.reapplyAllSourceFiles();\n }\n if (ver < 3) {\n anyPlayer.money = parseFloat(anyPlayer.money);\n if (anyPlayer.corporation) {\n anyPlayer.corporation.funds = parseFloat(anyPlayer.corporation.funds);\n anyPlayer.corporation.revenue = parseFloat(anyPlayer.corporation.revenue);\n anyPlayer.corporation.expenses = parseFloat(anyPlayer.corporation.expenses);\n\n for (let i = 0; i < anyPlayer.corporation.divisions.length; ++i) {\n const ind = anyPlayer.corporation.divisions[i];\n ind.lastCycleRevenue = parseFloat(ind.lastCycleRevenue);\n ind.lastCycleExpenses = parseFloat(ind.lastCycleExpenses);\n ind.thisCycleRevenue = parseFloat(ind.thisCycleRevenue);\n ind.thisCycleExpenses = parseFloat(ind.thisCycleExpenses);\n }\n }\n }\n if (ver < 9) {\n if (StockMarket.hasOwnProperty(\"Joes Guns\")) {\n const s = StockMarket[\"Joes Guns\"];\n delete StockMarket[\"Joes Guns\"];\n StockMarket[LocationName.Sector12JoesGuns] = s;\n }\n }\n if (ver < 10) {\n // Augmentation name was changed in 0.56.0 but sleeves aug list was missed.\n if (anyPlayer.sleeves && anyPlayer.sleeves.length > 0) {\n for (const sleeve of anyPlayer.sleeves) {\n if (!sleeve.augmentations || sleeve.augmentations.length === 0) continue;\n for (const augmentation of sleeve.augmentations) {\n if (augmentation.name !== \"Graphene BranchiBlades Upgrade\") continue;\n augmentation.name = \"Graphene BrachiBlades Upgrade\";\n }\n }\n }\n }\n if (ver < 12) {\n if (anyPlayer.resleeves !== undefined) {\n delete anyPlayer.resleeves;\n }\n }\n }\n}\n\nfunction loadGame(saveString: string): boolean {\n createScamUpdateText();\n if (!saveString) return false;\n saveString = decodeURIComponent(escape(atob(saveString)));\n\n const saveObj = JSON.parse(saveString, Reviver);\n\n loadPlayer(saveObj.PlayerSave);\n loadAllServers(saveObj.AllServersSave);\n loadCompanies(saveObj.CompaniesSave);\n loadFactions(saveObj.FactionsSave);\n\n if (saveObj.hasOwnProperty(\"StaneksGiftSave\")) {\n loadStaneksGift(saveObj.StaneksGiftSave);\n } else {\n console.warn(`Could not load Staneks Gift from save`);\n loadStaneksGift(\"\");\n }\n if (saveObj.hasOwnProperty(\"AliasesSave\")) {\n try {\n loadAliases(saveObj.AliasesSave);\n } catch (e) {\n console.warn(`Could not load Aliases from save`);\n loadAliases(\"\");\n }\n } else {\n console.warn(`Save file did not contain an Aliases property`);\n loadAliases(\"\");\n }\n if (saveObj.hasOwnProperty(\"GlobalAliasesSave\")) {\n try {\n loadGlobalAliases(saveObj.GlobalAliasesSave);\n } catch (e) {\n console.warn(`Could not load GlobalAliases from save`);\n loadGlobalAliases(\"\");\n }\n } else {\n console.warn(`Save file did not contain a GlobalAliases property`);\n loadGlobalAliases(\"\");\n }\n if (saveObj.hasOwnProperty(\"MessagesSave\")) {\n try {\n loadMessages(saveObj.MessagesSave);\n } catch (e) {\n console.warn(`Could not load Messages from save`);\n initMessages();\n }\n } else {\n console.warn(`Save file did not contain a Messages property`);\n initMessages();\n }\n if (saveObj.hasOwnProperty(\"StockMarketSave\")) {\n try {\n loadStockMarket(saveObj.StockMarketSave);\n } catch (e) {\n loadStockMarket(\"\");\n }\n } else {\n loadStockMarket(\"\");\n }\n if (saveObj.hasOwnProperty(\"SettingsSave\")) {\n try {\n Settings.load(saveObj.SettingsSave);\n } catch (e) {\n console.error(\"ERROR: Failed to parse Settings. Re-initing default values\");\n Settings.init();\n }\n } else {\n Settings.init();\n }\n if (saveObj.hasOwnProperty(\"LastExportBonus\")) {\n try {\n ExportBonus.setLastExportBonus(JSON.parse(saveObj.LastExportBonus));\n } catch (err) {\n ExportBonus.setLastExportBonus(new Date().getTime());\n console.error(\"ERROR: Failed to parse last export bonus Settings \" + err);\n }\n }\n if (Player.inGang() && saveObj.hasOwnProperty(\"AllGangsSave\")) {\n try {\n loadAllGangs(saveObj.AllGangsSave);\n } catch (e) {\n console.error(\"ERROR: Failed to parse AllGangsSave: \" + e);\n }\n }\n if (saveObj.hasOwnProperty(\"VersionSave\")) {\n try {\n const ver = JSON.parse(saveObj.VersionSave, Reviver);\n evaluateVersionCompatibility(ver);\n if (window.location.href.toLowerCase().includes(\"bitburner-beta\")) {\n // Beta branch, always show changes\n createBetaUpdateText();\n } else if (ver !== CONSTANTS.VersionNumber) {\n createNewUpdateText();\n }\n } catch (e) {\n createNewUpdateText();\n }\n } else {\n createNewUpdateText();\n }\n return true;\n}\n\nfunction createScamUpdateText(): void {\n if (navigator.userAgent.indexOf(\"wv\") !== -1 && navigator.userAgent.indexOf(\"Chrome/\") !== -1) {\n setInterval(() => {\n dialogBoxCreate(\"SCAM ALERT. This app is not official and you should uninstall it.\");\n }, 1000);\n }\n}\n\nconst resets: SxProps = {\n \"& h1, & h2, & h3, & h4, & p, & a, & ul\": {\n margin: 0,\n color: Settings.theme.primary,\n whiteSpace: \"initial\",\n },\n \"& ul\": {\n paddingLeft: \"1.5em\",\n lineHeight: 1.5,\n },\n};\n\nfunction createNewUpdateText(): void {\n setTimeout(\n () =>\n dialogBoxCreate(\n \"New update! \" +\n \"Please report any bugs/issues through the github repository \" +\n \"or the Bitburner subreddit (reddit.com/r/bitburner).
\" +\n CONSTANTS.LatestUpdate,\n resets,\n ),\n 1000,\n );\n}\n\nfunction createBetaUpdateText(): void {\n dialogBoxCreate(\n \"You are playing on the beta environment! This branch of the game \" +\n \"features the latest developments in the game. This version may be unstable. \" +\n \"Please report any bugs/issues through the github repository (https://github.com/danielyxie/bitburner/issues) \" +\n \"or the Bitburner subreddit (reddit.com/r/bitburner).
\" +\n CONSTANTS.LatestUpdate,\n resets,\n );\n}\n\nfunction download(filename: string, content: string): void {\n const file = new Blob([content], { type: \"text/plain\" });\n const navigator = window.navigator as any;\n if (navigator.msSaveOrOpenBlob) {\n // IE10+\n navigator.msSaveOrOpenBlob(file, filename);\n } else {\n // Others\n const a = document.createElement(\"a\"),\n url = URL.createObjectURL(file);\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(function () {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n}\n\nReviver.constructors.BitburnerSaveObject = BitburnerSaveObject;\n\nexport { saveObject, loadGame, download };\n\nconst saveObject = new BitburnerSaveObject();\n","import { isString } from \"./utils/helpers/isString\";\nimport { GetServer } from \"./Server/AllServers\";\nimport { WorkerScript } from \"./Netscript/WorkerScript\";\n\nexport function netscriptDelay(time: number, workerScript: WorkerScript): Promise {\n if (workerScript.delayReject) workerScript.delayReject();\n return new Promise(function (resolve, reject) {\n workerScript.delay = window.setTimeout(() => {\n workerScript.delay = null;\n workerScript.delayReject = undefined;\n\n if (workerScript.env.stopFlag) reject(workerScript);\n else resolve();\n }, time);\n workerScript.delayReject = reject;\n });\n}\n\nexport function makeRuntimeRejectMsg(workerScript: WorkerScript, msg: string): string {\n const server = GetServer(workerScript.hostname);\n if (server == null) {\n throw new Error(`WorkerScript constructed with invalid server ip: ${workerScript.hostname}`);\n }\n\n for (const scriptUrl of workerScript.scriptRef.dependencies) {\n // Return just the original msg if it's nullish so that we don't get a workerscript error\n msg = msg?.replace(new RegExp(scriptUrl.url, \"g\"), scriptUrl.filename) ?? msg;\n }\n\n return \"|DELIMITER|\" + server.hostname + \"|DELIMITER|\" + workerScript.name + \"|DELIMITER|\" + msg;\n}\n\nexport function resolveNetscriptRequestedThreads(\n workerScript: WorkerScript,\n functionName: string,\n requestedThreads: number,\n): number {\n const threads = workerScript.scriptRef.threads;\n if (!requestedThreads) {\n return isNaN(threads) || threads < 1 ? 1 : threads;\n }\n const requestedThreadsAsInt = requestedThreads | 0;\n if (isNaN(requestedThreads) || requestedThreadsAsInt < 1) {\n throw makeRuntimeRejectMsg(\n workerScript,\n `Invalid thread count passed to ${functionName}: ${requestedThreads}. Threads must be a positive number.`,\n );\n }\n if (requestedThreadsAsInt > threads) {\n throw makeRuntimeRejectMsg(\n workerScript,\n `Too many threads requested by ${functionName}. Requested: ${requestedThreads}. Has: ${threads}.`,\n );\n }\n return requestedThreadsAsInt;\n}\n\nexport function isScriptErrorMessage(msg: string): boolean {\n if (!isString(msg)) {\n return false;\n }\n const splitMsg = msg.split(\"|DELIMITER|\");\n return splitMsg.length == 4;\n}\n","import React from \"react\";\nimport { numeralWrapper } from \"../numeralFormat\";\nimport { Money } from \"./Money\";\n\nexport function MoneyRate({ money }: { money: number }): JSX.Element {\n return ;\n}\n","import { codingContractTypesMetadata, DescriptionFunc, GeneratorFunc, SolverFunc } from \"./data/codingcontracttypes\";\n\nimport { IMap } from \"./types\";\n\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"./utils/JSONReviver\";\nimport { CodingContractEvent } from \"./ui/React/CodingContractModal\";\n\n/* tslint:disable:no-magic-numbers completed-docs max-classes-per-file no-console */\n\n/* Represents different types of problems that a Coding Contract can have */\nclass CodingContractType {\n /**\n * Function that generates a description of the problem\n */\n desc: DescriptionFunc;\n\n /**\n * Number that generally represents the problem's difficulty. Bigger numbers = harder\n */\n difficulty: number;\n\n /**\n * A function that randomly generates a valid 'data' for the problem\n */\n generate: GeneratorFunc;\n\n /**\n * Name of the type of problem\n */\n name: string;\n\n /**\n * The maximum number of tries the player gets on this kind of problem before it self-destructs\n */\n numTries: number;\n\n /**\n * Stores a function that checks if the provided answer is correct\n */\n solver: SolverFunc;\n\n constructor(\n name: string,\n desc: DescriptionFunc,\n gen: GeneratorFunc,\n solver: SolverFunc,\n diff: number,\n numTries: number,\n ) {\n this.name = name;\n this.desc = desc;\n this.generate = gen;\n this.solver = solver;\n this.difficulty = diff;\n this.numTries = numTries;\n }\n}\n\n/* Contract Types */\n// tslint:disable-next-line\nexport const CodingContractTypes: IMap = {};\n\nfor (const md of codingContractTypesMetadata) {\n // tslint:disable-next-line\n CodingContractTypes[md.name] = new CodingContractType(\n md.name,\n md.desc,\n md.gen,\n md.solver,\n md.difficulty,\n md.numTries,\n );\n}\n\n/**\n * Enum representing the different types of rewards a Coding Contract can give\n */\nexport enum CodingContractRewardType {\n FactionReputation,\n FactionReputationAll,\n CompanyReputation,\n Money, // This must always be the last reward type\n}\n\n/**\n * Enum representing the result when trying to solve the Contract\n */\nexport enum CodingContractResult {\n Success,\n Failure,\n Cancelled,\n}\n\n/**\n * A class that represents the type of reward a contract gives\n */\nexport interface ICodingContractReward {\n /* Name of Company/Faction name for reward, if applicable */\n name?: string;\n type: CodingContractRewardType;\n}\n\n/**\n * A Coding Contract is a file that poses a programming-related problem to the Player.\n * The player receives a reward if the problem is solved correctly\n */\nexport class CodingContract {\n /* Relevant data for the contract's problem */\n data: any;\n\n /* Contract's filename */\n fn: string;\n\n /* Describes the reward given if this Contract is solved. The reward is actually\n processed outside of this file */\n reward: ICodingContractReward | null;\n\n /* Number of times the Contract has been attempted */\n tries = 0;\n\n /* String representing the contract's type. Must match type in ContractTypes */\n type: string;\n\n constructor(fn = \"\", type = \"Find Largest Prime Factor\", reward: ICodingContractReward | null = null) {\n this.fn = fn;\n if (!this.fn.endsWith(\".cct\")) {\n this.fn += \".cct\";\n }\n\n // tslint:disable-next-line\n if (CodingContractTypes[type] == null) {\n throw new Error(`Error: invalid contract type: ${type} please contact developer`);\n }\n\n this.type = type;\n this.data = CodingContractTypes[type].generate();\n this.reward = reward;\n }\n\n getData(): any {\n return this.data;\n }\n\n getDescription(): string {\n return CodingContractTypes[this.type].desc(this.data);\n }\n\n getDifficulty(): number {\n return CodingContractTypes[this.type].difficulty;\n }\n\n getMaxNumTries(): number {\n return CodingContractTypes[this.type].numTries;\n }\n\n getType(): string {\n return CodingContractTypes[this.type].name;\n }\n\n isSolution(solution: string): boolean {\n return CodingContractTypes[this.type].solver(this.data, solution);\n }\n\n /**\n * Creates a popup to prompt the player to solve the problem\n */\n async prompt(): Promise {\n return new Promise((resolve) => {\n const props = {\n c: this,\n onClose: () => {\n resolve(CodingContractResult.Cancelled);\n },\n onAttempt: (val: string) => {\n if (this.isSolution(val)) {\n resolve(CodingContractResult.Success);\n } else {\n resolve(CodingContractResult.Failure);\n }\n },\n };\n CodingContractEvent.emit(props);\n });\n }\n\n /**\n * Serialize the current file to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"CodingContract\", this);\n }\n\n /**\n * Initiatizes a CodingContract from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): CodingContract {\n return Generic_fromJSON(CodingContract, value.data);\n }\n}\n\nReviver.constructors.CodingContract = CodingContract;\n","export enum OrderTypes {\n LimitBuy = \"Limit Buy Order\",\n LimitSell = \"Limit Sell Order\",\n StopBuy = \"Stop Buy Order\",\n StopSell = \"Stop Sell Order\",\n}\n","import * as React from \"react\";\nimport { numeralWrapper } from \"../numeralFormat\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n reputation: {\n color: theme.colors.rep,\n },\n }),\n);\n\nexport function Reputation({ reputation }: { reputation: number | string }): React.ReactElement {\n const classes = useStyles();\n return (\n \n {typeof reputation === \"number\" ? numeralWrapper.formatReputation(reputation) : reputation}\n \n );\n}\n","import { Reviver } from \"../utils/JSONReviver\";\n\nimport { IStaneksGift } from \"./IStaneksGift\";\nimport { StaneksGift } from \"./StaneksGift\";\n\nexport let staneksGift: IStaneksGift = new StaneksGift();\n\nexport function loadStaneksGift(saveString: string): void {\n if (saveString) {\n staneksGift = JSON.parse(saveString, Reviver);\n } else {\n staneksGift = new StaneksGift();\n }\n}\n","/**\n * Generic Event Emitter class following a subscribe/publish paradigm.\n */\nfunction uuidv4(): string {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nexport class EventEmitter {\n subscribers: { [key: string]: (...args: [...T]) => void | undefined } = {};\n\n subscribe(s: (...args: [...T]) => void): () => void {\n let uuid = uuidv4();\n while (this.subscribers[uuid] !== undefined) uuid = uuidv4();\n this.subscribers[uuid] = s;\n\n return () => {\n delete this.subscribers[uuid];\n };\n }\n\n emit(...args: [...T]): void {\n for (const s in this.subscribers) {\n const sub = this.subscribers[s];\n if (sub === undefined) continue;\n\n sub(...args);\n }\n }\n}\n","import React, { useState } from \"react\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport RemoveIcon from \"@mui/icons-material/Remove\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport DoubleArrowIcon from \"@mui/icons-material/DoubleArrow\";\nimport TextField from \"@mui/material/TextField\";\nimport Tooltip from \"@mui/material/Tooltip\";\n\ninterface IProps {\n label: string;\n placeholder: string;\n add: (x: number) => void;\n subtract: (x: number) => void;\n tons: () => void;\n reset: () => void;\n}\n\nexport function Adjuster(props: IProps): React.ReactElement {\n const [value, setValue] = useState(\"\");\n\n function onChange(event: React.ChangeEvent): void {\n if (event.target.value === \"\") setValue(\"\");\n else setValue(parseFloat(event.target.value));\n }\n\n const { label, placeholder, add, subtract, reset, tons } = props;\n return (\n <>\n \n \n \n \n \n \n \n add(typeof value !== \"string\" ? value : 0)} size=\"large\">\n \n \n \n >\n ),\n endAdornment: (\n <>\n \n subtract(typeof value !== \"string\" ? value : 0)} size=\"large\">\n \n \n \n \n \n \n \n \n >\n ),\n }}\n />\n >\n );\n}\n","// Defines the ResearchTree that is common to all Corporation Industries\n// i.e. all Industries have these types of Research available to unlock\nimport { Research } from \"../Research\";\nimport { ResearchMap } from \"../ResearchMap\";\nimport { ResearchTree, Node } from \"../ResearchTree\";\n\nfunction makeNode(name: string): Node {\n const research: Research | null = ResearchMap[name];\n if (research == null) {\n throw new Error(`Invalid research name: ${name}`);\n }\n\n return new Node({ text: research.name, cost: research.cost });\n}\n\n// Creates the Nodes for the BaseResearchTree.\n// Return the Root Node\nfunction createBaseResearchTreeNodes(): Node {\n const rootNode: Node = makeNode(\"Hi-Tech R&D Laboratory\");\n const autoBrew: Node = makeNode(\"AutoBrew\");\n const autoParty: Node = makeNode(\"AutoPartyManager\");\n const autoDrugs: Node = makeNode(\"Automatic Drug Administration\");\n const bulkPurchasing: Node = makeNode(\"Bulk Purchasing\");\n const cph4: Node = makeNode(\"CPH4 Injections\");\n const drones: Node = makeNode(\"Drones\");\n const dronesAssembly: Node = makeNode(\"Drones - Assembly\");\n const dronesTransport: Node = makeNode(\"Drones - Transport\");\n const goJuice: Node = makeNode(\"Go-Juice\");\n const hrRecruitment: Node = makeNode(\"HRBuddy-Recruitment\");\n const hrTraining: Node = makeNode(\"HRBuddy-Training\");\n const joywire: Node = makeNode(\"JoyWire\");\n const marketta1: Node = makeNode(\"Market-TA.I\");\n const marketta2: Node = makeNode(\"Market-TA.II\");\n const overclock: Node = makeNode(\"Overclock\");\n const scAssemblers: Node = makeNode(\"Self-Correcting Assemblers\");\n const stimu: Node = makeNode(\"Sti.mu\");\n\n autoDrugs.addChild(goJuice);\n autoDrugs.addChild(cph4);\n\n drones.addChild(dronesAssembly);\n drones.addChild(dronesTransport);\n\n hrRecruitment.addChild(hrTraining);\n\n marketta1.addChild(marketta2);\n\n overclock.addChild(stimu);\n\n rootNode.addChild(autoBrew);\n rootNode.addChild(autoParty);\n rootNode.addChild(autoDrugs);\n rootNode.addChild(bulkPurchasing);\n rootNode.addChild(drones);\n rootNode.addChild(hrRecruitment);\n rootNode.addChild(joywire);\n rootNode.addChild(marketta1);\n rootNode.addChild(overclock);\n rootNode.addChild(scAssemblers);\n\n return rootNode;\n}\n\nexport function getBaseResearchTreeCopy(): ResearchTree {\n const baseResearchTree: ResearchTree = new ResearchTree();\n baseResearchTree.setRoot(createBaseResearchTreeNodes());\n\n return baseResearchTree;\n}\n\n// Base Research Tree for Industry's that make products\nexport function getProductIndustryResearchTreeCopy(): ResearchTree {\n const researchTree: ResearchTree = new ResearchTree();\n const root = createBaseResearchTreeNodes();\n\n const upgradeFulcrum = makeNode(\"uPgrade: Fulcrum\");\n const upgradeCapacity1 = makeNode(\"uPgrade: Capacity.I\");\n const upgradeCapacity2 = makeNode(\"uPgrade: Capacity.II\");\n const upgradeDashboard = makeNode(\"uPgrade: Dashboard\");\n\n upgradeCapacity1.addChild(upgradeCapacity2);\n upgradeFulcrum.addChild(upgradeCapacity1);\n upgradeFulcrum.addChild(upgradeDashboard);\n root.addChild(upgradeFulcrum);\n\n researchTree.setRoot(root);\n\n return researchTree;\n}\n","import { GetServer, createUniqueRandomIp, ipExists } from \"./AllServers\";\nimport { Server, IConstructorParams } from \"./Server\";\nimport { BaseServer } from \"./BaseServer\";\nimport { calculateServerGrowth } from \"./formulas/grow\";\n\nimport { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\nimport { CONSTANTS } from \"../Constants\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { Programs } from \"../Programs/Programs\";\nimport { LiteratureNames } from \"../Literature/data/LiteratureNames\";\n\nimport { isValidNumber } from \"../utils/helpers/isValidNumber\";\n\n/**\n * Constructs a new server, while also ensuring that the new server\n * does not have a duplicate hostname/ip.\n */\nexport function safetlyCreateUniqueServer(params: IConstructorParams): Server {\n let hostname: string = params.hostname.replace(/ /g, `-`);\n\n if (params.ip != null && ipExists(params.ip)) {\n params.ip = createUniqueRandomIp();\n }\n\n if (GetServer(hostname) != null) {\n hostname = `${hostname}-0`;\n\n // Use a for loop to ensure that we don't get suck in an infinite loop somehow\n for (let i = 0; i < 200; ++i) {\n hostname = hostname.replace(/-[0-9]+$/, `-${i}`);\n if (GetServer(hostname) == null) {\n break;\n }\n }\n }\n\n params.hostname = hostname;\n return new Server(params);\n}\n\n/**\n * Returns the number of \"growth cycles\" needed to grow the specified server by the\n * specified amount.\n * @param server - Server being grown\n * @param growth - How much the server is being grown by, in DECIMAL form (e.g. 1.5 rather than 50)\n * @param p - Reference to Player object\n * @returns Number of \"growth cycles\" needed\n */\nexport function numCycleForGrowth(server: Server, growth: number, p: IPlayer, cores = 1): number {\n let ajdGrowthRate = 1 + (CONSTANTS.ServerBaseGrowthRate - 1) / server.hackDifficulty;\n if (ajdGrowthRate > CONSTANTS.ServerMaxGrowthRate) {\n ajdGrowthRate = CONSTANTS.ServerMaxGrowthRate;\n }\n\n const serverGrowthPercentage = server.serverGrowth / 100;\n\n const coreBonus = 1 + (cores - 1) / 16;\n const cycles =\n Math.log(growth) /\n (Math.log(ajdGrowthRate) *\n p.hacking_grow_mult *\n serverGrowthPercentage *\n BitNodeMultipliers.ServerGrowthRate *\n coreBonus);\n\n return cycles;\n}\n\n/**\n * Replacement function for the above function that accounts for the +$1/thread functionality of grow\n * with parameters that are the same (for compatibility), but functionality is slightly different.\n * This function can ONLY be used to calculate the threads needed for a given server in its current state,\n * and so wouldn't be appropriate to use for formulas.exe or ns.growthAnalyze (as those are meant to\n * provide theoretical scenarios, or inverse hack respectively). Players COULD use this function with a\n * custom server object with the correct moneyAvailable and moneyMax amounts, combined with a multiplier\n * correctly calculated to bring the server to a new moneyAvailable (ie, passing in moneyAvailable 300 and x2\n * when you want the number of threads required to grow that particular server from 300 to 600), and this\n * function would pass back the correct number of threads. But the key thing is that it doesn't just\n * inverse/undo a hack (since the amount hacked from/to matters, not just the multiplier).\n * The above is also a rather unnecessarily obtuse way of thinking about it for a formulas.exe type of\n * application, so another function with different parameters is provided for that case below this one.\n * Instead this function is meant to hand-off from the old numCycleForGrowth function to the new one\n * where used internally for pro-rating or the like. Where you have applied a grow and want to determine\n * how many threads were needed for THAT SPECIFIC grow case using a multiplier.\n * Ideally, this function, and the original function above will be depreciated to use the methodology\n * and inputs of the new function below this one. Even for internal cases (it's actually easier to do so).\n * @param server - Server being grown\n * @param growth - How much the server money is expected to be multiplied by (e.g. 1.5 for *1.5 / +50%)\n * @param p - Reference to Player object\n * @returns Number of \"growth cycles\" needed\n */\nexport function numCycleForGrowthTransition(server: Server, growth: number, p: IPlayer, cores = 1): number {\n return numCycleForGrowthCorrected(server, server.moneyAvailable * growth, server.moneyAvailable, p, cores);\n}\n\n/**\n * This function calculates the number of threads needed to grow a server from one $amount to a higher $amount\n * (ie, how many threads to grow this server from $200 to $600 for example). Used primarily for a formulas (or possibly growthAnalyze)\n * type of application. It lets you \"theorycraft\" and easily ask what-if type questions. It's also the one that implements the\n * main thread calculation algorithm, and so is the function all helper functions should call.\n * It protects the inputs (so putting in INFINITY for targetMoney will use moneyMax, putting in a negative for start will use 0, etc.)\n * @param server - Server being grown\n * @param targetMoney - How much you want the server grown TO (not by), for instance, to grow from 200 to 600, input 600\n * @param startMoney - How much you are growing the server from, for instance, to grow from 200 to 600, input 200\n * @param p - Reference to Player object\n * @returns Number of \"growth cycles\" needed\n */\nexport function numCycleForGrowthCorrected(\n server: Server,\n targetMoney: number,\n startMoney: number,\n p: IPlayer,\n cores = 1,\n): number {\n if (startMoney < 0) {\n startMoney = 0;\n } // servers \"can't\" have less than 0 dollars on them\n if (targetMoney > server.moneyMax) {\n targetMoney = server.moneyMax;\n } // can't grow a server to more than its moneyMax\n if (targetMoney <= startMoney) {\n return 0;\n } // no growth --> no threads\n\n // exponential base adjusted by security\n const adjGrowthRate = 1 + (CONSTANTS.ServerBaseGrowthRate - 1) / server.hackDifficulty;\n const exponentialBase = Math.min(adjGrowthRate, CONSTANTS.ServerMaxGrowthRate); // cap growth rate\n\n // total of all grow thread multipliers\n const serverGrowthPercentage = server.serverGrowth / 100.0;\n const coreMultiplier = 1 + (cores - 1) / 16;\n const threadMultiplier =\n serverGrowthPercentage * p.hacking_grow_mult * coreMultiplier * BitNodeMultipliers.ServerGrowthRate;\n\n /* To understand what is done below we need to do some math. I hope the explanation is clear enough.\n * First of, the names will be shortened for ease of manipulation:\n * n:= targetMoney (n for new), o:= startMoney (o for old), b:= exponentialBase, t:= threadMultiplier, c:= cycles/threads\n * c is what we are trying to compute.\n *\n * After growing, the money on a server is n = (o + c) * b^(c*t)\n * c appears in an exponent and outside it, this is usually solved using the productLog/lambert's W special function\n * this function will be noted W in the following\n * The idea behind lambert's W function is W(x)*exp(W(x)) = x, or in other words, solving for y, y*exp(y) = x, as a function of x\n * This function is provided in some advanced math library but we will compute it ourself here.\n *\n * Let's get back to solving the equation. It cannot be rewrote using W immediately because the base of the exponentiation is b\n * b^(c*t) = exp(ln(b)*c*t) (this is how a^b is defined on reals, it matches the definition on integers)\n * so n = (o + c) * exp(ln(b)*c*t) , W still cannot be used directly. We want to eliminate the other terms in 'o + c' and 'ln(b)*c*t'.\n *\n * A change of variable will do. The idea is to add an equation introducing a new variable (w here) in the form c = f(w) (for some f)\n * With this equation we will eliminate all references to c, then solve for w and plug the result in the new equation to get c.\n * The change of variable performed here should get rid of the unwanted terms mentionned above, c = w/(ln(b)*t) - o should help.\n * This change of variable is allowed because whatever the value of c is, there is a value of w such that this equation holds:\n * w = (c + o)*ln(b)*t (see how we used the terms we wanted to eliminate in order to build this variable change)\n *\n * We get n = (o + w/(ln(b)*t) - o) * exp(ln(b)*(w/(ln(b)*t) - o)*t) [ = w/(ln(b)*t) * exp(w - ln(b)*o*t) ]\n * The change of variable exposed exp(w - o*ln(b)*t), we can rewrite that with exp(a - b) = exp(a)/exp(b) to isolate 'w*exp(w)'\n * n = w/(ln(b)*t) * exp(w)/exp(ln(b)*o*t) [ = w*exp(w) / (ln(b) * t * b^(o*t)) ]\n * Almost there, we just need to cancel the denominator on the right side of the equation:\n * n * ln(b) * t * b^(o*t) = w*exp(w), Thus w = W(n * ln(b) * t * b^(o*t))\n * Finally we invert the variable change: c = W(n * ln(b) * t * b^(o*t))/(ln(b)*t) - o\n *\n * There is still an issue left: b^(o*t) doesn't fit inside a double precision float\n * because the typical amount of money on servers is arround 10^6~10^9\n * We need to get an approximation of W without computing the power when o is huge\n * Thankfully an approximation giving ~30% error uses log immediately so we will use\n * W(n * ln(b) * t * b^(o*t)) ~= log(n * ln(b) * t * b^(o*t)) = log(n * ln(b) * t) + log(exp(ln(b) * o * t))\n * = log(n * ln(b) * t) + ln(b) * o * t\n * (thanks to Drak for the grow formula, f4113nb34st and Wolfram Alpha for the rewrite, dwRchyngqxs for the explanation)\n */\n const x = threadMultiplier * Math.log(exponentialBase);\n const y = startMoney * x + Math.log(targetMoney * x);\n /* Code for the approximation of lambert's W function is adapted from\n * https://git.savannah.gnu.org/cgit/gsl.git/tree/specfunc/lambert.c\n * using the articles [1] https://doi.org/10.1007/BF02124750 (algorithm above)\n * and [2] https://doi.org/10.1145/361952.361970 (initial approximation when x < 2.5)\n */\n let w;\n if (y < Math.log(2.5)) {\n /* exp(y) can be safely computed without overflow.\n * The relative error on the result is better when exp(y) < 2.5\n * using Padé rational fraction approximation [2](5)\n */\n const ey = Math.exp(y);\n w = (ey + (4 / 3) * ey * ey) / (1 + (7 / 3) * ey + (5 / 6) * ey * ey);\n } else {\n /* obtain initial approximation from rough asymptotic [1](4.18)\n * w = y [- log y when 0 <= y]\n */\n w = y;\n if (y > 0) w -= Math.log(y);\n }\n let cycles = w / x - startMoney;\n\n /* Iterative refinement, the goal is to correct c until |(o + c) * b^(c*t) - n| < 1\n * or the correction on the approximation is less than 1\n * The Newton-Raphson method will be used, this method is a classic to find roots of functions\n * (given f, find c such that f(c) = 0).\n *\n * The idea of this method is to take the horizontal position at which the horizontal axis\n * intersects with of the tangent of the function's curve as the next approximation.\n * It is equivalent to treating the curve as a line (it is called a first order approximation)\n * If the current approximation is c then the new approximated value is c - f(c)/f'(c)\n * (where f' is the derivative of f).\n *\n * In our case f(c) = (o + c) * b^(c*t) - n, f'(c) = d((o + c) * b^(c*t) - n)/dc\n * = (ln(b)*t * (c + o) + 1) * b^(c*t)\n * And the update step is c[new] = c[old] - ((o + c) * b^(c*t) - n)/((ln(b)*t * (o + c) + 1) * b^(c*t))\n *\n * The main question to ask when using this method is \"does it converges?\"\n * (are the approximations getting better?), if it does then it does quickly.\n * DOES IT CONVERGES? In the present case it does. The reason why doesn't help explaining the algorithm.\n * If you are intrested then check out the wikipedia page.\n */\n const bt = exponentialBase ** threadMultiplier;\n let corr = Infinity;\n // Two sided error because we do not want to get stuck if the error stays on the wrong side\n do {\n // c should be above 0 so Halley's method can't be used, we have to stick to Newton-Raphson\n const bct = bt ** cycles;\n const opc = startMoney + cycles;\n const diff = opc * bct - targetMoney;\n corr = diff / (opc * x + 1.0) / bct;\n cycles -= corr;\n } while (Math.abs(corr) >= 1);\n /* c is now within +/- 1 of the exact result.\n * We want the ceiling of the exact result, so the floor if the approximation is above,\n * the ceiling if the approximation is in the same unit as the exact result,\n * and the ceiling + 1 if the approximation is below.\n */\n const fca = Math.floor(cycles);\n if (targetMoney <= (startMoney + fca) * Math.pow(exponentialBase, fca * threadMultiplier)) {\n return fca;\n }\n const cca = Math.ceil(cycles);\n if (targetMoney <= (startMoney + cca) * Math.pow(exponentialBase, cca * threadMultiplier)) {\n return cca;\n }\n return cca + 1;\n}\n\n/**\n * This function calculates the number of threads needed to grow a server based on a pre-hack money and hackAmt\n * (ie, if you're hacking a server with $1e6 moneyAvail for 60%, this function will tell you how many threads to regrow it\n * A good replacement for the current ns.growthAnalyze if you want players to have more control/responsibility\n * @param server - Server being grown\n * @param hackProp - the proportion of money hacked (total, not per thread, like 0.60 for hacking 60% of available money)\n * @param prehackMoney - how much money the server had before being hacked (like 200000 for hacking a server that had $200000 on it at time of hacking)\n * @param p - Reference to Player object\n * @returns Number of \"growth cycles\" needed to reverse the described hack\n */\nexport function numCycleForGrowthByHackAmt(\n server: Server,\n hackProp: number,\n prehackMoney: number,\n p: IPlayer,\n cores = 1,\n): number {\n if (prehackMoney > server.moneyMax) prehackMoney = server.moneyMax;\n const posthackMoney = Math.floor(prehackMoney * Math.min(1, Math.max(0, 1 - hackProp)));\n return numCycleForGrowthCorrected(server, prehackMoney, posthackMoney, p, cores);\n}\n\n/**\n * This function calculates the number of threads needed to grow a server based on an expected growth multiplier assuming it will max out\n * (ie, if you expect to grow a server by 60% to reach maxMoney, this function will tell you how many threads to grow it)\n * PROBABLY the best replacement for the current ns.growthAnalyze to maintain existing scripts\n * @param server - Server being grown\n * @param growth - How much the server is being grown by, as a multiple in DECIMAL form (e.g. 1.5 rather than 50). Infinity is acceptable.\n * @param p - Reference to Player object\n * @returns Number of \"growth cycles\" needed\n */\nexport function numCycleForGrowthByMultiplier(server: Server, growth: number, p: IPlayer, cores = 1): number {\n if (growth < 1.0) growth = 1.0;\n const targetMoney = server.moneyMax;\n const startingMoney = server.moneyMax / growth;\n return numCycleForGrowthCorrected(server, targetMoney, startingMoney, p, cores);\n}\n\n//Applied server growth for a single server. Returns the percentage growth\nexport function processSingleServerGrowth(server: Server, threads: number, p: IPlayer, cores = 1): number {\n let serverGrowth = calculateServerGrowth(server, threads, p, cores);\n if (serverGrowth < 1) {\n console.warn(\"serverGrowth calculated to be less than 1\");\n serverGrowth = 1;\n }\n\n const oldMoneyAvailable = server.moneyAvailable;\n server.moneyAvailable += 1 * threads; // It can be grown even if it has no money\n server.moneyAvailable *= serverGrowth;\n\n // in case of data corruption\n if (isValidNumber(server.moneyMax) && isNaN(server.moneyAvailable)) {\n server.moneyAvailable = server.moneyMax;\n }\n\n // cap at max\n if (isValidNumber(server.moneyMax) && server.moneyAvailable > server.moneyMax) {\n server.moneyAvailable = server.moneyMax;\n }\n\n // if there was any growth at all, increase security\n if (oldMoneyAvailable !== server.moneyAvailable) {\n let usedCycles = numCycleForGrowthCorrected(server, server.moneyAvailable, oldMoneyAvailable, p, cores);\n // Growing increases server security twice as much as hacking\n usedCycles = Math.min(Math.max(0, Math.ceil(usedCycles)), threads);\n server.fortify(2 * CONSTANTS.ServerFortifyAmount * usedCycles);\n }\n return server.moneyAvailable / oldMoneyAvailable;\n}\n\nexport function prestigeHomeComputer(player: IPlayer, homeComp: Server): void {\n const hasBitflume = homeComp.programs.includes(Programs.BitFlume.name);\n\n homeComp.programs.length = 0; //Remove programs\n homeComp.runningScripts = [];\n homeComp.serversOnNetwork = [];\n homeComp.isConnectedTo = true;\n homeComp.ramUsed = 0;\n homeComp.programs.push(Programs.NukeProgram.name);\n if (hasBitflume) {\n homeComp.programs.push(Programs.BitFlume.name);\n }\n\n //Update RAM usage on all scripts\n homeComp.scripts.forEach(function (script) {\n script.updateRamUsage(player, homeComp.scripts);\n });\n\n homeComp.messages.length = 0; //Remove .lit and .msg files\n homeComp.messages.push(LiteratureNames.HackersStartingHandbook);\n}\n\n// Returns the i-th server on the specified server's network\n// A Server's serverOnNetwork property holds only the IPs. This function returns\n// the actual Server object\nexport function getServerOnNetwork(server: BaseServer, i: number): BaseServer | null {\n if (i > server.serversOnNetwork.length) {\n console.error(\"Tried to get server on network that was out of range\");\n return null;\n }\n\n return GetServer(server.serversOnNetwork[i]);\n}\n\nexport function isBackdoorInstalled(server: BaseServer): boolean {\n if (server instanceof Server) {\n return server.backdoorInstalled;\n }\n return false;\n}\n","import { Augmentation } from \"./Augmentation\";\nimport { Augmentations } from \"./Augmentations\";\nimport { PlayerOwnedAugmentation, IPlayerOwnedAugmentation } from \"./PlayerOwnedAugmentation\";\nimport { AugmentationNames } from \"./data/AugmentationNames\";\n\nimport { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\nimport { CONSTANTS } from \"../Constants\";\nimport { Factions, factionExists } from \"../Faction/Factions\";\nimport { Player } from \"../Player\";\nimport { prestigeAugmentation } from \"../Prestige\";\nimport { SourceFileFlags } from \"../SourceFile/SourceFileFlags\";\n\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { clearObject } from \"../utils/helpers/clearObject\";\n\nimport { FactionNames } from \"../Faction/data/FactionNames\";\nimport {\n initBladeburnerAugmentations,\n initChurchOfTheMachineGodAugmentations,\n initGeneralAugmentations,\n initNeuroFluxGovernor,\n initUnstableCircadianModulator,\n} from \"./AugmentationCreator\";\n\nexport function AddToAugmentations(aug: Augmentation): void {\n const name = aug.name;\n Augmentations[name] = aug;\n}\n\nexport function getNextNeuroFluxLevel(): number {\n // Get current Neuroflux level based on Player's augmentations\n let currLevel = 0;\n for (let i = 0; i < Player.augmentations.length; ++i) {\n if (Player.augmentations[i].name === AugmentationNames.NeuroFluxGovernor) {\n currLevel = Player.augmentations[i].level;\n }\n }\n\n // Account for purchased but uninstalled Augmentations\n for (let i = 0; i < Player.queuedAugmentations.length; ++i) {\n if (Player.queuedAugmentations[i].name == AugmentationNames.NeuroFluxGovernor) {\n ++currLevel;\n }\n }\n return currLevel + 1;\n}\n\nfunction createAugmentations(): void {\n [\n initNeuroFluxGovernor(),\n initUnstableCircadianModulator(),\n ...initGeneralAugmentations(),\n ...(factionExists(FactionNames.Bladeburners) ? initBladeburnerAugmentations() : []),\n ...(factionExists(FactionNames.ChurchOfTheMachineGod) ? initChurchOfTheMachineGodAugmentations() : []),\n ].map(resetAugmentation);\n}\n\nfunction resetFactionAugmentations(): void {\n for (const name of Object.keys(Factions)) {\n if (Factions.hasOwnProperty(name)) {\n Factions[name].augmentations = [];\n }\n }\n}\n\nfunction initAugmentations(): void {\n resetFactionAugmentations();\n clearObject(Augmentations);\n createAugmentations();\n updateAugmentationCosts();\n Player.reapplyAllAugmentations();\n}\n\nfunction getBaseAugmentationPriceMultiplier(): number {\n return CONSTANTS.MultipleAugMultiplier * [1, 0.96, 0.94, 0.93][SourceFileFlags[11]];\n}\nexport function getGenericAugmentationPriceMultiplier(): number {\n return Math.pow(getBaseAugmentationPriceMultiplier(), Player.queuedAugmentations.length);\n}\n\nfunction updateNeuroFluxGovernorCosts(neuroFluxGovernorAugmentation: Augmentation): void {\n let nextLevel = getNextNeuroFluxLevel();\n --nextLevel;\n const multiplier = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, nextLevel);\n neuroFluxGovernorAugmentation.baseRepRequirement *= multiplier * BitNodeMultipliers.AugmentationRepCost;\n neuroFluxGovernorAugmentation.baseCost *= multiplier * BitNodeMultipliers.AugmentationMoneyCost;\n\n for (let i = 0; i < Player.queuedAugmentations.length - 1; ++i) {\n neuroFluxGovernorAugmentation.baseCost *= getBaseAugmentationPriceMultiplier();\n }\n}\n\nexport function updateAugmentationCosts(): void {\n for (const name of Object.keys(Augmentations)) {\n if (Augmentations.hasOwnProperty(name)) {\n const augmentationToUpdate = Augmentations[name];\n if (augmentationToUpdate.name === AugmentationNames.NeuroFluxGovernor) {\n updateNeuroFluxGovernorCosts(augmentationToUpdate);\n } else {\n augmentationToUpdate.baseCost =\n augmentationToUpdate.startingCost *\n getGenericAugmentationPriceMultiplier() *\n BitNodeMultipliers.AugmentationMoneyCost;\n }\n }\n }\n}\n\n//Resets an Augmentation during (re-initizliation)\nfunction resetAugmentation(aug: Augmentation): void {\n aug.addToFactions(aug.factions);\n const name = aug.name;\n if (augmentationExists(name)) {\n delete Augmentations[name];\n }\n AddToAugmentations(aug);\n}\n\nfunction applyAugmentation(aug: IPlayerOwnedAugmentation, reapply = false): void {\n Augmentations[aug.name].owned = true;\n\n const augObj = Augmentations[aug.name];\n\n // Apply multipliers\n for (const mult of Object.keys(augObj.mults)) {\n const v = Player.getMult(mult) * augObj.mults[mult];\n Player.setMult(mult, v);\n }\n\n // Special logic for NeuroFlux Governor\n if (aug.name === AugmentationNames.NeuroFluxGovernor) {\n if (!reapply) {\n Augmentations[aug.name].level = aug.level;\n for (let i = 0; i < Player.augmentations.length; ++i) {\n if (Player.augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {\n Player.augmentations[i].level = aug.level;\n return;\n // break;\n }\n }\n }\n }\n\n // Special logic for Congruity Implant\n if (aug.name === AugmentationNames.CongruityImplant && !reapply) {\n Player.entropy = 0;\n Player.applyEntropy(Player.entropy);\n }\n\n // Push onto Player's Augmentation list\n if (!reapply) {\n const ownedAug = new PlayerOwnedAugmentation(aug.name);\n Player.augmentations.push(ownedAug);\n }\n}\n\nfunction installAugmentations(force?: boolean): boolean {\n if (Player.queuedAugmentations.length == 0 && !force) {\n dialogBoxCreate(\"You have not purchased any Augmentations to install!\");\n return false;\n }\n let augmentationList = \"\";\n let nfgIndex = -1;\n for (let i = Player.queuedAugmentations.length - 1; i >= 0; i--) {\n if (Player.queuedAugmentations[i].name === AugmentationNames.NeuroFluxGovernor) {\n nfgIndex = i;\n break;\n }\n }\n for (let i = 0; i < Player.queuedAugmentations.length; ++i) {\n const ownedAug = Player.queuedAugmentations[i];\n const aug = Augmentations[ownedAug.name];\n if (aug == null) {\n console.error(`Invalid augmentation: ${ownedAug.name}`);\n continue;\n }\n\n applyAugmentation(Player.queuedAugmentations[i]);\n if (ownedAug.name === AugmentationNames.NeuroFluxGovernor && i !== nfgIndex) continue;\n\n let level = \"\";\n if (ownedAug.name === AugmentationNames.NeuroFluxGovernor) {\n level = ` - ${ownedAug.level}`;\n }\n augmentationList += aug.name + level + \" \";\n }\n Player.queuedAugmentations = [];\n if (!force) {\n dialogBoxCreate(\n \"You slowly drift to sleep as scientists put you under in order \" +\n \"to install the following Augmentations: \" +\n augmentationList +\n \" You wake up in your home...you feel different...\",\n );\n }\n prestigeAugmentation();\n return true;\n}\n\nfunction augmentationExists(name: string): boolean {\n return Augmentations.hasOwnProperty(name);\n}\n\nexport function isRepeatableAug(aug: Augmentation): boolean {\n const augName = aug instanceof Augmentation ? aug.name : aug;\n return augName === AugmentationNames.NeuroFluxGovernor;\n}\n\nexport { installAugmentations, initAugmentations, applyAugmentation, augmentationExists };\n","import { KEY } from \"../utils/helpers/keyCodes\";\n\nexport function random(min: number, max: number): number {\n return Math.random() * (max - min) + min;\n}\n\nexport const upArrowSymbol = \"↑\";\nexport const downArrowSymbol = \"↓\";\nexport const leftArrowSymbol = \"←\";\nexport const rightArrowSymbol = \"→\";\n\nexport function getArrow(event: KeyboardEvent): string {\n switch (event.key) {\n case KEY.UP_ARROW:\n case KEY.W:\n return upArrowSymbol;\n case KEY.LEFT_ARROW:\n case KEY.A:\n return leftArrowSymbol;\n case KEY.DOWN_ARROW:\n case KEY.S:\n return downArrowSymbol;\n case KEY.RIGHT_ARROW:\n case KEY.D:\n return rightArrowSymbol;\n }\n return \"\";\n}\n\nexport function getInverseArrow(event: KeyboardEvent): string {\n switch (event.key) {\n case KEY.DOWN_ARROW:\n case KEY.S:\n return upArrowSymbol;\n case KEY.RIGHT_ARROW:\n case KEY.D:\n return leftArrowSymbol;\n case KEY.UP_ARROW:\n case KEY.W:\n return downArrowSymbol;\n case KEY.LEFT_ARROW:\n case KEY.A:\n return rightArrowSymbol;\n }\n return \"\";\n}\n","export const SkillNames: {\n BladesIntuition: string;\n Cloak: string;\n Marksman: string;\n WeaponProficiency: string;\n ShortCircuit: string;\n DigitalObserver: string;\n Tracer: string;\n Overclock: string;\n Reaper: string;\n EvasiveSystem: string;\n Datamancer: string;\n CybersEdge: string;\n HandsOfMidas: string;\n Hyperdrive: string;\n} = {\n BladesIntuition: \"Blade's Intuition\",\n Cloak: \"Cloak\",\n Marksman: \"Marksman\",\n WeaponProficiency: \"Weapon Proficiency\",\n ShortCircuit: \"Short-Circuit\",\n DigitalObserver: \"Digital Observer\",\n Tracer: \"Tracer\",\n Overclock: \"Overclock\",\n Reaper: \"Reaper\",\n EvasiveSystem: \"Evasive System\",\n Datamancer: \"Datamancer\",\n CybersEdge: \"Cyber's Edge\",\n HandsOfMidas: \"Hands of Midas\",\n Hyperdrive: \"Hyperdrive\",\n};\n","import { Operation, IOperationParams } from \"./Operation\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\n\nexport class BlackOperation extends Operation {\n constructor(params: IOperationParams | null = null) {\n super(params);\n this.count = 1;\n }\n\n // To be implemented by subtypes\n getActionTimePenalty(): number {\n return 1.5;\n }\n\n getChaosCompetencePenalty(/*inst: IBladeburner, params: ISuccessChanceParams*/): number {\n return 1;\n }\n\n getChaosDifficultyBonus(/*inst: IBladeburner, params: ISuccessChanceParams*/): number {\n return 1;\n }\n\n toJSON(): any {\n return Generic_toJSON(\"BlackOperation\", this);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Operation {\n return Generic_fromJSON(BlackOperation, value.data);\n }\n}\n\nReviver.constructors.BlackOperation = BlackOperation;\n","import React, { useContext } from \"react\";\nimport { IGang } from \"../IGang\";\n\nexport const Context: {\n Gang: React.Context;\n} = {\n Gang: React.createContext({} as IGang),\n};\n\nexport const useGang = (): IGang => useContext(Context.Gang);\n","import React, { useEffect } from \"react\";\nimport { useSnackbar, SnackbarProvider as SB } from \"notistack\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport Alert from \"@mui/material/Alert\";\nimport Paper from \"@mui/material/Paper\";\nimport { logBoxBaseZIndex } from \"./LogBoxManager\";\n\ninterface IProps {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst useStyles = makeStyles(() => ({\n snackbar: {\n // Log popup z-index increments, so let's add a padding to be well above them.\n zIndex: `${logBoxBaseZIndex + 1000} !important` as any,\n\n \"& .MuiAlert-icon\": {\n alignSelf: \"center\",\n },\n },\n}));\n\nexport function SnackbarProvider(props: IProps): React.ReactElement {\n const classes = useStyles();\n return (\n \n {props.children}\n \n );\n}\n\nexport const SnackbarEvents = new EventEmitter<\n [string | React.ReactNode, \"success\" | \"warning\" | \"error\" | \"info\", number]\n>();\n\nexport function Snackbar(): React.ReactElement {\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n useEffect(() =>\n SnackbarEvents.subscribe((s, variant, duration) => {\n const id = enqueueSnackbar({s}, {\n content: (k, m) => {m},\n variant: variant,\n autoHideDuration: duration,\n onClick: () => closeSnackbar(id),\n });\n }),\n );\n return <>>;\n}\n","/**\n * Stops an actively-running script (represented by a WorkerScript object)\n * and removes it from the global pool of active scripts.\n */\nimport { WorkerScript } from \"./WorkerScript\";\nimport { workerScripts } from \"./WorkerScripts\";\nimport { WorkerScriptStartStopEventEmitter } from \"./WorkerScriptStartStopEventEmitter\";\n\nimport { RunningScript } from \"../Script/RunningScript\";\nimport { GetServer } from \"../Server/AllServers\";\n\nimport { compareArrays } from \"../utils/helpers/compareArrays\";\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { AddRecentScript } from \"./RecentScripts\";\nimport { Player } from \"../Player\";\n\nexport function killWorkerScript(runningScriptObj: RunningScript, hostname: string, rerenderUi?: boolean): boolean;\nexport function killWorkerScript(workerScript: WorkerScript): boolean;\nexport function killWorkerScript(pid: number): boolean;\nexport function killWorkerScript(\n script: RunningScript | WorkerScript | number,\n hostname?: string,\n rerenderUi?: boolean,\n): boolean {\n if (rerenderUi == null || typeof rerenderUi !== \"boolean\") {\n rerenderUi = true;\n }\n\n if (script instanceof WorkerScript) {\n stopAndCleanUpWorkerScript(script);\n\n return true;\n } else if (script instanceof RunningScript && typeof hostname === \"string\") {\n // Try to kill by PID\n const res = killWorkerScriptByPid(script.pid, rerenderUi);\n if (res) {\n return res;\n }\n\n // If for some reason that doesn't work, we'll try the old way\n for (const ws of workerScripts.values()) {\n if (ws.name == script.filename && ws.hostname == hostname && compareArrays(ws.args, script.args)) {\n stopAndCleanUpWorkerScript(ws, rerenderUi);\n\n return true;\n }\n }\n\n return false;\n } else if (typeof script === \"number\") {\n return killWorkerScriptByPid(script, rerenderUi);\n } else {\n console.error(`killWorkerScript() called with invalid argument:`);\n console.error(script);\n return false;\n }\n}\n\nfunction killWorkerScriptByPid(pid: number, rerenderUi = true): boolean {\n const ws = workerScripts.get(pid);\n if (ws instanceof WorkerScript) {\n stopAndCleanUpWorkerScript(ws, rerenderUi);\n\n return true;\n }\n\n return false;\n}\n\nfunction stopAndCleanUpWorkerScript(workerScript: WorkerScript, rerenderUi = true): void {\n if (typeof workerScript.atExit === \"function\") {\n try {\n workerScript.atExit();\n } catch (e: any) {\n dialogBoxCreate(\n `Error trying to call atExit for script ${workerScript.name} on ${workerScript.hostname} ${workerScript.scriptRef.args} ${e}`,\n );\n }\n workerScript.atExit = undefined;\n }\n workerScript.env.stopFlag = true;\n killNetscriptDelay(workerScript);\n removeWorkerScript(workerScript, rerenderUi);\n}\n\n/**\n * Helper function that removes the script being killed from the global pool.\n * Also handles other cleanup-time operations\n *\n * @param {WorkerScript} - Identifier for WorkerScript. Either the object itself, or\n * its index in the global workerScripts array\n */\nfunction removeWorkerScript(workerScript: WorkerScript, rerenderUi = true): void {\n const ip = workerScript.hostname;\n const name = workerScript.name;\n\n // Get the server on which the script runs\n const server = GetServer(ip);\n if (server == null) {\n console.error(`Could not find server on which this script is running: ${ip}`);\n return;\n }\n\n // Delete the RunningScript object from that server\n for (let i = 0; i < server.runningScripts.length; ++i) {\n const runningScript = server.runningScripts[i];\n if (runningScript.filename === name && compareArrays(runningScript.args, workerScript.args)) {\n server.runningScripts.splice(i, 1);\n break;\n }\n }\n\n // Recalculate ram used on that server\n\n server.updateRamUsed(0, Player);\n for (const rs of server.runningScripts) server.updateRamUsed(server.ramUsed + rs.ramUsage * rs.threads, Player);\n\n // Delete script from global pool (workerScripts)\n workerScripts.delete(workerScript.pid);\n // const res = workerScripts.delete(workerScript.pid);\n // if (!res) {\n // console.warn(`removeWorkerScript() called with WorkerScript that wasn't in the global map:`);\n // console.warn(workerScript);\n // }\n AddRecentScript(workerScript);\n\n if (rerenderUi) {\n WorkerScriptStartStopEventEmitter.emit();\n }\n}\n\n/**\n * Helper function that interrupts a script's delay if it is in the middle of a\n * timed, blocked operation (like hack(), sleep(), etc.). This allows scripts to\n * be killed immediately even if they're in the middle of one of those long operations\n */\nfunction killNetscriptDelay(workerScript: WorkerScript): void {\n if (workerScript instanceof WorkerScript) {\n if (workerScript.delay) {\n clearTimeout(workerScript.delay);\n if (workerScript.delayReject) {\n workerScript.delayReject(workerScript);\n }\n }\n }\n}\n","import * as React from \"react\";\nimport { numeralWrapper } from \"../../ui/numeralFormat\";\nimport { ICorporation } from \"../ICorporation\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n unbuyable: {\n color: theme.palette.action.disabled,\n },\n money: {\n color: theme.colors.money,\n },\n }),\n);\n\ninterface IProps {\n money: number;\n corp: ICorporation;\n}\n\nexport function MoneyCost(props: IProps): React.ReactElement {\n const classes = useStyles();\n if (!(props.corp.funds > props.money))\n return {numeralWrapper.formatMoney(props.money)};\n\n return {numeralWrapper.formatMoney(props.money)};\n}\n","import React from \"react\";\n\nimport { Typography, TableCell, TableRow } from \"@mui/material\";\n\nimport { numeralWrapper } from \"../numeralFormat\";\nimport { formatNumber } from \"../../utils/StringHelperFunctions\";\nimport { characterOverviewStyles as useStyles } from \"./CharacterOverview\";\n\ninterface ITableRowData {\n content?: string;\n level?: number;\n exp?: number;\n}\n\ninterface IProps {\n name: string;\n color: string;\n classes?: any;\n data: ITableRowData;\n}\n\nexport const StatsRow = ({ name, color, classes = useStyles(), data }: IProps): React.ReactElement => {\n let content;\n\n if (data.content !== undefined) {\n content = data.content;\n } else if (data.level !== undefined && data.exp !== undefined) {\n content = `${formatNumber(data.level, 0)} (${numeralWrapper.formatExp(data.exp)} exp)`;\n } else if (data.level !== undefined && data.exp === undefined) {\n content = `${formatNumber(data.level, 0)}`;\n }\n\n return (\n \n \n {name}\n \n \n {content}\n \n \n );\n};\n","/**\n * Checks whether the value passed in can be considered a string.\n * @param value The value to check if it is a string.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function isString(value: any): boolean {\n return typeof value === \"string\" || value instanceof String;\n}\n","import { IMinMaxRange } from \"../types\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\nimport { getRandomInt } from \"../utils/helpers/getRandomInt\";\n\nexport const StockForecastInfluenceLimit = 5;\n\nexport interface IConstructorParams {\n b: boolean;\n initPrice: number | IMinMaxRange;\n marketCap: number;\n mv: number | IMinMaxRange;\n name: string;\n otlkMag: number;\n spreadPerc: number | IMinMaxRange;\n shareTxForMovement: number | IMinMaxRange;\n symbol: string;\n}\n\nconst defaultConstructorParams: IConstructorParams = {\n b: true,\n initPrice: 10e3,\n marketCap: 1e12,\n mv: 1,\n name: \"\",\n otlkMag: 0,\n spreadPerc: 0,\n shareTxForMovement: 1e6,\n symbol: \"\",\n};\n\n// Helper function that convert a IMinMaxRange to a number\nfunction toNumber(n: number | IMinMaxRange): number {\n let value: number;\n switch (typeof n) {\n case \"number\": {\n return n;\n }\n case \"object\": {\n const range = n as IMinMaxRange;\n value = getRandomInt(range.min, range.max);\n break;\n }\n default:\n throw Error(`Do not know how to convert the type '${typeof n}' to a number`);\n }\n\n if (typeof n === \"object\" && typeof n.divisor === \"number\") {\n return value / n.divisor;\n }\n\n return value;\n}\n\n/**\n * Represents the valuation of a company in the World Stock Exchange.\n */\nexport class Stock {\n /**\n * Bear or bull (more likely to go up or down, based on otlkMag)\n */\n b: boolean;\n\n /**\n * Maximum price of a stock (per share)\n */\n readonly cap: number;\n\n /**\n * Stocks previous share price\n */\n lastPrice: number;\n\n /**\n * Maximum number of shares that player can own (both long and short combined)\n */\n readonly maxShares: number;\n\n /**\n * Maximum volatility\n */\n readonly mv: number;\n\n /**\n * Name of the company that the stock is for\n */\n readonly name: string;\n\n /**\n * Outlook magnitude. Represents the stock's forecast and likelihood\n * of increasing/decreasing (based on whether its in bear or bull mode)\n */\n otlkMag: number;\n\n /**\n * Forecast of outlook magnitude. Essentially a second-order forecast.\n * Unlike 'otlkMag', this number is on an absolute scale from 0-100 (rather than 0-50)\n */\n otlkMagForecast: number;\n\n /**\n * Average price of stocks that the player owns in the LONG position\n */\n playerAvgPx: number;\n\n /**\n * Average price of stocks that the player owns in the SHORT position\n */\n playerAvgShortPx: number;\n\n /**\n * Number of shares the player owns in the LONG position\n */\n playerShares: number;\n\n /**\n * Number of shares the player owns in the SHORT position\n */\n playerShortShares: number;\n\n /**\n * Stock's share price\n */\n price: number;\n\n /**\n * How many shares need to be transacted in order to trigger a price movement\n */\n readonly shareTxForMovement: number;\n\n /**\n * How many share transactions remaining until a price movement occurs\n * (separately tracked for upward and downward movements)\n */\n shareTxUntilMovement: number;\n\n /**\n * Spread percentage. The bid/ask prices for this stock are N% above or below\n * the \"real price\" to emulate spread.\n */\n readonly spreadPerc: number;\n\n /**\n * The stock's ticker symbol\n */\n readonly symbol: string;\n\n /**\n * Total number of shares of this stock\n * This is different than maxShares, as this is like authorized stock while\n * maxShares is outstanding stock.\n */\n readonly totalShares: number;\n\n constructor(p: IConstructorParams = defaultConstructorParams) {\n this.name = p.name;\n this.symbol = p.symbol;\n this.price = toNumber(p.initPrice);\n this.lastPrice = this.price;\n this.playerShares = 0;\n this.playerAvgPx = 0;\n this.playerShortShares = 0;\n this.playerAvgShortPx = 0;\n this.mv = toNumber(p.mv);\n this.b = p.b;\n this.otlkMag = p.otlkMag;\n this.otlkMagForecast = this.getAbsoluteForecast();\n this.cap = getRandomInt(this.price * 1e3, this.price * 25e3);\n this.spreadPerc = toNumber(p.spreadPerc);\n this.shareTxForMovement = toNumber(p.shareTxForMovement);\n this.shareTxUntilMovement = this.shareTxForMovement;\n\n // Total shares is determined by market cap, and is rounded to nearest 100k\n const totalSharesUnrounded: number = p.marketCap / this.price;\n this.totalShares = Math.round(totalSharesUnrounded / 1e5) * 1e5;\n\n // Max Shares (Outstanding shares) is a percentage of total shares\n const outstandingSharePercentage = 0.2;\n this.maxShares = Math.round((this.totalShares * outstandingSharePercentage) / 1e5) * 1e5;\n }\n\n /**\n * Safely set the stock's second-order forecast to a new value\n */\n changeForecastForecast(newff: number): void {\n this.otlkMagForecast = newff;\n if (this.otlkMagForecast > 100) {\n this.otlkMagForecast = 100;\n } else if (this.otlkMagForecast < 0) {\n this.otlkMagForecast = 0;\n }\n }\n\n /**\n * Set the stock to a new price. Also updates the stock's previous price tracker\n */\n changePrice(newPrice: number): void {\n this.lastPrice = this.price;\n this.price = newPrice;\n }\n\n /**\n * Change the stock's forecast during a stock market 'tick'.\n * The way a stock's forecast changes depends on various internal properties,\n * but is ultimately determined by RNG\n */\n cycleForecast(changeAmt = 0.1): void {\n const increaseChance = this.getForecastIncreaseChance();\n\n if (Math.random() < increaseChance) {\n // Forecast increases\n if (this.b) {\n this.otlkMag += changeAmt;\n } else {\n this.otlkMag -= changeAmt;\n }\n } else if (this.b) {\n // Forecast decreases\n this.otlkMag -= changeAmt;\n } else {\n this.otlkMag += changeAmt;\n }\n\n this.otlkMag = Math.min(this.otlkMag, 50);\n if (this.otlkMag < 0) {\n this.otlkMag *= -1;\n this.b = !this.b;\n }\n }\n\n /**\n * Change's the stock's second-order forecast during a stock market 'tick'.\n * The change for the second-order forecast to increase is 50/50\n */\n cycleForecastForecast(changeAmt = 0.1): void {\n if (Math.random() < 0.5) {\n this.changeForecastForecast(this.otlkMagForecast + changeAmt);\n } else {\n this.changeForecastForecast(this.otlkMagForecast - changeAmt);\n }\n }\n\n /**\n * \"Flip\" the stock's second-order forecast. This can occur during a\n * stock market \"cycle\" (determined by RNG). It is used to simulate\n * RL stock market cycles and introduce volatility\n */\n flipForecastForecast(): void {\n const diff = this.otlkMagForecast - 50;\n this.otlkMagForecast = 50 + -1 * diff;\n }\n\n /**\n * Returns the stock's absolute forecast, which is a number between 0-100\n */\n getAbsoluteForecast(): number {\n return this.b ? 50 + this.otlkMag : 50 - this.otlkMag;\n }\n\n /**\n * Return the price at which YOUR stock is bought (market ask price). Accounts for spread\n */\n getAskPrice(): number {\n return this.price * (1 + this.spreadPerc / 100);\n }\n\n /**\n * Return the price at which YOUR stock is sold (market bid price). Accounts for spread\n */\n getBidPrice(): number {\n return this.price * (1 - this.spreadPerc / 100);\n }\n\n /**\n * Returns the chance (0-1 decimal) that a stock has of having its forecast increase\n */\n getForecastIncreaseChance(): number {\n const diff = this.otlkMagForecast - this.getAbsoluteForecast();\n\n return (50 + Math.min(Math.max(diff, -45), 45)) / 100;\n }\n\n /**\n * Changes a stock's forecast. This is used when the stock is influenced\n * by a transaction. The stock's forecast always goes towards 50, but the\n * movement is capped by a certain threshold/limit\n */\n influenceForecast(change: number): void {\n if (this.otlkMag > StockForecastInfluenceLimit) {\n this.otlkMag = Math.max(StockForecastInfluenceLimit, this.otlkMag - change);\n }\n }\n\n /**\n * Changes a stock's second-order forecast. This is used when the stock is\n * influenced by a transaction. The stock's second-order forecast always\n * goes towards 50.\n */\n influenceForecastForecast(change: number): void {\n if (this.otlkMagForecast > 50) {\n this.otlkMagForecast -= change;\n this.otlkMagForecast = Math.max(50, this.otlkMagForecast);\n } else if (this.otlkMagForecast < 50) {\n this.otlkMagForecast += change;\n this.otlkMagForecast = Math.min(50, this.otlkMagForecast);\n }\n }\n\n /**\n * Serialize the Stock to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"Stock\", this);\n }\n\n /**\n * Initializes a Stock from a JSON save state\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Stock {\n return Generic_fromJSON(Stock, value.data);\n }\n}\n\nReviver.constructors.Stock = Stock;\n","/**\n * Map of all Cities in the game\n * Key = City Name, Value = City object\n */\nimport { City } from \"./City\";\nimport { IMap } from \"../types\";\n\nexport const Cities: IMap = {};\n","import { IMap } from \"./types\";\nimport { Terminal } from \"./Terminal\";\n\nexport let Aliases: IMap = {};\nexport let GlobalAliases: IMap = {};\n\nexport function loadAliases(saveString: string): void {\n if (saveString === \"\") {\n Aliases = {};\n } else {\n Aliases = JSON.parse(saveString);\n }\n}\n\nexport function loadGlobalAliases(saveString: string): void {\n if (saveString === \"\") {\n GlobalAliases = {};\n } else {\n GlobalAliases = JSON.parse(saveString);\n }\n}\n\n// Prints all aliases to terminal\nexport function printAliases(): void {\n for (const name of Object.keys(Aliases)) {\n if (Aliases.hasOwnProperty(name)) {\n Terminal.print(\"alias \" + name + \"=\" + Aliases[name]);\n }\n }\n for (const name of Object.keys(GlobalAliases)) {\n if (GlobalAliases.hasOwnProperty(name)) {\n Terminal.print(\"global alias \" + name + \"=\" + GlobalAliases[name]);\n }\n }\n}\n\n// Returns true if successful, false otherwise\nexport function parseAliasDeclaration(dec: string, global = false): boolean {\n const re = /^([\\w|!%,@-]+)=((\"(.+)\")|('(.+)'))$/;\n const matches = dec.match(re);\n if (matches == null || matches.length != 7) {\n return false;\n }\n\n if (global) {\n addGlobalAlias(matches[1], matches[4] || matches[6]);\n } else {\n addAlias(matches[1], matches[4] || matches[6]);\n }\n return true;\n}\n\nfunction addAlias(name: string, value: string): void {\n if (name in GlobalAliases) {\n delete GlobalAliases[name];\n }\n Aliases[name] = value.trim();\n}\n\nfunction addGlobalAlias(name: string, value: string): void {\n if (name in Aliases) {\n delete Aliases[name];\n }\n GlobalAliases[name] = value.trim();\n}\n\nfunction getAlias(name: string): string | null {\n if (Aliases.hasOwnProperty(name)) {\n return Aliases[name];\n }\n\n return null;\n}\n\nfunction getGlobalAlias(name: string): string | null {\n if (GlobalAliases.hasOwnProperty(name)) {\n return GlobalAliases[name];\n }\n return null;\n}\n\nexport function removeAlias(name: string): boolean {\n if (Aliases.hasOwnProperty(name)) {\n delete Aliases[name];\n return true;\n }\n\n if (GlobalAliases.hasOwnProperty(name)) {\n delete GlobalAliases[name];\n return true;\n }\n\n return false;\n}\n\n/**\n * Returns the original string with any aliases substituted in.\n * Aliases are only applied to \"whole words\", one level deep\n */\nexport function substituteAliases(origCommand: string): string {\n const commandArray = origCommand.split(\" \");\n if (commandArray.length > 0) {\n // For the alias and unalias commands, dont substite\n if (commandArray[0] === \"unalias\" || commandArray[0] === \"alias\") {\n return commandArray.join(\" \");\n }\n\n let somethingSubstituted = true;\n let depth = 0;\n\n while (somethingSubstituted && depth < 10) {\n depth++;\n somethingSubstituted = false;\n const alias = getAlias(commandArray[0])?.split(\" \");\n if (alias != null) {\n somethingSubstituted = true;\n commandArray.splice(0, 1, ...alias);\n //commandArray[0] = alias;\n }\n for (let i = 0; i < commandArray.length; ++i) {\n const alias = getGlobalAlias(commandArray[i])?.split(\" \");\n if (alias != null) {\n somethingSubstituted = true;\n commandArray.splice(i, 1, ...alias);\n i += alias.length - 1;\n //commandArray[i] = alias;\n }\n }\n }\n }\n return commandArray.join(\" \");\n}\n","/**\n * Lore / world building literature files that can be found on servers.\n * These files can be read by the player\n */\nexport class Literature {\n title: string;\n fn: string;\n txt: string;\n\n constructor(title: string, filename: string, txt: string) {\n this.title = title;\n this.fn = filename;\n this.txt = txt;\n }\n}\n","import React from \"react\";\nimport { createTheme, ThemeProvider, Theme, StyledEngineProvider } from \"@mui/material/styles\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { Settings } from \"../../Settings/Settings\";\n\nexport const ThemeEvents = new EventEmitter<[]>();\n\ndeclare module \"@mui/material/styles\" {\n interface Theme {\n colors: {\n hp: React.CSSProperties[\"color\"];\n money: React.CSSProperties[\"color\"];\n hack: React.CSSProperties[\"color\"];\n combat: React.CSSProperties[\"color\"];\n cha: React.CSSProperties[\"color\"];\n int: React.CSSProperties[\"color\"];\n rep: React.CSSProperties[\"color\"];\n backgroundprimary: React.CSSProperties[\"color\"];\n backgroundsecondary: React.CSSProperties[\"color\"];\n button: React.CSSProperties[\"color\"];\n successlight: React.CSSProperties[\"color\"];\n success: React.CSSProperties[\"color\"];\n successdark: React.CSSProperties[\"color\"];\n white: React.CSSProperties[\"color\"];\n black: React.CSSProperties[\"color\"];\n };\n }\n interface ThemeOptions {\n colors: {\n hp: React.CSSProperties[\"color\"];\n money: React.CSSProperties[\"color\"];\n hack: React.CSSProperties[\"color\"];\n combat: React.CSSProperties[\"color\"];\n cha: React.CSSProperties[\"color\"];\n int: React.CSSProperties[\"color\"];\n rep: React.CSSProperties[\"color\"];\n backgroundprimary: React.CSSProperties[\"color\"];\n backgroundsecondary: React.CSSProperties[\"color\"];\n button: React.CSSProperties[\"color\"];\n successlight: React.CSSProperties[\"color\"];\n success: React.CSSProperties[\"color\"];\n successdark: React.CSSProperties[\"color\"];\n white: React.CSSProperties[\"color\"];\n black: React.CSSProperties[\"color\"];\n };\n }\n}\n\nlet theme: Theme;\n\nexport function refreshTheme(): void {\n theme = createTheme({\n colors: {\n hp: Settings.theme.hp,\n money: Settings.theme.money,\n hack: Settings.theme.hack,\n combat: Settings.theme.combat,\n cha: Settings.theme.cha,\n int: Settings.theme.int,\n rep: Settings.theme.rep,\n backgroundprimary: Settings.theme.backgroundprimary,\n backgroundsecondary: Settings.theme.backgroundsecondary,\n button: Settings.theme.button,\n successlight: Settings.theme.successlight,\n success: Settings.theme.success,\n successdark: Settings.theme.successdark,\n white: Settings.theme.white,\n black: Settings.theme.black,\n },\n palette: {\n primary: {\n light: Settings.theme.primarylight,\n main: Settings.theme.primary,\n dark: Settings.theme.primarydark,\n },\n secondary: {\n light: Settings.theme.secondarylight,\n main: Settings.theme.secondary,\n dark: Settings.theme.secondarydark,\n },\n error: {\n light: Settings.theme.errorlight,\n main: Settings.theme.error,\n dark: Settings.theme.errordark,\n },\n info: {\n light: Settings.theme.infolight,\n main: Settings.theme.info,\n dark: Settings.theme.infodark,\n },\n warning: {\n light: Settings.theme.warninglight,\n main: Settings.theme.warning,\n dark: Settings.theme.warningdark,\n },\n success: {\n light: Settings.theme.successlight,\n main: Settings.theme.success,\n dark: Settings.theme.successdark,\n },\n background: {\n default: Settings.theme.backgroundprimary,\n paper: Settings.theme.well,\n },\n action: {\n disabled: Settings.theme.disabled,\n },\n },\n typography: {\n fontFamily: Settings.styles.fontFamily,\n button: {\n textTransform: \"none\",\n },\n },\n components: {\n MuiInputBase: {\n styleOverrides: {\n root: {\n backgroundColor: Settings.theme.well,\n color: Settings.theme.primary,\n },\n input: {\n \"&::placeholder\": {\n userSelect: \"none\",\n color: Settings.theme.primarydark,\n },\n },\n },\n },\n\n MuiInput: {\n styleOverrides: {\n root: {\n backgroundColor: Settings.theme.well,\n borderBottomColor: \"#fff\",\n },\n underline: {\n \"&:hover\": {\n borderBottomColor: Settings.theme.primarydark,\n },\n \"&:before\": {\n borderBottomColor: Settings.theme.primary,\n },\n \"&:after\": {\n borderBottomColor: Settings.theme.primarylight,\n },\n },\n },\n },\n\n MuiInputLabel: {\n styleOverrides: {\n root: {\n color: Settings.theme.primarydark, // why is this switched?\n userSelect: \"none\",\n \"&:before\": {\n color: Settings.theme.primarylight,\n },\n },\n },\n },\n\n MuiButtonGroup: {\n styleOverrides: {\n root: {\n \"& .MuiButton-root:not(:last-of-type)\": {\n marginRight: \"1px\",\n },\n },\n },\n },\n\n MuiButton: {\n styleOverrides: {\n root: {\n backgroundColor: Settings.theme.button,\n border: \"1px solid \" + Settings.theme.well,\n // color: Settings.theme.primary,\n \"&:hover\": {\n backgroundColor: Settings.theme.backgroundsecondary,\n },\n\n borderRadius: 0,\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n icon: {\n color: Settings.theme.primary,\n },\n },\n defaultProps: {\n variant: \"standard\",\n },\n },\n MuiTextField: {\n defaultProps: {\n variant: \"standard\",\n },\n },\n MuiTypography: {\n defaultProps: {\n color: \"primary\",\n },\n styleOverrides: {\n root: {\n lineHeight: Settings.styles.lineHeight,\n },\n },\n },\n MuiMenu: {\n styleOverrides: {\n list: {\n backgroundColor: Settings.theme.well,\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n color: Settings.theme.primary,\n },\n },\n },\n MuiAccordionSummary: {\n styleOverrides: {\n root: {\n backgroundColor: \"#111\",\n },\n },\n },\n MuiAccordionDetails: {\n styleOverrides: {\n root: {\n backgroundColor: Settings.theme.backgroundsecondary,\n },\n },\n },\n MuiIconButton: {\n styleOverrides: {\n root: {\n color: Settings.theme.primary,\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n fontSize: \"1em\",\n color: Settings.theme.primary,\n backgroundColor: Settings.theme.well,\n borderRadius: 0,\n border: \"2px solid white\",\n maxWidth: \"100vh\",\n },\n },\n defaultProps: {\n disableInteractive: true,\n },\n },\n MuiSlider: {\n styleOverrides: {\n valueLabel: {\n color: Settings.theme.primary,\n backgroundColor: Settings.theme.well,\n },\n },\n },\n MuiDrawer: {\n styleOverrides: {\n paper: {\n \"&::-webkit-scrollbar\": {\n // webkit\n display: \"none\",\n },\n scrollbarWidth: \"none\", // firefox\n backgroundColor: Settings.theme.backgroundsecondary,\n },\n paperAnchorDockedLeft: {\n borderRight: \"1px solid \" + Settings.theme.welllight,\n },\n },\n },\n MuiDivider: {\n styleOverrides: {\n root: {\n backgroundColor: Settings.theme.welllight,\n },\n },\n },\n MuiFormControlLabel: {\n styleOverrides: {\n root: {\n color: Settings.theme.primary,\n },\n },\n },\n MuiSwitch: {\n styleOverrides: {\n switchBase: {\n color: Settings.theme.primarydark,\n },\n track: {\n backgroundColor: Settings.theme.welllight,\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n borderRadius: 0,\n backgroundColor: Settings.theme.backgroundsecondary,\n border: \"1px solid \" + Settings.theme.welllight,\n },\n },\n },\n MuiTablePagination: {\n styleOverrides: {\n select: {\n color: Settings.theme.primary,\n },\n selectLabel: {\n color: Settings.theme.primary,\n },\n displayedRows: {\n color: Settings.theme.primary,\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n textColorPrimary: {\n color: Settings.theme.secondary,\n \"&.Mui-selected\": {\n color: Settings.theme.primary,\n },\n },\n root: {\n backgroundColor: Settings.theme.backgroundsecondary,\n border: \"1px solid \" + Settings.theme.well,\n margin: \"3px\",\n\n \"&.Mui-selected\": {\n backgroundColor: Settings.theme.button,\n },\n },\n },\n },\n MuiTabs: {\n styleOverrides: {\n scrollButtons: {\n backgroundColor: Settings.theme.backgroundsecondary,\n color: Settings.theme.secondary,\n margin: \"3px\",\n opacity: 1,\n width: \"fit-content\",\n\n \"&.Mui-disabled\": {\n opacity: 0.5,\n },\n },\n },\n defaultProps: {\n TabIndicatorProps: {\n style: {\n display: \"none\",\n },\n },\n },\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n backgroundColor: Settings.theme.black,\n borderRadius: 0,\n border: \"1px solid \" + Settings.theme.well,\n },\n standardSuccess: {\n color: Settings.theme.successlight,\n },\n standardError: {\n color: Settings.theme.errorlight,\n },\n standardWarning: {\n color: Settings.theme.warninglight,\n },\n standardInfo: {\n color: Settings.theme.infolight,\n },\n },\n },\n },\n });\n\n document.body.style.backgroundColor = theme.colors.backgroundprimary?.toString() ?? \"black\";\n}\nrefreshTheme();\n\ninterface IProps {\n children: JSX.Element[] | JSX.Element;\n}\n\nexport const TTheme = ({ children }: IProps): React.ReactElement => (\n \n {children}\n \n);\n","import React, { useState } from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport Tooltip from \"@mui/material/Tooltip\";\n\ntype IProps = {\n value: string;\n color?: string;\n variant?:\n | \"button\"\n | \"caption\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"overline\"\n | \"inherit\"\n | undefined;\n};\n\nexport function CopyableText(props: IProps): React.ReactElement {\n const [open, setOpen] = useState(false);\n\n function copy(): void {\n const copyText = document.createElement(\"textarea\");\n copyText.value = props.value;\n document.body.appendChild(copyText);\n copyText.select();\n copyText.setSelectionRange(0, 1e10);\n document.execCommand(\"copy\");\n document.body.removeChild(copyText);\n setOpen(true);\n setTimeout(() => setOpen(false), 1000);\n }\n\n return (\n Copied!}>\n \n {props.value}\n \n \n );\n}\n","import { IMap } from \"../types\";\n\n// Map of material (by name) to their sizes (how much space it takes in warehouse)\nexport const MaterialSizes: IMap = {\n Water: 0.05,\n Energy: 0.01,\n Food: 0.03,\n Plants: 0.05,\n Metal: 0.1,\n Hardware: 0.06,\n Chemicals: 0.05,\n Drugs: 0.02,\n Robots: 0.5,\n AICores: 0.1,\n RealEstate: 0.005,\n \"Real Estate\": 0.005,\n \"AI Cores\": 0.1,\n};\n","export function calculateSkill(exp: number, mult = 1): number {\n return Math.max(Math.floor(mult * (32 * Math.log(exp + 534.5) - 200)), 1);\n}\n\nexport function calculateExp(skill: number, mult = 1): number {\n return Math.exp((skill / mult + 200) / 32) - 534.6;\n}\n\nexport function calculateSkillProgress(exp: number, mult = 1): ISkillProgress {\n const currentSkill = calculateSkill(exp, mult);\n const nextSkill = currentSkill + 1;\n\n let baseExperience = calculateExp(currentSkill, mult);\n if (baseExperience < 0) baseExperience = 0;\n\n let nextExperience = calculateExp(nextSkill, mult);\n if (nextExperience < 0) nextExperience = 0;\n\n const normalize = (value: number): number => ((value - baseExperience) * 100) / (nextExperience - baseExperience);\n let progress = nextExperience - baseExperience !== 0 ? normalize(exp) : 99.99;\n\n // Clamp progress: When sleeves are working out, the player gets way too much progress\n if (progress < 0) progress = 0;\n if (progress > 100) progress = 100;\n\n // Clamp floating point imprecisions\n let currentExperience = exp - baseExperience;\n let remainingExperience = nextExperience - exp;\n if (currentExperience < 0) currentExperience = 0;\n if (remainingExperience < 0) remainingExperience = 0;\n\n return {\n currentSkill,\n nextSkill,\n baseExperience,\n experience: exp,\n nextExperience,\n currentExperience,\n remainingExperience,\n progress,\n };\n}\n\nexport interface ISkillProgress {\n currentSkill: number;\n nextSkill: number;\n baseExperience: number;\n experience: number;\n nextExperience: number;\n currentExperience: number;\n remainingExperience: number;\n progress: number;\n}\n\nexport function getEmptySkillProgress(): ISkillProgress {\n return {\n currentSkill: 0,\n nextSkill: 0,\n baseExperience: 0,\n experience: 0,\n nextExperience: 0,\n currentExperience: 0,\n remainingExperience: 0,\n progress: 0,\n };\n}\n","export interface IMults {\n hack?: number;\n str?: number;\n def?: number;\n dex?: number;\n agi?: number;\n cha?: number;\n}\n\nexport enum UpgradeType {\n Weapon = \"w\",\n Armor = \"a\",\n Vehicle = \"v\",\n Rootkit = \"r\",\n Augmentation = \"g\",\n}\n\n/**\n * Defines the parameters that can be used to initialize and describe a GangMemberUpgrade\n * (defined in Gang.js)\n */\ninterface IGangMemberUpgradeMetadata {\n cost: number;\n mults: IMults;\n name: string;\n upgType: UpgradeType;\n}\n\n/**\n * Array of metadata for all Gang Member upgrades. Used to construct the global GangMemberUpgrade\n * objects in Gang.js\n */\nexport const gangMemberUpgradesMetadata: IGangMemberUpgradeMetadata[] = [\n {\n cost: 1e6,\n mults: { str: 1.04, def: 1.04 },\n name: \"Baseball Bat\",\n upgType: UpgradeType.Weapon,\n },\n {\n cost: 12e6,\n mults: { str: 1.08, def: 1.08, dex: 1.08 },\n name: \"Katana\",\n upgType: UpgradeType.Weapon,\n },\n {\n cost: 25e6,\n mults: { str: 1.1, def: 1.1, dex: 1.1, agi: 1.1 },\n name: \"Glock 18C\",\n upgType: UpgradeType.Weapon,\n },\n {\n cost: 50e6,\n mults: { str: 1.12, def: 1.1, agi: 1.1 },\n name: \"P90C\",\n upgType: UpgradeType.Weapon,\n },\n {\n cost: 60e6,\n mults: { str: 1.2, def: 1.15 },\n name: \"Steyr AUG\",\n upgType: UpgradeType.Weapon,\n },\n {\n cost: 100e6,\n mults: { str: 1.25, def: 1.2 },\n name: \"AK-47\",\n upgType: UpgradeType.Weapon,\n },\n {\n cost: 150e6,\n mults: { str: 1.3, def: 1.25 },\n name: \"M15A10 Assault Rifle\",\n upgType: UpgradeType.Weapon,\n },\n {\n cost: 225e6,\n mults: { str: 1.3, dex: 1.25, agi: 1.3 },\n name: \"AWM Sniper Rifle\",\n upgType: UpgradeType.Weapon,\n },\n {\n cost: 2e6,\n mults: { def: 1.04 },\n name: \"Bulletproof Vest\",\n upgType: UpgradeType.Armor,\n },\n {\n cost: 5e6,\n mults: { def: 1.08 },\n name: \"Full Body Armor\",\n upgType: UpgradeType.Armor,\n },\n {\n cost: 25e6,\n mults: { def: 1.15, agi: 1.15 },\n name: \"Liquid Body Armor\",\n upgType: UpgradeType.Armor,\n },\n {\n cost: 40e6,\n mults: { def: 1.2 },\n name: \"Graphene Plating Armor\",\n upgType: UpgradeType.Armor,\n },\n {\n cost: 3e6,\n mults: { agi: 1.04, cha: 1.04 },\n name: \"Ford Flex V20\",\n upgType: UpgradeType.Vehicle,\n },\n {\n cost: 9e6,\n mults: { agi: 1.08, cha: 1.08 },\n name: \"ATX1070 Superbike\",\n upgType: UpgradeType.Vehicle,\n },\n {\n cost: 18e6,\n mults: { agi: 1.12, cha: 1.12 },\n name: \"Mercedes-Benz S9001\",\n upgType: UpgradeType.Vehicle,\n },\n {\n cost: 30e6,\n mults: { agi: 1.16, cha: 1.16 },\n name: \"White Ferrari\",\n upgType: UpgradeType.Vehicle,\n },\n {\n cost: 5e6,\n mults: { hack: 1.05 },\n name: \"NUKE Rootkit\",\n upgType: UpgradeType.Rootkit,\n },\n {\n cost: 25e6,\n mults: { hack: 1.1 },\n name: \"Soulstealer Rootkit\",\n upgType: UpgradeType.Rootkit,\n },\n {\n cost: 75e6,\n mults: { hack: 1.15 },\n name: \"Demon Rootkit\",\n upgType: UpgradeType.Rootkit,\n },\n {\n cost: 40e6,\n mults: { hack: 1.12 },\n name: \"Hmap Node\",\n upgType: UpgradeType.Rootkit,\n },\n {\n cost: 75e6,\n mults: { hack: 1.15 },\n name: \"Jack the Ripper\",\n upgType: UpgradeType.Rootkit,\n },\n {\n cost: 10e9,\n mults: { str: 1.3, dex: 1.3 },\n name: \"Bionic Arms\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 10e9,\n mults: { agi: 1.6 },\n name: \"Bionic Legs\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 15e9,\n mults: { str: 1.15, def: 1.15, dex: 1.15, agi: 1.15 },\n name: \"Bionic Spine\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 20e9,\n mults: { str: 1.4, def: 1.4 },\n name: \"BrachiBlades\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 12e9,\n mults: { str: 1.2, def: 1.2 },\n name: \"Nanofiber Weave\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 25e9,\n mults: { str: 1.5, agi: 1.5 },\n name: \"Synthetic Heart\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 15e9,\n mults: { str: 1.3, def: 1.3 },\n name: \"Synfibril Muscle\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 5e9,\n mults: { hack: 1.05 },\n name: \"BitWire\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 10e9,\n mults: { hack: 1.15 },\n name: \"Neuralstimulator\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 7.5e9,\n mults: { hack: 1.1 },\n name: \"DataJack\",\n upgType: UpgradeType.Augmentation,\n },\n {\n cost: 50e9,\n mults: { str: 1.7, def: 1.7 },\n name: \"Graphene Bone Lacings\",\n upgType: UpgradeType.Augmentation,\n },\n];\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { RunningScript } from \"../../Script/RunningScript\";\nimport { killWorkerScript } from \"../../Netscript/killWorkerScript\";\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport Paper from \"@mui/material/Paper\";\nimport Draggable from \"react-draggable\";\nimport { ResizableBox } from \"react-resizable\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport ArrowForwardIosIcon from \"@mui/icons-material/ArrowForwardIos\";\nimport { workerScripts } from \"../../Netscript/WorkerScripts\";\nimport { startWorkerScript } from \"../../NetscriptWorker\";\nimport { GetServer } from \"../../Server/AllServers\";\nimport { Theme } from \"@mui/material\";\nimport { findRunningScript } from \"../../Script/ScriptHelpers\";\nimport { Player } from \"../../Player\";\nimport { debounce } from \"lodash\";\n\nlet layerCounter = 0;\n\nexport const LogBoxEvents = new EventEmitter<[RunningScript]>();\nexport const LogBoxClearEvents = new EventEmitter<[]>();\n\ninterface Log {\n id: string;\n script: RunningScript;\n}\n\nlet logs: Log[] = [];\n\nexport function LogBoxManager(): React.ReactElement {\n const setRerender = useState(true)[1];\n function rerender(): void {\n setRerender((o) => !o);\n }\n useEffect(\n () =>\n LogBoxEvents.subscribe((script: RunningScript) => {\n const id = script.server + \"-\" + script.filename + script.args.map((x: any): string => `${x}`).join(\"-\");\n if (logs.find((l) => l.id === id)) return;\n logs.push({\n id: id,\n script: script,\n });\n rerender();\n }),\n [],\n );\n\n useEffect(() =>\n LogBoxClearEvents.subscribe(() => {\n logs = [];\n rerender();\n }),\n );\n\n function close(id: string): void {\n logs = logs.filter((l) => l.id !== id);\n rerender();\n }\n\n return (\n <>\n {logs.map((log) => (\n close(log.id)} />\n ))}\n >\n );\n}\n\ninterface IProps {\n script: RunningScript;\n id: string;\n onClose: () => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n \"&.is-minimized + *\": {\n border: \"none\",\n margin: 0,\n \"max-height\": 0,\n padding: 0,\n \"pointer-events\": \"none\",\n visibility: \"hidden\",\n },\n },\n logs: {\n overflowY: \"scroll\",\n overflowX: \"hidden\",\n scrollbarWidth: \"auto\",\n display: \"flex\",\n flexDirection: \"column-reverse\",\n },\n success: {\n color: theme.colors.success,\n },\n error: {\n color: theme.palette.error.main,\n },\n primary: {\n color: theme.palette.primary.main,\n },\n info: {\n color: theme.palette.info.main,\n },\n warning: {\n color: theme.palette.warning.main,\n },\n }),\n);\n\nexport const logBoxBaseZIndex = 1500;\n\nfunction LogWindow(props: IProps): React.ReactElement {\n const draggableRef = useRef(null);\n const rootRef = useRef(null);\n const [script, setScript] = useState(props.script);\n const classes = useStyles();\n const container = useRef(null);\n const setRerender = useState(false)[1];\n const [minimized, setMinimized] = useState(false);\n function rerender(): void {\n setRerender((old) => !old);\n }\n\n // useEffect(\n // () =>\n // WorkerScriptStartStopEventEmitter.subscribe(() => {\n // setTimeout(() => {\n // const server = GetServer(script.server);\n // if (server === null) return;\n // const exisitingScript = findRunningScript(script.filename, script.args, server);\n // if (exisitingScript) {\n // exisitingScript.logs = script.logs.concat(exisitingScript.logs)\n // setScript(exisitingScript)\n // }\n // rerender();\n // }, 100)\n // }),\n // [],\n // );\n\n useEffect(() => {\n updateLayer();\n const id = setInterval(rerender, 1000);\n return () => clearInterval(id);\n }, []);\n\n function kill(): void {\n killWorkerScript(script, script.server, true);\n }\n\n function run(): void {\n const server = GetServer(script.server);\n if (server === null) return;\n const s = findRunningScript(script.filename, script.args, server);\n if (s === null) {\n startWorkerScript(Player, script, server);\n } else {\n setScript(s);\n }\n }\n\n function updateLayer(): void {\n const c = container.current;\n if (c === null) return;\n c.style.zIndex = logBoxBaseZIndex + layerCounter + \"\";\n layerCounter++;\n rerender();\n }\n\n function title(full = false): string {\n const maxLength = 30;\n const t = `${script.filename} ${script.args.map((x: any): string => `${x}`).join(\" \")}`;\n if (full || t.length <= maxLength) {\n return t;\n }\n return t.slice(0, maxLength - 3) + \"...\";\n }\n\n function minimize(): void {\n setMinimized(!minimized);\n }\n\n function lineClass(s: string): string {\n if (s.match(/(^\\[[^\\]]+\\] )?ERROR/) || s.match(/(^\\[[^\\]]+\\] )?FAIL/)) {\n return classes.error;\n }\n if (s.match(/(^\\[[^\\]]+\\] )?SUCCESS/)) {\n return classes.success;\n }\n if (s.match(/(^\\[[^\\]]+\\] )?WARN/)) {\n return classes.warning;\n }\n if (s.match(/(^\\[[^\\]]+\\] )?INFO/)) {\n return classes.info;\n }\n return classes.primary;\n }\n\n // And trigger fakeDrag when the window is resized\n useEffect(() => {\n window.addEventListener(\"resize\", onResize);\n return () => {\n window.removeEventListener(\"resize\", onResize);\n };\n }, []);\n\n const onResize = debounce((): void => {\n const node = draggableRef?.current;\n if (!node) return;\n\n if (!isOnScreen(node)) {\n resetPosition();\n }\n }, 100);\n\n const isOnScreen = (node: HTMLDivElement): boolean => {\n const bounds = node.getBoundingClientRect();\n\n return !(bounds.right < 0 || bounds.bottom < 0 || bounds.left > innerWidth || bounds.top > outerWidth);\n };\n\n const resetPosition = (): void => {\n const node = rootRef?.current;\n if (!node) return;\n const state = node.state as { x: number; y: number };\n state.x = 0;\n state.y = 0;\n node.setState(state);\n };\n\n const boundToBody = (e: any): void | false => {\n if (e.clientX < 0 || e.clientY < 0 || e.clientX > innerWidth || e.clientY > innerHeight) return false;\n };\n\n return (\n \n \n
\n \n \n );\n}\n","/**\n * Global pool of all active scripts (scripts that are currently running)\n */\nimport { WorkerScript } from \"./WorkerScript\";\n\nexport const workerScripts: Map = new Map();\n","import React from \"react\";\n\nimport { Table, TableCell } from \"./Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport { Table as MuiTable } from \"@mui/material\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface IProps {\n rows: any[][];\n title?: string;\n wide?: boolean;\n}\n\nexport function StatsTable({ rows, title, wide }: IProps): React.ReactElement {\n const T = wide ? MuiTable : Table;\n return (\n <>\n {title && {title}}\n \n \n {rows.map((row: any[], i: number) => (\n \n {row.map((elem: any, i: number) => (\n \n {elem}\n \n ))}\n \n ))}\n \n \n >\n );\n}\n","import { BitNodeMultipliers } from \"../../BitNode/BitNodeMultipliers\";\nimport { HacknetServerConstants } from \"../data/Constants\";\n\nexport function calculateHashGainRate(\n level: number,\n ramUsed: number,\n maxRam: number,\n cores: number,\n mult: number,\n): number {\n const baseGain = HacknetServerConstants.HashesPerLevel * level;\n const ramMultiplier = Math.pow(1.07, Math.log2(maxRam));\n const coreMultiplier = 1 + (cores - 1) / 5;\n const ramRatio = 1 - ramUsed / maxRam;\n\n return baseGain * ramMultiplier * coreMultiplier * ramRatio * mult * BitNodeMultipliers.HacknetNodeMoney;\n}\n\nexport function calculateLevelUpgradeCost(startingLevel: number, extraLevels = 1, costMult = 1): number {\n const sanitizedLevels = Math.round(extraLevels);\n if (isNaN(sanitizedLevels) || sanitizedLevels < 1) {\n return 0;\n }\n\n if (startingLevel >= HacknetServerConstants.MaxLevel) {\n return Infinity;\n }\n\n const mult = HacknetServerConstants.UpgradeLevelMult;\n let totalMultiplier = 0;\n let currLevel = startingLevel;\n for (let i = 0; i < sanitizedLevels; ++i) {\n totalMultiplier += Math.pow(mult, currLevel);\n ++currLevel;\n }\n\n return 10 * HacknetServerConstants.BaseCost * totalMultiplier * costMult;\n}\n\nexport function calculateRamUpgradeCost(startingRam: number, extraLevels = 1, costMult = 1): number {\n const sanitizedLevels = Math.round(extraLevels);\n if (isNaN(sanitizedLevels) || sanitizedLevels < 1) {\n return 0;\n }\n\n if (startingRam >= HacknetServerConstants.MaxRam) {\n return Infinity;\n }\n\n let totalCost = 0;\n let numUpgrades = Math.round(Math.log2(startingRam));\n let currentRam = startingRam;\n for (let i = 0; i < sanitizedLevels; ++i) {\n const baseCost = currentRam * HacknetServerConstants.RamBaseCost;\n const mult = Math.pow(HacknetServerConstants.UpgradeRamMult, numUpgrades);\n\n totalCost += baseCost * mult;\n\n currentRam *= 2;\n ++numUpgrades;\n }\n totalCost *= costMult;\n\n return totalCost;\n}\n\nexport function calculateCoreUpgradeCost(startingCores: number, extraLevels = 1, costMult = 1): number {\n const sanitizedLevels = Math.round(extraLevels);\n if (isNaN(sanitizedLevels) || sanitizedLevels < 1) {\n return 0;\n }\n\n if (startingCores >= HacknetServerConstants.MaxCores) {\n return Infinity;\n }\n\n const mult = HacknetServerConstants.UpgradeCoreMult;\n let totalCost = 0;\n let currentCores = startingCores;\n for (let i = 0; i < sanitizedLevels; ++i) {\n totalCost += Math.pow(mult, currentCores - 1);\n ++currentCores;\n }\n totalCost *= HacknetServerConstants.CoreBaseCost;\n totalCost *= costMult;\n\n return totalCost;\n}\n\nexport function calculateCacheUpgradeCost(startingCache: number, extraLevels = 1): number {\n const sanitizedLevels = Math.round(extraLevels);\n if (isNaN(sanitizedLevels) || sanitizedLevels < 1) {\n return 0;\n }\n\n if (startingCache >= HacknetServerConstants.MaxCache) {\n return Infinity;\n }\n\n const mult = HacknetServerConstants.UpgradeCacheMult;\n let totalCost = 0;\n let currentCache = startingCache;\n for (let i = 0; i < sanitizedLevels; ++i) {\n totalCost += Math.pow(mult, currentCache - 1);\n ++currentCache;\n }\n totalCost *= HacknetServerConstants.CacheBaseCost;\n\n return totalCost;\n}\n\nexport function calculateServerCost(n: number, mult = 1): number {\n if (n - 1 >= HacknetServerConstants.MaxServers) {\n return Infinity;\n }\n\n return HacknetServerConstants.BaseCost * Math.pow(HacknetServerConstants.PurchaseMult, n - 1) * mult;\n}\n","export enum FactionWorkType {\n Field,\n Hacking,\n None,\n Security,\n}\n","import { FormControlLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport React, { useEffect, useState } from \"react\";\n\ninterface IProps {\n checked: boolean;\n onChange: (newValue: boolean, error?: string) => void;\n text: React.ReactNode;\n tooltip: React.ReactNode;\n}\n\nexport function OptionSwitch({ checked, onChange, text, tooltip }: IProps): React.ReactElement {\n const [value, setValue] = useState(checked);\n\n function handleSwitchChange(event: React.ChangeEvent): void {\n setValue(event.target.checked);\n }\n\n useEffect(() => onChange(value), [value]);\n\n return (\n }\n label={\n {tooltip}}>\n {text}\n \n }\n />\n );\n}\n","/**\n * Represents the possible configuration values that can be provided when creating the progress bar text.\n */\ninterface IProgressBarConfiguration {\n /**\n * Current progress, taken as a decimal (i.e. '0.6' to represent '60%')\n */\n progress?: number;\n\n /**\n * Total number of ticks in progress bar. Preferably a factor of 100.\n */\n totalTicks?: number;\n}\n\n/**\n * Represents concrete configuration values when creating the progress bar text.\n */\ninterface IProgressBarConfigurationMaterialized extends IProgressBarConfiguration {\n progress: number;\n totalTicks: number;\n}\n\n/**\n * Creates a graphical \"progress bar\"\n * e.g.: [||||---------------]\n * @param params The configuration parameters for the progress bar\n */\nexport function createProgressBarText(params: IProgressBarConfiguration): string {\n // Default values\n const defaultParams: IProgressBarConfigurationMaterialized = {\n progress: 0,\n totalTicks: 20,\n };\n\n // tslint:disable-next-line:prefer-object-spread\n const derived: IProgressBarConfigurationMaterialized = Object.assign({}, defaultParams, params);\n // Ensure it is 0..1\n derived.progress = Math.max(Math.min(derived.progress, 1), 0);\n\n // This way there is always at least one bar filled in...\n const bars: number = Math.max(Math.floor(derived.progress / (1 / derived.totalTicks)), 1);\n const dashes: number = Math.max(derived.totalTicks - bars, 0);\n\n // String.prototype.repeat isn't completley supported, but good enough for our purposes\n return `[${\"|\".repeat(bars)}${\"-\".repeat(dashes)}]`;\n}\n","/**\n * Functions for handling WorkerScripts, which are the underlying mechanism\n * that allows for scripts to run\n */\nimport { killWorkerScript } from \"./Netscript/killWorkerScript\";\nimport { WorkerScript } from \"./Netscript/WorkerScript\";\nimport { workerScripts } from \"./Netscript/WorkerScripts\";\nimport { WorkerScriptStartStopEventEmitter } from \"./Netscript/WorkerScriptStartStopEventEmitter\";\nimport { generateNextPid } from \"./Netscript/Pid\";\n\nimport { CONSTANTS } from \"./Constants\";\nimport { Interpreter } from \"./ThirdParty/JSInterpreter\";\nimport { isScriptErrorMessage, makeRuntimeRejectMsg } from \"./NetscriptEvaluator\";\nimport { NetscriptFunctions } from \"./NetscriptFunctions\";\nimport { executeJSScript } from \"./NetscriptJSEvaluator\";\nimport { NetscriptPort, IPort } from \"./NetscriptPort\";\nimport { RunningScript } from \"./Script/RunningScript\";\nimport { getRamUsageFromRunningScript } from \"./Script/RunningScriptHelpers\";\nimport { scriptCalculateOfflineProduction } from \"./Script/ScriptHelpers\";\nimport { Script } from \"./Script/Script\";\nimport { GetAllServers } from \"./Server/AllServers\";\nimport { BaseServer } from \"./Server/BaseServer\";\nimport { Settings } from \"./Settings/Settings\";\n\nimport { generate } from \"escodegen\";\n\nimport { dialogBoxCreate } from \"./ui/React/DialogBox\";\nimport { arrayToString } from \"./utils/helpers/arrayToString\";\nimport { roundToTwo } from \"./utils/helpers/roundToTwo\";\nimport { isString } from \"./utils/helpers/isString\";\nimport { sprintf } from \"sprintf-js\";\n\nimport { parse } from \"acorn\";\nimport { simple as walksimple } from \"acorn-walk\";\nimport { areFilesEqual } from \"./Terminal/DirectoryHelpers\";\nimport { Player } from \"./Player\";\nimport { Terminal } from \"./Terminal\";\nimport { IPlayer } from \"./PersonObjects/IPlayer\";\n\n// Netscript Ports are instantiated here\nexport const NetscriptPorts: IPort[] = [];\nfor (let i = 0; i < CONSTANTS.NumNetscriptPorts; ++i) {\n NetscriptPorts.push(NetscriptPort());\n}\n\nexport function prestigeWorkerScripts(): void {\n for (const ws of workerScripts.values()) {\n ws.env.stopFlag = true;\n killWorkerScript(ws);\n }\n for (const port of NetscriptPorts) {\n port.clear();\n }\n\n WorkerScriptStartStopEventEmitter.emit();\n workerScripts.clear();\n}\n\n// JS script promises need a little massaging to have the same guarantees as netscript\n// promises. This does said massaging and kicks the script off. It returns a promise\n// that resolves or rejects when the corresponding worker script is done.\nfunction startNetscript2Script(player: IPlayer, workerScript: WorkerScript): Promise {\n workerScript.running = true;\n\n // The name of the currently running netscript function, to prevent concurrent\n // calls to hack, grow, etc.\n let runningFn: string | null = null;\n\n // We need to go through the environment and wrap each function in such a way that it\n // can be called at most once at a time. This will prevent situations where multiple\n // hack promises are outstanding, for example.\n function wrap(propName: string, f: (...args: any[]) => Promise): (...args: any[]) => Promise {\n // This function unfortunately cannot be an async function, because we don't\n // know if the original one was, and there's no way to tell.\n return function (...args: any[]) {\n // Wrap every netscript function with a check for the stop flag.\n // This prevents cases where we never stop because we are only calling\n // netscript functions that don't check this.\n // This is not a problem for legacy Netscript because it also checks the\n // stop flag in the evaluator.\n if (workerScript.env.stopFlag) {\n throw workerScript;\n }\n\n if (propName === \"asleep\") return f(...args); // OK for multiple simultaneous calls to sleep.\n\n const msg =\n \"Concurrent calls to Netscript functions are not allowed! \" +\n \"Did you forget to await hack(), grow(), or some other \" +\n \"promise-returning function? (Currently running: %s tried to run: %s)\";\n if (runningFn) {\n workerScript.errorMessage = makeRuntimeRejectMsg(workerScript, sprintf(msg, runningFn, propName));\n throw workerScript;\n }\n runningFn = propName;\n\n // If the function throws an error, clear the runningFn flag first, and then re-throw it\n // This allows people to properly catch errors thrown by NS functions without getting\n // the concurrent call error above\n let result;\n try {\n result = f(...args);\n } catch (e: any) {\n runningFn = null;\n throw e;\n }\n\n if (result && result.finally !== undefined) {\n return result.finally(function () {\n runningFn = null;\n });\n } else {\n runningFn = null;\n return result;\n }\n };\n }\n\n for (const prop of Object.keys(workerScript.env.vars)) {\n if (typeof workerScript.env.vars[prop] !== \"function\") continue;\n workerScript.env.vars[prop] = wrap(prop, workerScript.env.vars[prop]);\n }\n workerScript.env.vars.stanek.charge = wrap(\"stanek.charge\", workerScript.env.vars.stanek.charge);\n\n // Note: the environment that we pass to the JS script only needs to contain the functions visible\n // to that script, which env.vars does at this point.\n return new Promise((resolve, reject) => {\n executeJSScript(player, workerScript.getServer().scripts, workerScript)\n .then(() => {\n resolve(workerScript);\n })\n .catch((e) => reject(e));\n }).catch((e) => {\n if (e instanceof Error) {\n if (e instanceof SyntaxError) {\n workerScript.errorMessage = makeRuntimeRejectMsg(workerScript, e.message + \" (sorry we can't be more helpful)\");\n } else {\n workerScript.errorMessage = makeRuntimeRejectMsg(\n workerScript,\n e.message + ((e.stack && \"\\nstack:\\n\" + e.stack.toString()) || \"\"),\n );\n }\n throw workerScript;\n } else if (isScriptErrorMessage(e)) {\n workerScript.errorMessage = e;\n throw workerScript;\n } else if (e instanceof WorkerScript) {\n throw e;\n }\n\n workerScript.errorMessage = makeRuntimeRejectMsg(workerScript, e);\n throw workerScript; // Don't know what to do with it, let's rethrow.\n });\n}\n\nfunction startNetscript1Script(workerScript: WorkerScript): Promise {\n const code = workerScript.code;\n workerScript.running = true;\n\n //Process imports\n let codeWithImports, codeLineOffset;\n try {\n const importProcessingRes = processNetscript1Imports(code, workerScript);\n codeWithImports = importProcessingRes.code;\n codeLineOffset = importProcessingRes.lineOffset;\n } catch (e: any) {\n dialogBoxCreate(\"Error processing Imports in \" + workerScript.name + \": \" + e);\n workerScript.env.stopFlag = true;\n workerScript.running = false;\n killWorkerScript(workerScript);\n return Promise.resolve(workerScript);\n }\n\n const interpreterInitialization = function (int: any, scope: any): void {\n //Add the Netscript environment\n const ns = NetscriptFunctions(workerScript);\n for (const name of Object.keys(ns)) {\n const entry = ns[name];\n if (typeof entry === \"function\") {\n //Async functions need to be wrapped. See JS-Interpreter documentation\n if (\n [\"hack\", \"grow\", \"weaken\", \"sleep\", \"prompt\", \"manualHack\", \"scp\", \"write\", \"share\", \"wget\"].includes(name)\n ) {\n const tempWrapper = function (...args: any[]): void {\n const fnArgs = [];\n\n //All of the Object/array elements are in JSInterpreter format, so\n //we have to convert them back to native format to pass them to these fns\n for (let i = 0; i < args.length - 1; ++i) {\n if (typeof args[i] === \"object\" || args[i].constructor === Array) {\n fnArgs.push(int.pseudoToNative(args[i]));\n } else {\n fnArgs.push(args[i]);\n }\n }\n const cb = args[args.length - 1];\n const fnPromise = entry(...fnArgs);\n fnPromise\n .then(function (res: any) {\n cb(res);\n })\n .catch(function (err: any) {\n // workerscript is when you cancel a delay\n if (!(err instanceof WorkerScript)) {\n console.error(err);\n const errorTextArray = err.split(\"|DELIMITER|\");\n const hostname = errorTextArray[1];\n const scriptName = errorTextArray[2];\n const errorMsg = errorTextArray[3];\n let msg = `${scriptName}@${hostname} `;\n msg += \" \";\n msg += errorMsg;\n dialogBoxCreate(msg);\n workerScript.env.stopFlag = true;\n workerScript.running = false;\n killWorkerScript(workerScript);\n return Promise.resolve(workerScript);\n }\n });\n };\n int.setProperty(scope, name, int.createAsyncFunction(tempWrapper));\n } else if (\n name === \"sprintf\" ||\n name === \"vsprintf\" ||\n name === \"scp\" ||\n name == \"write\" ||\n name === \"tryWrite\" ||\n name === \"run\" ||\n name === \"exec\"\n ) {\n const tempWrapper = function (...args: any[]): void {\n const fnArgs = [];\n\n //All of the Object/array elements are in JSInterpreter format, so\n //we have to convert them back to native format to pass them to these fns\n for (let i = 0; i < args.length; ++i) {\n if (typeof args[i] === \"object\" || args[i].constructor === Array) {\n fnArgs.push(int.pseudoToNative(args[i]));\n } else {\n fnArgs.push(args[i]);\n }\n }\n\n return entry(...fnArgs);\n };\n int.setProperty(scope, name, int.createNativeFunction(tempWrapper));\n } else {\n const tempWrapper = function (...args: any[]): any {\n const res = entry(...args);\n\n if (res == null) {\n return res;\n } else if (res.constructor === Array || res === Object(res)) {\n //Objects and Arrays must be converted to the interpreter's format\n return int.nativeToPseudo(res);\n } else {\n return res;\n }\n };\n int.setProperty(scope, name, int.createNativeFunction(tempWrapper));\n }\n } else {\n //bladeburner, or anything else\n int.setProperty(scope, name, int.nativeToPseudo(entry));\n }\n }\n\n //Add the arguments\n int.setProperty(scope, \"args\", int.nativeToPseudo(workerScript.args));\n };\n\n let interpreter: any;\n try {\n interpreter = new Interpreter(codeWithImports, interpreterInitialization, codeLineOffset);\n } catch (e: any) {\n dialogBoxCreate(\"Syntax ERROR in \" + workerScript.name + \": \" + e);\n workerScript.env.stopFlag = true;\n workerScript.running = false;\n killWorkerScript(workerScript);\n return Promise.resolve(workerScript);\n }\n\n return new Promise(function (resolve, reject) {\n function runInterpreter(): void {\n try {\n if (workerScript.env.stopFlag) {\n return reject(workerScript);\n }\n\n let more = true;\n let i = 0;\n while (i < 3 && more) {\n more = more && interpreter.step();\n i++;\n }\n\n if (more) {\n setTimeout(runInterpreter, Settings.CodeInstructionRunTime);\n } else {\n resolve(workerScript);\n }\n } catch (e: any) {\n e = e.toString();\n if (!isScriptErrorMessage(e)) {\n e = makeRuntimeRejectMsg(workerScript, e);\n }\n workerScript.errorMessage = e;\n return reject(workerScript);\n }\n }\n\n try {\n runInterpreter();\n } catch (e: any) {\n if (isString(e)) {\n workerScript.errorMessage = e;\n return reject(workerScript);\n } else if (e instanceof WorkerScript) {\n return reject(e);\n } else {\n return reject(workerScript);\n }\n }\n });\n}\n\n/* Since the JS Interpreter used for Netscript 1.0 only supports ES5, the keyword\n 'import' throws an error. However, since we want to support import funtionality\n we'll implement it ourselves by parsing the Nodes in the AST out.\n\n @param code - The script's code\n @returns {Object} {\n code: Newly-generated code with imported functions\n lineOffset: Net number of lines of code added/removed due to imported functions\n Should typically be positive\n }\n*/\nfunction processNetscript1Imports(code: string, workerScript: WorkerScript): any {\n //allowReserved prevents 'import' from throwing error in ES5\n const ast: any = parse(code, {\n ecmaVersion: 9,\n allowReserved: true,\n sourceType: \"module\",\n });\n\n const server = workerScript.getServer();\n if (server == null) {\n throw new Error(\"Failed to find underlying Server object for script\");\n }\n\n function getScript(scriptName: string): Script | null {\n for (let i = 0; i < server.scripts.length; ++i) {\n if (server.scripts[i].filename === scriptName) {\n return server.scripts[i];\n }\n }\n return null;\n }\n\n let generatedCode = \"\"; // Generated Javascript Code\n let hasImports = false;\n\n // Walk over the tree and process ImportDeclaration nodes\n walksimple(ast, {\n ImportDeclaration: (node: any) => {\n hasImports = true;\n let scriptName = node.source.value;\n if (scriptName.startsWith(\"./\")) {\n scriptName = scriptName.slice(2);\n }\n const script = getScript(scriptName);\n if (script == null) {\n throw new Error(\"'Import' failed due to invalid script: \" + scriptName);\n }\n const scriptAst = parse(script.code, {\n ecmaVersion: 9,\n allowReserved: true,\n sourceType: \"module\",\n });\n\n if (node.specifiers.length === 1 && node.specifiers[0].type === \"ImportNamespaceSpecifier\") {\n // import * as namespace from script\n const namespace = node.specifiers[0].local.name;\n const fnNames: string[] = []; //Names only\n const fnDeclarations: any[] = []; //FunctionDeclaration Node objects\n walksimple(scriptAst, {\n FunctionDeclaration: (node: any) => {\n fnNames.push(node.id.name);\n fnDeclarations.push(node);\n },\n });\n\n //Now we have to generate the code that would create the namespace\n generatedCode += `var ${namespace};\\n(function (namespace) {\\n`;\n\n //Add the function declarations\n fnDeclarations.forEach((fn: any) => {\n generatedCode += generate(fn);\n generatedCode += \"\\n\";\n });\n\n //Add functions to namespace\n fnNames.forEach((fnName) => {\n generatedCode += \"namespace.\" + fnName + \" = \" + fnName;\n generatedCode += \"\\n\";\n });\n\n //Finish\n generatedCode += `})(${namespace} || (\" + namespace + \" = {}));\\n`;\n } else {\n //import {...} from script\n\n //Get array of all fns to import\n const fnsToImport: string[] = [];\n node.specifiers.forEach((e: any) => {\n fnsToImport.push(e.local.name);\n });\n\n //Walk through script and get FunctionDeclaration code for all specified fns\n const fnDeclarations: any[] = [];\n walksimple(scriptAst, {\n FunctionDeclaration: (node: any) => {\n if (fnsToImport.includes(node.id.name)) {\n fnDeclarations.push(node);\n }\n },\n });\n\n //Convert FunctionDeclarations into code\n fnDeclarations.forEach((fn: any) => {\n generatedCode += generate(fn);\n generatedCode += \"\\n\";\n });\n }\n },\n });\n\n //If there are no imports, just return the original code\n if (!hasImports) {\n return { code: code, lineOffset: 0 };\n }\n\n //Remove ImportDeclarations from AST. These ImportDeclarations must be in top-level\n let linesRemoved = 0;\n if (ast.type !== \"Program\" || ast.body == null) {\n throw new Error(\"Code could not be properly parsed\");\n }\n for (let i = ast.body.length - 1; i >= 0; --i) {\n if (ast.body[i].type === \"ImportDeclaration\") {\n ast.body.splice(i, 1);\n ++linesRemoved;\n }\n }\n\n //Calculated line offset\n const lineOffset = (generatedCode.match(/\\n/g) || []).length - linesRemoved;\n\n //Convert the AST back into code\n code = generate(ast);\n\n //Add the imported code and re-generate in ES5 (JS Interpreter for NS1 only supports ES5);\n code = generatedCode + code;\n\n const res = {\n code: code,\n lineOffset: lineOffset,\n };\n return res;\n}\n\n/**\n * Used to start a RunningScript (by creating and starting its\n * corresponding WorkerScript), and add the RunningScript to the server on which\n * it is active\n * @param {RunningScript} runningScriptObj - Script that's being run\n * @param {Server} server - Server on which the script is to be run\n * @returns {number} pid of started script\n */\nexport function startWorkerScript(\n player: IPlayer,\n runningScript: RunningScript,\n server: BaseServer,\n parent?: WorkerScript,\n): number {\n if (createAndAddWorkerScript(player, runningScript, server, parent)) {\n // Push onto runningScripts.\n // This has to come after createAndAddWorkerScript() because that fn updates RAM usage\n server.runScript(runningScript);\n\n // Once the WorkerScript is constructed in createAndAddWorkerScript(), the RunningScript\n // object should have a PID assigned to it, so we return that\n return runningScript.pid;\n }\n\n return 0;\n}\n\n/**\n * Given a RunningScript object, constructs its corresponding WorkerScript,\n * adds it to the global 'workerScripts' pool, and begins executing it.\n * @param {RunningScript} runningScriptObj - Script that's being run\n * @param {Server} server - Server on which the script is to be run\n * returns {boolean} indicating whether or not the workerScript was successfully added\n */\nfunction createAndAddWorkerScript(\n player: IPlayer,\n runningScriptObj: RunningScript,\n server: BaseServer,\n parent?: WorkerScript,\n): boolean {\n // Update server's ram usage\n let threads = 1;\n if (runningScriptObj.threads && !isNaN(runningScriptObj.threads)) {\n threads = runningScriptObj.threads;\n } else {\n runningScriptObj.threads = 1;\n }\n const oneRamUsage = getRamUsageFromRunningScript(runningScriptObj);\n const ramUsage = roundToTwo(oneRamUsage * threads);\n const ramAvailable = server.maxRam - server.ramUsed;\n if (ramUsage > ramAvailable) {\n dialogBoxCreate(\n `Not enough RAM to run script ${runningScriptObj.filename} with args ` +\n `${arrayToString(runningScriptObj.args)}. This likely occurred because you re-loaded ` +\n `the game and the script's RAM usage increased (either because of an update to the game or ` +\n `your changes to the script.)`,\n );\n return false;\n }\n\n server.updateRamUsed(roundToTwo(server.ramUsed + ramUsage), Player);\n\n // Get the pid\n const pid = generateNextPid();\n if (pid === -1) {\n throw new Error(\n `Failed to start script because could not find available PID. This is most ` +\n `because you have too many scripts running.`,\n );\n }\n\n // Create the WorkerScript. NOTE: WorkerScript ctor will set the underlying\n // RunningScript's PID as well\n const s = new WorkerScript(runningScriptObj, pid, NetscriptFunctions);\n s.ramUsage = oneRamUsage;\n\n // Add the WorkerScript to the global pool\n workerScripts.set(pid, s);\n WorkerScriptStartStopEventEmitter.emit();\n\n // Start the script's execution\n let p: Promise | null = null; // Script's resulting promise\n if (s.name.endsWith(\".js\") || s.name.endsWith(\".ns\")) {\n p = startNetscript2Script(player, s);\n } else {\n p = startNetscript1Script(s);\n if (!(p instanceof Promise)) {\n return false;\n }\n }\n\n // Once the code finishes (either resolved or rejected, doesnt matter), set its\n // running status to false\n p.then(function (w: WorkerScript) {\n w.running = false;\n w.env.stopFlag = true;\n // On natural death, the earnings are transfered to the parent if it still exists.\n if (parent !== undefined) {\n if (parent.running) {\n parent.scriptRef.onlineExpGained += runningScriptObj.onlineExpGained;\n parent.scriptRef.onlineMoneyMade += runningScriptObj.onlineMoneyMade;\n }\n }\n\n killWorkerScript(s);\n w.log(\"\", () => \"Script finished running\");\n }).catch(function (w) {\n if (w instanceof Error) {\n dialogBoxCreate(\"Script runtime unknown error. This is a bug please contact game developer\");\n console.error(\"Evaluating workerscript returns an Error. THIS SHOULDN'T HAPPEN: \" + w.toString());\n return;\n } else if (w instanceof WorkerScript) {\n if (isScriptErrorMessage(w.errorMessage)) {\n const errorTextArray = w.errorMessage.split(\"|DELIMITER|\");\n if (errorTextArray.length != 4) {\n console.error(\"ERROR: Something wrong with Error text in evaluator...\");\n console.error(\"Error text: \" + w.errorMessage);\n return;\n }\n const hostname = errorTextArray[1];\n const scriptName = errorTextArray[2];\n const errorMsg = errorTextArray[3];\n\n let msg = `RUNTIME ERROR ${scriptName}@${hostname} `;\n if (w.args.length > 0) {\n msg += `Args: ${arrayToString(w.args)} `;\n }\n msg += \" \";\n msg += errorMsg;\n\n dialogBoxCreate(msg);\n w.log(\"\", () => \"Script crashed with runtime error\");\n } else {\n w.log(\"\", () => \"Script killed\");\n return; // Already killed, so stop here\n }\n } else if (isScriptErrorMessage(w)) {\n dialogBoxCreate(\"Script runtime unknown error. This is a bug please contact game developer\");\n console.error(\n \"ERROR: Evaluating workerscript returns only error message rather than WorkerScript object. THIS SHOULDN'T HAPPEN: \" +\n w.toString(),\n );\n return;\n } else {\n dialogBoxCreate(\"An unknown script died for an unknown reason. This is a bug please contact game dev\");\n console.error(w);\n }\n\n killWorkerScript(s);\n });\n\n return true;\n}\n\n/**\n * Updates the online running time stat of all running scripts\n */\nexport function updateOnlineScriptTimes(numCycles = 1): void {\n const time = (numCycles * CONSTANTS._idleSpeed) / 1000; //seconds\n for (const ws of workerScripts.values()) {\n ws.scriptRef.onlineRunningTime += time;\n }\n}\n\n/**\n * Called when the game is loaded. Loads all running scripts (from all servers)\n * into worker scripts so that they will start running\n */\nexport function loadAllRunningScripts(player: IPlayer): void {\n const skipScriptLoad = window.location.href.toLowerCase().indexOf(\"?noscripts\") !== -1;\n if (skipScriptLoad) {\n Terminal.warn(\"Skipped loading player scripts during startup\");\n console.info(\"Skipping the load of any scripts during startup\");\n }\n for (const server of GetAllServers()) {\n // Reset each server's RAM usage to 0\n server.ramUsed = 0;\n\n // Reset modules on all scripts\n for (let i = 0; i < server.scripts.length; ++i) {\n server.scripts[i].markUpdated();\n }\n\n if (skipScriptLoad) {\n // Start game with no scripts\n server.runningScripts.length = 0;\n } else {\n for (let j = 0; j < server.runningScripts.length; ++j) {\n const fileName = server.runningScripts[j].filename;\n createAndAddWorkerScript(player, server.runningScripts[j], server);\n\n if (!server.runningScripts[j]) {\n // createAndAddWorkerScript can modify the server.runningScripts array if a script is invalid\n console.error(`createAndAddWorkerScript removed ${fileName} from ${server}`);\n continue;\n }\n\n // Offline production\n scriptCalculateOfflineProduction(server.runningScripts[j]);\n }\n }\n }\n}\n\n/**\n * Run a script from inside another script (run(), exec(), spawn(), etc.)\n */\nexport function runScriptFromScript(\n player: IPlayer,\n caller: string,\n server: BaseServer,\n scriptname: string,\n args: any[],\n workerScript: WorkerScript,\n threads = 1,\n): number {\n // Sanitize arguments\n if (!(workerScript instanceof WorkerScript)) {\n return 0;\n }\n\n if (typeof scriptname !== \"string\" || !Array.isArray(args)) {\n workerScript.log(caller, () => `Invalid arguments: scriptname='${scriptname} args='${args}'`);\n console.error(`runScriptFromScript() failed due to invalid arguments`);\n return 0;\n }\n\n args.forEach((arg, i) => {\n if (typeof arg !== \"string\" && typeof arg !== \"number\" && typeof arg !== \"boolean\")\n throw new Error(\n \"Only strings, numbers, and booleans can be passed as arguments to other scripts.\\n\" +\n `${scriptname} argument index ${i} is of type ${typeof arg} and value ${JSON.stringify(arg)}`,\n );\n });\n\n // Check if the script is already running\n const runningScriptObj = server.getRunningScript(scriptname, args);\n if (runningScriptObj != null) {\n workerScript.log(caller, () => `'${scriptname}' is already running on '${server.hostname}'`);\n return 0;\n }\n\n // 'null/undefined' arguments are not allowed\n for (let i = 0; i < args.length; ++i) {\n if (args[i] == null) {\n workerScript.log(caller, () => \"Cannot execute a script with null/undefined as an argument\");\n return 0;\n }\n }\n\n // Check if the script exists and if it does run it\n for (let i = 0; i < server.scripts.length; ++i) {\n if (!areFilesEqual(server.scripts[i].filename, scriptname)) continue;\n // Check for admin rights and that there is enough RAM availble to run\n const script = server.scripts[i];\n let ramUsage = script.ramUsage;\n threads = Math.floor(Number(threads));\n if (threads === 0) {\n return 0;\n }\n ramUsage = ramUsage * threads;\n const ramAvailable = server.maxRam - server.ramUsed;\n\n if (server.hasAdminRights == false) {\n workerScript.log(caller, () => `You do not have root access on '${server.hostname}'`);\n return 0;\n } else if (ramUsage > ramAvailable) {\n workerScript.log(\n caller,\n () =>\n `Cannot run script '${scriptname}' (t=${threads}) on '${server.hostname}' because there is not enough available RAM!`,\n );\n return 0;\n }\n // Able to run script\n workerScript.log(\n caller,\n () => `'${scriptname}' on '${server.hostname}' with ${threads} threads and args: ${arrayToString(args)}.`,\n );\n const runningScriptObj = new RunningScript(script, args);\n runningScriptObj.threads = threads;\n runningScriptObj.server = server.hostname;\n\n return startWorkerScript(player, runningScriptObj, server, workerScript);\n }\n\n workerScript.log(caller, () => `Could not find script '${scriptname}' on '${server.hostname}'`);\n return 0;\n}\n","import { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\nimport { Export } from \"./Export\";\n\ninterface IConstructorParams {\n name?: string;\n}\n\nexport class Material {\n // Name of material\n name = \"InitName\";\n\n // Amount of material owned\n qty = 0;\n\n // Material's \"quality\". Unbounded\n qlt = 0;\n\n // How much demand the Material has in the market, and the range of possible\n // values for this \"demand\"\n dmd = 0;\n dmdR: number[] = [0, 0];\n\n // How much competition there is for this Material in the market, and the range\n // of possible values for this \"competition\"\n cmp = 0;\n cmpR: number[] = [0, 0];\n\n // Maximum volatility of this Materials stats\n mv = 0;\n\n // Markup. Determines how high of a price you can charge on the material\n // compared to the market price without suffering loss in # of sales\n // Quality is divided by this to determine markup limits\n // e,g, If mku is 10 and quality is 100 then you can markup prices by 100/10 = 10\n mku = 0;\n\n // How much of this material is being bought, sold, imported and produced every second\n buy = 0;\n sll = 0;\n prd = 0;\n imp = 0;\n\n // Exports of this material to another warehouse/industry\n exp: Export[] = [];\n\n // Total amount of this material exported in the last cycle\n totalExp = 0;\n\n // Cost / sec to buy this material. AKA Market Price\n bCost = 0;\n\n // Cost / sec to sell this material\n sCost: string | number = 0;\n\n // Flags to keep track of whether production and/or sale of this material is limited\n // [Whether production/sale is limited, limit amount]\n prdman: [boolean, number] = [false, 0]; // Production\n sllman: [boolean, string | number] = [false, 0]; // Sale\n\n // Flags that signal whether automatic sale pricing through Market TA is enabled\n marketTa1 = false;\n marketTa2 = false;\n marketTa2Price = 0;\n\n // Determines the maximum amount of this material that can be sold in one market cycle\n maxsll = 0;\n\n constructor(params: IConstructorParams = {}) {\n if (params.name) {\n this.name = params.name;\n }\n this.init();\n }\n\n getMarkupLimit(): number {\n return this.qlt / this.mku;\n }\n\n init(): void {\n switch (this.name) {\n case \"Water\":\n this.dmd = 75;\n this.dmdR = [65, 85];\n this.cmp = 50;\n this.cmpR = [40, 60];\n this.bCost = 1500;\n this.mv = 0.2;\n this.mku = 6;\n break;\n case \"Energy\":\n this.dmd = 90;\n this.dmdR = [80, 99];\n this.cmp = 80;\n this.cmpR = [65, 95];\n this.bCost = 2000;\n this.mv = 0.2;\n this.mku = 6;\n break;\n case \"Food\":\n this.dmd = 80;\n this.dmdR = [70, 90];\n this.cmp = 60;\n this.cmpR = [35, 85];\n this.bCost = 5000;\n this.mv = 1;\n this.mku = 3;\n break;\n case \"Plants\":\n this.dmd = 70;\n this.dmdR = [20, 90];\n this.cmp = 50;\n this.cmpR = [30, 70];\n this.bCost = 3000;\n this.mv = 0.6;\n this.mku = 3.75;\n break;\n case \"Metal\":\n this.dmd = 80;\n this.dmdR = [75, 85];\n this.cmp = 70;\n this.cmpR = [60, 80];\n this.bCost = 2650;\n this.mv = 1;\n this.mku = 6;\n break;\n case \"Hardware\":\n this.dmd = 85;\n this.dmdR = [80, 90];\n this.cmp = 80;\n this.cmpR = [65, 95];\n this.bCost = 8e3;\n this.mv = 0.5; //Less mv bc its processed twice\n this.mku = 1;\n break;\n case \"Chemicals\":\n this.dmd = 55;\n this.dmdR = [40, 70];\n this.cmp = 60;\n this.cmpR = [40, 80];\n this.bCost = 9e3;\n this.mv = 1.2;\n this.mku = 2;\n break;\n case \"Real Estate\":\n this.dmd = 50;\n this.dmdR = [5, 99];\n this.cmp = 50;\n this.cmpR = [25, 75];\n this.bCost = 80e3;\n this.mv = 1.5; //Less mv bc its processed twice\n this.mku = 1.5;\n break;\n case \"Drugs\":\n this.dmd = 60;\n this.dmdR = [45, 75];\n this.cmp = 70;\n this.cmpR = [40, 99];\n this.bCost = 40e3;\n this.mv = 1.6;\n this.mku = 1;\n break;\n case \"Robots\":\n this.dmd = 90;\n this.dmdR = [80, 9];\n this.cmp = 90;\n this.cmpR = [80, 9];\n this.bCost = 75e3;\n this.mv = 0.5; //Less mv bc its processed twice\n this.mku = 1;\n break;\n case \"AI Cores\":\n this.dmd = 90;\n this.dmdR = [80, 99];\n this.cmp = 90;\n this.cmpR = [80, 9];\n this.bCost = 15e3;\n this.mv = 0.8; //Less mv bc its processed twice\n this.mku = 0.5;\n break;\n case \"Scientific Research\":\n case \"InitName\":\n break;\n default:\n console.error(`Invalid material type in init(): ${this.name}`);\n break;\n }\n }\n\n // Process change in demand, competition, and buy cost of this material\n processMarket(): void {\n // The price will change in accordance with demand and competition.\n // e.g. If demand goes up, then so does price. If competition goes up, price goes down\n const priceVolatility: number = (Math.random() * this.mv) / 300;\n const priceChange: number = 1 + priceVolatility;\n\n //This 1st random check determines whether competition increases or decreases\n const compVolatility: number = (Math.random() * this.mv) / 100;\n const compChange: number = 1 + compVolatility;\n if (Math.random() < 0.5) {\n this.cmp *= compChange;\n if (this.cmp > this.cmpR[1]) {\n this.cmp = this.cmpR[1];\n }\n this.bCost *= 1 / priceChange; // Competition increases, so price goes down\n } else {\n this.cmp *= 1 / compChange;\n if (this.cmp < this.cmpR[0]) {\n this.cmp = this.cmpR[0];\n }\n this.bCost *= priceChange; // Competition decreases, so price goes up\n }\n\n // This 2nd random check determines whether demand increases or decreases\n const dmdVolatility: number = (Math.random() * this.mv) / 100;\n const dmdChange: number = 1 + dmdVolatility;\n if (Math.random() < 0.5) {\n this.dmd *= dmdChange;\n if (this.dmd > this.dmdR[1]) {\n this.dmd = this.dmdR[1];\n }\n this.bCost *= priceChange; // Demand increases, so price goes up\n } else {\n this.dmd *= 1 / dmdChange;\n if (this.dmd < this.dmdR[0]) {\n this.dmd = this.dmdR[0];\n }\n this.bCost *= 1 / priceChange;\n }\n }\n\n // Serialize the current object to a JSON save state.\n toJSON(): any {\n return Generic_toJSON(\"Material\", this);\n }\n\n // Initiatizes a Material object from a JSON save state.\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Material {\n return Generic_fromJSON(Material, value.data);\n }\n}\n\nReviver.constructors.Material = Material;\n","import { BitNodeMultipliers } from \"../../BitNode/BitNodeMultipliers\";\nimport { GangMember } from \"../GangMember\";\nimport { GangMemberTask } from \"../GangMemberTask\";\n\ninterface Gang {\n respect: number;\n territory: number;\n wantedLevel: number;\n}\n\nexport function calculateWantedPenalty(gang: Gang): number {\n return gang.respect / (gang.respect + gang.wantedLevel);\n}\n\nexport function calculateRespectGain(gang: Gang, member: GangMember, task: GangMemberTask): number {\n if (task.baseRespect === 0) return 0;\n let statWeight =\n (task.hackWeight / 100) * member.hack +\n (task.strWeight / 100) * member.str +\n (task.defWeight / 100) * member.def +\n (task.dexWeight / 100) * member.dex +\n (task.agiWeight / 100) * member.agi +\n (task.chaWeight / 100) * member.cha;\n statWeight -= 4 * task.difficulty;\n if (statWeight <= 0) return 0;\n const territoryMult = Math.max(0.005, Math.pow(gang.territory * 100, task.territory.respect) / 100);\n const territoryPenalty = (0.2 * gang.territory + 0.8) * BitNodeMultipliers.GangSoftcap;\n if (isNaN(territoryMult) || territoryMult <= 0) return 0;\n const respectMult = calculateWantedPenalty(gang);\n return Math.pow(11 * task.baseRespect * statWeight * territoryMult * respectMult, territoryPenalty);\n}\n\nexport function calculateWantedLevelGain(gang: Gang, member: GangMember, task: GangMemberTask): number {\n if (task.baseWanted === 0) return 0;\n let statWeight =\n (task.hackWeight / 100) * member.hack +\n (task.strWeight / 100) * member.str +\n (task.defWeight / 100) * member.def +\n (task.dexWeight / 100) * member.dex +\n (task.agiWeight / 100) * member.agi +\n (task.chaWeight / 100) * member.cha;\n statWeight -= 3.5 * task.difficulty;\n if (statWeight <= 0) return 0;\n const territoryMult = Math.max(0.005, Math.pow(gang.territory * 100, task.territory.wanted) / 100);\n if (isNaN(territoryMult) || territoryMult <= 0) return 0;\n if (task.baseWanted < 0) {\n return 0.4 * task.baseWanted * statWeight * territoryMult;\n }\n const calc = (7 * task.baseWanted) / Math.pow(3 * statWeight * territoryMult, 0.8);\n\n // Put an arbitrary cap on this to prevent wanted level from rising too fast if the\n // denominator is very small. Might want to rethink formula later\n return Math.min(100, calc);\n}\n\nexport function calculateMoneyGain(gang: Gang, member: GangMember, task: GangMemberTask): number {\n if (task.baseMoney === 0) return 0;\n let statWeight =\n (task.hackWeight / 100) * member.hack +\n (task.strWeight / 100) * member.str +\n (task.defWeight / 100) * member.def +\n (task.dexWeight / 100) * member.dex +\n (task.agiWeight / 100) * member.agi +\n (task.chaWeight / 100) * member.cha;\n\n statWeight -= 3.2 * task.difficulty;\n if (statWeight <= 0) return 0;\n const territoryMult = Math.max(0.005, Math.pow(gang.territory * 100, task.territory.money) / 100);\n if (isNaN(territoryMult) || territoryMult <= 0) return 0;\n const respectMult = calculateWantedPenalty(gang);\n const territoryPenalty = (0.2 * gang.territory + 0.8) * BitNodeMultipliers.GangSoftcap;\n return Math.pow(5 * task.baseMoney * statWeight * territoryMult * respectMult, territoryPenalty);\n}\n\nexport function calculateAscensionPointsGain(exp: number): number {\n return Math.max(exp - 1000, 0);\n}\n\nexport function calculateAscensionMult(points: number): number {\n return Math.max(Math.pow(points / 2000, 0.5), 1);\n}\n","import { FactionInfo, FactionInfos } from \"./FactionInfo\";\nimport { favorToRep, repToFavor } from \"./formulas/favor\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\n\nexport class Faction {\n /**\n * Flag signalling whether the player has already received an invitation\n * to this faction\n */\n alreadyInvited = false;\n\n /**\n * Holds names of all augmentations that this Faction offers\n */\n augmentations: string[] = [];\n\n /**\n * Amount of favor the player has with this faction.\n */\n favor = 0;\n\n /**\n * Flag signalling whether player has been banned from this faction\n */\n isBanned = false;\n\n /**\n * Flag signalling whether player is a member of this faction\n */\n isMember = false;\n\n /**\n * Name of faction\n */\n name = \"\";\n\n /**\n * Amount of reputation player has with this faction\n */\n playerReputation = 0;\n\n constructor(name = \"\") {\n this.name = name;\n }\n\n getInfo(): FactionInfo {\n const info = FactionInfos[this.name];\n if (info == null) {\n throw new Error(\n `Missing faction from FactionInfos: ${this.name} this probably means the faction got corrupted somehow`,\n );\n }\n\n return info;\n }\n\n gainFavor(): void {\n if (this.favor == null) {\n this.favor = 0;\n }\n this.favor += this.getFavorGain();\n }\n\n //Returns an array with [How much favor would be gained, how much rep would be left over]\n getFavorGain(): number {\n if (this.favor == null) {\n this.favor = 0;\n }\n const storedRep = Math.max(0, favorToRep(this.favor));\n const totalRep = storedRep + this.playerReputation;\n const newFavor = repToFavor(totalRep);\n return newFavor - this.favor;\n }\n\n /**\n * Serialize the current object to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"Faction\", this);\n }\n\n /**\n * Initiatizes a Faction object from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Faction {\n return Generic_fromJSON(Faction, value.data);\n }\n}\n\nReviver.constructors.Faction = Faction;\n","// Enums that defined allowed values for setting configuration\n\n/**\n * Allowed values for the 'OwnedAugmentationsOrder' setting\n */\nexport enum PurchaseAugmentationsOrderSetting {\n Cost,\n Default,\n Reputation,\n Purchasable,\n}\n\n/**\n * Allowed values for the 'OwnedAugmentationsOrder' setting\n */\nexport enum OwnedAugmentationsOrderSetting {\n Alphabetically,\n AcquirementTime,\n}\n","import { BitNodeMultipliers } from \"../../BitNode/BitNodeMultipliers\";\nimport { HacknetNodeConstants } from \"../data/Constants\";\n\nexport function calculateMoneyGainRate(level: number, ram: number, cores: number, mult: number): number {\n const gainPerLevel = HacknetNodeConstants.MoneyGainPerLevel;\n\n const levelMult = level * gainPerLevel;\n const ramMult = Math.pow(1.035, ram - 1);\n const coresMult = (cores + 5) / 6;\n return levelMult * ramMult * coresMult * mult * BitNodeMultipliers.HacknetNodeMoney;\n}\n\nexport function calculateLevelUpgradeCost(startingLevel: number, extraLevels = 1, costMult = 1): number {\n const sanitizedLevels = Math.round(extraLevels);\n if (isNaN(sanitizedLevels) || sanitizedLevels < 1) {\n return 0;\n }\n\n if (startingLevel >= HacknetNodeConstants.MaxLevel) {\n return Infinity;\n }\n\n const mult = HacknetNodeConstants.UpgradeLevelMult;\n let totalMultiplier = 0;\n let currLevel = startingLevel;\n for (let i = 0; i < sanitizedLevels; ++i) {\n totalMultiplier += HacknetNodeConstants.LevelBaseCost * Math.pow(mult, currLevel);\n ++currLevel;\n }\n\n return (HacknetNodeConstants.BaseCost / 2) * totalMultiplier * costMult;\n}\n\nexport function calculateRamUpgradeCost(startingRam: number, extraLevels = 1, costMult = 1): number {\n const sanitizedLevels = Math.round(extraLevels);\n if (isNaN(sanitizedLevels) || sanitizedLevels < 1) {\n return 0;\n }\n\n if (startingRam >= HacknetNodeConstants.MaxRam) {\n return Infinity;\n }\n\n let totalCost = 0;\n let numUpgrades = Math.round(Math.log2(startingRam));\n let currentRam = startingRam;\n\n for (let i = 0; i < sanitizedLevels; ++i) {\n const baseCost = currentRam * HacknetNodeConstants.RamBaseCost;\n const mult = Math.pow(HacknetNodeConstants.UpgradeRamMult, numUpgrades);\n\n totalCost += baseCost * mult;\n\n currentRam *= 2;\n ++numUpgrades;\n }\n\n totalCost *= costMult;\n\n return totalCost;\n}\n\nexport function calculateCoreUpgradeCost(startingCore: number, extraLevels = 1, costMult = 1): number {\n const sanitizedCores = Math.round(extraLevels);\n if (isNaN(sanitizedCores) || sanitizedCores < 1) {\n return 0;\n }\n\n if (startingCore >= HacknetNodeConstants.MaxCores) {\n return Infinity;\n }\n\n const coreBaseCost = HacknetNodeConstants.CoreBaseCost;\n const mult = HacknetNodeConstants.UpgradeCoreMult;\n let totalCost = 0;\n let currentCores = startingCore;\n for (let i = 0; i < sanitizedCores; ++i) {\n totalCost += coreBaseCost * Math.pow(mult, currentCores - 1);\n ++currentCores;\n }\n\n totalCost *= costMult;\n\n return totalCost;\n}\n\nexport function calculateNodeCost(n: number, mult = 1): number {\n if (n <= 0) {\n return 0;\n }\n return HacknetNodeConstants.BaseCost * Math.pow(HacknetNodeConstants.PurchaseNextMult, n - 1) * mult;\n}\n","import * as React from \"react\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\n\nconst gainLimit = 10e9;\n\nexport function win(p: IPlayer, n: number): void {\n p.gainMoney(n, \"casino\");\n}\n\nexport function reachedLimit(p: IPlayer): boolean {\n const reached = p.getCasinoWinnings() > gainLimit;\n if (reached) {\n dialogBoxCreate(<>Alright cheater get out of here. You're not allowed here anymore.>);\n }\n return reached;\n}\n\nexport class Game extends React.Component {\n win(p: IPlayer, n: number): void {\n p.gainMoney(n, \"casino\");\n }\n\n reachedLimit(p: IPlayer): boolean {\n const reached = p.getCasinoWinnings() > gainLimit;\n if (reached) {\n dialogBoxCreate(<>Alright cheater get out of here. You're not allowed here anymore.>);\n }\n return reached;\n }\n}\n","const _ = false;\nconst X = true;\nexport const Shapes: {\n O: boolean[][];\n I: boolean[][];\n L: boolean[][];\n J: boolean[][];\n S: boolean[][];\n Z: boolean[][];\n T: boolean[][];\n} = {\n O: [\n [X, X],\n [X, X],\n ],\n I: [[X, X, X, X]],\n L: [\n [_, _, X],\n [X, X, X],\n ],\n J: [\n [X, _, _],\n [X, X, X],\n ],\n S: [\n [_, X, X],\n [X, X, _],\n ],\n Z: [\n [X, X, _],\n [_, X, X],\n ],\n T: [\n [X, X, X],\n [_, X, _],\n ],\n};\n","import React, { useEffect } from \"react\";\n\ninterface IProps {\n onKeyDown: (this: Document, event: KeyboardEvent) => void;\n onFailure: (options?: { automated: boolean }) => void;\n}\n\nexport function KeyHandler(props: IProps): React.ReactElement {\n useEffect(() => {\n function press(this: Document, event: KeyboardEvent): void {\n if (!event.isTrusted) return;\n const f = props.onKeyDown.bind(this);\n f(event);\n }\n document.addEventListener(\"keydown\", press);\n return () => document.removeEventListener(\"keydown\", press);\n });\n\n // invisible autofocused element that eats all the keypress for the minigames.\n return <>>;\n}\n","import LinearProgress from \"@mui/material/LinearProgress\";\nimport React, { useState, useEffect } from \"react\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst TimerProgress = withStyles((theme: Theme) => ({\n root: {\n backgroundColor: theme.palette.background.paper,\n },\n bar: {\n transition: \"none\",\n backgroundColor: theme.palette.primary.main,\n },\n}))(LinearProgress);\n\ninterface IProps {\n millis: number;\n onExpire: () => void;\n}\n\nexport function GameTimer(props: IProps): React.ReactElement {\n const [v, setV] = useState(100);\n\n const tick = 200;\n useEffect(() => {\n const intervalId = setInterval(() => {\n setV((old) => {\n if (old <= 0) props.onExpire();\n return old - (tick / props.millis) * 100;\n });\n }, tick);\n return () => {\n clearInterval(intervalId);\n };\n }, []);\n\n // https://stackoverflow.com/questions/55593367/disable-material-uis-linearprogress-animation\n // TODO(hydroflame): there's like a bug where it triggers the end before the\n // bar physically reaches the end\n return (\n \n \n \n );\n}\n","interface DifficultySetting {\n [key: string]: number;\n}\n\ninterface DifficultySettings {\n Trivial: DifficultySetting;\n Normal: DifficultySetting;\n Hard: DifficultySetting;\n Impossible: DifficultySetting;\n}\n\n// I could use `any` to simply some of this but I also want to take advantage\n// of the type safety that typescript provides. I'm just not sure how in this\n// case.\nexport function interpolate(settings: DifficultySettings, n: number, out: DifficultySetting): DifficultySetting {\n // interpolates between 2 difficulties.\n function lerpD(a: DifficultySetting, b: DifficultySetting, t: number): DifficultySetting {\n // interpolates between 2 numbers.\n function lerp(x: number, y: number, t: number): number {\n return (1 - t) * x + t * y;\n }\n for (const key of Object.keys(a)) {\n out[key] = lerp(a[key], b[key], t);\n }\n return a;\n }\n if (n < 0) return lerpD(settings.Trivial, settings.Trivial, 0);\n if (n >= 0 && n < 1) return lerpD(settings.Trivial, settings.Normal, n);\n if (n >= 1 && n < 2) return lerpD(settings.Normal, settings.Hard, n - 1);\n if (n >= 2 && n < 3) return lerpD(settings.Hard, settings.Impossible, n - 2);\n return lerpD(settings.Impossible, settings.Impossible, 0);\n}\n","/**\n * Map of all Locations in the game\n * Key = Location name, value = Location object\n */\nimport { City } from \"./City\";\nimport { Cities } from \"./Cities\";\nimport { Location, IConstructorParams } from \"./Location\";\nimport { CityName } from \"./data/CityNames\";\nimport { LocationsMetadata } from \"./data/LocationsMetadata\";\n\nimport { IMap } from \"../types\";\n\nexport const Locations: IMap = {};\n\n/**\n * Here, we'll initialize both Locations and Cities data. These can both\n * be initialized from the `LocationsMetadata`\n */\nfunction constructLocation(p: IConstructorParams): Location {\n if (!p.name) {\n throw new Error(`Invalid constructor parameters for Location. No 'name' property`);\n }\n\n if (Locations[p.name] instanceof Location) {\n console.warn(`Property with name ${p.name} already exists and is being overwritten`);\n }\n\n Locations[p.name] = new Location(p);\n\n return Locations[p.name];\n}\n\n// First construct all cities\nCities[CityName.Aevum] = new City(CityName.Aevum);\nCities[CityName.Chongqing] = new City(CityName.Chongqing);\nCities[CityName.Ishima] = new City(CityName.Ishima);\nCities[CityName.NewTokyo] = new City(CityName.NewTokyo);\nCities[CityName.Sector12] = new City(CityName.Sector12);\nCities[CityName.Volhaven] = new City(CityName.Volhaven);\n\nCities[CityName.Aevum].asciiArt = `\n [aevum police headquarters] 26 \n o \n I \\\\ [bachman & associates] \n \\\\ 56 B \n x \\\\ [summit university] \n \\\\ \\\\ 28 \n \\\\ [snap fitness gym] x o--L-----------N \n K \\\\ / \n \\\\ \\\\ Q [casino] \n x 58 \\\\ / [travel agency] \n \\\\ 94 95 o \n 90 x 59 o------o | \n \\\\ / \\\\ | 98 102 103 \n o--------O------x----o 93 96 o-----+------------o o----o \n \\\\ | \\\\ / \n [hospital] \\\\ 61 [ecorp] x 31 99 o-F-o 101 \n o | \n | o---E-- | [fulcrum tech.] \n x 62 / A [aerocorp] \n [crush fitness gym] | / | \n | / | \n o--------D------+--o o \n | |\\\\ [rho construction] \n H [netlink tech.] | J \n | | \\\\ \n | 34 x \\\\ \n [clarke inc.] C | \\\\ [world stock exchange] \n | | \\\\ \n | | o-M-------R--------o \n[galactic cybersystems] G 35 x \n | [watchdog security] \n | \n 67 o \n \n [the slums] P `;\nCities[CityName.Chongqing].asciiArt = `\n | \n 75 o \n \\\\ \n o 76 \n 7 | | \n | + 77 \n [world stock exchange] F | \n \\\\ o 78 [kuaigong international] \n \\\\ / \n 38 o----x--x------x------A------G-- \n / 39 | 41 [church] \n 37 o + 79 o--x--x-C-0 \n / | / \n / x-----+-----x-----0 [hospital] \n[solaris space system] B | \n | + 80 \n | | \n 34 o E [travel agency] \n | \n | \n x 82 \n [the slums] D `;\nCities[CityName.Ishima].asciiArt = `\n o 59 \n o o | \n [storm tech.] | | G [world stock exchange] \n | | 28 | \n 23 o--C------o--------+----x----o | \n / / 25 | 27 \\\\ x 57 \n / / | \\\\ | \n / / | \\\\ | \n o 22 o | \\\\| 29/56 \n | | o \n | [hospital] D / \\\\ 3 2 1 \n o | / \\\\ o-------x------o \n / o / \\\\ / \n 48 o / 55 x \\\\ / \n \\\\ / / x [glitch] \n \\\\ / [nova medical] / 4/30 \\\\ \n 49 x A \\\\ H \n / \\\\ / \\\\ \n / \\\\ [travel agency] F o 31 \n / \\\\ 51 / \n / o----B------x-----o \n o 50 52 \n [omega soft.] \n [the slums] E `;\nCities[CityName.NewTokyo].asciiArt = `\n \n \n o \n \\\\ \n [arcade] E [defcomm] \n \\\\ \n o--x---A--x--o [travel agency] \n 7 8 10 H \n [vitalife] o 12 [global pharmaceuticals] \n | \n o--D-x----x-------x-C-+--------x--x-B-x---x-o \n 21 22 23 \\\\ 24 25 26 27 \n \\\\ \n [noodle bar] x 14 \n \\\\ \n \\\\ \n [hospital] o 15 [world stock exchange] \n | \n o--x--F--x-----x-----x---+---x----x--I--x-o \n | \n | \n o 17 \n \n \n \n G [the slums] \n `;\nCities[CityName.Sector12].asciiArt = `\n 78 o 97 \n o [icarus microsystems] / \n N [powerhouse gym] o I \n 1 | | / \n o-----+---x----o 4 A [alpha ent.] o-------o / \n | 3 \\\\ | \\\\ / \n | \\\\ | [iron gym] x 95 \n (79) x \\\\ | / \\\\ \n | o-E----+----x----J--o 10 / o----T--o \n | | 8 \\\\ 94 x \n 80 x [city hall] | x 11 / [world stock exchange]\n | | \\\\ / \n | C [cia] \\\\ / \n Q [hospital] | F P [universal energy] \n | o [deltaone] \\\\ / \n | 35 o---------x 13/92/36 \n L [megacorp] 33 / / \\\\ \n | o------------o 34 / \\\\ \n (29) | / [carmichael sec.] D \\\\ \n o-----+-----x------o / O [rothman university] \n | 31 32 [nsa] M \n | / \n B [blade industries] H \n | / [four sigma] \n | [joe's guns] / \n | / \n 85 o--G--------K--------S-------o 88 [the slums] R \n \n [foodnstuff] [travel agency] `;\nCities[CityName.Volhaven].asciiArt = `\n [omnia cybersystems] \n 17 66 68 \n o o------G-------o \n \\\\ / \\\\ \n \\\\ o 65 o 69 \n [syscore sec.] H | | \n \\\\ | | [millenium fitness gym] \n \\\\ | 21 22 23 24 | 26 \n o----+--x--x----x---x---+-----x-------D-----o \n 19 | | 28 \n | F [omnitek inc.] \n [hospital] J 63 o \n | / 72 \n 3 | 5 6 / 9 \n o--------+----x-----x----+----------M-------o \n / | | \n / 61 x [helios labs] B [world stock exchange] \n [travel agency] L | | \n / | o \n / E [nwo] / 75 \n / [computek] | / \n / A-------o------I-----o \n 1 o | | \n | [zb] o 77 \n [lexocorp] C \n | \n o \n 57 \n \n \n [the slums] K `;\n\n// Then construct all locations, and add them to the cities as we go.\nfor (const metadata of LocationsMetadata) {\n const loc = constructLocation(metadata);\n\n const cityName = loc.city;\n if (cityName === null) {\n // Generic location, add to all cities\n for (const city of Object.keys(Cities)) {\n Cities[city].addLocation(loc.name);\n }\n } else {\n Cities[cityName].addLocation(loc.name);\n }\n}\n","import React from \"react\";\nimport { BitNodeMultipliers } from \"./BitNodeMultipliers\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { IMap } from \"../types\";\nimport { FactionNames } from \"../Faction/data/FactionNames\";\nimport { CityName } from \"../Locations/data/CityNames\";\n\nclass BitNode {\n // A short description, or tagline, about the BitNode\n desc: string;\n\n // A long, detailed overview of the BitNode\n info: JSX.Element;\n\n // Name of BitNode\n name: string;\n\n // BitNode number\n number: number;\n\n difficulty: 0 | 1 | 2;\n\n constructor(n: number, difficulty: 0 | 1 | 2, name: string, desc = \"\", info: JSX.Element = <>>) {\n this.number = n;\n this.difficulty = difficulty;\n this.name = name;\n this.desc = desc;\n this.info = info;\n }\n}\n\nexport const BitNodes: IMap = {};\n\nBitNodes[\"BitNode1\"] = new BitNode(\n 1,\n 0,\n \"Source Genesis\",\n \"The original BitNode\",\n (\n <>\n The first BitNode created by the Enders to imprison the minds of humans. It became the prototype and\n testing-grounds for all of the BitNodes that followed.\n \n \n This is the first BitNode that you play through. It has no special modifications or mechanics.\n \n \n Destroying this BitNode will give you Source-File 1, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File lets the player start with 32GB of RAM on his/her home computer when\n entering a new BitNode, and also increases all of the player's multipliers by:\n \n \n Level 1: 16%\n \n Level 2: 24%\n \n Level 3: 28%\n >\n ),\n);\nBitNodes[\"BitNode2\"] = new BitNode(\n 2,\n 0,\n \"Rise of the Underworld\",\n \"From the shadows, they rose\", //Gangs\n (\n <>\n From the shadows, they rose.\n \n \n Organized crime groups quickly filled the void of power left behind from the collapse of Western government in the\n 2050s. As society and civilization broke down, people quickly succumbed to the innate human impulse of evil and\n savagery. The organized crime factions quickly rose to the top of the modern world.\n \n \n In this BitNode:\n \n \n Your hacking level is reduced by 20%\n \n The growth rate and maximum amount of money available on servers are significantly decreased\n \n The amount of money gained from crimes and Infiltration is tripled\n \n Certain Factions ({FactionNames.SlumSnakes}, {FactionNames.Tetrads}, {FactionNames.TheSyndicate},{\" \"}\n {FactionNames.TheDarkArmy}, {FactionNames.SpeakersForTheDead}, {FactionNames.NiteSec}, {FactionNames.TheBlackHand}\n ) give the player the ability to form and manage their own gangs. These gangs will earn the player money and\n reputation with the corresponding Faction\n \n Every Augmentation in the game will be available through the Factions listed above\n \n For every Faction NOT listed above, reputation gains are halved\n \n You will no longer gain passive reputation with Factions\n \n \n Destroying this BitNode will give you Source-File 2, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File allows you to form gangs in other BitNodes once your karma decreases\n to a certain value. It also increases the player's crime success rate, crime money, and charisma multipliers by:\n \n \n Level 1: 24%\n \n Level 2: 36%\n \n Level 3: 42%\n >\n ),\n);\nBitNodes[\"BitNode3\"] = new BitNode(\n 3,\n 0,\n \"Corporatocracy\",\n \"The Price of Civilization\",\n (\n <>\n Our greatest illusion is that a healthy society can revolve around a single-minded pursuit of wealth.\n \n \n Sometime in the early 21st century economic and political globalization turned the world into a corporatocracy,\n and it never looked back. Now, the privileged elite will happily bankrupt their own countrymen, decimate their own\n community, and evict their neighbors from houses in their desperate bid to increase their wealth.\n \n \n In this BitNode you can create and manage your own corporation. Running a successful corporation has the potential\n of generating massive profits. All other forms of income are reduced by 75%. Furthermore: \n \n The price and reputation cost of all Augmentations is tripled\n \n The starting and maximum amount of money on servers is reduced by 75%\n \n Server growth rate is reduced by 80%\n \n You now only need 75 favour with a faction in order to donate to it, rather than 150\n \n \n Destroying this BitNode will give you Source-File 3, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File lets you create corporations on other BitNodes (although some\n BitNodes will disable this mechanic). This Source-File also increases your charisma and company salary multipliers\n by:\n \n Level 1: 8%\n \n Level 2: 12%\n \n Level 3: 14%\n >\n ),\n);\nBitNodes[\"BitNode4\"] = new BitNode(\n 4,\n 1,\n \"The Singularity\",\n \"The Man and the Machine\",\n (\n <>\n The Singularity has arrived. The human race is gone, replaced by artificially superintelligent beings that are\n more machine than man. \n \n In this BitNode, progressing is significantly harder. Experience gain rates for all stats are reduced. Most\n methods of earning money will now give significantly less.\n \n \n In this BitNode you will gain access to a new set of Netscript Functions known as Singularity Functions. These\n functions allow you to control most aspects of the game through scripts, including working for factions/companies,\n purchasing/installing Augmentations, and creating programs.\n \n \n Destroying this BitNode will give you Source-File 4, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File lets you access and use the Singularity Functions in other BitNodes.\n Each level of this Source-File reduces the RAM cost of singularity functions.\n >\n ),\n);\nBitNodes[\"BitNode5\"] = new BitNode(\n 5,\n 1,\n \"Artificial Intelligence\",\n \"Posthuman\",\n (\n <>\n They said it couldn't be done. They said the human brain, along with its consciousness and intelligence, couldn't\n be replicated. They said the complexity of the brain results from unpredictable, nonlinear interactions that\n couldn't be modeled by 1's and 0's. They were wrong.\n \n \n In this BitNode:\n \n \n The base security level of servers is doubled\n \n The starting money on servers is halved, but the maximum money remains the same\n \n Most methods of earning money now give significantly less\n \n Infiltration gives 50% more reputation and money\n \n Corporations have 50% lower valuations and are therefore less profitable\n \n Augmentations are more expensive\n \n Hacking experience gain rates are reduced\n \n \n Destroying this BitNode will give you Source-File 5, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File grants you a special new stat called Intelligence. Intelligence is\n unique because it is permanent and persistent (it never gets reset back to 1). However gaining Intelligence\n experience is much slower than other stats. Higher Intelligence levels will boost your production for many actions\n in the game. \n \n In addition, this Source-File will unlock the getBitNodeMultipliers() Netscript function and let you start with\n Formulas.exe, and will also raise all of your hacking-related multipliers by:\n \n \n Level 1: 8%\n \n Level 2: 12%\n \n Level 3: 14%\n >\n ),\n);\nBitNodes[\"BitNode6\"] = new BitNode(\n 6,\n 1,\n FactionNames.Bladeburners,\n \"Like Tears in Rain\",\n (\n <>\n In the middle of the 21st century, {FactionNames.OmniTekIncorporated} began designing and manufacturing advanced\n synthetic androids, or Synthoids for short. They achieved a major technological breakthrough in the sixth\n generation of their Synthoid design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was\n the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more\n intelligent than the humans that had created them.\n \n \n In this BitNode you will be able to access the {FactionNames.Bladeburners} Division at the NSA, which provides a\n new mechanic for progression. Furthermore:\n \n \n Hacking and Hacknet Nodes will be less profitable\n \n Your hacking level is reduced by 65%\n \n Hacking experience gain from scripts is reduced by 75%\n \n Corporations have 80% lower valuations and are therefore less profitable\n \n Working for companies is 50% less profitable\n \n Crimes and Infiltration are 25% less profitable\n \n \n Destroying this BitNode will give you Source-File 6, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File allows you to access the NSA's {FactionNames.Bladeburners} Division\n in other BitNodes. In addition, this Source-File will raise both the level and experience gain rate of all your\n combat stats by:\n \n \n Level 1: 8%\n \n Level 2: 12%\n \n Level 3: 14%\n >\n ),\n);\nBitNodes[\"BitNode7\"] = new BitNode(\n 7,\n 2,\n `${FactionNames.Bladeburners} 2079`,\n \"More human than humans\",\n (\n <>\n In the middle of the 21st century, you were doing cutting-edge work at {FactionNames.OmniTekIncorporated} as part\n of the AI design team for advanced synthetic androids, or Synthoids for short. You helped achieve a major\n technological breakthrough in the sixth generation of the company's Synthoid design, called MK-VI, by developing a\n hyperintelligent AI. Many argue that this was the first sentient AI ever created. This resulted in Synthoid models\n that were stronger, faster, and more intelligent than the humans that had created them.\n \n \n In this BitNode you will be able to access the {FactionNames.Bladeburners} API, which allows you to access{\" \"}\n {FactionNames.Bladeburners}\n functionality through Netscript. Furthermore: \n \n The rank you gain from {FactionNames.Bladeburners} contracts/operations is reduced by 40%\n \n {FactionNames.Bladeburners} skills cost twice as many skill points\n \n Augmentations are 3x more expensive\n \n Hacking and Hacknet Nodes will be significantly less profitable\n \n Your hacking level is reduced by 65%\n \n Hacking experience gain from scripts is reduced by 75%\n \n Corporations have 80% lower valuations and are therefore less profitable\n \n Working for companies is 50% less profitable\n \n Crimes and Infiltration are 25% less profitable\n \n \n Destroying this BitNode will give you Source-File 7, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File allows you to access the {FactionNames.Bladeburners} Netscript API in\n other BitNodes. In addition, this Source-File will increase all of your {FactionNames.Bladeburners} multipliers\n by:\n \n \n Level 1: 8%\n \n Level 2: 12%\n \n Level 3: 14%\n >\n ),\n);\nBitNodes[\"BitNode8\"] = new BitNode(\n 8,\n 2,\n \"Ghost of Wall Street\",\n \"Money never sleeps\",\n (\n <>\n You are trying to make a name for yourself as an up-and-coming hedge fund manager on Wall Street.\n \n \n In this BitNode:\n \n \n You start with $250 million\n \n The only way to earn money is by trading on the stock market\n \n You start with a WSE membership and access to the TIX API\n \n You are able to short stocks and place different types of orders (limit/stop)\n \n You can immediately donate to factions to gain reputation\n \n \n Destroying this BitNode will give you Source-File 8, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File grants the following benefits:\n \n \n Level 1: Permanent access to WSE and TIX API\n \n Level 2: Ability to short stocks in other BitNodes\n \n Level 3: Ability to use limit/stop orders in other BitNodes\n \n \n This Source-File also increases your hacking growth multipliers by:\n \n Level 1: 12%\n \n Level 2: 18%\n \n Level 3: 21%\n >\n ),\n);\nBitNodes[\"BitNode9\"] = new BitNode(\n 9,\n 2,\n \"Hacktocracy\",\n \"Hacknet Unleashed\",\n (\n <>\n When {FactionNames.FulcrumSecretTechnologies} released their open-source Linux distro Chapeau, it quickly became\n the OS of choice for the underground hacking community. Chapeau became especially notorious for powering the\n Hacknet, a global, decentralized network used for nefarious purposes. {FactionNames.FulcrumSecretTechnologies}{\" \"}\n quickly abandoned the project and dissociated themselves from it.\n \n \n This BitNode unlocks the Hacknet Server, an upgraded version of the Hacknet Node. Hacknet Servers generate hashes,\n which can be spent on a variety of different upgrades.\n \n \n In this BitNode:\n \n \n Your stats are significantly decreased\n \n You cannnot purchase additional servers\n \n Hacking is significantly less profitable\n \n \n Destroying this BitNode will give you Source-File 9, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File grants the following benefits:\n \n \n Level 1: Permanently unlocks the Hacknet Server in other BitNodes\n \n Level 2: You start with 128GB of RAM on your home computer when entering a new BitNode\n \n Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode\n \n \n (Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT when installing\n Augmentations)\n \n \n This Source-File also increases your hacknet multipliers by:\n \n Level 1: 8%\n \n Level 2: 12%\n \n Level 3: 14%\n >\n ),\n);\nBitNodes[\"BitNode10\"] = new BitNode(\n 10,\n 2,\n \"Digital Carbon\",\n \"Your body is not who you are\",\n (\n <>\n In 2084, VitaLife unveiled to the world the Persona Core, a technology that allowed people to digitize their\n consciousness. Their consciousness could then be transferred into Synthoids or other bodies by trasmitting the\n digitized data. Human bodies became nothing more than 'sleeves' for the human consciousness. Mankind had finally\n achieved immortality - at least for those that could afford it.\n \n \n This BitNode unlocks Sleeve technology. Sleeve technology allows you to:\n \n \n 1. Grafting: Visit VitaLife in New Tokyo to be able to obtain Augmentations without needing to install\n \n 2. Duplicate Sleeves: Duplicate your consciousness into Synthoids, allowing you to perform different tasks\n synchronously\n \n \n In this BitNode:\n \n \n Your stats are significantly decreased\n \n All methods of gaining money are half as profitable (except Stock Market)\n \n Purchased servers are more expensive, have less max RAM, and a lower maximum limit\n \n Augmentations are 5x as expensive and require twice as much reputation\n \n \n Destroying this BitNode will give you Source-File 10, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File unlocks Sleeve technology in other BitNodes. Each level of this\n Source-File also grants you a Duplicate Sleeve\n >\n ),\n);\nBitNodes[\"BitNode11\"] = new BitNode(\n 11,\n 1,\n \"The Big Crash\",\n \"Okay. Sell it all.\",\n (\n <>\n The 2050s was defined by the massive amounts of violent civil unrest and anarchic rebellion that rose all around\n the world. It was this period of disorder that eventually lead to the governmental reformation of many global\n superpowers, most notably the USA and China. But just as the world was slowly beginning to recover from these dark\n times, financial catastrophe hit.\n \n \n In many countries, the high cost of trying to deal with the civil disorder bankrupted the governments. In all of\n this chaos and confusion, hackers were able to steal billions of dollars from the world's largest electronic\n banks, prompting an international banking crisis as governments were unable to bail out insolvent banks. Now, the\n world is slowly crumbling in the middle of the biggest economic crisis of all time.\n \n \n In this BitNode:\n \n \n Your hacking stat and experience gain are halved\n \n The starting and maximum amount of money available on servers is significantly decreased\n \n The growth rate of servers is significantly reduced\n \n Weakening a server is twice as effective\n \n Company wages are decreased by 50%\n \n Corporation valuations are 90% lower and are therefore significantly less profitable\n \n Hacknet Node production is significantly decreased\n \n Crime and Infiltration are more lucrative\n \n Augmentations are twice as expensive\n \n \n Destroying this BitNode will give you Source-File 11, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File makes it so that company favor increases BOTH the player's salary and\n reputation gain rate at that company by 1% per favor (rather than just the reputation gain). This Source-File also\n increases the player's company salary and reputation gain multipliers by:\n \n \n Level 1: 32%\n \n Level 2: 48%\n \n Level 3: 56%\n \n \n It also reduces the price increase for every aug bought by:\n \n \n Level 1: 4%\n \n Level 2: 6%\n \n Level 3: 7%\n >\n ),\n);\nBitNodes[\"BitNode12\"] = new BitNode(\n 12,\n 0,\n \"The Recursion\",\n \"Repeat.\",\n (\n <>\n To iterate is human, to recurse divine.\n \n \n Every time this BitNode is destroyed, it becomes slightly harder. Destroying this BitNode will give you\n Source-File 12, or if you already have this Source-File it will upgrade its level. There is no maximum level for\n Source-File 12. Each level of Source-File 12 lets you start any BitNodes with NeuroFlux Governor equal to the\n level of this source file.\n >\n ),\n);\nBitNodes[\"BitNode13\"] = new BitNode(\n 13,\n 2,\n \"They're lunatics\",\n \"1 step back, 2 steps forward\",\n (\n <>\n With the invention of Augmentations in the 2040s a religious group known as the{\" \"}\n {FactionNames.ChurchOfTheMachineGod} has rallied far more support than anyone would have hoped.\n \n \n Their leader, Allison \"Mother\" Stanek is said to have created her own Augmentation whose power goes beyond any\n other. Find her in {CityName.Chongqing} and gain her trust.\n \n \n In this BitNode:\n \n \n Every stat is significantly reduced\n \n Stanek's Gift power is significantly increased.\n \n \n Destroying this BitNode will give you Source-File 13, or if you already have this Source-File it will upgrade its\n level up to a maximum of 3. This Source-File lets the {FactionNames.ChurchOfTheMachineGod} appear in other\n BitNodes.\n \n \n Each level of this Source-File increases the size of Stanek's Gift.\n >\n ),\n);\n// Books: Frontera, Shiner\nBitNodes[\"BitNode14\"] = new BitNode(14, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode15\"] = new BitNode(15, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode16\"] = new BitNode(16, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode17\"] = new BitNode(17, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode18\"] = new BitNode(18, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode19\"] = new BitNode(19, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode20\"] = new BitNode(20, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode21\"] = new BitNode(21, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode22\"] = new BitNode(22, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode23\"] = new BitNode(23, 2, \"\", \"COMING SOON\");\nBitNodes[\"BitNode24\"] = new BitNode(24, 2, \"\", \"COMING SOON\");\n\nexport function initBitNodeMultipliers(p: IPlayer): void {\n if (p.bitNodeN == null) {\n p.bitNodeN = 1;\n }\n for (const mult of Object.keys(BitNodeMultipliers)) {\n if (BitNodeMultipliers.hasOwnProperty(mult)) {\n BitNodeMultipliers[mult] = 1;\n }\n }\n // Special case.\n BitNodeMultipliers.StaneksGiftExtraSize = 0;\n\n switch (p.bitNodeN) {\n case 1: // Source Genesis (every multiplier is 1)\n break;\n case 2: // Rise of the Underworld\n BitNodeMultipliers.HackingLevelMultiplier = 0.8;\n BitNodeMultipliers.ServerGrowthRate = 0.8;\n BitNodeMultipliers.ServerMaxMoney = 0.2;\n BitNodeMultipliers.ServerStartingMoney = 0.4;\n BitNodeMultipliers.CrimeMoney = 3;\n BitNodeMultipliers.InfiltrationMoney = 3;\n BitNodeMultipliers.FactionWorkRepGain = 0.5;\n BitNodeMultipliers.FactionPassiveRepGain = 0;\n BitNodeMultipliers.StaneksGiftPowerMultiplier = 2;\n BitNodeMultipliers.StaneksGiftExtraSize = -6;\n BitNodeMultipliers.PurchasedServerSoftcap = 1.3;\n BitNodeMultipliers.CorporationSoftCap = 0.9;\n BitNodeMultipliers.WorldDaemonDifficulty = 5;\n break;\n case 3: // Corporatocracy\n BitNodeMultipliers.HackingLevelMultiplier = 0.8;\n BitNodeMultipliers.RepToDonateToFaction = 0.5;\n BitNodeMultipliers.AugmentationRepCost = 3;\n BitNodeMultipliers.AugmentationMoneyCost = 3;\n BitNodeMultipliers.ServerMaxMoney = 0.2;\n BitNodeMultipliers.ServerStartingMoney = 0.2;\n BitNodeMultipliers.ServerGrowthRate = 0.2;\n BitNodeMultipliers.ScriptHackMoney = 0.2;\n BitNodeMultipliers.CompanyWorkMoney = 0.25;\n BitNodeMultipliers.CrimeMoney = 0.25;\n BitNodeMultipliers.HacknetNodeMoney = 0.25;\n BitNodeMultipliers.HomeComputerRamCost = 1.5;\n BitNodeMultipliers.PurchasedServerCost = 2;\n BitNodeMultipliers.StaneksGiftPowerMultiplier = 0.75;\n BitNodeMultipliers.StaneksGiftExtraSize = -2;\n BitNodeMultipliers.PurchasedServerSoftcap = 1.3;\n BitNodeMultipliers.GangSoftcap = 0.9;\n BitNodeMultipliers.WorldDaemonDifficulty = 2;\n BitNodeMultipliers.GangUniqueAugs = 0.5;\n break;\n case 4: // The Singularity\n BitNodeMultipliers.ServerMaxMoney = 0.15;\n BitNodeMultipliers.ServerStartingMoney = 0.75;\n BitNodeMultipliers.ScriptHackMoney = 0.2;\n BitNodeMultipliers.CompanyWorkMoney = 0.1;\n BitNodeMultipliers.CrimeMoney = 0.2;\n BitNodeMultipliers.HacknetNodeMoney = 0.05;\n BitNodeMultipliers.CompanyWorkExpGain = 0.5;\n BitNodeMultipliers.ClassGymExpGain = 0.5;\n BitNodeMultipliers.FactionWorkExpGain = 0.5;\n BitNodeMultipliers.HackExpGain = 0.4;\n BitNodeMultipliers.CrimeExpGain = 0.5;\n BitNodeMultipliers.FactionWorkRepGain = 0.75;\n BitNodeMultipliers.StaneksGiftPowerMultiplier = 1.5;\n BitNodeMultipliers.StaneksGiftExtraSize = 0;\n BitNodeMultipliers.PurchasedServerSoftcap = 1.2;\n BitNodeMultipliers.WorldDaemonDifficulty = 3;\n BitNodeMultipliers.GangUniqueAugs = 0.5;\n break;\n case 5: // Artificial intelligence\n BitNodeMultipliers.ServerMaxMoney = 2;\n BitNodeMultipliers.ServerStartingSecurity = 2;\n BitNodeMultipliers.ServerStartingMoney = 0.5;\n BitNodeMultipliers.ScriptHackMoney = 0.15;\n BitNodeMultipliers.HacknetNodeMoney = 0.2;\n BitNodeMultipliers.CrimeMoney = 0.5;\n BitNodeMultipliers.InfiltrationRep = 1.5;\n BitNodeMultipliers.InfiltrationMoney = 1.5;\n BitNodeMultipliers.AugmentationMoneyCost = 2;\n BitNodeMultipliers.HackExpGain = 0.5;\n BitNodeMultipliers.CorporationValuation = 0.5;\n BitNodeMultipliers.StaneksGiftPowerMultiplier = 1.3;\n BitNodeMultipliers.StaneksGiftExtraSize = 0;\n BitNodeMultipliers.PurchasedServerSoftcap = 1.2;\n BitNodeMultipliers.WorldDaemonDifficulty = 1.5;\n BitNodeMultipliers.GangUniqueAugs = 0.5;\n break;\n case 6: // Bladeburner\n BitNodeMultipliers.HackingLevelMultiplier = 0.35;\n BitNodeMultipliers.ServerMaxMoney = 0.4;\n BitNodeMultipliers.ServerStartingMoney = 0.5;\n BitNodeMultipliers.ServerStartingSecurity = 1.5;\n BitNodeMultipliers.ScriptHackMoney = 0.75;\n BitNodeMultipliers.CompanyWorkMoney = 0.5;\n BitNodeMultipliers.CrimeMoney = 0.75;\n BitNodeMultipliers.InfiltrationMoney = 0.75;\n BitNodeMultipliers.CorporationValuation = 0.2;\n BitNodeMultipliers.HacknetNodeMoney = 0.2;\n BitNodeMultipliers.HackExpGain = 0.25;\n BitNodeMultipliers.DaedalusAugsRequirement = 1.166; // Results in 35 Augs needed\n BitNodeMultipliers.PurchasedServerSoftcap = 2;\n BitNodeMultipliers.StaneksGiftPowerMultiplier = 0.5;\n BitNodeMultipliers.StaneksGiftExtraSize = 2;\n BitNodeMultipliers.GangSoftcap = 0.7;\n BitNodeMultipliers.CorporationSoftCap = 0.9;\n BitNodeMultipliers.WorldDaemonDifficulty = 2;\n BitNodeMultipliers.GangUniqueAugs = 0.2;\n break;\n case 7: // Bladeburner 2079\n BitNodeMultipliers.BladeburnerRank = 0.6;\n BitNodeMultipliers.BladeburnerSkillCost = 2;\n BitNodeMultipliers.AugmentationMoneyCost = 3;\n BitNodeMultipliers.HackingLevelMultiplier = 0.35;\n BitNodeMultipliers.ServerMaxMoney = 0.4;\n BitNodeMultipliers.ServerStartingMoney = 0.5;\n BitNodeMultipliers.ServerStartingSecurity = 1.5;\n BitNodeMultipliers.ScriptHackMoney = 0.5;\n BitNodeMultipliers.CompanyWorkMoney = 0.5;\n BitNodeMultipliers.CrimeMoney = 0.75;\n BitNodeMultipliers.InfiltrationMoney = 0.75;\n BitNodeMultipliers.CorporationValuation = 0.2;\n BitNodeMultipliers.HacknetNodeMoney = 0.2;\n BitNodeMultipliers.HackExpGain = 0.25;\n BitNodeMultipliers.FourSigmaMarketDataCost = 2;\n BitNodeMultipliers.FourSigmaMarketDataApiCost = 2;\n BitNodeMultipliers.DaedalusAugsRequirement = 1.166; // Results in 35 Augs needed\n BitNodeMultipliers.PurchasedServerSoftcap = 2;\n BitNodeMultipliers.StaneksGiftPowerMultiplier = 0.9;\n BitNodeMultipliers.StaneksGiftExtraSize = -1;\n BitNodeMultipliers.GangSoftcap = 0.7;\n BitNodeMultipliers.CorporationSoftCap = 0.9;\n BitNodeMultipliers.WorldDaemonDifficulty = 2;\n BitNodeMultipliers.GangUniqueAugs = 0.2;\n break;\n case 8: // Ghost of Wall Street\n BitNodeMultipliers.ScriptHackMoney = 0.3;\n BitNodeMultipliers.ScriptHackMoneyGain = 0;\n BitNodeMultipliers.ManualHackMoney = 0;\n BitNodeMultipliers.CompanyWorkMoney = 0;\n BitNodeMultipliers.CrimeMoney = 0;\n BitNodeMultipliers.HacknetNodeMoney = 0;\n BitNodeMultipliers.InfiltrationMoney = 0;\n BitNodeMultipliers.RepToDonateToFaction = 0;\n BitNodeMultipliers.CorporationValuation = 0;\n BitNodeMultipliers.CodingContractMoney = 0;\n BitNodeMultipliers.StaneksGiftExtraSize = -7;\n BitNodeMultipliers.PurchasedServerSoftcap = 4;\n BitNodeMultipliers.GangSoftcap = 0;\n BitNodeMultipliers.CorporationSoftCap = 0;\n BitNodeMultipliers.GangUniqueAugs = 0;\n break;\n case 9: // Hacktocracy\n BitNodeMultipliers.HackingLevelMultiplier = 0.5;\n BitNodeMultipliers.StrengthLevelMultiplier = 0.45;\n BitNodeMultipliers.DefenseLevelMultiplier = 0.45;\n BitNodeMultipliers.DexterityLevelMultiplier = 0.45;\n BitNodeMultipliers.AgilityLevelMultiplier = 0.45;\n BitNodeMultipliers.CharismaLevelMultiplier = 0.45;\n BitNodeMultipliers.PurchasedServerLimit = 0;\n BitNodeMultipliers.HomeComputerRamCost = 5;\n BitNodeMultipliers.CrimeMoney = 0.5;\n BitNodeMultipliers.ScriptHackMoney = 0.1;\n BitNodeMultipliers.HackExpGain = 0.05;\n BitNodeMultipliers.ServerStartingMoney = 0.1;\n BitNodeMultipliers.ServerMaxMoney = 0.1;\n BitNodeMultipliers.ServerStartingSecurity = 2.5;\n BitNodeMultipliers.CorporationValuation = 0.5;\n BitNodeMultipliers.FourSigmaMarketDataCost = 5;\n BitNodeMultipliers.FourSigmaMarketDataApiCost = 4;\n BitNodeMultipliers.BladeburnerRank = 0.9;\n BitNodeMultipliers.BladeburnerSkillCost = 1.2;\n BitNodeMultipliers.StaneksGiftPowerMultiplier = 0.5;\n BitNodeMultipliers.StaneksGiftExtraSize = 2;\n BitNodeMultipliers.GangSoftcap = 0.8;\n BitNodeMultipliers.CorporationSoftCap = 0.7;\n BitNodeMultipliers.WorldDaemonDifficulty = 2;\n BitNodeMultipliers.GangUniqueAugs = 0.25;\n break;\n case 10: // Digital Carbon\n BitNodeMultipliers.HackingLevelMultiplier = 0.35;\n BitNodeMultipliers.StrengthLevelMultiplier = 0.4;\n BitNodeMultipliers.DefenseLevelMultiplier = 0.4;\n BitNodeMultipliers.DexterityLevelMultiplier = 0.4;\n BitNodeMultipliers.AgilityLevelMultiplier = 0.4;\n BitNodeMultipliers.CharismaLevelMultiplier = 0.4;\n BitNodeMultipliers.CompanyWorkMoney = 0.5;\n BitNodeMultipliers.CrimeMoney = 0.5;\n BitNodeMultipliers.HacknetNodeMoney = 0.5;\n BitNodeMultipliers.ManualHackMoney = 0.5;\n BitNodeMultipliers.ScriptHackMoney = 0.5;\n BitNodeMultipliers.CodingContractMoney = 0.5;\n BitNodeMultipliers.InfiltrationMoney = 0.5;\n BitNodeMultipliers.CorporationValuation = 0.5;\n BitNodeMultipliers.AugmentationMoneyCost = 5;\n BitNodeMultipliers.AugmentationRepCost = 2;\n BitNodeMultipliers.HomeComputerRamCost = 1.5;\n BitNodeMultipliers.PurchasedServerCost = 5;\n BitNodeMultipliers.PurchasedServerLimit = 0.6;\n BitNodeMultipliers.PurchasedServerMaxRam = 0.5;\n BitNodeMultipliers.BladeburnerRank = 0.8;\n BitNodeMultipliers.StaneksGiftPowerMultiplier = 0.75;\n BitNodeMultipliers.StaneksGiftExtraSize = -3;\n BitNodeMultipliers.PurchasedServerSoftcap = 1.1;\n BitNodeMultipliers.GangSoftcap = 0.9;\n BitNodeMultipliers.CorporationSoftCap = 0.9;\n BitNodeMultipliers.WorldDaemonDifficulty = 2;\n BitNodeMultipliers.GangUniqueAugs = 0.25;\n break;\n case 11: //The Big Crash\n BitNodeMultipliers.HackingLevelMultiplier = 0.6;\n BitNodeMultipliers.HackExpGain = 0.5;\n BitNodeMultipliers.ServerMaxMoney = 0.1;\n BitNodeMultipliers.ServerStartingMoney = 0.1;\n BitNodeMultipliers.ServerGrowthRate = 0.2;\n BitNodeMultipliers.ServerWeakenRate = 2;\n BitNodeMultipliers.CrimeMoney = 3;\n BitNodeMultipliers.CompanyWorkMoney = 0.5;\n BitNodeMultipliers.HacknetNodeMoney = 0.1;\n BitNodeMultipliers.AugmentationMoneyCost = 2;\n BitNodeMultipliers.InfiltrationMoney = 2.5;\n BitNodeMultipliers.InfiltrationRep = 2.5;\n BitNodeMultipliers.CorporationValuation = 0.1;\n BitNodeMultipliers.CodingContractMoney = 0.25;\n BitNodeMultipliers.FourSigmaMarketDataCost = 4;\n BitNodeMultipliers.FourSigmaMarketDataApiCost = 4;\n BitNodeMultipliers.PurchasedServerSoftcap = 2;\n BitNodeMultipliers.CorporationSoftCap = 0.9;\n BitNodeMultipliers.WorldDaemonDifficulty = 1.5;\n BitNodeMultipliers.GangUniqueAugs = 0.75;\n break;\n case 12: {\n //The Recursion\n let sf12Lvl = 0;\n for (let i = 0; i < p.sourceFiles.length; i++) {\n if (p.sourceFiles[i].n === 12) {\n sf12Lvl = p.sourceFiles[i].lvl;\n }\n }\n const inc = Math.pow(1.02, sf12Lvl);\n const dec = 1 / inc;\n\n // Multiplier for number of augs needed for Daedalus increases\n // up to a maximum of 1.34, which results in 40 Augs required\n BitNodeMultipliers.DaedalusAugsRequirement = Math.min(inc, 1.34);\n\n BitNodeMultipliers.HackingLevelMultiplier = dec;\n BitNodeMultipliers.StrengthLevelMultiplier = dec;\n BitNodeMultipliers.DefenseLevelMultiplier = dec;\n BitNodeMultipliers.DexterityLevelMultiplier = dec;\n BitNodeMultipliers.AgilityLevelMultiplier = dec;\n BitNodeMultipliers.CharismaLevelMultiplier = dec;\n\n BitNodeMultipliers.ServerMaxMoney = dec;\n BitNodeMultipliers.ServerStartingMoney = dec;\n BitNodeMultipliers.ServerGrowthRate = dec;\n BitNodeMultipliers.ServerWeakenRate = dec;\n\n //Does not scale, otherwise security might start at 300+\n BitNodeMultipliers.ServerStartingSecurity = 1.5;\n\n BitNodeMultipliers.HomeComputerRamCost = inc;\n\n BitNodeMultipliers.PurchasedServerCost = inc;\n BitNodeMultipliers.PurchasedServerLimit = dec;\n BitNodeMultipliers.PurchasedServerMaxRam = dec;\n BitNodeMultipliers.PurchasedServerSoftcap = inc;\n\n BitNodeMultipliers.ManualHackMoney = dec;\n BitNodeMultipliers.ScriptHackMoney = dec;\n BitNodeMultipliers.CompanyWorkMoney = dec;\n BitNodeMultipliers.CrimeMoney = dec;\n BitNodeMultipliers.HacknetNodeMoney = dec;\n BitNodeMultipliers.CodingContractMoney = dec;\n\n BitNodeMultipliers.CompanyWorkExpGain = dec;\n BitNodeMultipliers.ClassGymExpGain = dec;\n BitNodeMultipliers.FactionWorkExpGain = dec;\n BitNodeMultipliers.HackExpGain = dec;\n BitNodeMultipliers.CrimeExpGain = dec;\n\n BitNodeMultipliers.FactionWorkRepGain = dec;\n BitNodeMultipliers.FactionPassiveRepGain = dec;\n BitNodeMultipliers.RepToDonateToFaction = inc;\n\n BitNodeMultipliers.AugmentationRepCost = inc;\n BitNodeMultipliers.AugmentationMoneyCost = inc;\n\n BitNodeMultipliers.InfiltrationMoney = dec;\n BitNodeMultipliers.InfiltrationRep = dec;\n\n BitNodeMultipliers.FourSigmaMarketDataCost = inc;\n BitNodeMultipliers.FourSigmaMarketDataApiCost = inc;\n\n BitNodeMultipliers.CorporationValuation = dec;\n\n BitNodeMultipliers.BladeburnerRank = dec;\n BitNodeMultipliers.BladeburnerSkillCost = inc;\n\n BitNodeMultipliers.StaneksGiftPowerMultiplier = inc;\n BitNodeMultipliers.StaneksGiftExtraSize = inc;\n BitNodeMultipliers.GangSoftcap = 0.8;\n BitNodeMultipliers.CorporationSoftCap = 0.8;\n BitNodeMultipliers.WorldDaemonDifficulty = inc;\n\n BitNodeMultipliers.GangUniqueAugs = dec;\n break;\n }\n case 13: {\n BitNodeMultipliers.PurchasedServerSoftcap = 1.6;\n\n BitNodeMultipliers.HackingLevelMultiplier = 0.25;\n BitNodeMultipliers.StrengthLevelMultiplier = 0.7;\n BitNodeMultipliers.DefenseLevelMultiplier = 0.7;\n BitNodeMultipliers.DexterityLevelMultiplier = 0.7;\n BitNodeMultipliers.AgilityLevelMultiplier = 0.7;\n\n BitNodeMultipliers.ServerMaxMoney = 0.45;\n BitNodeMultipliers.ServerStartingMoney = 0.75;\n\n BitNodeMultipliers.ServerStartingSecurity = 3;\n\n BitNodeMultipliers.ScriptHackMoney = 0.2;\n BitNodeMultipliers.CompanyWorkMoney = 0.4;\n BitNodeMultipliers.CrimeMoney = 0.4;\n BitNodeMultipliers.HacknetNodeMoney = 0.4;\n BitNodeMultipliers.CodingContractMoney = 0.4;\n\n BitNodeMultipliers.CompanyWorkExpGain = 0.5;\n BitNodeMultipliers.ClassGymExpGain = 0.5;\n BitNodeMultipliers.FactionWorkExpGain = 0.5;\n BitNodeMultipliers.HackExpGain = 0.1;\n BitNodeMultipliers.CrimeExpGain = 0.5;\n\n BitNodeMultipliers.FactionWorkRepGain = 0.6;\n\n BitNodeMultipliers.FourSigmaMarketDataCost = 10;\n BitNodeMultipliers.FourSigmaMarketDataApiCost = 10;\n\n BitNodeMultipliers.CorporationValuation = 0.001;\n\n BitNodeMultipliers.BladeburnerRank = 0.45;\n BitNodeMultipliers.BladeburnerSkillCost = 2;\n BitNodeMultipliers.StaneksGiftPowerMultiplier = 2;\n BitNodeMultipliers.StaneksGiftExtraSize = 1;\n BitNodeMultipliers.GangSoftcap = 0.3;\n BitNodeMultipliers.CorporationSoftCap = 0.3;\n BitNodeMultipliers.WorldDaemonDifficulty = 3;\n BitNodeMultipliers.GangUniqueAugs = 0.1;\n break;\n }\n default:\n console.warn(\"Player.bitNodeN invalid\");\n break;\n }\n}\n","/**\n * Hacknet Node Class\n *\n * Hacknet Nodes are specialized machines that passively earn the player money over time.\n * They can be upgraded to increase their production\n */\nimport { IHacknetNode } from \"./IHacknetNode\";\n\nimport { CONSTANTS } from \"../Constants\";\n\nimport {\n calculateMoneyGainRate,\n calculateLevelUpgradeCost,\n calculateCoreUpgradeCost,\n calculateRamUpgradeCost,\n} from \"./formulas/HacknetNodes\";\nimport { HacknetNodeConstants } from \"./data/Constants\";\n\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\nimport { ObjectValidator, minMax } from \"../utils/Validator\";\n\nexport class HacknetNode implements IHacknetNode {\n static validationData: ObjectValidator = {\n cores: minMax(1, 1, HacknetNodeConstants.MaxCores),\n level: minMax(1, 1, HacknetNodeConstants.MaxLevel),\n ram: minMax(1, 1, HacknetNodeConstants.MaxRam),\n onlineTimeSeconds: minMax(0, 0, Infinity),\n totalMoneyGenerated: minMax(0, 0, Infinity),\n };\n\n // Node's number of cores\n cores = 1;\n\n // Node's Level\n level = 1;\n\n // Node's production per second\n moneyGainRatePerSecond = 0;\n\n // Identifier for Node. Includes the full \"name\" (hacknet-node-N)\n name: string;\n\n // How long this Node has existed, in seconds\n onlineTimeSeconds = 0;\n\n // Node's RAM (GB)\n ram = 1;\n\n // Total money earned by this Node\n totalMoneyGenerated = 0;\n\n constructor(name = \"\", prodMult = 1) {\n this.name = name;\n\n this.updateMoneyGainRate(prodMult);\n }\n\n // Get the cost to upgrade this Node's number of cores\n calculateCoreUpgradeCost(levels = 1, costMult: number): number {\n return calculateCoreUpgradeCost(this.cores, levels, costMult);\n }\n\n // Get the cost to upgrade this Node's level\n calculateLevelUpgradeCost(levels = 1, costMult: number): number {\n return calculateLevelUpgradeCost(this.level, levels, costMult);\n }\n\n // Get the cost to upgrade this Node's RAM\n calculateRamUpgradeCost(levels = 1, costMult: number): number {\n return calculateRamUpgradeCost(this.ram, levels, costMult);\n }\n\n // Process this Hacknet Node in the game loop.\n // Returns the amount of money generated\n process(numCycles = 1): number {\n const seconds = (numCycles * CONSTANTS.MilliPerCycle) / 1000;\n let gain = this.moneyGainRatePerSecond * seconds;\n if (isNaN(gain)) {\n console.error(`Hacknet Node ${this.name} calculated earnings of NaN`);\n gain = 0;\n }\n\n this.totalMoneyGenerated += gain;\n this.onlineTimeSeconds += seconds;\n\n return gain;\n }\n\n // Upgrade this Node's number of cores, if possible\n // Returns a boolean indicating whether new cores were successfully bought\n upgradeCore(levels = 1, prodMult: number): void {\n this.cores = Math.min(HacknetNodeConstants.MaxCores, Math.round(this.cores + levels));\n this.updateMoneyGainRate(prodMult);\n }\n\n // Upgrade this Node's level, if possible\n // Returns a boolean indicating whether the level was successfully updated\n upgradeLevel(levels = 1, prodMult: number): void {\n this.level = Math.min(HacknetNodeConstants.MaxLevel, Math.round(this.level + levels));\n this.updateMoneyGainRate(prodMult);\n }\n\n // Upgrade this Node's RAM, if possible\n // Returns a boolean indicating whether the RAM was successfully upgraded\n upgradeRam(levels = 1, prodMult: number): void {\n for (let i = 0; i < levels; ++i) {\n this.ram *= 2; // Ram is always doubled\n }\n this.ram = Math.round(this.ram); // Handle any floating point precision issues\n this.updateMoneyGainRate(prodMult);\n }\n\n // Re-calculate this Node's production and update the moneyGainRatePerSecond prop\n updateMoneyGainRate(prodMult: number): void {\n this.moneyGainRatePerSecond = calculateMoneyGainRate(this.level, this.ram, this.cores, prodMult);\n if (isNaN(this.moneyGainRatePerSecond)) {\n this.moneyGainRatePerSecond = 0;\n dialogBoxCreate(\"Error in calculating Hacknet Node production. Please report to game developer\");\n }\n }\n\n /**\n * Serialize the current object to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"HacknetNode\", this);\n }\n\n /**\n * Initiatizes a HacknetNode object from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): HacknetNode {\n return Generic_fromJSON(HacknetNode, value.data);\n }\n}\n\nReviver.constructors.HacknetNode = HacknetNode;\n","/**\n * Implements functions for purchasing servers or purchasing more RAM for\n * the home computer\n */\nimport { AddToAllServers, createUniqueRandomIp } from \"./AllServers\";\nimport { safetlyCreateUniqueServer } from \"./ServerHelpers\";\n\nimport { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\nimport { CONSTANTS } from \"../Constants\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\n\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { isPowerOfTwo } from \"../utils/helpers/isPowerOfTwo\";\n\n// Returns the cost of purchasing a server with the given RAM\n// Returns Infinity for invalid 'ram' arguments\n/**\n * @param ram Amount of RAM on purchased server (GB)\n * @returns Cost of purchasing the given server. Returns infinity for invalid arguments\n */\nexport function getPurchaseServerCost(ram: number): number {\n const sanitizedRam = Math.round(ram);\n if (isNaN(sanitizedRam) || !isPowerOfTwo(sanitizedRam) || !(Math.sign(sanitizedRam) === 1)) {\n return Infinity;\n }\n\n if (sanitizedRam > getPurchaseServerMaxRam()) {\n return Infinity;\n }\n\n const upg = Math.max(0, Math.log(sanitizedRam) / Math.log(2) - 6);\n\n return (\n sanitizedRam *\n CONSTANTS.BaseCostFor1GBOfRamServer *\n BitNodeMultipliers.PurchasedServerCost *\n Math.pow(BitNodeMultipliers.PurchasedServerSoftcap, upg)\n );\n}\n\nexport function getPurchaseServerLimit(): number {\n return Math.round(CONSTANTS.PurchasedServerLimit * BitNodeMultipliers.PurchasedServerLimit);\n}\n\nexport function getPurchaseServerMaxRam(): number {\n const ram = Math.round(CONSTANTS.PurchasedServerMaxRam * BitNodeMultipliers.PurchasedServerMaxRam);\n\n // Round this to the nearest power of 2\n return 1 << (31 - Math.clz32(ram));\n}\n\n// Manually purchase a server (NOT through Netscript)\nexport function purchaseServer(hostname: string, ram: number, cost: number, p: IPlayer): void {\n //Check if player has enough money\n if (!p.canAfford(cost)) {\n dialogBoxCreate(\"You don't have enough money to purchase this server!\");\n return;\n }\n\n //Maximum server limit\n if (p.purchasedServers.length >= getPurchaseServerLimit()) {\n dialogBoxCreate(\n \"You have reached the maximum limit of \" +\n getPurchaseServerLimit() +\n \" servers. \" +\n \"You cannot purchase any more. You can \" +\n \"delete some of your purchased servers using the deleteServer() Netscript function in a script\",\n );\n return;\n }\n\n if (hostname == \"\") {\n dialogBoxCreate(\"You must enter a hostname for your new server!\");\n return;\n }\n\n // Create server\n const newServ = safetlyCreateUniqueServer({\n adminRights: true,\n hostname: hostname,\n ip: createUniqueRandomIp(),\n isConnectedTo: false,\n maxRam: ram,\n organizationName: \"\",\n purchasedByPlayer: true,\n });\n AddToAllServers(newServ);\n\n // Add to Player's purchasedServers array\n p.purchasedServers.push(newServ.hostname);\n\n // Connect new server to home computer\n const homeComputer = p.getHomeComputer();\n homeComputer.serversOnNetwork.push(newServ.hostname);\n newServ.serversOnNetwork.push(homeComputer.hostname);\n\n p.loseMoney(cost, \"servers\");\n\n dialogBoxCreate(\"Server successfully purchased with hostname \" + newServ.hostname);\n}\n\n// Manually upgrade RAM on home computer (NOT through Netscript)\nexport function purchaseRamForHomeComputer(p: IPlayer): void {\n const cost = p.getUpgradeHomeRamCost();\n if (!p.canAfford(cost)) {\n dialogBoxCreate(\"You do not have enough money to purchase additional RAM for your home computer\");\n return;\n }\n\n const homeComputer = p.getHomeComputer();\n if (homeComputer.maxRam >= CONSTANTS.HomeComputerMaxRam) {\n dialogBoxCreate(`You cannot upgrade your home computer RAM because it is at its maximum possible value`);\n return;\n }\n\n homeComputer.maxRam *= 2;\n p.loseMoney(cost, \"servers\");\n}\n","import { dialogBoxCreate } from \"./ui/React/DialogBox\";\nimport { BaseServer } from \"./Server/BaseServer\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"./utils/JSONReviver\";\nimport { removeLeadingSlash, isInRootDirectory } from \"./Terminal/DirectoryHelpers\";\n\n/**\n * Represents a plain text file that is typically stored on a server.\n */\nexport class TextFile {\n /**\n * The full file name.\n */\n fn: string;\n\n /**\n * The content of the file.\n */\n text: string;\n\n /**\n * The full file name.\n */\n get filename(): string {\n return this.fn;\n }\n\n /**\n * The full file name.\n */\n set filename(value: string) {\n this.fn = value;\n }\n\n constructor(fn = \"\", txt = \"\") {\n this.fn = (fn.endsWith(\".txt\") ? fn : `${fn}.txt`).replace(/\\s+/g, \"\");\n this.text = txt;\n }\n\n /**\n * Concatenates the raw values to the end of current content.\n */\n append(txt: string): void {\n this.text += txt;\n }\n\n /**\n * Serves the file to the user as a downloadable resource through the browser.\n */\n download(): void {\n const filename: string = this.fn;\n const file: Blob = new Blob([this.text], { type: \"text/plain\" });\n /* tslint:disable-next-line:strict-boolean-expressions */\n const navigator = window.navigator as any;\n if (navigator.msSaveOrOpenBlob) {\n // IE10+\n navigator.msSaveOrOpenBlob(file, filename);\n } else {\n // Others\n const a: HTMLAnchorElement = document.createElement(\"a\");\n const url: string = URL.createObjectURL(file);\n a.href = url;\n a.download = this.fn;\n document.body.appendChild(a);\n a.click();\n setTimeout(() => {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n }\n\n /**\n * Retrieve the content of the file.\n */\n read(): string {\n return this.text;\n }\n\n /**\n * Shows the content to the user via the game's dialog box.\n */\n show(): void {\n dialogBoxCreate(`${this.fn}
${this.text}`);\n }\n\n /**\n * Serialize the current file to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"TextFile\", this);\n }\n\n /**\n * Replaces the current content with the text provided.\n */\n write(txt: string): void {\n this.text = txt;\n }\n\n /**\n * Initiatizes a TextFile from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): TextFile {\n return Generic_fromJSON(TextFile, value.data);\n }\n}\n\nReviver.constructors.TextFile = TextFile;\n\n/**\n * Retrieve the file object for the filename on the specified server.\n * @param fn The file name to look for\n * @param server The server object to look in\n * @returns The file object, or null if it couldn't find it.\n */\nexport function getTextFile(fn: string, server: BaseServer): TextFile | null {\n let filename: string = !fn.endsWith(\".txt\") ? `${fn}.txt` : fn;\n\n if (isInRootDirectory(filename)) {\n filename = removeLeadingSlash(filename);\n }\n\n for (const file of server.textFiles as TextFile[]) {\n if (file.fn === filename) {\n return file;\n }\n }\n\n return null;\n}\n\n/**\n * Creates a TextFile on the target server.\n * @param fn The file name to create.\n * @param txt The contents of the file.\n * @param server The server that the file should be created on.\n * @returns The instance of the file.\n */\nexport function createTextFile(fn: string, txt: string, server: BaseServer): TextFile | undefined {\n if (getTextFile(fn, server) !== null) {\n // This should probably be a `throw`...\n /* tslint:disable-next-line:no-console */\n console.error(`A file named \"${fn}\" already exists on server ${server.hostname}.`);\n\n return undefined;\n }\n const file: TextFile = new TextFile(fn, txt);\n server.textFiles.push(file);\n\n return file;\n}\n","import { Skill } from \"./Skill\";\nimport { SkillNames } from \"./data/SkillNames\";\nimport { IMap } from \"../types\";\n\nexport const Skills: IMap = {};\n\n(function () {\n Skills[SkillNames.BladesIntuition] = new Skill({\n name: SkillNames.BladesIntuition,\n desc: \"Each level of this skill increases your success chance for all Contracts, Operations, and BlackOps by 3%\",\n baseCost: 3,\n costInc: 2.1,\n successChanceAll: 3,\n });\n Skills[SkillNames.Cloak] = new Skill({\n name: SkillNames.Cloak,\n desc:\n \"Each level of this skill increases your \" +\n \"success chance in stealth-related Contracts, Operations, and BlackOps by 5.5%\",\n baseCost: 2,\n costInc: 1.1,\n successChanceStealth: 5.5,\n });\n Skills[SkillNames.ShortCircuit] = new Skill({\n name: SkillNames.ShortCircuit,\n desc:\n \"Each level of this skill increases your success chance \" +\n \"in Contracts, Operations, and BlackOps that involve retirement by 5.5%\",\n baseCost: 2,\n costInc: 2.1,\n successChanceKill: 5.5,\n });\n Skills[SkillNames.DigitalObserver] = new Skill({\n name: SkillNames.DigitalObserver,\n desc: \"Each level of this skill increases your success chance in all Operations and BlackOps by 4%\",\n baseCost: 2,\n costInc: 2.1,\n successChanceOperation: 4,\n });\n Skills[SkillNames.Tracer] = new Skill({\n name: SkillNames.Tracer,\n desc: \"Each level of this skill increases your success chance in all Contracts by 4%\",\n baseCost: 2,\n costInc: 2.1,\n successChanceContract: 4,\n });\n Skills[SkillNames.Overclock] = new Skill({\n name: SkillNames.Overclock,\n desc:\n \"Each level of this skill decreases the time it takes \" +\n \"to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 90)\",\n baseCost: 3,\n costInc: 1.4,\n maxLvl: 90,\n actionTime: 1,\n });\n Skills[SkillNames.Reaper] = new Skill({\n name: SkillNames.Reaper,\n desc: \"Each level of this skill increases your effective combat stats for Bladeburner actions by 2%\",\n baseCost: 2,\n costInc: 2.1,\n effStr: 2,\n effDef: 2,\n effDex: 2,\n effAgi: 2,\n });\n Skills[SkillNames.EvasiveSystem] = new Skill({\n name: SkillNames.EvasiveSystem,\n desc: \"Each level of this skill increases your effective dexterity and agility for Bladeburner actions by 4%\",\n baseCost: 2,\n costInc: 2.1,\n effDex: 4,\n effAgi: 4,\n });\n Skills[SkillNames.Datamancer] = new Skill({\n name: SkillNames.Datamancer,\n desc:\n \"Each level of this skill increases your effectiveness in \" +\n \"synthoid population analysis and investigation by 5%. \" +\n \"This affects all actions that can potentially increase \" +\n \"the accuracy of your synthoid population/community estimates.\",\n baseCost: 3,\n costInc: 1,\n successChanceEstimate: 5,\n });\n Skills[SkillNames.CybersEdge] = new Skill({\n name: SkillNames.CybersEdge,\n desc: \"Each level of this skill increases your max stamina by 2%\",\n baseCost: 1,\n costInc: 3,\n stamina: 2,\n });\n Skills[SkillNames.HandsOfMidas] = new Skill({\n name: SkillNames.HandsOfMidas,\n desc: \"Each level of this skill increases the amount of money you receive from Contracts by 10%\",\n baseCost: 2,\n costInc: 2.5,\n money: 10,\n });\n Skills[SkillNames.Hyperdrive] = new Skill({\n name: SkillNames.Hyperdrive,\n desc: \"Each level of this skill increases the experience earned from Contracts, Operations, and BlackOps by 10%\",\n baseCost: 1,\n costInc: 2.5,\n expGain: 10,\n });\n})();\n","import { gangMemberUpgradesMetadata } from \"./data/upgrades\";\nimport { GangMemberUpgrade } from \"./GangMemberUpgrade\";\n\nexport const GangMemberUpgrades: {\n [key: string]: GangMemberUpgrade;\n} = {};\n\n(function () {\n gangMemberUpgradesMetadata.forEach((e) => {\n GangMemberUpgrades[e.name] = new GangMemberUpgrade(e.name, e.cost, e.upgType, e.mults);\n });\n})();\n","/**\n * Stock Market Helper Functions\n */\nimport { Stock } from \"./Stock\";\nimport { PositionTypes } from \"./data/PositionTypes\";\nimport { CONSTANTS } from \"../Constants\";\n\n// Amount by which a stock's forecast changes during each price movement\nexport const forecastChangePerPriceMovement = 0.006;\n\n/**\n * Calculate the total cost of a \"buy\" transaction. This accounts for spread and commission.\n * @param {Stock} stock - Stock being purchased\n * @param {number} shares - Number of shares being transacted\n * @param {PositionTypes} posType - Long or short position\n * @returns {number | null} Total transaction cost. Returns null for an invalid transaction\n */\nexport function getBuyTransactionCost(stock: Stock, shares: number, posType: PositionTypes): number | null {\n if (isNaN(shares) || shares <= 0 || !(stock instanceof Stock)) {\n return null;\n }\n\n // Cap the 'shares' arg at the stock's maximum shares. This'll prevent\n // hanging in the case when a really big number is passed in\n shares = Math.min(shares, stock.maxShares);\n\n const isLong = posType === PositionTypes.Long;\n\n // If the number of shares doesn't trigger a price movement, its a simple calculation\n if (isLong) {\n return shares * stock.getAskPrice() + CONSTANTS.StockMarketCommission;\n } else {\n return shares * stock.getBidPrice() + CONSTANTS.StockMarketCommission;\n }\n}\n\n/**\n * Calculate the TOTAL amount of money gained from a sale (NOT net profit). This accounts\n * for spread and commission.\n * @param {Stock} stock - Stock being sold\n * @param {number} shares - Number of sharse being transacted\n * @param {PositionTypes} posType - Long or short position\n * @returns {number | null} Amount of money gained from transaction. Returns null for an invalid transaction\n */\nexport function getSellTransactionGain(stock: Stock, shares: number, posType: PositionTypes): number | null {\n if (isNaN(shares) || shares <= 0 || !(stock instanceof Stock)) {\n return null;\n }\n\n // Cap the 'shares' arg at the stock's maximum shares. This'll prevent\n // hanging in the case when a really big number is passed in\n shares = Math.min(shares, stock.maxShares);\n\n const isLong = posType === PositionTypes.Long;\n if (isLong) {\n return shares * stock.getBidPrice() - CONSTANTS.StockMarketCommission;\n } else {\n // Calculating gains for a short position requires calculating the profit made\n const origCost = shares * stock.playerAvgShortPx;\n const profit = (stock.playerAvgShortPx - stock.getAskPrice()) * shares - CONSTANTS.StockMarketCommission;\n\n return origCost + profit;\n }\n}\n\n/**\n * Processes a stock's change in forecast & second-order forecast\n * whenever it is transacted\n * @param {Stock} stock - Stock being sold\n * @param {number} shares - Number of sharse being transacted\n * @param {PositionTypes} posType - Long or short position\n */\nexport function processTransactionForecastMovement(stock: Stock, shares: number): void {\n if (isNaN(shares) || shares <= 0 || !(stock instanceof Stock)) {\n return;\n }\n\n // Cap the 'shares' arg at the stock's maximum shares. This'll prevent\n // hanging in the case when a really big number is passed in\n shares = Math.min(shares, stock.maxShares);\n\n // If there's only going to be one iteration at most\n const firstShares = stock.shareTxUntilMovement;\n if (shares <= firstShares) {\n stock.shareTxUntilMovement -= shares;\n if (stock.shareTxUntilMovement <= 0) {\n stock.shareTxUntilMovement = stock.shareTxForMovement;\n stock.influenceForecast(forecastChangePerPriceMovement);\n stock.influenceForecastForecast(forecastChangePerPriceMovement * (stock.mv / 100));\n }\n\n return;\n }\n\n // Calculate how many iterations of price changes we need to account for\n const remainingShares = shares - firstShares;\n let numIterations = 1 + Math.ceil(remainingShares / stock.shareTxForMovement);\n\n // If on the offchance we end up perfectly at the next price movement\n stock.shareTxUntilMovement =\n stock.shareTxForMovement - ((shares - stock.shareTxUntilMovement) % stock.shareTxForMovement);\n if (stock.shareTxUntilMovement === stock.shareTxForMovement || stock.shareTxUntilMovement <= 0) {\n ++numIterations;\n stock.shareTxUntilMovement = stock.shareTxForMovement;\n }\n\n // Forecast always decreases in magnitude\n const forecastChange = forecastChangePerPriceMovement * (numIterations - 1);\n const forecastForecastChange = forecastChange * (stock.mv / 100);\n stock.influenceForecast(forecastChange);\n stock.influenceForecastForecast(forecastForecastChange);\n}\n\n/**\n * Calculate the maximum number of shares of a stock that can be purchased.\n * Handles mid-transaction price movements, both L and S positions, etc.\n * Used for the \"Buy Max\" button in the UI\n * @param {Stock} stock - Stock being purchased\n * @param {PositionTypes} posType - Long or short position\n * @param {number} money - Amount of money player has\n * @returns maximum number of shares that the player can purchase\n */\nexport function calculateBuyMaxAmount(stock: Stock, posType: PositionTypes, money: number): number {\n if (!(stock instanceof Stock)) {\n return 0;\n }\n\n const isLong = posType === PositionTypes.Long;\n\n const remainingMoney = money - CONSTANTS.StockMarketCommission;\n const currPrice = isLong ? stock.getAskPrice() : stock.getBidPrice();\n\n return Math.floor(remainingMoney / currPrice);\n}\n","import { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\nimport { CONSTANTS } from \"../Constants\";\n\nexport function getStockMarket4SDataCost(): number {\n return CONSTANTS.MarketData4SCost * BitNodeMultipliers.FourSigmaMarketDataCost;\n}\n\nexport function getStockMarket4STixApiCost(): number {\n return CONSTANTS.MarketDataTixApi4SCost * BitNodeMultipliers.FourSigmaMarketDataApiCost;\n}\n\nexport function getStockMarketWseCost(): number {\n return CONSTANTS.WSEAccountCost;\n}\n\nexport function getStockMarketTixApiCost(): number {\n return CONSTANTS.TIXAPICost;\n}\n","import { CONSTANTS } from \"../Constants\";\nimport { Player } from \"../Player\";\nimport { BaseServer } from \"../Server/BaseServer\";\nimport { Server } from \"../Server/Server\";\nimport { RunningScript } from \"./RunningScript\";\nimport { processSingleServerGrowth } from \"../Server/ServerHelpers\";\nimport { GetServer } from \"../Server/AllServers\";\n\nimport { numeralWrapper } from \"../ui/numeralFormat\";\n\nimport { compareArrays } from \"../utils/helpers/compareArrays\";\n\nexport function scriptCalculateOfflineProduction(runningScript: RunningScript): void {\n //The Player object stores the last update time from when we were online\n const thisUpdate = new Date().getTime();\n const lastUpdate = Player.lastUpdate;\n const timePassed = (thisUpdate - lastUpdate) / 1000; //Seconds\n\n //Calculate the \"confidence\" rating of the script's true production. This is based\n //entirely off of time. We will arbitrarily say that if a script has been running for\n //4 hours (14400 sec) then we are completely confident in its ability\n let confidence = runningScript.onlineRunningTime / 14400;\n if (confidence >= 1) {\n confidence = 1;\n }\n\n //Data map: [MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]\n\n // Grow\n for (const hostname of Object.keys(runningScript.dataMap)) {\n if (runningScript.dataMap.hasOwnProperty(hostname)) {\n if (runningScript.dataMap[hostname][2] == 0 || runningScript.dataMap[hostname][2] == null) {\n continue;\n }\n const serv = GetServer(hostname);\n if (serv == null) {\n continue;\n }\n const timesGrown = Math.round(\n ((0.5 * runningScript.dataMap[hostname][2]) / runningScript.onlineRunningTime) * timePassed,\n );\n runningScript.log(`Called on ${serv.hostname} ${timesGrown} times while offline`);\n const host = GetServer(runningScript.server);\n if (host === null) throw new Error(\"getServer of null key?\");\n if (!(serv instanceof Server)) throw new Error(\"trying to grow a non-normal server\");\n const growth = processSingleServerGrowth(serv, timesGrown, Player, host.cpuCores);\n runningScript.log(\n `'${serv.hostname}' grown by ${numeralWrapper.format(growth * 100 - 100, \"0.000000%\")} while offline`,\n );\n }\n }\n\n // Offline EXP gain\n // A script's offline production will always be at most half of its online production.\n const expGain = confidence * (runningScript.onlineExpGained / runningScript.onlineRunningTime) * timePassed;\n Player.gainHackingExp(expGain);\n\n // Update script stats\n runningScript.offlineRunningTime += timePassed;\n runningScript.offlineExpGained += expGain;\n\n // Weaken\n for (const hostname of Object.keys(runningScript.dataMap)) {\n if (runningScript.dataMap.hasOwnProperty(hostname)) {\n if (runningScript.dataMap[hostname][3] == 0 || runningScript.dataMap[hostname][3] == null) {\n continue;\n }\n const serv = GetServer(hostname);\n if (serv == null) {\n continue;\n }\n\n if (!(serv instanceof Server)) throw new Error(\"trying to weaken a non-normal server\");\n const host = GetServer(runningScript.server);\n if (host === null) throw new Error(\"getServer of null key?\");\n const timesWeakened = Math.round(\n ((0.5 * runningScript.dataMap[hostname][3]) / runningScript.onlineRunningTime) * timePassed,\n );\n runningScript.log(`Called weaken() on ${serv.hostname} ${timesWeakened} times while offline`);\n const coreBonus = 1 + (host.cpuCores - 1) / 16;\n serv.weaken(CONSTANTS.ServerWeakenAmount * timesWeakened * coreBonus);\n }\n }\n}\n\n//Returns a RunningScript object matching the filename and arguments on the\n//designated server, and false otherwise\nexport function findRunningScript(\n filename: string,\n args: (string | number | boolean)[],\n server: BaseServer,\n): RunningScript | null {\n for (let i = 0; i < server.runningScripts.length; ++i) {\n if (server.runningScripts[i].filename === filename && compareArrays(server.runningScripts[i].args, args)) {\n return server.runningScripts[i];\n }\n }\n return null;\n}\n\n//Returns a RunningScript object matching the pid on the\n//designated server, and false otherwise\nexport function findRunningScriptByPid(pid: number, server: BaseServer): RunningScript | null {\n for (let i = 0; i < server.runningScripts.length; ++i) {\n if (server.runningScripts[i].pid === pid) {\n return server.runningScripts[i];\n }\n }\n return null;\n}\n","import * as React from \"react\";\nimport { numeralWrapper } from \"../numeralFormat\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n money: {\n color: theme.colors.money,\n },\n }),\n);\n\nexport function Hashes({ hashes }: { hashes: number | string }): React.ReactElement {\n const classes = useStyles();\n return (\n {typeof hashes === \"number\" ? numeralWrapper.formatHashes(hashes) : hashes}\n );\n}\n","import { Reviver, Generic_toJSON, Generic_fromJSON } from \"../utils/JSONReviver\";\nimport { IBladeburner } from \"./IBladeburner\";\nimport { IActionIdentifier } from \"./IActionIdentifier\";\nimport { ActionIdentifier } from \"./ActionIdentifier\";\nimport { ActionTypes } from \"./data/ActionTypes\";\nimport { Growths } from \"./data/Growths\";\nimport { BlackOperations } from \"./BlackOperations\";\nimport { BlackOperation } from \"./BlackOperation\";\nimport { Operation } from \"./Operation\";\nimport { Contract } from \"./Contract\";\nimport { GeneralActions } from \"./GeneralActions\";\nimport { formatNumber } from \"../utils/StringHelperFunctions\";\nimport { Skills } from \"./Skills\";\nimport { Skill } from \"./Skill\";\nimport { City } from \"./City\";\nimport { IAction } from \"./IAction\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { IRouter, Page } from \"../ui/Router\";\nimport { ConsoleHelpText } from \"./data/Help\";\nimport { exceptionAlert } from \"../utils/helpers/exceptionAlert\";\nimport { getRandomInt } from \"../utils/helpers/getRandomInt\";\nimport { BladeburnerConstants } from \"./data/Constants\";\nimport { numeralWrapper } from \"../ui/numeralFormat\";\nimport { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\nimport { addOffset } from \"../utils/helpers/addOffset\";\nimport { Faction } from \"../Faction/Faction\";\nimport { Factions, factionExists } from \"../Faction/Factions\";\nimport { calculateHospitalizationCost } from \"../Hospital/Hospital\";\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { Settings } from \"../Settings/Settings\";\nimport { Augmentations } from \"../Augmentation/Augmentations\";\nimport { AugmentationNames } from \"../Augmentation/data/AugmentationNames\";\nimport { getTimestamp } from \"../utils/helpers/getTimestamp\";\nimport { joinFaction } from \"../Faction/FactionHelpers\";\nimport { WorkerScript } from \"../Netscript/WorkerScript\";\nimport { FactionNames } from \"../Faction/data/FactionNames\";\nimport { BlackOperationNames } from \"./data/BlackOperationNames\";\nimport { KEY } from \"../utils/helpers/keyCodes\";\n\ninterface BlackOpsAttempt {\n error?: string;\n isAvailable?: boolean;\n action?: BlackOperation;\n}\n\nexport class Bladeburner implements IBladeburner {\n numHosp = 0;\n moneyLost = 0;\n rank = 0;\n maxRank = 0;\n\n skillPoints = 0;\n totalSkillPoints = 0;\n\n teamSize = 0;\n teamLost = 0;\n hpLost = 0;\n\n storedCycles = 0;\n\n randomEventCounter: number = getRandomInt(240, 600);\n\n actionTimeToComplete = 0;\n actionTimeCurrent = 0;\n actionTimeOverflow = 0;\n\n action: IActionIdentifier = new ActionIdentifier({\n type: ActionTypes[\"Idle\"],\n });\n\n cities: any = {};\n city: string = BladeburnerConstants.CityNames[2];\n skills: any = {};\n skillMultipliers: any = {};\n staminaBonus = 0;\n maxStamina = 0;\n stamina = 0;\n contracts: any = {};\n operations: any = {};\n blackops: any = {};\n logging: any = {\n general: true,\n contracts: true,\n ops: true,\n blackops: true,\n events: true,\n };\n automateEnabled = false;\n automateActionHigh: IActionIdentifier = new ActionIdentifier({\n type: ActionTypes[\"Idle\"],\n });\n automateThreshHigh = 0;\n automateActionLow: IActionIdentifier = new ActionIdentifier({\n type: ActionTypes[\"Idle\"],\n });\n automateThreshLow = 0;\n consoleHistory: string[] = [];\n consoleLogs: string[] = [\"Bladeburner Console\", \"Type 'help' to see console commands\"];\n\n constructor(player?: IPlayer) {\n for (let i = 0; i < BladeburnerConstants.CityNames.length; ++i) {\n this.cities[BladeburnerConstants.CityNames[i]] = new City(BladeburnerConstants.CityNames[i]);\n }\n\n this.updateSkillMultipliers(); // Calls resetSkillMultipliers()\n\n // Max Stamina is based on stats and Bladeburner-specific bonuses\n if (player) this.calculateMaxStamina(player);\n this.stamina = this.maxStamina;\n this.create();\n }\n\n getCurrentCity(): City {\n const city = this.cities[this.city];\n if (!(city instanceof City)) {\n throw new Error(\"Bladeburner.getCurrentCity() did not properly return a City object\");\n }\n return city;\n }\n\n calculateStaminaPenalty(): number {\n return Math.min(1, this.stamina / (0.5 * this.maxStamina));\n }\n\n canAttemptBlackOp(actionId: IActionIdentifier): BlackOpsAttempt {\n // Safety measure - don't repeat BlackOps that are already done\n if (this.blackops[actionId.name] != null) {\n return { error: \"Tried to start a Black Operation that had already been completed\" };\n }\n\n const action = this.getActionObject(actionId);\n if (!(action instanceof BlackOperation)) throw new Error(`Action should be BlackOperation but isn't`);\n if (action == null) throw new Error(\"Failed to get BlackOperation object for: \" + actionId.name);\n\n if (action.reqdRank > this.rank) {\n return { error: \"Tried to start a Black Operation without the rank requirement\" };\n }\n\n // Can't start a BlackOp if you haven't done the one before it\n const blackops = [];\n for (const nm of Object.keys(BlackOperations)) {\n if (BlackOperations.hasOwnProperty(nm)) {\n blackops.push(nm);\n }\n }\n blackops.sort(function (a, b) {\n return BlackOperations[a].reqdRank - BlackOperations[b].reqdRank; // Sort black ops in intended order\n });\n\n const i = blackops.indexOf(actionId.name);\n if (i === -1) {\n return { error: `Invalid Black Op: '${name}'` };\n }\n\n if (i > 0 && this.blackops[blackops[i - 1]] == null) {\n return { error: `Preceding Black Op must be completed before starting '${actionId.name}'.` };\n }\n\n return { isAvailable: true, action };\n }\n\n startAction(player: IPlayer, actionId: IActionIdentifier): void {\n if (actionId == null) return;\n this.action = actionId;\n this.actionTimeCurrent = 0;\n switch (actionId.type) {\n case ActionTypes[\"Idle\"]:\n this.actionTimeToComplete = 0;\n break;\n case ActionTypes[\"Contract\"]:\n try {\n const action = this.getActionObject(actionId);\n if (action == null) {\n throw new Error(\"Failed to get Contract Object for: \" + actionId.name);\n }\n if (action.count < 1) {\n return this.resetAction();\n }\n this.actionTimeToComplete = action.getActionTime(this);\n } catch (e: any) {\n exceptionAlert(e);\n }\n break;\n case ActionTypes[\"Operation\"]: {\n try {\n const action = this.getActionObject(actionId);\n if (action == null) {\n throw new Error(\"Failed to get Operation Object for: \" + actionId.name);\n }\n if (action.count < 1) {\n return this.resetAction();\n }\n if (actionId.name === \"Raid\" && this.getCurrentCity().comms === 0) {\n return this.resetAction();\n }\n this.actionTimeToComplete = action.getActionTime(this);\n } catch (e: any) {\n exceptionAlert(e);\n }\n break;\n }\n case ActionTypes[\"BlackOp\"]:\n case ActionTypes[\"BlackOperation\"]: {\n try {\n const testBlackOp = this.canAttemptBlackOp(actionId);\n if (!testBlackOp.isAvailable) {\n this.resetAction();\n this.log(`Error: ${testBlackOp.error}`);\n break;\n }\n if (testBlackOp.action === undefined) {\n throw new Error(\"action should not be null\");\n }\n this.actionTimeToComplete = testBlackOp.action.getActionTime(this);\n } catch (e: any) {\n exceptionAlert(e);\n }\n break;\n }\n case ActionTypes[\"Recruitment\"]:\n this.actionTimeToComplete = this.getRecruitmentTime(player);\n break;\n case ActionTypes[\"Training\"]:\n case ActionTypes[\"FieldAnalysis\"]:\n case ActionTypes[\"Field Analysis\"]:\n this.actionTimeToComplete = 30;\n break;\n case ActionTypes[\"Diplomacy\"]:\n case ActionTypes[\"Hyperbolic Regeneration Chamber\"]:\n case ActionTypes[\"Incite Violence\"]:\n this.actionTimeToComplete = 60;\n break;\n default:\n throw new Error(\"Invalid Action Type in startAction(Bladeburner,player, ): \" + actionId.type);\n }\n }\n\n upgradeSkill(skill: Skill): void {\n // This does NOT handle deduction of skill points\n const skillName = skill.name;\n if (this.skills[skillName]) {\n ++this.skills[skillName];\n } else {\n this.skills[skillName] = 1;\n }\n if (isNaN(this.skills[skillName]) || this.skills[skillName] < 0) {\n throw new Error(\"Level of Skill \" + skillName + \" is invalid: \" + this.skills[skillName]);\n }\n this.updateSkillMultipliers();\n }\n\n executeConsoleCommands(player: IPlayer, commands: string): void {\n try {\n // Console History\n if (this.consoleHistory[this.consoleHistory.length - 1] != commands) {\n this.consoleHistory.push(commands);\n if (this.consoleHistory.length > 50) {\n this.consoleHistory.splice(0, 1);\n }\n }\n\n const arrayOfCommands = commands.split(\";\");\n for (let i = 0; i < arrayOfCommands.length; ++i) {\n this.executeConsoleCommand(player, arrayOfCommands[i]);\n }\n } catch (e: any) {\n exceptionAlert(e);\n }\n }\n\n postToConsole(input: string, saveToLogs = true): void {\n const MaxConsoleEntries = 100;\n if (saveToLogs) {\n this.consoleLogs.push(input);\n if (this.consoleLogs.length > MaxConsoleEntries) {\n this.consoleLogs.shift();\n }\n }\n }\n\n log(input: string): void {\n // Adds a timestamp and then just calls postToConsole\n this.postToConsole(`[${getTimestamp()}] ${input}`);\n }\n\n resetAction(): void {\n this.action = new ActionIdentifier({ type: ActionTypes.Idle });\n }\n\n clearConsole(): void {\n this.consoleLogs.length = 0;\n }\n\n prestige(): void {\n this.resetAction();\n const bladeburnerFac = Factions[FactionNames.Bladeburners];\n if (this.rank >= BladeburnerConstants.RankNeededForFaction) {\n joinFaction(bladeburnerFac);\n }\n }\n\n storeCycles(numCycles = 0): void {\n this.storedCycles += numCycles;\n }\n\n // working on\n getActionIdFromTypeAndName(type = \"\", name = \"\"): IActionIdentifier | null {\n if (type === \"\" || name === \"\") {\n return null;\n }\n const action = new ActionIdentifier();\n const convertedType = type.toLowerCase().trim();\n const convertedName = name.toLowerCase().trim();\n switch (convertedType) {\n case \"contract\":\n case \"contracts\":\n case \"contr\":\n action.type = ActionTypes[\"Contract\"];\n if (this.contracts.hasOwnProperty(name)) {\n action.name = name;\n return action;\n }\n return null;\n case \"operation\":\n case \"operations\":\n case \"op\":\n case \"ops\":\n action.type = ActionTypes[\"Operation\"];\n if (this.operations.hasOwnProperty(name)) {\n action.name = name;\n return action;\n }\n return null;\n case \"blackoperation\":\n case \"black operation\":\n case \"black operations\":\n case \"black op\":\n case \"black ops\":\n case \"blackop\":\n case \"blackops\":\n action.type = ActionTypes[\"BlackOp\"];\n if (BlackOperations.hasOwnProperty(name)) {\n action.name = name;\n return action;\n }\n return null;\n case \"general\":\n case \"general action\":\n case \"gen\":\n break;\n default:\n return null;\n }\n\n if (convertedType.startsWith(\"gen\")) {\n switch (convertedName) {\n case \"training\":\n action.type = ActionTypes[\"Training\"];\n action.name = \"Training\";\n break;\n case \"recruitment\":\n case \"recruit\":\n action.type = ActionTypes[\"Recruitment\"];\n action.name = \"Recruitment\";\n break;\n case \"field analysis\":\n case \"fieldanalysis\":\n action.type = ActionTypes[\"Field Analysis\"];\n action.name = \"Field Analysis\";\n break;\n case \"diplomacy\":\n action.type = ActionTypes[\"Diplomacy\"];\n action.name = \"Diplomacy\";\n break;\n case \"hyperbolic regeneration chamber\":\n action.type = ActionTypes[\"Hyperbolic Regeneration Chamber\"];\n action.name = \"Hyperbolic Regeneration Chamber\";\n break;\n case \"incite violence\":\n action.type = ActionTypes[\"Incite Violence\"];\n action.name = \"Incite Violence\";\n break;\n default:\n return null;\n }\n return action;\n }\n\n return null;\n }\n\n executeStartConsoleCommand(player: IPlayer, args: string[]): void {\n if (args.length !== 3) {\n this.postToConsole(\"Invalid usage of 'start' console command: start [type] [name]\");\n this.postToConsole(\"Use 'help start' for more info\");\n return;\n }\n const name = args[2];\n switch (args[1].toLowerCase()) {\n case \"general\":\n case \"gen\":\n if (GeneralActions[name] != null) {\n this.action.type = ActionTypes[name];\n this.action.name = name;\n this.startAction(player, this.action);\n } else {\n this.postToConsole(\"Invalid action name specified: \" + args[2]);\n }\n break;\n case \"contract\":\n case \"contracts\":\n if (this.contracts[name] != null) {\n this.action.type = ActionTypes.Contract;\n this.action.name = name;\n this.startAction(player, this.action);\n } else {\n this.postToConsole(\"Invalid contract name specified: \" + args[2]);\n }\n break;\n case \"ops\":\n case \"op\":\n case \"operations\":\n case \"operation\":\n if (this.operations[name] != null) {\n this.action.type = ActionTypes.Operation;\n this.action.name = name;\n this.startAction(player, this.action);\n } else {\n this.postToConsole(\"Invalid Operation name specified: \" + args[2]);\n }\n break;\n case \"blackops\":\n case \"blackop\":\n case \"black operations\":\n case \"black operation\":\n if (BlackOperations[name] != null) {\n this.action.type = ActionTypes.BlackOperation;\n this.action.name = name;\n this.startAction(player, this.action);\n } else {\n this.postToConsole(\"Invalid BlackOp name specified: \" + args[2]);\n }\n break;\n default:\n this.postToConsole(\"Invalid action/event type specified: \" + args[1]);\n this.postToConsole(\"Examples of valid action/event identifiers are: [general, contract, op, blackop]\");\n break;\n }\n }\n\n executeSkillConsoleCommand(args: string[]): void {\n switch (args.length) {\n case 1: {\n // Display Skill Help Command\n this.postToConsole(\"Invalid usage of 'skill' console command: skill [action] [name]\");\n this.postToConsole(\"Use 'help skill' for more info\");\n break;\n }\n case 2: {\n if (args[1].toLowerCase() === \"list\") {\n // List all skills and their level\n this.postToConsole(\"Skills: \");\n const skillNames = Object.keys(Skills);\n for (let i = 0; i < skillNames.length; ++i) {\n const skill = Skills[skillNames[i]];\n let level = 0;\n if (this.skills[skill.name] != null) {\n level = this.skills[skill.name];\n }\n this.postToConsole(skill.name + \": Level \" + formatNumber(level, 0));\n }\n this.postToConsole(\" \");\n this.postToConsole(\"Effects: \");\n const multKeys = Object.keys(this.skillMultipliers);\n for (let i = 0; i < multKeys.length; ++i) {\n let mult = this.skillMultipliers[multKeys[i]];\n if (mult && mult !== 1) {\n mult = formatNumber(mult, 3);\n switch (multKeys[i]) {\n case \"successChanceAll\":\n this.postToConsole(\"Total Success Chance: x\" + mult);\n break;\n case \"successChanceStealth\":\n this.postToConsole(\"Stealth Success Chance: x\" + mult);\n break;\n case \"successChanceKill\":\n this.postToConsole(\"Retirement Success Chance: x\" + mult);\n break;\n case \"successChanceContract\":\n this.postToConsole(\"Contract Success Chance: x\" + mult);\n break;\n case \"successChanceOperation\":\n this.postToConsole(\"Operation Success Chance: x\" + mult);\n break;\n case \"successChanceEstimate\":\n this.postToConsole(\"Synthoid Data Estimate: x\" + mult);\n break;\n case \"actionTime\":\n this.postToConsole(\"Action Time: x\" + mult);\n break;\n case \"effHack\":\n this.postToConsole(\"Hacking Skill: x\" + mult);\n break;\n case \"effStr\":\n this.postToConsole(\"Strength: x\" + mult);\n break;\n case \"effDef\":\n this.postToConsole(\"Defense: x\" + mult);\n break;\n case \"effDex\":\n this.postToConsole(\"Dexterity: x\" + mult);\n break;\n case \"effAgi\":\n this.postToConsole(\"Agility: x\" + mult);\n break;\n case \"effCha\":\n this.postToConsole(\"Charisma: x\" + mult);\n break;\n case \"effInt\":\n this.postToConsole(\"Intelligence: x\" + mult);\n break;\n case \"stamina\":\n this.postToConsole(\"Stamina: x\" + mult);\n break;\n default:\n console.warn(`Unrecognized SkillMult Key: ${multKeys[i]}`);\n break;\n }\n }\n }\n } else {\n this.postToConsole(\"Invalid usage of 'skill' console command: skill [action] [name]\");\n this.postToConsole(\"Use 'help skill' for more info\");\n }\n break;\n }\n case 3: {\n const skillName = args[2];\n const skill = Skills[skillName];\n if (skill == null || !(skill instanceof Skill)) {\n this.postToConsole(\"Invalid skill name (Note that it is case-sensitive): \" + skillName);\n break;\n }\n if (args[1].toLowerCase() === \"list\") {\n let level = 0;\n if (this.skills[skill.name] !== undefined) {\n level = this.skills[skill.name];\n }\n this.postToConsole(skill.name + \": Level \" + formatNumber(level));\n } else if (args[1].toLowerCase() === \"level\") {\n let currentLevel = 0;\n if (this.skills[skillName] && !isNaN(this.skills[skillName])) {\n currentLevel = this.skills[skillName];\n }\n const pointCost = skill.calculateCost(currentLevel);\n if (skill.maxLvl !== 0 && currentLevel >= skill.maxLvl) {\n this.postToConsole(`This skill ${skill.name} is already at max level (${currentLevel}/${skill.maxLvl}).`);\n } else if (this.skillPoints >= pointCost) {\n this.skillPoints -= pointCost;\n this.upgradeSkill(skill);\n this.log(skill.name + \" upgraded to Level \" + this.skills[skillName]);\n } else {\n this.postToConsole(\n \"You do not have enough Skill Points to upgrade this. You need \" + formatNumber(pointCost, 0),\n );\n }\n } else {\n this.postToConsole(\"Invalid usage of 'skill' console command: skill [action] [name]\");\n this.postToConsole(\"Use 'help skill' for more info\");\n }\n break;\n }\n default: {\n this.postToConsole(\"Invalid usage of 'skill' console command: skill [action] [name]\");\n this.postToConsole(\"Use 'help skill' for more info\");\n break;\n }\n }\n }\n\n executeLogConsoleCommand(args: string[]): void {\n if (args.length < 3) {\n this.postToConsole(\"Invalid usage of log command: log [enable/disable] [action/event]\");\n this.postToConsole(\"Use 'help log' for more details and examples\");\n return;\n }\n\n let flag = true;\n if (args[1].toLowerCase().includes(\"d\")) {\n flag = false;\n } // d for disable\n\n switch (args[2].toLowerCase()) {\n case \"general\":\n case \"gen\":\n this.logging.general = flag;\n this.log(\"Logging \" + (flag ? \"enabled\" : \"disabled\") + \" for general actions\");\n break;\n case \"contract\":\n case \"contracts\":\n this.logging.contracts = flag;\n this.log(\"Logging \" + (flag ? \"enabled\" : \"disabled\") + \" for Contracts\");\n break;\n case \"ops\":\n case \"op\":\n case \"operations\":\n case \"operation\":\n this.logging.ops = flag;\n this.log(\"Logging \" + (flag ? \"enabled\" : \"disabled\") + \" for Operations\");\n break;\n case \"blackops\":\n case \"blackop\":\n case \"black operations\":\n case \"black operation\":\n this.logging.blackops = flag;\n this.log(\"Logging \" + (flag ? \"enabled\" : \"disabled\") + \" for BlackOps\");\n break;\n case \"event\":\n case \"events\":\n this.logging.events = flag;\n this.log(\"Logging \" + (flag ? \"enabled\" : \"disabled\") + \" for events\");\n break;\n case \"all\":\n this.logging.general = flag;\n this.logging.contracts = flag;\n this.logging.ops = flag;\n this.logging.blackops = flag;\n this.logging.events = flag;\n this.log(\"Logging \" + (flag ? \"enabled\" : \"disabled\") + \" for everything\");\n break;\n default:\n this.postToConsole(\"Invalid action/event type specified: \" + args[2]);\n this.postToConsole(\n \"Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]\",\n );\n break;\n }\n }\n\n executeHelpConsoleCommand(args: string[]): void {\n if (args.length === 1) {\n for (const line of ConsoleHelpText.helpList) {\n this.postToConsole(line);\n }\n } else {\n for (let i = 1; i < args.length; ++i) {\n if (!(args[i] in ConsoleHelpText)) continue;\n const helpText = ConsoleHelpText[args[i]];\n for (const line of helpText) {\n this.postToConsole(line);\n }\n }\n }\n }\n\n executeAutomateConsoleCommand(args: string[]): void {\n if (args.length !== 2 && args.length !== 4) {\n this.postToConsole(\n \"Invalid use of 'automate' command: automate [var] [val] [hi/low]. Use 'help automate' for more info\",\n );\n return;\n }\n\n // Enable/Disable\n if (args.length === 2) {\n const flag = args[1];\n if (flag.toLowerCase() === \"status\") {\n this.postToConsole(\"Automation: \" + (this.automateEnabled ? \"enabled\" : \"disabled\"));\n this.postToConsole(\n \"When your stamina drops to \" +\n formatNumber(this.automateThreshLow, 0) +\n \", you will automatically switch to \" +\n this.automateActionLow.name +\n \". When your stamina recovers to \" +\n formatNumber(this.automateThreshHigh, 0) +\n \", you will automatically \" +\n \"switch to \" +\n this.automateActionHigh.name +\n \".\",\n );\n } else if (flag.toLowerCase().includes(\"en\")) {\n if (\n !(this.automateActionLow instanceof ActionIdentifier) ||\n !(this.automateActionHigh instanceof ActionIdentifier)\n ) {\n return this.log(\"Failed to enable automation. Actions were not set\");\n }\n this.automateEnabled = true;\n this.log(\"Bladeburner automation enabled\");\n } else if (flag.toLowerCase().includes(\"d\")) {\n this.automateEnabled = false;\n this.log(\"Bladeburner automation disabled\");\n } else {\n this.log(\"Invalid argument for 'automate' console command: \" + args[1]);\n }\n return;\n }\n\n // Set variables\n if (args.length === 4) {\n const variable = args[1];\n const val = args[2];\n\n let highLow = false; // True for high, false for low\n if (args[3].toLowerCase().includes(\"hi\")) {\n highLow = true;\n }\n\n switch (variable) {\n case \"general\":\n case \"gen\":\n if (GeneralActions[val] != null) {\n const action = new ActionIdentifier({\n type: ActionTypes[val],\n name: val,\n });\n if (highLow) {\n this.automateActionHigh = action;\n } else {\n this.automateActionLow = action;\n }\n this.log(\"Automate (\" + (highLow ? \"HIGH\" : \"LOW\") + \") action set to \" + val);\n } else {\n this.postToConsole(\"Invalid action name specified: \" + val);\n }\n break;\n case \"contract\":\n case \"contracts\":\n if (this.contracts[val] != null) {\n const action = new ActionIdentifier({\n type: ActionTypes.Contract,\n name: val,\n });\n if (highLow) {\n this.automateActionHigh = action;\n } else {\n this.automateActionLow = action;\n }\n this.log(\"Automate (\" + (highLow ? \"HIGH\" : \"LOW\") + \") action set to \" + val);\n } else {\n this.postToConsole(\"Invalid contract name specified: \" + val);\n }\n break;\n case \"ops\":\n case \"op\":\n case \"operations\":\n case \"operation\":\n if (this.operations[val] != null) {\n const action = new ActionIdentifier({\n type: ActionTypes.Operation,\n name: val,\n });\n if (highLow) {\n this.automateActionHigh = action;\n } else {\n this.automateActionLow = action;\n }\n this.log(\"Automate (\" + (highLow ? \"HIGH\" : \"LOW\") + \") action set to \" + val);\n } else {\n this.postToConsole(\"Invalid Operation name specified: \" + val);\n }\n break;\n case \"stamina\":\n if (isNaN(parseFloat(val))) {\n this.postToConsole(\"Invalid value specified for stamina threshold (must be numeric): \" + val);\n } else {\n if (highLow) {\n this.automateThreshHigh = Number(val);\n } else {\n this.automateThreshLow = Number(val);\n }\n this.log(\"Automate (\" + (highLow ? \"HIGH\" : \"LOW\") + \") stamina threshold set to \" + val);\n }\n break;\n default:\n break;\n }\n\n return;\n }\n }\n\n parseCommandArguments(command: string): string[] {\n /**\n * Returns an array with command and its arguments in each index.\n * e.g. skill \"blade's intuition\" foo returns [skill, blade's intuition, foo]\n * The input to the fn will be trimmed and will have all whitespace replaced w/ a single space\n */\n const args = [];\n let start = 0;\n let i = 0;\n while (i < command.length) {\n const c = command.charAt(i);\n if (c === '\"') {\n // Double quotes\n const endQuote = command.indexOf('\"', i + 1);\n if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === KEY.SPACE)) {\n args.push(command.substr(i + 1, endQuote - i - 1));\n if (endQuote === command.length - 1) {\n start = i = endQuote + 1;\n } else {\n start = i = endQuote + 2; // Skip the space\n }\n continue;\n }\n } else if (c === \"'\") {\n // Single quotes, same thing as above\n const endQuote = command.indexOf(\"'\", i + 1);\n if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === KEY.SPACE)) {\n args.push(command.substr(i + 1, endQuote - i - 1));\n if (endQuote === command.length - 1) {\n start = i = endQuote + 1;\n } else {\n start = i = endQuote + 2; // Skip the space\n }\n continue;\n }\n } else if (c === KEY.SPACE) {\n args.push(command.substr(start, i - start));\n start = i + 1;\n }\n ++i;\n }\n if (start !== i) {\n args.push(command.substr(start, i - start));\n }\n return args;\n }\n\n executeConsoleCommand(player: IPlayer, command: string): void {\n command = command.trim();\n command = command.replace(/\\s\\s+/g, \" \"); // Replace all whitespace w/ a single space\n\n const args = this.parseCommandArguments(command);\n if (args.length <= 0) return; // Log an error?\n\n switch (args[0].toLowerCase()) {\n case \"automate\":\n this.executeAutomateConsoleCommand(args);\n break;\n case \"clear\":\n case \"cls\":\n this.clearConsole();\n break;\n case \"help\":\n this.executeHelpConsoleCommand(args);\n break;\n case \"log\":\n this.executeLogConsoleCommand(args);\n break;\n case \"skill\":\n this.executeSkillConsoleCommand(args);\n break;\n case \"start\":\n this.executeStartConsoleCommand(player, args);\n break;\n case \"stop\":\n this.resetAction();\n break;\n default:\n this.postToConsole(\"Invalid console command\");\n break;\n }\n }\n\n triggerMigration(sourceCityName: string): void {\n let destCityName = BladeburnerConstants.CityNames[getRandomInt(0, 5)];\n while (destCityName === sourceCityName) {\n destCityName = BladeburnerConstants.CityNames[getRandomInt(0, 5)];\n }\n const destCity = this.cities[destCityName];\n const sourceCity = this.cities[sourceCityName];\n if (destCity == null || sourceCity == null) {\n throw new Error(\"Failed to find City with name: \" + destCityName);\n }\n const rand = Math.random();\n let percentage = getRandomInt(3, 15) / 100;\n\n if (rand < 0.05 && sourceCity.comms > 0) {\n // 5% chance for community migration\n percentage *= getRandomInt(2, 4); // Migration increases population change\n --sourceCity.comms;\n ++destCity.comms;\n }\n const count = Math.round(sourceCity.pop * percentage);\n sourceCity.pop -= count;\n destCity.pop += count;\n }\n\n triggerPotentialMigration(sourceCityName: string, chance: number): void {\n if (chance == null || isNaN(chance)) {\n console.error(\"Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()\");\n }\n if (chance > 1) {\n chance /= 100;\n }\n if (Math.random() < chance) {\n this.triggerMigration(sourceCityName);\n }\n }\n\n randomEvent(): void {\n const chance = Math.random();\n\n // Choose random source/destination city for events\n const sourceCityName = BladeburnerConstants.CityNames[getRandomInt(0, 5)];\n const sourceCity = this.cities[sourceCityName];\n if (!(sourceCity instanceof City)) {\n throw new Error(\"sourceCity was not a City object in Bladeburner.randomEvent()\");\n }\n\n let destCityName = BladeburnerConstants.CityNames[getRandomInt(0, 5)];\n while (destCityName === sourceCityName) {\n destCityName = BladeburnerConstants.CityNames[getRandomInt(0, 5)];\n }\n const destCity = this.cities[destCityName];\n\n if (!(sourceCity instanceof City) || !(destCity instanceof City)) {\n throw new Error(\"sourceCity/destCity was not a City object in Bladeburner.randomEvent()\");\n }\n\n if (chance <= 0.05) {\n // New Synthoid Community, 5%\n ++sourceCity.comms;\n const percentage = getRandomInt(10, 20) / 100;\n const count = Math.round(sourceCity.pop * percentage);\n sourceCity.pop += count;\n if (this.logging.events) {\n this.log(\"Intelligence indicates that a new Synthoid community was formed in a city\");\n }\n } else if (chance <= 0.1) {\n // Synthoid Community Migration, 5%\n if (sourceCity.comms <= 0) {\n // If no comms in source city, then instead trigger a new Synthoid community event\n ++sourceCity.comms;\n const percentage = getRandomInt(10, 20) / 100;\n const count = Math.round(sourceCity.pop * percentage);\n sourceCity.pop += count;\n if (this.logging.events) {\n this.log(\"Intelligence indicates that a new Synthoid community was formed in a city\");\n }\n } else {\n --sourceCity.comms;\n ++destCity.comms;\n\n // Change pop\n const percentage = getRandomInt(10, 20) / 100;\n const count = Math.round(sourceCity.pop * percentage);\n sourceCity.pop -= count;\n destCity.pop += count;\n\n if (this.logging.events) {\n this.log(\n \"Intelligence indicates that a Synthoid community migrated from \" + sourceCityName + \" to some other city\",\n );\n }\n }\n } else if (chance <= 0.3) {\n // New Synthoids (non community), 20%\n const percentage = getRandomInt(8, 24) / 100;\n const count = Math.round(sourceCity.pop * percentage);\n sourceCity.pop += count;\n if (this.logging.events) {\n this.log(\n \"Intelligence indicates that the Synthoid population of \" + sourceCityName + \" just changed significantly\",\n );\n }\n } else if (chance <= 0.5) {\n // Synthoid migration (non community) 20%\n this.triggerMigration(sourceCityName);\n if (this.logging.events) {\n this.log(\n \"Intelligence indicates that a large number of Synthoids migrated from \" +\n sourceCityName +\n \" to some other city\",\n );\n }\n } else if (chance <= 0.7) {\n // Synthoid Riots (+chaos), 20%\n sourceCity.chaos += 1;\n sourceCity.chaos *= 1 + getRandomInt(5, 20) / 100;\n if (this.logging.events) {\n this.log(\"Tensions between Synthoids and humans lead to riots in \" + sourceCityName + \"! Chaos increased\");\n }\n } else if (chance <= 0.9) {\n // Less Synthoids, 20%\n const percentage = getRandomInt(8, 20) / 100;\n const count = Math.round(sourceCity.pop * percentage);\n sourceCity.pop -= count;\n if (this.logging.events) {\n this.log(\n \"Intelligence indicates that the Synthoid population of \" + sourceCityName + \" just changed significantly\",\n );\n }\n }\n // 10% chance of nothing happening\n }\n\n /**\n * Process stat gains from Contracts, Operations, and Black Operations\n * @param action(Action obj) - Derived action class\n * @param success(bool) - Whether action was successful\n */\n gainActionStats(player: IPlayer, action: IAction, success: boolean): void {\n const difficulty = action.getDifficulty();\n\n /**\n * Gain multiplier based on difficulty. If it changes then the\n * same variable calculated in completeAction() needs to change too\n */\n const difficultyMult =\n Math.pow(difficulty, BladeburnerConstants.DiffMultExponentialFactor) +\n difficulty / BladeburnerConstants.DiffMultLinearFactor;\n\n const time = this.actionTimeToComplete;\n const successMult = success ? 1 : 0.5;\n\n const unweightedGain = time * BladeburnerConstants.BaseStatGain * successMult * difficultyMult;\n const unweightedIntGain = time * BladeburnerConstants.BaseIntGain * successMult * difficultyMult;\n const skillMult = this.skillMultipliers.expGain;\n player.gainHackingExp(unweightedGain * action.weights.hack * player.hacking_exp_mult * skillMult);\n player.gainStrengthExp(unweightedGain * action.weights.str * player.strength_exp_mult * skillMult);\n player.gainDefenseExp(unweightedGain * action.weights.def * player.defense_exp_mult * skillMult);\n player.gainDexterityExp(unweightedGain * action.weights.dex * player.dexterity_exp_mult * skillMult);\n player.gainAgilityExp(unweightedGain * action.weights.agi * player.agility_exp_mult * skillMult);\n player.gainCharismaExp(unweightedGain * action.weights.cha * player.charisma_exp_mult * skillMult);\n player.gainIntelligenceExp(unweightedIntGain * action.weights.int * skillMult);\n }\n\n getDiplomacyEffectiveness(player: IPlayer): number {\n // Returns a decimal by which the city's chaos level should be multiplied (e.g. 0.98)\n const CharismaLinearFactor = 1e3;\n const CharismaExponentialFactor = 0.045;\n\n const charismaEff = Math.pow(player.charisma, CharismaExponentialFactor) + player.charisma / CharismaLinearFactor;\n return (100 - charismaEff) / 100;\n }\n\n getRecruitmentSuccessChance(player: IPlayer): number {\n return Math.pow(player.charisma, 0.45) / (this.teamSize + 1);\n }\n\n getRecruitmentTime(player: IPlayer): number {\n const effCharisma = player.charisma * this.skillMultipliers.effCha;\n const charismaFactor = Math.pow(effCharisma, 0.81) + effCharisma / 90;\n return Math.max(10, Math.round(BladeburnerConstants.BaseRecruitmentTimeNeeded - charismaFactor));\n }\n\n resetSkillMultipliers(): void {\n this.skillMultipliers = {\n successChanceAll: 1,\n successChanceStealth: 1,\n successChanceKill: 1,\n successChanceContract: 1,\n successChanceOperation: 1,\n successChanceEstimate: 1,\n actionTime: 1,\n effHack: 1,\n effStr: 1,\n effDef: 1,\n effDex: 1,\n effAgi: 1,\n effCha: 1,\n effInt: 1,\n stamina: 1,\n money: 1,\n expGain: 1,\n };\n }\n\n updateSkillMultipliers(): void {\n this.resetSkillMultipliers();\n for (const skillName of Object.keys(this.skills)) {\n if (this.skills.hasOwnProperty(skillName)) {\n const skill = Skills[skillName];\n if (skill == null) {\n throw new Error(\"Could not find Skill Object for: \" + skillName);\n }\n const level = this.skills[skillName];\n if (level == null || level <= 0) {\n continue;\n } //Not upgraded\n\n const multiplierNames = Object.keys(this.skillMultipliers);\n for (let i = 0; i < multiplierNames.length; ++i) {\n const multiplierName = multiplierNames[i];\n if (skill.getMultiplier(multiplierName) != null && !isNaN(skill.getMultiplier(multiplierName))) {\n const value = skill.getMultiplier(multiplierName) * level;\n let multiplierValue = 1 + value / 100;\n if (multiplierName === \"actionTime\") {\n multiplierValue = 1 - value / 100;\n }\n this.skillMultipliers[multiplierName] *= multiplierValue;\n }\n }\n }\n }\n }\n\n completeOperation(success: boolean): void {\n if (this.action.type !== ActionTypes.Operation) {\n throw new Error(\"completeOperation() called even though current action is not an Operation\");\n }\n const action = this.getActionObject(this.action);\n if (action == null) {\n throw new Error(\"Failed to get Contract/Operation Object for: \" + this.action.name);\n }\n\n // Calculate team losses\n const teamCount = action.teamCount;\n if (teamCount >= 1) {\n let max;\n if (success) {\n max = Math.ceil(teamCount / 2);\n } else {\n max = Math.floor(teamCount);\n }\n const losses = getRandomInt(0, max);\n this.teamSize -= losses;\n this.teamLost += losses;\n if (this.logging.ops && losses > 0) {\n this.log(\"Lost \" + formatNumber(losses, 0) + \" team members during this \" + action.name);\n }\n }\n\n const city = this.getCurrentCity();\n switch (action.name) {\n case \"Investigation\":\n if (success) {\n city.improvePopulationEstimateByPercentage(0.4 * this.skillMultipliers.successChanceEstimate);\n } else {\n this.triggerPotentialMigration(this.city, 0.1);\n }\n break;\n case \"Undercover Operation\":\n if (success) {\n city.improvePopulationEstimateByPercentage(0.8 * this.skillMultipliers.successChanceEstimate);\n } else {\n this.triggerPotentialMigration(this.city, 0.15);\n }\n break;\n case \"Sting Operation\":\n if (success) {\n city.changePopulationByPercentage(-0.1, {\n changeEstEqually: true,\n nonZero: true,\n });\n }\n city.changeChaosByCount(0.1);\n break;\n case \"Raid\":\n if (success) {\n city.changePopulationByPercentage(-1, {\n changeEstEqually: true,\n nonZero: true,\n });\n --city.comms;\n } else {\n const change = getRandomInt(-10, -5) / 10;\n city.changePopulationByPercentage(change, {\n nonZero: true,\n changeEstEqually: false,\n });\n }\n city.changeChaosByPercentage(getRandomInt(1, 5));\n break;\n case \"Stealth Retirement Operation\":\n if (success) {\n city.changePopulationByPercentage(-0.5, {\n changeEstEqually: true,\n nonZero: true,\n });\n }\n city.changeChaosByPercentage(getRandomInt(-3, -1));\n break;\n case \"Assassination\":\n if (success) {\n city.changePopulationByCount(-1, { estChange: -1, estOffset: 0 });\n }\n city.changeChaosByPercentage(getRandomInt(-5, 5));\n break;\n default:\n throw new Error(\"Invalid Action name in completeOperation: \" + this.action.name);\n }\n }\n\n getActionObject(actionId: IActionIdentifier): IAction | null {\n /**\n * Given an ActionIdentifier object, returns the corresponding\n * GeneralAction, Contract, Operation, or BlackOperation object\n */\n switch (actionId.type) {\n case ActionTypes[\"Contract\"]:\n return this.contracts[actionId.name];\n case ActionTypes[\"Operation\"]:\n return this.operations[actionId.name];\n case ActionTypes[\"BlackOp\"]:\n case ActionTypes[\"BlackOperation\"]:\n return BlackOperations[actionId.name];\n case ActionTypes[\"Training\"]:\n return GeneralActions[\"Training\"];\n case ActionTypes[\"Field Analysis\"]:\n return GeneralActions[\"Field Analysis\"];\n case ActionTypes[\"Recruitment\"]:\n return GeneralActions[\"Recruitment\"];\n case ActionTypes[\"Diplomacy\"]:\n return GeneralActions[\"Diplomacy\"];\n case ActionTypes[\"Hyperbolic Regeneration Chamber\"]:\n return GeneralActions[\"Hyperbolic Regeneration Chamber\"];\n case ActionTypes[\"Incite Violence\"]:\n return GeneralActions[\"Incite Violence\"];\n default:\n return null;\n }\n }\n\n completeContract(success: boolean): void {\n if (this.action.type !== ActionTypes.Contract) {\n throw new Error(\"completeContract() called even though current action is not a Contract\");\n }\n const city = this.getCurrentCity();\n if (success) {\n switch (this.action.name) {\n case \"Tracking\":\n // Increase estimate accuracy by a relatively small amount\n city.improvePopulationEstimateByCount(getRandomInt(100, 1e3));\n break;\n case \"Bounty Hunter\":\n city.changePopulationByCount(-1, { estChange: -1, estOffset: 0 });\n city.changeChaosByCount(0.02);\n break;\n case \"Retirement\":\n city.changePopulationByCount(-1, { estChange: -1, estOffset: 0 });\n city.changeChaosByCount(0.04);\n break;\n default:\n throw new Error(\"Invalid Action name in completeContract: \" + this.action.name);\n }\n }\n }\n\n completeAction(router: IRouter, player: IPlayer): void {\n switch (this.action.type) {\n case ActionTypes[\"Contract\"]:\n case ActionTypes[\"Operation\"]: {\n try {\n const isOperation = this.action.type === ActionTypes[\"Operation\"];\n const action = this.getActionObject(this.action);\n if (action == null) {\n throw new Error(\"Failed to get Contract/Operation Object for: \" + this.action.name);\n }\n const difficulty = action.getDifficulty();\n const difficultyMultiplier =\n Math.pow(difficulty, BladeburnerConstants.DiffMultExponentialFactor) +\n difficulty / BladeburnerConstants.DiffMultLinearFactor;\n const rewardMultiplier = Math.pow(action.rewardFac, action.level - 1);\n\n // Stamina loss is based on difficulty\n this.stamina -= BladeburnerConstants.BaseStaminaLoss * difficultyMultiplier;\n if (this.stamina < 0) {\n this.stamina = 0;\n }\n\n // Process Contract/Operation success/failure\n if (action.attempt(this)) {\n this.gainActionStats(player, action, true);\n ++action.successes;\n --action.count;\n\n // Earn money for contracts\n let moneyGain = 0;\n if (!isOperation) {\n moneyGain = BladeburnerConstants.ContractBaseMoneyGain * rewardMultiplier * this.skillMultipliers.money;\n player.gainMoney(moneyGain, \"bladeburner\");\n }\n\n if (isOperation) {\n action.setMaxLevel(BladeburnerConstants.OperationSuccessesPerLevel);\n } else {\n action.setMaxLevel(BladeburnerConstants.ContractSuccessesPerLevel);\n }\n if (action.rankGain) {\n const gain = addOffset(action.rankGain * rewardMultiplier * BitNodeMultipliers.BladeburnerRank, 10);\n this.changeRank(player, gain);\n if (isOperation && this.logging.ops) {\n this.log(action.name + \" successfully completed! Gained \" + formatNumber(gain, 3) + \" rank\");\n } else if (!isOperation && this.logging.contracts) {\n this.log(\n action.name +\n \" contract successfully completed! Gained \" +\n formatNumber(gain, 3) +\n \" rank and \" +\n numeralWrapper.formatMoney(moneyGain),\n );\n }\n }\n isOperation ? this.completeOperation(true) : this.completeContract(true);\n } else {\n this.gainActionStats(player, action, false);\n ++action.failures;\n let loss = 0,\n damage = 0;\n if (action.rankLoss) {\n loss = addOffset(action.rankLoss * rewardMultiplier, 10);\n this.changeRank(player, -1 * loss);\n }\n if (action.hpLoss) {\n damage = action.hpLoss * difficultyMultiplier;\n damage = Math.ceil(addOffset(damage, 10));\n this.hpLost += damage;\n const cost = calculateHospitalizationCost(player, damage);\n if (player.takeDamage(damage)) {\n ++this.numHosp;\n this.moneyLost += cost;\n }\n }\n let logLossText = \"\";\n if (loss > 0) {\n logLossText += \"Lost \" + formatNumber(loss, 3) + \" rank. \";\n }\n if (damage > 0) {\n logLossText += \"Took \" + formatNumber(damage, 0) + \" damage.\";\n }\n if (isOperation && this.logging.ops) {\n this.log(action.name + \" failed! \" + logLossText);\n } else if (!isOperation && this.logging.contracts) {\n this.log(action.name + \" contract failed! \" + logLossText);\n }\n isOperation ? this.completeOperation(false) : this.completeContract(false);\n }\n if (action.autoLevel) {\n action.level = action.maxLevel;\n } // Autolevel\n this.startAction(player, this.action); // Repeat action\n } catch (e: any) {\n exceptionAlert(e);\n }\n break;\n }\n case ActionTypes[\"BlackOp\"]:\n case ActionTypes[\"BlackOperation\"]: {\n try {\n const action = this.getActionObject(this.action);\n if (action == null || !(action instanceof BlackOperation)) {\n throw new Error(\"Failed to get BlackOperation Object for: \" + this.action.name);\n }\n const difficulty = action.getDifficulty();\n const difficultyMultiplier =\n Math.pow(difficulty, BladeburnerConstants.DiffMultExponentialFactor) +\n difficulty / BladeburnerConstants.DiffMultLinearFactor;\n\n // Stamina loss is based on difficulty\n this.stamina -= BladeburnerConstants.BaseStaminaLoss * difficultyMultiplier;\n if (this.stamina < 0) {\n this.stamina = 0;\n }\n\n // Team loss variables\n const teamCount = action.teamCount;\n let teamLossMax;\n\n if (action.attempt(this)) {\n this.gainActionStats(player, action, true);\n action.count = 0;\n this.blackops[action.name] = true;\n let rankGain = 0;\n if (action.rankGain) {\n rankGain = addOffset(action.rankGain * BitNodeMultipliers.BladeburnerRank, 10);\n this.changeRank(player, rankGain);\n }\n teamLossMax = Math.ceil(teamCount / 2);\n\n // Operation Daedalus\n if (action.name === BlackOperationNames.OperationDaedalus) {\n this.resetAction();\n return router.toBitVerse(false, false);\n }\n\n if (this.logging.blackops) {\n this.log(action.name + \" successful! Gained \" + formatNumber(rankGain, 1) + \" rank\");\n }\n } else {\n this.gainActionStats(player, action, false);\n let rankLoss = 0;\n let damage = 0;\n if (action.rankLoss) {\n rankLoss = addOffset(action.rankLoss, 10);\n this.changeRank(player, -1 * rankLoss);\n }\n if (action.hpLoss) {\n damage = action.hpLoss * difficultyMultiplier;\n damage = Math.ceil(addOffset(damage, 10));\n const cost = calculateHospitalizationCost(player, damage);\n if (player.takeDamage(damage)) {\n ++this.numHosp;\n this.moneyLost += cost;\n }\n }\n teamLossMax = Math.floor(teamCount);\n\n if (this.logging.blackops) {\n this.log(\n action.name +\n \" failed! Lost \" +\n formatNumber(rankLoss, 1) +\n \" rank and took \" +\n formatNumber(damage, 0) +\n \" damage\",\n );\n }\n }\n\n this.resetAction(); // Stop regardless of success or fail\n\n // Calculate team lossses\n if (teamCount >= 1) {\n const losses = getRandomInt(1, teamLossMax);\n this.teamSize -= losses;\n this.teamLost += losses;\n if (this.logging.blackops) {\n this.log(\"You lost \" + formatNumber(losses, 0) + \" team members during \" + action.name);\n }\n }\n } catch (e: any) {\n exceptionAlert(e);\n }\n break;\n }\n case ActionTypes[\"Training\"]: {\n this.stamina -= 0.5 * BladeburnerConstants.BaseStaminaLoss;\n const strExpGain = 30 * player.strength_exp_mult,\n defExpGain = 30 * player.defense_exp_mult,\n dexExpGain = 30 * player.dexterity_exp_mult,\n agiExpGain = 30 * player.agility_exp_mult,\n staminaGain = 0.04 * this.skillMultipliers.stamina;\n player.gainStrengthExp(strExpGain);\n player.gainDefenseExp(defExpGain);\n player.gainDexterityExp(dexExpGain);\n player.gainAgilityExp(agiExpGain);\n this.staminaBonus += staminaGain;\n if (this.logging.general) {\n this.log(\n \"Training completed. Gained: \" +\n formatNumber(strExpGain, 1) +\n \" str exp, \" +\n formatNumber(defExpGain, 1) +\n \" def exp, \" +\n formatNumber(dexExpGain, 1) +\n \" dex exp, \" +\n formatNumber(agiExpGain, 1) +\n \" agi exp, \" +\n formatNumber(staminaGain, 3) +\n \" max stamina\",\n );\n }\n this.startAction(player, this.action); // Repeat action\n break;\n }\n case ActionTypes[\"FieldAnalysis\"]:\n case ActionTypes[\"Field Analysis\"]: {\n // Does not use stamina. Effectiveness depends on hacking, int, and cha\n let eff =\n 0.04 * Math.pow(player.hacking, 0.3) +\n 0.04 * Math.pow(player.intelligence, 0.9) +\n 0.02 * Math.pow(player.charisma, 0.3);\n eff *= player.bladeburner_analysis_mult;\n if (isNaN(eff) || eff < 0) {\n throw new Error(\"Field Analysis Effectiveness calculated to be NaN or negative\");\n }\n const hackingExpGain = 20 * player.hacking_exp_mult;\n const charismaExpGain = 20 * player.charisma_exp_mult;\n const rankGain = 0.1 * BitNodeMultipliers.BladeburnerRank;\n player.gainHackingExp(hackingExpGain);\n player.gainIntelligenceExp(BladeburnerConstants.BaseIntGain);\n player.gainCharismaExp(charismaExpGain);\n this.changeRank(player, rankGain);\n this.getCurrentCity().improvePopulationEstimateByPercentage(eff * this.skillMultipliers.successChanceEstimate);\n if (this.logging.general) {\n this.log(\n `Field analysis completed. Gained ${formatNumber(rankGain, 2)} rank, ` +\n `${formatNumber(hackingExpGain, 1)} hacking exp, and ` +\n `${formatNumber(charismaExpGain, 1)} charisma exp`,\n );\n }\n this.startAction(player, this.action); // Repeat action\n break;\n }\n case ActionTypes[\"Recruitment\"]: {\n const successChance = this.getRecruitmentSuccessChance(player);\n if (Math.random() < successChance) {\n const expGain = 2 * BladeburnerConstants.BaseStatGain * this.actionTimeToComplete;\n player.gainCharismaExp(expGain);\n ++this.teamSize;\n if (this.logging.general) {\n this.log(\"Successfully recruited a team member! Gained \" + formatNumber(expGain, 1) + \" charisma exp\");\n }\n } else {\n const expGain = BladeburnerConstants.BaseStatGain * this.actionTimeToComplete;\n player.gainCharismaExp(expGain);\n if (this.logging.general) {\n this.log(\"Failed to recruit a team member. Gained \" + formatNumber(expGain, 1) + \" charisma exp\");\n }\n }\n this.startAction(player, this.action); // Repeat action\n break;\n }\n case ActionTypes[\"Diplomacy\"]: {\n const eff = this.getDiplomacyEffectiveness(player);\n this.getCurrentCity().chaos *= eff;\n if (this.getCurrentCity().chaos < 0) {\n this.getCurrentCity().chaos = 0;\n }\n if (this.logging.general) {\n this.log(\n `Diplomacy completed. Chaos levels in the current city fell by ${numeralWrapper.formatPercentage(1 - eff)}`,\n );\n }\n this.startAction(player, this.action); // Repeat Action\n break;\n }\n case ActionTypes[\"Hyperbolic Regeneration Chamber\"]: {\n player.regenerateHp(BladeburnerConstants.HrcHpGain);\n\n const staminaGain = this.maxStamina * (BladeburnerConstants.HrcStaminaGain / 100);\n this.stamina = Math.min(this.maxStamina, this.stamina + staminaGain);\n this.startAction(player, this.action);\n if (this.logging.general) {\n this.log(\n `Rested in Hyperbolic Regeneration Chamber. Restored ${\n BladeburnerConstants.HrcHpGain\n } HP and gained ${numeralWrapper.formatStamina(staminaGain)} stamina`,\n );\n }\n break;\n }\n case ActionTypes[\"Incite Violence\"]: {\n for (const contract of Object.keys(this.contracts)) {\n const growthF = Growths[contract];\n if (!growthF) throw new Error(\"trying to generate count for action that doesn't exist? \" + contract);\n this.contracts[contract].count += (60 * 3 * growthF()) / BladeburnerConstants.ActionCountGrowthPeriod;\n }\n for (const operation of Object.keys(this.operations)) {\n const growthF = Growths[operation];\n if (!growthF) throw new Error(\"trying to generate count for action that doesn't exist? \" + operation);\n this.operations[operation].count += (60 * 3 * growthF()) / BladeburnerConstants.ActionCountGrowthPeriod;\n }\n if (this.logging.general) {\n this.log(`Incited violence in the synthoid communities.`);\n }\n for (const cityName of Object.keys(this.cities)) {\n const city = this.cities[cityName];\n city.chaos += 10;\n city.chaos += city.chaos / (Math.log(city.chaos) / Math.log(10));\n }\n\n this.startAction(player, this.action);\n break;\n }\n default:\n console.error(`Bladeburner.completeAction() called for invalid action: ${this.action.type}`);\n break;\n }\n }\n\n changeRank(player: IPlayer, change: number): void {\n if (isNaN(change)) {\n throw new Error(\"NaN passed into Bladeburner.changeRank()\");\n }\n this.rank += change;\n if (this.rank < 0) {\n this.rank = 0;\n }\n this.maxRank = Math.max(this.rank, this.maxRank);\n\n const bladeburnersFactionName = FactionNames.Bladeburners;\n if (factionExists(bladeburnersFactionName)) {\n const bladeburnerFac = Factions[bladeburnersFactionName];\n if (!(bladeburnerFac instanceof Faction)) {\n throw new Error(\n `Could not properly get ${FactionNames.Bladeburners} Faction object in ${FactionNames.Bladeburners} UI Overview Faction button`,\n );\n }\n if (bladeburnerFac.isMember) {\n const favorBonus = 1 + bladeburnerFac.favor / 100;\n bladeburnerFac.playerReputation +=\n BladeburnerConstants.RankToFactionRepFactor * change * player.faction_rep_mult * favorBonus;\n }\n }\n\n // Gain skill points\n const rankNeededForSp = (this.totalSkillPoints + 1) * BladeburnerConstants.RanksPerSkillPoint;\n if (this.maxRank >= rankNeededForSp) {\n // Calculate how many skill points to gain\n const gainedSkillPoints = Math.floor(\n (this.maxRank - rankNeededForSp) / BladeburnerConstants.RanksPerSkillPoint + 1,\n );\n this.skillPoints += gainedSkillPoints;\n this.totalSkillPoints += gainedSkillPoints;\n }\n }\n\n processAction(router: IRouter, player: IPlayer, seconds: number): void {\n if (this.action.type === ActionTypes[\"Idle\"]) return;\n if (this.actionTimeToComplete <= 0) {\n throw new Error(`Invalid actionTimeToComplete value: ${this.actionTimeToComplete}, type; ${this.action.type}`);\n }\n if (!(this.action instanceof ActionIdentifier)) {\n throw new Error(\"Bladeburner.action is not an ActionIdentifier Object\");\n }\n\n // If the previous action went past its completion time, add to the next action\n // This is not added inmediatly in case the automation changes the action\n this.actionTimeCurrent += seconds + this.actionTimeOverflow;\n this.actionTimeOverflow = 0;\n if (this.actionTimeCurrent >= this.actionTimeToComplete) {\n this.actionTimeOverflow = this.actionTimeCurrent - this.actionTimeToComplete;\n return this.completeAction(router, player);\n }\n }\n\n calculateStaminaGainPerSecond(player: IPlayer): number {\n const effAgility = player.agility * this.skillMultipliers.effAgi;\n const maxStaminaBonus = this.maxStamina / BladeburnerConstants.MaxStaminaToGainFactor;\n const gain = (BladeburnerConstants.StaminaGainPerSecond + maxStaminaBonus) * Math.pow(effAgility, 0.17);\n return gain * (this.skillMultipliers.stamina * player.bladeburner_stamina_gain_mult);\n }\n\n calculateMaxStamina(player: IPlayer): void {\n const effAgility = player.agility * this.skillMultipliers.effAgi;\n const maxStamina =\n (Math.pow(effAgility, 0.8) + this.staminaBonus) *\n this.skillMultipliers.stamina *\n player.bladeburner_max_stamina_mult;\n if (this.maxStamina !== maxStamina) {\n const oldMax = this.maxStamina;\n this.maxStamina = maxStamina;\n this.stamina = (this.maxStamina * this.stamina) / oldMax;\n }\n if (isNaN(maxStamina)) {\n throw new Error(\"Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()\");\n }\n }\n\n create(): void {\n this.contracts[\"Tracking\"] = new Contract({\n name: \"Tracking\",\n baseDifficulty: 125,\n difficultyFac: 1.02,\n rewardFac: 1.041,\n rankGain: 0.3,\n hpLoss: 0.5,\n count: getRandomInt(25, 150),\n weights: {\n hack: 0,\n str: 0.05,\n def: 0.05,\n dex: 0.35,\n agi: 0.35,\n cha: 0.1,\n int: 0.05,\n },\n decays: {\n hack: 0,\n str: 0.91,\n def: 0.91,\n dex: 0.91,\n agi: 0.91,\n cha: 0.9,\n int: 1,\n },\n isStealth: true,\n });\n this.contracts[\"Bounty Hunter\"] = new Contract({\n name: \"Bounty Hunter\",\n baseDifficulty: 250,\n difficultyFac: 1.04,\n rewardFac: 1.085,\n rankGain: 0.9,\n hpLoss: 1,\n count: getRandomInt(5, 150),\n weights: {\n hack: 0,\n str: 0.15,\n def: 0.15,\n dex: 0.25,\n agi: 0.25,\n cha: 0.1,\n int: 0.1,\n },\n decays: {\n hack: 0,\n str: 0.91,\n def: 0.91,\n dex: 0.91,\n agi: 0.91,\n cha: 0.8,\n int: 0.9,\n },\n isKill: true,\n });\n this.contracts[\"Retirement\"] = new Contract({\n name: \"Retirement\",\n baseDifficulty: 200,\n difficultyFac: 1.03,\n rewardFac: 1.065,\n rankGain: 0.6,\n hpLoss: 1,\n count: getRandomInt(5, 150),\n weights: {\n hack: 0,\n str: 0.2,\n def: 0.2,\n dex: 0.2,\n agi: 0.2,\n cha: 0.1,\n int: 0.1,\n },\n decays: {\n hack: 0,\n str: 0.91,\n def: 0.91,\n dex: 0.91,\n agi: 0.91,\n cha: 0.8,\n int: 0.9,\n },\n isKill: true,\n });\n\n this.operations[\"Investigation\"] = new Operation({\n name: \"Investigation\",\n baseDifficulty: 400,\n difficultyFac: 1.03,\n rewardFac: 1.07,\n reqdRank: 25,\n rankGain: 2.2,\n rankLoss: 0.2,\n count: getRandomInt(1, 100),\n weights: {\n hack: 0.25,\n str: 0.05,\n def: 0.05,\n dex: 0.2,\n agi: 0.1,\n cha: 0.25,\n int: 0.1,\n },\n decays: {\n hack: 0.85,\n str: 0.9,\n def: 0.9,\n dex: 0.9,\n agi: 0.9,\n cha: 0.7,\n int: 0.9,\n },\n isStealth: true,\n });\n this.operations[\"Undercover Operation\"] = new Operation({\n name: \"Undercover Operation\",\n baseDifficulty: 500,\n difficultyFac: 1.04,\n rewardFac: 1.09,\n reqdRank: 100,\n rankGain: 4.4,\n rankLoss: 0.4,\n hpLoss: 2,\n count: getRandomInt(1, 100),\n weights: {\n hack: 0.2,\n str: 0.05,\n def: 0.05,\n dex: 0.2,\n agi: 0.2,\n cha: 0.2,\n int: 0.1,\n },\n decays: {\n hack: 0.8,\n str: 0.9,\n def: 0.9,\n dex: 0.9,\n agi: 0.9,\n cha: 0.7,\n int: 0.9,\n },\n isStealth: true,\n });\n this.operations[\"Sting Operation\"] = new Operation({\n name: \"Sting Operation\",\n baseDifficulty: 650,\n difficultyFac: 1.04,\n rewardFac: 1.095,\n reqdRank: 500,\n rankGain: 5.5,\n rankLoss: 0.5,\n hpLoss: 2.5,\n count: getRandomInt(1, 150),\n weights: {\n hack: 0.25,\n str: 0.05,\n def: 0.05,\n dex: 0.25,\n agi: 0.1,\n cha: 0.2,\n int: 0.1,\n },\n decays: {\n hack: 0.8,\n str: 0.85,\n def: 0.85,\n dex: 0.85,\n agi: 0.85,\n cha: 0.7,\n int: 0.9,\n },\n isStealth: true,\n });\n this.operations[\"Raid\"] = new Operation({\n name: \"Raid\",\n baseDifficulty: 800,\n difficultyFac: 1.045,\n rewardFac: 1.1,\n reqdRank: 3000,\n rankGain: 55,\n rankLoss: 2.5,\n hpLoss: 50,\n count: getRandomInt(1, 150),\n weights: {\n hack: 0.1,\n str: 0.2,\n def: 0.2,\n dex: 0.2,\n agi: 0.2,\n cha: 0,\n int: 0.1,\n },\n decays: {\n hack: 0.7,\n str: 0.8,\n def: 0.8,\n dex: 0.8,\n agi: 0.8,\n cha: 0,\n int: 0.9,\n },\n isKill: true,\n });\n this.operations[\"Stealth Retirement Operation\"] = new Operation({\n name: \"Stealth Retirement Operation\",\n baseDifficulty: 1000,\n difficultyFac: 1.05,\n rewardFac: 1.11,\n reqdRank: 20e3,\n rankGain: 22,\n rankLoss: 2,\n hpLoss: 10,\n count: getRandomInt(1, 150),\n weights: {\n hack: 0.1,\n str: 0.1,\n def: 0.1,\n dex: 0.3,\n agi: 0.3,\n cha: 0,\n int: 0.1,\n },\n decays: {\n hack: 0.7,\n str: 0.8,\n def: 0.8,\n dex: 0.8,\n agi: 0.8,\n cha: 0,\n int: 0.9,\n },\n isStealth: true,\n isKill: true,\n });\n this.operations[\"Assassination\"] = new Operation({\n name: \"Assassination\",\n baseDifficulty: 1500,\n difficultyFac: 1.06,\n rewardFac: 1.14,\n reqdRank: 50e3,\n rankGain: 44,\n rankLoss: 4,\n hpLoss: 5,\n count: getRandomInt(1, 150),\n weights: {\n hack: 0.1,\n str: 0.1,\n def: 0.1,\n dex: 0.3,\n agi: 0.3,\n cha: 0,\n int: 0.1,\n },\n decays: {\n hack: 0.6,\n str: 0.8,\n def: 0.8,\n dex: 0.8,\n agi: 0.8,\n cha: 0,\n int: 0.8,\n },\n isStealth: true,\n isKill: true,\n });\n }\n\n process(router: IRouter, player: IPlayer): void {\n // Edge race condition when the engine checks the processing counters and attempts to route before the router is initialized.\n if (!router.isInitialized) return;\n\n // Edge case condition...if Operation Daedalus is complete trigger the BitNode\n if (router.page() !== Page.BitVerse && this.blackops.hasOwnProperty(BlackOperationNames.OperationDaedalus)) {\n return router.toBitVerse(false, false);\n }\n\n // If the Player starts doing some other actions, set action to idle and alert\n if (Augmentations[AugmentationNames.BladesSimulacrum].owned === false && player.isWorking) {\n if (this.action.type !== ActionTypes[\"Idle\"]) {\n let msg = \"Your Bladeburner action was cancelled because you started doing something else.\";\n if (this.automateEnabled) {\n msg += `
Your automation was disabled as well. You will have to re-enable it through the Bladeburner console`;\n this.automateEnabled = false;\n }\n if (!Settings.SuppressBladeburnerPopup) {\n dialogBoxCreate(msg);\n }\n }\n this.resetAction();\n }\n\n // If the Player has no Stamina, set action to idle\n if (this.stamina <= 0) {\n this.log(\"Your Bladeburner action was cancelled because your stamina hit 0\");\n this.resetAction();\n }\n\n // A 'tick' for this mechanic is one second (= 5 game cycles)\n if (this.storedCycles >= BladeburnerConstants.CyclesPerSecond) {\n let seconds = Math.floor(this.storedCycles / BladeburnerConstants.CyclesPerSecond);\n seconds = Math.min(seconds, 5); // Max of 5 'ticks'\n this.storedCycles -= seconds * BladeburnerConstants.CyclesPerSecond;\n\n // Stamina\n this.calculateMaxStamina(player);\n this.stamina += this.calculateStaminaGainPerSecond(player) * seconds;\n this.stamina = Math.min(this.maxStamina, this.stamina);\n\n // Count increase for contracts/operations\n for (const contract of Object.values(this.contracts) as Contract[]) {\n const growthF = Growths[contract.name];\n if (growthF === undefined) throw new Error(`growth formula for action '${contract.name}' is undefined`);\n contract.count += (seconds * growthF()) / BladeburnerConstants.ActionCountGrowthPeriod;\n }\n for (const op of Object.values(this.operations) as Operation[]) {\n const growthF = Growths[op.name];\n if (growthF === undefined) throw new Error(`growth formula for action '${op.name}' is undefined`);\n if (growthF !== undefined) {\n op.count += (seconds * growthF()) / BladeburnerConstants.ActionCountGrowthPeriod;\n }\n }\n\n // Chaos goes down very slowly\n for (const cityName of BladeburnerConstants.CityNames) {\n const city = this.cities[cityName];\n if (!(city instanceof City)) {\n throw new Error(\"Invalid City object when processing passive chaos reduction in Bladeburner.process\");\n }\n city.chaos -= 0.0001 * seconds;\n city.chaos = Math.max(0, city.chaos);\n }\n\n // Random Events\n this.randomEventCounter -= seconds;\n if (this.randomEventCounter <= 0) {\n this.randomEvent();\n // Add instead of setting because we might have gone over the required time for the event\n this.randomEventCounter += getRandomInt(240, 600);\n }\n\n this.processAction(router, player, seconds);\n\n // Automation\n if (this.automateEnabled) {\n // Note: Do NOT set this.action = this.automateActionHigh/Low since it creates a reference\n if (this.stamina <= this.automateThreshLow) {\n if (this.action.name !== this.automateActionLow.name || this.action.type !== this.automateActionLow.type) {\n this.action = new ActionIdentifier({\n type: this.automateActionLow.type,\n name: this.automateActionLow.name,\n });\n this.startAction(player, this.action);\n }\n } else if (this.stamina >= this.automateThreshHigh) {\n if (this.action.name !== this.automateActionHigh.name || this.action.type !== this.automateActionHigh.type) {\n this.action = new ActionIdentifier({\n type: this.automateActionHigh.type,\n name: this.automateActionHigh.name,\n });\n this.startAction(player, this.action);\n }\n }\n }\n }\n }\n\n getTypeAndNameFromActionId(actionId: IActionIdentifier): {\n type: string;\n name: string;\n } {\n const res = { type: \"\", name: \"\" };\n const types = Object.keys(ActionTypes);\n for (let i = 0; i < types.length; ++i) {\n if (actionId.type === ActionTypes[types[i]]) {\n res.type = types[i];\n break;\n }\n }\n const gen = [\n \"Training\",\n \"Recruitment\",\n \"FieldAnalysis\",\n \"Field Analysis\",\n \"Diplomacy\",\n \"Hyperbolic Regeneration Chamber\",\n \"Incite Violence\",\n ];\n if (gen.includes(res.type)) {\n res.type = \"General\";\n }\n\n if (res.type == null) {\n res.type = \"Idle\";\n }\n\n res.name = actionId.name != null ? actionId.name : \"Idle\";\n return res;\n }\n\n getContractNamesNetscriptFn(): string[] {\n return Object.keys(this.contracts);\n }\n\n getOperationNamesNetscriptFn(): string[] {\n return Object.keys(this.operations);\n }\n\n getBlackOpNamesNetscriptFn(): string[] {\n return Object.keys(BlackOperations);\n }\n\n getGeneralActionNamesNetscriptFn(): string[] {\n return Object.keys(GeneralActions);\n }\n\n getSkillNamesNetscriptFn(): string[] {\n return Object.keys(Skills);\n }\n\n startActionNetscriptFn(player: IPlayer, type: string, name: string, workerScript: WorkerScript): boolean {\n const errorLogText = `Invalid action: type='${type}' name='${name}'`;\n const actionId = this.getActionIdFromTypeAndName(type, name);\n if (actionId == null) {\n workerScript.log(\"bladeburner.startAction\", () => errorLogText);\n return false;\n }\n\n // Special logic for Black Ops\n if (actionId.type === ActionTypes[\"BlackOp\"]) {\n const canRunOp = this.canAttemptBlackOp(actionId);\n if (!canRunOp.isAvailable) {\n workerScript.log(\"bladeburner.startAction\", () => canRunOp.error + \"\");\n return false;\n }\n }\n\n try {\n this.startAction(player, actionId);\n workerScript.log(\n \"bladeburner.startAction\",\n () => `Starting bladeburner action with type '${type}' and name '${name}'`,\n );\n return true;\n } catch (e: any) {\n this.resetAction();\n workerScript.log(\"bladeburner.startAction\", () => errorLogText);\n return false;\n }\n }\n\n getActionTimeNetscriptFn(player: IPlayer, type: string, name: string, workerScript: WorkerScript): number {\n const errorLogText = `Invalid action: type='${type}' name='${name}'`;\n const actionId = this.getActionIdFromTypeAndName(type, name);\n if (actionId == null) {\n workerScript.log(\"bladeburner.getActionTime\", () => errorLogText);\n return -1;\n }\n\n const actionObj = this.getActionObject(actionId);\n if (actionObj == null) {\n workerScript.log(\"bladeburner.getActionTime\", () => errorLogText);\n return -1;\n }\n\n switch (actionId.type) {\n case ActionTypes[\"Contract\"]:\n case ActionTypes[\"Operation\"]:\n case ActionTypes[\"BlackOp\"]:\n case ActionTypes[\"BlackOperation\"]:\n return actionObj.getActionTime(this) * 1000;\n case ActionTypes[\"Training\"]:\n case ActionTypes[\"Field Analysis\"]:\n case ActionTypes[\"FieldAnalysis\"]:\n return 30000;\n case ActionTypes[\"Recruitment\"]:\n return this.getRecruitmentTime(player) * 1000;\n case ActionTypes[\"Diplomacy\"]:\n case ActionTypes[\"Hyperbolic Regeneration Chamber\"]:\n case ActionTypes[\"Incite Violence\"]:\n return 60000;\n default:\n workerScript.log(\"bladeburner.getActionTime\", () => errorLogText);\n return -1;\n }\n }\n\n getActionEstimatedSuccessChanceNetscriptFn(\n player: IPlayer,\n type: string,\n name: string,\n workerScript: WorkerScript,\n ): [number, number] {\n const errorLogText = `Invalid action: type='${type}' name='${name}'`;\n const actionId = this.getActionIdFromTypeAndName(type, name);\n if (actionId == null) {\n workerScript.log(\"bladeburner.getActionEstimatedSuccessChance\", () => errorLogText);\n return [-1, -1];\n }\n\n const actionObj = this.getActionObject(actionId);\n if (actionObj == null) {\n workerScript.log(\"bladeburner.getActionEstimatedSuccessChance\", () => errorLogText);\n return [-1, -1];\n }\n\n switch (actionId.type) {\n case ActionTypes[\"Contract\"]:\n case ActionTypes[\"Operation\"]:\n case ActionTypes[\"BlackOp\"]:\n case ActionTypes[\"BlackOperation\"]:\n return actionObj.getEstSuccessChance(this);\n case ActionTypes[\"Training\"]:\n case ActionTypes[\"Field Analysis\"]:\n case ActionTypes[\"FieldAnalysis\"]:\n case ActionTypes[\"Diplomacy\"]:\n case ActionTypes[\"Hyperbolic Regeneration Chamber\"]:\n case ActionTypes[\"Incite Violence\"]:\n return [1, 1];\n case ActionTypes[\"Recruitment\"]: {\n const recChance = this.getRecruitmentSuccessChance(player);\n return [recChance, recChance];\n }\n default:\n workerScript.log(\"bladeburner.getActionEstimatedSuccessChance\", () => errorLogText);\n return [-1, -1];\n }\n }\n\n getActionCountRemainingNetscriptFn(type: string, name: string, workerScript: WorkerScript): number {\n const errorLogText = `Invalid action: type='${type}' name='${name}'`;\n const actionId = this.getActionIdFromTypeAndName(type, name);\n if (actionId == null) {\n workerScript.log(\"bladeburner.getActionCountRemaining\", () => errorLogText);\n return -1;\n }\n\n const actionObj = this.getActionObject(actionId);\n if (actionObj == null) {\n workerScript.log(\"bladeburner.getActionCountRemaining\", () => errorLogText);\n return -1;\n }\n\n switch (actionId.type) {\n case ActionTypes[\"Contract\"]:\n case ActionTypes[\"Operation\"]:\n return Math.floor(actionObj.count);\n case ActionTypes[\"BlackOp\"]:\n case ActionTypes[\"BlackOperation\"]:\n if (this.blackops[name] != null) {\n return 0;\n } else {\n return 1;\n }\n case ActionTypes[\"Training\"]:\n case ActionTypes[\"Recruitment\"]:\n case ActionTypes[\"Field Analysis\"]:\n case ActionTypes[\"FieldAnalysis\"]:\n case ActionTypes[\"Diplomacy\"]:\n case ActionTypes[\"Hyperbolic Regeneration Chamber\"]:\n case ActionTypes[\"Incite Violence\"]:\n return Infinity;\n default:\n workerScript.log(\"bladeburner.getActionCountRemaining\", () => errorLogText);\n return -1;\n }\n }\n\n getSkillLevelNetscriptFn(skillName: string, workerScript: WorkerScript): number {\n if (skillName === \"\" || !Skills.hasOwnProperty(skillName)) {\n workerScript.log(\"bladeburner.getSkillLevel\", () => `Invalid skill: '${skillName}'`);\n return -1;\n }\n\n if (this.skills[skillName] == null) {\n return 0;\n } else {\n return this.skills[skillName];\n }\n }\n\n getSkillUpgradeCostNetscriptFn(skillName: string, workerScript: WorkerScript): number {\n if (skillName === \"\" || !Skills.hasOwnProperty(skillName)) {\n workerScript.log(\"bladeburner.getSkillUpgradeCost\", () => `Invalid skill: '${skillName}'`);\n return -1;\n }\n\n const skill = Skills[skillName];\n if (this.skills[skillName] == null) {\n return skill.calculateCost(0);\n } else {\n return skill.calculateCost(this.skills[skillName]);\n }\n }\n\n upgradeSkillNetscriptFn(skillName: string, workerScript: WorkerScript): boolean {\n const errorLogText = `Invalid skill: '${skillName}'`;\n if (!Skills.hasOwnProperty(skillName)) {\n workerScript.log(\"bladeburner.upgradeSkill\", () => errorLogText);\n return false;\n }\n\n const skill = Skills[skillName];\n let currentLevel = 0;\n if (this.skills[skillName] && !isNaN(this.skills[skillName])) {\n currentLevel = this.skills[skillName];\n }\n const cost = skill.calculateCost(currentLevel);\n\n if (skill.maxLvl && currentLevel >= skill.maxLvl) {\n workerScript.log(\"bladeburner.upgradeSkill\", () => `Skill '${skillName}' is already maxed.`);\n return false;\n }\n\n if (this.skillPoints < cost) {\n workerScript.log(\n \"bladeburner.upgradeSkill\",\n () =>\n `You do not have enough skill points to upgrade ${skillName} (You have ${this.skillPoints}, you need ${cost})`,\n );\n return false;\n }\n\n this.skillPoints -= cost;\n this.upgradeSkill(skill);\n workerScript.log(\"bladeburner.upgradeSkill\", () => `'${skillName}' upgraded to level ${this.skills[skillName]}`);\n return true;\n }\n\n getTeamSizeNetscriptFn(type: string, name: string, workerScript: WorkerScript): number {\n if (type === \"\" && name === \"\") {\n return this.teamSize;\n }\n\n const errorLogText = `Invalid action: type='${type}' name='${name}'`;\n const actionId = this.getActionIdFromTypeAndName(type, name);\n if (actionId == null) {\n workerScript.log(\"bladeburner.getTeamSize\", () => errorLogText);\n return -1;\n }\n\n const actionObj = this.getActionObject(actionId);\n if (actionObj == null) {\n workerScript.log(\"bladeburner.getTeamSize\", () => errorLogText);\n return -1;\n }\n\n if (\n actionId.type === ActionTypes[\"Operation\"] ||\n actionId.type === ActionTypes[\"BlackOp\"] ||\n actionId.type === ActionTypes[\"BlackOperation\"]\n ) {\n return actionObj.teamCount;\n } else {\n return 0;\n }\n }\n\n setTeamSizeNetscriptFn(type: string, name: string, size: number, workerScript: WorkerScript): number {\n const errorLogText = `Invalid action: type='${type}' name='${name}'`;\n const actionId = this.getActionIdFromTypeAndName(type, name);\n if (actionId == null) {\n workerScript.log(\"bladeburner.setTeamSize\", () => errorLogText);\n return -1;\n }\n\n if (\n actionId.type !== ActionTypes[\"Operation\"] &&\n actionId.type !== ActionTypes[\"BlackOp\"] &&\n actionId.type !== ActionTypes[\"BlackOperation\"]\n ) {\n workerScript.log(\"bladeburner.setTeamSize\", () => \"Only valid for 'Operations' and 'BlackOps'\");\n return -1;\n }\n\n const actionObj = this.getActionObject(actionId);\n if (actionObj == null) {\n workerScript.log(\"bladeburner.setTeamSize\", () => errorLogText);\n return -1;\n }\n\n let sanitizedSize = Math.round(size);\n if (isNaN(sanitizedSize) || sanitizedSize < 0) {\n workerScript.log(\"bladeburner.setTeamSize\", () => `Invalid size: ${size}`);\n return -1;\n }\n if (this.teamSize < sanitizedSize) {\n sanitizedSize = this.teamSize;\n }\n actionObj.teamCount = sanitizedSize;\n workerScript.log(\"bladeburner.setTeamSize\", () => `Team size for '${name}' set to ${sanitizedSize}.`);\n return sanitizedSize;\n }\n\n joinBladeburnerFactionNetscriptFn(workerScript: WorkerScript): boolean {\n const bladeburnerFac = Factions[FactionNames.Bladeburners];\n if (bladeburnerFac.isMember) {\n return true;\n } else if (this.rank >= BladeburnerConstants.RankNeededForFaction) {\n joinFaction(bladeburnerFac);\n workerScript.log(\"bladeburner.joinBladeburnerFaction\", () => `Joined ${FactionNames.Bladeburners} faction.`);\n return true;\n } else {\n workerScript.log(\n \"bladeburner.joinBladeburnerFaction\",\n () => `You do not have the required rank (${this.rank}/${BladeburnerConstants.RankNeededForFaction}).`,\n );\n return false;\n }\n }\n\n /**\n * Serialize the current object to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"Bladeburner\", this);\n }\n\n /**\n * Initiatizes a Bladeburner object from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Bladeburner {\n return Generic_fromJSON(Bladeburner, value.data);\n }\n}\n\nReviver.constructors.Bladeburner = Bladeburner;\n","import { CompanyPosition } from \"./CompanyPosition\";\nimport * as posNames from \"./data/companypositionnames\";\nimport { favorToRep, repToFavor } from \"../Faction/formulas/favor\";\n\nimport { IMap } from \"../types\";\n\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\n\nexport interface IConstructorParams {\n name: string;\n info: string;\n companyPositions: IMap;\n expMultiplier: number;\n salaryMultiplier: number;\n jobStatReqOffset: number;\n isMegacorp?: boolean;\n}\n\nconst DefaultConstructorParams: IConstructorParams = {\n name: \"\",\n info: \"\",\n companyPositions: {},\n expMultiplier: 1,\n salaryMultiplier: 1,\n jobStatReqOffset: 0,\n};\n\nexport class Company {\n /**\n * Company name\n */\n name: string;\n\n /**\n * Description and general information about company\n */\n info: string;\n\n /**\n * Has faction associated.\n */\n isMegacorp: boolean;\n\n /**\n * Object that holds all available positions in this Company.\n * Position names are held in keys.\n * The values for the keys don't matter, but we'll make them booleans\n *\n * Must match names of Company Positions, defined in data/companypositionnames.ts\n */\n companyPositions: IMap;\n\n /**\n * Company-specific multiplier for earnings\n */\n expMultiplier: number;\n salaryMultiplier: number;\n\n /**\n * The additional levels of stats you need to quality for a job\n * in this company.\n *\n * For example, the base stat requirement for an intern position is 1.\n * But if a company has a offset of 200, then you would need stat(s) of 201\n */\n jobStatReqOffset: number;\n\n /**\n * Properties to track the player's progress in this company\n */\n isPlayerEmployed: boolean;\n playerReputation: number;\n favor: number;\n\n constructor(p: IConstructorParams = DefaultConstructorParams) {\n this.name = p.name;\n this.info = p.info;\n this.companyPositions = p.companyPositions;\n this.expMultiplier = p.expMultiplier;\n this.salaryMultiplier = p.salaryMultiplier;\n this.jobStatReqOffset = p.jobStatReqOffset;\n\n this.isPlayerEmployed = false;\n this.playerReputation = 1;\n this.favor = 0;\n this.isMegacorp = false;\n if (p.isMegacorp) this.isMegacorp = true;\n }\n\n hasPosition(pos: CompanyPosition | string): boolean {\n if (pos instanceof CompanyPosition) {\n return this.companyPositions[pos.name] != null;\n } else {\n return this.companyPositions[pos] != null;\n }\n }\n\n hasAgentPositions(): boolean {\n return this.companyPositions[posNames.AgentCompanyPositions[0]] != null;\n }\n\n hasBusinessConsultantPositions(): boolean {\n return this.companyPositions[posNames.BusinessConsultantCompanyPositions[0]] != null;\n }\n\n hasBusinessPositions(): boolean {\n return this.companyPositions[posNames.BusinessCompanyPositions[0]] != null;\n }\n\n hasEmployeePositions(): boolean {\n return this.companyPositions[posNames.MiscCompanyPositions[1]] != null;\n }\n\n hasITPositions(): boolean {\n return this.companyPositions[posNames.ITCompanyPositions[0]] != null;\n }\n\n hasSecurityPositions(): boolean {\n return this.companyPositions[posNames.SecurityCompanyPositions[2]] != null;\n }\n\n hasSoftwareConsultantPositions(): boolean {\n return this.companyPositions[posNames.SoftwareConsultantCompanyPositions[0]] != null;\n }\n\n hasSoftwarePositions(): boolean {\n return this.companyPositions[posNames.SoftwareCompanyPositions[0]] != null;\n }\n\n hasWaiterPositions(): boolean {\n return this.companyPositions[posNames.MiscCompanyPositions[0]] != null;\n }\n\n gainFavor(): void {\n if (this.favor == null) {\n this.favor = 0;\n }\n this.favor += this.getFavorGain();\n }\n\n getFavorGain(): number {\n if (this.favor == null) {\n this.favor = 0;\n }\n const storedRep = Math.max(0, favorToRep(this.favor));\n const totalRep = storedRep + this.playerReputation;\n const newFavor = repToFavor(totalRep);\n return newFavor - this.favor;\n }\n\n /**\n * Serialize the current object to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"Company\", this);\n }\n\n /**\n * Initiatizes a Company from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Company {\n return Generic_fromJSON(Company, value.data);\n }\n}\n\nReviver.constructors.Company = Company;\n","import { Material } from \"./Material\";\nimport { ICorporation } from \"./ICorporation\";\nimport { IIndustry } from \"./IIndustry\";\nimport { MaterialSizes } from \"./MaterialSizes\";\nimport { IMap } from \"../types\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\nimport { exceptionAlert } from \"../utils/helpers/exceptionAlert\";\n\ninterface IConstructorParams {\n corp?: ICorporation;\n industry?: IIndustry;\n loc?: string;\n size?: number;\n}\n\nexport class Warehouse {\n // Warehouse's level, which affects its maximum size\n level = 1;\n\n // City that this Warehouse is in\n loc: string;\n\n // Map of Materials held by this Warehouse\n materials: IMap;\n\n // Maximum amount warehouse can hold\n size: number;\n\n // Amount of space currently used by warehouse\n sizeUsed = 0;\n\n // Whether Smart Supply is enabled for this Industry (the Industry that this Warehouse is for)\n smartSupplyEnabled = false;\n\n // Decide if smart supply should use the materials already in the warehouse when deciding on the amount to buy.\n smartSupplyUseLeftovers: { [key: string]: boolean | undefined } = {};\n\n // Stores the amount of product to be produced. Used for Smart Supply unlock.\n // The production tracked by smart supply is always based on the previous cycle,\n // so it will always trail the \"true\" production by 1 cycle\n smartSupplyStore = 0;\n\n constructor(params: IConstructorParams = {}) {\n this.loc = params.loc ? params.loc : \"\";\n this.size = params.size ? params.size : 0;\n\n this.materials = {\n Water: new Material({ name: \"Water\" }),\n Energy: new Material({ name: \"Energy\" }),\n Food: new Material({ name: \"Food\" }),\n Plants: new Material({ name: \"Plants\" }),\n Metal: new Material({ name: \"Metal\" }),\n Hardware: new Material({ name: \"Hardware\" }),\n Chemicals: new Material({ name: \"Chemicals\" }),\n Drugs: new Material({ name: \"Drugs\" }),\n Robots: new Material({ name: \"Robots\" }),\n AICores: new Material({ name: \"AI Cores\" }),\n RealEstate: new Material({ name: \"Real Estate\" }),\n };\n\n this.smartSupplyUseLeftovers = {\n Water: true,\n Energy: true,\n Food: true,\n Plants: true,\n Metal: true,\n Hardware: true,\n Chemicals: true,\n Drugs: true,\n Robots: true,\n AICores: true,\n RealEstate: true,\n };\n\n if (params.corp && params.industry) {\n this.updateSize(params.corp, params.industry);\n }\n\n // Default smart supply to being enabled if the upgrade is unlocked\n if (params.corp?.unlockUpgrades[1]) {\n this.smartSupplyEnabled = true;\n }\n }\n\n // Re-calculate how much space is being used by this Warehouse\n updateMaterialSizeUsed(): void {\n this.sizeUsed = 0;\n for (const matName of Object.keys(this.materials)) {\n const mat = this.materials[matName];\n if (MaterialSizes.hasOwnProperty(matName)) {\n this.sizeUsed += mat.qty * MaterialSizes[matName];\n }\n }\n if (this.sizeUsed > this.size) {\n console.warn(\"Warehouse size used greater than capacity, something went wrong\");\n }\n }\n\n updateSize(corporation: ICorporation, industry: IIndustry): void {\n try {\n this.size = this.level * 100 * corporation.getStorageMultiplier() * industry.getStorageMultiplier();\n } catch (e: any) {\n exceptionAlert(e);\n }\n }\n\n // Serialize the current object to a JSON save state.\n toJSON(): any {\n return Generic_toJSON(\"Warehouse\", this);\n }\n\n // Initiatizes a Warehouse object from a JSON save state.\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Warehouse {\n return Generic_fromJSON(Warehouse, value.data);\n }\n}\n\nReviver.constructors.Warehouse = Warehouse;\n","import { gangMemberTasksMetadata } from \"./data/tasks\";\nimport { GangMemberTask } from \"./GangMemberTask\";\n\nexport const GangMemberTasks: {\n [key: string]: GangMemberTask;\n} = {};\n\n(function () {\n gangMemberTasksMetadata.forEach((e) => {\n GangMemberTasks[e.name] = new GangMemberTask(e.name, e.desc, e.isHacking, e.isCombat, e.params);\n });\n})();\n","/**\n * Map of all Hash Upgrades\n * Key = Hash name, Value = HashUpgrade object\n */\nimport { HashUpgrade, IConstructorParams } from \"./HashUpgrade\";\nimport { HashUpgradesMetadata } from \"./data/HashUpgradesMetadata\";\nimport { IMap } from \"../types\";\n\nexport const HashUpgrades: IMap = {};\n\nfunction createHashUpgrade(p: IConstructorParams): void {\n HashUpgrades[p.name] = new HashUpgrade(p);\n}\n\nfor (const metadata of HashUpgradesMetadata) {\n createHashUpgrade(metadata);\n}\n","import { FragmentType } from \"./FragmentType\";\nimport { Shapes } from \"./data/Shapes\";\n\nexport const Fragments: Fragment[] = [];\n\nexport class Fragment {\n id: number;\n shape: boolean[][];\n type: FragmentType;\n power: number;\n limit: number;\n\n constructor(id: number, shape: boolean[][], type: FragmentType, power: number, limit: number) {\n this.id = id;\n this.shape = shape;\n this.type = type;\n this.power = power;\n this.limit = limit;\n }\n\n fullAt(x: number, y: number, rotation: number): boolean {\n if (y < 0) return false;\n if (y >= this.height(rotation)) return false;\n if (x < 0) return false;\n if (x >= this.width(rotation)) return false;\n // start xy, modifier xy\n let [sx, sy, mx, my] = [0, 0, 1, 1];\n if (rotation === 1) {\n [sx, sy, mx, my] = [this.width(rotation) - 1, 0, -1, 1];\n } else if (rotation === 2) {\n [sx, sy, mx, my] = [this.width(rotation) - 1, this.height(rotation) - 1, -1, -1];\n } else if (rotation === 3) {\n [sx, sy, mx, my] = [0, this.height(rotation) - 1, 1, -1];\n }\n let [qx, qy] = [sx + mx * x, sy + my * y];\n if (rotation % 2 === 1) [qx, qy] = [qy, qx];\n return this.shape[qy][qx];\n }\n\n width(rotation: number): number {\n if (rotation % 2 === 0) return this.shape[0].length;\n return this.shape.length;\n }\n\n height(rotation: number): number {\n if (rotation % 2 === 0) return this.shape.length;\n return this.shape[0].length;\n }\n\n // List of direct neighboors of this fragment.\n neighboors(rotation: number): number[][] {\n const candidates: number[][] = [];\n\n const add = (x: number, y: number): void => {\n if (this.fullAt(x, y, rotation)) return;\n if (candidates.some((coord) => coord[0] === x && coord[1] === y)) return;\n candidates.push([x, y]);\n };\n for (let y = 0; y < this.height(rotation); y++) {\n for (let x = 0; x < this.width(rotation); x++) {\n // This cell is full, add all it's neighboors.\n if (!this.fullAt(x, y, rotation)) continue;\n add(x - 1, y);\n add(x + 1, y);\n add(x, y - 1);\n add(x, y + 1);\n }\n }\n const cells: number[][] = [];\n for (const candidate of candidates) {\n if (cells.some((cell) => cell[0] === candidate[0] && cell[1] === candidate[1])) continue;\n cells.push(candidate);\n }\n\n return cells;\n }\n\n copy(): Fragment {\n return new Fragment(\n this.id,\n this.shape.map((a) => a.slice()),\n this.type,\n this.power,\n this.limit,\n );\n }\n}\n\nexport function FragmentById(id: number): Fragment | null {\n for (const fragment of Fragments) {\n if (fragment.id === id) return fragment;\n }\n return null;\n}\n\n(function () {\n const _ = false;\n const X = true;\n Fragments.push(\n new Fragment(\n 0, // id\n Shapes.S,\n FragmentType.Hacking, // type\n 1,\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 1, // id\n Shapes.Z,\n FragmentType.Hacking, // type\n 1,\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 5, // id\n Shapes.T,\n FragmentType.HackingSpeed, // type\n 1.3,\n 1, // limit\n ),\n );\n\n Fragments.push(\n new Fragment(\n 6, // id\n Shapes.I,\n FragmentType.HackingMoney, // type\n 2, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 7, // id\n Shapes.J,\n FragmentType.HackingGrow, // type\n 0.5, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 10, // id\n Shapes.T,\n FragmentType.Strength, // type\n 2, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 12, // id\n Shapes.L,\n FragmentType.Defense, // type\n 2, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 14, // id\n Shapes.L,\n FragmentType.Dexterity, // type\n 2, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 16, // id\n Shapes.S,\n FragmentType.Agility, // type\n 2, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 18, // id\n Shapes.S,\n FragmentType.Charisma, // type\n 3, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 20, // id\n Shapes.I,\n FragmentType.HacknetMoney, // type\n 1, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 21, // id\n Shapes.O,\n FragmentType.HacknetCost, // type\n 2, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 25, // id\n Shapes.J,\n FragmentType.Rep, // type\n 0.5, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 27, // id\n Shapes.J,\n FragmentType.WorkMoney, // type\n 10, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 28, // id\n Shapes.L,\n FragmentType.Crime, // type\n 2, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 30, // id\n Shapes.S,\n FragmentType.Bladeburner, // type\n 0.4, // power\n 1, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 100, // id\n [\n // shape\n [_, X, X],\n [X, X, _],\n [_, X, _],\n ],\n FragmentType.Booster, // type\n 1.1, // power\n 99, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 101, // id\n [\n // shape\n [X, X, X, X],\n [X, _, _, _],\n ],\n FragmentType.Booster, // type\n 1.1, // power\n 99, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 102, // id\n [\n // shape\n [_, X, X, X],\n [X, X, _, _],\n ],\n FragmentType.Booster, // type\n 1.1, // power\n 99, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 103, // id\n [\n // shape\n [X, X, X, _],\n [_, _, X, X],\n ],\n FragmentType.Booster, // type\n 1.1, // power\n 99, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 104, // id\n [\n // shape\n [_, X, X],\n [_, X, _],\n [X, X, _],\n ],\n FragmentType.Booster, // type\n 1.1, // power\n 99, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 105, // id\n [\n // shape\n [_, _, X],\n [_, X, X],\n [X, X, _],\n ],\n FragmentType.Booster, // type\n 1.1, // power\n 99, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 106, // id\n [\n // shape\n [X, _, _],\n [X, X, X],\n [X, _, _],\n ],\n FragmentType.Booster, // type\n 1.1, // power\n 99, // limit\n ),\n );\n Fragments.push(\n new Fragment(\n 107, // id\n [\n // shape\n [_, X, _],\n [X, X, X],\n [_, X, _],\n ],\n FragmentType.Booster, // type\n 1.1, // power\n 99, // limit\n ),\n );\n})();\n\nexport const NoneFragment = new Fragment(-2, [], FragmentType.None, 0, Infinity);\nexport const DeleteFragment = new Fragment(-2, [], FragmentType.Delete, 0, Infinity);\n","import { IPlayer } from \"../IPlayer\";\nimport { Faction } from \"../../Faction/Faction\";\nimport { CONSTANTS } from \"../../Constants\";\nimport { BitNodeMultipliers } from \"../../BitNode/BitNodeMultipliers\";\nimport { CalculateShareMult } from \"../../NetworkShare/Share\";\n\nfunction mult(f: Faction): number {\n let favorMult = 1 + f.favor / 100;\n if (isNaN(favorMult)) {\n favorMult = 1;\n }\n return favorMult * BitNodeMultipliers.FactionWorkRepGain;\n}\n\nexport function getHackingWorkRepGain(p: IPlayer, f: Faction): number {\n return (\n ((p.hacking + p.intelligence / 3) / CONSTANTS.MaxSkillLevel) *\n p.faction_rep_mult *\n p.getIntelligenceBonus(1) *\n mult(f) *\n CalculateShareMult()\n );\n}\n\nexport function getFactionSecurityWorkRepGain(p: IPlayer, f: Faction): number {\n const t =\n (0.9 * (p.strength + p.defense + p.dexterity + p.agility + (p.hacking + p.intelligence) * CalculateShareMult())) /\n CONSTANTS.MaxSkillLevel /\n 4.5;\n return t * p.faction_rep_mult * mult(f) * p.getIntelligenceBonus(1);\n}\n\nexport function getFactionFieldWorkRepGain(p: IPlayer, f: Faction): number {\n const t =\n (0.9 *\n (p.strength +\n p.defense +\n p.dexterity +\n p.agility +\n p.charisma +\n (p.hacking + p.intelligence) * CalculateShareMult())) /\n CONSTANTS.MaxSkillLevel /\n 5.5;\n return t * p.faction_rep_mult * mult(f) * p.getIntelligenceBonus(1);\n}\n","/**\n * Functions for buying/selling stocks. There are four functions total, two for\n * long positions and two for short positions.\n */\nimport { Stock } from \"./Stock\";\nimport {\n getBuyTransactionCost,\n getSellTransactionGain,\n processTransactionForecastMovement,\n} from \"./StockMarketHelpers\";\n\nimport { PositionTypes } from \"./data/PositionTypes\";\n\nimport { CONSTANTS } from \"../Constants\";\nimport { WorkerScript } from \"../Netscript/WorkerScript\";\nimport { Player } from \"../Player\";\n\nimport { numeralWrapper } from \"../ui/numeralFormat\";\nimport { Money } from \"../ui/React/Money\";\n\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\n\nimport * as React from \"react\";\n\n/**\n * Each function takes an optional config object as its last argument\n */\ninterface IOptions {\n rerenderFn?: () => void;\n suppressDialog?: boolean;\n}\n\n/**\n * Attempt to buy a stock in the long position\n * @param {Stock} stock - Stock to buy\n * @param {number} shares - Number of shares to buy\n * @param {WorkerScript} workerScript - If this is being called through Netscript\n * @param opts - Optional configuration for this function's behavior. See top of file\n * @returns {boolean} - true if successful, false otherwise\n */\nexport function buyStock(\n stock: Stock,\n shares: number,\n workerScript: WorkerScript | null = null,\n opts: IOptions = {},\n): boolean {\n // Validate arguments\n shares = Math.round(shares);\n if (shares <= 0) {\n return false;\n }\n if (stock == null || isNaN(shares)) {\n if (workerScript) {\n workerScript.log(\"stock.buy\", () => `Invalid arguments: stock='${stock}' shares='${shares}'`);\n } else if (opts.suppressDialog !== true) {\n dialogBoxCreate(\"Failed to buy stock. This may be a bug, contact developer\");\n }\n\n return false;\n }\n\n // Does player have enough money?\n const totalPrice = getBuyTransactionCost(stock, shares, PositionTypes.Long);\n if (totalPrice == null) {\n return false;\n }\n if (Player.money < totalPrice) {\n if (workerScript) {\n workerScript.log(\n \"stock.buy\",\n () =>\n `You do not have enough money to purchase this position. You need ${numeralWrapper.formatMoney(totalPrice)}.`,\n );\n } else if (opts.suppressDialog !== true) {\n dialogBoxCreate(\n <>\n You do not have enough money to purchase this. You need \n >,\n );\n }\n\n return false;\n }\n\n // Would this purchase exceed the maximum number of shares?\n if (shares + stock.playerShares + stock.playerShortShares > stock.maxShares) {\n if (workerScript) {\n workerScript.log(\n \"stock.buy\",\n () =>\n `Purchasing '${shares + stock.playerShares + stock.playerShortShares}' shares would exceed ${\n stock.symbol\n }'s maximum (${stock.maxShares}) number of shares`,\n );\n } else if (opts.suppressDialog !== true) {\n dialogBoxCreate(\n `You cannot purchase this many shares. ${stock.symbol} has a maximum of ${numeralWrapper.formatShares(\n stock.maxShares,\n )} shares.`,\n );\n }\n\n return false;\n }\n\n const origTotal = stock.playerShares * stock.playerAvgPx;\n Player.loseMoney(totalPrice, \"stock\");\n const newTotal = origTotal + totalPrice - CONSTANTS.StockMarketCommission;\n stock.playerShares = Math.round(stock.playerShares + shares);\n stock.playerAvgPx = newTotal / stock.playerShares;\n processTransactionForecastMovement(stock, shares);\n if (opts.rerenderFn != null && typeof opts.rerenderFn === \"function\") {\n opts.rerenderFn();\n }\n\n if (workerScript) {\n const resultTxt = `Bought ${numeralWrapper.formatShares(shares)} shares of ${\n stock.symbol\n } for ${numeralWrapper.formatMoney(totalPrice)}. Paid ${numeralWrapper.formatMoney(\n CONSTANTS.StockMarketCommission,\n )} in commission fees.`;\n workerScript.log(\"stock.buy\", () => resultTxt);\n } else if (opts.suppressDialog !== true) {\n dialogBoxCreate(\n <>\n Bought {numeralWrapper.formatShares(shares)} shares of {stock.symbol} for . Paid{\" \"}\n in commission fees.\n >,\n );\n }\n\n return true;\n}\n\n/**\n * Attempt to sell a stock in the long position\n * @param {Stock} stock - Stock to sell\n * @param {number} shares - Number of shares to sell\n * @param {WorkerScript} workerScript - If this is being called through Netscript\n * @param opts - Optional configuration for this function's behavior. See top of file\n * returns {boolean} - true if successfully sells given number of shares OR MAX owned, false otherwise\n */\nexport function sellStock(\n stock: Stock,\n shares: number,\n workerScript: WorkerScript | null = null,\n opts: IOptions = {},\n): boolean {\n // Sanitize/Validate arguments\n if (stock == null || shares < 0 || isNaN(shares)) {\n if (workerScript) {\n workerScript.log(\"stock.sell\", () => `Invalid arguments: stock='${stock}' shares='${shares}'`);\n } else if (opts.suppressDialog !== true) {\n dialogBoxCreate(\n \"Failed to sell stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, contact developer\",\n );\n }\n\n return false;\n }\n shares = Math.round(shares);\n if (shares > stock.playerShares) {\n shares = stock.playerShares;\n }\n if (shares === 0) {\n return false;\n }\n\n const gains = getSellTransactionGain(stock, shares, PositionTypes.Long);\n if (gains == null) {\n return false;\n }\n let netProfit = gains - stock.playerAvgPx * shares;\n if (isNaN(netProfit)) {\n netProfit = 0;\n }\n Player.gainMoney(gains, \"stock\");\n if (workerScript) {\n workerScript.scriptRef.onlineMoneyMade += netProfit;\n Player.scriptProdSinceLastAug += netProfit;\n }\n\n stock.playerShares = Math.round(stock.playerShares - shares);\n if (stock.playerShares === 0) {\n stock.playerAvgPx = 0;\n }\n\n processTransactionForecastMovement(stock, shares);\n\n if (opts.rerenderFn != null && typeof opts.rerenderFn === \"function\") {\n opts.rerenderFn();\n }\n\n if (workerScript) {\n const resultTxt =\n `Sold ${numeralWrapper.formatShares(shares)} shares of ${stock.symbol}. ` +\n `After commissions, you gained a total of ${numeralWrapper.formatMoney(gains)}.`;\n workerScript.log(\"stock.sell\", () => resultTxt);\n } else if (opts.suppressDialog !== true) {\n dialogBoxCreate(\n <>\n Sold {numeralWrapper.formatShares(shares)} shares of {stock.symbol}. After commissions, you gained a total of{\" \"}\n .\n >,\n );\n }\n\n return true;\n}\n\n/**\n * Attempt to buy a stock in the short position\n * @param {Stock} stock - Stock to sell\n * @param {number} shares - Number of shares to short\n * @param {WorkerScript} workerScript - If this is being called through Netscript\n * @param opts - Optional configuration for this function's behavior. See top of file\n * @returns {boolean} - true if successful, false otherwise\n */\nexport function shortStock(\n stock: Stock,\n shares: number,\n workerScript: WorkerScript | null = null,\n opts: IOptions = {},\n): boolean {\n // Validate arguments\n shares = Math.round(shares);\n if (shares <= 0) {\n return false;\n }\n if (stock == null || isNaN(shares)) {\n if (workerScript) {\n workerScript.log(\"stock.short\", () => `Invalid arguments: stock='${stock}' shares='${shares}'`);\n } else if (opts.suppressDialog !== true) {\n dialogBoxCreate(\n \"Failed to initiate a short position in a stock. This is probably \" +\n \"due to an invalid quantity. Otherwise, this may be a bug, so contact developer\",\n );\n }\n return false;\n }\n\n // Does the player have enough money?\n const totalPrice = getBuyTransactionCost(stock, shares, PositionTypes.Short);\n if (totalPrice == null) {\n return false;\n }\n if (Player.money < totalPrice) {\n if (workerScript) {\n workerScript.log(\n \"stock.short\",\n () =>\n \"You do not have enough \" +\n \"money to purchase this short position. You need \" +\n numeralWrapper.formatMoney(totalPrice),\n );\n } else if (opts.suppressDialog !== true) {\n dialogBoxCreate(\n <>\n You do not have enough money to purchase this short position. You need \n >,\n );\n }\n\n return false;\n }\n\n // Would this purchase exceed the maximum number of shares?\n if (shares + stock.playerShares + stock.playerShortShares > stock.maxShares) {\n if (workerScript) {\n workerScript.log(\n \"stock.short\",\n () =>\n `This '${shares + stock.playerShares + stock.playerShortShares}' short shares would exceed ${\n stock.symbol\n }'s maximum (${stock.maxShares}) number of shares.`,\n );\n } else if (opts.suppressDialog !== true) {\n dialogBoxCreate(\n `You cannot purchase this many shares. ${stock.symbol} has a maximum of ${stock.maxShares} shares.`,\n );\n }\n\n return false;\n }\n\n const origTotal = stock.playerShortShares * stock.playerAvgShortPx;\n Player.loseMoney(totalPrice, \"stock\");\n const newTotal = origTotal + totalPrice - CONSTANTS.StockMarketCommission;\n stock.playerShortShares = Math.round(stock.playerShortShares + shares);\n stock.playerAvgShortPx = newTotal / stock.playerShortShares;\n processTransactionForecastMovement(stock, shares);\n\n if (opts.rerenderFn != null && typeof opts.rerenderFn === \"function\") {\n opts.rerenderFn();\n }\n\n if (workerScript) {\n const resultTxt =\n `Bought a short position of ${numeralWrapper.formatShares(shares)} shares of ${stock.symbol} ` +\n `for ${numeralWrapper.formatMoney(totalPrice)}. Paid ${numeralWrapper.formatMoney(\n CONSTANTS.StockMarketCommission,\n )} ` +\n `in commission fees.`;\n workerScript.log(\"stock.short\", () => resultTxt);\n } else if (!opts.suppressDialog) {\n dialogBoxCreate(\n <>\n Bought a short position of {numeralWrapper.formatShares(shares)} shares of {stock.symbol} for{\" \"}\n . Paid in commission fees.\n >,\n );\n }\n\n return true;\n}\n\n/**\n * Attempt to sell a stock in the short position\n * @param {Stock} stock - Stock to sell\n * @param {number} shares - Number of shares to sell\n * @param {WorkerScript} workerScript - If this is being called through Netscript\n * @param opts - Optional configuration for this function's behavior. See top of file\n * @returns {boolean} true if successfully sells given amount OR max owned, false otherwise\n */\nexport function sellShort(\n stock: Stock,\n shares: number,\n workerScript: WorkerScript | null = null,\n opts: IOptions = {},\n): boolean {\n if (stock == null || isNaN(shares) || shares < 0) {\n if (workerScript) {\n workerScript.log(\"stock.sellShort\", () => `Invalid arguments: stock='${stock}' shares='${shares}'`);\n } else if (!opts.suppressDialog) {\n dialogBoxCreate(\n \"Failed to sell a short position in a stock. This is probably \" +\n \"due to an invalid quantity. Otherwise, this may be a bug, so contact developer\",\n );\n }\n\n return false;\n }\n shares = Math.round(shares);\n if (shares > stock.playerShortShares) {\n shares = stock.playerShortShares;\n }\n if (shares === 0) {\n return false;\n }\n\n const origCost = shares * stock.playerAvgShortPx;\n const totalGain = getSellTransactionGain(stock, shares, PositionTypes.Short);\n if (totalGain == null || isNaN(totalGain) || origCost == null) {\n if (workerScript) {\n workerScript.log(\n \"stock.sellShort\",\n () => `Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug`,\n );\n } else if (!opts.suppressDialog) {\n dialogBoxCreate(\n `Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug`,\n );\n }\n\n return false;\n }\n let profit = totalGain - origCost;\n if (isNaN(profit)) {\n profit = 0;\n }\n Player.gainMoney(totalGain, \"stock\");\n if (workerScript) {\n workerScript.scriptRef.onlineMoneyMade += profit;\n Player.scriptProdSinceLastAug += profit;\n }\n\n stock.playerShortShares = Math.round(stock.playerShortShares - shares);\n if (stock.playerShortShares === 0) {\n stock.playerAvgShortPx = 0;\n }\n processTransactionForecastMovement(stock, shares);\n\n if (opts.rerenderFn != null && typeof opts.rerenderFn === \"function\") {\n opts.rerenderFn();\n }\n\n if (workerScript) {\n const resultTxt =\n `Sold your short position of ${numeralWrapper.formatShares(shares)} shares of ${stock.symbol}. ` +\n `After commissions, you gained a total of ${numeralWrapper.formatMoney(totalGain)}`;\n workerScript.log(\"stock.sellShort\", () => resultTxt);\n } else if (!opts.suppressDialog) {\n dialogBoxCreate(\n <>\n Sold your short position of {numeralWrapper.formatShares(shares)} shares of {stock.symbol}. After commissions,\n you gained a total of \n >,\n );\n }\n\n return true;\n}\n","import React from \"react\";\nimport { TextFile } from \"../TextFile\";\nimport { Script } from \"../Script/Script\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { IRouter } from \"../ui/Router\";\nimport { Settings } from \"../Settings/Settings\";\nimport { formatTime } from \"../utils/helpers/formatTime\";\nimport { BaseServer } from \"../Server/BaseServer\";\n\nexport class Output {\n text: string;\n color: \"primary\" | \"error\" | \"success\" | \"info\" | \"warn\";\n constructor(text: string, color: \"primary\" | \"error\" | \"success\" | \"info\" | \"warn\") {\n if (Settings.TimestampsFormat) text = \"[\" + formatTime(Settings.TimestampsFormat) + \"] \" + text;\n this.text = text;\n this.color = color;\n }\n}\n\nexport class RawOutput {\n raw: React.ReactNode;\n constructor(node: React.ReactNode) {\n if (Settings.TimestampsFormat)\n node = (\n <>\n [{formatTime(Settings.TimestampsFormat)}] {node}\n >\n );\n this.raw = node;\n }\n}\n\nexport class Link {\n hostname: string;\n dashes: string;\n constructor(dashes: string, hostname: string) {\n if (Settings.TimestampsFormat) dashes = \"[\" + formatTime(Settings.TimestampsFormat) + \"] \" + dashes;\n this.hostname = hostname;\n this.dashes = dashes;\n }\n}\n\nexport class TTimer {\n time: number;\n timeLeft: number;\n action: \"h\" | \"b\" | \"a\" | \"g\" | \"w\";\n server?: BaseServer;\n\n constructor(time: number, action: \"h\" | \"b\" | \"a\" | \"g\" | \"w\", server?: BaseServer) {\n this.time = time;\n this.timeLeft = time;\n this.action = action;\n this.server = server;\n }\n}\n\nexport interface ITerminal {\n action: TTimer | null;\n\n commandHistory: string[];\n commandHistoryIndex: number;\n\n outputHistory: (Output | Link | RawOutput)[];\n\n // True if a Coding Contract prompt is opened\n contractOpen: boolean;\n\n // Full Path of current directory\n // Excludes the trailing forward slash\n currDir: string;\n\n print(s: string): void;\n printRaw(node: React.ReactNode): void;\n error(s: string): void;\n success(s: string): void;\n info(s: string): void;\n warn(s: string): void;\n\n clear(): void;\n startAnalyze(player: IPlayer): void;\n startBackdoor(player: IPlayer): void;\n startHack(player: IPlayer): void;\n startGrow(player: IPlayer): void;\n startWeaken(player: IPlayer): void;\n finishHack(router: IRouter, player: IPlayer, server: BaseServer, cancelled?: boolean): void;\n finishGrow(player: IPlayer, server: BaseServer, cancelled?: boolean): void;\n finishWeaken(player: IPlayer, server: BaseServer, cancelled?: boolean): void;\n finishBackdoor(router: IRouter, player: IPlayer, server: BaseServer, cancelled?: boolean): void;\n finishAnalyze(player: IPlayer, server: BaseServer, cancelled?: boolean): void;\n finishAction(router: IRouter, player: IPlayer, cancelled?: boolean): void;\n getFilepath(filename: string): string;\n getFile(player: IPlayer, filename: string): Script | TextFile | string | null;\n getScript(player: IPlayer, filename: string): Script | null;\n getTextFile(player: IPlayer, filename: string): TextFile | null;\n getLitFile(player: IPlayer, filename: string): string | null;\n cwd(): string;\n setcwd(dir: string): void;\n runContract(player: IPlayer, name: string): void;\n executeScanAnalyzeCommand(player: IPlayer, depth?: number, all?: boolean): void;\n connectToServer(player: IPlayer, server: string): void;\n executeCommand(router: IRouter, player: IPlayer, command: string): void;\n executeCommands(router: IRouter, player: IPlayer, commands: string): void;\n // If there was any changes, will return true, once.\n process(router: IRouter, player: IPlayer, cycles: number): void;\n prestige(): void;\n getProgressText(): string;\n}\n","import { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\n\ninterface ISkillParams {\n name: string;\n desc: string;\n\n baseCost?: number;\n costInc?: number;\n maxLvl?: number;\n\n successChanceAll?: number;\n successChanceStealth?: number;\n successChanceKill?: number;\n successChanceContract?: number;\n successChanceOperation?: number;\n successChanceEstimate?: number;\n\n actionTime?: number;\n\n effHack?: number;\n effStr?: number;\n effDef?: number;\n effDex?: number;\n effAgi?: number;\n effCha?: number;\n\n stamina?: number;\n money?: number;\n expGain?: number;\n}\n\nexport class Skill {\n name: string;\n desc: string;\n // Cost is in Skill Points\n baseCost = 1;\n // Additive cost increase per level\n costInc = 1;\n maxLvl = 0;\n\n /**\n * These benefits are additive. So total multiplier will be level (handled externally) times the\n * effects below\n */\n successChanceAll = 0;\n successChanceStealth = 0;\n successChanceKill = 0;\n successChanceContract = 0;\n successChanceOperation = 0;\n\n /**\n * This multiplier affects everything that increases synthoid population/community estimate\n * e.g. Field analysis, Investigation Op, Undercover Op\n */\n successChanceEstimate = 0;\n actionTime = 0;\n effHack = 0;\n effStr = 0;\n effDef = 0;\n effDex = 0;\n effAgi = 0;\n effCha = 0;\n stamina = 0;\n money = 0;\n expGain = 0;\n\n constructor(params: ISkillParams = { name: \"foo\", desc: \"foo\" }) {\n if (!params.name) {\n throw new Error(\"Failed to initialize Bladeburner Skill. No name was specified in ctor\");\n }\n if (!params.desc) {\n throw new Error(\"Failed to initialize Bladeburner Skills. No desc was specified in ctor\");\n }\n this.name = params.name;\n this.desc = params.desc;\n this.baseCost = params.baseCost ? params.baseCost : 1;\n this.costInc = params.costInc ? params.costInc : 1;\n\n if (params.maxLvl) {\n this.maxLvl = params.maxLvl;\n }\n\n if (params.successChanceAll) {\n this.successChanceAll = params.successChanceAll;\n }\n if (params.successChanceStealth) {\n this.successChanceStealth = params.successChanceStealth;\n }\n if (params.successChanceKill) {\n this.successChanceKill = params.successChanceKill;\n }\n if (params.successChanceContract) {\n this.successChanceContract = params.successChanceContract;\n }\n if (params.successChanceOperation) {\n this.successChanceOperation = params.successChanceOperation;\n }\n\n if (params.successChanceEstimate) {\n this.successChanceEstimate = params.successChanceEstimate;\n }\n\n if (params.actionTime) {\n this.actionTime = params.actionTime;\n }\n if (params.effHack) {\n this.effHack = params.effHack;\n }\n if (params.effStr) {\n this.effStr = params.effStr;\n }\n if (params.effDef) {\n this.effDef = params.effDef;\n }\n if (params.effDex) {\n this.effDex = params.effDex;\n }\n if (params.effAgi) {\n this.effAgi = params.effAgi;\n }\n if (params.effCha) {\n this.effCha = params.effCha;\n }\n\n if (params.stamina) {\n this.stamina = params.stamina;\n }\n if (params.money) {\n this.money = params.money;\n }\n if (params.expGain) {\n this.expGain = params.expGain;\n }\n }\n\n calculateCost(currentLevel: number): number {\n return Math.floor((this.baseCost + currentLevel * this.costInc) * BitNodeMultipliers.BladeburnerSkillCost);\n }\n\n getMultiplier(name: string): number {\n if (name === \"successChanceAll\") return this.successChanceAll;\n if (name === \"successChanceStealth\") return this.successChanceStealth;\n if (name === \"successChanceKill\") return this.successChanceKill;\n if (name === \"successChanceContract\") return this.successChanceContract;\n if (name === \"successChanceOperation\") return this.successChanceOperation;\n if (name === \"successChanceEstimate\") return this.successChanceEstimate;\n\n if (name === \"actionTime\") return this.actionTime;\n\n if (name === \"effHack\") return this.effHack;\n if (name === \"effStr\") return this.effStr;\n if (name === \"effDef\") return this.effDef;\n if (name === \"effDex\") return this.effDex;\n if (name === \"effAgi\") return this.effAgi;\n if (name === \"effCha\") return this.effCha;\n\n if (name === \"stamina\") return this.stamina;\n if (name === \"money\") return this.money;\n if (name === \"expGain\") return this.expGain;\n return 0;\n }\n}\n","import React from \"react\";\nimport { Modal } from \"./Modal\";\n\nimport Button from \"@mui/material/Button\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n onConfirm: () => void;\n confirmationText: string | React.ReactNode;\n additionalButton?: React.ReactNode;\n}\n\nexport function ConfirmationModal(props: IProps): React.ReactElement {\n return (\n \n <>\n {props.confirmationText}\n \n {props.additionalButton && <>{props.additionalButton}>}\n >\n \n );\n}\n","export function hash(): string {\n try {\n if (__COMMIT_HASH__) {\n return __COMMIT_HASH__;\n }\n } catch (err) {}\n return \"DEV\";\n}\n","import { FactionNames } from \"../../Faction/data/FactionNames\";\n\nexport const GangConstants: {\n GangRespectToReputationRatio: number;\n MaximumGangMembers: number;\n CyclesPerTerritoryAndPowerUpdate: number;\n AscensionMultiplierRatio: number;\n Names: string[];\n} = {\n // Respect is divided by this to get rep gain\n GangRespectToReputationRatio: 75,\n MaximumGangMembers: 12,\n CyclesPerTerritoryAndPowerUpdate: 100,\n // Portion of upgrade multiplier that is kept after ascending\n AscensionMultiplierRatio: 0.15,\n // Names of possible Gangs\n Names: [\n FactionNames.SlumSnakes,\n FactionNames.Tetrads,\n FactionNames.TheSyndicate,\n FactionNames.TheDarkArmy,\n FactionNames.SpeakersForTheDead,\n FactionNames.NiteSec,\n FactionNames.TheBlackHand,\n ],\n};\n","/**\n * Class representing a script file.\n *\n * This does NOT represent a script that is actively running and\n * being evaluated. See RunningScript for that\n */\nimport { calculateRamUsage, RamUsageEntry } from \"./RamCalculations\";\nimport { ScriptUrl } from \"./ScriptUrl\";\n\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\nimport { roundToTwo } from \"../utils/helpers/roundToTwo\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\n\nlet globalModuleSequenceNumber = 0;\n\ninterface ScriptReference {\n filename: string;\n server: string;\n}\n\nexport class Script {\n // Code for this script\n code = \"\";\n\n // Filename for the script file\n filename = \"\";\n\n // url of the script if any, only for NS2.\n url = \"\";\n\n // The dynamic module generated for this script when it is run.\n // This is only applicable for NetscriptJS\n module: any = \"\";\n\n // The timestamp when when the script was last updated.\n moduleSequenceNumber: number;\n\n // Only used with NS2 scripts; the list of dependency script filenames. This is constructed\n // whenever the script is first evaluated, and therefore may be out of date if the script\n // has been updated since it was last run.\n dependencies: ScriptUrl[] = [];\n dependents: ScriptReference[] = [];\n\n // Amount of RAM this Script requres to run\n ramUsage = 0;\n ramUsageEntries?: RamUsageEntry[];\n\n // hostname of server that this script is on.\n server = \"\";\n\n constructor(player: IPlayer | null = null, fn = \"\", code = \"\", server = \"\", otherScripts: Script[] = []) {\n this.filename = fn;\n this.code = code;\n this.ramUsage = 0;\n this.server = server; // hostname of server this script is on\n this.module = \"\";\n this.moduleSequenceNumber = ++globalModuleSequenceNumber;\n if (this.code !== \"\" && player !== null) {\n this.updateRamUsage(player, otherScripts);\n }\n }\n\n /**\n * Download the script as a file\n */\n download(): void {\n const filename = this.filename;\n const file = new Blob([this.code], { type: \"text/plain\" });\n const navigator = window.navigator as any;\n if (navigator.msSaveOrOpenBlob) {\n // IE10+\n navigator.msSaveOrOpenBlob(file, filename);\n } else {\n // Others\n const a = document.createElement(\"a\"),\n url = URL.createObjectURL(file);\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(function () {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n }\n\n /**\n * Marks this script as having been updated. It will be recompiled next time something tries\n * to exec it.\n */\n markUpdated(): void {\n this.module = \"\";\n this.moduleSequenceNumber = ++globalModuleSequenceNumber;\n }\n\n /**\n * Save a script from the script editor\n * @param {string} code - The new contents of the script\n * @param {Script[]} otherScripts - Other scripts on the server. Used to process imports\n */\n saveScript(player: IPlayer, filename: string, code: string, hostname: string, otherScripts: Script[]): void {\n // Update code and filename\n this.code = Script.formatCode(code);\n\n this.filename = filename;\n this.server = hostname;\n this.updateRamUsage(player, otherScripts);\n this.markUpdated();\n for (const dependent of this.dependents) {\n const [dependentScript] = otherScripts.filter(\n (s) => s.filename === dependent.filename && s.server == dependent.server,\n );\n if (dependentScript !== null) dependentScript.markUpdated();\n }\n }\n\n /**\n * Calculates and updates the script's RAM usage based on its code\n * @param {Script[]} otherScripts - Other scripts on the server. Used to process imports\n */\n async updateRamUsage(player: IPlayer, otherScripts: Script[]): Promise {\n const res = await calculateRamUsage(player, this.code, otherScripts);\n if (res.cost > 0) {\n this.ramUsage = roundToTwo(res.cost);\n this.ramUsageEntries = res.entries;\n }\n this.markUpdated();\n }\n\n imports(): string[] {\n return [];\n }\n\n // Serialize the current object to a JSON save state\n toJSON(): any {\n return Generic_toJSON(\"Script\", this);\n }\n\n // Initializes a Script Object from a JSON save state\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Script {\n const s = Generic_fromJSON(Script, value.data);\n // Force the url to blank from the save data. Urls are not valid outside the current browser page load.\n s.url = \"\";\n s.dependents = [];\n return s;\n }\n\n /**\n * Formats code: Removes the starting & trailing whitespace\n * @param {string} code - The code to format\n * @returns The formatted code\n */\n static formatCode(code: string): string {\n return code.replace(/^\\s+|\\s+$/g, \"\");\n }\n}\n\nReviver.constructors.Script = Script;\n","/**\n * Returns the input array as a comma separated string.\n *\n * Does several things that Array.toString() doesn't do\n * - Adds brackets around the array\n * - Adds quotation marks around strings\n */\nexport function arrayToString(a: T[]): string {\n const vals: any[] = [];\n for (let i = 0; i < a.length; ++i) {\n let elem: any = a[i];\n if (Array.isArray(elem)) {\n elem = arrayToString(elem);\n } else if (typeof elem === \"string\") {\n elem = `\"${elem}\"`;\n }\n vals.push(elem);\n }\n\n return `[${vals.join(\", \")}]`;\n}\n","import { DarkWebItem } from \"./DarkWebItem\";\nimport { IMap } from \"../types\";\nimport { Programs } from \"../Programs/Programs\";\n\nexport const DarkWebItems: IMap = {\n BruteSSHProgram: new DarkWebItem(Programs.BruteSSHProgram.name, 500e3, \"Opens up SSH Ports.\"),\n FTPCrackProgram: new DarkWebItem(Programs.FTPCrackProgram.name, 1500e3, \"Opens up FTP Ports.\"),\n RelaySMTPProgram: new DarkWebItem(Programs.RelaySMTPProgram.name, 5e6, \"Opens up SMTP Ports.\"),\n HTTPWormProgram: new DarkWebItem(Programs.HTTPWormProgram.name, 30e6, \"Opens up HTTP Ports.\"),\n SQLInjectProgram: new DarkWebItem(Programs.SQLInjectProgram.name, 250e6, \"Opens up SQL Ports.\"),\n ServerProfiler: new DarkWebItem(\n Programs.ServerProfiler.name,\n 500000,\n \"Displays detailed information about a server.\",\n ),\n DeepscanV1: new DarkWebItem(Programs.DeepscanV1.name, 500000, \"Enables 'scan-analyze' with a depth up to 5.\"),\n DeepscanV2: new DarkWebItem(Programs.DeepscanV2.name, 25e6, \"Enables 'scan-analyze' with a depth up to 10.\"),\n AutolinkProgram: new DarkWebItem(Programs.AutoLink.name, 1e6, \"Enables direct connect via 'scan-analyze'.\"),\n FormulasProgram: new DarkWebItem(Programs.Formulas.name, 5e9, \"Unlock access to the formulas API.\"),\n};\n","import { Action } from \"./Action\";\nimport { IMap } from \"../types\";\n\nexport const GeneralActions: IMap = {};\n\nconst actionNames: Array = [\n \"Training\",\n \"Field Analysis\",\n \"Recruitment\",\n \"Diplomacy\",\n \"Hyperbolic Regeneration Chamber\",\n \"Incite Violence\",\n];\n\nfor (const actionName of actionNames) {\n GeneralActions[actionName] = new Action({\n name: actionName,\n });\n}\n","// Enum values are lowercased to match css classes\nexport enum Suit {\n Clubs = \"clubs\",\n Diamonds = \"diamonds\",\n Hearts = \"hearts\",\n Spades = \"spades\",\n}\n\nexport class Card {\n constructor(readonly value: number, readonly suit: Suit) {\n if (value < 1 || value > 13) {\n throw new Error(`Card instantiated with improper value: ${value}`);\n }\n }\n\n formatValue(): string {\n switch (this.value) {\n case 1:\n return \"A\";\n case 11:\n return \"J\";\n case 12:\n return \"Q\";\n case 13:\n return \"K\";\n default:\n return `${this.value}`;\n }\n }\n\n isRedSuit(): boolean {\n return this.suit === Suit.Hearts || this.suit === Suit.Diamonds;\n }\n\n getStringRepresentation(): string {\n const value = this.formatValue();\n\n return `${value} of ${this.suit}`;\n }\n}\n","import { IActionIdentifier } from \"./IActionIdentifier\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\n\ninterface IParams {\n name?: string;\n type?: number;\n}\n\nexport class ActionIdentifier implements IActionIdentifier {\n name = \"\";\n type = -1;\n\n constructor(params: IParams = {}) {\n if (params.name) this.name = params.name;\n if (params.type) this.type = params.type;\n }\n\n toJSON(): any {\n return Generic_toJSON(\"ActionIdentifier\", this);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): ActionIdentifier {\n return Generic_fromJSON(ActionIdentifier, value.data);\n }\n}\n\nReviver.constructors.ActionIdentifier = ActionIdentifier;\n","import { BitNodes } from \"../BitNode/BitNode\";\n\nexport class SourceFile {\n info: JSX.Element;\n lvl = 1;\n n: number;\n name: string;\n owned = false;\n\n constructor(number: number, info: JSX.Element) {\n const bitnodeKey = \"BitNode\" + number;\n const bitnode = BitNodes[bitnodeKey];\n if (bitnode == null) {\n throw new Error(\"Invalid Bit Node for this Source File\");\n }\n\n this.n = number;\n this.name = `Source-File ${number}: ${bitnode.name}`;\n this.info = info;\n }\n}\n","// Base class representing a person-like object\nimport { Augmentation } from \"../Augmentation/Augmentation\";\nimport { IPlayerOwnedAugmentation } from \"../Augmentation/PlayerOwnedAugmentation\";\nimport { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\nimport { CityName } from \"../Locations/data/CityNames\";\nimport { CONSTANTS } from \"../Constants\";\nimport { calculateSkill } from \"./formulas/skill\";\nimport { calculateIntelligenceBonus } from \"./formulas/intelligence\";\n\n// Interface that defines a generic object used to track experience/money\n// earnings for tasks\nexport interface ITaskTracker {\n hack: number;\n str: number;\n def: number;\n dex: number;\n agi: number;\n cha: number;\n money: number;\n}\n\nexport function createTaskTracker(): ITaskTracker {\n return {\n hack: 0,\n str: 0,\n def: 0,\n dex: 0,\n agi: 0,\n cha: 0,\n money: 0,\n };\n}\n\nexport abstract class Person {\n /**\n * Stats\n */\n hacking = 1;\n strength = 1;\n defense = 1;\n dexterity = 1;\n agility = 1;\n charisma = 1;\n intelligence = 1;\n hp = 10;\n max_hp = 10;\n\n /**\n * Experience\n */\n hacking_exp = 0;\n strength_exp = 0;\n defense_exp = 0;\n dexterity_exp = 0;\n agility_exp = 0;\n charisma_exp = 0;\n intelligence_exp = 0;\n\n /**\n * Multipliers\n */\n hacking_mult = 1;\n strength_mult = 1;\n defense_mult = 1;\n dexterity_mult = 1;\n agility_mult = 1;\n charisma_mult = 1;\n\n hacking_exp_mult = 1;\n strength_exp_mult = 1;\n defense_exp_mult = 1;\n dexterity_exp_mult = 1;\n agility_exp_mult = 1;\n charisma_exp_mult = 1;\n\n hacking_chance_mult = 1;\n hacking_speed_mult = 1;\n hacking_money_mult = 1;\n hacking_grow_mult = 1;\n\n company_rep_mult = 1;\n faction_rep_mult = 1;\n\n crime_money_mult = 1;\n crime_success_mult = 1;\n\n work_money_mult = 1;\n\n hacknet_node_money_mult = 1;\n hacknet_node_purchase_cost_mult = 1;\n hacknet_node_ram_cost_mult = 1;\n hacknet_node_core_cost_mult = 1;\n hacknet_node_level_cost_mult = 1;\n\n bladeburner_max_stamina_mult = 1;\n bladeburner_stamina_gain_mult = 1;\n bladeburner_analysis_mult = 1;\n bladeburner_success_chance_mult = 1;\n\n /**\n * Augmentations\n */\n augmentations: IPlayerOwnedAugmentation[] = [];\n queuedAugmentations: IPlayerOwnedAugmentation[] = [];\n\n /**\n * City that the person is in\n */\n city: CityName = CityName.Sector12;\n\n /**\n * Updates this object's multipliers for the given augmentation\n */\n applyAugmentation(aug: Augmentation): void {\n for (const mult of Object.keys(aug.mults)) {\n if ((this as any)[mult] == null) {\n console.warn(`Augmentation has unrecognized multiplier property: ${mult}`);\n } else {\n (this as any)[mult] *= aug.mults[mult];\n }\n }\n }\n\n /**\n * Given an experience amount and stat multiplier, calculates the\n * stat level. Stat-agnostic (same formula for every stat)\n */\n calculateStat(exp: number, mult = 1): number {\n return calculateSkill(exp, mult);\n }\n\n /**\n * Calculate and return the amount of faction reputation earned per cycle\n * when doing Field Work for a faction\n */\n getFactionFieldWorkRepGain(): number {\n const t =\n (0.9 *\n (this.hacking / CONSTANTS.MaxSkillLevel +\n this.strength / CONSTANTS.MaxSkillLevel +\n this.defense / CONSTANTS.MaxSkillLevel +\n this.dexterity / CONSTANTS.MaxSkillLevel +\n this.agility / CONSTANTS.MaxSkillLevel +\n this.charisma / CONSTANTS.MaxSkillLevel)) /\n 5.5;\n return t * this.faction_rep_mult;\n }\n\n /**\n * Calculate and return the amount of faction reputation earned per cycle\n * when doing Hacking Work for a faction\n */\n getFactionHackingWorkRepGain(): number {\n return (this.hacking / CONSTANTS.MaxSkillLevel) * this.faction_rep_mult;\n }\n\n /**\n * Calculate and return the amount of faction reputation earned per cycle\n * when doing Security Work for a faction\n */\n getFactionSecurityWorkRepGain(): number {\n const t =\n (0.9 *\n (this.hacking / CONSTANTS.MaxSkillLevel +\n this.strength / CONSTANTS.MaxSkillLevel +\n this.defense / CONSTANTS.MaxSkillLevel +\n this.dexterity / CONSTANTS.MaxSkillLevel +\n this.agility / CONSTANTS.MaxSkillLevel)) /\n 4.5;\n return t * this.faction_rep_mult;\n }\n\n /**\n * Reset all multipliers to 1\n */\n resetMultipliers(): void {\n this.hacking_mult = 1;\n this.strength_mult = 1;\n this.defense_mult = 1;\n this.dexterity_mult = 1;\n this.agility_mult = 1;\n this.charisma_mult = 1;\n\n this.hacking_exp_mult = 1;\n this.strength_exp_mult = 1;\n this.defense_exp_mult = 1;\n this.dexterity_exp_mult = 1;\n this.agility_exp_mult = 1;\n this.charisma_exp_mult = 1;\n\n this.company_rep_mult = 1;\n this.faction_rep_mult = 1;\n\n this.crime_money_mult = 1;\n this.crime_success_mult = 1;\n\n this.work_money_mult = 1;\n }\n\n /**\n * Update all stat levels\n */\n updateStatLevels(): void {\n this.hacking = Math.max(\n 1,\n Math.floor(this.calculateStat(this.hacking_exp, this.hacking_mult * BitNodeMultipliers.HackingLevelMultiplier)),\n );\n this.strength = Math.max(\n 1,\n Math.floor(\n this.calculateStat(this.strength_exp, this.strength_mult * BitNodeMultipliers.StrengthLevelMultiplier),\n ),\n );\n this.defense = Math.max(\n 1,\n Math.floor(this.calculateStat(this.defense_exp, this.defense_mult * BitNodeMultipliers.DefenseLevelMultiplier)),\n );\n this.dexterity = Math.max(\n 1,\n Math.floor(\n this.calculateStat(this.dexterity_exp, this.dexterity_mult * BitNodeMultipliers.DexterityLevelMultiplier),\n ),\n );\n this.agility = Math.max(\n 1,\n Math.floor(this.calculateStat(this.agility_exp, this.agility_mult * BitNodeMultipliers.AgilityLevelMultiplier)),\n );\n this.charisma = Math.max(\n 1,\n Math.floor(\n this.calculateStat(this.charisma_exp, this.charisma_mult * BitNodeMultipliers.CharismaLevelMultiplier),\n ),\n );\n\n const ratio: number = this.hp / this.max_hp;\n this.max_hp = Math.floor(10 + this.defense / 10);\n this.hp = Math.round(this.max_hp * ratio);\n }\n\n getIntelligenceBonus(weight: number): number {\n return calculateIntelligenceBonus(this.intelligence, weight);\n }\n}\n","import React from \"react\";\nimport { MathJax, MathJaxContext } from \"better-react-mathjax\";\n\ninterface IProps {\n children: React.ReactNode;\n}\n\nexport function MathJaxWrapper({ children }: IProps): React.ReactElement {\n return (\n \n {children}\n \n );\n}\n","import { dialogBoxCreate } from \"../../ui/React/DialogBox\";\n\ninterface IError {\n fileName?: string;\n lineNumber?: number;\n}\n\nexport function exceptionAlert(e: IError | string): void {\n console.error(e);\n dialogBoxCreate(\n \"Caught an exception: \" +\n e +\n \"
\" +\n \"Line Number: \" +\n ((e as any).lineNumber || \"UNKNOWN LINE NUMBER\") +\n \"
\" +\n \"This is a bug, please report to game developer with this \" +\n \"message as well as details about how to reproduce the bug.
\" +\n \"If you want to be safe, I suggest refreshing the game WITHOUT saving so that your \" +\n \"safe doesn't get corrupted\",\n );\n}\n","import { Message } from \"./Message\";\nimport { Augmentations } from \"../Augmentation/Augmentations\";\nimport { AugmentationNames } from \"../Augmentation/data/AugmentationNames\";\nimport { Programs } from \"../Programs/Programs\";\nimport { Player } from \"../Player\";\nimport { redPillFlag } from \"../RedPill\";\nimport { GetServer } from \"../Server/AllServers\";\nimport { Settings } from \"../Settings/Settings\";\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { Reviver } from \"../utils/JSONReviver\";\nimport { FactionNames } from \"../Faction/data/FactionNames\";\n\n//Sends message to player, including a pop up\nfunction sendMessage(msg: Message, forced = false): void {\n msg.recvd = true;\n if (forced || !Settings.SuppressMessages) {\n showMessage(msg.filename);\n }\n addMessageToServer(msg, \"home\");\n}\n\nfunction showMessage(name: string): void {\n const msg = Messages[name];\n if (!msg) throw new Error(\"trying to display unexistent message\");\n const txt =\n \"Message received from unknown sender:
\" +\n \"\" +\n msg.msg +\n \"
\" +\n \"This message was saved as \" +\n msg.filename +\n \" onto your home computer.\";\n dialogBoxCreate(txt);\n}\n\n//Adds a message to a server\nfunction addMessageToServer(msg: Message, serverHostname: string): void {\n const server = GetServer(serverHostname);\n if (server == null) {\n console.warn(`Could not find server ${serverHostname}`);\n return;\n }\n for (let i = 0; i < server.messages.length; ++i) {\n const other = server.messages[i];\n if (msg.filename === other) {\n return; //Already exists\n }\n }\n server.messages.push(msg.filename);\n}\n\n//Checks if any of the 'timed' messages should be sent\nfunction checkForMessagesToSend(): void {\n if (redPillFlag) return;\n const jumper0 = Messages[MessageFilenames.Jumper0];\n const jumper1 = Messages[MessageFilenames.Jumper1];\n const jumper2 = Messages[MessageFilenames.Jumper2];\n const jumper3 = Messages[MessageFilenames.Jumper3];\n const jumper4 = Messages[MessageFilenames.Jumper4];\n const cybersecTest = Messages[MessageFilenames.CyberSecTest];\n const nitesecTest = Messages[MessageFilenames.NiteSecTest];\n const bitrunnersTest = Messages[MessageFilenames.BitRunnersTest];\n const redpill = Messages[MessageFilenames.RedPill];\n\n let redpillOwned = false;\n if (Augmentations[AugmentationNames.TheRedPill].owned) {\n redpillOwned = true;\n }\n\n if (redpill && redpillOwned && Player.sourceFiles.length === 0 && !redPillFlag) {\n sendMessage(redpill, true);\n } else if (redpill && redpillOwned) {\n //If player has already destroyed a BitNode, message is not forced\n if (!redPillFlag) {\n sendMessage(redpill);\n }\n } else if (jumper0 && !jumper0.recvd && Player.hacking >= 25) {\n sendMessage(jumper0);\n const flightName = Programs.Flight.name;\n const homeComp = Player.getHomeComputer();\n if (!homeComp.programs.includes(flightName)) {\n homeComp.programs.push(flightName);\n }\n } else if (jumper1 && !jumper1.recvd && Player.hacking >= 40) {\n sendMessage(jumper1);\n } else if (cybersecTest && !cybersecTest.recvd && Player.hacking >= 50) {\n sendMessage(cybersecTest);\n } else if (jumper2 && !jumper2.recvd && Player.hacking >= 175) {\n sendMessage(jumper2);\n } else if (nitesecTest && !nitesecTest.recvd && Player.hacking >= 200) {\n sendMessage(nitesecTest);\n } else if (jumper3 && !jumper3.recvd && Player.hacking >= 350) {\n sendMessage(jumper3);\n } else if (jumper4 && !jumper4.recvd && Player.hacking >= 490) {\n sendMessage(jumper4);\n } else if (bitrunnersTest && !bitrunnersTest.recvd && Player.hacking >= 500) {\n sendMessage(bitrunnersTest);\n }\n}\n\nfunction AddToAllMessages(msg: Message): void {\n Messages[msg.filename] = msg;\n}\n\nlet Messages: { [key: string]: Message | undefined } = {};\n\nfunction loadMessages(saveString: string): void {\n Messages = JSON.parse(saveString, Reviver);\n}\n\nconst MessageFilenames = {\n Jumper0: \"j0.msg\",\n Jumper1: \"j1.msg\",\n Jumper2: \"j2.msg\",\n Jumper3: \"j3.msg\",\n Jumper4: \"j4.msg\",\n CyberSecTest: \"csec-test.msg\",\n NiteSecTest: \"nitesec-test.msg\",\n BitRunnersTest: \"19dfj3l1nd.msg\",\n RedPill: \"icarus.msg\",\n};\n\nfunction initMessages(): void {\n //Reset\n Messages = {};\n\n //jump3R Messages\n AddToAllMessages(\n new Message(\n MessageFilenames.Jumper0,\n \"I know you can sense it. I know you're searching for it. \" +\n \"It's why you spend night after \" +\n \"night at your computer.
It's real, I've seen it. And I can \" +\n \"help you find it. But not right now. You're not ready yet.
\" +\n \"Use this program to track your progress
\" +\n \"The fl1ght.exe program was added to your home computer
\" +\n \"-jump3R\",\n ),\n );\n AddToAllMessages(\n new Message(\n MessageFilenames.Jumper1,\n `Soon you will be contacted by a hacking group known as ${FactionNames.NiteSec}. ` +\n \"They can help you with your search.
\" +\n \"You should join them, garner their favor, and \" +\n \"exploit them for their Augmentations. But do not trust them. \" +\n \"They are not what they seem. No one is.
\" +\n \"-jump3R\",\n ),\n );\n AddToAllMessages(\n new Message(\n MessageFilenames.Jumper2,\n \"Do not try to save the world. There is no world to save. If \" +\n \"you want to find the truth, worry only about yourself. Ethics and \" +\n `morals will get you killed.
Watch out for a hacking group known as ${FactionNames.NiteSec}.` +\n \"
-jump3R\",\n ),\n );\n AddToAllMessages(\n new Message(\n MessageFilenames.Jumper3,\n \"You must learn to walk before you can run. And you must \" +\n `run before you can fly. Look for ${FactionNames.TheBlackHand}.
` +\n \"I.I.I.I
-jump3R\",\n ),\n );\n AddToAllMessages(\n new Message(\n MessageFilenames.Jumper4,\n \"To find what you are searching for, you must understand the bits. \" +\n \"The bits are all around us. The runners will help you.
\" +\n \"-jump3R\",\n ),\n );\n\n //Messages from hacking factions\n AddToAllMessages(\n new Message(\n MessageFilenames.CyberSecTest,\n \"We've been watching you. Your skills are very impressive. But you're wasting \" +\n \"your talents. If you join us, you can put your skills to good use and change \" +\n \"the world for the better. If you join us, we can unlock your full potential.
\" +\n \"But first, you must pass our test. Find and install the backdoor on our server.
\" +\n `-${FactionNames.CyberSec}`,\n ),\n );\n AddToAllMessages(\n new Message(\n MessageFilenames.NiteSecTest,\n \"People say that the corrupted governments and corporations rule the world. \" +\n \"Yes, maybe they do. But do you know who everyone really fears? People \" +\n \"like us. Because they can't hide from us. Because they can't fight shadows \" +\n \"and ideas with bullets.
\" +\n \"Join us, and people will fear you, too.
\" +\n \"Find and install the backdoor on our server. Then, we will contact you again.\" +\n `
-${FactionNames.NiteSec}`,\n ),\n );\n AddToAllMessages(\n new Message(\n MessageFilenames.BitRunnersTest,\n \"We know what you are doing. We know what drives you. We know \" +\n \"what you are looking for.
\n \n )) || You haven't joined any factions.}\n \n Outstanding Faction Invitations\n \n \n Factions you have been invited to. You can accept these faction invitations at any time:\n \n {(props.player.factionInvitations.length > 0 && (\n \n
\n \n )) || You have no outstanding faction invites.}\n \n );\n}\n","import React, { useEffect } from \"react\";\n\nimport { Typography, Link, Button, ButtonGroup, Tooltip, Box, Paper, TextField } from \"@mui/material\";\nimport { Settings } from \"../../Settings/Settings\";\nimport { load } from \"../../db\";\nimport { IRouter } from \"../Router\";\nimport { download } from \"../../SaveObject\";\nimport { IErrorData, newIssueUrl } from \"../../utils/ErrorHelper\";\nimport { DeleteGameButton } from \"./DeleteGameButton\";\nimport { SoftResetButton } from \"./SoftResetButton\";\n\nimport DirectionsRunIcon from \"@mui/icons-material/DirectionsRun\";\nimport GitHubIcon from \"@mui/icons-material/GitHub\";\n\nexport let RecoveryMode = false;\n\nexport function ActivateRecoveryMode(): void {\n RecoveryMode = true;\n}\n\ninterface IProps {\n router: IRouter;\n softReset: () => void;\n errorData?: IErrorData;\n resetError?: () => void;\n}\n\nexport function RecoveryRoot({ router, softReset, errorData, resetError }: IProps): React.ReactElement {\n function recover(): void {\n if (resetError) resetError();\n RecoveryMode = false;\n router.toTerminal();\n }\n Settings.AutosaveInterval = 0;\n\n useEffect(() => {\n load().then((content) => {\n const epochTime = Math.round(Date.now() / 1000);\n const filename = `RECOVERY_BITBURNER_${epochTime}.json`;\n download(filename, content);\n });\n }, []);\n\n return (\n \n RECOVERY MODE ACTIVATED\n \n There was an error with your save file and the game went into recovery mode. In this mode saving is disabled and\n the game will automatically export your save file (to prevent corruption).\n \n At this point it is recommended to alert a developer.\n \n \n File an issue on github\n \n \n \n \n Make a reddit post\n \n \n \n \n Post in the #bug-report channel on Discord.\n \n \n Please include your save file.\n \n \n You can disable recovery mode now. But chances are the game will not work correctly.\n \n \n }>\n Disable Recovery Mode\n \n \n \n \n \n\n {errorData && (\n \n {errorData.title}\n \n \n \n \n }\n color=\"info\"\n sx={{ px: 2 }}\n href={errorData.issueUrl ?? newIssueUrl}\n target={\"_blank\"}\n >\n Submit Issue to GitHub\n \n \n \n )}\n \n );\n}\n","import { CalculateShareMult as CSM } from \"./formulas/share\";\n\nexport let sharePower = 1;\n\nexport function StartSharing(threads: number): () => void {\n sharePower += threads;\n return () => (sharePower -= threads);\n}\n\nexport function CalculateShareMult(): number {\n return CSM(sharePower);\n}\n","import { CorporationState } from \"./CorporationState\";\nimport { CorporationUnlockUpgrade, CorporationUnlockUpgrades } from \"./data/CorporationUnlockUpgrades\";\nimport { CorporationUpgrade, CorporationUpgrades } from \"./data/CorporationUpgrades\";\nimport { Warehouse } from \"./Warehouse\";\nimport { CorporationConstants } from \"./data/Constants\";\nimport { Industry } from \"./Industry\";\n\nimport { BitNodeMultipliers } from \"../BitNode/BitNodeMultipliers\";\nimport { showLiterature } from \"../Literature/LiteratureHelpers\";\nimport { LiteratureNames } from \"../Literature/data/LiteratureNames\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\n\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { Reviver, Generic_toJSON, Generic_fromJSON } from \"../utils/JSONReviver\";\nimport { isString } from \"../utils/helpers/isString\";\n\ninterface IParams {\n name?: string;\n}\n\nexport class Corporation {\n name = \"The Corporation\";\n\n //A division/business sector is represented by the object:\n divisions: Industry[] = [];\n\n //Financial stats\n funds = 150e9;\n revenue = 0;\n expenses = 0;\n fundingRound = 0;\n public = false; //Publicly traded\n totalShares = CorporationConstants.INITIALSHARES; // Total existing shares\n numShares = CorporationConstants.INITIALSHARES; // Total shares owned by player\n shareSalesUntilPriceUpdate = CorporationConstants.SHARESPERPRICEUPDATE;\n shareSaleCooldown = 0; // Game cycles until player can sell shares again\n issueNewSharesCooldown = 0; // Game cycles until player can issue shares again\n dividendPercentage = 0;\n dividendTaxPercentage = 50;\n issuedShares = 0;\n sharePrice = 0;\n storedCycles = 0;\n\n unlockUpgrades: number[];\n upgrades: number[];\n upgradeMultipliers: number[];\n\n state = new CorporationState();\n\n constructor(params: IParams = {}) {\n this.name = params.name ? params.name : \"The Corporation\";\n const numUnlockUpgrades = Object.keys(CorporationUnlockUpgrades).length;\n const numUpgrades = Object.keys(CorporationUpgrades).length;\n this.unlockUpgrades = Array(numUnlockUpgrades).fill(0);\n this.upgrades = Array(numUpgrades).fill(0);\n this.upgradeMultipliers = Array(numUpgrades).fill(1);\n }\n\n addFunds(amt: number): void {\n if (!isFinite(amt)) {\n console.error(\"Trying to add invalid amount of funds. Report to a developper.\");\n return;\n }\n this.funds = this.funds + amt;\n }\n\n getState(): string {\n return this.state.getState();\n }\n\n storeCycles(numCycles = 1): void {\n this.storedCycles += numCycles;\n }\n\n process(player: IPlayer): void {\n if (this.storedCycles >= CorporationConstants.CyclesPerIndustryStateCycle) {\n const state = this.getState();\n const marketCycles = 1;\n const gameCycles = marketCycles * CorporationConstants.CyclesPerIndustryStateCycle;\n this.storedCycles -= gameCycles;\n\n this.divisions.forEach((ind) => {\n ind.process(marketCycles, state, this);\n });\n\n // Process cooldowns\n if (this.shareSaleCooldown > 0) {\n this.shareSaleCooldown -= gameCycles;\n }\n if (this.issueNewSharesCooldown > 0) {\n this.issueNewSharesCooldown -= gameCycles;\n }\n\n //At the start of a new cycle, calculate profits from previous cycle\n if (state === \"START\") {\n this.revenue = 0;\n this.expenses = 0;\n this.divisions.forEach((ind) => {\n if (ind.lastCycleRevenue === -Infinity || ind.lastCycleRevenue === Infinity) {\n return;\n }\n if (ind.lastCycleExpenses === -Infinity || ind.lastCycleExpenses === Infinity) {\n return;\n }\n this.revenue = this.revenue + ind.lastCycleRevenue;\n this.expenses = this.expenses + ind.lastCycleExpenses;\n });\n const profit = this.revenue - this.expenses;\n const cycleProfit = profit * (marketCycles * CorporationConstants.SecsPerMarketCycle);\n if (isNaN(this.funds) || this.funds === Infinity || this.funds === -Infinity) {\n dialogBoxCreate(\n \"There was an error calculating your Corporations funds and they got reset to 0. \" +\n \"This is a bug. Please report to game developer.
\" +\n \"(Your funds have been set to $150b for the inconvenience)\",\n );\n this.funds = 150e9;\n }\n\n // Process dividends\n if (this.dividendPercentage > 0 && cycleProfit > 0) {\n // Validate input again, just to be safe\n if (\n isNaN(this.dividendPercentage) ||\n this.dividendPercentage < 0 ||\n this.dividendPercentage > CorporationConstants.DividendMaxPercentage * 100\n ) {\n console.error(`Invalid Corporation dividend percentage: ${this.dividendPercentage}`);\n } else {\n const totalDividends = (this.dividendPercentage / 100) * cycleProfit;\n const retainedEarnings = cycleProfit - totalDividends;\n player.gainMoney(this.getDividends(), \"corporation\");\n this.addFunds(retainedEarnings);\n }\n } else {\n this.addFunds(cycleProfit);\n }\n\n this.updateSharePrice();\n }\n\n this.state.nextState();\n }\n }\n\n getDividends(): number {\n const profit = this.revenue - this.expenses;\n const cycleProfit = profit * CorporationConstants.SecsPerMarketCycle;\n const totalDividends = (this.dividendPercentage / 100) * cycleProfit;\n const dividendsPerShare = totalDividends / this.totalShares;\n const dividends = this.numShares * dividendsPerShare;\n let upgrades = -0.15;\n if (this.unlockUpgrades[5] === 1) {\n upgrades += 0.05;\n }\n if (this.unlockUpgrades[6] === 1) {\n upgrades += 0.1;\n }\n return Math.pow(dividends, BitNodeMultipliers.CorporationSoftCap + upgrades);\n }\n\n determineValuation(): number {\n let val,\n profit = this.revenue - this.expenses;\n if (this.public) {\n // Account for dividends\n if (this.dividendPercentage > 0) {\n profit *= (100 - this.dividendPercentage) / 100;\n }\n\n val = this.funds + profit * 85e3;\n val *= Math.pow(1.1, this.divisions.length);\n val = Math.max(val, 0);\n } else {\n val = 10e9 + Math.max(this.funds, 0) / 3; //Base valuation\n if (profit > 0) {\n val += profit * 315e3;\n val *= Math.pow(1.1, this.divisions.length);\n } else {\n val = 10e9 * Math.pow(1.1, this.divisions.length);\n }\n val -= val % 1e6; //Round down to nearest millionth\n }\n return val * BitNodeMultipliers.CorporationValuation;\n }\n\n getTargetSharePrice(): number {\n // Note: totalShares - numShares is not the same as issuedShares because\n // issuedShares does not account for private investors\n return this.determineValuation() / (2 * (this.totalShares - this.numShares) + 1);\n }\n\n updateSharePrice(): void {\n const targetPrice = this.getTargetSharePrice();\n if (this.sharePrice <= targetPrice) {\n this.sharePrice *= 1 + Math.random() * 0.01;\n } else {\n this.sharePrice *= 1 - Math.random() * 0.01;\n }\n if (this.sharePrice <= 0.01) {\n this.sharePrice = 0.01;\n }\n }\n\n immediatelyUpdateSharePrice(): void {\n this.sharePrice = this.getTargetSharePrice();\n }\n\n // Calculates how much money will be made and what the resulting stock price\n // will be when the player sells his/her shares\n // @return - [Player profit, final stock price, end shareSalesUntilPriceUpdate property]\n calculateShareSale(numShares: number): [number, number, number] {\n let sharesTracker = numShares;\n let sharesUntilUpdate = this.shareSalesUntilPriceUpdate;\n let sharePrice = this.sharePrice;\n let sharesSold = 0;\n let profit = 0;\n\n const maxIterations = Math.ceil(numShares / CorporationConstants.SHARESPERPRICEUPDATE);\n if (isNaN(maxIterations) || maxIterations > 10e6) {\n console.error(\n `Something went wrong or unexpected when calculating share sale. Maxiterations calculated to be ${maxIterations}`,\n );\n return [0, 0, 0];\n }\n\n for (let i = 0; i < maxIterations; ++i) {\n if (sharesTracker < sharesUntilUpdate) {\n profit += sharePrice * sharesTracker;\n sharesUntilUpdate -= sharesTracker;\n break;\n } else {\n profit += sharePrice * sharesUntilUpdate;\n sharesUntilUpdate = CorporationConstants.SHARESPERPRICEUPDATE;\n sharesTracker -= sharesUntilUpdate;\n sharesSold += sharesUntilUpdate;\n\n // Calculate what new share price would be\n sharePrice = this.determineValuation() / (2 * (this.totalShares + sharesSold - this.numShares));\n }\n }\n\n return [profit, sharePrice, sharesUntilUpdate];\n }\n\n convertCooldownToString(cd: number): string {\n // The cooldown value is based on game cycles. Convert to a simple string\n const seconds = cd / 5;\n\n const SecondsPerMinute = 60;\n const SecondsPerHour = 3600;\n\n if (seconds > SecondsPerHour) {\n return `${Math.floor(seconds / SecondsPerHour)} hour(s)`;\n } else if (seconds > SecondsPerMinute) {\n return `${Math.floor(seconds / SecondsPerMinute)} minute(s)`;\n } else {\n return `${Math.floor(seconds)} second(s)`;\n }\n }\n\n //One time upgrades that unlock new features\n unlock(upgrade: CorporationUnlockUpgrade): void {\n const upgN = upgrade[0],\n price = upgrade[1];\n while (this.unlockUpgrades.length <= upgN) {\n this.unlockUpgrades.push(0);\n }\n if (this.funds < price) {\n dialogBoxCreate(\"You don't have enough funds to unlock this!\");\n return;\n }\n this.unlockUpgrades[upgN] = 1;\n this.funds = this.funds - price;\n\n // Apply effects for one-time upgrades\n if (upgN === 5) {\n this.dividendTaxPercentage -= 5;\n } else if (upgN === 6) {\n this.dividendTaxPercentage -= 10;\n }\n }\n\n //Levelable upgrades\n upgrade(upgrade: CorporationUpgrade): void {\n const upgN = upgrade[0],\n basePrice = upgrade[1],\n priceMult = upgrade[2],\n upgradeAmt = upgrade[3]; //Amount by which the upgrade multiplier gets increased (additive)\n while (this.upgrades.length <= upgN) {\n this.upgrades.push(0);\n }\n while (this.upgradeMultipliers.length <= upgN) {\n this.upgradeMultipliers.push(1);\n }\n const totalCost = basePrice * Math.pow(priceMult, this.upgrades[upgN]);\n if (this.funds < totalCost) {\n dialogBoxCreate(\"You don't have enough funds to purchase this!\");\n return;\n }\n ++this.upgrades[upgN];\n this.funds = this.funds - totalCost;\n\n //Increase upgrade multiplier\n this.upgradeMultipliers[upgN] = 1 + this.upgrades[upgN] * upgradeAmt;\n\n //If storage size is being updated, update values in Warehouse objects\n if (upgN === 1) {\n for (let i = 0; i < this.divisions.length; ++i) {\n const industry = this.divisions[i];\n for (const city of Object.keys(industry.warehouses)) {\n const warehouse = industry.warehouses[city];\n if (warehouse === 0) continue;\n if (industry.warehouses.hasOwnProperty(city) && warehouse instanceof Warehouse) {\n warehouse.updateSize(this, industry);\n }\n }\n }\n }\n }\n\n getProductionMultiplier(): number {\n const mult = this.upgradeMultipliers[0];\n if (isNaN(mult) || mult < 1) {\n return 1;\n } else {\n return mult;\n }\n }\n\n getStorageMultiplier(): number {\n const mult = this.upgradeMultipliers[1];\n if (isNaN(mult) || mult < 1) {\n return 1;\n } else {\n return mult;\n }\n }\n\n getDreamSenseGain(): number {\n const gain = this.upgradeMultipliers[2] - 1;\n return gain <= 0 ? 0 : gain;\n }\n\n getAdvertisingMultiplier(): number {\n const mult = this.upgradeMultipliers[3];\n if (isNaN(mult) || mult < 1) {\n return 1;\n } else {\n return mult;\n }\n }\n\n getEmployeeCreMultiplier(): number {\n const mult = this.upgradeMultipliers[4];\n if (isNaN(mult) || mult < 1) {\n return 1;\n } else {\n return mult;\n }\n }\n\n getEmployeeChaMultiplier(): number {\n const mult = this.upgradeMultipliers[5];\n if (isNaN(mult) || mult < 1) {\n return 1;\n } else {\n return mult;\n }\n }\n\n getEmployeeIntMultiplier(): number {\n const mult = this.upgradeMultipliers[6];\n if (isNaN(mult) || mult < 1) {\n return 1;\n } else {\n return mult;\n }\n }\n\n getEmployeeEffMultiplier(): number {\n const mult = this.upgradeMultipliers[7];\n if (isNaN(mult) || mult < 1) {\n return 1;\n } else {\n return mult;\n }\n }\n\n getSalesMultiplier(): number {\n const mult = this.upgradeMultipliers[8];\n if (isNaN(mult) || mult < 1) {\n return 1;\n } else {\n return mult;\n }\n }\n\n getScientificResearchMultiplier(): number {\n const mult = this.upgradeMultipliers[9];\n if (isNaN(mult) || mult < 1) {\n return 1;\n } else {\n return mult;\n }\n }\n\n // Adds the Corporation Handbook (Starter Guide) to the player's home computer.\n // This is a lit file that gives introductory info to the player\n // This occurs when the player clicks the \"Getting Started Guide\" button on the overview panel\n getStarterGuide(player: IPlayer): void {\n // Check if player already has Corporation Handbook\n const homeComp = player.getHomeComputer();\n let hasHandbook = false;\n const handbookFn = LiteratureNames.CorporationManagementHandbook;\n for (let i = 0; i < homeComp.messages.length; ++i) {\n if (isString(homeComp.messages[i]) && homeComp.messages[i] === handbookFn) {\n hasHandbook = true;\n break;\n }\n }\n\n if (!hasHandbook) {\n homeComp.messages.push(handbookFn);\n }\n showLiterature(handbookFn);\n return;\n }\n\n /**\n * Serialize the current object to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"Corporation\", this);\n }\n\n /**\n * Initiatizes a Corporation object from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Corporation {\n return Generic_fromJSON(Corporation, value.data);\n }\n}\n\nReviver.constructors.Corporation = Corporation;\n","import React from \"react\";\nimport { numeralWrapper } from \"../numeralFormat\";\nimport { Hashes } from \"./Hashes\";\n\nexport function HashRate({ hashes }: { hashes: number }): React.ReactElement {\n return ;\n}\n","import { BladeburnerConstants } from \"./data/Constants\";\nimport { getRandomInt } from \"../utils/helpers/getRandomInt\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\nimport { addOffset } from \"../utils/helpers/addOffset\";\n\ninterface IChangePopulationByCountParams {\n estChange: number;\n estOffset: number;\n}\n\ninterface IChangePopulationByPercentageParams {\n nonZero: boolean;\n changeEstEqually: boolean;\n}\n\nexport class City {\n /**\n * Name of the city.\n */\n name = \"\";\n\n /**\n * Population of the city.\n */\n pop = 0;\n\n /**\n * Population estimation of the city.\n */\n popEst = 0;\n\n /**\n * Number of communities in the city.\n */\n comms = 0;\n\n /**\n * Chaos level of the city.\n */\n chaos = 0;\n\n constructor(name: string = BladeburnerConstants.CityNames[2]) {\n this.name = name;\n\n // Synthoid population and estimate\n this.pop = getRandomInt(BladeburnerConstants.PopulationThreshold, 1.5 * BladeburnerConstants.PopulationThreshold);\n this.popEst = this.pop * (Math.random() + 0.5);\n\n // Number of Synthoid communities population and estimate\n this.comms = getRandomInt(5, 150);\n this.chaos = 0;\n }\n\n /**\n * p is the percentage, not the multiplier (e.g. pass in p = 5 for 5%)\n */\n changeChaosByPercentage(p: number): void {\n if (isNaN(p)) {\n throw new Error(\"NaN passed into City.chaosChaosByPercentage()\");\n }\n if (p === 0) {\n return;\n }\n this.chaos += this.chaos * (p / 100);\n if (this.chaos < 0) {\n this.chaos = 0;\n }\n }\n\n improvePopulationEstimateByCount(n: number): void {\n if (isNaN(n)) {\n throw new Error(\"NaN passeed into City.improvePopulationEstimateByCount()\");\n }\n if (this.popEst < this.pop) {\n this.popEst += n;\n if (this.popEst > this.pop) {\n this.popEst = this.pop;\n }\n } else if (this.popEst > this.pop) {\n this.popEst -= n;\n if (this.popEst < this.pop) {\n this.popEst = this.pop;\n }\n }\n }\n\n /**\n * p is the percentage, not the multiplier (e.g. pass in p = 5 for 5%)\n */\n improvePopulationEstimateByPercentage(p: number, skillMult = 1): void {\n p = p * skillMult;\n if (isNaN(p)) {\n throw new Error(\"NaN passed into City.improvePopulationEstimateByPercentage()\");\n }\n if (this.popEst < this.pop) {\n ++this.popEst; // In case estimate is 0\n this.popEst *= 1 + p / 100;\n if (this.popEst > this.pop) {\n this.popEst = this.pop;\n }\n } else if (this.popEst > this.pop) {\n this.popEst *= 1 - p / 100;\n if (this.popEst < this.pop) {\n this.popEst = this.pop;\n }\n }\n }\n\n /**\n * @params options:\n * estChange(int): How much the estimate should change by\n * estOffset(int): Add offset to estimate (offset by percentage)\n */\n changePopulationByCount(n: number, params: IChangePopulationByCountParams = { estChange: 0, estOffset: 0 }): void {\n if (isNaN(n)) {\n throw new Error(\"NaN passed into City.changePopulationByCount()\");\n }\n this.pop += n;\n if (params.estChange && !isNaN(params.estChange)) {\n this.popEst += params.estChange;\n }\n if (params.estOffset) {\n this.popEst = addOffset(this.popEst, params.estOffset);\n }\n this.popEst = Math.max(this.popEst, 0);\n }\n\n /**\n * @p is the percentage, not the multiplier. e.g. pass in p = 5 for 5%\n * @params options:\n * changeEstEqually(bool) - Change the population estimate by an equal amount\n * nonZero (bool) - Set to true to ensure that population always changes by at least 1\n */\n changePopulationByPercentage(\n p: number,\n params: IChangePopulationByPercentageParams = {\n nonZero: false,\n changeEstEqually: false,\n },\n ): number {\n if (isNaN(p)) {\n throw new Error(\"NaN passed into City.changePopulationByPercentage()\");\n }\n if (p === 0) {\n return 0;\n }\n let change = Math.round(this.pop * (p / 100));\n\n // Population always changes by at least 1\n if (params.nonZero && change === 0) {\n p > 0 ? (change = 1) : (change = -1);\n }\n\n this.pop += change;\n if (params.changeEstEqually) {\n this.popEst += change;\n if (this.popEst < 0) {\n this.popEst = 0;\n }\n }\n return change;\n }\n\n changeChaosByCount(n: number): void {\n if (isNaN(n)) {\n throw new Error(\"NaN passed into City.changeChaosByCount()\");\n }\n if (n === 0) {\n return;\n }\n this.chaos += n;\n if (this.chaos < 0) {\n this.chaos = 0;\n }\n }\n\n /**\n * Serialize the current object to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"City\", this);\n }\n\n /**\n * Initiatizes a City object from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): City {\n return Generic_fromJSON(City, value.data);\n }\n}\n\nReviver.constructors.City = City;\n","import { Factions } from \"../../Faction/Factions\";\nimport { Faction } from \"../../Faction/Faction\";\nimport { Gang } from \"../../Gang/Gang\";\nimport { SourceFileFlags } from \"../../SourceFile/SourceFileFlags\";\nimport { IPlayer } from \"../IPlayer\";\n\n// Amount of negative karma needed to manage a gang in BitNodes other than 2\nconst GangKarmaRequirement = -54000;\n\nexport function canAccessGang(this: IPlayer): boolean {\n if (this.bitNodeN === 2) {\n return true;\n }\n if (SourceFileFlags[2] <= 0) {\n return false;\n }\n\n return this.karma <= GangKarmaRequirement;\n}\n\nexport function getGangFaction(this: IPlayer): Faction {\n const gang = this.gang;\n if (gang === null) {\n throw new Error(\"Cannot get gang faction because player is not in a gang.\");\n }\n const fac = Factions[gang.facName];\n if (fac == null) {\n throw new Error(`Gang has invalid faction name: ${gang.facName}`);\n }\n\n return fac;\n}\n\nexport function getGangName(this: IPlayer): string {\n if (!this.inGang()) return \"\";\n const gang = this.gang;\n if (gang === null) {\n throw new Error(\"Cannot get gang faction because player is not in a gang.\");\n }\n return gang.facName;\n}\n\nexport function hasGangWith(this: IPlayer, facName: string): boolean {\n if (!this.inGang()) return false;\n const gang = this.gang;\n if (gang === null) {\n throw new Error(\"Cannot get gang faction because player is not in a gang.\");\n }\n return gang.facName === facName;\n}\n\nexport function inGang(this: IPlayer): boolean {\n if (this.gang == null || this.gang == undefined) {\n return false;\n }\n\n return this.gang instanceof Gang;\n}\n\nexport function startGang(this: IPlayer, factionName: string, hacking: boolean): void {\n this.gang = new Gang(factionName, hacking);\n\n const fac = Factions[factionName];\n if (fac == null) {\n throw new Error(`Invalid faction name when creating gang: ${factionName}`);\n }\n fac.playerReputation = 0;\n}\n","/**\n * Class representing a City in the game\n */\nimport { CityName } from \"./data/CityNames\";\nimport { LocationName } from \"./data/LocationNames\";\n\nexport class City {\n /**\n * List of all locations in this city\n */\n locations: LocationName[];\n\n /**\n * Name of this city\n */\n name: CityName;\n\n /**\n * Metro map ascii art\n */\n asciiArt: string;\n\n constructor(name: CityName, locations: LocationName[] = [], asciiArt = \"\") {\n this.name = name;\n this.locations = locations;\n this.asciiArt = asciiArt;\n }\n\n addLocation(loc: LocationName): void {\n this.locations.push(loc);\n }\n}\n","/**\n * React component for a selectable option on the Faction UI. These\n * options including working for the faction, hacking missions, purchasing\n * augmentations, etc.\n */\nimport * as React from \"react\";\n\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\nimport Paper from \"@mui/material/Paper\";\nimport Box from \"@mui/material/Box\";\n\ntype IProps = {\n buttonText: string;\n infoText: string;\n onClick: (e: React.MouseEvent) => void;\n};\n\nexport function Option(props: IProps): React.ReactElement {\n return (\n \n \n \n {props.infoText}\n \n \n );\n}\n","/**\n * React component for the tickers configuration section of the Stock Market UI.\n * This config lets you change the way stock tickers are displayed (watchlist,\n * all/portoflio mode, etc)\n */\nimport * as React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Button from \"@mui/material/Button\";\nimport TextField from \"@mui/material/TextField\";\n\nexport enum TickerDisplayMode {\n AllStocks,\n Portfolio,\n}\n\ntype IProps = {\n changeDisplayMode: () => void;\n changeWatchlistFilter: (e: React.ChangeEvent) => void;\n tickerDisplayMode: TickerDisplayMode;\n};\n\nfunction DisplayModeButton(props: IProps): React.ReactElement {\n let txt = \"\";\n let tooltip = \"\";\n if (props.tickerDisplayMode === TickerDisplayMode.Portfolio) {\n txt = \"Switch to 'All Stocks' Mode\";\n tooltip = \"Displays all stocks on the WSE\";\n } else {\n txt = \"Switch to 'Portfolio' Mode\";\n tooltip = \"Displays only the stocks for which you have shares or orders\";\n }\n\n return (\n {tooltip}}>\n \n \n );\n}\n\nexport function StockTickersConfig(props: IProps): React.ReactElement {\n return (\n <>\n \n \n \n >\n );\n}\n","/**\n * Server and HacknetServer-related methods for the Player class (PlayerObject)\n */\nimport { IPlayer } from \"../IPlayer\";\n\nimport { CONSTANTS } from \"../../Constants\";\n\nimport { BitNodeMultipliers } from \"../../BitNode/BitNodeMultipliers\";\nimport { Server } from \"../../Server/Server\";\nimport { BaseServer } from \"../../Server/BaseServer\";\nimport { HacknetServer } from \"../../Hacknet/HacknetServer\";\nimport { GetServer, AddToAllServers, createUniqueRandomIp } from \"../../Server/AllServers\";\nimport { SpecialServers } from \"../../Server/data/SpecialServers\";\n\nexport function hasTorRouter(this: IPlayer): boolean {\n return !!GetServer(SpecialServers.DarkWeb);\n}\n\nexport function getCurrentServer(this: IPlayer): BaseServer {\n const server = GetServer(this.currentServer);\n if (server === null) throw new Error(`somehow connected to a server that does not exist. ${this.currentServer}`);\n return server;\n}\n\nexport function getHomeComputer(this: IPlayer): Server {\n const home = GetServer(\"home\");\n if (home instanceof Server) return home;\n throw new Error(\"home computer was not a normal server\");\n}\n\nexport function getUpgradeHomeRamCost(this: IPlayer): number {\n //Calculate how many times ram has been upgraded (doubled)\n const currentRam = this.getHomeComputer().maxRam;\n const numUpgrades = Math.log2(currentRam);\n\n //Calculate cost\n //Have cost increase by some percentage each time RAM has been upgraded\n const mult = Math.pow(1.58, numUpgrades);\n const cost = currentRam * CONSTANTS.BaseCostFor1GBOfRamHome * mult * BitNodeMultipliers.HomeComputerRamCost;\n return cost;\n}\n\nexport function getUpgradeHomeCoresCost(this: IPlayer): number {\n return 1e9 * Math.pow(7.5, this.getHomeComputer().cpuCores);\n}\n\nexport function createHacknetServer(this: IPlayer): HacknetServer {\n const numOwned = this.hacknetNodes.length;\n const name = `hacknet-node-${numOwned}`;\n const server = new HacknetServer({\n adminRights: true,\n hostname: name,\n ip: createUniqueRandomIp(),\n // player: this,\n });\n this.hacknetNodes.push(server.hostname);\n\n // Configure the HacknetServer to actually act as a Server\n AddToAllServers(server);\n const homeComputer = this.getHomeComputer();\n homeComputer.serversOnNetwork.push(server.hostname);\n server.serversOnNetwork.push(SpecialServers.Home);\n\n return server;\n}\n","import { Player } from \"../Player\";\nimport { getRandomInt } from \"../utils/helpers/getRandomInt\";\nimport { addOffset } from \"../utils/helpers/addOffset\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\nimport { BladeburnerConstants } from \"./data/Constants\";\nimport { IBladeburner } from \"./IBladeburner\";\nimport { IAction, ISuccessChanceParams } from \"./IAction\";\n\nclass StatsMultiplier {\n [key: string]: number;\n\n hack = 0;\n str = 0;\n def = 0;\n dex = 0;\n agi = 0;\n cha = 0;\n int = 0;\n}\n\nexport interface IActionParams {\n name?: string;\n level?: number;\n maxLevel?: number;\n autoLevel?: boolean;\n baseDifficulty?: number;\n difficultyFac?: number;\n rewardFac?: number;\n successes?: number;\n failures?: number;\n rankGain?: number;\n rankLoss?: number;\n hpLoss?: number;\n hpLost?: number;\n isStealth?: boolean;\n isKill?: boolean;\n count?: number;\n weights?: StatsMultiplier;\n decays?: StatsMultiplier;\n teamCount?: number;\n}\n\nexport class Action implements IAction {\n name = \"\";\n\n // Difficulty scales with level. See getDifficulty() method\n level = 1;\n maxLevel = 1;\n autoLevel = true;\n baseDifficulty = 100;\n difficultyFac = 1.01;\n\n // Rank increase/decrease is affected by this exponent\n rewardFac = 1.02;\n\n successes = 0;\n failures = 0;\n\n // All of these scale with level/difficulty\n rankGain = 0;\n rankLoss = 0;\n hpLoss = 0;\n hpLost = 0;\n\n // Action Category. Current categories are stealth and kill\n isStealth = false;\n isKill = false;\n\n /**\n * Number of this contract remaining, and its growth rate\n * Growth rate is an integer and the count will increase by that integer every \"cycle\"\n */\n count: number = getRandomInt(1e3, 25e3);\n\n // Weighting of each stat in determining action success rate\n weights: StatsMultiplier = {\n hack: 1 / 7,\n str: 1 / 7,\n def: 1 / 7,\n dex: 1 / 7,\n agi: 1 / 7,\n cha: 1 / 7,\n int: 1 / 7,\n };\n // Diminishing returns of stats (stat ^ decay where 0 <= decay <= 1)\n decays: StatsMultiplier = {\n hack: 0.9,\n str: 0.9,\n def: 0.9,\n dex: 0.9,\n agi: 0.9,\n cha: 0.9,\n int: 0.9,\n };\n teamCount = 0;\n\n // Base Class for Contracts, Operations, and BlackOps\n constructor(params: IActionParams | null = null) {\n // | null = null\n if (params && params.name) this.name = params.name;\n\n if (params && params.baseDifficulty) this.baseDifficulty = addOffset(params.baseDifficulty, 10);\n if (params && params.difficultyFac) this.difficultyFac = params.difficultyFac;\n\n if (params && params.rewardFac) this.rewardFac = params.rewardFac;\n if (params && params.rankGain) this.rankGain = params.rankGain;\n if (params && params.rankLoss) this.rankLoss = params.rankLoss;\n if (params && params.hpLoss) this.hpLoss = params.hpLoss;\n\n if (params && params.isStealth) this.isStealth = params.isStealth;\n if (params && params.isKill) this.isKill = params.isKill;\n\n if (params && params.count) this.count = params.count;\n\n if (params && params.weights) this.weights = params.weights;\n if (params && params.decays) this.decays = params.decays;\n\n // Check to make sure weights are summed properly\n let sum = 0;\n for (const weight of Object.keys(this.weights)) {\n if (this.weights.hasOwnProperty(weight)) {\n sum += this.weights[weight];\n }\n }\n if (sum - 1 >= 10 * Number.EPSILON) {\n throw new Error(\n \"Invalid weights when constructing Action \" +\n this.name +\n \". The weights should sum up to 1. They sum up to :\" +\n 1,\n );\n }\n\n for (const decay of Object.keys(this.decays)) {\n if (this.decays.hasOwnProperty(decay)) {\n if (this.decays[decay] > 1) {\n throw new Error(`Invalid decays when constructing Action ${this.name}. Decay value cannot be greater than 1`);\n }\n }\n }\n }\n\n getDifficulty(): number {\n const difficulty = this.baseDifficulty * Math.pow(this.difficultyFac, this.level - 1);\n if (isNaN(difficulty)) {\n throw new Error(\"Calculated NaN in Action.getDifficulty()\");\n }\n return difficulty;\n }\n\n /**\n * Tests for success. Should be called when an action has completed\n * @param inst {Bladeburner} - Bladeburner instance\n */\n attempt(inst: IBladeburner): boolean {\n return Math.random() < this.getSuccessChance(inst);\n }\n\n // To be implemented by subtypes\n getActionTimePenalty(): number {\n return 1;\n }\n\n getActionTime(inst: IBladeburner): number {\n const difficulty = this.getDifficulty();\n let baseTime = difficulty / BladeburnerConstants.DifficultyToTimeFactor;\n const skillFac = inst.skillMultipliers.actionTime; // Always < 1\n\n const effAgility = Player.agility * inst.skillMultipliers.effAgi;\n const effDexterity = Player.dexterity * inst.skillMultipliers.effDex;\n const statFac =\n 0.5 *\n (Math.pow(effAgility, BladeburnerConstants.EffAgiExponentialFactor) +\n Math.pow(effDexterity, BladeburnerConstants.EffDexExponentialFactor) +\n effAgility / BladeburnerConstants.EffAgiLinearFactor +\n effDexterity / BladeburnerConstants.EffDexLinearFactor); // Always > 1\n\n baseTime = Math.max(1, (baseTime * skillFac) / statFac);\n\n return Math.ceil(baseTime * this.getActionTimePenalty());\n }\n\n // For actions that have teams. To be implemented by subtypes.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getTeamSuccessBonus(inst: IBladeburner): number {\n return 1;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getActionTypeSkillSuccessBonus(inst: IBladeburner): number {\n return 1;\n }\n\n getChaosCompetencePenalty(inst: IBladeburner, params: ISuccessChanceParams): number {\n const city = inst.getCurrentCity();\n if (params.est) {\n return Math.pow(city.popEst / BladeburnerConstants.PopulationThreshold, BladeburnerConstants.PopulationExponent);\n } else {\n return Math.pow(city.pop / BladeburnerConstants.PopulationThreshold, BladeburnerConstants.PopulationExponent);\n }\n }\n\n getChaosDifficultyBonus(inst: IBladeburner /*, params: ISuccessChanceParams*/): number {\n const city = inst.getCurrentCity();\n if (city.chaos > BladeburnerConstants.ChaosThreshold) {\n const diff = 1 + (city.chaos - BladeburnerConstants.ChaosThreshold);\n const mult = Math.pow(diff, 0.5);\n return mult;\n }\n\n return 1;\n }\n\n getEstSuccessChance(inst: IBladeburner): [number, number] {\n function clamp(x: number): number {\n return Math.max(0, Math.min(x, 1));\n }\n const est = this.getSuccessChance(inst, { est: true });\n const real = this.getSuccessChance(inst);\n const diff = Math.abs(real - est);\n let low = real - diff;\n let high = real + diff;\n const city = inst.getCurrentCity();\n const r = city.pop / city.popEst;\n if (r < 1) low *= r;\n else high *= r;\n return [clamp(low), clamp(high)];\n }\n\n /**\n * @inst - Bladeburner Object\n * @params - options:\n * est (bool): Get success chance estimate instead of real success chance\n */\n getSuccessChance(inst: IBladeburner, params: ISuccessChanceParams = { est: false }): number {\n if (inst == null) {\n throw new Error(\"Invalid Bladeburner instance passed into Action.getSuccessChance\");\n }\n let difficulty = this.getDifficulty();\n let competence = 0;\n for (const stat of Object.keys(this.weights)) {\n if (this.weights.hasOwnProperty(stat)) {\n const playerStatLvl = Player.queryStatFromString(stat);\n const key = \"eff\" + stat.charAt(0).toUpperCase() + stat.slice(1);\n let effMultiplier = inst.skillMultipliers[key];\n if (effMultiplier == null) {\n console.error(`Failed to find Bladeburner Skill multiplier for: ${stat}`);\n effMultiplier = 1;\n }\n competence += this.weights[stat] * Math.pow(effMultiplier * playerStatLvl, this.decays[stat]);\n }\n }\n competence *= Player.getIntelligenceBonus(0.75);\n competence *= inst.calculateStaminaPenalty();\n\n competence *= this.getTeamSuccessBonus(inst);\n\n competence *= this.getChaosCompetencePenalty(inst, params);\n difficulty *= this.getChaosDifficultyBonus(inst);\n\n if (this.name == \"Raid\" && inst.getCurrentCity().comms <= 0) {\n return 0;\n }\n\n // Factor skill multipliers into success chance\n competence *= inst.skillMultipliers.successChanceAll;\n competence *= this.getActionTypeSkillSuccessBonus(inst);\n if (this.isStealth) {\n competence *= inst.skillMultipliers.successChanceStealth;\n }\n if (this.isKill) {\n competence *= inst.skillMultipliers.successChanceKill;\n }\n\n // Augmentation multiplier\n competence *= Player.bladeburner_success_chance_mult;\n\n if (isNaN(competence)) {\n throw new Error(\"Competence calculated as NaN in Action.getSuccessChance()\");\n }\n return Math.min(1, competence / difficulty);\n }\n\n getSuccessesNeededForNextLevel(baseSuccessesPerLevel: number): number {\n return Math.ceil(0.5 * this.maxLevel * (2 * baseSuccessesPerLevel + (this.maxLevel - 1)));\n }\n\n setMaxLevel(baseSuccessesPerLevel: number): void {\n if (this.successes >= this.getSuccessesNeededForNextLevel(baseSuccessesPerLevel)) {\n ++this.maxLevel;\n }\n }\n\n toJSON(): any {\n return Generic_toJSON(\"Action\", this);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Action {\n return Generic_fromJSON(Action, value.data);\n }\n}\n\nReviver.constructors.Action = Action;\n","import { FactionNames } from \"./Faction/data/FactionNames\";\nimport { CityName } from \"./Locations/data/CityNames\";\nimport { Augmentations } from \"./Augmentation/Augmentations\";\nimport { augmentationExists, initAugmentations } from \"./Augmentation/AugmentationHelpers\";\nimport { AugmentationNames } from \"./Augmentation/data/AugmentationNames\";\nimport { initBitNodeMultipliers } from \"./BitNode/BitNode\";\nimport { Bladeburner } from \"./Bladeburner/Bladeburner\";\nimport { Companies, initCompanies } from \"./Company/Companies\";\nimport { resetIndustryResearchTrees } from \"./Corporation/IndustryData\";\nimport { Programs } from \"./Programs/Programs\";\nimport { Faction } from \"./Faction/Faction\";\nimport { Factions, initFactions } from \"./Faction/Factions\";\nimport { joinFaction } from \"./Faction/FactionHelpers\";\nimport { updateHashManagerCapacity } from \"./Hacknet/HacknetHelpers\";\nimport { initMessages } from \"./Message/MessageHelpers\";\nimport { prestigeWorkerScripts } from \"./NetscriptWorker\";\nimport { Player } from \"./Player\";\nimport { Router } from \"./ui/GameRoot\";\nimport { resetPidCounter } from \"./Netscript/Pid\";\nimport { LiteratureNames } from \"./Literature/data/LiteratureNames\";\n\nimport { GetServer, AddToAllServers, initForeignServers, prestigeAllServers } from \"./Server/AllServers\";\nimport { prestigeHomeComputer } from \"./Server/ServerHelpers\";\nimport { SourceFileFlags, updateSourceFileFlags } from \"./SourceFile/SourceFileFlags\";\nimport { SpecialServers } from \"./Server/data/SpecialServers\";\nimport { deleteStockMarket, initStockMarket, initSymbolToStockMap } from \"./StockMarket/StockMarket\";\nimport { Terminal } from \"./Terminal\";\n\nimport { dialogBoxCreate } from \"./ui/React/DialogBox\";\n\nimport { staneksGift } from \"./CotMG/Helper\";\nimport { ProgramsSeen } from \"./Programs/ui/ProgramsRoot\";\nimport { InvitationsSeen } from \"./Faction/ui/FactionsRoot\";\nimport { CONSTANTS } from \"./Constants\";\nimport { LogBoxClearEvents } from \"./ui/React/LogBoxManager\";\n\nconst BitNode8StartingMoney = 250e6;\n\n// Prestige by purchasing augmentation\nexport function prestigeAugmentation(): void {\n initBitNodeMultipliers(Player);\n\n const maintainMembership = Player.factions.concat(Player.factionInvitations).filter(function (faction) {\n return Factions[faction].getInfo().keep;\n });\n Player.prestigeAugmentation();\n\n // Delete all Worker Scripts objects\n prestigeWorkerScripts();\n\n const homeComp = Player.getHomeComputer();\n // Delete all servers except home computer\n prestigeAllServers();\n\n // Reset home computer (only the programs) and add to AllServers\n AddToAllServers(homeComp);\n prestigeHomeComputer(Player, homeComp);\n\n if (augmentationExists(AugmentationNames.Neurolink) && Augmentations[AugmentationNames.Neurolink].owned) {\n homeComp.programs.push(Programs.FTPCrackProgram.name);\n homeComp.programs.push(Programs.RelaySMTPProgram.name);\n }\n if (augmentationExists(AugmentationNames.CashRoot) && Augmentations[AugmentationNames.CashRoot].owned) {\n Player.setMoney(1e6);\n homeComp.programs.push(Programs.BruteSSHProgram.name);\n }\n if (augmentationExists(AugmentationNames.PCMatrix) && Augmentations[AugmentationNames.PCMatrix].owned) {\n homeComp.programs.push(Programs.DeepscanV1.name);\n homeComp.programs.push(Programs.AutoLink.name);\n }\n\n if (Player.sourceFileLvl(5) > 0 || Player.bitNodeN === 5) {\n homeComp.programs.push(Programs.Formulas.name);\n }\n\n // Re-create foreign servers\n initForeignServers(Player.getHomeComputer());\n\n // Gain favor for Companies\n for (const member of Object.keys(Companies)) {\n if (Companies.hasOwnProperty(member)) {\n Companies[member].gainFavor();\n }\n }\n\n // Gain favor for factions\n for (const member of Object.keys(Factions)) {\n if (Factions.hasOwnProperty(member)) {\n Factions[member].gainFavor();\n }\n }\n\n // Stop a Terminal action if there is one.\n if (Terminal.action !== null) {\n Terminal.finishAction(Router, Player, true);\n }\n Terminal.clear();\n LogBoxClearEvents.emit();\n\n // Re-initialize things - This will update any changes\n initFactions(); // Factions must be initialized before augmentations\n\n Player.factionInvitations = Player.factionInvitations.concat(maintainMembership);\n initAugmentations(); // Calls reapplyAllAugmentations() and resets Player multipliers\n Player.reapplyAllSourceFiles();\n initCompanies();\n\n // Messages\n initMessages();\n\n // Apply entropy from grafting\n Player.applyEntropy(Player.entropy);\n\n // Gang\n const gang = Player.gang;\n if (Player.inGang() && gang !== null) {\n const faction = Factions[gang.facName];\n if (faction instanceof Faction) {\n joinFaction(faction);\n }\n const penalty = 0.95;\n for (const m of gang.members) {\n m.hack_asc_points *= penalty;\n m.str_asc_points *= penalty;\n m.def_asc_points *= penalty;\n m.dex_asc_points *= penalty;\n m.agi_asc_points *= penalty;\n m.cha_asc_points *= penalty;\n }\n }\n\n // BitNode 3: Corporatocracy\n if (Player.bitNodeN === 3) {\n homeComp.messages.push(LiteratureNames.CorporationManagementHandbook);\n }\n\n // Cancel Bladeburner action\n if (Player.bladeburner instanceof Bladeburner) {\n Player.bladeburner.prestige();\n }\n\n // BitNode 8: Ghost of Wall Street\n if (Player.bitNodeN === 8) {\n Player.money = BitNode8StartingMoney;\n }\n if (Player.bitNodeN === 8 || SourceFileFlags[8] > 0) {\n Player.hasWseAccount = true;\n Player.hasTixApiAccess = true;\n }\n\n // Reset Stock market\n if (Player.hasWseAccount) {\n initStockMarket();\n initSymbolToStockMap();\n }\n\n // Red Pill\n if (augmentationExists(AugmentationNames.TheRedPill) && Augmentations[AugmentationNames.TheRedPill].owned) {\n const WorldDaemon = GetServer(SpecialServers.WorldDaemon);\n const DaedalusServer = GetServer(SpecialServers.DaedalusServer);\n if (WorldDaemon && DaedalusServer) {\n WorldDaemon.serversOnNetwork.push(DaedalusServer.hostname);\n DaedalusServer.serversOnNetwork.push(WorldDaemon.hostname);\n }\n }\n\n if (augmentationExists(AugmentationNames.StaneksGift1) && Augmentations[AugmentationNames.StaneksGift1].owned) {\n joinFaction(Factions[FactionNames.ChurchOfTheMachineGod]);\n }\n\n staneksGift.prestigeAugmentation();\n\n resetPidCounter();\n ProgramsSeen.splice(0, ProgramsSeen.length);\n InvitationsSeen.splice(0, InvitationsSeen.length);\n}\n\n// Prestige by destroying Bit Node and gaining a Source File\nexport function prestigeSourceFile(flume: boolean): void {\n initBitNodeMultipliers(Player);\n updateSourceFileFlags(Player);\n\n Player.prestigeSourceFile();\n prestigeWorkerScripts(); // Delete all Worker Scripts objects\n\n const homeComp = Player.getHomeComputer();\n\n // Stop a Terminal action if there is one.\n if (Terminal.action !== null) {\n Terminal.finishAction(Router, Player, true);\n }\n Terminal.clear();\n LogBoxClearEvents.emit();\n\n // Delete all servers except home computer\n prestigeAllServers(); // Must be done before initForeignServers()\n\n // Reset home computer (only the programs) and add to AllServers\n AddToAllServers(homeComp);\n prestigeHomeComputer(Player, homeComp);\n\n // Re-create foreign servers\n initForeignServers(Player.getHomeComputer());\n\n if (SourceFileFlags[9] >= 2) {\n homeComp.setMaxRam(128);\n } else if (SourceFileFlags[1] > 0) {\n homeComp.setMaxRam(32);\n } else {\n homeComp.setMaxRam(8);\n }\n homeComp.cpuCores = 1;\n\n // Reset favor for Companies\n for (const member of Object.keys(Companies)) {\n if (Companies.hasOwnProperty(member)) {\n Companies[member].favor = 0;\n }\n }\n\n // Reset favor for factions\n for (const member of Object.keys(Factions)) {\n if (Factions.hasOwnProperty(member)) {\n Factions[member].favor = 0;\n }\n }\n\n // Stop a Terminal action if there is one\n if (Terminal.action !== null) {\n Terminal.finishAction(Router, Player, true);\n }\n\n // Delete all Augmentations\n for (const name of Object.keys(Augmentations)) {\n if (Augmentations.hasOwnProperty(name)) {\n delete Augmentations[name];\n }\n }\n\n // Give levels of NeuroFluxGoverner for Source-File 12. Must be done here before Augmentations are recalculated\n if (SourceFileFlags[12] > 0) {\n Player.augmentations.push({\n name: AugmentationNames.NeuroFluxGovernor,\n level: SourceFileFlags[12],\n });\n }\n\n // Re-initialize things - This will update any changes\n initFactions(); // Factions must be initialized before augmentations\n initAugmentations(); // Calls reapplyAllAugmentations() and resets Player multipliers\n Player.reapplyAllSourceFiles();\n initCompanies();\n\n // Messages\n initMessages();\n\n if (Player.sourceFileLvl(5) > 0 || Player.bitNodeN === 5) {\n homeComp.programs.push(Programs.Formulas.name);\n }\n\n // BitNode 3: Corporatocracy\n if (Player.bitNodeN === 3) {\n homeComp.messages.push(LiteratureNames.CorporationManagementHandbook);\n dialogBoxCreate(\n \"You received a copy of the Corporation Management Handbook on your home computer. \" +\n \"Read it if you need help getting started with Corporations!\",\n );\n }\n\n // BitNode 8: Ghost of Wall Street\n if (Player.bitNodeN === 8) {\n Player.money = BitNode8StartingMoney;\n }\n if (Player.bitNodeN === 8 || SourceFileFlags[8] > 0) {\n Player.hasWseAccount = true;\n Player.hasTixApiAccess = true;\n }\n\n // Bit Node 10: Digital Carbon\n if (Player.bitNodeN === 10) {\n dialogBoxCreate(\"Visit VitaLife in New Tokyo if you'd like to purchase a new sleeve!\");\n }\n\n if (Player.bitNodeN === 13) {\n dialogBoxCreate(`Trouble is brewing in ${CityName.Chongqing}`);\n }\n\n // Reset Stock market, gang, and corporation\n if (Player.hasWseAccount) {\n initStockMarket();\n initSymbolToStockMap();\n } else {\n deleteStockMarket();\n }\n\n Player.gang = null;\n Player.corporation = null;\n resetIndustryResearchTrees();\n Player.bladeburner = null;\n\n // Source-File 9 (level 3) effect\n if (SourceFileFlags[9] >= 3) {\n const hserver = Player.createHacknetServer();\n\n hserver.level = 100;\n hserver.cores = 10;\n hserver.cache = 5;\n hserver.updateHashRate(Player.hacknet_node_money_mult);\n hserver.updateHashCapacity();\n updateHashManagerCapacity(Player);\n }\n\n if (Player.bitNodeN === 13) {\n Player.money = CONSTANTS.TravelCost;\n }\n staneksGift.prestigeSourceFile();\n\n // Gain int exp\n if (SourceFileFlags[5] !== 0 && !flume) Player.gainIntelligenceExp(300);\n\n resetPidCounter();\n}\n","import React from \"react\";\nimport { CityName } from \"../../Locations/data/CityNames\";\nimport Typography from \"@mui/material/Typography\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\ninterface ICityProps {\n currentCity: CityName;\n city: CityName;\n onTravel: (city: CityName) => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n travel: {\n color: theme.colors.white,\n lineHeight: \"1em\",\n whiteSpace: \"pre\",\n cursor: \"pointer\",\n },\n }),\n);\n\nfunction City(props: ICityProps): React.ReactElement {\n const classes = useStyles();\n if (props.city !== props.currentCity) {\n return (\n {props.city}}>\n props.onTravel(props.city)} className={classes.travel}>\n {props.city[0]}\n \n \n );\n }\n return {props.city[0]};\n}\n\ninterface IProps {\n currentCity: CityName;\n onTravel: (city: CityName) => void;\n}\n\nexport function WorldMap(props: IProps): React.ReactElement {\n // prettier-ignore\n return (\n <>\n ,_ . ._. _. .\n , _-\\','|~\\~ ~/ ;-'_ _-' ,;_;_, ~~-\n /~~-\\_/-'~'--' \\~~| ', ,' / / ~|-_\\_/~/~ ~~--~~~~'--_\n / ,/'-/~ '\\ ,' _ , ','|~ ._/-, /~\n ~/-'~\\_, '-,| '|. ' ~ ,\\ /'~ / /_ /~\n .-~ '| '',\\~|\\ _\\~ ,_ , /,\n '\\ /'~ |_/~\\\\,-,~ \\ \" ,_,/ |\n | / ._-~'\\_ _~| \\ ) \n \\ __-\\ '/ ~ |\\ \\_ / ~\n ., '\\ |, ~-_ - | \\\\_' ~| /\\ \\~ ,\n ~-_' _; '\\ '-, \\,' /\\/ |\n '\\_,~'\\_ \\_ _, /' ' |, /|'\n / \\_ ~ | / \\ ~'; -,_.\n | ~\\ | | , '-_, ,; ~ ~\\\n \\, / \\ / /| ,-, , -,\n | ,/ | |' |/ ,- ~ \\ '.\n ,| ,/ \\ ,/ \\ |\n / | ~ -~~-, / _\n | ,-' ~ /\n / ,' ~\n ',| ~\n ~'\n >\n );\n}\n","import React from \"react\";\nimport { formatNumber } from \"../../utils/StringHelperFunctions\";\nimport { StealthIcon } from \"./StealthIcon\";\nimport { KillIcon } from \"./KillIcon\";\nimport { IAction } from \"../IAction\";\nimport { IBladeburner } from \"../IBladeburner\";\n\ninterface IProps {\n bladeburner: IBladeburner;\n action: IAction;\n}\n\nexport function SuccessChance(props: IProps): React.ReactElement {\n const estimatedSuccessChance = props.action.getEstSuccessChance(props.bladeburner);\n\n let chance = <>>;\n if (estimatedSuccessChance[0] === estimatedSuccessChance[1]) {\n chance = <>{formatNumber(estimatedSuccessChance[0] * 100, 1)}%>;\n } else {\n chance = (\n <>\n {formatNumber(estimatedSuccessChance[0] * 100, 1)}% ~ {formatNumber(estimatedSuccessChance[1] * 100, 1)}%\n >\n );\n }\n\n return (\n <>\n Estimated success chance: {chance} {props.action.isStealth ? : <>>}\n {props.action.isKill ? : <>>}\n >\n );\n}\n","import React from \"react\";\nimport { Modal } from \"./Modal\";\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n children: JSX.Element[] | JSX.Element | React.ReactElement[] | React.ReactElement;\n}\n\nexport function StaticModal(props: IProps): React.ReactElement {\n return (\n \n {props.children}\n \n );\n}\n","import React, { useEffect, useState } from \"react\";\n\nfunction replace(str: string, i: number, char: string): string {\n return str.substring(0, i) + char + str.substring(i + 1);\n}\n\ninterface IProps {\n content: string;\n}\n\nfunction randomize(char: string): string {\n const randFrom = (str: string): string => str[Math.floor(Math.random() * str.length)];\n const classes = [\"abcdefghijklmnopqrstuvwxyz\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\", \"1234567890\", \" _\", \"()[]{}<>\"];\n const other = `!@#$%^&*()_+|\\\\';\"/.,?\\`~`;\n\n for (const c of classes) {\n if (c.includes(char)) return randFrom(c);\n }\n\n return randFrom(other);\n}\n\nexport function CorruptableText(props: IProps): JSX.Element {\n const [content, setContent] = useState(props.content);\n\n useEffect(() => {\n let counter = 5;\n const timers: number[] = [];\n const intervalId = setInterval(() => {\n counter--;\n if (counter > 0) return;\n counter = Math.random() * 5;\n const index = Math.random() * content.length;\n const letter = content.charAt(index);\n setContent((content) => replace(content, index, randomize(letter)));\n timers.push(\n window.setTimeout(() => {\n setContent((content) => replace(content, index, letter));\n }, 500),\n );\n }, 20);\n\n return () => {\n clearInterval(intervalId);\n timers.forEach((timerId) => clearTimeout(timerId));\n };\n }, []);\n\n return {content};\n}\n","import React from \"react\";\nimport { DarkWebItems } from \"./DarkWebItems\";\n\nimport { Player } from \"../Player\";\nimport { Terminal } from \"../Terminal\";\nimport { SpecialServers } from \"../Server/data/SpecialServers\";\nimport { numeralWrapper } from \"../ui/numeralFormat\";\nimport { Money } from \"../ui/React/Money\";\nimport { DarkWebItem } from \"./DarkWebItem\";\n\n//Posts a \"help\" message if connected to DarkWeb\nexport function checkIfConnectedToDarkweb(): void {\n const server = Player.getCurrentServer();\n if (server !== null && SpecialServers.DarkWeb == server.hostname) {\n Terminal.print(\n \"You are now connected to the dark web. From the dark web you can purchase illegal items. \" +\n \"Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name]' \" +\n \"to purchase an item. Use 'buy -a' to purchase all unowned items.\",\n );\n }\n}\n\nexport function listAllDarkwebItems(): void {\n for (const key of Object.keys(DarkWebItems)) {\n const item = DarkWebItems[key];\n\n const cost = Player.getHomeComputer().programs.includes(item.program) ? (\n [OWNED]\n ) : (\n \n );\n\n Terminal.printRaw(\n <>\n {item.program} - {cost} - {item.description}\n >,\n );\n }\n}\n\nexport function buyDarkwebItem(itemName: string): void {\n itemName = itemName.toLowerCase();\n\n // find the program that matches, if any\n let item: DarkWebItem | null = null;\n\n for (const key of Object.keys(DarkWebItems)) {\n const i = DarkWebItems[key];\n if (i.program.toLowerCase() == itemName) {\n item = i;\n }\n }\n\n // return if invalid\n if (item === null) {\n Terminal.error(\"Unrecognized item: \" + itemName);\n return;\n }\n\n // return if the player already has it.\n if (Player.hasProgram(item.program)) {\n Terminal.print(\"You already have the \" + item.program + \" program\");\n return;\n }\n\n // return if the player doesn't have enough money\n if (Player.money < item.price) {\n Terminal.error(\"Not enough money to purchase \" + item.program);\n return;\n }\n\n // buy and push\n Player.loseMoney(item.price, \"other\");\n\n const programsRef = Player.getHomeComputer().programs;\n // Remove partially created program if there is one\n const existingPartialExeIndex = programsRef.findIndex(\n (program) => item?.program && program.startsWith(item?.program),\n );\n // findIndex returns -1 if there is no match, we only want to splice on a match\n if (existingPartialExeIndex > -1) {\n programsRef.splice(existingPartialExeIndex, 1);\n }\n // Add the newly bought, full .exe\n Player.getHomeComputer().programs.push(item.program);\n\n Terminal.print(\n \"You have purchased the \" + item.program + \" program. The new program can be found on your home computer.\",\n );\n}\n\nexport function buyAllDarkwebItems(): void {\n const itemsToBuy: DarkWebItem[] = [];\n let cost = 0;\n\n for (const key of Object.keys(DarkWebItems)) {\n const item = DarkWebItems[key];\n if (!Player.hasProgram(item.program)) {\n itemsToBuy.push(item);\n cost += item.price;\n }\n }\n\n if (itemsToBuy.length === 0) {\n Terminal.print(\"All available programs have been purchased already.\");\n return;\n }\n\n if (cost > Player.money) {\n Terminal.error(\n \"Not enough money to purchase remaining programs, \" + numeralWrapper.formatMoney(cost) + \" required\",\n );\n return;\n }\n\n for (const item of itemsToBuy) {\n buyDarkwebItem(item.program);\n }\n}\n","/**\n * Functions used to determine whether the target can be hacked (or grown/weakened).\n * Meant to be used for Netscript implementation\n *\n * The returned status object's message should be used for logging in Netscript\n */\nimport { IReturnStatus } from \"../types\";\n\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { Server } from \"../Server/Server\";\n\nfunction baseCheck(server: Server, fnName: string): IReturnStatus {\n const hostname = server.hostname;\n\n if (!(\"requiredHackingSkill\" in server)) {\n return {\n res: false,\n msg: `Cannot ${fnName} ${hostname} server because it is a Hacknet Node`,\n };\n }\n\n if (server.hasAdminRights === false) {\n return {\n res: false,\n msg: `Cannot ${fnName} ${hostname} server because you do not have root access`,\n };\n }\n\n return { res: true };\n}\n\nexport function netscriptCanHack(server: Server, p: IPlayer): IReturnStatus {\n const initialCheck = baseCheck(server, \"hack\");\n if (!initialCheck.res) {\n return initialCheck;\n }\n\n const s = server;\n if (s.requiredHackingSkill > p.hacking) {\n return {\n res: false,\n msg: `Cannot hack ${server.hostname} server because your hacking skill is not high enough`,\n };\n }\n\n return { res: true };\n}\n\nexport function netscriptCanGrow(server: Server): IReturnStatus {\n return baseCheck(server, \"grow\");\n}\n\nexport function netscriptCanWeaken(server: Server): IReturnStatus {\n return baseCheck(server, \"weaken\");\n}\n","import { sum } from \"lodash\";\n\nimport { Augmentation } from \"../../Augmentation/Augmentation\";\nimport { CONSTANTS } from \"../../Constants\";\n\nexport interface IConstructorParams {\n augmentation: Augmentation;\n readonly cost: number;\n readonly time: number;\n}\n\nexport class GraftableAugmentation {\n // The augmentation that this craftable corresponds to\n augmentation: Augmentation;\n\n constructor(augmentation: Augmentation) {\n this.augmentation = augmentation;\n }\n\n get cost(): number {\n return this.augmentation.startingCost * CONSTANTS.AugmentationGraftingCostMult;\n }\n\n get time(): number {\n // Time = 1 hour * log_2(sum(aug multipliers) || 1) + 30 minutes\n const antiLog = Math.max(sum(Object.values(this.augmentation.mults)), 1);\n\n const mult = Math.log2(antiLog);\n return (CONSTANTS.AugmentationGraftingTimeBase * mult + CONSTANTS.MillisecondsPerHalfHour) / 2;\n }\n}\n","import React from \"react\";\nimport { numeralWrapper } from \"../numeralFormat\";\nimport { Reputation } from \"./Reputation\";\n\nexport function ReputationRate({ reputation }: { reputation: number }): React.ReactElement {\n return ;\n}\n","import { KEY } from \"../utils/helpers/keyCodes\";\nimport { substituteAliases } from \"../Alias\";\n// Helper function that checks if an argument (which is a string) is a valid number\nfunction isNumber(str: string): boolean {\n if (typeof str != \"string\") {\n return false;\n } // Only process strings\n return !isNaN(str as unknown as number) && !isNaN(parseFloat(str));\n}\nexport function ParseCommands(commands: string): string[] {\n // Sanitize input\n commands = commands.trim();\n // Replace all extra whitespace in command with a single space\n commands = commands.replace(/\\s\\s+/g, \" \");\n\n const match = commands.match(/(?:'[^']*'|\"[^\"]*\"|[^;\"])*/g);\n if (!match) return [];\n // Split commands and execute sequentially\n const allCommands = match\n .map(substituteAliases)\n .map((c) => c.match(/(?:'[^']*'|\"[^\"]*\"|[^;\"])*/g))\n .flat();\n\n const out: string[] = [];\n for (const c of allCommands) {\n if (c === null) continue;\n if (c.match(/^\\s*$/)) {\n continue;\n } // Don't run commands that only have whitespace\n out.push(c.trim());\n }\n return out;\n}\n\nexport function ParseCommand(command: string): (string | number | boolean)[] {\n // This will be used to keep track of whether we're in a quote. This is for situations\n // like the alias command:\n // alias run=\"run NUKE.exe\"\n // We want the run=\"run NUKE.exe\" to be parsed as a single command, so this flag\n // will keep track of whether we have a quote in\n let inQuote = ``;\n\n // Returns an array with the command and its arguments in each index\n // Properly handles quotation marks (e.g. `run foo.script \"the sun\"` will return [run, foo.script, the sun])\n const args = [];\n let start = 0,\n i = 0;\n let prevChar = \"\"; // Previous character\n while (i < command.length) {\n let escaped = false; // Check for escaped quotation marks\n if (i >= 1) {\n prevChar = command.charAt(i - 1);\n if (prevChar === \"\\\\\") {\n escaped = true;\n }\n }\n\n const c = command.charAt(i);\n if (c === KEY.DOUBLE_QUOTE) {\n // Double quotes\n if (!escaped && prevChar === KEY.SPACE) {\n const endQuote = command.indexOf(KEY.DOUBLE_QUOTE, i + 1);\n if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === KEY.SPACE)) {\n args.push(command.substr(i + 1, endQuote - i - 1));\n if (endQuote === command.length - 1) {\n start = i = endQuote + 1;\n } else {\n start = i = endQuote + 2; // Skip the space\n }\n continue;\n }\n } else if (inQuote === ``) {\n inQuote = KEY.DOUBLE_QUOTE;\n } else if (inQuote === KEY.DOUBLE_QUOTE) {\n inQuote = ``;\n }\n } else if (c === KEY.QUOTE) {\n // Single quotes, same thing as above\n if (!escaped && prevChar === KEY.SPACE) {\n const endQuote = command.indexOf(KEY.QUOTE, i + 1);\n if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === KEY.SPACE)) {\n args.push(command.substr(i + 1, endQuote - i - 1));\n if (endQuote === command.length - 1) {\n start = i = endQuote + 1;\n } else {\n start = i = endQuote + 2; // Skip the space\n }\n continue;\n }\n } else if (inQuote === ``) {\n inQuote = KEY.QUOTE;\n } else if (inQuote === KEY.QUOTE) {\n inQuote = ``;\n }\n } else if (c === KEY.SPACE && inQuote === ``) {\n const arg = command.substr(start, i - start);\n\n // If this is a number, convert it from a string to number\n if (isNumber(arg)) {\n args.push(parseFloat(arg));\n } else if (arg === \"true\") {\n args.push(true);\n } else if (arg === \"false\") {\n args.push(false);\n } else {\n args.push(arg);\n }\n\n start = i + 1;\n }\n ++i;\n }\n\n // Add the last argument\n if (start !== i) {\n const arg = command.substr(start, i - start);\n\n // If this is a number, convert it from string to number\n if (isNumber(arg)) {\n args.push(parseFloat(arg));\n } else if (arg === \"true\") {\n args.push(true);\n } else if (arg === \"false\") {\n args.push(false);\n } else {\n args.push(arg);\n }\n }\n\n return args;\n}\n","import React, { useState } from \"react\";\n\nimport { CinematicLine } from \"./CinematicLine\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\n\ninterface IProps {\n lines: string[];\n auto?: boolean;\n onDone?: () => void;\n}\n\nexport function CinematicText(props: IProps): React.ReactElement {\n const [i, setI] = useState(0);\n const [done, setDone] = useState(false);\n\n function advance(): void {\n const newI = i + 1;\n setI(newI);\n if (newI >= props.lines.length) {\n if (props.onDone && props.auto) props.onDone();\n setDone(true);\n }\n }\n\n return (\n <>\n {props.lines.slice(0, i).map((line, i) => (\n {line}\n ))}\n {props.lines.length > i && }\n {!props.auto && props.onDone && done && }\n >\n );\n}\n","/**\n * Implements the purchasing of extra Duplicate Sleeves from The Covenant,\n * as well as the purchasing of upgrades (memory)\n */\n\nexport const MaxSleevesFromCovenant = 5;\nexport const BaseCostPerSleeve = 10e12;\n","import { Augmentation, IConstructorParams } from \"./Augmentation\";\nimport { AugmentationNames } from \"./data/AugmentationNames\";\nimport { Player } from \"../Player\";\nimport { Programs } from \"../Programs/Programs\";\nimport { WHRNG } from \"../Casino/RNG\";\nimport React from \"react\";\nimport { FactionNames } from \"../Faction/data/FactionNames\";\n\nfunction getRandomBonus(): any {\n const bonuses = [\n {\n bonuses: {\n hacking_chance_mult: 1.25,\n hacking_speed_mult: 1.1,\n hacking_money_mult: 1.25,\n hacking_grow_mult: 1.1,\n },\n description:\n \"Increases the player's hacking chance by 25%. \" +\n \"Increases the player's hacking speed by 10%. \" +\n \"Increases the amount of money the player's gains from hacking by 25%. \" +\n \"Improves grow() by 10%.\",\n },\n {\n bonuses: {\n hacking_mult: 1.15,\n hacking_exp_mult: 2,\n },\n description:\n \"Increases the player's hacking skill by 15%. \" +\n \"Increases the player's hacking experience gain rate by 100%.\",\n },\n {\n bonuses: {\n strength_mult: 1.25,\n strength_exp_mult: 2,\n defense_mult: 1.25,\n defense_exp_mult: 2,\n dexterity_mult: 1.25,\n dexterity_exp_mult: 2,\n agility_mult: 1.25,\n agility_exp_mult: 2,\n },\n description:\n \"Increases all of the player's combat stats by 25%. \" +\n \"Increases all of the player's combat stat experience gain rate by 100%.\",\n },\n {\n bonuses: {\n charisma_mult: 1.5,\n charisma_exp_mult: 2,\n },\n description:\n \"This augmentation increases the player's charisma by 50%. \" +\n \"Increases the player's charisma experience gain rate by 100%.\",\n },\n {\n bonuses: {\n hacknet_node_money_mult: 1.2,\n hacknet_node_purchase_cost_mult: 0.85,\n hacknet_node_ram_cost_mult: 0.85,\n hacknet_node_core_cost_mult: 0.85,\n hacknet_node_level_cost_mult: 0.85,\n },\n description:\n \"Increases the amount of money produced by Hacknet Nodes by 20%. \" +\n \"Decreases all costs related to Hacknet Node by 15%.\",\n },\n {\n bonuses: {\n company_rep_mult: 1.25,\n faction_rep_mult: 1.15,\n work_money_mult: 1.7,\n },\n description:\n \"Increases the amount of money the player gains from working by 70%. \" +\n \"Increases the amount of reputation the player gains when working for a company by 25%. \" +\n \"Increases the amount of reputation the player gains for a faction by 15%.\",\n },\n {\n bonuses: {\n crime_success_mult: 2,\n crime_money_mult: 2,\n },\n description:\n \"Increases the player's crime success rate by 100%. \" +\n \"Increases the amount of money the player gains from crimes by 100%.\",\n },\n ];\n\n const randomNumber = new WHRNG(Math.floor(Player.lastUpdate / 3600000));\n for (let i = 0; i < 5; i++) randomNumber.step();\n\n return bonuses[Math.floor(bonuses.length * randomNumber.random())];\n}\n\nexport const initGeneralAugmentations = (): Augmentation[] => [\n new Augmentation({\n name: AugmentationNames.HemoRecirculator,\n moneyCost: 4.5e7,\n repCost: 1e4,\n info: \"A heart implant that greatly increases the body's ability to effectively use and pump blood.\",\n strength_mult: 1.08,\n defense_mult: 1.08,\n agility_mult: 1.08,\n dexterity_mult: 1.08,\n factions: [FactionNames.Tetrads, FactionNames.TheDarkArmy, FactionNames.TheSyndicate],\n }),\n new Augmentation({\n name: AugmentationNames.Targeting1,\n moneyCost: 1.5e7,\n repCost: 5e3,\n info:\n \"A cranial implant that is embedded within the inner ear structures and optic nerves. It regulates \" +\n \"and enhances balance and hand-eye coordination.\",\n dexterity_mult: 1.1,\n factions: [\n FactionNames.SlumSnakes,\n FactionNames.TheDarkArmy,\n FactionNames.TheSyndicate,\n FactionNames.Sector12,\n FactionNames.Ishima,\n FactionNames.OmniTekIncorporated,\n FactionNames.KuaiGongInternational,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.Targeting2,\n moneyCost: 4.25e7,\n repCost: 8.75e3,\n info:\n \"This upgraded version of the 'Augmented Targeting' implant is capable of augmenting \" +\n \"reality by digitally displaying weaknesses and vital signs of threats.\",\n prereqs: [AugmentationNames.Targeting1],\n dexterity_mult: 1.2,\n factions: [\n FactionNames.TheDarkArmy,\n FactionNames.TheSyndicate,\n FactionNames.Sector12,\n FactionNames.OmniTekIncorporated,\n FactionNames.KuaiGongInternational,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.Targeting3,\n moneyCost: 1.15e8,\n repCost: 2.75e4,\n info: \"The latest version of the 'Augmented Targeting' implant adds the ability to lock-on and track threats.\",\n prereqs: [AugmentationNames.Targeting2],\n dexterity_mult: 1.3,\n factions: [\n FactionNames.TheDarkArmy,\n FactionNames.TheSyndicate,\n FactionNames.OmniTekIncorporated,\n FactionNames.KuaiGongInternational,\n FactionNames.BladeIndustries,\n FactionNames.TheCovenant,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.SyntheticHeart,\n moneyCost: 2.875e9,\n repCost: 7.5e5,\n info:\n \"This advanced artificial heart, created from plasteel and graphene, is capable of pumping blood \" +\n \"more efficiently than an organic heart.\",\n agility_mult: 1.5,\n strength_mult: 1.5,\n factions: [\n FactionNames.KuaiGongInternational,\n FactionNames.FulcrumSecretTechnologies,\n FactionNames.SpeakersForTheDead,\n FactionNames.NWO,\n FactionNames.TheCovenant,\n FactionNames.Daedalus,\n FactionNames.Illuminati,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.SynfibrilMuscle,\n repCost: 4.375e5,\n moneyCost: 1.125e9,\n info:\n \"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside \" +\n \"the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. \" +\n \"Scientists have named these artificially enhanced units 'synfibrils'.\",\n strength_mult: 1.3,\n defense_mult: 1.3,\n factions: [\n FactionNames.KuaiGongInternational,\n FactionNames.FulcrumSecretTechnologies,\n FactionNames.SpeakersForTheDead,\n FactionNames.NWO,\n FactionNames.TheCovenant,\n FactionNames.Daedalus,\n FactionNames.Illuminati,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.CombatRib1,\n repCost: 7.5e3,\n moneyCost: 2.375e7,\n info:\n \"The rib cage is augmented to continuously release boosters into the bloodstream \" +\n \"which increase the oxygen-carrying capacity of blood.\",\n strength_mult: 1.1,\n defense_mult: 1.1,\n factions: [\n FactionNames.SlumSnakes,\n FactionNames.TheDarkArmy,\n FactionNames.TheSyndicate,\n FactionNames.Volhaven,\n FactionNames.Ishima,\n FactionNames.OmniTekIncorporated,\n FactionNames.KuaiGongInternational,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.CombatRib2,\n repCost: 1.875e4,\n moneyCost: 6.5e7,\n info:\n \"An upgraded version of the 'Combat Rib' augmentation that adds potent stimulants which \" +\n \"improve focus and endurance while decreasing reaction time and fatigue.\",\n prereqs: [AugmentationNames.CombatRib1],\n strength_mult: 1.14,\n defense_mult: 1.14,\n factions: [\n FactionNames.TheDarkArmy,\n FactionNames.TheSyndicate,\n FactionNames.Volhaven,\n FactionNames.OmniTekIncorporated,\n FactionNames.KuaiGongInternational,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.CombatRib3,\n repCost: 3.5e4,\n moneyCost: 1.2e8,\n info:\n \"The latest version of the 'Combat Rib' augmentation releases advanced anabolic steroids that \" +\n \"improve muscle mass and physical performance while being safe and free of side effects.\",\n prereqs: [AugmentationNames.CombatRib2],\n strength_mult: 1.18,\n defense_mult: 1.18,\n factions: [\n FactionNames.TheDarkArmy,\n FactionNames.TheSyndicate,\n FactionNames.OmniTekIncorporated,\n FactionNames.KuaiGongInternational,\n FactionNames.BladeIndustries,\n FactionNames.TheCovenant,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.NanofiberWeave,\n repCost: 3.75e4,\n moneyCost: 1.25e8,\n info:\n \"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning, \" +\n \"which improves its regenerative and extracellular homeostasis abilities.\",\n strength_mult: 1.2,\n defense_mult: 1.2,\n factions: [\n FactionNames.TheDarkArmy,\n FactionNames.TheSyndicate,\n FactionNames.OmniTekIncorporated,\n FactionNames.BladeIndustries,\n FactionNames.TianDiHui,\n FactionNames.SpeakersForTheDead,\n FactionNames.FulcrumSecretTechnologies,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.SubdermalArmor,\n repCost: 8.75e5,\n moneyCost: 3.25e9,\n info:\n \"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. \" +\n \"The material is implanted underneath the skin, and is the most advanced form of defensive enhancement \" +\n \"that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective \" +\n \"at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to \" +\n \"mitigate damage from any fire or electrical traumas.\",\n defense_mult: 2.2,\n factions: [\n FactionNames.TheSyndicate,\n FactionNames.FulcrumSecretTechnologies,\n FactionNames.Illuminati,\n FactionNames.Daedalus,\n FactionNames.TheCovenant,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.WiredReflexes,\n repCost: 1.25e3,\n moneyCost: 2.5e6,\n info:\n \"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, \" +\n \"supercharging the spread of neural signals and increasing reflex speed.\",\n agility_mult: 1.05,\n dexterity_mult: 1.05,\n factions: [\n FactionNames.TianDiHui,\n FactionNames.SlumSnakes,\n FactionNames.Sector12,\n FactionNames.Volhaven,\n FactionNames.Aevum,\n FactionNames.Ishima,\n FactionNames.TheSyndicate,\n FactionNames.TheDarkArmy,\n FactionNames.SpeakersForTheDead,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.GrapheneBoneLacings,\n repCost: 1.125e6,\n moneyCost: 4.25e9,\n info: \"Graphene is grafted and fused into the skeletal structure, enhancing bone density and tensile strength.\",\n strength_mult: 1.7,\n defense_mult: 1.7,\n factions: [FactionNames.FulcrumSecretTechnologies, FactionNames.TheCovenant],\n }),\n new Augmentation({\n name: AugmentationNames.BionicSpine,\n repCost: 4.5e4,\n moneyCost: 1.25e8,\n info:\n \"The spine is reconstructed using plasteel and carbon fibers. \" +\n \"It is now capable of stimulating and regulating neural signals \" +\n \"passing through the spinal cord, improving senses and reaction speed. \" +\n \"The 'Bionic Spine' also interfaces with all other 'Bionic' implants.\",\n strength_mult: 1.15,\n defense_mult: 1.15,\n agility_mult: 1.15,\n dexterity_mult: 1.15,\n factions: [\n FactionNames.SpeakersForTheDead,\n FactionNames.TheSyndicate,\n FactionNames.KuaiGongInternational,\n FactionNames.OmniTekIncorporated,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.GrapheneBionicSpine,\n repCost: 1.625e6,\n moneyCost: 6e9,\n info:\n \"An upgrade to the 'Bionic Spine' augmentation. The spine is fused with graphene \" +\n \"which enhances durability and supercharges all body functions.\",\n prereqs: [AugmentationNames.BionicSpine],\n strength_mult: 1.6,\n defense_mult: 1.6,\n agility_mult: 1.6,\n dexterity_mult: 1.6,\n factions: [FactionNames.FulcrumSecretTechnologies, FactionNames.ECorp],\n }),\n new Augmentation({\n name: AugmentationNames.BionicLegs,\n repCost: 1.5e5,\n moneyCost: 3.75e8,\n info: \"Cybernetic legs, created from plasteel and carbon fibers, enhance running speed.\",\n agility_mult: 1.6,\n factions: [\n FactionNames.SpeakersForTheDead,\n FactionNames.TheSyndicate,\n FactionNames.KuaiGongInternational,\n FactionNames.OmniTekIncorporated,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.GrapheneBionicLegs,\n repCost: 7.5e5,\n moneyCost: 4.5e9,\n info:\n \"An upgrade to the 'Bionic Legs' augmentation. The legs are fused \" +\n \"with graphene, greatly enhancing jumping ability.\",\n prereqs: [AugmentationNames.BionicLegs],\n agility_mult: 2.5,\n factions: [FactionNames.MegaCorp, FactionNames.ECorp, FactionNames.FulcrumSecretTechnologies],\n }),\n new Augmentation({\n name: AugmentationNames.SpeechProcessor,\n repCost: 7.5e3,\n moneyCost: 5e7,\n info:\n \"A cochlear implant with an embedded computer that analyzes incoming speech. \" +\n \"The embedded computer processes characteristics of incoming speech, such as tone \" +\n \"and inflection, to pick up on subtle cues and aid in social interactions.\",\n charisma_mult: 1.2,\n factions: [\n FactionNames.TianDiHui,\n FactionNames.Chongqing,\n FactionNames.Sector12,\n FactionNames.NewTokyo,\n FactionNames.Aevum,\n FactionNames.Ishima,\n FactionNames.Volhaven,\n FactionNames.Silhouette,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.TITN41Injection,\n repCost: 2.5e4,\n moneyCost: 1.9e8,\n info:\n \"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that \" +\n \"control personality. The TITN-41 strain alters these genes so that the subject becomes more \" +\n \"outgoing and socialable.\",\n charisma_mult: 1.15,\n charisma_exp_mult: 1.15,\n factions: [FactionNames.Silhouette],\n }),\n new Augmentation({\n name: AugmentationNames.EnhancedSocialInteractionImplant,\n repCost: 3.75e5,\n moneyCost: 1.375e9,\n info:\n \"A cranial implant that greatly assists in the user's ability to analyze social situations \" +\n \"and interactions. The system uses a wide variety of factors such as facial expressions, body \" +\n \"language, and the voice tone, and inflection to determine the best course of action during social\" +\n \"situations. The implant also uses deep learning software to continuously learn new behavior\" +\n \"patterns and how to best respond.\",\n charisma_mult: 1.6,\n charisma_exp_mult: 1.6,\n factions: [\n FactionNames.BachmanAssociates,\n FactionNames.NWO,\n FactionNames.ClarkeIncorporated,\n FactionNames.OmniTekIncorporated,\n FactionNames.FourSigma,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.BitWire,\n repCost: 3.75e3,\n moneyCost: 1e7,\n info:\n \"A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing \" +\n \"capabilities.\",\n hacking_mult: 1.05,\n factions: [FactionNames.CyberSec, FactionNames.NiteSec],\n }),\n new Augmentation({\n name: AugmentationNames.ArtificialBioNeuralNetwork,\n repCost: 2.75e5,\n moneyCost: 3e9,\n info:\n \"A network consisting of millions of nanoprocessors is embedded into the brain. \" +\n \"The network is meant to mimic the way a biological brain solves a problem, with each \" +\n \"nanoprocessor acting similar to the way a neuron would in a neural network. However, these \" +\n \"nanoprocessors are programmed to perform computations much faster than organic neurons, \" +\n \"allowing the user to solve much more complex problems at a much faster rate.\",\n hacking_speed_mult: 1.03,\n hacking_money_mult: 1.15,\n hacking_mult: 1.12,\n factions: [FactionNames.BitRunners, FactionNames.FulcrumSecretTechnologies],\n }),\n new Augmentation({\n name: AugmentationNames.ArtificialSynapticPotentiation,\n repCost: 6.25e3,\n moneyCost: 8e7,\n info:\n \"The body is injected with a chemical that artificially induces synaptic potentiation, \" +\n \"otherwise known as the strengthening of synapses. This results in enhanced cognitive abilities.\",\n hacking_speed_mult: 1.02,\n hacking_chance_mult: 1.05,\n hacking_exp_mult: 1.05,\n factions: [FactionNames.TheBlackHand, FactionNames.NiteSec],\n }),\n new Augmentation({\n name: AugmentationNames.EnhancedMyelinSheathing,\n repCost: 1e5,\n moneyCost: 1.375e9,\n info:\n \"Electrical signals are used to induce a new, artificial form of myelinogenesis in the human body. \" +\n \"This process results in the proliferation of new, synthetic myelin sheaths in the nervous \" +\n \"system. These myelin sheaths can propogate neuro-signals much faster than their organic \" +\n \"counterparts, leading to greater processing speeds and better brain function.\",\n hacking_speed_mult: 1.03,\n hacking_exp_mult: 1.1,\n hacking_mult: 1.08,\n factions: [FactionNames.FulcrumSecretTechnologies, FactionNames.BitRunners, FactionNames.TheBlackHand],\n }),\n new Augmentation({\n name: AugmentationNames.SynapticEnhancement,\n repCost: 2e3,\n moneyCost: 7.5e6,\n info:\n \"A small cranial implant that continuously uses weak electrical signals to stimulate the brain and \" +\n \"induce stronger synaptic activity. This improves the user's cognitive abilities.\",\n hacking_speed_mult: 1.03,\n factions: [FactionNames.CyberSec, FactionNames.Aevum],\n }),\n new Augmentation({\n name: AugmentationNames.NeuralRetentionEnhancement,\n repCost: 2e4,\n moneyCost: 2.5e8,\n info:\n \"Chemical injections are used to permanently alter and strengthen the brain's neuronal \" +\n \"circuits, strengthening the ability to retain information.\",\n hacking_exp_mult: 1.25,\n factions: [FactionNames.NiteSec],\n }),\n new Augmentation({\n name: AugmentationNames.DataJack,\n repCost: 1.125e5,\n moneyCost: 4.5e8,\n info:\n \"A brain implant that provides an interface for direct, wireless communication between a computer's main \" +\n \"memory and the mind. This implant allows the user to not only access a computer's memory, but also alter \" +\n \"and delete it.\",\n hacking_money_mult: 1.25,\n factions: [\n FactionNames.BitRunners,\n FactionNames.TheBlackHand,\n FactionNames.NiteSec,\n FactionNames.Chongqing,\n FactionNames.NewTokyo,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.ENM,\n repCost: 1.5e4,\n moneyCost: 2.5e8,\n info:\n \"A thin device embedded inside the arm containing a wireless module capable of connecting \" +\n \"to nearby networks. Once connected, the Netburner Module is capable of capturing and \" +\n \"processing all of the traffic on that network. By itself, the Embedded Netburner Module does \" +\n \"not do much, but a variety of very powerful upgrades can be installed that allow you to fully \" +\n \"control the traffic on a network.\",\n hacking_mult: 1.08,\n factions: [\n FactionNames.BitRunners,\n FactionNames.TheBlackHand,\n FactionNames.NiteSec,\n FactionNames.ECorp,\n FactionNames.MegaCorp,\n FactionNames.FulcrumSecretTechnologies,\n FactionNames.NWO,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.ENMCore,\n repCost: 175e3,\n moneyCost: 2.5e9,\n info:\n \"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. \" +\n \"This upgrade allows the Embedded Netburner Module to generate its own data on a network.\",\n prereqs: [AugmentationNames.ENM],\n hacking_speed_mult: 1.03,\n hacking_money_mult: 1.1,\n hacking_chance_mult: 1.03,\n hacking_exp_mult: 1.07,\n hacking_mult: 1.07,\n factions: [\n FactionNames.BitRunners,\n FactionNames.TheBlackHand,\n FactionNames.ECorp,\n FactionNames.MegaCorp,\n FactionNames.FulcrumSecretTechnologies,\n FactionNames.NWO,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.ENMCoreV2,\n repCost: 1e6,\n moneyCost: 4.5e9,\n info:\n \"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. \" +\n \"This upgraded firmware allows the Embedded Netburner Module to control information on \" +\n \"a network by re-routing traffic, spoofing IP addresses, and altering the data inside network \" +\n \"packets.\",\n prereqs: [AugmentationNames.ENMCore],\n hacking_speed_mult: 1.05,\n hacking_money_mult: 1.3,\n hacking_chance_mult: 1.05,\n hacking_exp_mult: 1.15,\n hacking_mult: 1.08,\n factions: [\n FactionNames.BitRunners,\n FactionNames.ECorp,\n FactionNames.MegaCorp,\n FactionNames.FulcrumSecretTechnologies,\n FactionNames.NWO,\n FactionNames.BladeIndustries,\n FactionNames.OmniTekIncorporated,\n FactionNames.KuaiGongInternational,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.ENMCoreV3,\n repCost: 1.75e6,\n moneyCost: 7.5e9,\n info:\n \"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. \" +\n \"This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into \" +\n \"any device on a network.\",\n prereqs: [AugmentationNames.ENMCoreV2],\n hacking_speed_mult: 1.05,\n hacking_money_mult: 1.4,\n hacking_chance_mult: 1.1,\n hacking_exp_mult: 1.25,\n hacking_mult: 1.1,\n factions: [\n FactionNames.ECorp,\n FactionNames.MegaCorp,\n FactionNames.FulcrumSecretTechnologies,\n FactionNames.NWO,\n FactionNames.Daedalus,\n FactionNames.TheCovenant,\n FactionNames.Illuminati,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.ENMAnalyzeEngine,\n repCost: 6.25e5,\n moneyCost: 6e9,\n info:\n \"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster \" +\n \"that vastly outperforms the Netburner Module's native single-core processor.\",\n prereqs: [AugmentationNames.ENM],\n hacking_speed_mult: 1.1,\n factions: [\n FactionNames.ECorp,\n FactionNames.MegaCorp,\n FactionNames.FulcrumSecretTechnologies,\n FactionNames.NWO,\n FactionNames.Daedalus,\n FactionNames.TheCovenant,\n FactionNames.Illuminati,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.ENMDMA,\n repCost: 1e6,\n moneyCost: 7e9,\n info:\n \"This implant installs a Direct Memory Access (DMA) controller into the \" +\n \"Embedded Netburner Module. This allows the Module to send and receive data \" +\n \"directly to and from the main memory of devices on a network.\",\n prereqs: [AugmentationNames.ENM],\n hacking_money_mult: 1.4,\n hacking_chance_mult: 1.2,\n factions: [\n FactionNames.ECorp,\n FactionNames.MegaCorp,\n FactionNames.FulcrumSecretTechnologies,\n FactionNames.NWO,\n FactionNames.Daedalus,\n FactionNames.TheCovenant,\n FactionNames.Illuminati,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.Neuralstimulator,\n repCost: 5e4,\n moneyCost: 3e9,\n info:\n \"A cranial implant that intelligently stimulates certain areas of the brain \" +\n \"in order to improve cognitive functions.\",\n hacking_speed_mult: 1.02,\n hacking_chance_mult: 1.1,\n hacking_exp_mult: 1.12,\n factions: [\n FactionNames.TheBlackHand,\n FactionNames.Chongqing,\n FactionNames.Sector12,\n FactionNames.NewTokyo,\n FactionNames.Aevum,\n FactionNames.Ishima,\n FactionNames.Volhaven,\n FactionNames.BachmanAssociates,\n FactionNames.ClarkeIncorporated,\n FactionNames.FourSigma,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.NeuralAccelerator,\n repCost: 2e5,\n moneyCost: 1.75e9,\n info:\n \"A microprocessor that accelerates the processing \" +\n \"speed of biological neural networks. This is a cranial implant that is embedded inside the brain.\",\n hacking_mult: 1.1,\n hacking_exp_mult: 1.15,\n hacking_money_mult: 1.2,\n factions: [FactionNames.BitRunners],\n }),\n new Augmentation({\n name: AugmentationNames.CranialSignalProcessorsG1,\n repCost: 1e4,\n moneyCost: 7e7,\n info:\n \"The first generation of Cranial Signal Processors. Cranial Signal Processors \" +\n \"are a set of specialized microprocessors that are attached to \" +\n \"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations \" +\n \"so that the brain doesn't have to.\",\n hacking_speed_mult: 1.01,\n hacking_mult: 1.05,\n factions: [FactionNames.CyberSec, FactionNames.NiteSec],\n }),\n new Augmentation({\n name: AugmentationNames.CranialSignalProcessorsG2,\n repCost: 1.875e4,\n moneyCost: 1.25e8,\n info:\n \"The second generation of Cranial Signal Processors. Cranial Signal Processors \" +\n \"are a set of specialized microprocessors that are attached to \" +\n \"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations \" +\n \"so that the brain doesn't have to.\",\n prereqs: [AugmentationNames.CranialSignalProcessorsG1],\n hacking_speed_mult: 1.02,\n hacking_chance_mult: 1.05,\n hacking_mult: 1.07,\n factions: [FactionNames.CyberSec, FactionNames.NiteSec],\n }),\n new Augmentation({\n name: AugmentationNames.CranialSignalProcessorsG3,\n repCost: 5e4,\n moneyCost: 5.5e8,\n info:\n \"The third generation of Cranial Signal Processors. Cranial Signal Processors \" +\n \"are a set of specialized microprocessors that are attached to \" +\n \"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations \" +\n \"so that the brain doesn't have to.\",\n prereqs: [AugmentationNames.CranialSignalProcessorsG2],\n hacking_speed_mult: 1.02,\n hacking_money_mult: 1.15,\n hacking_mult: 1.09,\n factions: [FactionNames.NiteSec, FactionNames.TheBlackHand, FactionNames.BitRunners],\n }),\n new Augmentation({\n name: AugmentationNames.CranialSignalProcessorsG4,\n repCost: 1.25e5,\n moneyCost: 1.1e9,\n info:\n \"The fourth generation of Cranial Signal Processors. Cranial Signal Processors \" +\n \"are a set of specialized microprocessors that are attached to \" +\n \"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations \" +\n \"so that the brain doesn't have to.\",\n prereqs: [AugmentationNames.CranialSignalProcessorsG3],\n hacking_speed_mult: 1.02,\n hacking_money_mult: 1.2,\n hacking_grow_mult: 1.25,\n factions: [FactionNames.TheBlackHand, FactionNames.BitRunners],\n }),\n new Augmentation({\n name: AugmentationNames.CranialSignalProcessorsG5,\n repCost: 2.5e5,\n moneyCost: 2.25e9,\n info:\n \"The fifth generation of Cranial Signal Processors. Cranial Signal Processors \" +\n \"are a set of specialized microprocessors that are attached to \" +\n \"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations \" +\n \"so that the brain doesn't have to.\",\n prereqs: [AugmentationNames.CranialSignalProcessorsG4],\n hacking_mult: 1.3,\n hacking_money_mult: 1.25,\n hacking_grow_mult: 1.75,\n factions: [FactionNames.BitRunners],\n }),\n new Augmentation({\n name: AugmentationNames.NeuronalDensification,\n repCost: 1.875e5,\n moneyCost: 1.375e9,\n info:\n \"The brain is surgically re-engineered to have increased neuronal density \" +\n \"by decreasing the neuron gap junction. Then, the body is genetically modified \" +\n \"to enhance the production and capabilities of its neural stem cells.\",\n hacking_mult: 1.15,\n hacking_exp_mult: 1.1,\n hacking_speed_mult: 1.03,\n factions: [FactionNames.ClarkeIncorporated],\n }),\n new Augmentation({\n name: AugmentationNames.NuoptimalInjectorImplant,\n repCost: 5e3,\n moneyCost: 2e7,\n info:\n \"This torso implant automatically injects nootropic supplements into \" +\n \"the bloodstream to improve memory, increase focus, and provide other \" +\n \"cognitive enhancements.\",\n company_rep_mult: 1.2,\n factions: [\n FactionNames.TianDiHui,\n FactionNames.Volhaven,\n FactionNames.NewTokyo,\n FactionNames.Chongqing,\n FactionNames.ClarkeIncorporated,\n FactionNames.FourSigma,\n FactionNames.BachmanAssociates,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.SpeechEnhancement,\n repCost: 2.5e3,\n moneyCost: 1.25e7,\n info:\n \"An advanced neural implant that improves your speaking abilities, making \" +\n \"you more convincing and likable in conversations and overall improving your \" +\n \"social interactions.\",\n company_rep_mult: 1.1,\n charisma_mult: 1.1,\n factions: [\n FactionNames.TianDiHui,\n FactionNames.SpeakersForTheDead,\n FactionNames.FourSigma,\n FactionNames.KuaiGongInternational,\n FactionNames.ClarkeIncorporated,\n FactionNames.BachmanAssociates,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.FocusWire,\n repCost: 7.5e4,\n moneyCost: 9e8,\n info: \"A cranial implant that stops procrastination by blocking specific neural pathways in the brain.\",\n hacking_exp_mult: 1.05,\n strength_exp_mult: 1.05,\n defense_exp_mult: 1.05,\n dexterity_exp_mult: 1.05,\n agility_exp_mult: 1.05,\n charisma_exp_mult: 1.05,\n company_rep_mult: 1.1,\n work_money_mult: 1.2,\n factions: [\n FactionNames.BachmanAssociates,\n FactionNames.ClarkeIncorporated,\n FactionNames.FourSigma,\n FactionNames.KuaiGongInternational,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.PCDNI,\n repCost: 3.75e5,\n moneyCost: 3.75e9,\n info:\n \"Installs a Direct-Neural Interface jack into your arm that is compatible with most \" +\n \"computers. Connecting to a computer through this jack allows you to interface with \" +\n \"it using the brain's electrochemical signals.\",\n company_rep_mult: 1.3,\n hacking_mult: 1.08,\n factions: [\n FactionNames.FourSigma,\n FactionNames.OmniTekIncorporated,\n FactionNames.ECorp,\n FactionNames.BladeIndustries,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.PCDNIOptimizer,\n repCost: 5e5,\n moneyCost: 4.5e9,\n info:\n \"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It \" +\n \"improves the performance of the interface and gives the user more control options \" +\n \"to a connected computer.\",\n prereqs: [AugmentationNames.PCDNI],\n company_rep_mult: 1.75,\n hacking_mult: 1.1,\n factions: [FactionNames.FulcrumSecretTechnologies, FactionNames.ECorp, FactionNames.BladeIndustries],\n }),\n new Augmentation({\n name: AugmentationNames.PCDNINeuralNetwork,\n repCost: 1.5e6,\n moneyCost: 7.5e9,\n info:\n \"This is an additional installation that upgrades the functionality of the \" +\n \"PC Direct-Neural Interface augmentation. When connected to a computer, \" +\n \"The Neural Network upgrade allows the user to use their own brain's \" +\n \"processing power to aid the computer in computational tasks.\",\n prereqs: [AugmentationNames.PCDNI],\n company_rep_mult: 2,\n hacking_mult: 1.1,\n hacking_speed_mult: 1.05,\n factions: [FactionNames.FulcrumSecretTechnologies],\n }),\n new Augmentation({\n name: AugmentationNames.ADRPheromone1,\n repCost: 3.75e3,\n moneyCost: 1.75e7,\n info:\n \"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, \" +\n \"an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, \" +\n \"triggers feelings of admiration and approval in other people.\",\n company_rep_mult: 1.1,\n faction_rep_mult: 1.1,\n factions: [\n FactionNames.TianDiHui,\n FactionNames.TheSyndicate,\n FactionNames.NWO,\n FactionNames.MegaCorp,\n FactionNames.FourSigma,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.ADRPheromone2,\n repCost: 6.25e4,\n moneyCost: 5.5e8,\n info:\n \"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, \" +\n \"which is similar to but more potent than ADR-V1. This pheromone, when excreted, \" +\n \"triggers feelings of admiration, approval, and respect in others.\",\n company_rep_mult: 1.2,\n faction_rep_mult: 1.2,\n factions: [\n FactionNames.Silhouette,\n FactionNames.FourSigma,\n FactionNames.BachmanAssociates,\n FactionNames.ClarkeIncorporated,\n ],\n }),\n new Augmentation({\n name: AugmentationNames.ShadowsSimulacrum,\n repCost: 3.75e4,\n moneyCost: 4e8,\n info:\n \"A crude but functional matter phase-shifter module that is embedded \" +\n \"in the brainstem and cerebellum. This augmentation was developed by \" +\n \"criminal organizations and allows the user to project and control holographic \" +\n \"simulacrums within a large radius. These simulacrums are commonly used for \" +\n \"espionage and surveillance work.\",\n company_rep_mult: 1.15,\n faction_rep_mult: 1.15,\n factions: [FactionNames.TheSyndicate, FactionNames.TheDarkArmy, FactionNames.SpeakersForTheDead],\n }),\n new Augmentation({\n name: AugmentationNames.HacknetNodeCPUUpload,\n repCost: 3.75e3,\n moneyCost: 1.1e7,\n info:\n \"Uploads the architecture and design details of a Hacknet Node's CPU into \" +\n \"the brain. This allows the user to engineer custom hardware and software \" +\n \"for the Hacknet Node that provides better performance.\",\n hacknet_node_money_mult: 1.15,\n hacknet_node_purchase_cost_mult: 0.85,\n factions: [FactionNames.Netburners],\n }),\n new Augmentation({\n name: AugmentationNames.HacknetNodeCacheUpload,\n repCost: 2.5e3,\n moneyCost: 5.5e6,\n info:\n \"Uploads the architecture and design details of a Hacknet Node's main-memory cache \" +\n \"into the brain. This allows the user to engineer custom cache hardware for the \" +\n \"Hacknet Node that offers better performance.\",\n hacknet_node_money_mult: 1.1,\n hacknet_node_level_cost_mult: 0.85,\n factions: [FactionNames.Netburners],\n }),\n new Augmentation({\n name: AugmentationNames.HacknetNodeNICUpload,\n repCost: 1.875e3,\n moneyCost: 4.5e6,\n info:\n \"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) \" +\n \"into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that \" +\n \"offers better performance.\",\n hacknet_node_money_mult: 1.1,\n hacknet_node_purchase_cost_mult: 0.9,\n factions: [FactionNames.Netburners],\n }),\n new Augmentation({\n name: AugmentationNames.HacknetNodeKernelDNI,\n repCost: 7.5e3,\n moneyCost: 4e7,\n info:\n \"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a \" +\n \"Hacknet Node. This lets the user access and manipulate the Node's kernel using \" +\n \"electrochemical signals.\",\n hacknet_node_money_mult: 1.25,\n factions: [FactionNames.Netburners],\n }),\n new Augmentation({\n name: AugmentationNames.HacknetNodeCoreDNI,\n repCost: 1.25e4,\n moneyCost: 6e7,\n info:\n \"Installs a Direct-Neural Interface jack into the arm that is capable of connecting \" +\n \"to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using \" +\n \"electrochemical signals.\",\n hacknet_node_money_mult: 1.45,\n factions: [FactionNames.Netburners],\n }),\n new Augmentation({\n name: AugmentationNames.Neurotrainer1,\n repCost: 1e3,\n moneyCost: 4e6,\n info:\n \"A decentralized cranial implant that improves the brain's ability to learn. It is \" +\n \"installed by releasing millions of nanobots into the human brain, each of which \" +\n \"attaches to a different neural pathway to enhance the brain's ability to retain \" +\n \"and retrieve information.\",\n hacking_exp_mult: 1.1,\n strength_exp_mult: 1.1,\n defense_exp_mult: 1.1,\n dexterity_exp_mult: 1.1,\n agility_exp_mult: 1.1,\n charisma_exp_mult: 1.1,\n factions: [FactionNames.CyberSec, FactionNames.Aevum],\n }),\n new Augmentation({\n name: AugmentationNames.Neurotrainer2,\n repCost: 1e4,\n moneyCost: 4.5e7,\n info:\n \"A decentralized cranial implant that improves the brain's ability to learn. This \" +\n \"is a more powerful version of the Neurotrainer I augmentation, but it does not \" +\n \"require Neurotrainer I to be installed as a prerequisite.\",\n hacking_exp_mult: 1.15,\n strength_exp_mult: 1.15,\n defense_exp_mult: 1.15,\n dexterity_exp_mult: 1.15,\n agility_exp_mult: 1.15,\n charisma_exp_mult: 1.15,\n factions: [FactionNames.BitRunners, FactionNames.NiteSec],\n }),\n new Augmentation({\n name: AugmentationNames.Neurotrainer3,\n repCost: 2.5e4,\n moneyCost: 1.3e8,\n info:\n \"A decentralized cranial implant that improves the brain's ability to learn. This \" +\n \"is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, \" +\n \"but it does not require either of them to be installed as a prerequisite.\",\n hacking_exp_mult: 1.2,\n strength_exp_mult: 1.2,\n defense_exp_mult: 1.2,\n dexterity_exp_mult: 1.2,\n agility_exp_mult: 1.2,\n charisma_exp_mult: 1.2,\n factions: [FactionNames.NWO, FactionNames.FourSigma],\n }),\n new Augmentation({\n name: AugmentationNames.Hypersight,\n repCost: 1.5e5,\n moneyCost: 2.75e9,\n info:\n \"A bionic eye implant that grants sight capabilities far beyond those of a natural human. \" +\n \"Embedded circuitry within the implant provides the ability to detect heat and movement \" +\n \"through solid objects such as walls, thus providing 'x-ray vision'-like capabilities.\",\n dexterity_mult: 1.4,\n hacking_speed_mult: 1.03,\n hacking_money_mult: 1.1,\n factions: [FactionNames.BladeIndustries, FactionNames.KuaiGongInternational],\n }),\n new Augmentation({\n name: AugmentationNames.LuminCloaking1,\n repCost: 1.5e3,\n moneyCost: 5e6,\n info:\n \"A skin implant that reinforces the skin with highly-advanced synthetic cells. These \" +\n \"cells, when powered, have a negative refractive index. As a result, they bend light \" +\n \"around the skin, making the user much harder to see to the naked eye.\",\n agility_mult: 1.05,\n crime_money_mult: 1.1,\n factions: [FactionNames.SlumSnakes, FactionNames.Tetrads],\n }),\n new Augmentation({\n name: AugmentationNames.LuminCloaking2,\n repCost: 5e3,\n moneyCost: 3e7,\n info:\n \"This is a more advanced version of the LuminCloaking-V1 augmentation. This skin implant \" +\n \"reinforces the skin with highly-advanced synthetic cells. These \" +\n \"cells, when powered, are capable of not only bending light but also of bending heat, \" +\n \"making the user more resilient as well as stealthy.\",\n prereqs: [AugmentationNames.LuminCloaking1],\n agility_mult: 1.1,\n defense_mult: 1.1,\n crime_money_mult: 1.25,\n factions: [FactionNames.SlumSnakes, FactionNames.Tetrads],\n }),\n new Augmentation({\n name: AugmentationNames.SmartSonar,\n repCost: 2.25e4,\n moneyCost: 7.5e7,\n info: \"A cochlear implant that helps the player detect and locate enemies using sound propagation.\",\n dexterity_mult: 1.1,\n dexterity_exp_mult: 1.15,\n crime_money_mult: 1.25,\n factions: [FactionNames.SlumSnakes],\n }),\n new Augmentation({\n name: AugmentationNames.PowerRecirculator,\n repCost: 2.5e4,\n moneyCost: 1.8e8,\n info:\n \"The body's nerves are attached with polypyrrole nanocircuits that \" +\n \"are capable of capturing wasted energy, in the form of heat, \" +\n \"and converting it back into usable power.\",\n hacking_mult: 1.05,\n strength_mult: 1.05,\n defense_mult: 1.05,\n dexterity_mult: 1.05,\n agility_mult: 1.05,\n charisma_mult: 1.05,\n hacking_exp_mult: 1.1,\n strength_exp_mult: 1.1,\n defense_exp_mult: 1.1,\n dexterity_exp_mult: 1.1,\n agility_exp_mult: 1.1,\n charisma_exp_mult: 1.1,\n factions: [FactionNames.Tetrads, FactionNames.TheDarkArmy, FactionNames.TheSyndicate, FactionNames.NWO],\n }),\n new Augmentation({\n name: AugmentationNames.QLink,\n repCost: 1.875e6,\n moneyCost: 2.5e13,\n info:\n `A brain implant that wirelessly connects you to the ${FactionNames.Illuminati}'s ` +\n \"quantum supercomputer, allowing you to access and use its incredible \" +\n \"computing power.\",\n hacking_mult: 1.75,\n hacking_speed_mult: 2,\n hacking_chance_mult: 2.5,\n hacking_money_mult: 4,\n factions: [FactionNames.Illuminati],\n }),\n new Augmentation({\n name: AugmentationNames.SPTN97,\n repCost: 1.25e6,\n moneyCost: 4.875e9,\n info:\n \"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an \" +\n \"artificially-synthesized gene that was developed by DARPA to create \" +\n \"super-soldiers through genetic modification. The gene was outlawed in \" +\n \"2056.\",\n strength_mult: 1.75,\n defense_mult: 1.75,\n dexterity_mult: 1.75,\n agility_mult: 1.75,\n hacking_mult: 1.15,\n factions: [FactionNames.TheCovenant],\n }),\n new Augmentation({\n name: AugmentationNames.HiveMind,\n repCost: 1.5e6,\n moneyCost: 5.5e9,\n info:\n `A brain implant developed by ${FactionNames.ECorp}. They do not reveal what ` +\n \"exactly the implant does, but they promise that it will greatly \" +\n \"enhance your abilities.\",\n hacking_grow_mult: 3,\n stats: null,\n factions: [FactionNames.ECorp],\n }),\n new Augmentation({\n name: AugmentationNames.TheRedPill,\n repCost: 2.5e6,\n moneyCost: 0,\n info: \"It's time to leave the cave.\",\n stats: null,\n factions: [FactionNames.Daedalus],\n }),\n new Augmentation({\n name: AugmentationNames.CordiARCReactor,\n repCost: 1.125e6,\n moneyCost: 5e9,\n info:\n \"The thoracic cavity is equipped with a small chamber designed \" +\n \"to hold and sustain hydrogen plasma. The plasma is used to generate \" +\n \"fusion power through nuclear fusion, providing limitless amounts of clean \" +\n \"energy for the body.\",\n strength_mult: 1.35,\n defense_mult: 1.35,\n dexterity_mult: 1.35,\n agility_mult: 1.35,\n strength_exp_mult: 1.35,\n defense_exp_mult: 1.35,\n dexterity_exp_mult: 1.35,\n agility_exp_mult: 1.35,\n factions: [FactionNames.MegaCorp],\n }),\n new Augmentation({\n name: AugmentationNames.SmartJaw,\n repCost: 3.75e5,\n moneyCost: 2.75e9,\n info:\n \"A bionic jaw that contains advanced hardware and software \" +\n \"capable of psychoanalyzing and profiling the personality of \" +\n \"others using optical imaging software.\",\n charisma_mult: 1.5,\n charisma_exp_mult: 1.5,\n company_rep_mult: 1.25,\n faction_rep_mult: 1.25,\n factions: [FactionNames.BachmanAssociates],\n }),\n new Augmentation({\n name: AugmentationNames.Neotra,\n repCost: 5.625e5,\n moneyCost: 2.875e9,\n info:\n \"A highly-advanced techno-organic drug that is injected into the skeletal \" +\n \"and integumentary system. The drug permanently modifies the DNA of the \" +\n \"body's skin and bone cells, granting them the ability to repair \" +\n \"and restructure themselves.\",\n strength_mult: 1.55,\n defense_mult: 1.55,\n factions: [FactionNames.BladeIndustries],\n }),\n new Augmentation({\n name: AugmentationNames.Xanipher,\n repCost: 8.75e5,\n moneyCost: 4.25e9,\n info:\n \"A concoction of advanced nanobots that is orally ingested into the \" +\n \"body. These nanobots induce physiological changes and significantly \" +\n \"improve the body's functioning in all aspects.\",\n hacking_mult: 1.2,\n strength_mult: 1.2,\n defense_mult: 1.2,\n dexterity_mult: 1.2,\n agility_mult: 1.2,\n charisma_mult: 1.2,\n hacking_exp_mult: 1.15,\n strength_exp_mult: 1.15,\n defense_exp_mult: 1.15,\n dexterity_exp_mult: 1.15,\n agility_exp_mult: 1.15,\n charisma_exp_mult: 1.15,\n factions: [FactionNames.NWO],\n }),\n new Augmentation({\n name: AugmentationNames.HydroflameLeftArm,\n repCost: 1.25e6,\n moneyCost: 2.5e12,\n info:\n \"The left arm of a legendary BitRunner who ascended beyond this world. \" +\n \"It projects a light blue energy shield that protects the exposed inner parts. \" +\n \"Even though it contains no weapons, the advanced tungsten titanium \" +\n \"alloy increases the user's strength to unbelievable levels. The augmentation \" +\n \"gets more powerful over time for seemingly no reason.\",\n strength_mult: 2.7,\n factions: [FactionNames.NWO],\n }),\n new Augmentation({\n name: AugmentationNames.nextSENS,\n repCost: 4.375e5,\n moneyCost: 1.925e9,\n info:\n \"The body is genetically re-engineered to maintain a state \" +\n \"of negligible senescence, preventing the body from \" +\n \"deteriorating with age.\",\n hacking_mult: 1.2,\n strength_mult: 1.2,\n defense_mult: 1.2,\n dexterity_mult: 1.2,\n agility_mult: 1.2,\n charisma_mult: 1.2,\n factions: [FactionNames.ClarkeIncorporated],\n }),\n new Augmentation({\n name: AugmentationNames.OmniTekInfoLoad,\n repCost: 6.25e5,\n moneyCost: 2.875e9,\n info:\n \"OmniTek's data and information repository is uploaded \" +\n \"into your brain, enhancing your programming and \" +\n \"hacking abilities.\",\n hacking_mult: 1.2,\n hacking_exp_mult: 1.25,\n factions: [FactionNames.OmniTekIncorporated],\n }),\n new Augmentation({\n name: AugmentationNames.PhotosyntheticCells,\n repCost: 5.625e5,\n moneyCost: 2.75e9,\n info:\n \"Chloroplasts are added to epidermal stem cells and are applied \" +\n \"to the body using a skin graft. The result is photosynthetic \" +\n \"skin cells, allowing users to generate their own energy \" +\n \"and nutrition using solar power.\",\n strength_mult: 1.4,\n defense_mult: 1.4,\n agility_mult: 1.4,\n factions: [FactionNames.KuaiGongInternational],\n }),\n new Augmentation({\n name: AugmentationNames.Neurolink,\n repCost: 8.75e5,\n moneyCost: 4.375e9,\n info:\n \"A brain implant that provides a high-bandwidth, direct neural link between your \" +\n `mind and the ${FactionNames.BitRunners}' data servers, which reportedly contain ` +\n \"the largest database of hacking tools and information in the world.\",\n hacking_mult: 1.15,\n hacking_exp_mult: 1.2,\n hacking_chance_mult: 1.1,\n hacking_speed_mult: 1.05,\n programs: [Programs.FTPCrackProgram.name, Programs.RelaySMTPProgram.name],\n factions: [FactionNames.BitRunners],\n }),\n new Augmentation({\n name: AugmentationNames.TheBlackHand,\n repCost: 1e5,\n moneyCost: 5.5e8,\n info:\n \"A highly advanced bionic hand. This prosthetic not only \" +\n \"enhances strength and dexterity but it is also embedded \" +\n \"with hardware and firmware that lets the user connect to, access, and hack \" +\n \"devices and machines by just touching them.\",\n strength_mult: 1.15,\n dexterity_mult: 1.15,\n hacking_mult: 1.1,\n hacking_speed_mult: 1.02,\n hacking_money_mult: 1.1,\n factions: [FactionNames.TheBlackHand],\n }),\n new Augmentation({\n name: AugmentationNames.CRTX42AA,\n repCost: 4.5e4,\n moneyCost: 2.25e8,\n info:\n \"The CRTX42-AA gene is injected into the genome. \" +\n \"The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal \" +\n \"cortex and improves cognitive abilities.\",\n hacking_mult: 1.08,\n hacking_exp_mult: 1.15,\n factions: [FactionNames.NiteSec],\n }),\n new Augmentation({\n name: AugmentationNames.Neuregen,\n repCost: 3.75e4,\n moneyCost: 3.75e8,\n info:\n \"A drug that genetically modifies the neurons in the brain \" +\n \"resulting in neurons that never die, continuously \" +\n \"regenerate, and strengthen themselves.\",\n hacking_exp_mult: 1.4,\n factions: [FactionNames.Chongqing],\n }),\n new Augmentation({\n name: AugmentationNames.CashRoot,\n repCost: 1.25e4,\n moneyCost: 1.25e8,\n info: (\n <>\n A collection of digital assets saved on a small chip. The chip is implanted into your wrist. A small jack in the\n chip allows you to connect it to a computer and upload the assets.\n >\n ),\n startingMoney: 1e6,\n programs: [Programs.BruteSSHProgram.name],\n factions: [FactionNames.Sector12],\n }),\n new Augmentation({\n name: AugmentationNames.NutriGen,\n repCost: 6.25e3,\n moneyCost: 2.5e6,\n info:\n \"A thermo-powered artificial nutrition generator. Endogenously \" +\n \"synthesizes glucose, amino acids, and vitamins and redistributes them \" +\n \"across the body. The device is powered by the body's naturally wasted \" +\n \"energy in the form of heat.\",\n strength_exp_mult: 1.2,\n defense_exp_mult: 1.2,\n dexterity_exp_mult: 1.2,\n agility_exp_mult: 1.2,\n factions: [FactionNames.NewTokyo],\n }),\n new Augmentation({\n name: AugmentationNames.PCMatrix,\n repCost: 100e3,\n moneyCost: 2e9,\n info:\n \"A 'Probability Computation Matrix' is installed in the frontal cortex. This implant \" +\n \"uses advanced mathematical algorithims to rapidly identify and compute statistical \" +\n \"outcomes of nearly every situation.\",\n charisma_mult: 1.0777,\n charisma_exp_mult: 1.0777,\n work_money_mult: 1.777,\n faction_rep_mult: 1.0777,\n company_rep_mult: 1.0777,\n crime_success_mult: 1.0777,\n crime_money_mult: 1.0777,\n programs: [Programs.DeepscanV1.name, Programs.AutoLink.name],\n factions: [FactionNames.Aevum],\n }),\n new Augmentation({\n name: AugmentationNames.INFRARet,\n repCost: 7.5e3,\n moneyCost: 3e7,\n info: \"A tiny chip that sits behind the retinae. This implant lets the user visually detect infrared radiation.\",\n crime_success_mult: 1.25,\n crime_money_mult: 1.1,\n dexterity_mult: 1.1,\n factions: [FactionNames.Ishima],\n }),\n new Augmentation({\n name: AugmentationNames.DermaForce,\n repCost: 1.5e4,\n moneyCost: 5e7,\n info:\n \"Synthetic skin that is grafted onto the body. This skin consists of \" +\n \"millions of nanobots capable of projecting high-density muon beams, \" +\n \"creating an energy barrier around the user.\",\n defense_mult: 1.4,\n factions: [FactionNames.Volhaven],\n }),\n new Augmentation({\n name: AugmentationNames.GrapheneBrachiBlades,\n repCost: 2.25e5,\n moneyCost: 2.5e9,\n info:\n \"An upgrade to the BrachiBlades augmentation. It infuses \" +\n \"the retractable blades with an advanced graphene material \" +\n \"making them stronger and lighter.\",\n prereqs: [AugmentationNames.BrachiBlades],\n strength_mult: 1.4,\n defense_mult: 1.4,\n crime_success_mult: 1.1,\n crime_money_mult: 1.3,\n factions: [FactionNames.SpeakersForTheDead],\n }),\n new Augmentation({\n name: AugmentationNames.GrapheneBionicArms,\n repCost: 5e5,\n moneyCost: 3.75e9,\n info:\n \"An upgrade to the Bionic Arms augmentation. It infuses the \" +\n \"prosthetic arms with an advanced graphene material \" +\n \"to make them stronger and lighter.\",\n prereqs: [AugmentationNames.BionicArms],\n strength_mult: 1.85,\n dexterity_mult: 1.85,\n factions: [FactionNames.TheDarkArmy],\n }),\n new Augmentation({\n name: AugmentationNames.BrachiBlades,\n repCost: 1.25e4,\n moneyCost: 9e7,\n info: \"A set of retractable plasteel blades that are implanted in the arm, underneath the skin.\",\n strength_mult: 1.15,\n defense_mult: 1.15,\n crime_success_mult: 1.1,\n crime_money_mult: 1.15,\n factions: [FactionNames.TheSyndicate],\n }),\n new Augmentation({\n name: AugmentationNames.BionicArms,\n repCost: 6.25e4,\n moneyCost: 2.75e8,\n info: \"Cybernetic arms created from plasteel and carbon fibers that completely replace the user's organic arms.\",\n strength_mult: 1.3,\n dexterity_mult: 1.3,\n factions: [FactionNames.Tetrads],\n }),\n new Augmentation({\n name: AugmentationNames.SNA,\n repCost: 6.25e3,\n moneyCost: 3e7,\n info:\n \"A cranial implant that affects the user's personality, making them better \" +\n \"at negotiation in social situations.\",\n work_money_mult: 1.1,\n company_rep_mult: 1.15,\n faction_rep_mult: 1.15,\n factions: [FactionNames.TianDiHui],\n }),\n new Augmentation({\n name: AugmentationNames.NeuroreceptorManager,\n repCost: 0.75e5,\n moneyCost: 5.5e8,\n info:\n \"A brain implant carefully assembled around the synapses, which \" +\n \"micromanages the activity and levels of various neuroreceptor \" +\n \"chemicals and modulates electrical activity to optimize concentration, \" +\n \"allowing the user to multitask much more effectively.\",\n stats: (\n <>\n This augmentation removes the penalty for not focusing on actions such as working in a job or working for a\n faction.\n >\n ),\n factions: [FactionNames.TianDiHui],\n }),\n\n // Grafting-exclusive Augmentation\n new Augmentation({\n name: AugmentationNames.CongruityImplant,\n repCost: 0,\n moneyCost: 50e12,\n info:\n \"Developed by a pioneer in Grafting research, this implant \" +\n \"generates pulses of stability which seem to have a nullifying \" +\n \"effect versus the Entropy virus.\",\n stats: <>This Augmentation removes the Entropy virus, and prevents it from affecting you again.>,\n factions: [],\n }),\n];\n\nexport const initBladeburnerAugmentations = (): Augmentation[] => [\n new Augmentation({\n name: AugmentationNames.EsperEyewear,\n repCost: 1.25e3,\n moneyCost: 1.65e8,\n info:\n \"Ballistic-grade protective and retractable eyewear that was designed specifically \" +\n \"for Bladeburner units. This \" +\n \"is implanted by installing a mechanical frame in the skull's orbit. \" +\n \"This frame interfaces with the brain and allows the user to \" +\n \"automatically extrude and extract the eyewear. The eyewear protects \" +\n \"against debris, shrapnel, lasers, blinding flashes, and gas. It is also \" +\n \"embedded with a data processing chip that can be programmed to display an \" +\n \"AR HUD to assist the user in field missions.\",\n bladeburner_success_chance_mult: 1.03,\n dexterity_mult: 1.05,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.EMS4Recombination,\n repCost: 2.5e3,\n moneyCost: 2.75e8,\n info:\n \"A DNA recombination of the EMS-4 Gene. This genetic engineering \" +\n \"technique was originally used on Bladeburners during the Synthoid uprising \" +\n \"to induce wakefulness and concentration, suppress fear, reduce empathy, \" +\n \"improve reflexes, and improve memory among other things.\",\n bladeburner_success_chance_mult: 1.03,\n bladeburner_analysis_mult: 1.05,\n bladeburner_stamina_gain_mult: 1.02,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.OrionShoulder,\n repCost: 6.25e3,\n moneyCost: 5.5e8,\n info:\n \"A bionic shoulder augmentation for the right shoulder. Using cybernetics, \" +\n \"the ORION-MKIV shoulder enhances the strength and dexterity \" +\n \"of the user's right arm. It also provides protection due to its \" +\n \"crystallized graphene plating.\",\n defense_mult: 1.05,\n strength_mult: 1.05,\n dexterity_mult: 1.05,\n bladeburner_success_chance_mult: 1.04,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.HyperionV1,\n repCost: 1.25e4,\n moneyCost: 2.75e9,\n info:\n \"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable \" +\n \"of rapidly firing bolts of high-density plasma. The weapon is meant to \" +\n \"be used against augmented enemies as the ionized \" +\n \"nature of the plasma disrupts the electrical systems of Augmentations. However, \" +\n \"it can also be effective against non-augmented enemies due to its high temperature \" +\n \"and concussive force.\",\n bladeburner_success_chance_mult: 1.06,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.HyperionV2,\n repCost: 2.5e4,\n moneyCost: 5.5e9,\n info:\n \"A pair of mini plasma cannons embedded into the hands. This augmentation \" +\n \"is more advanced and powerful than the original V1 model. This V2 model is \" +\n \"more power-efficient, more accurate, and can fire plasma bolts at a much \" +\n \"higher velocity than the V1 model.\",\n prereqs: [AugmentationNames.HyperionV1],\n bladeburner_success_chance_mult: 1.08,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.GolemSerum,\n repCost: 3.125e4,\n moneyCost: 1.1e10,\n info:\n \"A serum that permanently enhances many aspects of human capabilities, \" +\n \"including strength, speed, immune system enhancements, and mitochondrial efficiency. The \" +\n \"serum was originally developed by the Chinese military in an attempt to \" +\n \"create super soldiers.\",\n strength_mult: 1.07,\n defense_mult: 1.07,\n dexterity_mult: 1.07,\n agility_mult: 1.07,\n bladeburner_stamina_gain_mult: 1.05,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.VangelisVirus,\n repCost: 1.875e4,\n moneyCost: 2.75e9,\n info:\n \"A synthetic symbiotic virus that is injected into human brain tissue. The Vangelis virus \" +\n \"heightens the senses and focus of its host, and also enhances its intuition.\",\n dexterity_exp_mult: 1.1,\n bladeburner_analysis_mult: 1.1,\n bladeburner_success_chance_mult: 1.04,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.VangelisVirus3,\n repCost: 3.75e4,\n moneyCost: 1.1e10,\n info:\n \"An improved version of Vangelis, a synthetic symbiotic virus that is \" +\n \"injected into human brain tissue. On top of the benefits of the original \" +\n \"virus, this also grants an accelerated healing factor and enhanced \" +\n \"reflexes.\",\n prereqs: [AugmentationNames.VangelisVirus],\n defense_exp_mult: 1.1,\n dexterity_exp_mult: 1.1,\n bladeburner_analysis_mult: 1.15,\n bladeburner_success_chance_mult: 1.05,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.INTERLINKED,\n repCost: 2.5e4,\n moneyCost: 5.5e9,\n info:\n \"The DNA is genetically modified to enhance the human's body \" +\n \"extracellular matrix (ECM). This improves the ECM's ability to \" +\n \"structurally support the body and grants heightened strength and \" +\n \"durability.\",\n strength_exp_mult: 1.05,\n defense_exp_mult: 1.05,\n dexterity_exp_mult: 1.05,\n agility_exp_mult: 1.05,\n bladeburner_max_stamina_mult: 1.1,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.BladeRunner,\n repCost: 2e4,\n moneyCost: 8.25e9,\n info:\n `A cybernetic foot augmentation that was specifically created for ${FactionNames.Bladeburners} ` +\n \"during the Synthoid Uprising. The organic musculature of the human foot \" +\n \"is enhanced with flexible carbon nanotube matrices that are controlled by \" +\n \"intelligent servo-motors.\",\n agility_mult: 1.05,\n bladeburner_max_stamina_mult: 1.05,\n bladeburner_stamina_gain_mult: 1.05,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.BladeArmor,\n repCost: 1.25e4,\n moneyCost: 1.375e9,\n info:\n `A powered exoskeleton suit designed as armor for ${FactionNames.Bladeburners} units. This ` +\n \"exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, \" +\n \"concussive, thermal, chemical, and electric trauma. It also enhances the user's \" +\n \"physical abilities.\",\n strength_mult: 1.04,\n defense_mult: 1.04,\n dexterity_mult: 1.04,\n agility_mult: 1.04,\n bladeburner_stamina_gain_mult: 1.02,\n bladeburner_success_chance_mult: 1.03,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.BladeArmorPowerCells,\n repCost: 1.875e4,\n moneyCost: 2.75e9,\n info:\n \"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of \" +\n \"more efficiently storing and using power.\",\n prereqs: [AugmentationNames.BladeArmor],\n bladeburner_success_chance_mult: 1.05,\n bladeburner_stamina_gain_mult: 1.02,\n bladeburner_max_stamina_mult: 1.05,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.BladeArmorEnergyShielding,\n repCost: 2.125e4,\n moneyCost: 5.5e9,\n info:\n \"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system \" +\n \"that is capable of projecting an energy shielding force field.\",\n prereqs: [AugmentationNames.BladeArmor],\n defense_mult: 1.05,\n bladeburner_success_chance_mult: 1.06,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.BladeArmorUnibeam,\n repCost: 3.125e4,\n moneyCost: 1.65e10,\n info:\n \"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser \" +\n \"weapon. It's precision and accuracy makes it useful for quickly neutralizing \" +\n \"threats while keeping casualties to a minimum.\",\n prereqs: [AugmentationNames.BladeArmor],\n bladeburner_success_chance_mult: 1.08,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.BladeArmorOmnibeam,\n repCost: 6.25e4,\n moneyCost: 2.75e10,\n info:\n \"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use a \" +\n \"multiple-fiber system. This upgraded weapon uses multiple fiber laser \" +\n \"modules that combine together to form a single, more powerful beam of up to \" +\n \"2000MW.\",\n prereqs: [AugmentationNames.BladeArmorUnibeam],\n bladeburner_success_chance_mult: 1.1,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.BladeArmorIPU,\n repCost: 1.5e4,\n moneyCost: 1.1e9,\n info:\n \"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing \" +\n \"Unit that was specially designed to analyze Synthoid related data and \" +\n \"information.\",\n prereqs: [AugmentationNames.BladeArmor],\n bladeburner_analysis_mult: 1.15,\n bladeburner_success_chance_mult: 1.02,\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n new Augmentation({\n name: AugmentationNames.BladesSimulacrum,\n repCost: 1.25e3,\n moneyCost: 1.5e11,\n info:\n \"A highly-advanced matter phase-shifter module that is embedded \" +\n \"in the brainstem and cerebellum. This augmentation allows \" +\n \"the user to project and control a holographic simulacrum within an \" +\n \"extremely large radius. These specially-modified holograms were specifically \" +\n \"weaponized by Bladeburner units to be used against Synthoids.\",\n stats: (\n <>\n This augmentation allows you to perform Bladeburner actions and other actions (such as working, commiting\n crimes, etc.) at the same time.\n >\n ),\n isSpecial: true,\n factions: [FactionNames.Bladeburners],\n }),\n];\n\nexport const initChurchOfTheMachineGodAugmentations = (): Augmentation[] => [\n new Augmentation({\n name: AugmentationNames.StaneksGift1,\n repCost: 0,\n moneyCost: 0,\n info:\n 'Allison \"Mother\" Stanek imparts you with her gift. An ' +\n \"experimental Augmentation implanted at the base of the neck. \" +\n \"It allows you to overclock your entire system by carefully \" +\n \"changing the configuration.\",\n isSpecial: true,\n hacking_chance_mult: 0.9,\n hacking_speed_mult: 0.9,\n hacking_money_mult: 0.9,\n hacking_grow_mult: 0.9,\n hacking_mult: 0.9,\n strength_mult: 0.9,\n defense_mult: 0.9,\n dexterity_mult: 0.9,\n agility_mult: 0.9,\n charisma_mult: 0.9,\n hacking_exp_mult: 0.9,\n strength_exp_mult: 0.9,\n defense_exp_mult: 0.9,\n dexterity_exp_mult: 0.9,\n agility_exp_mult: 0.9,\n charisma_exp_mult: 0.9,\n company_rep_mult: 0.9,\n faction_rep_mult: 0.9,\n crime_money_mult: 0.9,\n crime_success_mult: 0.9,\n hacknet_node_money_mult: 0.9,\n hacknet_node_purchase_cost_mult: 1.1,\n hacknet_node_ram_cost_mult: 1.1,\n hacknet_node_core_cost_mult: 1.1,\n hacknet_node_level_cost_mult: 1.1,\n work_money_mult: 0.9,\n stats: <>Its unstable nature decreases all your stats by 10%>,\n factions: [FactionNames.ChurchOfTheMachineGod],\n }),\n new Augmentation({\n name: AugmentationNames.StaneksGift2,\n repCost: 1e6,\n moneyCost: 0,\n info:\n \"The next evolution is near, a coming together of man and machine. A synthesis greater than the birth of the human \" +\n \"organism. Time spent with the gift has allowed for acclimatization of the invasive augment and the toll it takes upon \" +\n \"your frame granting lesser penalty of 5% to all stats.\",\n prereqs: [AugmentationNames.StaneksGift1],\n isSpecial: true,\n hacking_chance_mult: 0.95 / 0.9,\n hacking_speed_mult: 0.95 / 0.9,\n hacking_money_mult: 0.95 / 0.9,\n hacking_grow_mult: 0.95 / 0.9,\n hacking_mult: 0.95 / 0.9,\n strength_mult: 0.95 / 0.9,\n defense_mult: 0.95 / 0.9,\n dexterity_mult: 0.95 / 0.9,\n agility_mult: 0.95 / 0.9,\n charisma_mult: 0.95 / 0.9,\n hacking_exp_mult: 0.95 / 0.9,\n strength_exp_mult: 0.95 / 0.9,\n defense_exp_mult: 0.95 / 0.9,\n dexterity_exp_mult: 0.95 / 0.9,\n agility_exp_mult: 0.95 / 0.9,\n charisma_exp_mult: 0.95 / 0.9,\n company_rep_mult: 0.95 / 0.9,\n faction_rep_mult: 0.95 / 0.9,\n crime_money_mult: 0.95 / 0.9,\n crime_success_mult: 0.95 / 0.9,\n hacknet_node_money_mult: 0.95 / 0.9,\n hacknet_node_purchase_cost_mult: 1.05 / 1.1,\n hacknet_node_ram_cost_mult: 1.05 / 1.1,\n hacknet_node_core_cost_mult: 1.05 / 1.1,\n hacknet_node_level_cost_mult: 1.05 / 1.1,\n work_money_mult: 0.95 / 0.9,\n stats: <>The penalty for the gift is reduced to 5%>,\n factions: [FactionNames.ChurchOfTheMachineGod],\n }),\n new Augmentation({\n name: AugmentationNames.StaneksGift3,\n repCost: 1e8,\n moneyCost: 0,\n info:\n \"The synthesis of human and machine is nothing to fear. It is our destiny. \" +\n \"You will become greater than the sum of our parts. As One. Embrace your gift \" +\n \"fully and wholly free of it's accursed toll. Serenity brings tranquility the form \" +\n \"of no longer suffering a stat penalty. \",\n prereqs: [AugmentationNames.StaneksGift2],\n isSpecial: true,\n hacking_chance_mult: 1 / 0.95,\n hacking_speed_mult: 1 / 0.95,\n hacking_money_mult: 1 / 0.95,\n hacking_grow_mult: 1 / 0.95,\n hacking_mult: 1 / 0.95,\n strength_mult: 1 / 0.95,\n defense_mult: 1 / 0.95,\n dexterity_mult: 1 / 0.95,\n agility_mult: 1 / 0.95,\n charisma_mult: 1 / 0.95,\n hacking_exp_mult: 1 / 0.95,\n strength_exp_mult: 1 / 0.95,\n defense_exp_mult: 1 / 0.95,\n dexterity_exp_mult: 1 / 0.95,\n agility_exp_mult: 1 / 0.95,\n charisma_exp_mult: 1 / 0.95,\n company_rep_mult: 1 / 0.95,\n faction_rep_mult: 1 / 0.95,\n crime_money_mult: 1 / 0.95,\n crime_success_mult: 1 / 0.95,\n hacknet_node_money_mult: 1 / 0.95,\n hacknet_node_purchase_cost_mult: 1 / 1.05,\n hacknet_node_ram_cost_mult: 1 / 1.05,\n hacknet_node_core_cost_mult: 1 / 1.05,\n hacknet_node_level_cost_mult: 1 / 1.05,\n work_money_mult: 1 / 0.95,\n stats: <>Stanek's Gift has no penalty.>,\n factions: [FactionNames.ChurchOfTheMachineGod],\n }),\n];\n\nexport function initNeuroFluxGovernor(): Augmentation {\n return new Augmentation({\n name: AugmentationNames.NeuroFluxGovernor,\n repCost: 500,\n moneyCost: 750e3,\n info:\n \"A device that is embedded in the back of the neck. The NeuroFlux Governor \" +\n \"monitors and regulates nervous impulses coming to and from the spinal column, \" +\n \"essentially 'governing' the body. By doing so, it improves the functionality of the \" +\n \"body's nervous system.\",\n stats: (\n <>\n This special augmentation can be leveled up infinitely. Each level of this augmentation increases MOST\n multipliers by 1%, stacking multiplicatively.\n >\n ),\n hacking_chance_mult: 1.01,\n hacking_speed_mult: 1.01,\n hacking_money_mult: 1.01,\n hacking_grow_mult: 1.01,\n hacking_mult: 1.01,\n strength_mult: 1.01,\n defense_mult: 1.01,\n dexterity_mult: 1.01,\n agility_mult: 1.01,\n charisma_mult: 1.01,\n hacking_exp_mult: 1.01,\n strength_exp_mult: 1.01,\n defense_exp_mult: 1.01,\n dexterity_exp_mult: 1.01,\n agility_exp_mult: 1.01,\n charisma_exp_mult: 1.01,\n company_rep_mult: 1.01,\n faction_rep_mult: 1.01,\n crime_money_mult: 1.01,\n crime_success_mult: 1.01,\n hacknet_node_money_mult: 1.01,\n hacknet_node_purchase_cost_mult: 0.99,\n hacknet_node_ram_cost_mult: 0.99,\n hacknet_node_core_cost_mult: 0.99,\n hacknet_node_level_cost_mult: 0.99,\n work_money_mult: 1.01,\n factions: Object.values(FactionNames),\n });\n}\n\nexport function initUnstableCircadianModulator(): Augmentation {\n //Time-Based Augment Test\n const randomBonuses = getRandomBonus();\n\n const UnstableCircadianModulatorParams: IConstructorParams = {\n name: AugmentationNames.UnstableCircadianModulator,\n moneyCost: 5e9,\n repCost: 3.625e5,\n info:\n \"An experimental nanobot injection. Its unstable nature leads to \" +\n \"unpredictable results based on your circadian rhythm.\",\n factions: [FactionNames.SpeakersForTheDead],\n };\n Object.keys(randomBonuses.bonuses).forEach(\n (key) => ((UnstableCircadianModulatorParams as any)[key] = randomBonuses.bonuses[key]),\n );\n\n return new Augmentation(UnstableCircadianModulatorParams);\n}\n","/**\n * Implements RAM Calculation functionality.\n *\n * Uses the acorn.js library to parse a script's code into an AST and\n * recursively walk through that AST, calculating RAM usage along\n * the way\n */\nimport * as walk from \"acorn-walk\";\nimport acorn, { parse } from \"acorn\";\n\nimport { RamCalculationErrorCode } from \"./RamCalculationErrorCodes\";\n\nimport { RamCosts, RamCostConstants } from \"../Netscript/RamCostGenerator\";\nimport { Script } from \"./Script\";\nimport { WorkerScript } from \"../Netscript/WorkerScript\";\nimport { areImportsEquals } from \"../Terminal/DirectoryHelpers\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\n\nexport interface RamUsageEntry {\n type: \"ns\" | \"dom\" | \"fn\" | \"misc\";\n name: string;\n cost: number;\n}\n\nexport interface RamCalculation {\n cost: number;\n entries?: RamUsageEntry[];\n}\n\n// These special strings are used to reference the presence of a given logical\n// construct within a user script.\nconst specialReferenceIF = \"__SPECIAL_referenceIf\";\nconst specialReferenceFOR = \"__SPECIAL_referenceFor\";\nconst specialReferenceWHILE = \"__SPECIAL_referenceWhile\";\n\n// The global scope of a script is registered under this key during parsing.\nconst memCheckGlobalKey = \".__GLOBAL__\";\n\n/**\n * Parses code into an AST and walks through it recursively to calculate\n * RAM usage. Also accounts for imported modules.\n * @param {Script[]} otherScripts - All other scripts on the server. Used to account for imported scripts\n * @param {string} codeCopy - The code being parsed\n * @param {WorkerScript} workerScript - Object containing RAM costs of Netscript functions. Also used to\n * keep track of what functions have/havent been accounted for\n */\nasync function parseOnlyRamCalculate(\n player: IPlayer,\n otherScripts: Script[],\n code: string,\n workerScript: WorkerScript,\n): Promise {\n try {\n /**\n * Maps dependent identifiers to their dependencies.\n *\n * The initial identifier is __SPECIAL_INITIAL_MODULE__.__GLOBAL__.\n * It depends on all the functions declared in the module, all the global scopes\n * of its imports, and any identifiers referenced in this global scope. Each\n * function depends on all the identifiers referenced internally.\n * We walk the dependency graph to calculate RAM usage, given that some identifiers\n * reference Netscript functions which have a RAM cost.\n */\n let dependencyMap: { [key: string]: string[] } = {};\n\n // Scripts we've parsed.\n const completedParses = new Set();\n\n // Scripts we've discovered that need to be parsed.\n const parseQueue: string[] = [];\n\n // Parses a chunk of code with a given module name, and updates parseQueue and dependencyMap.\n function parseCode(code: string, moduleName: string): void {\n const result = parseOnlyCalculateDeps(code, moduleName);\n completedParses.add(moduleName);\n\n // Add any additional modules to the parse queue;\n for (let i = 0; i < result.additionalModules.length; ++i) {\n if (!completedParses.has(result.additionalModules[i])) {\n parseQueue.push(result.additionalModules[i]);\n }\n }\n\n // Splice all the references in\n dependencyMap = Object.assign(dependencyMap, result.dependencyMap);\n }\n\n // Parse the initial module, which is the \"main\" script that is being run\n const initialModule = \"__SPECIAL_INITIAL_MODULE__\";\n parseCode(code, initialModule);\n\n // Process additional modules, which occurs if the \"main\" script has any imports\n while (parseQueue.length > 0) {\n const nextModule = parseQueue.shift();\n if (nextModule === undefined) throw new Error(\"nextModule should not be undefined\");\n\n // Additional modules can either be imported from the web (in which case we use\n // a dynamic import), or from other in-game scripts\n let code;\n if (nextModule.startsWith(\"https://\") || nextModule.startsWith(\"http://\")) {\n try {\n // eslint-disable-next-line no-await-in-loop\n const module = await eval(\"import(nextModule)\");\n code = \"\";\n for (const prop in module) {\n if (typeof module[prop] === \"function\") {\n code += module[prop].toString() + \";\\n\";\n }\n }\n } catch (e) {\n console.error(`Error dynamically importing module from ${nextModule} for RAM calculations: ${e}`);\n return { cost: RamCalculationErrorCode.URLImportError };\n }\n } else {\n if (!Array.isArray(otherScripts)) {\n console.warn(`parseOnlyRamCalculate() not called with array of scripts`);\n return { cost: RamCalculationErrorCode.ImportError };\n }\n\n let script = null;\n const fn = nextModule.startsWith(\"./\") ? nextModule.slice(2) : nextModule;\n for (const s of otherScripts) {\n if (areImportsEquals(s.filename, fn)) {\n script = s;\n break;\n }\n }\n\n if (script == null) {\n return { cost: RamCalculationErrorCode.ImportError }; // No such script on the server\n }\n\n code = script.code;\n }\n\n parseCode(code, nextModule);\n }\n\n // Finally, walk the reference map and generate a ram cost. The initial set of keys to scan\n // are those that start with __SPECIAL_INITIAL_MODULE__.\n let ram = RamCostConstants.ScriptBaseRamCost;\n const detailedCosts: RamUsageEntry[] = [\n { type: \"misc\", name: \"baseCost\", cost: RamCostConstants.ScriptBaseRamCost },\n ];\n const unresolvedRefs = Object.keys(dependencyMap).filter((s) => s.startsWith(initialModule));\n const resolvedRefs = new Set();\n while (unresolvedRefs.length > 0) {\n const ref = unresolvedRefs.shift();\n if (ref === undefined) throw new Error(\"ref should not be undefined\");\n\n // Check if this is one of the special keys, and add the appropriate ram cost if so.\n if (ref === \"hacknet\" && !resolvedRefs.has(\"hacknet\")) {\n ram += RamCostConstants.ScriptHacknetNodesRamCost;\n detailedCosts.push({ type: \"ns\", name: \"hacknet\", cost: RamCostConstants.ScriptHacknetNodesRamCost });\n }\n if (ref === \"document\" && !resolvedRefs.has(\"document\")) {\n ram += RamCostConstants.ScriptDomRamCost;\n detailedCosts.push({ type: \"dom\", name: \"document\", cost: RamCostConstants.ScriptDomRamCost });\n }\n if (ref === \"window\" && !resolvedRefs.has(\"window\")) {\n ram += RamCostConstants.ScriptDomRamCost;\n detailedCosts.push({ type: \"dom\", name: \"window\", cost: RamCostConstants.ScriptDomRamCost });\n }\n if (ref === \"corporation\" && !resolvedRefs.has(\"corporation\")) {\n ram += RamCostConstants.ScriptCorporationRamCost;\n detailedCosts.push({ type: \"ns\", name: \"corporation\", cost: RamCostConstants.ScriptCorporationRamCost });\n }\n\n resolvedRefs.add(ref);\n\n if (ref.endsWith(\".*\")) {\n // A prefix reference. We need to find all matching identifiers.\n const prefix = ref.slice(0, ref.length - 2);\n for (const ident of Object.keys(dependencyMap).filter((k) => k.startsWith(prefix))) {\n for (const dep of dependencyMap[ident] || []) {\n if (!resolvedRefs.has(dep)) unresolvedRefs.push(dep);\n }\n }\n } else {\n // An exact reference. Add all dependencies of this ref.\n for (const dep of dependencyMap[ref] || []) {\n if (!resolvedRefs.has(dep)) unresolvedRefs.push(dep);\n }\n }\n\n // Check if this identifier is a function in the workerScript environment.\n // If it is, then we need to get its RAM cost.\n try {\n function applyFuncRam(cost: any): number {\n if (typeof cost === \"number\") {\n return cost;\n } else if (typeof cost === \"function\") {\n return cost(player);\n } else {\n return 0;\n }\n }\n\n // Only count each function once\n if (workerScript.loadedFns[ref]) {\n continue;\n } else {\n workerScript.loadedFns[ref] = true;\n }\n\n // This accounts for namespaces (Bladeburner, CodingCpntract, etc.)\n let func;\n let refDetail = \"n/a\";\n if (ref in workerScript.env.vars.bladeburner) {\n func = workerScript.env.vars.bladeburner[ref];\n refDetail = `bladeburner.${ref}`;\n } else if (ref in workerScript.env.vars.codingcontract) {\n func = workerScript.env.vars.codingcontract[ref];\n refDetail = `codingcontract.${ref}`;\n } else if (ref in workerScript.env.vars.stanek) {\n func = workerScript.env.vars.stanek[ref];\n refDetail = `stanek.${ref}`;\n } else if (ref in workerScript.env.vars.gang) {\n func = workerScript.env.vars.gang[ref];\n refDetail = `gang.${ref}`;\n } else if (ref in workerScript.env.vars.sleeve) {\n func = workerScript.env.vars.sleeve[ref];\n refDetail = `sleeve.${ref}`;\n } else if (ref in workerScript.env.vars.stock) {\n func = workerScript.env.vars.stock[ref];\n refDetail = `stock.${ref}`;\n } else if (ref in workerScript.env.vars.ui) {\n func = workerScript.env.vars.ui[ref];\n refDetail = `ui.${ref}`;\n } else if (ref in workerScript.env.vars.grafting) {\n func = workerScript.env.vars.grafting[ref];\n refDetail = `grafting.${ref}`;\n } else {\n func = workerScript.env.vars[ref];\n refDetail = `${ref}`;\n }\n const fnRam = applyFuncRam(func);\n ram += fnRam;\n detailedCosts.push({ type: \"fn\", name: refDetail, cost: fnRam });\n } catch (error) {\n continue;\n }\n }\n return { cost: ram, entries: detailedCosts.filter((e) => e.cost > 0) };\n } catch (error) {\n // console.info(\"parse or eval error: \", error);\n // This is not unexpected. The user may be editing a script, and it may be in\n // a transitory invalid state.\n return { cost: RamCalculationErrorCode.SyntaxError };\n }\n}\n\nexport function checkInfiniteLoop(code: string): number {\n const ast = parse(code, { sourceType: \"module\", ecmaVersion: \"latest\" });\n\n function nodeHasTrueTest(node: acorn.Node): boolean {\n return node.type === \"Literal\" && (node as any).raw === \"true\";\n }\n\n function hasAwait(ast: acorn.Node): boolean {\n let hasAwait = false;\n walk.recursive(\n ast,\n {},\n {\n AwaitExpression: () => {\n hasAwait = true;\n },\n },\n );\n return hasAwait;\n }\n\n let missingAwaitLine = -1;\n walk.recursive(\n ast,\n {},\n {\n WhileStatement: (node: acorn.Node, st: any, walkDeeper: walk.WalkerCallback) => {\n if (nodeHasTrueTest((node as any).test) && !hasAwait(node)) {\n missingAwaitLine = (code.slice(0, node.start).match(/\\n/g) || []).length + 1;\n } else {\n (node as any).body && walkDeeper((node as any).body, st);\n }\n },\n },\n );\n\n return missingAwaitLine;\n}\n\n/**\n * Helper function that parses a single script. It returns a map of all dependencies,\n * which are items in the code's AST that potentially need to be evaluated\n * for RAM usage calculations. It also returns an array of additional modules\n * that need to be parsed (i.e. are 'import'ed scripts).\n */\nfunction parseOnlyCalculateDeps(code: string, currentModule: string): any {\n const ast = parse(code, { sourceType: \"module\", ecmaVersion: \"latest\" });\n // Everything from the global scope goes in \".\". Everything else goes in \".function\", where only\n // the outermost layer of functions counts.\n const globalKey = currentModule + memCheckGlobalKey;\n const dependencyMap: { [key: string]: Set | undefined } = {};\n dependencyMap[globalKey] = new Set();\n\n // If we reference this internal name, we're really referencing that external name.\n // Filled when we import names from other modules.\n const internalToExternal: { [key: string]: string | undefined } = {};\n\n const additionalModules: string[] = [];\n\n // References get added pessimistically. They are added for thisModule.name, name, and for\n // any aliases.\n function addRef(key: string, name: string): void {\n const s = dependencyMap[key] || (dependencyMap[key] = new Set());\n const external = internalToExternal[name];\n if (external !== undefined) {\n s.add(external);\n }\n s.add(currentModule + \".\" + name);\n s.add(name); // For builtins like hack.\n }\n\n //A list of identifiers that resolve to \"native Javascript code\"\n const objectPrototypeProperties = Object.getOwnPropertyNames(Object.prototype);\n\n // If we discover a dependency identifier, state.key is the dependent identifier.\n // walkDeeper is for doing recursive walks of expressions in composites that we handle.\n function commonVisitors(): any {\n return {\n Identifier: (node: any, st: any) => {\n if (objectPrototypeProperties.includes(node.name)) {\n return;\n }\n addRef(st.key, node.name);\n },\n WhileStatement: (node: any, st: any, walkDeeper: any) => {\n addRef(st.key, specialReferenceWHILE);\n node.test && walkDeeper(node.test, st);\n node.body && walkDeeper(node.body, st);\n },\n DoWhileStatement: (node: any, st: any, walkDeeper: any) => {\n addRef(st.key, specialReferenceWHILE);\n node.test && walkDeeper(node.test, st);\n node.body && walkDeeper(node.body, st);\n },\n ForStatement: (node: any, st: any, walkDeeper: any) => {\n addRef(st.key, specialReferenceFOR);\n node.init && walkDeeper(node.init, st);\n node.test && walkDeeper(node.test, st);\n node.update && walkDeeper(node.update, st);\n node.body && walkDeeper(node.body, st);\n },\n IfStatement: (node: any, st: any, walkDeeper: any) => {\n addRef(st.key, specialReferenceIF);\n node.test && walkDeeper(node.test, st);\n node.consequent && walkDeeper(node.consequent, st);\n node.alternate && walkDeeper(node.alternate, st);\n },\n MemberExpression: (node: any, st: any, walkDeeper: any) => {\n node.object && walkDeeper(node.object, st);\n node.property && walkDeeper(node.property, st);\n },\n };\n }\n\n walk.recursive(\n ast,\n { key: globalKey },\n Object.assign(\n {\n ImportDeclaration: (node: any, st: any) => {\n const importModuleName = node.source.value;\n additionalModules.push(importModuleName);\n\n // This module's global scope refers to that module's global scope, no matter how we\n // import it.\n const set = dependencyMap[st.key];\n if (set === undefined) throw new Error(\"set should not be undefined\");\n set.add(importModuleName + memCheckGlobalKey);\n\n for (let i = 0; i < node.specifiers.length; ++i) {\n const spec = node.specifiers[i];\n if (spec.imported !== undefined && spec.local !== undefined) {\n // We depend on specific things.\n internalToExternal[spec.local.name] = importModuleName + \".\" + spec.imported.name;\n } else {\n // We depend on everything.\n const set = dependencyMap[st.key];\n if (set === undefined) throw new Error(\"set should not be undefined\");\n set.add(importModuleName + \".*\");\n }\n }\n },\n FunctionDeclaration: (node: any) => {\n // node.id will be null when using 'export default'. Add a module name indicating the default export.\n const key = currentModule + \".\" + (node.id === null ? \"__SPECIAL_DEFAULT_EXPORT__\" : node.id.name);\n walk.recursive(node, { key: key }, commonVisitors());\n },\n },\n commonVisitors(),\n ),\n );\n\n return { dependencyMap: dependencyMap, additionalModules: additionalModules };\n}\n\n/**\n * Calculate's a scripts RAM Usage\n * @param {string} codeCopy - The script's code\n * @param {Script[]} otherScripts - All other scripts on the server.\n * Used to account for imported scripts\n */\nexport async function calculateRamUsage(\n player: IPlayer,\n codeCopy: string,\n otherScripts: Script[],\n): Promise {\n // We don't need a real WorkerScript for this. Just an object that keeps\n // track of whatever's needed for RAM calculations\n const workerScript = {\n loadedFns: {},\n env: {\n vars: RamCosts,\n },\n } as WorkerScript;\n\n try {\n return await parseOnlyRamCalculate(player, otherScripts, codeCopy, workerScript);\n } catch (e) {\n console.error(`Failed to parse script for RAM calculations:`);\n console.error(e);\n return { cost: RamCalculationErrorCode.SyntaxError };\n }\n}\n","/**\n * Rounds a number to two decimal places.\n * @param decimal A decimal value to trim to two places.\n */\nexport function roundToTwo(decimal: number): number {\n const leftShift: number = Math.round(parseFloat(`${decimal}e+2`));\n\n return +`${leftShift}e-2`;\n}\n","/**\n * TODO\n * Add police clashes\n * balance point to keep them from running out of control\n */\n\nimport { Faction } from \"../Faction/Faction\";\nimport { Factions } from \"../Faction/Factions\";\n\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\nimport { Reviver, Generic_toJSON, Generic_fromJSON } from \"../utils/JSONReviver\";\n\nimport { exceptionAlert } from \"../utils/helpers/exceptionAlert\";\nimport { getRandomInt } from \"../utils/helpers/getRandomInt\";\n\nimport { GangMemberUpgrade } from \"./GangMemberUpgrade\";\nimport { GangConstants } from \"./data/Constants\";\nimport { CONSTANTS } from \"../Constants\";\nimport { GangMemberTasks } from \"./GangMemberTasks\";\nimport { IAscensionResult } from \"./IAscensionResult\";\n\nimport { AllGangs } from \"./AllGangs\";\nimport { GangMember } from \"./GangMember\";\n\nimport { WorkerScript } from \"../Netscript/WorkerScript\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\nimport { PowerMultiplier } from \"./data/power\";\nimport { IGang } from \"./IGang\";\n\nexport class Gang implements IGang {\n facName: string;\n members: GangMember[];\n wanted: number;\n respect: number;\n\n isHackingGang: boolean;\n\n respectGainRate: number;\n wantedGainRate: number;\n moneyGainRate: number;\n\n storedCycles: number;\n\n storedTerritoryAndPowerCycles: number;\n\n territoryClashChance: number;\n territoryWarfareEngaged: boolean;\n\n notifyMemberDeath: boolean;\n\n constructor(facName = \"\", hacking = false) {\n this.facName = facName;\n this.members = [];\n this.wanted = 1;\n this.respect = 1;\n\n this.isHackingGang = hacking;\n\n this.respectGainRate = 0;\n this.wantedGainRate = 0;\n this.moneyGainRate = 0;\n\n // When processing gains, this stores the number of cycles until some\n // limit is reached, and then calculates and applies the gains only at that limit\n this.storedCycles = 0;\n\n // Separate variable to keep track of cycles for Territry + Power gang, which\n // happens on a slower \"clock\" than normal processing\n this.storedTerritoryAndPowerCycles = 0;\n\n this.territoryClashChance = 0;\n this.territoryWarfareEngaged = false;\n\n this.notifyMemberDeath = true;\n }\n\n getPower(): number {\n return AllGangs[this.facName].power;\n }\n\n getTerritory(): number {\n return AllGangs[this.facName].territory;\n }\n\n process(numCycles = 1, player: IPlayer): void {\n const CyclesPerSecond = 1000 / CONSTANTS._idleSpeed;\n\n if (isNaN(numCycles)) {\n console.error(`NaN passed into Gang.process(): ${numCycles}`);\n }\n this.storedCycles += numCycles;\n\n // Only process if there are at least 2 seconds, and at most 5 seconds\n if (this.storedCycles < 2 * CyclesPerSecond) return;\n const cycles = Math.min(this.storedCycles, 5 * CyclesPerSecond);\n\n try {\n this.processGains(cycles, player);\n this.processExperienceGains(cycles);\n this.processTerritoryAndPowerGains(cycles);\n this.storedCycles -= cycles;\n } catch (e: any) {\n console.error(`Exception caught when processing Gang: ${e}`);\n }\n }\n\n processGains(numCycles = 1, player: IPlayer): void {\n // Get gains per cycle\n let moneyGains = 0;\n let respectGains = 0;\n let wantedLevelGains = 0;\n let justice = 0;\n for (let i = 0; i < this.members.length; ++i) {\n respectGains += this.members[i].calculateRespectGain(this);\n moneyGains += this.members[i].calculateMoneyGain(this);\n const wantedLevelGain = this.members[i].calculateWantedLevelGain(this);\n wantedLevelGains += wantedLevelGain;\n if (this.members[i].getTask().baseWanted < 0) justice++; // this member is lowering wanted.\n }\n this.respectGainRate = respectGains;\n this.wantedGainRate = wantedLevelGains;\n this.moneyGainRate = moneyGains;\n const gain = respectGains * numCycles;\n this.respect += gain;\n // Faction reputation gains is respect gain divided by some constant\n const fac = Factions[this.facName];\n if (!(fac instanceof Faction)) {\n dialogBoxCreate(\n \"ERROR: Could not get Faction associates with your gang. This is a bug, please report to game dev\",\n );\n throw new Error(\"Could not find the faction associated with this gang.\");\n }\n const favorMult = 1 + fac.favor / 100;\n\n fac.playerReputation += (player.faction_rep_mult * gain * favorMult) / GangConstants.GangRespectToReputationRatio;\n\n // Keep track of respect gained per member\n for (let i = 0; i < this.members.length; ++i) {\n this.members[i].recordEarnedRespect(numCycles, this);\n }\n if (!(this.wanted === 1 && wantedLevelGains < 0)) {\n const oldWanted = this.wanted;\n let newWanted = oldWanted + wantedLevelGains * numCycles;\n newWanted = newWanted * (1 - justice * 0.001); // safeguard\n // Prevent overflow\n if (wantedLevelGains <= 0 && newWanted > oldWanted) newWanted = 1;\n\n this.wanted = newWanted;\n if (this.wanted < 1) this.wanted = 1;\n }\n player.gainMoney(moneyGains * numCycles, \"gang\");\n }\n\n processTerritoryAndPowerGains(numCycles = 1): void {\n this.storedTerritoryAndPowerCycles += numCycles;\n if (this.storedTerritoryAndPowerCycles < GangConstants.CyclesPerTerritoryAndPowerUpdate) return;\n this.storedTerritoryAndPowerCycles -= GangConstants.CyclesPerTerritoryAndPowerUpdate;\n\n // Process power first\n const gangName = this.facName;\n for (const name of Object.keys(AllGangs)) {\n if (AllGangs.hasOwnProperty(name)) {\n if (name == gangName) {\n AllGangs[name].power += this.calculatePower();\n } else {\n // All NPC gangs get random power gains\n const gainRoll = Math.random();\n if (gainRoll < 0.5) {\n // Multiplicative gain (50% chance)\n // This is capped per cycle, to prevent it from getting out of control\n const multiplicativeGain = AllGangs[name].power * 0.005;\n AllGangs[name].power += Math.min(0.85, multiplicativeGain);\n } else {\n // Additive gain (50% chance)\n const powerMult = PowerMultiplier[name];\n if (powerMult === undefined) throw new Error(\"Should not be undefined\");\n const additiveGain = 0.75 * gainRoll * AllGangs[name].territory * powerMult;\n AllGangs[name].power += additiveGain;\n }\n }\n }\n }\n\n // Determine if territory should be processed\n if (this.territoryWarfareEngaged) {\n this.territoryClashChance = 1;\n } else if (this.territoryClashChance > 0) {\n // Engagement turned off, but still a positive clash chance. So there's\n // still a chance of clashing but it slowly goes down over time\n this.territoryClashChance = Math.max(0, this.territoryClashChance - 0.01);\n }\n\n // Then process territory\n const gangs = GangConstants.Names.filter((g) => AllGangs[g].territory > 0 || g === gangName);\n if (gangs.length > 1) {\n for (let i = 0; i < gangs.length; ++i) {\n const others = gangs.filter((e) => {\n return e !== gangs[i];\n });\n const other = getRandomInt(0, others.length - 1);\n\n const thisGang = gangs[i];\n const otherGang = others[other];\n\n // If either of the gangs involved in this clash is the player, determine\n // whether to skip or process it using the clash chance\n if (thisGang === gangName || otherGang === gangName) {\n if (!(Math.random() < this.territoryClashChance)) continue;\n }\n\n const thisPwr = AllGangs[thisGang].power;\n const otherPwr = AllGangs[otherGang].power;\n const thisChance = thisPwr / (thisPwr + otherPwr);\n\n function calculateTerritoryGain(winGang: string, loseGang: string): number {\n const powerBonus = Math.max(\n 1,\n 1 + Math.log(AllGangs[winGang].power / AllGangs[loseGang].power) / Math.log(50),\n );\n const gains = Math.min(AllGangs[loseGang].territory, powerBonus * 0.0001 * (Math.random() + 0.5));\n return gains;\n }\n\n if (Math.random() < thisChance) {\n if (AllGangs[otherGang].territory <= 0) return;\n const territoryGain = calculateTerritoryGain(thisGang, otherGang);\n AllGangs[thisGang].territory += territoryGain;\n if (AllGangs[thisGang].territory > 0.999) AllGangs[thisGang].territory = 1;\n AllGangs[otherGang].territory -= territoryGain;\n if (thisGang === gangName) {\n this.clash(true); // Player won\n AllGangs[otherGang].power *= 1 / 1.01;\n } else if (otherGang === gangName) {\n this.clash(false); // Player lost\n } else {\n AllGangs[otherGang].power *= 1 / 1.01;\n }\n } else {\n if (AllGangs[thisGang].territory <= 0) return;\n const territoryGain = calculateTerritoryGain(otherGang, thisGang);\n AllGangs[thisGang].territory -= territoryGain;\n if (AllGangs[otherGang].territory < 0.001) AllGangs[otherGang].territory = 0;\n AllGangs[otherGang].territory += territoryGain;\n if (AllGangs[otherGang].territory > 0.999) AllGangs[otherGang].territory = 1;\n if (thisGang === gangName) {\n this.clash(false); // Player lost\n } else if (otherGang === gangName) {\n this.clash(true); // Player won\n AllGangs[thisGang].power *= 1 / 1.01;\n } else {\n AllGangs[thisGang].power *= 1 / 1.01;\n }\n }\n }\n }\n }\n\n processExperienceGains(numCycles = 1): void {\n for (let i = 0; i < this.members.length; ++i) {\n this.members[i].gainExperience(numCycles);\n this.members[i].updateSkillLevels();\n }\n }\n\n clash(won = false): void {\n // Determine if a gang member should die\n let baseDeathChance = 0.01;\n if (won) baseDeathChance /= 2;\n // If the clash was lost, the player loses a small percentage of power\n else AllGangs[this.facName].power *= 1 / 1.008;\n\n // Deaths can only occur during X% of clashes\n if (Math.random() < 0.65) return;\n\n for (let i = this.members.length - 1; i >= 0; --i) {\n const member = this.members[i];\n\n // Only members assigned to Territory Warfare can die\n if (member.task !== \"Territory Warfare\") continue;\n\n // Chance to die is decreased based on defense\n const modifiedDeathChance = baseDeathChance / Math.pow(member.def, 0.6);\n if (Math.random() < modifiedDeathChance) {\n this.killMember(member);\n }\n }\n }\n\n canRecruitMember(): boolean {\n if (this.members.length >= GangConstants.MaximumGangMembers) return false;\n return this.respect >= this.getRespectNeededToRecruitMember();\n }\n\n getRespectNeededToRecruitMember(): number {\n // First N gang members are free (can be recruited at 0 respect)\n const numFreeMembers = 3;\n if (this.members.length < numFreeMembers) return 0;\n\n const i = this.members.length - (numFreeMembers - 1);\n return Math.pow(5, i);\n }\n\n recruitMember(name: string): boolean {\n name = String(name);\n if (name === \"\" || !this.canRecruitMember()) return false;\n\n // Check for already-existing names\n const sameNames = this.members.filter((m) => m.name === name);\n if (sameNames.length >= 1) return false;\n\n const member = new GangMember(name);\n this.members.push(member);\n return true;\n }\n\n // Money and Respect gains multiplied by this number (< 1)\n getWantedPenalty(): number {\n return this.respect / (this.respect + this.wanted);\n }\n\n //Calculates power GAIN, which is added onto the Gang's existing power\n calculatePower(): number {\n let memberTotal = 0;\n for (let i = 0; i < this.members.length; ++i) {\n if (!GangMemberTasks.hasOwnProperty(this.members[i].task) || this.members[i].task !== \"Territory Warfare\")\n continue;\n memberTotal += this.members[i].calculatePower();\n }\n return 0.015 * Math.max(0.002, this.getTerritory()) * memberTotal;\n }\n\n killMember(member: GangMember): void {\n // Player loses a percentage of total respect, plus whatever respect that member has earned\n const totalRespect = this.respect;\n const lostRespect = 0.05 * totalRespect + member.earnedRespect;\n this.respect = Math.max(0, totalRespect - lostRespect);\n\n for (let i = 0; i < this.members.length; ++i) {\n if (member.name === this.members[i].name) {\n this.members.splice(i, 1);\n break;\n }\n }\n\n // Notify of death\n if (this.notifyMemberDeath) {\n dialogBoxCreate(`${member.name} was killed in a gang clash! You lost ${lostRespect} respect`);\n }\n }\n\n ascendMember(member: GangMember, workerScript?: WorkerScript): IAscensionResult {\n try {\n const res = member.ascend();\n this.respect = Math.max(1, this.respect - res.respect);\n if (workerScript) {\n workerScript.log(\"gang.ascendMember\", () => `Ascended Gang member ${member.name}`);\n }\n return res;\n } catch (e: any) {\n if (workerScript == null) {\n exceptionAlert(e);\n }\n throw e; // Re-throw, will be caught in the Netscript Function\n }\n }\n\n // Cost of upgrade gets cheaper as gang increases in respect + power\n getDiscount(): number {\n const power = this.getPower();\n const respect = this.respect;\n\n const respectLinearFac = 5e6;\n const powerLinearFac = 1e6;\n const discount =\n Math.pow(respect, 0.01) + respect / respectLinearFac + Math.pow(power, 0.01) + power / powerLinearFac - 1;\n return Math.max(1, discount);\n }\n\n // Returns only valid tasks for this gang. Excludes 'Unassigned'\n getAllTaskNames(): string[] {\n return Object.keys(GangMemberTasks).filter((taskName: string) => {\n const task = GangMemberTasks[taskName];\n if (task == null) return false;\n if (task.name === \"Unassigned\") return false;\n // yes you need both checks\n return this.isHackingGang === task.isHacking || !this.isHackingGang === task.isCombat;\n });\n }\n\n getUpgradeCost(upg: GangMemberUpgrade | null): number {\n if (upg == null) {\n return Infinity;\n }\n return upg.cost / this.getDiscount();\n }\n\n /**\n * Serialize the current object to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"Gang\", this);\n }\n\n /**\n * Initiatizes a Gang object from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Gang {\n return Generic_fromJSON(Gang, value.data);\n }\n}\n\nReviver.constructors.Gang = Gang;\n","import { workerScripts } from \"./WorkerScripts\";\n\nlet pidCounter = 1;\n\n/**\n * Find and return the next availble PID for a script\n */\nexport function generateNextPid(): number {\n let tempCounter = pidCounter;\n\n // Cap the number of search iterations at some arbitrary value to avoid\n // infinite loops. We'll assume that players wont have 1mil+ running scripts\n let found = false;\n for (let i = 0; i < 1e6; ) {\n if (!workerScripts.has(tempCounter + i)) {\n found = true;\n tempCounter = tempCounter + i;\n break;\n }\n\n if (i === Number.MAX_SAFE_INTEGER - 1) {\n i = 1;\n } else {\n ++i;\n }\n }\n\n if (found) {\n pidCounter = tempCounter + 1;\n if (pidCounter >= Number.MAX_SAFE_INTEGER) {\n pidCounter = 1;\n }\n\n return tempCounter;\n } else {\n return -1;\n }\n}\n\nexport function resetPidCounter(): void {\n pidCounter = 1;\n}\n","import { vsprintf, sprintf } from \"sprintf-js\";\n\nimport { getRamCost } from \"./Netscript/RamCostGenerator\";\nimport { WorkerScriptStartStopEventEmitter } from \"./Netscript/WorkerScriptStartStopEventEmitter\";\n\nimport { BitNodeMultipliers } from \"./BitNode/BitNodeMultipliers\";\n\nimport { CONSTANTS } from \"./Constants\";\n\nimport {\n calculateHackingChance,\n calculateHackingExpGain,\n calculatePercentMoneyHacked,\n calculateHackingTime,\n calculateGrowTime,\n calculateWeakenTime,\n} from \"./Hacking\";\n\nimport { netscriptCanGrow, netscriptCanHack, netscriptCanWeaken } from \"./Hacking/netscriptCanHack\";\n\nimport { HacknetServer } from \"./Hacknet/HacknetServer\";\n\nimport { Terminal } from \"./Terminal\";\n\nimport { Player } from \"./Player\";\nimport { Programs } from \"./Programs/Programs\";\nimport { Script } from \"./Script/Script\";\nimport { findRunningScript, findRunningScriptByPid } from \"./Script/ScriptHelpers\";\nimport { isScriptFilename } from \"./Script/isScriptFilename\";\nimport { PromptEvent } from \"./ui/React/PromptManager\";\n\nimport { GetServer, GetAllServers, DeleteServer, AddToAllServers, createUniqueRandomIp } from \"./Server/AllServers\";\nimport { RunningScript } from \"./Script/RunningScript\";\nimport {\n getServerOnNetwork,\n numCycleForGrowth,\n processSingleServerGrowth,\n safetlyCreateUniqueServer,\n} from \"./Server/ServerHelpers\";\nimport { getPurchaseServerCost, getPurchaseServerLimit, getPurchaseServerMaxRam } from \"./Server/ServerPurchases\";\nimport { Server } from \"./Server/Server\";\nimport { SourceFileFlags } from \"./SourceFile/SourceFileFlags\";\nimport { influenceStockThroughServerHack, influenceStockThroughServerGrow } from \"./StockMarket/PlayerInfluencing\";\n\nimport { isValidFilePath, removeLeadingSlash } from \"./Terminal/DirectoryHelpers\";\nimport { TextFile, getTextFile, createTextFile } from \"./TextFile\";\n\nimport { NetscriptPorts, runScriptFromScript } from \"./NetscriptWorker\";\nimport { killWorkerScript } from \"./Netscript/killWorkerScript\";\nimport { workerScripts } from \"./Netscript/WorkerScripts\";\nimport { WorkerScript } from \"./Netscript/WorkerScript\";\nimport { makeRuntimeRejectMsg, netscriptDelay, resolveNetscriptRequestedThreads } from \"./NetscriptEvaluator\";\n\nimport { numeralWrapper } from \"./ui/numeralFormat\";\nimport { convertTimeMsToTimeElapsedString } from \"./utils/StringHelperFunctions\";\n\nimport { LogBoxEvents } from \"./ui/React/LogBoxManager\";\nimport { arrayToString } from \"./utils/helpers/arrayToString\";\nimport { isString } from \"./utils/helpers/isString\";\n\nimport { BaseServer } from \"./Server/BaseServer\";\nimport { NetscriptGang } from \"./NetscriptFunctions/Gang\";\nimport { NetscriptSleeve } from \"./NetscriptFunctions/Sleeve\";\nimport { NetscriptExtra } from \"./NetscriptFunctions/Extra\";\nimport { NetscriptHacknet } from \"./NetscriptFunctions/Hacknet\";\nimport { NetscriptStanek } from \"./NetscriptFunctions/Stanek\";\nimport { NetscriptUserInterface } from \"./NetscriptFunctions/UserInterface\";\nimport { NetscriptBladeburner } from \"./NetscriptFunctions/Bladeburner\";\nimport { NetscriptCodingContract } from \"./NetscriptFunctions/CodingContract\";\nimport { NetscriptCorporation } from \"./NetscriptFunctions/Corporation\";\nimport { NetscriptFormulas } from \"./NetscriptFunctions/Formulas\";\nimport { NetscriptStockMarket } from \"./NetscriptFunctions/StockMarket\";\nimport { NetscriptGrafting } from \"./NetscriptFunctions/Grafting\";\nimport { IPort } from \"./NetscriptPort\";\n\nimport {\n NS as INS,\n Player as INetscriptPlayer,\n Gang as IGang,\n Bladeburner as IBladeburner,\n Stanek as IStanek,\n SourceFileLvl,\n BasicHGWOptions,\n ProcessInfo,\n HackingMultipliers,\n HacknetMultipliers,\n BitNodeMultipliers as IBNMults,\n Server as IServerDef,\n RunningScript as IRunningScriptDef,\n} from \"./ScriptEditor/NetscriptDefinitions\";\nimport { NetscriptSingularity } from \"./NetscriptFunctions/Singularity\";\n\nimport { toNative } from \"./NetscriptFunctions/toNative\";\n\nimport { dialogBoxCreate } from \"./ui/React/DialogBox\";\nimport { SnackbarEvents } from \"./ui/React/Snackbar\";\n\nimport { Flags } from \"./NetscriptFunctions/Flags\";\nimport { calculateIntelligenceBonus } from \"./PersonObjects/formulas/intelligence\";\nimport { CalculateShareMult, StartSharing } from \"./NetworkShare/Share\";\nimport { CityName } from \"./Locations/data/CityNames\";\n\ninterface NS extends INS {\n [key: string]: any;\n gang: IGang;\n bladeburner: IBladeburner;\n stanek: IStanek;\n}\n\nexport function NetscriptFunctions(workerScript: WorkerScript): NS {\n const updateDynamicRam = function (fnName: string, ramCost: number): void {\n if (workerScript.dynamicLoadedFns[fnName]) {\n return;\n }\n workerScript.dynamicLoadedFns[fnName] = true;\n\n let threads = workerScript.scriptRef.threads;\n if (typeof threads !== \"number\") {\n console.warn(`WorkerScript detected NaN for threadcount for ${workerScript.name} on ${workerScript.hostname}`);\n threads = 1;\n }\n workerScript.dynamicRamUsage += ramCost;\n if (workerScript.dynamicRamUsage > 1.01 * workerScript.ramUsage) {\n throw makeRuntimeRejectMsg(\n workerScript,\n `Dynamic RAM usage calculated to be greater than initial RAM usage on fn: ${fnName}.\n This is probably because you somehow circumvented the static RAM calculation.\n\n Threads: ${threads}\n Dynamic RAM Usage: ${numeralWrapper.formatRAM(workerScript.dynamicRamUsage)}\n Static RAM Usage: ${numeralWrapper.formatRAM(workerScript.ramUsage)}\n\n One of these could be the reason:\n * Using eval() to get a reference to a ns function\n const myScan = eval('ns.scan');\n\n * Using map access to do the same\n const myScan = ns['scan'];\n\n Sorry :(`,\n );\n }\n };\n\n /**\n * Gets the Server for a specific hostname/ip, throwing an error\n * if the server doesn't exist.\n * @param {string} hostname - Hostname or IP of the server\n * @param {string} callingFnName - Name of calling function. For logging purposes\n * @returns {BaseServer} The specified server as a BaseServer\n */\n const safeGetServer = function (hostname: string, callingFnName: string): BaseServer {\n const server = GetServer(hostname);\n if (server == null) {\n throw makeRuntimeErrorMsg(callingFnName, `Invalid hostname: ${hostname}`);\n }\n return server;\n };\n\n /**\n * Searches for and returns the RunningScript object for the specified script.\n * If the 'fn' argument is not specified, this returns the current RunningScript.\n * @param {string} fn - Filename of script\n * @param {string} hostname - Hostname/ip of the server on which the script resides\n * @param {any[]} scriptArgs - Running script's arguments\n * @returns {RunningScript}\n * Running script identified by the parameters, or null if no such script\n * exists, or the current running script if the first argument 'fn'\n * is not specified.\n */\n const getRunningScript = function (\n fn: string,\n hostname: string,\n callingFnName: string,\n scriptArgs: any,\n ): RunningScript | null {\n if (typeof callingFnName !== \"string\" || callingFnName === \"\") {\n callingFnName = \"getRunningScript\";\n }\n\n if (!Array.isArray(scriptArgs)) {\n throw makeRuntimeRejectMsg(\n workerScript,\n `Invalid scriptArgs argument passed into getRunningScript() from ${callingFnName}(). ` +\n `This is probably a bug. Please report to game developer`,\n );\n }\n\n if (fn != null && typeof fn === \"string\") {\n // Get Logs of another script\n if (hostname == null) {\n hostname = workerScript.hostname;\n }\n const server = safeGetServer(hostname, callingFnName);\n\n return findRunningScript(fn, scriptArgs, server);\n }\n\n // If no arguments are specified, return the current RunningScript\n return workerScript.scriptRef;\n };\n\n const getRunningScriptByPid = function (pid: number, callingFnName: string): RunningScript | null {\n if (typeof callingFnName !== \"string\" || callingFnName === \"\") {\n callingFnName = \"getRunningScriptgetRunningScriptByPid\";\n }\n\n for (const server of GetAllServers()) {\n const runningScript = findRunningScriptByPid(pid, server);\n if (runningScript) return runningScript;\n }\n return null;\n };\n\n /**\n * Helper function for getting the error log message when the user specifies\n * a nonexistent running script\n * @param {string} fn - Filename of script\n * @param {string} hostname - Hostname/ip of the server on which the script resides\n * @param {any[]} scriptArgs - Running script's arguments\n * @returns {string} Error message to print to logs\n */\n const getCannotFindRunningScriptErrorMessage = function (fn: string, hostname: string, scriptArgs: any): string {\n if (!Array.isArray(scriptArgs)) {\n scriptArgs = [];\n }\n\n return `Cannot find running script ${fn} on server ${hostname} with args: ${arrayToString(scriptArgs)}`;\n };\n\n /**\n * Used to fail a function if the function's target is a Hacknet Server.\n * This is used for functions that should run on normal Servers, but not Hacknet Servers\n * @param {Server} server - Target server\n * @param {string} callingFn - Name of calling function. For logging purposes\n * @returns {boolean} True if the server is a Hacknet Server, false otherwise\n */\n const failOnHacknetServer = function (server: BaseServer, callingFn = \"\"): boolean {\n if (server instanceof HacknetServer) {\n workerScript.log(callingFn, () => `Does not work on Hacknet Servers`);\n return true;\n } else {\n return false;\n }\n };\n\n const makeRuntimeErrorMsg = function (caller: string, msg: string): string {\n const errstack = new Error().stack;\n if (errstack === undefined) throw new Error(\"how did we not throw an error?\");\n const stack = errstack.split(\"\\n\").slice(1);\n const scripts = workerScript.getServer().scripts;\n const userstack = [];\n for (const stackline of stack) {\n let filename;\n for (const script of scripts) {\n if (script.url && stackline.includes(script.url)) {\n filename = script.filename;\n }\n for (const dependency of script.dependencies) {\n if (stackline.includes(dependency.url)) {\n filename = dependency.filename;\n }\n }\n }\n if (!filename) continue;\n\n interface ILine {\n line: string;\n func: string;\n }\n\n function parseChromeStackline(line: string): ILine | null {\n const lineRe = /.*:(\\d+):\\d+.*/;\n const funcRe = /.*at (.+) \\(.*/;\n\n const lineMatch = line.match(lineRe);\n const funcMatch = line.match(funcRe);\n if (lineMatch && funcMatch) {\n return { line: lineMatch[1], func: funcMatch[1] };\n }\n return null;\n }\n let call = { line: \"-1\", func: \"unknown\" };\n const chromeCall = parseChromeStackline(stackline);\n if (chromeCall) {\n call = chromeCall;\n }\n\n function parseFirefoxStackline(line: string): ILine | null {\n const lineRe = /.*:(\\d+):\\d+$/;\n const lineMatch = line.match(lineRe);\n\n const lio = line.lastIndexOf(\"@\");\n\n if (lineMatch && lio !== -1) {\n return { line: lineMatch[1], func: line.slice(0, lio) };\n }\n return null;\n }\n\n const firefoxCall = parseFirefoxStackline(stackline);\n if (firefoxCall) {\n call = firefoxCall;\n }\n\n userstack.push(`${filename}:L${call.line}@${call.func}`);\n }\n\n workerScript.log(caller, () => msg);\n let rejectMsg = `${caller}: ${msg}`;\n if (userstack.length !== 0) rejectMsg += `
Stack: ${userstack.join(\" \")}`;\n return makeRuntimeRejectMsg(workerScript, rejectMsg);\n };\n\n const checkSingularityAccess = function (func: string): void {\n if (Player.bitNodeN !== 4) {\n if (Player.sourceFileLvl(4) === 0) {\n throw makeRuntimeErrorMsg(\n func,\n `This singularity function requires Source-File 4 to run. A power up you obtain later in the game. It will be very obvious when and how you can obtain it.`,\n );\n }\n }\n };\n\n const hack = function (\n hostname: string,\n manual: boolean,\n { threads: requestedThreads, stock }: any = {},\n ): Promise {\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"hack\", \"Takes 1 argument.\");\n }\n const threads = resolveNetscriptRequestedThreads(workerScript, \"hack\", requestedThreads);\n const server = safeGetServer(hostname, \"hack\");\n if (!(server instanceof Server)) {\n throw makeRuntimeErrorMsg(\"hack\", \"Cannot be executed on this server.\");\n }\n\n // Calculate the hacking time\n const hackingTime = calculateHackingTime(server, Player); // This is in seconds\n\n // No root access or skill level too low\n const canHack = netscriptCanHack(server, Player);\n if (!canHack.res) {\n throw makeRuntimeErrorMsg(\"hack\", canHack.msg || \"\");\n }\n\n workerScript.log(\n \"hack\",\n () =>\n `Executing on '${server.hostname}' in ${convertTimeMsToTimeElapsedString(\n hackingTime * 1000,\n true,\n )} (t=${numeralWrapper.formatThreads(threads)})`,\n );\n\n return netscriptDelay(hackingTime * 1000, workerScript).then(function () {\n const hackChance = calculateHackingChance(server, Player);\n const rand = Math.random();\n let expGainedOnSuccess = calculateHackingExpGain(server, Player) * threads;\n const expGainedOnFailure = expGainedOnSuccess / 4;\n if (rand < hackChance) {\n // Success!\n const percentHacked = calculatePercentMoneyHacked(server, Player);\n let maxThreadNeeded = Math.ceil(1 / percentHacked);\n if (isNaN(maxThreadNeeded)) {\n // Server has a 'max money' of 0 (probably). We'll set this to an arbitrarily large value\n maxThreadNeeded = 1e6;\n }\n\n let moneyDrained = Math.floor(server.moneyAvailable * percentHacked) * threads;\n\n // Over-the-top safety checks\n if (moneyDrained <= 0) {\n moneyDrained = 0;\n expGainedOnSuccess = expGainedOnFailure;\n }\n if (moneyDrained > server.moneyAvailable) {\n moneyDrained = server.moneyAvailable;\n }\n server.moneyAvailable -= moneyDrained;\n if (server.moneyAvailable < 0) {\n server.moneyAvailable = 0;\n }\n\n const moneyGained = moneyDrained * BitNodeMultipliers.ScriptHackMoneyGain;\n\n Player.gainMoney(moneyGained, \"hacking\");\n workerScript.scriptRef.onlineMoneyMade += moneyGained;\n Player.scriptProdSinceLastAug += moneyGained;\n workerScript.scriptRef.recordHack(server.hostname, moneyGained, threads);\n Player.gainHackingExp(expGainedOnSuccess);\n if (manual) Player.gainIntelligenceExp(0.005);\n workerScript.scriptRef.onlineExpGained += expGainedOnSuccess;\n workerScript.log(\n \"hack\",\n () =>\n `Successfully hacked '${server.hostname}' for ${numeralWrapper.formatMoney(\n moneyGained,\n )} and ${numeralWrapper.formatExp(expGainedOnSuccess)} exp (t=${numeralWrapper.formatThreads(threads)})`,\n );\n server.fortify(CONSTANTS.ServerFortifyAmount * Math.min(threads, maxThreadNeeded));\n if (stock) {\n influenceStockThroughServerHack(server, moneyDrained);\n }\n if (manual) {\n server.backdoorInstalled = true;\n }\n return Promise.resolve(moneyGained);\n } else {\n // Player only gains 25% exp for failure?\n Player.gainHackingExp(expGainedOnFailure);\n workerScript.scriptRef.onlineExpGained += expGainedOnFailure;\n workerScript.log(\n \"hack\",\n () =>\n `Failed to hack '${server.hostname}'. Gained ${numeralWrapper.formatExp(\n expGainedOnFailure,\n )} exp (t=${numeralWrapper.formatThreads(threads)})`,\n );\n return Promise.resolve(0);\n }\n });\n };\n\n const argsToString = function (args: any[]): string {\n let out = \"\";\n for (let arg of args) {\n arg = toNative(arg);\n out += typeof arg === \"object\" ? JSON.stringify(arg) : `${arg}`;\n }\n\n return out;\n };\n\n const helper = {\n updateDynamicRam: updateDynamicRam,\n makeRuntimeErrorMsg: makeRuntimeErrorMsg,\n string: (funcName: string, argName: string, v: unknown): string => {\n if (typeof v === \"string\") return v;\n if (typeof v === \"number\") return v + \"\"; // cast to string;\n throw makeRuntimeErrorMsg(funcName, `${argName} should be a string.`);\n },\n number: (funcName: string, argName: string, v: unknown): number => {\n if (typeof v === \"string\") {\n const x = parseFloat(v);\n if (!isNaN(x)) return x; // otherwise it wasn't even a string representing a number.\n } else if (typeof v === \"number\") {\n if (isNaN(v)) throw makeRuntimeErrorMsg(funcName, `${argName} is NaN.`);\n return v;\n }\n throw makeRuntimeErrorMsg(funcName, `${argName} should be a number.`);\n },\n boolean: (v: unknown): boolean => {\n return !!v; // Just convert it to boolean.\n },\n city: (funcName: string, argName: string, v: unknown): CityName => {\n if (typeof v !== \"string\") throw makeRuntimeErrorMsg(funcName, `${argName} should be a city name.`);\n const s = v as CityName;\n if (!Object.values(CityName).includes(s))\n throw makeRuntimeErrorMsg(funcName, `${argName} should be a city name.`);\n return s;\n },\n getServer: safeGetServer,\n checkSingularityAccess: checkSingularityAccess,\n hack: hack,\n getValidPort: (funcName: string, port: number): IPort => {\n if (isNaN(port)) {\n throw makeRuntimeErrorMsg(\n funcName,\n `Invalid argument. Must be a port number between 1 and ${CONSTANTS.NumNetscriptPorts}, is ${port}`,\n );\n }\n port = Math.round(port);\n if (port < 1 || port > CONSTANTS.NumNetscriptPorts) {\n throw makeRuntimeErrorMsg(\n funcName,\n `Trying to use an invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid.`,\n );\n }\n const iport = NetscriptPorts[port - 1];\n if (iport == null || !(iport instanceof Object)) {\n throw makeRuntimeErrorMsg(funcName, `Could not find port: ${port}. This is a bug. Report to dev.`);\n }\n return iport;\n },\n };\n\n const gang = NetscriptGang(Player, workerScript, helper);\n const sleeve = NetscriptSleeve(Player, workerScript, helper);\n const extra = NetscriptExtra(Player, workerScript, helper);\n const hacknet = NetscriptHacknet(Player, workerScript, helper);\n const stanek = NetscriptStanek(Player, workerScript, helper);\n const bladeburner = NetscriptBladeburner(Player, workerScript, helper);\n const codingcontract = NetscriptCodingContract(Player, workerScript, helper);\n const corporation = NetscriptCorporation(Player, workerScript, helper);\n const formulas = NetscriptFormulas(Player, workerScript, helper);\n const singularity = NetscriptSingularity(Player, workerScript, helper);\n const stockmarket = NetscriptStockMarket(Player, workerScript, helper);\n const ui = NetscriptUserInterface(Player, workerScript, helper);\n const grafting = NetscriptGrafting(Player, workerScript, helper);\n\n const base: INS = {\n ...singularity,\n\n singularity: singularity,\n gang: gang,\n bladeburner: bladeburner,\n codingcontract: codingcontract,\n sleeve: sleeve,\n corporation: corporation,\n stanek: stanek,\n ui: ui,\n formulas: formulas,\n stock: stockmarket,\n grafting: grafting,\n args: workerScript.args,\n hacknet: hacknet,\n sprintf: sprintf,\n vsprintf: vsprintf,\n scan: function (_hostname: unknown = workerScript.hostname): string[] {\n updateDynamicRam(\"scan\", getRamCost(Player, \"scan\"));\n const hostname = helper.string(\"scan\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"scan\");\n const out = [];\n for (let i = 0; i < server.serversOnNetwork.length; i++) {\n const s = getServerOnNetwork(server, i);\n if (s === null) continue;\n const entry = s.hostname;\n if (entry === null) continue;\n out.push(entry);\n }\n workerScript.log(\"scan\", () => `returned ${server.serversOnNetwork.length} connections for ${server.hostname}`);\n return out;\n },\n hack: function (_hostname: unknown, { threads: requestedThreads, stock }: BasicHGWOptions = {}): Promise {\n updateDynamicRam(\"hack\", getRamCost(Player, \"hack\"));\n const hostname = helper.string(\"hack\", \"hostname\", _hostname);\n return hack(hostname, false, { threads: requestedThreads, stock: stock });\n },\n hackAnalyzeThreads: function (_hostname: unknown, _hackAmount: unknown): number {\n updateDynamicRam(\"hackAnalyzeThreads\", getRamCost(Player, \"hackAnalyzeThreads\"));\n const hostname = helper.string(\"hackAnalyzeThreads\", \"hostname\", _hostname);\n const hackAmount = helper.number(\"hackAnalyzeThreads\", \"hackAmount\", _hackAmount);\n\n // Check argument validity\n const server = safeGetServer(hostname, \"hackAnalyzeThreads\");\n if (!(server instanceof Server)) {\n workerScript.log(\"hackAnalyzeThreads\", () => \"Cannot be executed on this server.\");\n return -1;\n }\n if (isNaN(hackAmount)) {\n throw makeRuntimeErrorMsg(\n \"hackAnalyzeThreads\",\n `Invalid hackAmount argument passed into hackAnalyzeThreads: ${hackAmount}. Must be numeric.`,\n );\n }\n\n if (hackAmount < 0 || hackAmount > server.moneyAvailable) {\n return -1;\n } else if (hackAmount === 0) {\n return 0;\n }\n\n const percentHacked = calculatePercentMoneyHacked(server, Player);\n\n if (percentHacked === 0 || server.moneyAvailable === 0) {\n return 0; // To prevent returning infinity below\n }\n\n return hackAmount / Math.floor(server.moneyAvailable * percentHacked);\n },\n hackAnalyze: function (_hostname: unknown): number {\n updateDynamicRam(\"hackAnalyze\", getRamCost(Player, \"hackAnalyze\"));\n const hostname = helper.string(\"hackAnalyze\", \"hostname\", _hostname);\n\n const server = safeGetServer(hostname, \"hackAnalyze\");\n if (!(server instanceof Server)) {\n workerScript.log(\"hackAnalyze\", () => \"Cannot be executed on this server.\");\n return 0;\n }\n\n return calculatePercentMoneyHacked(server, Player);\n },\n hackAnalyzeSecurity: function (_threads: unknown): number {\n updateDynamicRam(\"hackAnalyzeSecurity\", getRamCost(Player, \"hackAnalyzeSecurity\"));\n const threads = helper.number(\"hackAnalyzeSecurity\", \"threads\", _threads);\n return CONSTANTS.ServerFortifyAmount * threads;\n },\n hackAnalyzeChance: function (_hostname: unknown): number {\n updateDynamicRam(\"hackAnalyzeChance\", getRamCost(Player, \"hackAnalyzeChance\"));\n const hostname = helper.string(\"hackAnalyzeChance\", \"hostname\", _hostname);\n\n const server = safeGetServer(hostname, \"hackAnalyzeChance\");\n if (!(server instanceof Server)) {\n workerScript.log(\"hackAnalyzeChance\", () => \"Cannot be executed on this server.\");\n return 0;\n }\n\n return calculateHackingChance(server, Player);\n },\n sleep: async function (_time: unknown = 0): Promise {\n updateDynamicRam(\"sleep\", getRamCost(Player, \"sleep\"));\n const time = helper.number(\"sleep\", \"time\", _time);\n if (time === undefined) {\n throw makeRuntimeErrorMsg(\"sleep\", \"Takes 1 argument.\");\n }\n workerScript.log(\"sleep\", () => `Sleeping for ${time} milliseconds`);\n return netscriptDelay(time, workerScript).then(function () {\n return Promise.resolve(true);\n });\n },\n asleep: function (_time: unknown = 0): Promise {\n updateDynamicRam(\"asleep\", getRamCost(Player, \"asleep\"));\n const time = helper.number(\"asleep\", \"time\", _time);\n if (time === undefined) {\n throw makeRuntimeErrorMsg(\"asleep\", \"Takes 1 argument.\");\n }\n workerScript.log(\"asleep\", () => `Sleeping for ${time} milliseconds`);\n return new Promise((resolve) => setTimeout(() => resolve(true), time));\n },\n grow: async function (\n _hostname: unknown,\n { threads: requestedThreads, stock }: BasicHGWOptions = {},\n ): Promise {\n updateDynamicRam(\"grow\", getRamCost(Player, \"grow\"));\n const hostname = helper.string(\"grow\", \"hostname\", _hostname);\n const threads = resolveNetscriptRequestedThreads(\n workerScript,\n \"grow\",\n requestedThreads ?? workerScript.scriptRef.threads,\n );\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"grow\", \"Takes 1 argument.\");\n }\n const server = safeGetServer(hostname, \"grow\");\n if (!(server instanceof Server)) {\n workerScript.log(\"grow\", () => \"Cannot be executed on this server.\");\n return Promise.resolve(0);\n }\n\n const host = GetServer(workerScript.hostname);\n if (host === null) {\n throw new Error(\"Workerscript host is null\");\n }\n\n // No root access or skill level too low\n const canHack = netscriptCanGrow(server);\n if (!canHack.res) {\n throw makeRuntimeErrorMsg(\"grow\", canHack.msg || \"\");\n }\n\n const growTime = calculateGrowTime(server, Player);\n workerScript.log(\n \"grow\",\n () =>\n `Executing on '${server.hostname}' in ${convertTimeMsToTimeElapsedString(\n growTime * 1000,\n true,\n )} (t=${numeralWrapper.formatThreads(threads)}).`,\n );\n return netscriptDelay(growTime * 1000, workerScript).then(function () {\n const moneyBefore = server.moneyAvailable <= 0 ? 1 : server.moneyAvailable;\n processSingleServerGrowth(server, threads, Player, host.cpuCores);\n const moneyAfter = server.moneyAvailable;\n workerScript.scriptRef.recordGrow(server.hostname, threads);\n const expGain = calculateHackingExpGain(server, Player) * threads;\n const logGrowPercent = moneyAfter / moneyBefore - 1;\n workerScript.log(\n \"grow\",\n () =>\n `Available money on '${server.hostname}' grown by ${numeralWrapper.formatPercentage(\n logGrowPercent,\n 6,\n )}. Gained ${numeralWrapper.formatExp(expGain)} hacking exp (t=${numeralWrapper.formatThreads(threads)}).`,\n );\n workerScript.scriptRef.onlineExpGained += expGain;\n Player.gainHackingExp(expGain);\n if (stock) {\n influenceStockThroughServerGrow(server, moneyAfter - moneyBefore);\n }\n return Promise.resolve(moneyAfter / moneyBefore);\n });\n },\n growthAnalyze: function (_hostname: unknown, _growth: unknown, _cores: unknown = 1): number {\n updateDynamicRam(\"growthAnalyze\", getRamCost(Player, \"growthAnalyze\"));\n const hostname = helper.string(\"growthAnalyze\", \"hostname\", _hostname);\n const growth = helper.number(\"growthAnalyze\", \"growth\", _growth);\n const cores = helper.number(\"growthAnalyze\", \"cores\", _cores);\n\n // Check argument validity\n const server = safeGetServer(hostname, \"growthAnalyze\");\n if (!(server instanceof Server)) {\n workerScript.log(\"growthAnalyze\", () => \"Cannot be executed on this server.\");\n return 0;\n }\n if (typeof growth !== \"number\" || isNaN(growth) || growth < 1 || !isFinite(growth)) {\n throw makeRuntimeErrorMsg(\"growthAnalyze\", `Invalid argument: growth must be numeric and >= 1, is ${growth}.`);\n }\n\n return numCycleForGrowth(server, Number(growth), Player, cores);\n },\n growthAnalyzeSecurity: function (_threads: unknown): number {\n updateDynamicRam(\"growthAnalyzeSecurity\", getRamCost(Player, \"growthAnalyzeSecurity\"));\n const threads = helper.number(\"growthAnalyzeSecurity\", \"threads\", _threads);\n return 2 * CONSTANTS.ServerFortifyAmount * threads;\n },\n weaken: async function (_hostname: unknown, { threads: requestedThreads }: BasicHGWOptions = {}): Promise {\n updateDynamicRam(\"weaken\", getRamCost(Player, \"weaken\"));\n const hostname = helper.string(\"weaken\", \"hostname\", _hostname);\n const threads = resolveNetscriptRequestedThreads(\n workerScript,\n \"weaken\",\n requestedThreads ?? workerScript.scriptRef.threads,\n );\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"weaken\", \"Takes 1 argument.\");\n }\n const server = safeGetServer(hostname, \"weaken\");\n if (!(server instanceof Server)) {\n workerScript.log(\"weaken\", () => \"Cannot be executed on this server.\");\n return Promise.resolve(0);\n }\n\n // No root access or skill level too low\n const canHack = netscriptCanWeaken(server);\n if (!canHack.res) {\n throw makeRuntimeErrorMsg(\"weaken\", canHack.msg || \"\");\n }\n\n const weakenTime = calculateWeakenTime(server, Player);\n workerScript.log(\n \"weaken\",\n () =>\n `Executing on '${server.hostname}' in ${convertTimeMsToTimeElapsedString(\n weakenTime * 1000,\n true,\n )} (t=${numeralWrapper.formatThreads(threads)})`,\n );\n return netscriptDelay(weakenTime * 1000, workerScript).then(function () {\n const host = GetServer(workerScript.hostname);\n if (host === null) {\n workerScript.log(\"weaken\", () => \"Server is null, did it die?\");\n return Promise.resolve(0);\n }\n const coreBonus = 1 + (host.cpuCores - 1) / 16;\n server.weaken(CONSTANTS.ServerWeakenAmount * threads * coreBonus);\n workerScript.scriptRef.recordWeaken(server.hostname, threads);\n const expGain = calculateHackingExpGain(server, Player) * threads;\n workerScript.log(\n \"weaken\",\n () =>\n `'${server.hostname}' security level weakened to ${\n server.hackDifficulty\n }. Gained ${numeralWrapper.formatExp(expGain)} hacking exp (t=${numeralWrapper.formatThreads(threads)})`,\n );\n workerScript.scriptRef.onlineExpGained += expGain;\n Player.gainHackingExp(expGain);\n return Promise.resolve(CONSTANTS.ServerWeakenAmount * threads * coreBonus);\n });\n },\n weakenAnalyze: function (_threads: unknown, _cores: unknown = 1): number {\n updateDynamicRam(\"weakenAnalyze\", getRamCost(Player, \"weakenAnalyze\"));\n const threads = helper.number(\"weakenAnalyze\", \"threads\", _threads);\n const cores = helper.number(\"weakenAnalyze\", \"cores\", _cores);\n const coreBonus = 1 + (cores - 1) / 16;\n return CONSTANTS.ServerWeakenAmount * threads * coreBonus * BitNodeMultipliers.ServerWeakenRate;\n },\n share: async function (): Promise {\n updateDynamicRam(\"share\", getRamCost(Player, \"share\"));\n workerScript.log(\"share\", () => \"Sharing this computer.\");\n const end = StartSharing(workerScript.scriptRef.threads * calculateIntelligenceBonus(Player.intelligence, 2));\n return netscriptDelay(10000, workerScript).finally(function () {\n workerScript.log(\"share\", () => \"Finished sharing this computer.\");\n end();\n });\n },\n getSharePower: function (): number {\n updateDynamicRam(\"getSharePower\", getRamCost(Player, \"getSharePower\"));\n return CalculateShareMult();\n },\n print: function (...args: any[]): void {\n updateDynamicRam(\"print\", getRamCost(Player, \"print\"));\n if (args.length === 0) {\n throw makeRuntimeErrorMsg(\"print\", \"Takes at least 1 argument.\");\n }\n workerScript.print(argsToString(args));\n },\n printf: function (_format: unknown, ...args: any[]): void {\n updateDynamicRam(\"printf\", getRamCost(Player, \"printf\"));\n const format = helper.string(\"printf\", \"format\", _format);\n if (typeof format !== \"string\") {\n throw makeRuntimeErrorMsg(\"printf\", \"First argument must be string for the format.\");\n }\n workerScript.print(vsprintf(format, args));\n },\n tprint: function (...args: any[]): void {\n updateDynamicRam(\"tprint\", getRamCost(Player, \"tprint\"));\n if (args.length === 0) {\n throw makeRuntimeErrorMsg(\"tprint\", \"Takes at least 1 argument.\");\n }\n const str = argsToString(args);\n if (str.startsWith(\"ERROR\") || str.startsWith(\"FAIL\")) {\n Terminal.error(`${workerScript.scriptRef.filename}: ${str}`);\n return;\n }\n if (str.startsWith(\"SUCCESS\")) {\n Terminal.success(`${workerScript.scriptRef.filename}: ${str}`);\n return;\n }\n if (str.startsWith(\"WARN\")) {\n Terminal.warn(`${workerScript.scriptRef.filename}: ${str}`);\n return;\n }\n if (str.startsWith(\"INFO\")) {\n Terminal.info(`${workerScript.scriptRef.filename}: ${str}`);\n return;\n }\n Terminal.print(`${workerScript.scriptRef.filename}: ${str}`);\n },\n tprintf: function (_format: unknown, ...args: any[]): void {\n updateDynamicRam(\"tprintf\", getRamCost(Player, \"tprintf\"));\n const format = helper.string(\"printf\", \"format\", _format);\n if (typeof format !== \"string\") {\n throw makeRuntimeErrorMsg(\"tprintf\", \"First argument must be string for the format.\");\n }\n const str = vsprintf(format, args);\n\n if (str.startsWith(\"ERROR\") || str.startsWith(\"FAIL\")) {\n Terminal.error(`${str}`);\n return;\n }\n if (str.startsWith(\"SUCCESS\")) {\n Terminal.success(`${str}`);\n return;\n }\n if (str.startsWith(\"WARN\")) {\n Terminal.warn(`${str}`);\n return;\n }\n if (str.startsWith(\"INFO\")) {\n Terminal.info(`${str}`);\n return;\n }\n Terminal.print(`${str}`);\n },\n clearLog: function (): void {\n updateDynamicRam(\"clearLog\", getRamCost(Player, \"clearLog\"));\n workerScript.scriptRef.clearLog();\n },\n disableLog: function (_fn: unknown): void {\n updateDynamicRam(\"disableLog\", getRamCost(Player, \"disableLog\"));\n const fn = helper.string(\"disableLog\", \"fn\", _fn);\n if (fn === \"ALL\") {\n for (const fn of Object.keys(possibleLogs)) {\n workerScript.disableLogs[fn] = true;\n }\n workerScript.log(\"disableLog\", () => `Disabled logging for all functions`);\n } else if (possibleLogs[fn] === undefined) {\n throw makeRuntimeErrorMsg(\"disableLog\", `Invalid argument: ${fn}.`);\n } else {\n workerScript.disableLogs[fn] = true;\n workerScript.log(\"disableLog\", () => `Disabled logging for ${fn}`);\n }\n },\n enableLog: function (_fn: unknown): void {\n updateDynamicRam(\"enableLog\", getRamCost(Player, \"enableLog\"));\n const fn = helper.string(\"enableLog\", \"fn\", _fn);\n if (fn === \"ALL\") {\n for (const fn of Object.keys(possibleLogs)) {\n delete workerScript.disableLogs[fn];\n }\n workerScript.log(\"enableLog\", () => `Enabled logging for all functions`);\n } else if (possibleLogs[fn] === undefined) {\n throw makeRuntimeErrorMsg(\"enableLog\", `Invalid argument: ${fn}.`);\n }\n delete workerScript.disableLogs[fn];\n workerScript.log(\"enableLog\", () => `Enabled logging for ${fn}`);\n },\n isLogEnabled: function (_fn: unknown): boolean {\n updateDynamicRam(\"isLogEnabled\", getRamCost(Player, \"isLogEnabled\"));\n const fn = helper.string(\"isLogEnabled\", \"fn\", _fn);\n if (possibleLogs[fn] === undefined) {\n throw makeRuntimeErrorMsg(\"isLogEnabled\", `Invalid argument: ${fn}.`);\n }\n return !workerScript.disableLogs[fn];\n },\n getScriptLogs: function (fn: any, hostname: any, ...scriptArgs: any[]): string[] {\n updateDynamicRam(\"getScriptLogs\", getRamCost(Player, \"getScriptLogs\"));\n const runningScriptObj = getRunningScript(fn, hostname, \"getScriptLogs\", scriptArgs);\n if (runningScriptObj == null) {\n workerScript.log(\"getScriptLogs\", () => getCannotFindRunningScriptErrorMessage(fn, hostname, scriptArgs));\n return [];\n }\n\n return runningScriptObj.logs.slice();\n },\n tail: function (fn: any, hostname: any = workerScript.hostname, ...scriptArgs: any[]): void {\n updateDynamicRam(\"tail\", getRamCost(Player, \"tail\"));\n let runningScriptObj;\n if (arguments.length === 0) {\n runningScriptObj = workerScript.scriptRef;\n } else if (typeof fn === \"number\") {\n runningScriptObj = getRunningScriptByPid(fn, \"tail\");\n } else {\n runningScriptObj = getRunningScript(fn, hostname, \"tail\", scriptArgs);\n }\n if (runningScriptObj == null) {\n workerScript.log(\"tail\", () => getCannotFindRunningScriptErrorMessage(fn, hostname, scriptArgs));\n return;\n }\n\n LogBoxEvents.emit(runningScriptObj);\n },\n nuke: function (_hostname: unknown): boolean {\n updateDynamicRam(\"nuke\", getRamCost(Player, \"nuke\"));\n const hostname = helper.string(\"tail\", \"hostname\", _hostname);\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"nuke\", \"Takes 1 argument.\");\n }\n const server = safeGetServer(hostname, \"nuke\");\n if (!(server instanceof Server)) {\n workerScript.log(\"nuke\", () => \"Cannot be executed on this server.\");\n return false;\n }\n if (server.hasAdminRights) {\n workerScript.log(\"nuke\", () => `Already have root access to '${server.hostname}'.`);\n return true;\n }\n if (!Player.hasProgram(Programs.NukeProgram.name)) {\n throw makeRuntimeErrorMsg(\"nuke\", \"You do not have the NUKE.exe virus!\");\n }\n if (server.openPortCount < server.numOpenPortsRequired) {\n throw makeRuntimeErrorMsg(\"nuke\", \"Not enough ports opened to use NUKE.exe virus.\");\n }\n server.hasAdminRights = true;\n workerScript.log(\"nuke\", () => `Executed NUKE.exe virus on '${server.hostname}' to gain root access.`);\n return true;\n },\n brutessh: function (_hostname: unknown): boolean {\n updateDynamicRam(\"brutessh\", getRamCost(Player, \"brutessh\"));\n const hostname = helper.string(\"brutessh\", \"hostname\", _hostname);\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"brutessh\", \"Takes 1 argument.\");\n }\n const server = safeGetServer(hostname, \"brutessh\");\n if (!(server instanceof Server)) {\n workerScript.log(\"brutessh\", () => \"Cannot be executed on this server.\");\n return false;\n }\n if (!Player.hasProgram(Programs.BruteSSHProgram.name)) {\n throw makeRuntimeErrorMsg(\"brutessh\", \"You do not have the BruteSSH.exe program!\");\n }\n if (!server.sshPortOpen) {\n workerScript.log(\"brutessh\", () => `Executed BruteSSH.exe on '${server.hostname}' to open SSH port (22).`);\n server.sshPortOpen = true;\n ++server.openPortCount;\n } else {\n workerScript.log(\"brutessh\", () => `SSH Port (22) already opened on '${server.hostname}'.`);\n }\n return true;\n },\n ftpcrack: function (_hostname: unknown): boolean {\n updateDynamicRam(\"ftpcrack\", getRamCost(Player, \"ftpcrack\"));\n const hostname = helper.string(\"ftpcrack\", \"hostname\", _hostname);\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"ftpcrack\", \"Takes 1 argument.\");\n }\n const server = safeGetServer(hostname, \"ftpcrack\");\n if (!(server instanceof Server)) {\n workerScript.log(\"ftpcrack\", () => \"Cannot be executed on this server.\");\n return false;\n }\n if (!Player.hasProgram(Programs.FTPCrackProgram.name)) {\n throw makeRuntimeErrorMsg(\"ftpcrack\", \"You do not have the FTPCrack.exe program!\");\n }\n if (!server.ftpPortOpen) {\n workerScript.log(\"ftpcrack\", () => `Executed FTPCrack.exe on '${server.hostname}' to open FTP port (21).`);\n server.ftpPortOpen = true;\n ++server.openPortCount;\n } else {\n workerScript.log(\"ftpcrack\", () => `FTP Port (21) already opened on '${server.hostname}'.`);\n }\n return true;\n },\n relaysmtp: function (_hostname: unknown): boolean {\n updateDynamicRam(\"relaysmtp\", getRamCost(Player, \"relaysmtp\"));\n const hostname = helper.string(\"relaysmtp\", \"hostname\", _hostname);\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"relaysmtp\", \"Takes 1 argument.\");\n }\n const server = safeGetServer(hostname, \"relaysmtp\");\n if (!(server instanceof Server)) {\n workerScript.log(\"relaysmtp\", () => \"Cannot be executed on this server.\");\n return false;\n }\n if (!Player.hasProgram(Programs.RelaySMTPProgram.name)) {\n throw makeRuntimeErrorMsg(\"relaysmtp\", \"You do not have the relaySMTP.exe program!\");\n }\n if (!server.smtpPortOpen) {\n workerScript.log(\"relaysmtp\", () => `Executed relaySMTP.exe on '${server.hostname}' to open SMTP port (25).`);\n server.smtpPortOpen = true;\n ++server.openPortCount;\n } else {\n workerScript.log(\"relaysmtp\", () => `SMTP Port (25) already opened on '${server.hostname}'.`);\n }\n return true;\n },\n httpworm: function (_hostname: unknown): boolean {\n updateDynamicRam(\"httpworm\", getRamCost(Player, \"httpworm\"));\n const hostname = helper.string(\"httpworm\", \"hostname\", _hostname);\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"httpworm\", \"Takes 1 argument\");\n }\n const server = safeGetServer(hostname, \"httpworm\");\n if (!(server instanceof Server)) {\n workerScript.log(\"httpworm\", () => \"Cannot be executed on this server.\");\n return false;\n }\n if (!Player.hasProgram(Programs.HTTPWormProgram.name)) {\n throw makeRuntimeErrorMsg(\"httpworm\", \"You do not have the HTTPWorm.exe program!\");\n }\n if (!server.httpPortOpen) {\n workerScript.log(\"httpworm\", () => `Executed HTTPWorm.exe on '${server.hostname}' to open HTTP port (80).`);\n server.httpPortOpen = true;\n ++server.openPortCount;\n } else {\n workerScript.log(\"httpworm\", () => `HTTP Port (80) already opened on '${server.hostname}'.`);\n }\n return true;\n },\n sqlinject: function (_hostname: unknown): boolean {\n updateDynamicRam(\"sqlinject\", getRamCost(Player, \"sqlinject\"));\n const hostname = helper.string(\"sqlinject\", \"hostname\", _hostname);\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"sqlinject\", \"Takes 1 argument.\");\n }\n const server = safeGetServer(hostname, \"sqlinject\");\n if (!(server instanceof Server)) {\n workerScript.log(\"sqlinject\", () => \"Cannot be executed on this server.\");\n return false;\n }\n if (!Player.hasProgram(Programs.SQLInjectProgram.name)) {\n throw makeRuntimeErrorMsg(\"sqlinject\", \"You do not have the SQLInject.exe program!\");\n }\n if (!server.sqlPortOpen) {\n workerScript.log(\"sqlinject\", () => `Executed SQLInject.exe on '${server.hostname}' to open SQL port (1433).`);\n server.sqlPortOpen = true;\n ++server.openPortCount;\n } else {\n workerScript.log(\"sqlinject\", () => `SQL Port (1433) already opened on '${server.hostname}'.`);\n }\n return true;\n },\n run: function (_scriptname: unknown, _threads: unknown = 1, ...args: any[]): number {\n updateDynamicRam(\"run\", getRamCost(Player, \"run\"));\n const scriptname = helper.string(\"run\", \"scriptname\", _scriptname);\n const threads = helper.number(\"run\", \"threads\", _threads);\n if (scriptname === undefined) {\n throw makeRuntimeErrorMsg(\"run\", \"Usage: run(scriptname, [numThreads], [arg1], [arg2]...)\");\n }\n if (isNaN(threads) || threads <= 0) {\n throw makeRuntimeErrorMsg(\"run\", `Invalid thread count. Must be numeric and > 0, is ${threads}`);\n }\n const scriptServer = GetServer(workerScript.hostname);\n if (scriptServer == null) {\n throw makeRuntimeErrorMsg(\"run\", \"Could not find server. This is a bug. Report to dev.\");\n }\n\n return runScriptFromScript(Player, \"run\", scriptServer, scriptname, args, workerScript, threads);\n },\n exec: function (_scriptname: unknown, _hostname: unknown, _threads: unknown = 1, ...args: any[]): number {\n updateDynamicRam(\"exec\", getRamCost(Player, \"exec\"));\n const scriptname = helper.string(\"exec\", \"scriptname\", _scriptname);\n const hostname = helper.string(\"exec\", \"hostname\", _hostname);\n const threads = helper.number(\"exec\", \"threads\", _threads);\n if (scriptname === undefined || hostname === undefined) {\n throw makeRuntimeErrorMsg(\"exec\", \"Usage: exec(scriptname, server, [numThreads], [arg1], [arg2]...)\");\n }\n if (isNaN(threads) || threads <= 0) {\n throw makeRuntimeErrorMsg(\"exec\", `Invalid thread count. Must be numeric and > 0, is ${threads}`);\n }\n const server = safeGetServer(hostname, \"exec\");\n return runScriptFromScript(Player, \"exec\", server, scriptname, args, workerScript, threads);\n },\n spawn: function (_scriptname: unknown, _threads: unknown = 1, ...args: any[]): void {\n updateDynamicRam(\"spawn\", getRamCost(Player, \"spawn\"));\n const scriptname = helper.string(\"spawn\", \"scriptname\", _scriptname);\n const threads = helper.number(\"spawn\", \"threads\", _threads);\n if (!scriptname || !threads) {\n throw makeRuntimeErrorMsg(\"spawn\", \"Usage: spawn(scriptname, threads)\");\n }\n\n const spawnDelay = 10;\n setTimeout(() => {\n if (isNaN(threads) || threads <= 0) {\n throw makeRuntimeErrorMsg(\"spawn\", `Invalid thread count. Must be numeric and > 0, is ${threads}`);\n }\n const scriptServer = GetServer(workerScript.hostname);\n if (scriptServer == null) {\n throw makeRuntimeErrorMsg(\"spawn\", \"Could not find server. This is a bug. Report to dev\");\n }\n\n return runScriptFromScript(Player, \"spawn\", scriptServer, scriptname, args, workerScript, threads);\n }, spawnDelay * 1e3);\n\n workerScript.log(\"spawn\", () => `Will execute '${scriptname}' in ${spawnDelay} seconds`);\n\n workerScript.running = false; // Prevent workerScript from \"finishing execution naturally\"\n if (killWorkerScript(workerScript)) {\n workerScript.log(\"spawn\", () => \"Exiting...\");\n }\n },\n kill: function (filename: any, hostname?: any, ...scriptArgs: any[]): boolean {\n updateDynamicRam(\"kill\", getRamCost(Player, \"kill\"));\n\n let res;\n const killByPid = typeof filename === \"number\";\n if (killByPid) {\n // Kill by pid\n res = killWorkerScript(filename);\n } else {\n // Kill by filename/hostname\n if (filename === undefined || hostname === undefined) {\n throw makeRuntimeErrorMsg(\"kill\", \"Usage: kill(scriptname, server, [arg1], [arg2]...)\");\n }\n\n const server = safeGetServer(hostname, \"kill\");\n const runningScriptObj = getRunningScript(filename, hostname, \"kill\", scriptArgs);\n if (runningScriptObj == null) {\n workerScript.log(\"kill\", () => getCannotFindRunningScriptErrorMessage(filename, hostname, scriptArgs));\n return false;\n }\n\n res = killWorkerScript(runningScriptObj, server.hostname);\n }\n\n if (res) {\n if (killByPid) {\n workerScript.log(\"kill\", () => `Killing script with PID ${filename}`);\n } else {\n workerScript.log(\n \"kill\",\n () => `Killing '${filename}' on '${hostname}' with args: ${arrayToString(scriptArgs)}.`,\n );\n }\n return true;\n } else {\n if (killByPid) {\n workerScript.log(\"kill\", () => `No script with PID ${filename}`);\n } else {\n workerScript.log(\n \"kill\",\n () => `No such script '${filename}' on '${hostname}' with args: ${arrayToString(scriptArgs)}`,\n );\n }\n return false;\n }\n },\n killall: function (_hostname: unknown = workerScript.hostname): boolean {\n updateDynamicRam(\"killall\", getRamCost(Player, \"killall\"));\n const hostname = helper.string(\"killall\", \"hostname\", _hostname);\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"killall\", \"Takes 1 argument\");\n }\n const server = safeGetServer(hostname, \"killall\");\n const scriptsRunning = server.runningScripts.length > 0;\n for (let i = server.runningScripts.length - 1; i >= 0; --i) {\n killWorkerScript(server.runningScripts[i], server.hostname, false);\n }\n WorkerScriptStartStopEventEmitter.emit();\n workerScript.log(\n \"killall\",\n () => `Killing all scripts on '${server.hostname}'. May take a few minutes for the scripts to die.`,\n );\n\n return scriptsRunning;\n },\n exit: function (): void {\n updateDynamicRam(\"exit\", getRamCost(Player, \"exit\"));\n workerScript.running = false; // Prevent workerScript from \"finishing execution naturally\"\n if (killWorkerScript(workerScript)) {\n workerScript.log(\"exit\", () => \"Exiting...\");\n } else {\n workerScript.log(\"exit\", () => \"Failed. This is a bug. Report to dev.\");\n }\n },\n scp: async function (scriptname: any, _hostname1: unknown, hostname2?: any): Promise {\n updateDynamicRam(\"scp\", getRamCost(Player, \"scp\"));\n const hostname1 = helper.string(\"scp\", \"hostname1\", _hostname1);\n if (arguments.length !== 2 && arguments.length !== 3) {\n throw makeRuntimeErrorMsg(\"scp\", \"Takes 2 or 3 arguments\");\n }\n if (scriptname && scriptname.constructor === Array) {\n // Recursively call scp on all elements of array\n const scripts: Array = scriptname;\n if (scripts.length === 0) {\n throw makeRuntimeErrorMsg(\"scp\", \"No scripts to copy\");\n }\n let res = true;\n await Promise.all(\n scripts.map(async function (script) {\n if (!(await NetscriptFunctions(workerScript).scp(script, hostname1, hostname2))) {\n res = false;\n }\n }),\n );\n return Promise.resolve(res);\n }\n\n // Invalid file type\n if (!isValidFilePath(scriptname)) {\n throw makeRuntimeErrorMsg(\"scp\", `Invalid filename: '${scriptname}'`);\n }\n\n // Invalid file name\n if (!scriptname.endsWith(\".lit\") && !isScriptFilename(scriptname) && !scriptname.endsWith(\"txt\")) {\n throw makeRuntimeErrorMsg(\"scp\", \"Only works for scripts, .lit and .txt files\");\n }\n\n let destServer: BaseServer | null;\n let currServ: BaseServer | null;\n\n if (hostname2 != null) {\n // 3 Argument version: scriptname, source, destination\n if (scriptname === undefined || hostname1 === undefined || hostname2 === undefined) {\n throw makeRuntimeErrorMsg(\"scp\", \"Takes 2 or 3 arguments\");\n }\n destServer = safeGetServer(hostname2, \"scp\");\n currServ = safeGetServer(hostname1, \"scp\");\n } else if (hostname1 != null) {\n // 2 Argument version: scriptname, destination\n if (scriptname === undefined || hostname1 === undefined) {\n throw makeRuntimeErrorMsg(\"scp\", \"Takes 2 or 3 arguments\");\n }\n destServer = safeGetServer(hostname1, \"scp\");\n currServ = GetServer(workerScript.hostname);\n if (currServ == null) {\n throw makeRuntimeErrorMsg(\n \"scp\",\n \"Could not find server hostname for this script. This is a bug. Report to dev.\",\n );\n }\n } else {\n throw makeRuntimeErrorMsg(\"scp\", \"Takes 2 or 3 arguments\");\n }\n\n // Scp for lit files\n if (scriptname.endsWith(\".lit\")) {\n let found = false;\n for (let i = 0; i < currServ.messages.length; ++i) {\n if (currServ.messages[i] == scriptname) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n workerScript.log(\"scp\", () => `File '${scriptname}' does not exist.`);\n return Promise.resolve(false);\n }\n\n for (let i = 0; i < destServer.messages.length; ++i) {\n if (destServer.messages[i] === scriptname) {\n workerScript.log(\"scp\", () => `File '${scriptname}' copied over to '${destServer?.hostname}'.`);\n return Promise.resolve(true); // Already exists\n }\n }\n destServer.messages.push(scriptname);\n workerScript.log(\"scp\", () => `File '${scriptname}' copied over to '${destServer?.hostname}'.`);\n return Promise.resolve(true);\n }\n\n // Scp for text files\n if (scriptname.endsWith(\".txt\")) {\n let txtFile;\n for (let i = 0; i < currServ.textFiles.length; ++i) {\n if (currServ.textFiles[i].fn === scriptname) {\n txtFile = currServ.textFiles[i];\n break;\n }\n }\n if (txtFile === undefined) {\n workerScript.log(\"scp\", () => `File '${scriptname}' does not exist.`);\n return Promise.resolve(false);\n }\n\n for (let i = 0; i < destServer.textFiles.length; ++i) {\n if (destServer.textFiles[i].fn === scriptname) {\n // Overwrite\n destServer.textFiles[i].text = txtFile.text;\n workerScript.log(\"scp\", () => `File '${scriptname}' copied over to '${destServer?.hostname}'.`);\n return Promise.resolve(true);\n }\n }\n const newFile = new TextFile(txtFile.fn, txtFile.text);\n destServer.textFiles.push(newFile);\n workerScript.log(\"scp\", () => `File '${scriptname}' copied over to '${destServer?.hostname}'.`);\n return Promise.resolve(true);\n }\n\n // Scp for script files\n let sourceScript = null;\n for (let i = 0; i < currServ.scripts.length; ++i) {\n if (scriptname == currServ.scripts[i].filename) {\n sourceScript = currServ.scripts[i];\n break;\n }\n }\n if (sourceScript == null) {\n workerScript.log(\"scp\", () => `File '${scriptname}' does not exist.`);\n return Promise.resolve(false);\n }\n\n // Overwrite script if it already exists\n for (let i = 0; i < destServer.scripts.length; ++i) {\n if (scriptname == destServer.scripts[i].filename) {\n workerScript.log(\"scp\", () => `WARNING: File '${scriptname}' overwritten on '${destServer?.hostname}'`);\n const oldScript = destServer.scripts[i];\n // If it's the exact same file don't actually perform the\n // copy to avoid recompiling uselessly. Players tend to scp\n // liberally.\n if (oldScript.code === sourceScript.code) return Promise.resolve(true);\n oldScript.code = sourceScript.code;\n oldScript.ramUsage = sourceScript.ramUsage;\n oldScript.markUpdated();\n return Promise.resolve(true);\n }\n }\n\n // Create new script if it does not already exist\n const newScript = new Script(Player, scriptname);\n newScript.code = sourceScript.code;\n newScript.ramUsage = sourceScript.ramUsage;\n newScript.server = destServer.hostname;\n destServer.scripts.push(newScript);\n workerScript.log(\"scp\", () => `File '${scriptname}' copied over to '${destServer?.hostname}'.`);\n return new Promise((resolve) => {\n if (destServer === null) {\n resolve(false);\n return;\n }\n newScript.updateRamUsage(Player, destServer.scripts).then(() => resolve(true));\n });\n },\n ls: function (_hostname: unknown, _grep: unknown = \"\"): string[] {\n updateDynamicRam(\"ls\", getRamCost(Player, \"ls\"));\n const hostname = helper.string(\"ls\", \"hostname\", _hostname);\n const grep = helper.string(\"ls\", \"grep\", _grep);\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"ls\", \"Usage: ls(hostname/ip, [grep filter])\");\n }\n const server = safeGetServer(hostname, \"ls\");\n\n // Get the grep filter, if one exists\n let filter = \"\";\n if (arguments.length >= 2) {\n filter = grep.toString();\n }\n\n const allFiles = [];\n for (let i = 0; i < server.programs.length; i++) {\n if (filter) {\n if (server.programs[i].includes(filter)) {\n allFiles.push(server.programs[i]);\n }\n } else {\n allFiles.push(server.programs[i]);\n }\n }\n for (let i = 0; i < server.scripts.length; i++) {\n if (filter) {\n if (server.scripts[i].filename.includes(filter)) {\n allFiles.push(server.scripts[i].filename);\n }\n } else {\n allFiles.push(server.scripts[i].filename);\n }\n }\n for (let i = 0; i < server.messages.length; i++) {\n if (filter) {\n const msg = server.messages[i];\n if (msg.includes(filter)) {\n allFiles.push(msg);\n }\n } else {\n allFiles.push(server.messages[i]);\n }\n }\n\n for (let i = 0; i < server.textFiles.length; i++) {\n if (filter) {\n if (server.textFiles[i].fn.includes(filter)) {\n allFiles.push(server.textFiles[i].fn);\n }\n } else {\n allFiles.push(server.textFiles[i].fn);\n }\n }\n\n for (let i = 0; i < server.contracts.length; ++i) {\n if (filter) {\n if (server.contracts[i].fn.includes(filter)) {\n allFiles.push(server.contracts[i].fn);\n }\n } else {\n allFiles.push(server.contracts[i].fn);\n }\n }\n\n // Sort the files alphabetically then print each\n allFiles.sort();\n return allFiles;\n },\n ps: function (_hostname: unknown = workerScript.hostname): ProcessInfo[] {\n updateDynamicRam(\"ps\", getRamCost(Player, \"ps\"));\n const hostname = helper.string(\"ps\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"ps\");\n const processes = [];\n for (const script of server.runningScripts) {\n processes.push({\n filename: script.filename,\n threads: script.threads,\n args: script.args.slice(),\n pid: script.pid,\n });\n }\n return processes;\n },\n hasRootAccess: function (_hostname: unknown): boolean {\n updateDynamicRam(\"hasRootAccess\", getRamCost(Player, \"hasRootAccess\"));\n const hostname = helper.string(\"hasRootAccess\", \"hostname\", _hostname);\n if (hostname === undefined) {\n throw makeRuntimeErrorMsg(\"hasRootAccess\", \"Takes 1 argument\");\n }\n const server = safeGetServer(hostname, \"hasRootAccess\");\n return server.hasAdminRights;\n },\n getHostname: function (): string {\n updateDynamicRam(\"getHostname\", getRamCost(Player, \"getHostname\"));\n const scriptServer = GetServer(workerScript.hostname);\n if (scriptServer == null) {\n throw makeRuntimeErrorMsg(\"getHostname\", \"Could not find server. This is a bug. Report to dev.\");\n }\n return scriptServer.hostname;\n },\n getHackingLevel: function (): number {\n updateDynamicRam(\"getHackingLevel\", getRamCost(Player, \"getHackingLevel\"));\n Player.updateSkillLevels();\n workerScript.log(\"getHackingLevel\", () => `returned ${Player.hacking}`);\n return Player.hacking;\n },\n getHackingMultipliers: function (): HackingMultipliers {\n updateDynamicRam(\"getHackingMultipliers\", getRamCost(Player, \"getHackingMultipliers\"));\n return {\n chance: Player.hacking_chance_mult,\n speed: Player.hacking_speed_mult,\n money: Player.hacking_money_mult,\n growth: Player.hacking_grow_mult,\n };\n },\n getHacknetMultipliers: function (): HacknetMultipliers {\n updateDynamicRam(\"getHacknetMultipliers\", getRamCost(Player, \"getHacknetMultipliers\"));\n return {\n production: Player.hacknet_node_money_mult,\n purchaseCost: Player.hacknet_node_purchase_cost_mult,\n ramCost: Player.hacknet_node_ram_cost_mult,\n coreCost: Player.hacknet_node_core_cost_mult,\n levelCost: Player.hacknet_node_level_cost_mult,\n };\n },\n getBitNodeMultipliers: function (): IBNMults {\n updateDynamicRam(\"getBitNodeMultipliers\", getRamCost(Player, \"getBitNodeMultipliers\"));\n if (SourceFileFlags[5] <= 0 && Player.bitNodeN !== 5) {\n throw makeRuntimeErrorMsg(\"getBitNodeMultipliers\", \"Requires Source-File 5 to run.\");\n }\n const copy = Object.assign({}, BitNodeMultipliers);\n return copy;\n },\n getServer: function (_hostname: unknown = workerScript.hostname): IServerDef {\n updateDynamicRam(\"getServer\", getRamCost(Player, \"getServer\"));\n const hostname = helper.string(\"getServer\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServer\");\n const copy = Object.assign({}, server) as any;\n // These fields should be hidden.\n copy.contracts = undefined;\n copy.messages = undefined;\n copy.runningScripts = undefined;\n copy.scripts = undefined;\n copy.textFiles = undefined;\n copy.programs = undefined;\n copy.serversOnNetwork = undefined;\n if (!copy.baseDifficulty) copy.baseDifficulty = 0;\n if (!copy.hackDifficulty) copy.hackDifficulty = 0;\n if (!copy.minDifficulty) copy.minDifficulty = 0;\n if (!copy.moneyAvailable) copy.moneyAvailable = 0;\n if (!copy.moneyMax) copy.moneyMax = 0;\n if (!copy.numOpenPortsRequired) copy.numOpenPortsRequired = 0;\n if (!copy.openPortCount) copy.openPortCount = 0;\n if (!copy.requiredHackingSkill) copy.requiredHackingSkill = 0;\n if (!copy.serverGrowth) copy.serverGrowth = 0;\n return copy;\n },\n getServerMoneyAvailable: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerMoneyAvailable\", getRamCost(Player, \"getServerMoneyAvailable\"));\n const hostname = helper.string(\"getServerMoneyAvailable\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServerMoneyAvailable\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getServerMoneyAvailable\", () => \"Cannot be executed on this server.\");\n return 0;\n }\n if (failOnHacknetServer(server, \"getServerMoneyAvailable\")) {\n return 0;\n }\n if (server.hostname == \"home\") {\n // Return player's money\n workerScript.log(\n \"getServerMoneyAvailable\",\n () => `returned player's money: ${numeralWrapper.formatMoney(Player.money)}`,\n );\n return Player.money;\n }\n workerScript.log(\n \"getServerMoneyAvailable\",\n () => `returned ${numeralWrapper.formatMoney(server.moneyAvailable)} for '${server.hostname}'`,\n );\n return server.moneyAvailable;\n },\n getServerSecurityLevel: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerSecurityLevel\", getRamCost(Player, \"getServerSecurityLevel\"));\n const hostname = helper.string(\"getServerSecurityLevel\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServerSecurityLevel\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getServerSecurityLevel\", () => \"Cannot be executed on this server.\");\n return 1;\n }\n if (failOnHacknetServer(server, \"getServerSecurityLevel\")) {\n return 1;\n }\n workerScript.log(\n \"getServerSecurityLevel\",\n () => `returned ${numeralWrapper.formatServerSecurity(server.hackDifficulty)} for '${server.hostname}'`,\n );\n return server.hackDifficulty;\n },\n getServerBaseSecurityLevel: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerBaseSecurityLevel\", getRamCost(Player, \"getServerBaseSecurityLevel\"));\n const hostname = helper.string(\"getServerBaseSecurityLevel\", \"hostname\", _hostname);\n workerScript.log(\n \"getServerBaseSecurityLevel\",\n () => `getServerBaseSecurityLevel is deprecated because it's not useful.`,\n );\n const server = safeGetServer(hostname, \"getServerBaseSecurityLevel\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getServerBaseSecurityLevel\", () => \"Cannot be executed on this server.\");\n return 1;\n }\n if (failOnHacknetServer(server, \"getServerBaseSecurityLevel\")) {\n return 1;\n }\n workerScript.log(\n \"getServerBaseSecurityLevel\",\n () => `returned ${numeralWrapper.formatServerSecurity(server.baseDifficulty)} for '${server.hostname}'`,\n );\n return server.baseDifficulty;\n },\n getServerMinSecurityLevel: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerMinSecurityLevel\", getRamCost(Player, \"getServerMinSecurityLevel\"));\n const hostname = helper.string(\"getServerMinSecurityLevel\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServerMinSecurityLevel\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getServerMinSecurityLevel\", () => \"Cannot be executed on this server.\");\n return 1;\n }\n if (failOnHacknetServer(server, \"getServerMinSecurityLevel\")) {\n return 1;\n }\n workerScript.log(\n \"getServerMinSecurityLevel\",\n () => `returned ${numeralWrapper.formatServerSecurity(server.minDifficulty)} for ${server.hostname}`,\n );\n return server.minDifficulty;\n },\n getServerRequiredHackingLevel: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerRequiredHackingLevel\", getRamCost(Player, \"getServerRequiredHackingLevel\"));\n const hostname = helper.string(\"getServerRequiredHackingLevel\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServerRequiredHackingLevel\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getServerRequiredHackingLevel\", () => \"Cannot be executed on this server.\");\n return 1;\n }\n if (failOnHacknetServer(server, \"getServerRequiredHackingLevel\")) {\n return 1;\n }\n workerScript.log(\n \"getServerRequiredHackingLevel\",\n () => `returned ${numeralWrapper.formatSkill(server.requiredHackingSkill)} for '${server.hostname}'`,\n );\n return server.requiredHackingSkill;\n },\n getServerMaxMoney: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerMaxMoney\", getRamCost(Player, \"getServerMaxMoney\"));\n const hostname = helper.string(\"getServerMaxMoney\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServerMaxMoney\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getServerMaxMoney\", () => \"Cannot be executed on this server.\");\n return 0;\n }\n if (failOnHacknetServer(server, \"getServerMaxMoney\")) {\n return 0;\n }\n workerScript.log(\n \"getServerMaxMoney\",\n () => `returned ${numeralWrapper.formatMoney(server.moneyMax)} for '${server.hostname}'`,\n );\n return server.moneyMax;\n },\n getServerGrowth: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerGrowth\", getRamCost(Player, \"getServerGrowth\"));\n const hostname = helper.string(\"getServerGrowth\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServerGrowth\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getServerGrowth\", () => \"Cannot be executed on this server.\");\n return 1;\n }\n if (failOnHacknetServer(server, \"getServerGrowth\")) {\n return 1;\n }\n workerScript.log(\"getServerGrowth\", () => `returned ${server.serverGrowth} for '${server.hostname}'`);\n return server.serverGrowth;\n },\n getServerNumPortsRequired: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerNumPortsRequired\", getRamCost(Player, \"getServerNumPortsRequired\"));\n const hostname = helper.string(\"getServerNumPortsRequired\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServerNumPortsRequired\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getServerNumPortsRequired\", () => \"Cannot be executed on this server.\");\n return 5;\n }\n if (failOnHacknetServer(server, \"getServerNumPortsRequired\")) {\n return 5;\n }\n workerScript.log(\n \"getServerNumPortsRequired\",\n () => `returned ${server.numOpenPortsRequired} for '${server.hostname}'`,\n );\n return server.numOpenPortsRequired;\n },\n getServerRam: function (_hostname: unknown): [number, number] {\n updateDynamicRam(\"getServerRam\", getRamCost(Player, \"getServerRam\"));\n const hostname = helper.string(\"getServerRam\", \"hostname\", _hostname);\n workerScript.log(\n \"getServerRam\",\n () => `getServerRam is deprecated in favor of getServerMaxRam / getServerUsedRam`,\n );\n const server = safeGetServer(hostname, \"getServerRam\");\n workerScript.log(\n \"getServerRam\",\n () => `returned [${numeralWrapper.formatRAM(server.maxRam)}, ${numeralWrapper.formatRAM(server.ramUsed)}]`,\n );\n return [server.maxRam, server.ramUsed];\n },\n getServerMaxRam: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerMaxRam\", getRamCost(Player, \"getServerMaxRam\"));\n const hostname = helper.string(\"getServerMaxRam\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServerMaxRam\");\n workerScript.log(\"getServerMaxRam\", () => `returned ${numeralWrapper.formatRAM(server.maxRam)}`);\n return server.maxRam;\n },\n getServerUsedRam: function (_hostname: unknown): number {\n updateDynamicRam(\"getServerUsedRam\", getRamCost(Player, \"getServerUsedRam\"));\n const hostname = helper.string(\"getServerUsedRam\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getServerUsedRam\");\n workerScript.log(\"getServerUsedRam\", () => `returned ${numeralWrapper.formatRAM(server.ramUsed)}`);\n return server.ramUsed;\n },\n serverExists: function (_hostname: unknown): boolean {\n updateDynamicRam(\"serverExists\", getRamCost(Player, \"serverExists\"));\n const hostname = helper.string(\"serverExists\", \"hostname\", _hostname);\n return GetServer(hostname) !== null;\n },\n fileExists: function (_filename: unknown, _hostname: unknown = workerScript.hostname): boolean {\n updateDynamicRam(\"fileExists\", getRamCost(Player, \"fileExists\"));\n const filename = helper.string(\"fileExists\", \"filename\", _filename);\n const hostname = helper.string(\"fileExists\", \"hostname\", _hostname);\n if (filename === undefined) {\n throw makeRuntimeErrorMsg(\"fileExists\", \"Usage: fileExists(scriptname, [server])\");\n }\n const server = safeGetServer(hostname, \"fileExists\");\n for (let i = 0; i < server.scripts.length; ++i) {\n if (filename == server.scripts[i].filename) {\n return true;\n }\n }\n for (let i = 0; i < server.programs.length; ++i) {\n if (filename.toLowerCase() == server.programs[i].toLowerCase()) {\n return true;\n }\n }\n for (let i = 0; i < server.messages.length; ++i) {\n if (filename.toLowerCase() === server.messages[i].toLowerCase()) {\n return true;\n }\n }\n const txtFile = getTextFile(filename, server);\n return txtFile != null;\n },\n isRunning: function (fn: any, hostname: any = workerScript.hostname, ...scriptArgs: any[]): boolean {\n updateDynamicRam(\"isRunning\", getRamCost(Player, \"isRunning\"));\n if (fn === undefined || hostname === undefined) {\n throw makeRuntimeErrorMsg(\"isRunning\", \"Usage: isRunning(scriptname, server, [arg1], [arg2]...)\");\n }\n if (typeof fn === \"number\") {\n return getRunningScriptByPid(fn, \"isRunning\") != null;\n } else {\n return getRunningScript(fn, hostname, \"isRunning\", scriptArgs) != null;\n }\n },\n getPurchasedServerLimit: function (): number {\n updateDynamicRam(\"getPurchasedServerLimit\", getRamCost(Player, \"getPurchasedServerLimit\"));\n\n return getPurchaseServerLimit();\n },\n getPurchasedServerMaxRam: function (): number {\n updateDynamicRam(\"getPurchasedServerMaxRam\", getRamCost(Player, \"getPurchasedServerMaxRam\"));\n\n return getPurchaseServerMaxRam();\n },\n getPurchasedServerCost: function (_ram: unknown): number {\n updateDynamicRam(\"getPurchasedServerCost\", getRamCost(Player, \"getPurchasedServerCost\"));\n const ram = helper.number(\"getPurchasedServerCost\", \"ram\", _ram);\n\n const cost = getPurchaseServerCost(ram);\n if (cost === Infinity) {\n workerScript.log(\"getPurchasedServerCost\", () => `Invalid argument: ram='${ram}'`);\n return Infinity;\n }\n\n return cost;\n },\n purchaseServer: function (_name: unknown, _ram: unknown): string {\n updateDynamicRam(\"purchaseServer\", getRamCost(Player, \"purchaseServer\"));\n const name = helper.string(\"purchaseServer\", \"name\", _name);\n const ram = helper.number(\"purchaseServer\", \"ram\", _ram);\n if (arguments.length !== 2) throw makeRuntimeErrorMsg(\"purchaseServer\", \"Takes 2 arguments\");\n let hostnameStr = String(name);\n hostnameStr = hostnameStr.replace(/\\s+/g, \"\");\n if (hostnameStr == \"\") {\n workerScript.log(\"purchaseServer\", () => `Invalid argument: hostname='${hostnameStr}'`);\n return \"\";\n }\n\n if (Player.purchasedServers.length >= getPurchaseServerLimit()) {\n workerScript.log(\n \"purchaseServer\",\n () =>\n `You have reached the maximum limit of ${getPurchaseServerLimit()} servers. You cannot purchase any more.`,\n );\n return \"\";\n }\n\n const cost = getPurchaseServerCost(ram);\n if (cost === Infinity) {\n if (ram > getPurchaseServerMaxRam()) {\n workerScript.log(\n \"purchaseServer\",\n () => `Invalid argument: ram='${ram}' must not be greater than getPurchaseServerMaxRam`,\n );\n } else {\n workerScript.log(\"purchaseServer\", () => `Invalid argument: ram='${ram}' must be a positive power of 2`);\n }\n\n return \"\";\n }\n\n if (Player.money < cost) {\n workerScript.log(\n \"purchaseServer\",\n () => `Not enough money to purchase server. Need ${numeralWrapper.formatMoney(cost)}`,\n );\n return \"\";\n }\n const newServ = safetlyCreateUniqueServer({\n ip: createUniqueRandomIp(),\n hostname: hostnameStr,\n organizationName: \"\",\n isConnectedTo: false,\n adminRights: true,\n purchasedByPlayer: true,\n maxRam: ram,\n });\n AddToAllServers(newServ);\n\n Player.purchasedServers.push(newServ.hostname);\n const homeComputer = Player.getHomeComputer();\n homeComputer.serversOnNetwork.push(newServ.hostname);\n newServ.serversOnNetwork.push(homeComputer.hostname);\n Player.loseMoney(cost, \"servers\");\n workerScript.log(\n \"purchaseServer\",\n () => `Purchased new server with hostname '${newServ.hostname}' for ${numeralWrapper.formatMoney(cost)}`,\n );\n return newServ.hostname;\n },\n deleteServer: function (_name: unknown): boolean {\n updateDynamicRam(\"deleteServer\", getRamCost(Player, \"deleteServer\"));\n const name = helper.string(\"purchaseServer\", \"name\", _name);\n let hostnameStr = String(name);\n hostnameStr = hostnameStr.replace(/\\s\\s+/g, \"\");\n const server = GetServer(hostnameStr);\n if (!(server instanceof Server)) {\n workerScript.log(\"deleteServer\", () => `Invalid argument: hostname='${hostnameStr}'`);\n return false;\n }\n\n if (!server.purchasedByPlayer || server.hostname === \"home\") {\n workerScript.log(\"deleteServer\", () => \"Cannot delete non-purchased server.\");\n return false;\n }\n\n const hostname = server.hostname;\n\n // Can't delete server you're currently connected to\n if (server.isConnectedTo) {\n workerScript.log(\"deleteServer\", () => \"You are currently connected to the server you are trying to delete.\");\n return false;\n }\n\n // A server cannot delete itself\n if (hostname === workerScript.hostname) {\n workerScript.log(\"deleteServer\", () => \"Cannot delete the server this script is running on.\");\n return false;\n }\n\n // Delete all scripts running on server\n if (server.runningScripts.length > 0) {\n workerScript.log(\n \"deleteServer\",\n () => `Cannot delete server '${hostname}' because it still has scripts running.`,\n );\n return false;\n }\n\n // Delete from player's purchasedServers array\n let found = false;\n for (let i = 0; i < Player.purchasedServers.length; ++i) {\n if (hostname == Player.purchasedServers[i]) {\n found = true;\n Player.purchasedServers.splice(i, 1);\n break;\n }\n }\n\n if (!found) {\n workerScript.log(\n \"deleteServer\",\n () => `Could not identify server ${hostname} as a purchased server. This is a bug. Report to dev.`,\n );\n return false;\n }\n\n // Delete from all servers\n DeleteServer(hostname);\n\n // Delete from home computer\n found = false;\n const homeComputer = Player.getHomeComputer();\n for (let i = 0; i < homeComputer.serversOnNetwork.length; ++i) {\n if (hostname == homeComputer.serversOnNetwork[i]) {\n homeComputer.serversOnNetwork.splice(i, 1);\n workerScript.log(\"deleteServer\", () => `Deleted server '${hostnameStr}`);\n return true;\n }\n }\n // Wasn't found on home computer\n workerScript.log(\n \"deleteServer\",\n () => `Could not find server ${hostname} as a purchased server. This is a bug. Report to dev.`,\n );\n return false;\n },\n getPurchasedServers: function (): string[] {\n updateDynamicRam(\"getPurchasedServers\", getRamCost(Player, \"getPurchasedServers\"));\n const res: string[] = [];\n Player.purchasedServers.forEach(function (hostname) {\n res.push(hostname);\n });\n return res;\n },\n writePort: function (_port: unknown, data: any = \"\"): Promise {\n updateDynamicRam(\"writePort\", getRamCost(Player, \"writePort\"));\n const port = helper.number(\"writePort\", \"port\", _port);\n if (typeof data !== \"string\" && typeof data !== \"number\") {\n throw makeRuntimeErrorMsg(\n \"writePort\",\n `Trying to write invalid data to a port: only strings and numbers are valid.`,\n );\n }\n const iport = helper.getValidPort(\"writePort\", port);\n return Promise.resolve(iport.write(data));\n },\n write: function (_port: unknown, data: any = \"\", _mode: unknown = \"a\"): Promise {\n updateDynamicRam(\"write\", getRamCost(Player, \"write\"));\n const port = helper.string(\"write\", \"port\", _port);\n const mode = helper.string(\"write\", \"mode\", _mode);\n if (isString(port)) {\n // Write to script or text file\n let fn = port;\n if (!isValidFilePath(fn)) {\n throw makeRuntimeErrorMsg(\"write\", `Invalid filepath: ${fn}`);\n }\n\n if (fn.lastIndexOf(\"/\") === 0) {\n fn = removeLeadingSlash(fn);\n }\n\n // Coerce 'data' to be a string\n try {\n data = String(data);\n } catch (e: any) {\n throw makeRuntimeErrorMsg(\"write\", `Invalid data (${e}). Data being written must be convertible to a string`);\n }\n\n const server = workerScript.getServer();\n if (server == null) {\n throw makeRuntimeErrorMsg(\"write\", \"Error getting Server. This is a bug. Report to dev.\");\n }\n if (isScriptFilename(fn)) {\n // Write to script\n let script = workerScript.getScriptOnServer(fn, server);\n if (script == null) {\n // Create a new script\n script = new Script(Player, fn, data, server.hostname, server.scripts);\n server.scripts.push(script);\n return script.updateRamUsage(Player, server.scripts);\n }\n mode === \"w\" ? (script.code = data) : (script.code += data);\n return script.updateRamUsage(Player, server.scripts);\n } else {\n // Write to text file\n const txtFile = getTextFile(fn, server);\n if (txtFile == null) {\n createTextFile(fn, data, server);\n return Promise.resolve();\n }\n if (mode === \"w\") {\n txtFile.write(data);\n } else {\n txtFile.append(data);\n }\n }\n return Promise.resolve();\n } else {\n throw makeRuntimeErrorMsg(\"write\", `Invalid argument: ${port}`);\n }\n },\n tryWritePort: function (_port: unknown, data: any = \"\"): Promise {\n updateDynamicRam(\"tryWritePort\", getRamCost(Player, \"tryWritePort\"));\n let port = helper.number(\"tryWritePort\", \"port\", _port);\n if (typeof data !== \"string\" && typeof data !== \"number\") {\n throw makeRuntimeErrorMsg(\n \"tryWritePort\",\n `Trying to write invalid data to a port: only strings and numbers are valid.`,\n );\n }\n if (!isNaN(port)) {\n port = Math.round(port);\n if (port < 1 || port > CONSTANTS.NumNetscriptPorts) {\n throw makeRuntimeErrorMsg(\n \"tryWritePort\",\n `Invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid.`,\n );\n }\n const iport = NetscriptPorts[port - 1];\n if (iport == null || !(iport instanceof Object)) {\n throw makeRuntimeErrorMsg(\"tryWritePort\", `Could not find port: ${port}. This is a bug. Report to dev.`);\n }\n return Promise.resolve(iport.tryWrite(data));\n } else {\n throw makeRuntimeErrorMsg(\"tryWritePort\", `Invalid argument: ${port}`);\n }\n },\n readPort: function (_port: unknown): any {\n updateDynamicRam(\"readPort\", getRamCost(Player, \"readPort\"));\n const port = helper.number(\"readPort\", \"port\", _port);\n // Read from port\n const iport = helper.getValidPort(\"readPort\", port);\n const x = iport.read();\n return x;\n },\n read: function (_port: unknown): string {\n updateDynamicRam(\"read\", getRamCost(Player, \"read\"));\n const port = helper.string(\"read\", \"port\", _port);\n if (isString(port)) {\n // Read from script or text file\n const fn = port;\n const server = GetServer(workerScript.hostname);\n if (server == null) {\n throw makeRuntimeErrorMsg(\"read\", \"Error getting Server. This is a bug. Report to dev.\");\n }\n if (isScriptFilename(fn)) {\n // Read from script\n const script = workerScript.getScriptOnServer(fn, server);\n if (script == null) {\n return \"\";\n }\n return script.code;\n } else {\n // Read from text file\n const txtFile = getTextFile(fn, server);\n if (txtFile !== null) {\n return txtFile.text;\n } else {\n return \"\";\n }\n }\n } else {\n throw makeRuntimeErrorMsg(\"read\", `Invalid argument: ${port}`);\n }\n },\n peek: function (_port: unknown): any {\n updateDynamicRam(\"peek\", getRamCost(Player, \"peek\"));\n const port = helper.number(\"peek\", \"port\", _port);\n const iport = helper.getValidPort(\"peek\", port);\n const x = iport.peek();\n return x;\n },\n clear: function (_file: unknown): void {\n updateDynamicRam(\"clear\", getRamCost(Player, \"clear\"));\n const file = helper.string(\"peek\", \"file\", _file);\n if (isString(file)) {\n // Clear text file\n const fn = file;\n const server = GetServer(workerScript.hostname);\n if (server == null) {\n throw makeRuntimeErrorMsg(\"clear\", \"Error getting Server. This is a bug. Report to dev.\");\n }\n const txtFile = getTextFile(fn, server);\n if (txtFile != null) {\n txtFile.write(\"\");\n }\n } else {\n throw makeRuntimeErrorMsg(\"clear\", `Invalid argument: ${file}`);\n }\n },\n clearPort: function (_port: unknown): void {\n updateDynamicRam(\"clearPort\", getRamCost(Player, \"clearPort\"));\n const port = helper.number(\"clearPort\", \"port\", _port);\n // Clear port\n const iport = helper.getValidPort(\"clearPort\", port);\n iport.clear();\n },\n getPortHandle: function (_port: unknown): IPort {\n updateDynamicRam(\"getPortHandle\", getRamCost(Player, \"getPortHandle\"));\n const port = helper.number(\"getPortHandle\", \"port\", _port);\n const iport = helper.getValidPort(\"getPortHandle\", port);\n return iport;\n },\n rm: function (_fn: unknown, hostname: any): boolean {\n updateDynamicRam(\"rm\", getRamCost(Player, \"rm\"));\n const fn = helper.string(\"rm\", \"fn\", _fn);\n\n if (hostname == null || hostname === \"\") {\n hostname = workerScript.hostname;\n }\n const s = safeGetServer(hostname, \"rm\");\n\n const status = s.removeFile(fn);\n if (!status.res) {\n workerScript.log(\"rm\", () => status.msg + \"\");\n }\n\n return status.res;\n },\n scriptRunning: function (_scriptname: unknown, _hostname: unknown): boolean {\n updateDynamicRam(\"scriptRunning\", getRamCost(Player, \"scriptRunning\"));\n const scriptname = helper.string(\"scriptRunning\", \"scriptname\", _scriptname);\n const hostname = helper.string(\"scriptRunning\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"scriptRunning\");\n for (let i = 0; i < server.runningScripts.length; ++i) {\n if (server.runningScripts[i].filename == scriptname) {\n return true;\n }\n }\n return false;\n },\n scriptKill: function (_scriptname: unknown, _hostname: unknown): boolean {\n updateDynamicRam(\"scriptKill\", getRamCost(Player, \"scriptKill\"));\n const scriptname = helper.string(\"scriptKill\", \"scriptname\", _scriptname);\n const hostname = helper.string(\"scriptKill\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"scriptKill\");\n let suc = false;\n for (let i = 0; i < server.runningScripts.length; i++) {\n if (server.runningScripts[i].filename == scriptname) {\n killWorkerScript(server.runningScripts[i], server.hostname);\n suc = true;\n i--;\n }\n }\n return suc;\n },\n getScriptName: function (): string {\n updateDynamicRam(\"getScriptName\", getRamCost(Player, \"getScriptName\"));\n return workerScript.name;\n },\n getScriptRam: function (_scriptname: unknown, _hostname: unknown = workerScript.hostname): number {\n updateDynamicRam(\"getScriptRam\", getRamCost(Player, \"getScriptRam\"));\n const scriptname = helper.string(\"getScriptRam\", \"scriptname\", _scriptname);\n const hostname = helper.string(\"getScriptRam\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getScriptRam\");\n for (let i = 0; i < server.scripts.length; ++i) {\n if (server.scripts[i].filename == scriptname) {\n return server.scripts[i].ramUsage;\n }\n }\n return 0;\n },\n getRunningScript: function (fn: any, hostname: any, ...args: any[]): IRunningScriptDef | null {\n updateDynamicRam(\"getRunningScript\", getRamCost(Player, \"getRunningScript\"));\n\n let runningScript;\n if (fn === undefined && hostname === undefined && args.length === 0) {\n runningScript = workerScript.scriptRef;\n } else if (typeof fn === \"number\") {\n runningScript = getRunningScriptByPid(fn, \"getRunningScript\");\n } else {\n runningScript = getRunningScript(fn, hostname, \"getRunningScript\", args);\n }\n if (runningScript === null) return null;\n return {\n args: runningScript.args.slice(),\n filename: runningScript.filename,\n logs: runningScript.logs.slice(),\n offlineExpGained: runningScript.offlineExpGained,\n offlineMoneyMade: runningScript.offlineMoneyMade,\n offlineRunningTime: runningScript.offlineRunningTime,\n onlineExpGained: runningScript.onlineExpGained,\n onlineMoneyMade: runningScript.onlineMoneyMade,\n onlineRunningTime: runningScript.onlineRunningTime,\n pid: runningScript.pid,\n ramUsage: runningScript.ramUsage,\n server: runningScript.server,\n threads: runningScript.threads,\n };\n },\n getHackTime: function (_hostname: unknown = workerScript.hostname): number {\n updateDynamicRam(\"getHackTime\", getRamCost(Player, \"getHackTime\"));\n const hostname = helper.string(\"getHackTime\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getHackTime\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getHackTime\", () => \"invalid for this kind of server\");\n return Infinity;\n }\n if (failOnHacknetServer(server, \"getHackTime\")) {\n return Infinity;\n }\n\n return calculateHackingTime(server, Player) * 1000;\n },\n getGrowTime: function (_hostname: unknown = workerScript.hostname): number {\n updateDynamicRam(\"getGrowTime\", getRamCost(Player, \"getGrowTime\"));\n const hostname = helper.string(\"getGrowTime\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getGrowTime\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getGrowTime\", () => \"invalid for this kind of server\");\n return Infinity;\n }\n if (failOnHacknetServer(server, \"getGrowTime\")) {\n return Infinity;\n }\n\n return calculateGrowTime(server, Player) * 1000;\n },\n getWeakenTime: function (_hostname: unknown = workerScript.hostname): number {\n updateDynamicRam(\"getWeakenTime\", getRamCost(Player, \"getWeakenTime\"));\n const hostname = helper.string(\"getWeakenTime\", \"hostname\", _hostname);\n const server = safeGetServer(hostname, \"getWeakenTime\");\n if (!(server instanceof Server)) {\n workerScript.log(\"getWeakenTime\", () => \"invalid for this kind of server\");\n return Infinity;\n }\n if (failOnHacknetServer(server, \"getWeakenTime\")) {\n return Infinity;\n }\n\n return calculateWeakenTime(server, Player) * 1000;\n },\n getScriptIncome: function (scriptname?: any, hostname?: any, ...args: any[]): any {\n updateDynamicRam(\"getScriptIncome\", getRamCost(Player, \"getScriptIncome\"));\n if (arguments.length === 0) {\n const res = [];\n\n // First element is total income of all currently running scripts\n let total = 0;\n for (const script of workerScripts.values()) {\n total += script.scriptRef.onlineMoneyMade / script.scriptRef.onlineRunningTime;\n }\n res.push(total);\n\n // Second element is total income you've earned from scripts since you installed Augs\n res.push(Player.scriptProdSinceLastAug / (Player.playtimeSinceLastAug / 1000));\n return res;\n } else {\n // Get income for a particular script\n const server = safeGetServer(hostname, \"getScriptIncome\");\n const runningScriptObj = findRunningScript(scriptname, args, server);\n if (runningScriptObj == null) {\n workerScript.log(\n \"getScriptIncome\",\n () => `No such script '${scriptname}' on '${server.hostname}' with args: ${arrayToString(args)}`,\n );\n return -1;\n }\n return runningScriptObj.onlineMoneyMade / runningScriptObj.onlineRunningTime;\n }\n },\n getScriptExpGain: function (scriptname?: any, hostname?: any, ...args: any[]): number {\n updateDynamicRam(\"getScriptExpGain\", getRamCost(Player, \"getScriptExpGain\"));\n if (arguments.length === 0) {\n let total = 0;\n for (const ws of workerScripts.values()) {\n total += ws.scriptRef.onlineExpGained / ws.scriptRef.onlineRunningTime;\n }\n return total;\n } else {\n // Get income for a particular script\n const server = safeGetServer(hostname, \"getScriptExpGain\");\n const runningScriptObj = findRunningScript(scriptname, args, server);\n if (runningScriptObj == null) {\n workerScript.log(\n \"getScriptExpGain\",\n () => `No such script '${scriptname}' on '${server.hostname}' with args: ${arrayToString(args)}`,\n );\n return -1;\n }\n return runningScriptObj.onlineExpGained / runningScriptObj.onlineRunningTime;\n }\n },\n nFormat: function (_n: unknown, _format: unknown): string {\n updateDynamicRam(\"nFormat\", getRamCost(Player, \"nFormat\"));\n const n = helper.number(\"nFormat\", \"n\", _n);\n const format = helper.string(\"nFormat\", \"format\", _format);\n if (isNaN(n)) {\n return \"\";\n }\n\n return numeralWrapper.format(n, format);\n },\n tFormat: function (_milliseconds: unknown, _milliPrecision: unknown = false): string {\n updateDynamicRam(\"tFormat\", getRamCost(Player, \"tFormat\"));\n const milliseconds = helper.number(\"tFormat\", \"milliseconds\", _milliseconds);\n const milliPrecision = helper.boolean(_milliPrecision);\n return convertTimeMsToTimeElapsedString(milliseconds, milliPrecision);\n },\n getTimeSinceLastAug: function (): number {\n updateDynamicRam(\"getTimeSinceLastAug\", getRamCost(Player, \"getTimeSinceLastAug\"));\n return Player.playtimeSinceLastAug;\n },\n alert: function (_message: unknown): void {\n updateDynamicRam(\"alert\", getRamCost(Player, \"alert\"));\n const message = helper.string(\"alert\", \"message\", _message);\n dialogBoxCreate(message);\n },\n toast: function (_message: unknown, _variant: unknown = \"success\", duration: any = 2000): void {\n updateDynamicRam(\"toast\", getRamCost(Player, \"toast\"));\n const message = helper.string(\"toast\", \"message\", _message);\n const variant = helper.string(\"toast\", \"variant\", _variant);\n if (![\"success\", \"info\", \"warning\", \"error\"].includes(variant))\n throw new Error(`variant must be one of \"success\", \"info\", \"warning\", or \"error\"`);\n SnackbarEvents.emit(message, variant as any, duration);\n },\n prompt: function (_txt: unknown, options?: { type?: string; options?: string[] }): Promise {\n updateDynamicRam(\"prompt\", getRamCost(Player, \"prompt\"));\n const txt = helper.string(\"toast\", \"txt\", _txt);\n\n return new Promise(function (resolve) {\n PromptEvent.emit({\n txt: txt,\n options,\n resolve: resolve,\n });\n });\n },\n wget: async function (\n _url: unknown,\n _target: unknown,\n _hostname: unknown = workerScript.hostname,\n ): Promise {\n updateDynamicRam(\"wget\", getRamCost(Player, \"wget\"));\n const url = helper.string(\"wget\", \"url\", _url);\n const target = helper.string(\"wget\", \"target\", _target);\n const hostname = helper.string(\"wget\", \"hostname\", _hostname);\n if (!isScriptFilename(target) && !target.endsWith(\".txt\")) {\n workerScript.log(\"wget\", () => `Invalid target file: '${target}'. Must be a script or text file.`);\n return Promise.resolve(false);\n }\n const s = safeGetServer(hostname, \"wget\");\n return new Promise(function (resolve) {\n $.get(\n url,\n function (data) {\n let res;\n if (isScriptFilename(target)) {\n res = s.writeToScriptFile(Player, target, data);\n } else {\n res = s.writeToTextFile(target, data);\n }\n if (!res.success) {\n workerScript.log(\"wget\", () => \"Failed.\");\n return resolve(false);\n }\n if (res.overwritten) {\n workerScript.log(\n \"wget\",\n () => `Successfully retrieved content and overwrote '${target}' on '${hostname}'`,\n );\n return resolve(true);\n }\n workerScript.log(\"wget\", () => `Successfully retrieved content to new file '${target}' on '${hostname}'`);\n return resolve(true);\n },\n \"text\",\n ).fail(function (e) {\n workerScript.log(\"wget\", () => JSON.stringify(e));\n return resolve(false);\n });\n });\n },\n getFavorToDonate: function (): number {\n updateDynamicRam(\"getFavorToDonate\", getRamCost(Player, \"getFavorToDonate\"));\n return Math.floor(CONSTANTS.BaseFavorToDonate * BitNodeMultipliers.RepToDonateToFaction);\n },\n getOwnedSourceFiles: function (): SourceFileLvl[] {\n updateDynamicRam(\"getOwnedSourceFiles\", getRamCost(Player, \"getOwnedSourceFiles\"));\n const res: SourceFileLvl[] = [];\n for (let i = 0; i < Player.sourceFiles.length; ++i) {\n res.push({\n n: Player.sourceFiles[i].n,\n lvl: Player.sourceFiles[i].lvl,\n } as SourceFileLvl);\n }\n return res;\n },\n getPlayer: function (): INetscriptPlayer {\n updateDynamicRam(\"getPlayer\", getRamCost(Player, \"getPlayer\"));\n\n const data = {\n hacking: Player.hacking,\n hp: Player.hp,\n max_hp: Player.max_hp,\n strength: Player.strength,\n defense: Player.defense,\n dexterity: Player.dexterity,\n agility: Player.agility,\n charisma: Player.charisma,\n intelligence: Player.intelligence,\n hacking_chance_mult: Player.hacking_chance_mult,\n hacking_speed_mult: Player.hacking_speed_mult,\n hacking_money_mult: Player.hacking_money_mult,\n hacking_grow_mult: Player.hacking_grow_mult,\n hacking_exp: Player.hacking_exp,\n strength_exp: Player.strength_exp,\n defense_exp: Player.defense_exp,\n dexterity_exp: Player.dexterity_exp,\n agility_exp: Player.agility_exp,\n charisma_exp: Player.charisma_exp,\n hacking_mult: Player.hacking_mult,\n strength_mult: Player.strength_mult,\n defense_mult: Player.defense_mult,\n dexterity_mult: Player.dexterity_mult,\n agility_mult: Player.agility_mult,\n charisma_mult: Player.charisma_mult,\n hacking_exp_mult: Player.hacking_exp_mult,\n strength_exp_mult: Player.strength_exp_mult,\n defense_exp_mult: Player.defense_exp_mult,\n dexterity_exp_mult: Player.dexterity_exp_mult,\n agility_exp_mult: Player.agility_exp_mult,\n charisma_exp_mult: Player.charisma_exp_mult,\n company_rep_mult: Player.company_rep_mult,\n faction_rep_mult: Player.faction_rep_mult,\n numPeopleKilled: Player.numPeopleKilled,\n money: Player.money,\n city: Player.city,\n location: Player.location,\n companyName: Player.companyName,\n crime_money_mult: Player.crime_money_mult,\n crime_success_mult: Player.crime_success_mult,\n isWorking: Player.isWorking,\n workType: Player.workType,\n currentWorkFactionName: Player.currentWorkFactionName,\n currentWorkFactionDescription: Player.currentWorkFactionDescription,\n workHackExpGainRate: Player.workHackExpGainRate,\n workStrExpGainRate: Player.workStrExpGainRate,\n workDefExpGainRate: Player.workDefExpGainRate,\n workDexExpGainRate: Player.workDexExpGainRate,\n workAgiExpGainRate: Player.workAgiExpGainRate,\n workChaExpGainRate: Player.workChaExpGainRate,\n workRepGainRate: Player.workRepGainRate,\n workMoneyGainRate: Player.workMoneyGainRate,\n workMoneyLossRate: Player.workMoneyLossRate,\n workHackExpGained: Player.workHackExpGained,\n workStrExpGained: Player.workStrExpGained,\n workDefExpGained: Player.workDefExpGained,\n workDexExpGained: Player.workDexExpGained,\n workAgiExpGained: Player.workAgiExpGained,\n workChaExpGained: Player.workChaExpGained,\n workRepGained: Player.workRepGained,\n workMoneyGained: Player.workMoneyGained,\n createProgramName: Player.createProgramName,\n createProgramReqLvl: Player.createProgramReqLvl,\n className: Player.className,\n crimeType: Player.crimeType,\n work_money_mult: Player.work_money_mult,\n hacknet_node_money_mult: Player.hacknet_node_money_mult,\n hacknet_node_purchase_cost_mult: Player.hacknet_node_purchase_cost_mult,\n hacknet_node_ram_cost_mult: Player.hacknet_node_ram_cost_mult,\n hacknet_node_core_cost_mult: Player.hacknet_node_core_cost_mult,\n hacknet_node_level_cost_mult: Player.hacknet_node_level_cost_mult,\n hasWseAccount: Player.hasWseAccount,\n hasTixApiAccess: Player.hasTixApiAccess,\n has4SData: Player.has4SData,\n has4SDataTixApi: Player.has4SDataTixApi,\n bladeburner_max_stamina_mult: Player.bladeburner_max_stamina_mult,\n bladeburner_stamina_gain_mult: Player.bladeburner_stamina_gain_mult,\n bladeburner_analysis_mult: Player.bladeburner_analysis_mult,\n bladeburner_success_chance_mult: Player.bladeburner_success_chance_mult,\n bitNodeN: Player.bitNodeN,\n totalPlaytime: Player.totalPlaytime,\n playtimeSinceLastAug: Player.playtimeSinceLastAug,\n playtimeSinceLastBitnode: Player.playtimeSinceLastBitnode,\n jobs: {},\n factions: Player.factions.slice(),\n tor: Player.hasTorRouter(),\n inBladeburner: Player.inBladeburner(),\n hasCorporation: Player.hasCorporation(),\n entropy: Player.entropy,\n };\n Object.assign(data.jobs, Player.jobs);\n return data;\n },\n atExit: function (f: any): void {\n updateDynamicRam(\"atExit\", getRamCost(Player, \"atExit\"));\n if (typeof f !== \"function\") {\n throw makeRuntimeErrorMsg(\"atExit\", \"argument should be function\");\n }\n workerScript.atExit = () => {\n f();\n }; // Wrap the user function to prevent WorkerScript leaking as 'this'\n },\n mv: function (_host: unknown, _source: unknown, _destination: unknown): void {\n updateDynamicRam(\"mv\", getRamCost(Player, \"mv\"));\n const host = helper.string(\"mv\", \"host\", _host);\n const source = helper.string(\"mv\", \"source\", _source);\n const destination = helper.string(\"mv\", \"destination\", _destination);\n\n if (!isValidFilePath(source)) throw makeRuntimeErrorMsg(\"mv\", `Invalid filename: '${source}'`);\n if (!isValidFilePath(destination)) throw makeRuntimeErrorMsg(\"mv\", `Invalid filename: '${destination}'`);\n\n const source_is_txt = source.endsWith(\".txt\");\n const dest_is_txt = destination.endsWith(\".txt\");\n\n if (!isScriptFilename(source) && !source_is_txt)\n throw makeRuntimeErrorMsg(\"mv\", `'mv' can only be used on scripts and text files (.txt)`);\n if (source_is_txt != dest_is_txt)\n throw makeRuntimeErrorMsg(\"mv\", `Source and destination files must have the same type`);\n\n if (source === destination) {\n return;\n }\n\n // This will throw if the server is not found, we do not need to validate result.\n const destServer: BaseServer | null = safeGetServer(host, \"mv\");\n\n if (!source_is_txt && destServer.isRunning(source))\n throw makeRuntimeErrorMsg(\"mv\", `Cannot use 'mv' on a script that is running`);\n\n interface File {\n filename: string;\n }\n\n const files = source_is_txt ? destServer.textFiles : destServer.scripts;\n let source_file: File | null = null;\n let dest_file: File | null = null;\n\n for (let i = 0; i < files.length; ++i) {\n const file = files[i];\n if (file.filename === source) {\n source_file = file;\n } else if (file.filename === destination) {\n dest_file = file;\n }\n }\n\n if (source_file == null) throw makeRuntimeErrorMsg(\"mv\", `Source file ${source} does not exist`);\n\n if (dest_file != null) {\n if (dest_file instanceof TextFile && source_file instanceof TextFile) {\n dest_file.text = source_file.text;\n } else if (dest_file instanceof Script && source_file instanceof Script) {\n dest_file.code = source_file.code;\n dest_file.markUpdated();\n }\n\n destServer.removeFile(source);\n } else {\n source_file.filename = destination;\n if (source_file instanceof Script) {\n source_file.markUpdated();\n }\n }\n },\n flags: Flags(workerScript.args),\n };\n\n // add undocumented functions\n const ns = {\n ...base,\n ...extra,\n };\n function getFunctionNames(obj: any, prefix: string): string[] {\n const functionNames: string[] = [];\n for (const [key, value] of Object.entries(obj)) {\n if (key === \"args\") {\n continue;\n } else if (typeof value == \"function\") {\n functionNames.push(prefix + key);\n } else if (typeof value == \"object\") {\n functionNames.push(...getFunctionNames(value, key + \".\"));\n }\n }\n return functionNames;\n }\n\n const possibleLogs = Object.fromEntries([...getFunctionNames(ns, \"\")].map((a) => [a, true]));\n\n return ns;\n}\n","/**\n * Implementation of the mechanisms that allow the player to affect the\n * Stock Market\n */\nimport { Stock } from \"./Stock\";\nimport { StockMarket } from \"./StockMarket\";\n\nimport { Company } from \"../Company/Company\";\nimport { Server } from \"../Server/Server\";\n\n// Change in second-order forecast due to hacks/grows\nexport const forecastForecastChangeFromHack = 0.1;\n\n// Change in second-order forecast due to company work\nexport const forecastForecastChangeFromCompanyWork = 0.001;\n\n/**\n * Potentially decreases a stock's second-order forecast when its corresponding\n * server is hacked. The chance of the hack decreasing the stock's second-order\n * forecast is dependent on what percentage of the server's money is hacked\n * @param {Server} server - Server being hack()ed\n * @param {number} moneyHacked - Amount of money stolen from the server\n */\nexport function influenceStockThroughServerHack(server: Server, moneyHacked: number): void {\n const orgName = server.organizationName;\n let stock: Stock | null = null;\n if (typeof orgName === \"string\" && orgName !== \"\") {\n stock = StockMarket[orgName];\n }\n if (!(stock instanceof Stock)) {\n return;\n }\n\n const percTotalMoneyHacked = moneyHacked / server.moneyMax;\n if (Math.random() < percTotalMoneyHacked) {\n stock.changeForecastForecast(stock.otlkMagForecast - forecastForecastChangeFromHack);\n }\n}\n\n/**\n * Potentially increases a stock's second-order forecast when its corresponding\n * server is grown (grow()). The chance of the grow() to increase the stock's\n * second-order forecast is dependent on how much money is added to the server\n * @param {Server} server - Server being grow()n\n * @param {number} moneyHacked - Amount of money added to the server\n */\nexport function influenceStockThroughServerGrow(server: Server, moneyGrown: number): void {\n const orgName = server.organizationName;\n let stock: Stock | null = null;\n if (typeof orgName === \"string\" && orgName !== \"\") {\n stock = StockMarket[orgName];\n }\n if (!(stock instanceof Stock)) {\n return;\n }\n\n const percTotalMoneyGrown = moneyGrown / server.moneyMax;\n if (Math.random() < percTotalMoneyGrown) {\n stock.changeForecastForecast(stock.otlkMagForecast + forecastForecastChangeFromHack);\n }\n}\n\n/**\n * Potentially increases a stock's second-order forecast when the player works for\n * its corresponding company.\n * @param {Company} company - Company being worked for\n * @param {number} performanceMult - Effectiveness of player's work. Affects influence\n * @param {number} cyclesOfWork - # game cycles of work being processed\n */\nexport function influenceStockThroughCompanyWork(\n company: Company,\n performanceMult: number,\n cyclesOfWork: number,\n): void {\n const compName = company.name;\n let stock: Stock | null = null;\n if (typeof compName === \"string\" && compName !== \"\") {\n stock = StockMarket[compName];\n }\n if (!(stock instanceof Stock)) {\n return;\n }\n\n if (Math.random() < 0.002 * cyclesOfWork) {\n const change = forecastForecastChangeFromCompanyWork * performanceMult;\n stock.changeForecastForecast(stock.otlkMagForecast + change);\n }\n}\n","import { Company } from \"./Company\";\nimport { CompanyPosition } from \"./CompanyPosition\";\n\n/**\n * Returns a string with the given CompanyPosition's stat requirements\n */\n\nexport function getJobRequirementText(company: Company, pos: CompanyPosition, tooltiptext = false): string {\n let reqText = \"\";\n const offset: number = company.jobStatReqOffset;\n const reqHacking: number = pos.requiredHacking > 0 ? pos.requiredHacking + offset : 0;\n const reqStrength: number = pos.requiredStrength > 0 ? pos.requiredStrength + offset : 0;\n const reqDefense: number = pos.requiredDefense > 0 ? pos.requiredDefense + offset : 0;\n const reqDexterity: number = pos.requiredDexterity > 0 ? pos.requiredDexterity + offset : 0;\n const reqAgility: number = pos.requiredDexterity > 0 ? pos.requiredDexterity + offset : 0;\n const reqCharisma: number = pos.requiredCharisma > 0 ? pos.requiredCharisma + offset : 0;\n const reqRep: number = pos.requiredReputation;\n if (tooltiptext) {\n reqText = \"Requires: \";\n reqText += reqHacking.toString() + \" hacking \";\n reqText += reqStrength.toString() + \" strength \";\n reqText += reqDefense.toString() + \" defense \";\n reqText += reqDexterity.toString() + \" dexterity \";\n reqText += reqAgility.toString() + \" agility \";\n reqText += reqCharisma.toString() + \" charisma \";\n reqText += reqRep.toString() + \" reputation\";\n } else {\n reqText = \"(Requires \";\n if (reqHacking > 0) {\n reqText += reqHacking + \" hacking, \";\n }\n if (reqStrength > 0) {\n reqText += reqStrength + \" strength, \";\n }\n if (reqDefense > 0) {\n reqText += reqDefense + \" defense, \";\n }\n if (reqDexterity > 0) {\n reqText += reqDexterity + \" dexterity, \";\n }\n if (reqAgility > 0) {\n reqText += reqAgility + \" agility, \";\n }\n if (reqCharisma > 0) {\n reqText += reqCharisma + \" charisma, \";\n }\n if (reqRep > 1) {\n reqText += reqRep + \" reputation, \";\n }\n reqText = reqText.substring(0, reqText.length - 2);\n reqText += \")\";\n }\n return reqText;\n}\n","/* tslint:disable:max-line-length completed-docs variable-name*/\nimport { IMap } from \"../types\";\n\nexport const TerminalHelpText: string[] = [\n \"Type 'help name' to learn more about the command \",\n \" \",\n ' alias [-g] [name=\"value\"] Create or display Terminal aliases',\n \" analyze Get information about the current machine \",\n \" backdoor Install a backdoor on the current machine \",\n \" buy [-l/-a/program] Purchase a program through the Dark Web\",\n \" cat [file] Display a .msg, .lit, or .txt file\",\n \" cd [dir] Change to a new directory\",\n \" check [script] [args...] Print a script's logs to Terminal\",\n \" clear Clear all text on the terminal \",\n \" cls See 'clear' command \",\n \" connect [hostname] Connects to a remote server\",\n \" cp [src] [dst] Copy a file\",\n \" download [script/text file] Downloads scripts or text files to your computer\",\n \" expr [math expression] Evaluate a mathematical expression\",\n \" free Check the machine's memory (RAM) usage\",\n \" grow Spoof money in a servers bank account, increasing the amount available.\",\n \" hack Hack the current machine\",\n \" help [command] Display this help text, or the help text for a command\",\n \" history [-c] Display the terminal history\",\n \" home Connect to home computer\",\n \" hostname Displays the hostname of the machine\",\n \" kill [script/pid] [args...] Stops the specified script on the current server \",\n \" killall Stops all running scripts on the current machine\",\n \" ls [dir] [--grep pattern] Displays all files on the machine\",\n \" lscpu Displays the number of CPU cores on the machine\",\n \" mem [script] [-t n] Displays the amount of RAM required to run the script\",\n \" mv [src] [dest] Move/rename a text or script file\",\n \" nano [file ...] Text editor - Open up and edit one or more scripts or text files\",\n \" ps Display all scripts that are currently running\",\n \" rm [file] Delete a file from the server\",\n \" run [name] [-t n] [--tail] [args...] Execute a program or script\",\n \" scan Prints all immediately-available network connections\",\n \" scan-analyze [d] [-a] Prints info for all servers up to d nodes away\",\n \" scp [file ...] [server] Copies a file to a destination server\",\n \" sudov Shows whether you have root access on this computer\",\n \" tail [script] [args...] Displays dynamic logs for the specified script\",\n \" top Displays all running scripts and their RAM usage\",\n \" unalias [alias name] Deletes the specified alias\",\n \" vim [file ...] Text editor - Open up and edit one or more scripts or text files in vim mode\",\n \" weaken Reduce the security of the current machine\",\n \" wget [url] [target file] Retrieves code/text from a web server\",\n \" \",\n];\n\nconst TemplatedHelpTexts: IMap<(command: string) => string[]> = {\n scriptEditor: (command) => {\n return [\n `Usage: ${command} [file ...] | [glob]`,\n ` `,\n `Opens up the specified file(s) in the Script Editor. Only scripts (.js, .ns, .script) or text files (.txt) `,\n `can be edited using the Script Editor. If a file does not exist a new one will be created`,\n ` `,\n `If provided a glob as the only argument, ${command} can spider directories and open all matching `,\n `files at once. ${command} cannot create files using globs, so your scripts must already exist.`,\n ` `,\n `Examples:`,\n ` `,\n ` ${command} test.js`,\n ` ${command} test.js test2.js`,\n ` `,\n ` ${command} test.*`,\n ` ${command} /my-dir/*.js`,\n ` `,\n ];\n },\n};\n\nexport const HelpTexts: IMap = {\n alias: [\n 'Usage: alias [-g] [name=\"value\"] ',\n \" \",\n \"Create or display aliases. An alias enables a replacement of a word with another string. \",\n \"It can be used to abbreviate a commonly used command, or commonly used parts of a command. The NAME \",\n \"of an alias defines the word that will be replaced, while the VALUE defines what it will be replaced by. For example, \",\n \"you could create the alias 'nuke' for the Terminal command 'run NUKE.exe' using the following: \",\n \" \",\n ' alias nuke=\"run NUKE.exe\"',\n \" \",\n \"Then, to run the NUKE.exe program you would just have to enter 'nuke' in Terminal rather than the full command. \",\n \"It is important to note that 'default' aliases will only be substituted for the first word of a Terminal command. For \",\n \"example, if the following alias was set: \",\n \" \",\n ' alias worm=\"HTTPWorm.exe\"',\n \" \",\n \"and then you tried to run the following terminal command: \",\n \" \",\n \" run worm\",\n \" \",\n \"This would fail because the worm alias is not the first word of a Terminal command. To allow an alias to be substituted \",\n \"anywhere in a Terminal command, rather than just the first word, you must set it to be a global alias using the -g flag: \",\n \" \",\n ' alias -g worm=\"HTTPWorm.exe\"',\n \" \",\n \"Now, the 'worm' alias will be substituted anytime it shows up as an individual word in a Terminal command. \",\n \" \",\n \"Entering just the command 'alias' without any arguments prints the list of all defined aliases in the reusable form \",\n \"'alias NAME=VALUE' on the Terminal. \",\n \" \",\n \"The 'unalias' command can be used to remove aliases.\",\n \" \",\n ],\n analyze: [\n \"Usage: analyze\",\n \" \",\n \"Prints details and statistics about the current server. The information that is printed includes basic \",\n \"server details such as the hostname, whether the player has root access, what ports are opened/closed, and also \",\n \"hacking-related information such as an estimated chance to successfully hack, an estimate of how much money is \",\n \"available on the server, etc.\",\n \" \",\n ],\n backdoor: [\n \"Usage: backdoor\",\n \" \",\n \"Install a backdoor on the current machine, grants a secret bonus depending on the machine.\",\n \" \",\n \"Requires root access to run.\",\n \" \",\n ],\n buy: [\n \"Usage: buy [-l / -a / program]\",\n \" \",\n \"Purchase a program through the Dark Web. Requires a TOR router to use.\",\n \" \",\n \"If this command is ran with the '-l' flag, it will display a list of all programs that can be bought through the \",\n \"dark web to the Terminal, as well as their costs.\",\n \" \",\n \"If this command is ran with the '-a' flag, it will attempt to purchase all unowned programs.\",\n \" \",\n \"Otherwise, the name of the program must be passed in as a parameter. This name is NOT case-sensitive.\",\n \" \",\n ],\n cat: [\n \"Usage: cat [file]\",\n \" \",\n \"Display message (.msg), literature (.lit), or text (.txt) files. Examples:\",\n \" \",\n \" cat j1.msg\",\n \" \",\n \" cat foo.lit\",\n \" \",\n \" cat servers.txt\",\n \" \",\n ],\n cd: [\n \"Usage: cd [dir]\",\n \" \",\n \"Change to the specified directory. Note that this works even for directories that don't exist. If you \",\n \"change to a directory that does not exist, it will not be 'created'. Examples:\",\n \" \",\n \" cd scripts/hacking\",\n \" \",\n \" cd /logs\",\n \" \",\n \" cd ../\",\n \" \",\n ],\n check: [\n \"Usage: check [script name] [args...]\",\n \" \",\n \"Print the logs of the script specified by the script name and arguments to the Terminal. Each argument must be separated by \",\n \"a space. Remember that a running script is uniquely \",\n \"identified both by its name and the arguments that are used to start it. So, if a script was ran with the following arguments: \",\n \" \",\n \" run foo.script 1 2 foodnstuff\",\n \" \",\n \"Then to run the 'check' command on this script you would have to pass the same arguments in: \",\n \" \",\n \" check foo.script 1 2 foodnstuff\",\n \" \",\n ],\n clear: [\n \"Usage: clear\",\n \" \",\n \"Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up \",\n \"and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'cls' command\",\n \" \",\n ],\n cls: [\n \"Usage: cls\",\n \" \",\n \"Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up \",\n \"and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'clear' command\",\n \" \",\n ],\n connect: [\n \"Usage: connect [hostname]\",\n \" \",\n \"Connect to a remote server. The hostname of the remote server must be given as the argument \",\n \"to this command. Note that only servers that are immediately adjacent to the current server in the network can be connected to. To \",\n \"see which servers can be connected to, use the 'scan' command.\",\n \" \",\n ],\n cp: [\"Usage: cp [src] [dst]\", \" \", \"Copy a file on this server. To copy a file to another server use scp.\", \" \"],\n download: [\n \"Usage: download [script/text file]\",\n \" \",\n \"Downloads a script or text file to your computer (like your real life computer).\",\n \" \",\n \"You can also download all of your scripts/text files as a zip file using the following Terminal commands:\",\n \" \",\n \"Download all scripts and text files: download *\",\n \" \",\n \"Download all scripts: download *.script\",\n \" \",\n \"Download all text files: download *.txt\",\n \" \",\n ],\n expr: [\n \"Usage: expr [mathematical expression]\",\n \" \",\n \"Evaluate a simple mathematical expression. Supports native JavaScript operators:\",\n \" \",\n \"+, -, /, *, **, %\",\n \" \",\n \"Example:\",\n \" \",\n \" expr 25 * 2 ** 10\",\n \" \",\n \"Note that letters (non-digits) are not allowed and will be removed from the input.\",\n \" \",\n ],\n free: [\n \"Usage: free\",\n \" \",\n \"Displays the memory usage on the current machine. Print the amount of RAM that is available on the current server as well as \",\n \"how much of it is being used.\",\n \" \",\n ],\n grow: [\n \"Usage: grow\",\n \" \",\n \"Spoof transactions in the current server. Increasing the money available by hacking. Requires root access.\",\n \"See the wiki page for hacking mechanics.\",\n \" \",\n ],\n hack: [\n \"Usage: hack\",\n \" \",\n \"Attempt to hack the current server. Requires root access in order to be run. See the wiki page for hacking mechanics\",\n \" \",\n ],\n help: [\n \"Usage: help [command]\",\n \" \",\n \"Display Terminal help information. Without arguments, 'help' prints a list of all valid Terminal commands and a brief \",\n \"description of their functionality. You can also pass the name of a Terminal command as an argument to 'help' to print \",\n \"more detailed information about the Terminal command. Examples: \",\n \" \",\n \" help alias\",\n \" \",\n \" help scan-analyze\",\n \" \",\n ],\n history: [\n \"Usage: history [-c]\",\n \" \",\n \"Without arguments, displays the terminal command history. To clear the history, pass in the '-c' argument.\",\n \" \",\n ],\n home: [\n \"Usage: home\",\n \" \",\n \"Connect to your home computer. This will work no matter what server you are currently connected to.\",\n \" \",\n ],\n hostname: [\"Usage: hostname\", \" \", \"Prints the hostname of the current server\", \" \"],\n kill: [\n \"Usage: kill [script name] [args...] or kill [pid\",\n \" \",\n \"Kill the script specified by the script name and arguments OR by its PID.\",\n \" \",\n \"If you are killing the script using its filename and arguments, then each \",\n \"argument must be separated by a space. Remember that a running script is \",\n \"uniquely identified by both its name and the arguments that are used to start \",\n \"it. So, if a script was ran with the following arguments:\",\n \" \",\n \" run foo.script 1 sigma-cosmetics\",\n \" \",\n \"Then to kill this script the same arguments would have to be used:\",\n \" \",\n \" kill foo.script 1 sigma-cosmetics\",\n \" \",\n \"If you are killing the script using its PID, then the PID argument must be numeric\",\n \" \",\n ],\n killall: [\n \"Usage: killall\",\n \" \",\n \"Kills all scripts on the current server. \",\n \"Note that after the 'kill' command is issued for a script, it may take a while for the script to actually stop running. \",\n \"This will happen if the script is in the middle of a command such as grow() or weaken() that takes time to execute. \",\n \"The script will not be stopped/killed until after that time has elapsed.\",\n \" \",\n ],\n ls: [\n \"Usage: ls [dir] [-l] [--grep pattern]\",\n \" \",\n \"The ls command, with no arguments, prints all files and directories on the current server's directory to the Terminal screen. \",\n \"The files will be displayed in alphabetical order. \",\n \" \",\n \"The 'dir' optional parameter can be used to display files/directories in another directory.\",\n \" \",\n \"The '-l' optional parameter allows you to force each item onto a single line.\",\n \" \",\n \"The '--grep pattern' optional parameter can be used to only display files whose filenames match the specified pattern.\",\n \" \",\n \"Examples:\",\n \" \",\n \"List all files with the '.script' extension in the current directory:\",\n \" \",\n \" ls -l --grep .script\",\n \" \",\n \"List all files with the '.js' extension in the root directory:\",\n \" \",\n \" ls / -l --grep .js\",\n \" \",\n \"List all files with the word 'purchase' in the filename, in the 'scripts' directory:\",\n \" \",\n \" ls scripts -l --grep purchase\",\n \" \",\n ],\n lscpu: [\"Usage: lscpu\", \" \", \"Prints the number of CPU Cores the current server has\", \" \"],\n\n mem: [\n \"Usage: mem [script name] [-t num_threads]\",\n \" \",\n \"Displays the amount of RAM needed to run the specified script with a single thread. The command can also be used to print \",\n \"the amount of RAM needed to run a script with multiple threads using the '-t' flag. If the '-t' flag is specified, then \",\n \"an argument for the number of threads must be passed in afterwards. Examples:\",\n \" \",\n \" mem foo.script\",\n \" \",\n \" mem foo.script -t 50\",\n \" \",\n \"The first example above will print the amount of RAM needed to run 'foo.script' with a single thread. The second example \",\n \"above will print the amount of RAM needed to run 'foo.script' with 50 threads.\",\n \" \",\n ],\n mv: [\n \"Usage: mv [src] [dest]\",\n \" \",\n \"Move the source file to the specified destination. This can also be used to rename files. \",\n \"This command only works for scripts and text files (.txt). This command CANNOT be used to \",\n \"convert to different file types\",\n \" \",\n \"Note that, unlike the Linux 'mv' command, the destination argument must be the \",\n \"full filepath. \",\n \"Examples: \",\n \" \",\n \" mv hacking-controller.script scripts/hacking-controller.script\",\n \" \",\n \" mv myScript.js myOldScript.js\",\n \" \",\n ],\n nano: TemplatedHelpTexts.scriptEditor(\"nano\"),\n ps: [\"Usage: ps\", \" \", \"Prints all scripts that are running on the current server\", \" \"],\n rm: [\n \"Usage: rm [file]\",\n \" \",\n \"Removes the specified file from the current server. A file can be a script, a program, or a message file. \",\n \" \",\n \"WARNING: This is permanent and cannot be undone\",\n \" \",\n ],\n run: [\n \"Usage: run [file name] [-t] [num threads] [args...]\",\n \" \",\n \"Execute a program, script or coding contract.\",\n \" \",\n \"The '[-t]', '[num threads]', and '[args...]' arguments are only valid when running a script. The '-t' flag is used \",\n \"to indicate that the script should be run with the specified number of threads. If the flag is omitted, \",\n \"then the script will be run with a single thread by default. \",\n \"If the '-t' flag is used, then it MUST come immediately \",\n \"after the script name, and the [num threads] argument MUST come immediately afterwards. \",\n \" \",\n \"[args...] represents a variable number of arguments that will be passed into the script. See the documentation \",\n \"about script arguments. Each specified argument must be separated by a space. \",\n \" \",\n ],\n scan: [\n \"Usage: scan\",\n \" \",\n \"Prints all immediately-available network connection. This will print a list of all servers that you can currently connect \",\n \"to using the 'connect' Terminal command.\",\n \" \",\n ],\n \"scan-analyze\": [\n \"Usage: scan-analyze [depth] [-a]\",\n \" \",\n \"Prints detailed information about all servers up to [depth] nodes away on the network. Calling \",\n \"'scan-analyze 1' will display information for the same servers that are shown by the 'scan' Terminal \",\n \"command. This command also shows the relative paths to reach each server.\",\n \" \",\n \"By default, the maximum depth that can be specified for 'scan-analyze' is 3. However, once you have \",\n \"the DeepscanV1.exe and DeepscanV2.exe programs, you can execute 'scan-analyze' with a depth up to \",\n \"5 and 10, respectively.\",\n \" \",\n \"The information 'scan-analyze' displays about each server includes whether or not you have root access to it, \",\n \"its required hacking level, the number of open ports required to run NUKE.exe on it, and how much RAM \",\n \"it has.\",\n \" \",\n \"By default, this command will not display servers that you have purchased. However, you can pass in the \",\n \"-a flag at the end of the command if you would like to enable that.\",\n \" \",\n ],\n scp: [\n \"Usage: scp [filename ...] [target server]\",\n \" \",\n \"Copies the specified file(s) from the current server to the target server. \",\n \"This command only works for script files (.script or .js extension), literature files (.lit extension), \",\n \"and text files (.txt extension). \",\n \"The second argument passed in must be the hostname or IP of the target server. Examples:\",\n \" \",\n \" scp foo.script n00dles\",\n \" \",\n \" scp foo.script bar.script n00dles\",\n \" \",\n ],\n sudov: [\"Usage: sudov\", \" \", \"Prints whether or not you have root access to the current machine\", \" \"],\n\n tail: [\n \"Usage: tail [script name] [args...]\",\n \" \",\n \"Displays dynamic logs for the script specified by the script name and arguments. Each argument must be separated \",\n \"by a space. Remember that a running script is uniquely identified by both its name and the arguments that were used \",\n \"to run it. So, if a script was ran with the following arguments: \",\n \" \",\n \" run foo.script 10 50000\",\n \" \",\n \"Then in order to check its logs with 'tail' the same arguments must be used: \",\n \" \",\n \" tail foo.script 10 50000\",\n \" \",\n ],\n top: [\n \"Usage: top\",\n \" \",\n \"Prints a list of all scripts running on the current server as well as their thread count and how much \",\n \"RAM they are using in total.\",\n \" \",\n ],\n unalias: [\n \"Usage: unalias [alias name]\",\n \" \",\n \"Deletes the specified alias. Note that the double quotation marks are required. \",\n \" \",\n \"As an example, if an alias was declared using:\",\n \" \",\n ' alias r=\"run\"',\n \" \",\n \"Then it could be removed using:\",\n \" \",\n \" unalias r\",\n \" \",\n \"It is not necessary to differentiate between global and non-global aliases when using 'unalias'\",\n \" \",\n ],\n vim: TemplatedHelpTexts.scriptEditor(\"vim\"),\n weaken: [\n \"Usage: weaken\",\n \" \",\n \"Reduces the security level of the current server. Decreasing the time it takes for all operations on this server.\",\n \"Requires root access. See the wiki page for hacking mechanics.\",\n \" \",\n ],\n wget: [\n \"Usage: wget [url] [target file]\",\n \" \",\n \"Retrieves data from a URL and downloads it to a file on the current server. The data can only \",\n \"be downloaded to a script (.script, .ns, .js) or a text file (.txt). If the file already exists, \",\n \"it will be overwritten by this command.\",\n \" \",\n \"Note that it will not be possible to download data from many websites because they do not allow \",\n \"cross-origin resource sharing (CORS). Example:\",\n \" \",\n \" wget https://raw.githubusercontent.com/danielyxie/bitburner/master/README.md game_readme.txt\",\n \" \",\n ],\n};\n","import React from \"react\";\n\nimport { Page } from \"../ui/Router\";\nimport { hash } from \"../hash/hash\";\nimport { CONSTANTS } from \"../Constants\";\n\nenum GameEnv {\n Production,\n Development,\n}\n\nenum Platform {\n Browser,\n Steam,\n}\n\ninterface GameVersion {\n version: string;\n hash: string;\n\n toDisplay: () => string;\n}\n\ninterface BrowserFeatures {\n userAgent: string;\n language: string;\n cookiesEnabled: boolean;\n doNotTrack: string | null;\n indexedDb: boolean;\n}\n\ninterface IErrorMetadata {\n error: Error;\n errorInfo?: React.ErrorInfo;\n page?: Page;\n\n environment: GameEnv;\n platform: Platform;\n version: GameVersion;\n features: BrowserFeatures;\n}\n\nexport interface IErrorData {\n metadata: IErrorMetadata;\n\n title: string;\n body: string;\n\n features: string;\n fileName?: string;\n\n issueUrl: string;\n}\n\nexport const newIssueUrl = `https://github.com/danielyxie/bitburner/issues/new`;\n\nfunction getErrorMetadata(error: Error, errorInfo?: React.ErrorInfo, page?: Page): IErrorMetadata {\n const isElectron = navigator.userAgent.toLowerCase().indexOf(\" electron/\") > -1;\n const env = process.env.NODE_ENV === \"development\" ? GameEnv.Development : GameEnv.Production;\n const version: GameVersion = {\n version: CONSTANTS.VersionString,\n hash: hash(),\n toDisplay: () => `v${CONSTANTS.VersionString} (${hash()})`,\n };\n const features: BrowserFeatures = {\n userAgent: navigator.userAgent,\n\n language: navigator.language,\n cookiesEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack,\n indexedDb: !!window.indexedDB,\n };\n const metadata: IErrorMetadata = {\n platform: isElectron ? Platform.Steam : Platform.Browser,\n environment: env,\n version,\n features,\n error,\n errorInfo,\n page,\n };\n return metadata;\n}\n\nexport function getErrorForDisplay(error: Error, errorInfo?: React.ErrorInfo, page?: Page): IErrorData {\n const metadata = getErrorMetadata(error, errorInfo, page);\n const fileName = (metadata.error as any).fileName;\n const features =\n `lang=${metadata.features.language} cookiesEnabled=${metadata.features.cookiesEnabled.toString()}` +\n ` doNotTrack=${metadata.features.doNotTrack} indexedDb=${metadata.features.indexedDb.toString()}`;\n\n const title = `${metadata.error.name}: ${metadata.error.message}${metadata.page && ` (at \"${Page[metadata.page]}\")`}`;\n const body = `\n## ${title}\n\n### How did this happen?\n\nPlease fill this information with details if relevant.\n\n- [ ] Save file\n- [ ] Minimal scripts to reproduce the issue\n- [ ] Steps to reproduce\n\n### Environment\n\n* Error: ${metadata.error?.toString() ?? \"n/a\"}\n* Page: ${metadata.page ? Page[metadata.page] : \"n/a\"}\n* Version: ${metadata.version.toDisplay()}\n* Environment: ${GameEnv[metadata.environment]}\n* Platform: ${Platform[metadata.platform]}\n* UserAgent: ${navigator.userAgent}\n* Features: ${features}\n* Source: ${fileName ?? \"n/a\"}\n\n${\n metadata.environment === GameEnv.Development\n ? `\n### Stack Trace\n\\`\\`\\`\n${metadata.errorInfo?.componentStack.toString().trim()}\n\\`\\`\\`\n`\n : \"\"\n}\n### Save\n\\`\\`\\`\nCopy your save here if possible\n\\`\\`\\`\n`.trim();\n\n const issueUrl = `${newIssueUrl}?title=${encodeURIComponent(title)}&body=${encodeURIComponent(body)}`;\n\n const data: IErrorData = {\n metadata,\n fileName,\n features,\n title,\n body,\n issueUrl,\n };\n return data;\n}\n","import { getRandomInt } from \"./getRandomInt\";\n\n/**\n * Gets a random value in the range of a byte (0 - 255), or up to the maximum.\n * @param max The maximum value (up to 255).\n */\nexport function getRandomByte(max: number): number {\n // Technically 2^8 is 256, but the values are 0-255, not 1-256.\n const byteMaximum = 255;\n const upper: number = Math.max(Math.min(max, byteMaximum), 0);\n\n return getRandomInt(0, upper);\n}\n","import { getRandomInt } from \"../../utils/helpers/getRandomInt\";\n\nexport const Growths: {\n [key: string]: (() => number) | undefined;\n [\"Tracking\"]: () => number;\n [\"Bounty Hunter\"]: () => number;\n [\"Retirement\"]: () => number;\n [\"Investigation\"]: () => number;\n [\"Undercover Operation\"]: () => number;\n [\"Sting Operation\"]: () => number;\n [\"Raid\"]: () => number;\n [\"Stealth Retirement Operation\"]: () => number;\n [\"Assassination\"]: () => number;\n} = {\n Tracking: () => getRandomInt(5, 75) / 10,\n \"Bounty Hunter\": () => getRandomInt(5, 75) / 10,\n Retirement: () => getRandomInt(5, 75) / 10,\n Investigation: () => getRandomInt(10, 40) / 10,\n \"Undercover Operation\": () => getRandomInt(10, 40) / 10,\n \"Sting Operation\": () => getRandomInt(3, 40) / 10,\n Raid: () => getRandomInt(2, 40) / 10,\n \"Stealth Retirement Operation\": () => getRandomInt(1, 20) / 10,\n Assassination: () => getRandomInt(1, 20) / 10,\n};\n","/**\n * Utility function that creates a \"city map\", which is an object where\n * each city is a key (property).\n *\n * This map uses the official name of the city, NOT its key in the 'Cities' object\n */\nimport { Cities } from \"./Cities\";\nimport { IMap } from \"../types\";\n\nexport function createCityMap(initValue: T): IMap {\n const map: IMap = {};\n const cities = Object.keys(Cities);\n for (let i = 0; i < cities.length; ++i) {\n map[cities[i]] = initValue;\n }\n\n // round try JSON so to make sure none of the initial values have the same references.\n return JSON.parse(JSON.stringify(map));\n}\n","/**\n * Represents a Hand of cards.\n *\n * This class is IMMUTABLE\n */\n\nimport { Card } from \"./Card\";\n\nexport class Hand {\n constructor(readonly cards: readonly Card[]) {}\n\n addCards(...cards: Card[]): Hand {\n return new Hand([...this.cards, ...cards]);\n }\n\n removeByIndex(i: number): Hand {\n if (i >= this.cards.length) {\n throw new Error(`Tried to remove invalid card from Hand by index: ${i}`);\n }\n\n return new Hand([...this.cards.slice().splice(i, 1)]);\n }\n}\n","/**\n * React Component for a button that initiates a transaction on the Stock Market UI\n * (Buy, Sell, Buy Max, etc.)\n */\nimport * as React from \"react\";\n\nimport Typography from \"@mui/material/Typography\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Button from \"@mui/material/Button\";\ntype IProps = {\n onClick: () => void;\n text: string;\n tooltip?: JSX.Element | null;\n};\n\nexport function StockTickerTxButton(props: IProps): React.ReactElement {\n return (\n {props.tooltip} : \"\"}>\n \n \n );\n}\n","/**\n * Abstract Base Class for any Server object\n */\nimport { CodingContract } from \"../CodingContracts\";\nimport { RunningScript } from \"../Script/RunningScript\";\nimport { Script } from \"../Script/Script\";\nimport { isValidFilePath } from \"../Terminal/DirectoryHelpers\";\nimport { TextFile } from \"../TextFile\";\nimport { IReturnStatus } from \"../types\";\n\nimport { isScriptFilename } from \"../Script/isScriptFilename\";\n\nimport { createRandomIp } from \"../utils/IPAddress\";\nimport { compareArrays } from \"../utils/helpers/compareArrays\";\nimport { IPlayer } from \"../PersonObjects/IPlayer\";\n\ninterface IConstructorParams {\n adminRights?: boolean;\n hostname: string;\n ip?: string;\n isConnectedTo?: boolean;\n maxRam?: number;\n organizationName?: string;\n}\n\ninterface writeResult {\n success: boolean;\n overwritten: boolean;\n}\n\nexport class BaseServer {\n // Coding Contract files on this server\n contracts: CodingContract[] = [];\n\n // How many CPU cores this server has. Maximum of 8.\n // Currently, this only affects hacking missions\n cpuCores = 1;\n\n // Flag indicating whether the FTP port is open\n ftpPortOpen = false;\n\n // Flag indicating whether player has admin/root access to this server\n hasAdminRights = false;\n\n // Hostname. Must be unique\n hostname = \"\";\n\n // Flag indicating whether HTTP Port is open\n httpPortOpen = false;\n\n // IP Address. Must be unique\n ip = \"\";\n\n // Flag indicating whether player is curently connected to this server\n isConnectedTo = false;\n\n // RAM (GB) available on this server\n maxRam = 0;\n\n // Message files AND Literature files on this Server\n messages: string[] = [];\n\n // Name of company/faction/etc. that this server belongs to.\n // Optional, not applicable to all Servers\n organizationName = \"\";\n\n // Programs on this servers. Contains only the names of the programs\n programs: string[] = [];\n\n // RAM (GB) used. i.e. unavailable RAM\n ramUsed = 0;\n\n // RunningScript files on this server\n runningScripts: RunningScript[] = [];\n\n // Script files on this Server\n scripts: Script[] = [];\n\n // Contains the hostnames of all servers that are immediately\n // reachable from this one\n serversOnNetwork: string[] = [];\n\n // Flag indicating whether SMTP Port is open\n smtpPortOpen = false;\n\n // Flag indicating whether SQL Port is open\n sqlPortOpen = false;\n\n // Flag indicating whether the SSH Port is open\n sshPortOpen = false;\n\n // Text files on this server\n textFiles: TextFile[] = [];\n\n // Flag indicating wehther this is a purchased server\n purchasedByPlayer = false;\n\n constructor(params: IConstructorParams = { hostname: \"\", ip: createRandomIp() }) {\n this.ip = params.ip ? params.ip : createRandomIp();\n\n this.hostname = params.hostname;\n this.organizationName = params.organizationName != null ? params.organizationName : \"\";\n this.isConnectedTo = params.isConnectedTo != null ? params.isConnectedTo : false;\n\n //Access information\n this.hasAdminRights = params.adminRights != null ? params.adminRights : false;\n }\n\n addContract(contract: CodingContract): void {\n this.contracts.push(contract);\n }\n\n getContract(contractName: string): CodingContract | null {\n for (const contract of this.contracts) {\n if (contract.fn === contractName) {\n return contract;\n }\n }\n return null;\n }\n\n /**\n * Find an actively running script on this server\n * @param scriptName - Filename of script to search for\n * @param scriptArgs - Arguments that script is being run with\n * @returns RunningScript for the specified active script\n * Returns null if no such script can be found\n */\n getRunningScript(scriptName: string, scriptArgs: any[]): RunningScript | null {\n for (const rs of this.runningScripts) {\n if (rs.filename === scriptName && compareArrays(rs.args, scriptArgs)) {\n return rs;\n }\n }\n\n return null;\n }\n\n /**\n * Given the name of the script, returns the corresponding\n * Script object on the server (if it exists)\n */\n getScript(scriptName: string): Script | null {\n for (let i = 0; i < this.scripts.length; i++) {\n if (this.scripts[i].filename === scriptName) {\n return this.scripts[i];\n }\n }\n\n return null;\n }\n\n /**\n * Returns boolean indicating whether the given script is running on this server\n */\n isRunning(fn: string): boolean {\n for (const runningScriptObj of this.runningScripts) {\n if (runningScriptObj.filename === fn) {\n return true;\n }\n }\n\n return false;\n }\n\n removeContract(contract: CodingContract | string): void {\n if (contract instanceof CodingContract) {\n this.contracts = this.contracts.filter((c) => {\n return c.fn !== contract.fn;\n });\n } else {\n this.contracts = this.contracts.filter((c) => {\n return c.fn !== contract;\n });\n }\n }\n\n /**\n * Remove a file from the server\n * @param fn {string} Name of file to be deleted\n * @returns {IReturnStatus} Return status object indicating whether or not file was deleted\n */\n removeFile(fn: string): IReturnStatus {\n if (fn.endsWith(\".exe\") || fn.match(/^.+\\.exe-\\d+(?:\\.\\d*)?%-INC$/) != null) {\n for (let i = 0; i < this.programs.length; ++i) {\n if (this.programs[i] === fn) {\n this.programs.splice(i, 1);\n return { res: true };\n }\n }\n } else if (isScriptFilename(fn)) {\n for (let i = 0; i < this.scripts.length; ++i) {\n if (this.scripts[i].filename === fn) {\n if (this.isRunning(fn)) {\n return {\n res: false,\n msg: \"Cannot delete a script that is currently running!\",\n };\n }\n\n this.scripts.splice(i, 1);\n return { res: true };\n }\n }\n } else if (fn.endsWith(\".lit\")) {\n for (let i = 0; i < this.messages.length; ++i) {\n const f = this.messages[i];\n if (typeof f === \"string\" && f === fn) {\n this.messages.splice(i, 1);\n return { res: true };\n }\n }\n } else if (fn.endsWith(\".txt\")) {\n for (let i = 0; i < this.textFiles.length; ++i) {\n if (this.textFiles[i].fn === fn) {\n this.textFiles.splice(i, 1);\n return { res: true };\n }\n }\n } else if (fn.endsWith(\".cct\")) {\n for (let i = 0; i < this.contracts.length; ++i) {\n if (this.contracts[i].fn === fn) {\n this.contracts.splice(i, 1);\n return { res: true };\n }\n }\n }\n\n return { res: false, msg: \"No such file exists\" };\n }\n\n /**\n * Called when a script is run on this server.\n * All this function does is add a RunningScript object to the\n * `runningScripts` array. It does NOT check whether the script actually can\n * be run.\n */\n runScript(script: RunningScript): void {\n this.runningScripts.push(script);\n }\n\n setMaxRam(ram: number): void {\n this.maxRam = ram;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updateRamUsed(ram: number, player: IPlayer): void {\n this.ramUsed = ram;\n }\n\n /**\n * Write to a script file\n * Overwrites existing files. Creates new files if the script does not eixst\n */\n writeToScriptFile(player: IPlayer, fn: string, code: string): writeResult {\n const ret = { success: false, overwritten: false };\n if (!isValidFilePath(fn) || !isScriptFilename(fn)) {\n return ret;\n }\n\n // Check if the script already exists, and overwrite it if it does\n for (let i = 0; i < this.scripts.length; ++i) {\n if (fn === this.scripts[i].filename) {\n const script = this.scripts[i];\n script.code = code;\n script.updateRamUsage(player, this.scripts);\n script.markUpdated();\n ret.overwritten = true;\n ret.success = true;\n return ret;\n }\n }\n\n // Otherwise, create a new script\n const newScript = new Script(player, fn, code, this.hostname, this.scripts);\n this.scripts.push(newScript);\n ret.success = true;\n return ret;\n }\n\n // Write to a text file\n // Overwrites existing files. Creates new files if the text file does not exist\n writeToTextFile(fn: string, txt: string): writeResult {\n const ret = { success: false, overwritten: false };\n if (!isValidFilePath(fn) || !fn.endsWith(\"txt\")) {\n return ret;\n }\n\n // Check if the text file already exists, and overwrite if it does\n for (let i = 0; i < this.textFiles.length; ++i) {\n if (this.textFiles[i].fn === fn) {\n ret.overwritten = true;\n this.textFiles[i].text = txt;\n ret.success = true;\n return ret;\n }\n }\n\n // Otherwise create a new text file\n const newFile = new TextFile(fn, txt);\n this.textFiles.push(newFile);\n ret.success = true;\n return ret;\n }\n}\n","import React, { useState, useEffect } from \"react\";\nimport { KEY } from \"../../utils/helpers/keyCodes\";\n\nimport { CodingContract, CodingContractTypes } from \"../../CodingContracts\";\nimport { CopyableText } from \"./CopyableText\";\nimport { Modal } from \"./Modal\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport Typography from \"@mui/material/Typography\";\nimport TextField from \"@mui/material/TextField\";\nimport Button from \"@mui/material/Button\";\n\ninterface IProps {\n c: CodingContract;\n onClose: () => void;\n onAttempt: (answer: string) => void;\n}\n\nexport const CodingContractEvent = new EventEmitter<[IProps]>();\n\nexport function CodingContractModal(): React.ReactElement {\n const [props, setProps] = useState(null);\n const [answer, setAnswer] = useState(\"\");\n\n useEffect(() => {\n CodingContractEvent.subscribe((props) => setProps(props));\n });\n if (props === null) return <>>;\n\n function onChange(event: React.ChangeEvent): void {\n setAnswer(event.target.value);\n }\n\n function onKeyDown(event: React.KeyboardEvent): void {\n if (props === null) return;\n // React just won't cooperate on this one.\n // \"React.KeyboardEvent\" seems like the right type but\n // whatever ...\n const value = (event.target as any).value;\n\n if (event.key === KEY.ENTER && value !== \"\") {\n event.preventDefault();\n props.onAttempt(answer);\n setAnswer(\"\");\n close();\n }\n }\n\n function close(): void {\n if (props === null) return;\n props.onClose();\n setProps(null);\n }\n\n const contractType = CodingContractTypes[props.c.type];\n const description = [];\n for (const [i, value] of contractType.desc(props.c.data).split(\"\\n\").entries())\n description.push(\" }}>);\n return (\n \n \n \n You are attempting to solve a Coding Contract. You have {props.c.getMaxNumTries() - props.c.tries} tries\n remaining, after which the contract will self-destruct.\n \n \n {description}\n \n {\n props.onAttempt(answer);\n setAnswer(\"\");\n close();\n }}\n >\n Solve\n \n ),\n }}\n />\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Modal } from \"../../ui/React/Modal\";\nimport { use } from \"../../ui/Context\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\n\nexport const BitFlumeEvent = new EventEmitter<[]>();\n\nexport function BitFlumeModal(): React.ReactElement {\n const router = use.Router();\n const [open, setOpen] = useState(false);\n function flume(): void {\n router.toBitVerse(true, false);\n setOpen(false);\n }\n\n useEffect(() => BitFlumeEvent.subscribe(() => setOpen(true)), []);\n\n return (\n setOpen(false)}>\n \n WARNING: USING THIS PROGRAM WILL CAUSE YOU TO LOSE ALL OF YOUR PROGRESS ON THE CURRENT BITNODE.\n \n \n Do you want to travel to the BitNode Nexus? This allows you to reset the current BitNode and select a new one.\n \n \n \n \n \n );\n}\n","import * as augmentationMethods from \"./PlayerObjectAugmentationMethods\";\nimport * as bladeburnerMethods from \"./PlayerObjectBladeburnerMethods\";\nimport * as corporationMethods from \"./PlayerObjectCorporationMethods\";\nimport * as gangMethods from \"./PlayerObjectGangMethods\";\nimport * as generalMethods from \"./PlayerObjectGeneralMethods\";\nimport * as serverMethods from \"./PlayerObjectServerMethods\";\n\nimport { IMap } from \"../../types\";\nimport { Sleeve } from \"../Sleeve/Sleeve\";\nimport { IPlayerOwnedSourceFile } from \"../../SourceFile/PlayerOwnedSourceFile\";\nimport { Exploit } from \"../../Exploits/Exploit\";\nimport { WorkerScript } from \"../../Netscript/WorkerScript\";\nimport { CompanyPosition } from \"../../Company/CompanyPosition\";\nimport { Server } from \"../../Server/Server\";\nimport { BaseServer } from \"../../Server/BaseServer\";\nimport { HacknetServer } from \"../../Hacknet/HacknetServer\";\nimport { Faction } from \"../../Faction/Faction\";\nimport { Company } from \"../../Company/Company\";\nimport { Augmentation } from \"../../Augmentation/Augmentation\";\nimport { IRouter } from \"../../ui/Router\";\nimport { ICodingContractReward } from \"../../CodingContracts\";\n\nimport { IPlayer } from \"../IPlayer\";\nimport { LocationName } from \"../../Locations/data/LocationNames\";\nimport { IPlayerOwnedAugmentation } from \"../../Augmentation/PlayerOwnedAugmentation\";\nimport { ICorporation } from \"../../Corporation/ICorporation\";\nimport { IGang } from \"../../Gang/IGang\";\nimport { IBladeburner } from \"../../Bladeburner/IBladeburner\";\nimport { HacknetNode } from \"../../Hacknet/HacknetNode\";\n\nimport { HashManager } from \"../../Hacknet/HashManager\";\nimport { CityName } from \"../../Locations/data/CityNames\";\n\nimport { MoneySourceTracker } from \"../../utils/MoneySourceTracker\";\nimport { Reviver, Generic_toJSON, Generic_fromJSON } from \"../../utils/JSONReviver\";\nimport { ISkillProgress } from \"../formulas/skill\";\nimport { PlayerAchievement } from \"../../Achievements/Achievements\";\nimport { cyrb53 } from \"../../utils/StringHelperFunctions\";\nimport { getRandomInt } from \"../../utils/helpers/getRandomInt\";\n\nexport class PlayerObject implements IPlayer {\n // Class members\n augmentations: IPlayerOwnedAugmentation[];\n bitNodeN: number;\n city: CityName;\n companyName: string;\n corporation: ICorporation | null;\n gang: IGang | null;\n bladeburner: IBladeburner | null;\n currentServer: string;\n factions: string[];\n factionInvitations: string[];\n hacknetNodes: (HacknetNode | string)[]; // HacknetNode object or IP of Hacknet Server\n has4SData: boolean;\n has4SDataTixApi: boolean;\n hashManager: HashManager;\n hasTixApiAccess: boolean;\n hasWseAccount: boolean;\n hp: number;\n jobs: IMap;\n init: () => void;\n isWorking: boolean;\n karma: number;\n numPeopleKilled: number;\n location: LocationName;\n max_hp: number;\n money: number;\n moneySourceA: MoneySourceTracker;\n moneySourceB: MoneySourceTracker;\n playtimeSinceLastAug: number;\n playtimeSinceLastBitnode: number;\n purchasedServers: any[];\n queuedAugmentations: IPlayerOwnedAugmentation[];\n scriptProdSinceLastAug: number;\n sleeves: Sleeve[];\n sleevesFromCovenant: number;\n sourceFiles: IPlayerOwnedSourceFile[];\n exploits: Exploit[];\n achievements: PlayerAchievement[];\n terminalCommandHistory: string[];\n identifier: string;\n lastUpdate: number;\n lastSave: number;\n totalPlaytime: number;\n\n // Stats\n hacking: number;\n strength: number;\n defense: number;\n dexterity: number;\n agility: number;\n charisma: number;\n intelligence: number;\n\n // Experience\n hacking_exp: number;\n strength_exp: number;\n defense_exp: number;\n dexterity_exp: number;\n agility_exp: number;\n charisma_exp: number;\n intelligence_exp: number;\n\n // Multipliers\n hacking_chance_mult: number;\n hacking_speed_mult: number;\n hacking_money_mult: number;\n hacking_grow_mult: number;\n hacking_mult: number;\n hacking_exp_mult: number;\n strength_mult: number;\n strength_exp_mult: number;\n defense_mult: number;\n defense_exp_mult: number;\n dexterity_mult: number;\n dexterity_exp_mult: number;\n agility_mult: number;\n agility_exp_mult: number;\n charisma_mult: number;\n charisma_exp_mult: number;\n hacknet_node_money_mult: number;\n hacknet_node_purchase_cost_mult: number;\n hacknet_node_ram_cost_mult: number;\n hacknet_node_core_cost_mult: number;\n hacknet_node_level_cost_mult: number;\n company_rep_mult: number;\n faction_rep_mult: number;\n work_money_mult: number;\n crime_success_mult: number;\n crime_money_mult: number;\n bladeburner_max_stamina_mult: number;\n bladeburner_stamina_gain_mult: number;\n bladeburner_analysis_mult: number;\n bladeburner_success_chance_mult: number;\n\n createProgramReqLvl: number;\n factionWorkType: string;\n createProgramName: string;\n timeWorkedCreateProgram: number;\n graftAugmentationName: string;\n timeWorkedGraftAugmentation: number;\n crimeType: string;\n committingCrimeThruSingFn: boolean;\n singFnCrimeWorkerScript: WorkerScript | null;\n timeNeededToCompleteWork: number;\n focus: boolean;\n className: string;\n currentWorkFactionName: string;\n workType: string;\n workCostMult: number;\n workExpMult: number;\n currentWorkFactionDescription: string;\n timeWorked: number;\n workMoneyGained: number;\n workMoneyGainRate: number;\n workRepGained: number;\n workRepGainRate: number;\n workHackExpGained: number;\n workHackExpGainRate: number;\n workStrExpGained: number;\n workStrExpGainRate: number;\n workDefExpGained: number;\n workDefExpGainRate: number;\n workDexExpGained: number;\n workDexExpGainRate: number;\n workAgiExpGained: number;\n workAgiExpGainRate: number;\n workChaExpGained: number;\n workChaExpGainRate: number;\n workMoneyLossRate: number;\n\n entropy: number;\n\n // Methods\n work: (numCycles: number) => boolean;\n workPartTime: (numCycles: number) => boolean;\n workForFaction: (numCycles: number) => boolean;\n applyForAgentJob: (sing?: boolean) => boolean;\n applyForBusinessConsultantJob: (sing?: boolean) => boolean;\n applyForBusinessJob: (sing?: boolean) => boolean;\n applyForEmployeeJob: (sing?: boolean) => boolean;\n applyForItJob: (sing?: boolean) => boolean;\n applyForJob: (entryPosType: CompanyPosition, sing?: boolean) => boolean;\n applyForNetworkEngineerJob: (sing?: boolean) => boolean;\n applyForPartTimeEmployeeJob: (sing?: boolean) => boolean;\n applyForPartTimeWaiterJob: (sing?: boolean) => boolean;\n applyForSecurityEngineerJob: (sing?: boolean) => boolean;\n applyForSecurityJob: (sing?: boolean) => boolean;\n applyForSoftwareConsultantJob: (sing?: boolean) => boolean;\n applyForSoftwareJob: (sing?: boolean) => boolean;\n applyForWaiterJob: (sing?: boolean) => boolean;\n canAccessBladeburner: () => boolean;\n canAccessCorporation: () => boolean;\n canAccessGang: () => boolean;\n canAccessGrafting: () => boolean;\n canAfford: (cost: number) => boolean;\n gainHackingExp: (exp: number) => void;\n gainStrengthExp: (exp: number) => void;\n gainDefenseExp: (exp: number) => void;\n gainDexterityExp: (exp: number) => void;\n gainAgilityExp: (exp: number) => void;\n gainCharismaExp: (exp: number) => void;\n gainIntelligenceExp: (exp: number) => void;\n gainMoney: (money: number, source: string) => void;\n getCurrentServer: () => BaseServer;\n getGangFaction: () => Faction;\n getGangName: () => string;\n getHomeComputer: () => Server;\n getNextCompanyPosition: (company: Company, entryPosType: CompanyPosition) => CompanyPosition | null;\n getUpgradeHomeRamCost: () => number;\n getUpgradeHomeCoresCost: () => number;\n gotoLocation: (to: LocationName) => boolean;\n hasAugmentation: (aug: string | Augmentation, installed?: boolean) => boolean;\n hasCorporation: () => boolean;\n hasGangWith: (facName: string) => boolean;\n hasTorRouter: () => boolean;\n hasProgram: (program: string) => boolean;\n inBladeburner: () => boolean;\n inGang: () => boolean;\n isQualified: (company: Company, position: CompanyPosition) => boolean;\n loseMoney: (money: number, source: string) => void;\n reapplyAllAugmentations: (resetMultipliers?: boolean) => void;\n reapplyAllSourceFiles: () => void;\n regenerateHp: (amt: number) => void;\n recordMoneySource: (amt: number, source: string) => void;\n setMoney: (amt: number) => void;\n singularityStopWork: () => string;\n startBladeburner: (p: any) => void;\n startFactionWork: (faction: Faction) => void;\n startClass: (costMult: number, expMult: number, className: string) => void;\n startCorporation: (corpName: string, additionalShares?: number) => void;\n startCrime: (\n router: IRouter,\n crimeType: string,\n hackExp: number,\n strExp: number,\n defExp: number,\n dexExp: number,\n agiExp: number,\n chaExp: number,\n money: number,\n time: number,\n singParams: any,\n ) => void;\n startFactionFieldWork: (faction: Faction) => void;\n startFactionHackWork: (faction: Faction) => void;\n startFactionSecurityWork: (faction: Faction) => void;\n startFocusing: () => void;\n startGang: (facName: string, isHacking: boolean) => void;\n startWork: (companyName: string) => void;\n startWorkPartTime: (companyName: string) => void;\n takeDamage: (amt: number) => boolean;\n travel: (to: CityName) => boolean;\n giveExploit: (exploit: Exploit) => void;\n giveAchievement: (achievementId: string) => void;\n queryStatFromString: (str: string) => number;\n getIntelligenceBonus: (weight: number) => number;\n getCasinoWinnings: () => number;\n quitJob: (company: string) => void;\n hasJob: () => boolean;\n process: (router: IRouter, numCycles?: number) => void;\n createHacknetServer: () => HacknetServer;\n startCreateProgramWork: (programName: string, time: number, reqLevel: number) => void;\n queueAugmentation: (augmentationName: string) => void;\n receiveInvite: (factionName: string) => void;\n updateSkillLevels: () => void;\n gainCodingContractReward: (reward: ICodingContractReward, difficulty?: number) => string;\n stopFocusing: () => void;\n finishFactionWork: (cancelled: boolean, sing?: boolean) => string;\n finishClass: (sing?: boolean) => string;\n finishWork: (cancelled: boolean, sing?: boolean) => string;\n cancelationPenalty: () => number;\n finishWorkPartTime: (sing?: boolean) => string;\n finishCrime: (cancelled: boolean) => string;\n finishCreateProgramWork: (cancelled: boolean) => string;\n resetMultipliers: () => void;\n prestigeAugmentation: () => void;\n prestigeSourceFile: () => void;\n calculateSkill: (exp: number, mult?: number) => number;\n calculateSkillProgress: (exp: number, mult?: number) => ISkillProgress;\n resetWorkStatus: (generalType?: string, group?: string, workType?: string) => void;\n getWorkHackExpGain: () => number;\n getWorkStrExpGain: () => number;\n getWorkDefExpGain: () => number;\n getWorkDexExpGain: () => number;\n getWorkAgiExpGain: () => number;\n getWorkChaExpGain: () => number;\n getWorkRepGain: () => number;\n getWorkMoneyGain: () => number;\n processWorkEarnings: (cycles: number) => void;\n hospitalize: () => void;\n createProgramWork: (numCycles: number) => boolean;\n takeClass: (numCycles: number) => boolean;\n commitCrime: (numCycles: number) => boolean;\n checkForFactionInvitations: () => Faction[];\n setBitNodeNumber: (n: number) => void;\n getMult: (name: string) => number;\n setMult: (name: string, mult: number) => void;\n canAccessCotMG: () => boolean;\n sourceFileLvl: (n: number) => number;\n startGraftAugmentationWork: (augmentationName: string, time: number) => void;\n graftAugmentationWork: (numCycles: number) => boolean;\n finishGraftAugmentationWork: (cancelled: boolean) => string;\n applyEntropy: (stacks?: number) => void;\n\n constructor() {\n //Skills and stats\n this.hacking = 1;\n\n //Combat stats\n this.hp = 10;\n this.max_hp = 10;\n this.strength = 1;\n this.defense = 1;\n this.dexterity = 1;\n this.agility = 1;\n\n //Labor stats\n this.charisma = 1;\n\n //Special stats\n this.intelligence = 0;\n\n //Hacking multipliers\n this.hacking_chance_mult = 1;\n this.hacking_speed_mult = 1;\n this.hacking_money_mult = 1;\n this.hacking_grow_mult = 1;\n\n //Experience and multipliers\n this.hacking_exp = 0;\n this.strength_exp = 0;\n this.defense_exp = 0;\n this.dexterity_exp = 0;\n this.agility_exp = 0;\n this.charisma_exp = 0;\n this.intelligence_exp = 0;\n\n this.hacking_mult = 1;\n this.strength_mult = 1;\n this.defense_mult = 1;\n this.dexterity_mult = 1;\n this.agility_mult = 1;\n this.charisma_mult = 1;\n\n this.hacking_exp_mult = 1;\n this.strength_exp_mult = 1;\n this.defense_exp_mult = 1;\n this.dexterity_exp_mult = 1;\n this.agility_exp_mult = 1;\n this.charisma_exp_mult = 1;\n\n this.company_rep_mult = 1;\n this.faction_rep_mult = 1;\n\n //Money\n this.money = 1000;\n\n //Location information\n this.city = CityName.Sector12;\n this.location = LocationName.TravelAgency;\n\n // Jobs that the player holds\n // Map of company name (key) -> name of company position (value. Just the name, not the CompanyPosition object)\n // The CompanyPosition name must match a key value in CompanyPositions\n this.jobs = {};\n\n // Company at which player is CURRENTLY working (only valid when the player is actively working)\n this.companyName = \"\"; // Name of Company. Must match a key value in Companies ma;\n\n // Servers\n this.currentServer = \"\"; //hostname of Server currently being accessed through termina;\n this.purchasedServers = []; //hostnames of purchased server;\n\n // Hacknet Nodes/Servers\n this.hacknetNodes = []; // Note= For Hacknet Servers, this array holds the hostnames of the server;\n this.hashManager = new HashManager();\n\n //Factions\n this.factions = []; //Names of all factions player has joine;\n this.factionInvitations = []; //Outstanding faction invitation;\n\n //Augmentations\n this.queuedAugmentations = [];\n this.augmentations = [];\n\n this.sourceFiles = [];\n\n //Crime statistics\n this.numPeopleKilled = 0;\n this.karma = 0;\n\n this.crime_money_mult = 1;\n this.crime_success_mult = 1;\n\n //Flags/variables for working (Company, Faction, Creating Program, Taking Class)\n this.isWorking = false;\n this.focus = false;\n this.workType = \"\";\n this.workCostMult = 1;\n this.workExpMult = 1;\n\n this.currentWorkFactionName = \"\";\n this.currentWorkFactionDescription = \"\";\n\n this.workHackExpGainRate = 0;\n this.workStrExpGainRate = 0;\n this.workDefExpGainRate = 0;\n this.workDexExpGainRate = 0;\n this.workAgiExpGainRate = 0;\n this.workChaExpGainRate = 0;\n this.workRepGainRate = 0;\n this.workMoneyGainRate = 0;\n this.workMoneyLossRate = 0;\n\n this.workHackExpGained = 0;\n this.workStrExpGained = 0;\n this.workDefExpGained = 0;\n this.workDexExpGained = 0;\n this.workAgiExpGained = 0;\n this.workChaExpGained = 0;\n this.workRepGained = 0;\n this.workMoneyGained = 0;\n\n this.createProgramName = \"\";\n this.createProgramReqLvl = 0;\n\n this.graftAugmentationName = \"\";\n this.timeWorkedGraftAugmentation = 0;\n\n this.className = \"\";\n\n this.crimeType = \"\";\n\n this.timeWorked = 0; //in m;\n this.timeWorkedCreateProgram = 0;\n this.timeNeededToCompleteWork = 0;\n\n this.work_money_mult = 1;\n\n //Hacknet Node multipliers\n this.hacknet_node_money_mult = 1;\n this.hacknet_node_purchase_cost_mult = 1;\n this.hacknet_node_ram_cost_mult = 1;\n this.hacknet_node_core_cost_mult = 1;\n this.hacknet_node_level_cost_mult = 1;\n\n //Stock Market\n this.hasWseAccount = false;\n this.hasTixApiAccess = false;\n this.has4SData = false;\n this.has4SDataTixApi = false;\n\n //Gang\n this.gang = null;\n\n //Corporation\n this.corporation = null;\n\n //Bladeburner\n this.bladeburner = null;\n this.bladeburner_max_stamina_mult = 1;\n this.bladeburner_stamina_gain_mult = 1;\n this.bladeburner_analysis_mult = 1; //Field Analysis Onl;\n this.bladeburner_success_chance_mult = 1;\n\n // Sleeves & Re-sleeving\n this.sleeves = [];\n this.sleevesFromCovenant = 0; // # of Duplicate sleeves purchased from the covenan;\n //bitnode\n this.bitNodeN = 1;\n\n this.entropy = 0;\n\n //Used to store the last update time.\n this.lastUpdate = 0;\n this.lastSave = 0;\n this.totalPlaytime = 0;\n\n this.playtimeSinceLastAug = 0;\n this.playtimeSinceLastBitnode = 0;\n\n // Keep track of where money comes from\n this.moneySourceA = new MoneySourceTracker(); // Where money comes from since last-installed Augmentatio;\n this.moneySourceB = new MoneySourceTracker(); // Where money comes from for this entire BitNode ru;\n // Production since last Augmentation installation\n this.scriptProdSinceLastAug = 0;\n\n this.exploits = [];\n this.achievements = [];\n this.terminalCommandHistory = [];\n\n // Let's get a hash of some semi-random stuff so we have something unique.\n this.identifier = cyrb53(\n \"I-\" +\n new Date().getTime() +\n navigator.userAgent +\n window.innerWidth +\n window.innerHeight +\n getRandomInt(100, 999),\n );\n\n this.init = generalMethods.init;\n this.prestigeAugmentation = generalMethods.prestigeAugmentation;\n this.prestigeSourceFile = generalMethods.prestigeSourceFile;\n this.receiveInvite = generalMethods.receiveInvite;\n this.calculateSkill = generalMethods.calculateSkill;\n this.calculateSkillProgress = generalMethods.calculateSkillProgress;\n this.updateSkillLevels = generalMethods.updateSkillLevels;\n this.resetMultipliers = generalMethods.resetMultipliers;\n this.hasProgram = generalMethods.hasProgram;\n this.setMoney = generalMethods.setMoney;\n this.gainMoney = generalMethods.gainMoney;\n this.loseMoney = generalMethods.loseMoney;\n this.canAfford = generalMethods.canAfford;\n this.recordMoneySource = generalMethods.recordMoneySource;\n this.gainHackingExp = generalMethods.gainHackingExp;\n this.gainStrengthExp = generalMethods.gainStrengthExp;\n this.gainDefenseExp = generalMethods.gainDefenseExp;\n this.gainDexterityExp = generalMethods.gainDexterityExp;\n this.gainAgilityExp = generalMethods.gainAgilityExp;\n this.gainCharismaExp = generalMethods.gainCharismaExp;\n this.gainIntelligenceExp = generalMethods.gainIntelligenceExp;\n this.queryStatFromString = generalMethods.queryStatFromString;\n this.resetWorkStatus = generalMethods.resetWorkStatus;\n this.processWorkEarnings = generalMethods.processWorkEarnings;\n this.startWork = generalMethods.startWork;\n this.cancelationPenalty = generalMethods.cancelationPenalty;\n this.work = generalMethods.work;\n this.finishWork = generalMethods.finishWork;\n this.startWorkPartTime = generalMethods.startWorkPartTime;\n this.workPartTime = generalMethods.workPartTime;\n this.finishWorkPartTime = generalMethods.finishWorkPartTime;\n this.startFocusing = generalMethods.startFocusing;\n this.stopFocusing = generalMethods.stopFocusing;\n this.startFactionWork = generalMethods.startFactionWork;\n this.startFactionHackWork = generalMethods.startFactionHackWork;\n this.startFactionFieldWork = generalMethods.startFactionFieldWork;\n this.startFactionSecurityWork = generalMethods.startFactionSecurityWork;\n this.workForFaction = generalMethods.workForFaction;\n this.finishFactionWork = generalMethods.finishFactionWork;\n this.getWorkMoneyGain = generalMethods.getWorkMoneyGain;\n this.getWorkHackExpGain = generalMethods.getWorkHackExpGain;\n this.getWorkStrExpGain = generalMethods.getWorkStrExpGain;\n this.getWorkDefExpGain = generalMethods.getWorkDefExpGain;\n this.getWorkDexExpGain = generalMethods.getWorkDexExpGain;\n this.getWorkAgiExpGain = generalMethods.getWorkAgiExpGain;\n this.getWorkChaExpGain = generalMethods.getWorkChaExpGain;\n this.getWorkRepGain = generalMethods.getWorkRepGain;\n this.process = generalMethods.process;\n this.startCreateProgramWork = generalMethods.startCreateProgramWork;\n this.createProgramWork = generalMethods.createProgramWork;\n this.finishCreateProgramWork = generalMethods.finishCreateProgramWork;\n this.startGraftAugmentationWork = generalMethods.startGraftAugmentationWork;\n this.graftAugmentationWork = generalMethods.craftAugmentationWork;\n this.finishGraftAugmentationWork = generalMethods.finishGraftAugmentationWork;\n this.startClass = generalMethods.startClass;\n this.takeClass = generalMethods.takeClass;\n this.finishClass = generalMethods.finishClass;\n this.startCrime = generalMethods.startCrime;\n this.commitCrime = generalMethods.commitCrime;\n this.finishCrime = generalMethods.finishCrime;\n this.singularityStopWork = generalMethods.singularityStopWork;\n this.takeDamage = generalMethods.takeDamage;\n this.regenerateHp = generalMethods.regenerateHp;\n this.hospitalize = generalMethods.hospitalize;\n this.applyForJob = generalMethods.applyForJob;\n this.getNextCompanyPosition = generalMethods.getNextCompanyPosition;\n this.quitJob = generalMethods.quitJob;\n this.hasJob = generalMethods.hasJob;\n this.applyForSoftwareJob = generalMethods.applyForSoftwareJob;\n this.applyForSoftwareConsultantJob = generalMethods.applyForSoftwareConsultantJob;\n this.applyForItJob = generalMethods.applyForItJob;\n this.applyForSecurityEngineerJob = generalMethods.applyForSecurityEngineerJob;\n this.applyForNetworkEngineerJob = generalMethods.applyForNetworkEngineerJob;\n this.applyForBusinessJob = generalMethods.applyForBusinessJob;\n this.applyForBusinessConsultantJob = generalMethods.applyForBusinessConsultantJob;\n this.applyForSecurityJob = generalMethods.applyForSecurityJob;\n this.applyForAgentJob = generalMethods.applyForAgentJob;\n this.applyForEmployeeJob = generalMethods.applyForEmployeeJob;\n this.applyForPartTimeEmployeeJob = generalMethods.applyForPartTimeEmployeeJob;\n this.applyForWaiterJob = generalMethods.applyForWaiterJob;\n this.applyForPartTimeWaiterJob = generalMethods.applyForPartTimeWaiterJob;\n this.isQualified = generalMethods.isQualified;\n this.reapplyAllAugmentations = generalMethods.reapplyAllAugmentations;\n this.reapplyAllSourceFiles = generalMethods.reapplyAllSourceFiles;\n this.checkForFactionInvitations = generalMethods.checkForFactionInvitations;\n this.setBitNodeNumber = generalMethods.setBitNodeNumber;\n this.queueAugmentation = generalMethods.queueAugmentation;\n this.gainCodingContractReward = generalMethods.gainCodingContractReward;\n this.travel = generalMethods.travel;\n this.gotoLocation = generalMethods.gotoLocation;\n this.canAccessGrafting = generalMethods.canAccessGrafting;\n this.giveExploit = generalMethods.giveExploit;\n this.giveAchievement = generalMethods.giveAchievement;\n this.getIntelligenceBonus = generalMethods.getIntelligenceBonus;\n this.getCasinoWinnings = generalMethods.getCasinoWinnings;\n this.hasAugmentation = augmentationMethods.hasAugmentation;\n this.canAccessBladeburner = bladeburnerMethods.canAccessBladeburner;\n this.inBladeburner = bladeburnerMethods.inBladeburner;\n this.startBladeburner = bladeburnerMethods.startBladeburner;\n this.canAccessCorporation = corporationMethods.canAccessCorporation;\n this.hasCorporation = corporationMethods.hasCorporation;\n this.startCorporation = corporationMethods.startCorporation;\n this.canAccessGang = gangMethods.canAccessGang;\n this.getGangFaction = gangMethods.getGangFaction;\n this.getGangName = gangMethods.getGangName;\n this.hasGangWith = gangMethods.hasGangWith;\n this.inGang = gangMethods.inGang;\n this.startGang = gangMethods.startGang;\n\n this.hasTorRouter = serverMethods.hasTorRouter;\n this.getCurrentServer = serverMethods.getCurrentServer;\n this.getHomeComputer = serverMethods.getHomeComputer;\n this.getUpgradeHomeRamCost = serverMethods.getUpgradeHomeRamCost;\n this.getUpgradeHomeCoresCost = serverMethods.getUpgradeHomeCoresCost;\n this.createHacknetServer = serverMethods.createHacknetServer;\n this.factionWorkType = \"\";\n this.committingCrimeThruSingFn = false;\n this.singFnCrimeWorkerScript = null;\n\n this.getMult = generalMethods.getMult;\n this.setMult = generalMethods.setMult;\n\n this.canAccessCotMG = generalMethods.canAccessCotMG;\n this.sourceFileLvl = generalMethods.sourceFileLvl;\n\n this.applyEntropy = augmentationMethods.applyEntropy;\n }\n\n /**\n * Serialize the current object to a JSON save state.\n */\n toJSON(): any {\n return Generic_toJSON(\"PlayerObject\", this);\n }\n\n /**\n * Initiatizes a PlayerObject object from a JSON save state.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): PlayerObject {\n return Generic_fromJSON(PlayerObject, value.data);\n }\n}\n\nReviver.constructors.PlayerObject = PlayerObject;\n","import React, { useState, useEffect } from \"react\";\nimport { joinFaction } from \"../FactionHelpers\";\nimport { Faction } from \"../Faction\";\nimport { Modal } from \"../../ui/React/Modal\";\nimport { use } from \"../../ui/Context\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\n\nexport const InvitationEvent = new EventEmitter<[Faction]>();\n\nexport function InvitationModal(): React.ReactElement {\n const [faction, setFaction] = useState(null);\n const player = use.Player();\n function join(): void {\n if (faction === null) return;\n //Remove from invited factions\n const i = player.factionInvitations.findIndex((facName) => facName === faction.name);\n if (i === -1) {\n console.error(\"Could not find faction in Player.factionInvitations\");\n }\n joinFaction(faction);\n setFaction(null);\n }\n\n useEffect(() => InvitationEvent.subscribe((faction) => setFaction(faction)), []);\n\n return (\n setFaction(null)}>\n You have received a faction invitation.\n \n Would you like to join {(faction || { name: \"\" }).name}? \n \n Warning: Joining this faction may prevent you from joining other factions during this run!\n \n \n \n \n );\n}\n","import { Literatures } from \"./Literatures\";\nimport { dialogBoxCreate } from \"../ui/React/DialogBox\";\n\nexport function showLiterature(fn: string): void {\n const litObj = Literatures[fn];\n if (litObj == null) {\n return;\n }\n const txt = `${litObj.title}
${litObj.txt}`;\n dialogBoxCreate(txt);\n}\n","import { ITaskParams, ITerritory } from \"./ITaskParams\";\n\nexport class GangMemberTask {\n name: string;\n desc: string;\n\n isHacking: boolean;\n isCombat: boolean;\n\n baseRespect: number;\n baseWanted: number;\n baseMoney: number;\n\n hackWeight: number;\n strWeight: number;\n defWeight: number;\n dexWeight: number;\n agiWeight: number;\n chaWeight: number;\n\n difficulty: number;\n\n territory: ITerritory;\n\n // Defines tasks that Gang Members can work on\n constructor(name: string, desc: string, isHacking: boolean, isCombat: boolean, params: ITaskParams) {\n this.name = name;\n this.desc = desc;\n\n // Flags that describe whether this Task is applicable for Hacking/Combat gangs\n this.isHacking = isHacking;\n this.isCombat = isCombat;\n\n // Base gain rates for respect/wanted/money\n this.baseRespect = params.baseRespect ? params.baseRespect : 0;\n this.baseWanted = params.baseWanted ? params.baseWanted : 0;\n this.baseMoney = params.baseMoney ? params.baseMoney : 0;\n\n // Weighting for the effect that each stat has on the tasks effectiveness.\n // Weights must add up to 100\n this.hackWeight = params.hackWeight ? params.hackWeight : 0;\n this.strWeight = params.strWeight ? params.strWeight : 0;\n this.defWeight = params.defWeight ? params.defWeight : 0;\n this.dexWeight = params.dexWeight ? params.dexWeight : 0;\n this.agiWeight = params.agiWeight ? params.agiWeight : 0;\n this.chaWeight = params.chaWeight ? params.chaWeight : 0;\n\n if (\n Math.round(\n this.hackWeight + this.strWeight + this.defWeight + this.dexWeight + this.agiWeight + this.chaWeight,\n ) != 100\n ) {\n console.error(`GangMemberTask ${this.name} weights do not add up to 100`);\n }\n\n // 1 - 100\n this.difficulty = params.difficulty ? params.difficulty : 1;\n\n // Territory Factors. Exponential factors that dictate how territory affects gains\n // Formula: Territory Mutiplier = (Territory * 100) ^ factor / 100\n // So factor should be > 1 if something should scale exponentially with territory\n // and should be < 1 if it should have diminshing returns\n this.territory = params.territory ? params.territory : { money: 1, respect: 1, wanted: 1 };\n }\n}\n","export class PlayerOwnedSourceFile {\n // Source-File level\n lvl = 1;\n\n // Source-File number\n n = 1;\n\n constructor(n: number, level: number) {\n this.n = n;\n this.lvl = level;\n }\n}\n\nexport interface IPlayerOwnedSourceFile {\n lvl: number;\n n: number;\n}\n","import { RunningScript } from \"src/Script/RunningScript\";\nimport { WorkerScript } from \"./WorkerScript\";\n\nexport const recentScripts: RecentScript[] = [];\n\nexport function AddRecentScript(workerScript: WorkerScript): void {\n if (recentScripts.find((r) => r.pid === workerScript.pid)) return;\n recentScripts.unshift({\n filename: workerScript.name,\n args: workerScript.args,\n pid: workerScript.pid,\n timestamp: new Date(),\n\n runningScript: workerScript.scriptRef,\n });\n while (recentScripts.length > 50) {\n recentScripts.pop();\n }\n}\n\nexport interface RecentScript {\n filename: string;\n args: string[];\n pid: number;\n timestamp: Date;\n runningScript: RunningScript;\n}\n","import * as acorn from \"acorn\";\n/**\n * @license\n * JavaScript Interpreter\n *\n * Copyright 2013 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Interpreting JavaScript in JavaScript.\n * @author fraser@google.com (Neil Fraser)\n */\n(\"use strict\");\n\n/**\n * Create a new interpreter.\n * @param {string|!Object} code Raw JavaScript text or AST.\n * @param {Function=} opt_initFunc Optional initialization function. Used to\n * define APIs. When called it is passed the interpreter object and the\n * global scope object.\n * @param {Number} Bitburner-specific number used for determining exception line numbers\n * @constructor\n */\nvar Interpreter = function (code, opt_initFunc, lineOffset = 0) {\n this.sourceCode = code;\n this.sourceCodeLineOffset = lineOffset;\n if (typeof code === \"string\") {\n code = acorn.parse(code, Interpreter.PARSE_OPTIONS);\n }\n this.ast = code;\n this.initFunc_ = opt_initFunc;\n this.paused_ = false;\n this.polyfills_ = [];\n // Unique identifier for native functions. Used in serialization.\n this.functionCounter_ = 0;\n // Map node types to our step function names; a property lookup is faster\n // than string concatenation with \"step\" prefix.\n this.stepFunctions_ = Object.create(null);\n var stepMatch = /^step([A-Z]\\w*)$/;\n var m;\n for (var methodName in this) {\n if (typeof this[methodName] === \"function\" && (m = methodName.match(stepMatch))) {\n this.stepFunctions_[m[1]] = this[methodName].bind(this);\n }\n }\n // Create and initialize the global scope.\n this.global = this.createScope(this.ast, null);\n // Run the polyfills.\n this.ast = acorn.parse(this.polyfills_.join(\"\\n\"), Interpreter.PARSE_OPTIONS);\n this.polyfills_ = undefined; // Allow polyfill strings to garbage collect.\n this.stripLocations_(this.ast, undefined, undefined);\n var state = new Interpreter.State(this.ast, this.global);\n state.done = false;\n this.stateStack = [state];\n this.run();\n this.value = undefined;\n // Point at the main program.\n this.ast = code;\n var state = new Interpreter.State(this.ast, this.global);\n state.done = false;\n this.stateStack.length = 0;\n this.stateStack[0] = state;\n // Get a handle on Acorn's node_t object. It's tricky to access.\n this.nodeConstructor = state.node.constructor;\n // Preserve publicly properties from being pruned/renamed by JS compilers.\n // Add others as needed.\n this[\"stateStack\"] = this.stateStack;\n};\n\n/**\n * @const {!Object} Configuration used for all Acorn parsing.\n */\nInterpreter.PARSE_OPTIONS = {\n ecmaVersion: 5,\n locations: true,\n};\n\n/**\n * Property descriptor of readonly properties.\n */\nInterpreter.READONLY_DESCRIPTOR = {\n configurable: true,\n enumerable: true,\n writable: false,\n};\n\n/**\n * Property descriptor of non-enumerable properties.\n */\nInterpreter.NONENUMERABLE_DESCRIPTOR = {\n configurable: true,\n enumerable: false,\n writable: true,\n};\n\n/**\n * Property descriptor of readonly, non-enumerable properties.\n */\nInterpreter.READONLY_NONENUMERABLE_DESCRIPTOR = {\n configurable: true,\n enumerable: false,\n writable: false,\n};\n\n/**\n * Property descriptor of variables.\n */\nInterpreter.VARIABLE_DESCRIPTOR = {\n configurable: false,\n enumerable: true,\n writable: true,\n};\n\n/**\n * Unique symbol for indicating that a step has encountered an error, has\n * added it to the stack, and will be thrown within the user's program.\n * When STEP_ERROR is thrown in the JS-Interpreter, the error can be ignored.\n */\nInterpreter.STEP_ERROR = {};\n\n/**\n * Unique symbol for indicating that a reference is a variable on the scope,\n * not an object property.\n */\nInterpreter.SCOPE_REFERENCE = {};\n\n/**\n * Unique symbol for indicating, when used as the value of the value\n * parameter in calls to setProperty and friends, that the value\n * should be taken from the property descriptor instead.\n */\nInterpreter.VALUE_IN_DESCRIPTOR = {};\n\n/**\n * For cycle detection in array to string and error conversion;\n * see spec bug github.com/tc39/ecma262/issues/289\n * Since this is for atomic actions only, it can be a class property.\n */\nInterpreter.toStringCycles_ = [];\n\n/**\n * Determine error/exception line number in Bitburner source code\n * @param {Object} AST Node that causes Error/Exception\n */\nInterpreter.prototype.getErrorLineNumber = function (node) {\n var code = this.sourceCode;\n if (node == null || node.start == null) {\n return NaN;\n }\n try {\n code = code.substring(0, node.start);\n return (code.match(/\\n/g) || []).length + 1 - this.sourceCodeLineOffset;\n } catch (e) {\n return NaN;\n }\n};\n\n/**\n * Generate the appropriate line number error message for Bitburner\n * @param {Number} lineNumber\n */\nInterpreter.prototype.getErrorLineNumberMessage = function (lineNumber) {\n if (isNaN(lineNumber)) {\n return \" (Unknown line number)\";\n } else if (lineNumber <= 0) {\n return \" (Error occurred in an imported function)\";\n } else {\n return (\n \" (Line Number \" +\n lineNumber +\n \". This line number is probably incorrect \" +\n \"if your script is importing any functions. This is being worked on)\"\n );\n }\n};\n\n/**\n * Add more code to the interpreter.\n * @param {string|!Object} code Raw JavaScript text or AST.\n */\nInterpreter.prototype.appendCode = function (code) {\n var state = this.stateStack[0];\n if (!state || state.node[\"type\"] !== \"Program\") {\n throw Error(\"Expecting original AST to start with a Program node.\");\n }\n if (typeof code === \"string\") {\n code = acorn.parse(code, Interpreter.PARSE_OPTIONS);\n }\n if (!code || code[\"type\"] !== \"Program\") {\n throw Error(\"Expecting new AST to start with a Program node.\");\n }\n this.populateScope_(code, state.scope);\n // Append the new program to the old one.\n for (var i = 0, node; (node = code[\"body\"][i]); i++) {\n state.node[\"body\"].push(node);\n }\n state.done = false;\n};\n\n/**\n * Execute one step of the interpreter.\n * @return {boolean} True if a step was executed, false if no more instructions.\n */\nInterpreter.prototype.step = function () {\n var stack = this.stateStack;\n var state = stack[stack.length - 1];\n if (!state) {\n return false;\n }\n var node = state.node,\n type = node[\"type\"];\n if (type === \"Program\" && state.done) {\n return false;\n } else if (this.paused_) {\n return true;\n }\n try {\n var nextState = this.stepFunctions_[type](stack, state, node);\n } catch (e) {\n // Eat any step errors. They have been thrown on the stack.\n if (e !== Interpreter.STEP_ERROR) {\n // Uh oh. This is a real error in the JS-Interpreter. Rethrow.\n throw e;\n }\n }\n if (nextState) {\n stack.push(nextState);\n }\n if (!node[\"end\"]) {\n // This is polyfill code. Keep executing until we arrive at user code.\n return this.step();\n }\n return true;\n};\n\n/**\n * Execute the interpreter to program completion. Vulnerable to infinite loops.\n * @return {boolean} True if a execution is asynchronously blocked,\n * false if no more instructions.\n */\nInterpreter.prototype.run = function () {\n while (!this.paused_ && this.step()) {}\n return this.paused_;\n};\n\n/**\n * Initialize the global scope with buitin properties and functions.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initGlobalScope = function (scope) {\n // Initialize uneditable global properties.\n this.setProperty(scope, \"NaN\", NaN, Interpreter.READONLY_DESCRIPTOR);\n this.setProperty(scope, \"Infinity\", Infinity, Interpreter.READONLY_DESCRIPTOR);\n this.setProperty(scope, \"undefined\", undefined, Interpreter.READONLY_DESCRIPTOR);\n this.setProperty(scope, \"window\", scope, Interpreter.READONLY_DESCRIPTOR);\n this.setProperty(scope, \"this\", scope, Interpreter.READONLY_DESCRIPTOR);\n this.setProperty(scope, \"self\", scope); // Editable.\n\n // Create the objects which will become Object.prototype and\n // Function.prototype, which are needed to bootstrap everything else.\n this.OBJECT_PROTO = new Interpreter.Object(null);\n this.FUNCTION_PROTO = new Interpreter.Object(this.OBJECT_PROTO);\n // Initialize global objects.\n this.initFunction(scope);\n this.initObject(scope);\n // Unable to set scope's parent prior (OBJECT did not exist).\n // Note that in a browser this would be 'Window', whereas in Node.js it would\n // be 'Object'. This interpreter is closer to Node in that it has no DOM.\n scope.proto = this.OBJECT_PROTO;\n this.setProperty(scope, \"constructor\", this.OBJECT, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.initArray(scope);\n this.initString(scope);\n this.initBoolean(scope);\n this.initNumber(scope);\n this.initDate(scope);\n this.initRegExp(scope);\n this.initError(scope);\n this.initMath(scope);\n this.initJSON(scope);\n\n // Initialize global functions.\n var thisInterpreter = this;\n var func = this.createNativeFunction(function (x) {\n throw EvalError(\"Can't happen\");\n }, false);\n func.eval = true;\n this.setProperty(scope, \"eval\", func);\n\n this.setProperty(scope, \"parseInt\", this.createNativeFunction(parseInt, false));\n this.setProperty(scope, \"parseFloat\", this.createNativeFunction(parseFloat, false));\n\n this.setProperty(scope, \"isNaN\", this.createNativeFunction(isNaN, false));\n\n this.setProperty(scope, \"isFinite\", this.createNativeFunction(isFinite, false));\n\n var strFunctions = [\n [escape, \"escape\"],\n [unescape, \"unescape\"],\n [decodeURI, \"decodeURI\"],\n [decodeURIComponent, \"decodeURIComponent\"],\n [encodeURI, \"encodeURI\"],\n [encodeURIComponent, \"encodeURIComponent\"],\n ];\n for (var i = 0; i < strFunctions.length; i++) {\n var wrapper = (function (nativeFunc) {\n return function (str) {\n try {\n return nativeFunc(str);\n } catch (e) {\n // decodeURI('%xy') will throw an error. Catch and rethrow.\n thisInterpreter.throwException(thisInterpreter.URI_ERROR, e.message);\n }\n };\n })(strFunctions[i][0]);\n this.setProperty(\n scope,\n strFunctions[i][1],\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n }\n // Preserve publicly properties from being pruned/renamed by JS compilers.\n // Add others as needed.\n this[\"OBJECT\"] = this.OBJECT;\n this[\"OBJECT_PROTO\"] = this.OBJECT_PROTO;\n this[\"FUNCTION\"] = this.FUNCTION;\n this[\"FUNCTION_PROTO\"] = this.FUNCTION_PROTO;\n this[\"ARRAY\"] = this.ARRAY;\n this[\"ARRAY_PROTO\"] = this.ARRAY_PROTO;\n this[\"REGEXP\"] = this.REGEXP;\n this[\"REGEXP_PROTO\"] = this.REGEXP_PROTO;\n this[\"DATE\"] = this.DATE;\n this[\"DATE_PROTO\"] = this.DATE_PROTO;\n // The following properties are obsolete. Do not use.\n this[\"UNDEFINED\"] = undefined;\n this[\"NULL\"] = null;\n this[\"NAN\"] = NaN;\n this[\"TRUE\"] = true;\n this[\"FALSE\"] = false;\n this[\"STRING_EMPTY\"] = \"\";\n this[\"NUMBER_ZERO\"] = 0;\n this[\"NUMBER_ONE\"] = 1;\n\n // Run any user-provided initialization.\n if (this.initFunc_) {\n this.initFunc_(this, scope);\n }\n};\n\n/**\n * Initialize the Function class.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initFunction = function (scope) {\n var thisInterpreter = this;\n var wrapper;\n var identifierRegexp = /^[A-Za-z_$][\\w$]*$/;\n // Function constructor.\n wrapper = function (var_args) {\n if (thisInterpreter.calledWithNew()) {\n // Called as new Function().\n var newFunc = this;\n } else {\n // Called as Function().\n var newFunc = thisInterpreter.createObjectProto(thisInterpreter.FUNCTION_PROTO);\n }\n if (arguments.length) {\n var code = String(arguments[arguments.length - 1]);\n } else {\n var code = \"\";\n }\n var argsStr = Array.prototype.slice.call(arguments, 0, -1).join(\",\").trim();\n if (argsStr) {\n var args = argsStr.split(/\\s*,\\s*/);\n for (var i = 0; i < args.length; i++) {\n var name = args[i];\n if (!identifierRegexp.test(name)) {\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, \"Invalid function argument: \" + name);\n }\n }\n argsStr = args.join(\", \");\n }\n // Interestingly, the scope for constructed functions is the global scope,\n // even if they were constructed in some other scope.\n newFunc.parentScope = thisInterpreter.global;\n // Acorn needs to parse code in the context of a function or else 'return'\n // statements will be syntax errors.\n try {\n var ast = acorn.parse(\"(function(\" + argsStr + \") {\" + code + \"})\", Interpreter.PARSE_OPTIONS);\n } catch (e) {\n // Acorn threw a SyntaxError. Rethrow as a trappable error.\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, \"Invalid code: \" + e.message);\n }\n if (ast[\"body\"].length !== 1) {\n // Function('a', 'return a + 6;}; {alert(1);');\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, \"Invalid code in function body.\");\n }\n newFunc.node = ast[\"body\"][0][\"expression\"];\n thisInterpreter.setProperty(newFunc, \"length\", newFunc.node[\"length\"], Interpreter.READONLY_DESCRIPTOR);\n return newFunc;\n };\n wrapper.id = this.functionCounter_++;\n this.FUNCTION = this.createObjectProto(this.FUNCTION_PROTO);\n\n this.setProperty(scope, \"Function\", this.FUNCTION);\n // Manually setup type and prototype because createObj doesn't recognize\n // this object as a function (this.FUNCTION did not exist).\n this.setProperty(this.FUNCTION, \"prototype\", this.FUNCTION_PROTO);\n this.FUNCTION.nativeFunc = wrapper;\n\n // Configure Function.prototype.\n this.setProperty(this.FUNCTION_PROTO, \"constructor\", this.FUNCTION, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.FUNCTION_PROTO.nativeFunc = function () {};\n this.FUNCTION_PROTO.nativeFunc.id = this.functionCounter_++;\n this.setProperty(this.FUNCTION_PROTO, \"length\", 0, Interpreter.READONLY_DESCRIPTOR);\n\n var boxThis = function (value) {\n // In non-strict mode 'this' must be an object.\n if ((!value || !value.isObject) && !thisInterpreter.getScope().strict) {\n if (value === undefined || value === null) {\n // 'Undefined' and 'null' are changed to global object.\n value = thisInterpreter.global;\n } else {\n // Primitives must be boxed in non-strict mode.\n var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value));\n box.data = value;\n value = box;\n }\n }\n return value;\n };\n\n wrapper = function (thisArg, args) {\n var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1];\n // Rewrite the current 'CallExpression' to apply a different function.\n state.func_ = this;\n // Assign the 'this' object.\n state.funcThis_ = boxThis(thisArg);\n // Bind any provided arguments.\n state.arguments_ = [];\n if (args !== null && args !== undefined) {\n if (args.isObject) {\n state.arguments_ = thisInterpreter.arrayPseudoToNative(args);\n } else {\n thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, \"CreateListFromArrayLike called on non-object\");\n }\n }\n state.doneExec_ = false;\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"apply\", wrapper);\n\n wrapper = function (thisArg /*, var_args */) {\n var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1];\n // Rewrite the current 'CallExpression' to call a different function.\n state.func_ = this;\n // Assign the 'this' object.\n state.funcThis_ = boxThis(thisArg);\n // Bind any provided arguments.\n state.arguments_ = [];\n for (var i = 1; i < arguments.length; i++) {\n state.arguments_.push(arguments[i]);\n }\n state.doneExec_ = false;\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"call\", wrapper);\n\n this.polyfills_.push(\n // Polyfill copied from:\n // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind\n \"Object.defineProperty(Function.prototype, 'bind',\",\n \"{configurable: true, writable: true, value:\",\n \"function(oThis) {\",\n \"if (typeof this !== 'function') {\",\n \"throw TypeError('What is trying to be bound is not callable');\",\n \"}\",\n \"var aArgs = Array.prototype.slice.call(arguments, 1),\",\n \"fToBind = this,\",\n \"fNOP = function() {},\",\n \"fBound = function() {\",\n \"return fToBind.apply(this instanceof fNOP\",\n \"? this\",\n \": oThis,\",\n \"aArgs.concat(Array.prototype.slice.call(arguments)));\",\n \"};\",\n \"if (this.prototype) {\",\n \"fNOP.prototype = this.prototype;\",\n \"}\",\n \"fBound.prototype = new fNOP();\",\n \"return fBound;\",\n \"}\",\n \"});\",\n \"\",\n );\n\n // Function has no parent to inherit from, so it needs its own mandatory\n // toString and valueOf functions.\n wrapper = function () {\n return this.toString();\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"toString\", wrapper);\n this.setProperty(\n this.FUNCTION,\n \"toString\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n wrapper = function () {\n return this.valueOf();\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"valueOf\", wrapper);\n this.setProperty(\n this.FUNCTION,\n \"valueOf\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n};\n\n/**\n * Initialize the Object class.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initObject = function (scope) {\n var thisInterpreter = this;\n var wrapper;\n // Object constructor.\n wrapper = function (value) {\n if (value === undefined || value === null) {\n // Create a new object.\n if (thisInterpreter.calledWithNew()) {\n // Called as new Object().\n return this;\n } else {\n // Called as Object().\n return thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO);\n }\n }\n if (!value.isObject) {\n // Wrap the value as an object.\n var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value));\n box.data = value;\n return box;\n }\n // Return the provided object.\n return value;\n };\n this.OBJECT = this.createNativeFunction(wrapper, true);\n // Throw away the created prototype and use the root prototype.\n this.setProperty(this.OBJECT, \"prototype\", this.OBJECT_PROTO);\n this.setProperty(this.OBJECT_PROTO, \"constructor\", this.OBJECT, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.setProperty(scope, \"Object\", this.OBJECT);\n\n /**\n * Checks if the provided value is null or undefined.\n * If so, then throw an error in the call stack.\n * @param {Interpreter.Value} value Value to check.\n */\n var throwIfNullUndefined = function (value) {\n if (value === undefined || value === null) {\n thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, \"Cannot convert '\" + value + \"' to object\");\n }\n };\n\n // Static methods on Object.\n wrapper = function (obj) {\n throwIfNullUndefined(obj);\n var props = obj.isObject ? obj.properties : obj;\n return thisInterpreter.arrayNativeToPseudo(Object.getOwnPropertyNames(props));\n };\n this.setProperty(\n this.OBJECT,\n \"getOwnPropertyNames\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n wrapper = function (obj) {\n throwIfNullUndefined(obj);\n if (obj.isObject) {\n obj = obj.properties;\n }\n return thisInterpreter.arrayNativeToPseudo(Object.keys(obj));\n };\n this.setProperty(\n this.OBJECT,\n \"keys\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n wrapper = function (proto) {\n // Support for the second argument is the responsibility of a polyfill.\n if (proto === null) {\n return thisInterpreter.createObjectProto(null);\n }\n if (proto === undefined || !proto.isObject) {\n thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, \"Object prototype may only be an Object or null\");\n }\n return thisInterpreter.createObjectProto(proto);\n };\n this.setProperty(\n this.OBJECT,\n \"create\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n // Add a polyfill to handle create's second argument.\n this.polyfills_.push(\n \"(function() {\",\n \"var create_ = Object.create;\",\n \"Object.create = function(proto, props) {\",\n \"var obj = create_(proto);\",\n \"props && Object.defineProperties(obj, props);\",\n \"return obj;\",\n \"};\",\n \"})();\",\n \"\",\n );\n\n wrapper = function (obj, prop, descriptor) {\n prop = String(prop);\n if (!obj || !obj.isObject) {\n thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, \"Object.defineProperty called on non-object\");\n }\n if (!descriptor || !descriptor.isObject) {\n thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, \"Property description must be an object\");\n }\n if (!obj.properties[prop] && obj.preventExtensions) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Can't define property '\" + prop + \"', object is not extensible\",\n );\n }\n // The polyfill guarantees no inheritance and no getter functions.\n // Therefore the descriptor properties map is the native object needed.\n thisInterpreter.setProperty(obj, prop, Interpreter.VALUE_IN_DESCRIPTOR, descriptor.properties);\n return obj;\n };\n this.setProperty(\n this.OBJECT,\n \"defineProperty\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n this.polyfills_.push(\n // Flatten the descriptor to remove any inheritance or getter functions.\n \"(function() {\",\n \"var defineProperty_ = Object.defineProperty;\",\n \"Object.defineProperty = function(obj, prop, d1) {\",\n \"var d2 = {};\",\n \"if ('configurable' in d1) d2.configurable = d1.configurable;\",\n \"if ('enumerable' in d1) d2.enumerable = d1.enumerable;\",\n \"if ('writable' in d1) d2.writable = d1.writable;\",\n \"if ('value' in d1) d2.value = d1.value;\",\n \"if ('get' in d1) d2.get = d1.get;\",\n \"if ('set' in d1) d2.set = d1.set;\",\n \"return defineProperty_(obj, prop, d2);\",\n \"};\",\n \"})();\",\n\n \"Object.defineProperty(Object, 'defineProperties',\",\n \"{configurable: true, writable: true, value:\",\n \"function(obj, props) {\",\n \"var keys = Object.keys(props);\",\n \"for (var i = 0; i < keys.length; i++) {\",\n \"Object.defineProperty(obj, keys[i], props[keys[i]]);\",\n \"}\",\n \"return obj;\",\n \"}\",\n \"});\",\n \"\",\n );\n\n wrapper = function (obj, prop) {\n if (!obj || !obj.isObject) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Object.getOwnPropertyDescriptor called on non-object\",\n );\n }\n prop = String(prop);\n if (!(prop in obj.properties)) {\n return undefined;\n }\n var descriptor = Object.getOwnPropertyDescriptor(obj.properties, prop);\n var getter = obj.getter[prop];\n var setter = obj.setter[prop];\n\n if (getter || setter) {\n descriptor.get = getter;\n descriptor.set = setter;\n delete descriptor.value;\n delete descriptor.writable;\n }\n // Preserve value, but remove it for the nativeToPseudo call.\n var value = descriptor.value;\n var hasValue = \"value\" in descriptor;\n delete descriptor.value;\n var pseudoDescriptor = thisInterpreter.nativeToPseudo(descriptor);\n if (hasValue) {\n thisInterpreter.setProperty(pseudoDescriptor, \"value\", value);\n }\n return pseudoDescriptor;\n };\n this.setProperty(\n this.OBJECT,\n \"getOwnPropertyDescriptor\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n wrapper = function (obj) {\n throwIfNullUndefined(obj);\n return thisInterpreter.getPrototype(obj);\n };\n this.setProperty(\n this.OBJECT,\n \"getPrototypeOf\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n wrapper = function (obj) {\n return Boolean(obj) && !obj.preventExtensions;\n };\n this.setProperty(\n this.OBJECT,\n \"isExtensible\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n wrapper = function (obj) {\n if (obj && obj.isObject) {\n obj.preventExtensions = true;\n }\n return obj;\n };\n this.setProperty(\n this.OBJECT,\n \"preventExtensions\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n // Instance methods on Object.\n this.setNativeFunctionPrototype(this.OBJECT, \"toString\", Interpreter.Object.prototype.toString);\n this.setNativeFunctionPrototype(this.OBJECT, \"toLocaleString\", Interpreter.Object.prototype.toString);\n this.setNativeFunctionPrototype(this.OBJECT, \"valueOf\", Interpreter.Object.prototype.valueOf);\n\n wrapper = function (prop) {\n throwIfNullUndefined(this);\n if (!this.isObject) {\n return this.hasOwnProperty(prop);\n }\n return String(prop) in this.properties;\n };\n this.setNativeFunctionPrototype(this.OBJECT, \"hasOwnProperty\", wrapper);\n\n wrapper = function (prop) {\n throwIfNullUndefined(this);\n if (!this.isObject) {\n return this.propertyIsEnumerable(prop);\n }\n return Object.prototype.propertyIsEnumerable.call(this.properties, prop);\n };\n this.setNativeFunctionPrototype(this.OBJECT, \"propertyIsEnumerable\", wrapper);\n\n wrapper = function (obj) {\n while (true) {\n // Note, circular loops shouldn't be possible.\n obj = thisInterpreter.getPrototype(obj);\n if (!obj) {\n // No parent; reached the top.\n return false;\n }\n if (obj === this) {\n return true;\n }\n }\n };\n this.setNativeFunctionPrototype(this.OBJECT, \"isPrototypeOf\", wrapper);\n};\n\n/**\n * Initialize the Array class.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initArray = function (scope) {\n var thisInterpreter = this;\n var wrapper;\n // Array constructor.\n wrapper = function (var_args) {\n if (thisInterpreter.calledWithNew()) {\n // Called as new Array().\n var newArray = this;\n } else {\n // Called as Array().\n var newArray = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO);\n }\n var first = arguments[0];\n if (arguments.length === 1 && typeof first === \"number\") {\n if (isNaN(Interpreter.legalArrayLength(first))) {\n thisInterpreter.throwException(thisInterpreter.RANGE_ERROR, \"Invalid array length\");\n }\n newArray.properties.length = first;\n } else {\n for (var i = 0; i < arguments.length; i++) {\n newArray.properties[i] = arguments[i];\n }\n newArray.properties.length = i;\n }\n return newArray;\n };\n this.ARRAY = this.createNativeFunction(wrapper, true);\n this.ARRAY_PROTO = this.ARRAY.properties[\"prototype\"];\n this.setProperty(scope, \"Array\", this.ARRAY);\n\n // Static methods on Array.\n wrapper = function (obj) {\n return obj && obj.class === \"Array\";\n };\n this.setProperty(\n this.ARRAY,\n \"isArray\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n // Instance methods on Array.\n wrapper = function () {\n return Array.prototype.pop.call(this.properties);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"pop\", wrapper);\n\n wrapper = function (var_args) {\n return Array.prototype.push.apply(this.properties, arguments);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"push\", wrapper);\n\n wrapper = function () {\n return Array.prototype.shift.call(this.properties);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"shift\", wrapper);\n\n wrapper = function (var_args) {\n return Array.prototype.unshift.apply(this.properties, arguments);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"unshift\", wrapper);\n\n wrapper = function () {\n Array.prototype.reverse.call(this.properties);\n return this;\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"reverse\", wrapper);\n\n wrapper = function (index, howmany /*, var_args*/) {\n var list = Array.prototype.splice.apply(this.properties, arguments);\n return thisInterpreter.arrayNativeToPseudo(list);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"splice\", wrapper);\n\n wrapper = function (opt_begin, opt_end) {\n var list = Array.prototype.slice.call(this.properties, opt_begin, opt_end);\n return thisInterpreter.arrayNativeToPseudo(list);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"slice\", wrapper);\n\n wrapper = function (opt_separator) {\n return Array.prototype.join.call(this.properties, opt_separator);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"join\", wrapper);\n\n wrapper = function (var_args) {\n var list = [];\n var length = 0;\n // Start by copying the current array.\n var iLength = thisInterpreter.getProperty(this, \"length\");\n for (var i = 0; i < iLength; i++) {\n if (thisInterpreter.hasProperty(this, i)) {\n var element = thisInterpreter.getProperty(this, i);\n list[length] = element;\n }\n length++;\n }\n // Loop through all arguments and copy them in.\n for (var i = 0; i < arguments.length; i++) {\n var value = arguments[i];\n if (thisInterpreter.isa(value, thisInterpreter.ARRAY)) {\n var jLength = thisInterpreter.getProperty(value, \"length\");\n for (var j = 0; j < jLength; j++) {\n if (thisInterpreter.hasProperty(value, j)) {\n list[length] = thisInterpreter.getProperty(value, j);\n }\n length++;\n }\n } else {\n list[length] = value;\n }\n }\n return thisInterpreter.arrayNativeToPseudo(list);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"concat\", wrapper);\n\n wrapper = function (searchElement, opt_fromIndex) {\n return Array.prototype.indexOf.apply(this.properties, arguments);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"indexOf\", wrapper);\n\n wrapper = function (searchElement, opt_fromIndex) {\n return Array.prototype.lastIndexOf.apply(this.properties, arguments);\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"lastIndexOf\", wrapper);\n\n wrapper = function () {\n Array.prototype.sort.call(this.properties);\n return this;\n };\n this.setNativeFunctionPrototype(this.ARRAY, \"sort\", wrapper);\n\n this.polyfills_.push(\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/every\n \"Object.defineProperty(Array.prototype, 'every',\",\n \"{configurable: true, writable: true, value:\",\n \"function(callbackfn, thisArg) {\",\n \"if (!this || typeof callbackfn !== 'function') throw TypeError();\",\n \"var T, k;\",\n \"var O = Object(this);\",\n \"var len = O.length >>> 0;\",\n \"if (arguments.length > 1) T = thisArg;\",\n \"k = 0;\",\n \"while (k < len) {\",\n \"if (k in O && !callbackfn.call(T, O[k], k, O)) return false;\",\n \"k++;\",\n \"}\",\n \"return true;\",\n \"}\",\n \"});\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n \"Object.defineProperty(Array.prototype, 'filter',\",\n \"{configurable: true, writable: true, value:\",\n \"function(fun/*, thisArg*/) {\",\n \"if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();\",\n \"var t = Object(this);\",\n \"var len = t.length >>> 0;\",\n \"var res = [];\",\n \"var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\",\n \"for (var i = 0; i < len; i++) {\",\n \"if (i in t) {\",\n \"var val = t[i];\",\n \"if (fun.call(thisArg, val, i, t)) res.push(val);\",\n \"}\",\n \"}\",\n \"return res;\",\n \"}\",\n \"});\",\n\n // Polyfill copied from:\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n \"if (!Array.prototype.find) {\",\n \"Object.defineProperty(Array.prototype, 'find', {\",\n \"value: function(predicate) {\",\n \"if (this == null) {\",\n \"throw new TypeError('\\\"this\\\" is null or not defined');\",\n \"}\",\n \"var o = Object(this);\",\n \"var len = o.length >>> 0;\",\n \"if (typeof predicate !== 'function') {\",\n \"throw new TypeError('predicate must be a function');\",\n \"}\",\n \"var thisArg = arguments[1];\",\n \"var k = 0;\",\n \"while (k < len) {\",\n \"var kValue = o[k];\",\n \"if (predicate.call(thisArg, kValue, k, o)) {\",\n \"return kValue;\",\n \"}\",\n \"k++;\",\n \"}\",\n \"return undefined;\",\n \"},\",\n \"configurable: true,\",\n \"writable: true\",\n \"});\",\n \"}\",\n\n // Poly fill copied from:\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\n \"if (!Array.prototype.findIndex) {\",\n \"Object.defineProperty(Array.prototype, 'findIndex', {\",\n \"value: function(predicate) {\",\n \"if (this == null) {\",\n \"throw new TypeError('\\\"this\\\" is null or not defined');\",\n \"}\",\n \"var o = Object(this);\",\n \"var len = o.length >>> 0;\",\n \"if (typeof predicate !== 'function') {\",\n \"throw new TypeError('predicate must be a function');\",\n \"}\",\n \"var thisArg = arguments[1];\",\n \"var k = 0;\",\n \"while (k < len) {\",\n \"var kValue = o[k];\",\n \"if (predicate.call(thisArg, kValue, k, o)) {\",\n \"return k;\",\n \"}\",\n \"k++;\",\n \"}\",\n \"return -1;\",\n \"},\",\n \"configurable: true,\",\n \"writable: true\",\n \"});\",\n \"}\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n \"Object.defineProperty(Array.prototype, 'forEach',\",\n \"{configurable: true, writable: true, value:\",\n \"function(callback, thisArg) {\",\n \"if (!this || typeof callback !== 'function') throw TypeError();\",\n \"var T, k;\",\n \"var O = Object(this);\",\n \"var len = O.length >>> 0;\",\n \"if (arguments.length > 1) T = thisArg;\",\n \"k = 0;\",\n \"while (k < len) {\",\n \"if (k in O) callback.call(T, O[k], k, O);\",\n \"k++;\",\n \"}\",\n \"}\",\n \"});\",\n\n // Polyfill copied from:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill\n \"Object.defineProperty(Array.prototype, 'includes', {\",\n \"value: function(searchElement, fromIndex) {\",\n \"if (this == null) {\",\n \"throw new TypeError('\\\"this\\\" is null or not defined');\",\n \"}\",\n \"// 1. Let O be ? ToObject(this value).\",\n \"var o = Object(this);\",\n '// 2. Let len be ? ToLength(? Get(O, \"length\")).',\n \"var len = o.length >>> 0;\",\n \"// 3. If len is 0, return false.\",\n \"if (len === 0) {\",\n \"return false;\",\n \"}\",\n \"// 4. Let n be ? ToInteger(fromIndex).\",\n \"// (If fromIndex is undefined, this step produces the value 0.)\",\n \"var n = fromIndex | 0;\",\n \"// 5. If n ≥ 0, then\",\n \"// a. Let k be n.\",\n \"// 6. Else n < 0,\",\n \"// a. Let k be len + n.\",\n \"// b. If k < 0, let k be 0.\",\n \"var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\",\n \"function sameValueZero(x, y) {\",\n \"return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));\",\n \"}\",\n \"// 7. Repeat, while k < len\",\n \"while (k < len) {\",\n \"// a. Let elementK be the result of ? Get(O, ! ToString(k)).\",\n \"// b. If SameValueZero(searchElement, elementK) is true, return true.\",\n \"if (sameValueZero(o[k], searchElement)) {\",\n \"return true;\",\n \"}\",\n \"// c. Increase k by 1. \",\n \"k++;\",\n \"}\",\n \"// 8. Return false\",\n \"return false;\",\n \"}\",\n \"});\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map\n \"Object.defineProperty(Array.prototype, 'map',\",\n \"{configurable: true, writable: true, value:\",\n \"function(callback, thisArg) {\",\n \"if (!this || typeof callback !== 'function') new TypeError;\",\n \"var T, A, k;\",\n \"var O = Object(this);\",\n \"var len = O.length >>> 0;\",\n \"if (arguments.length > 1) T = thisArg;\",\n \"A = new Array(len);\",\n \"k = 0;\",\n \"while (k < len) {\",\n \"if (k in O) A[k] = callback.call(T, O[k], k, O);\",\n \"k++;\",\n \"}\",\n \"return A;\",\n \"}\",\n \"});\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce\n \"Object.defineProperty(Array.prototype, 'reduce',\",\n \"{configurable: true, writable: true, value:\",\n \"function(callback /*, initialValue*/) {\",\n \"if (!this || typeof callback !== 'function') throw TypeError();\",\n \"var t = Object(this), len = t.length >>> 0, k = 0, value;\",\n \"if (arguments.length === 2) {\",\n \"value = arguments[1];\",\n \"} else {\",\n \"while (k < len && !(k in t)) k++;\",\n \"if (k >= len) {\",\n \"throw TypeError('Reduce of empty array with no initial value');\",\n \"}\",\n \"value = t[k++];\",\n \"}\",\n \"for (; k < len; k++) {\",\n \"if (k in t) value = callback(value, t[k], k, t);\",\n \"}\",\n \"return value;\",\n \"}\",\n \"});\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight\n \"Object.defineProperty(Array.prototype, 'reduceRight',\",\n \"{configurable: true, writable: true, value:\",\n \"function(callback /*, initialValue*/) {\",\n \"if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();\",\n \"var t = Object(this), len = t.length >>> 0, k = len - 1, value;\",\n \"if (arguments.length >= 2) {\",\n \"value = arguments[1];\",\n \"} else {\",\n \"while (k >= 0 && !(k in t)) k--;\",\n \"if (k < 0) {\",\n \"throw TypeError('Reduce of empty array with no initial value');\",\n \"}\",\n \"value = t[k--];\",\n \"}\",\n \"for (; k >= 0; k--) {\",\n \"if (k in t) value = callback(value, t[k], k, t);\",\n \"}\",\n \"return value;\",\n \"}\",\n \"});\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some\n \"Object.defineProperty(Array.prototype, 'some',\",\n \"{configurable: true, writable: true, value:\",\n \"function(fun/*, thisArg*/) {\",\n \"if (!this || typeof fun !== 'function') throw TypeError();\",\n \"var t = Object(this);\",\n \"var len = t.length >>> 0;\",\n \"var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\",\n \"for (var i = 0; i < len; i++) {\",\n \"if (i in t && fun.call(thisArg, t[i], i, t)) {\",\n \"return true;\",\n \"}\",\n \"}\",\n \"return false;\",\n \"}\",\n \"});\",\n\n \"(function() {\",\n \"var sort_ = Array.prototype.sort;\",\n \"Array.prototype.sort = function(opt_comp) {\",\n // Fast native sort.\n \"if (typeof opt_comp !== 'function') {\",\n \"return sort_.call(this);\",\n \"}\",\n // Slow bubble sort.\n \"for (var i = 0; i < this.length; i++) {\",\n \"var changes = 0;\",\n \"for (var j = 0; j < this.length - i - 1; j++) {\",\n \"if (opt_comp(this[j], this[j + 1]) > 0) {\",\n \"var swap = this[j];\",\n \"this[j] = this[j + 1];\",\n \"this[j + 1] = swap;\",\n \"changes++;\",\n \"}\",\n \"}\",\n \"if (!changes) break;\",\n \"}\",\n \"return this;\",\n \"};\",\n \"})();\",\n\n \"Object.defineProperty(Array.prototype, 'toLocaleString',\",\n \"{configurable: true, writable: true, value:\",\n \"function() {\",\n \"var out = [];\",\n \"for (var i = 0; i < this.length; i++) {\",\n \"out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();\",\n \"}\",\n \"return out.join(',');\",\n \"}\",\n \"});\",\n \"\",\n );\n};\n\n/**\n * Initialize the String class.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initString = function (scope) {\n var thisInterpreter = this;\n var wrapper;\n // String constructor.\n wrapper = function (value) {\n value = String(value);\n if (thisInterpreter.calledWithNew()) {\n // Called as new String().\n this.data = value;\n return this;\n } else {\n // Called as String().\n return value;\n }\n };\n this.STRING = this.createNativeFunction(wrapper, true);\n this.setProperty(scope, \"String\", this.STRING);\n\n // Static methods on String.\n this.setProperty(\n this.STRING,\n \"fromCharCode\",\n this.createNativeFunction(String.fromCharCode, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n // Instance methods on String.\n // Methods with exclusively primitive arguments.\n var functions = [\n \"charAt\",\n \"charCodeAt\",\n \"concat\",\n \"indexOf\",\n \"lastIndexOf\",\n \"slice\",\n \"substr\",\n \"substring\",\n \"toLocaleLowerCase\",\n \"toLocaleUpperCase\",\n \"toLowerCase\",\n \"toUpperCase\",\n \"trim\",\n ];\n for (var i = 0; i < functions.length; i++) {\n this.setNativeFunctionPrototype(this.STRING, functions[i], String.prototype[functions[i]]);\n }\n\n wrapper = function (compareString, locales, options) {\n locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined;\n options = options ? thisInterpreter.pseudoToNative(options) : undefined;\n return String(this).localeCompare(compareString, locales, options);\n };\n this.setNativeFunctionPrototype(this.STRING, \"localeCompare\", wrapper);\n\n wrapper = function (separator, limit) {\n if (thisInterpreter.isa(separator, thisInterpreter.REGEXP)) {\n separator = separator.data;\n }\n var jsList = String(this).split(separator, limit);\n return thisInterpreter.arrayNativeToPseudo(jsList);\n };\n this.setNativeFunctionPrototype(this.STRING, \"split\", wrapper);\n\n wrapper = function (regexp) {\n if (thisInterpreter.isa(regexp, thisInterpreter.REGEXP)) {\n regexp = regexp.data;\n }\n var m = String(this).match(regexp);\n return m && thisInterpreter.arrayNativeToPseudo(m);\n };\n this.setNativeFunctionPrototype(this.STRING, \"match\", wrapper);\n\n wrapper = function (regexp) {\n if (thisInterpreter.isa(regexp, thisInterpreter.REGEXP)) {\n regexp = regexp.data;\n }\n return String(this).search(regexp);\n };\n this.setNativeFunctionPrototype(this.STRING, \"search\", wrapper);\n\n wrapper = function (substr, newSubstr) {\n // Support for function replacements is the responsibility of a polyfill.\n if (thisInterpreter.isa(substr, thisInterpreter.REGEXP)) {\n substr = substr.data;\n }\n return String(this).replace(substr, newSubstr);\n };\n this.setNativeFunctionPrototype(this.STRING, \"replace\", wrapper);\n // Add a polyfill to handle replace's second argument being a function.\n this.polyfills_.push(\n \"(function() {\",\n \"var replace_ = String.prototype.replace;\",\n \"String.prototype.replace = function(substr, newSubstr) {\",\n \"if (typeof newSubstr !== 'function') {\",\n // string.replace(string|regexp, string)\n \"return replace_.call(this, substr, newSubstr);\",\n \"}\",\n \"var str = this;\",\n \"if (substr instanceof RegExp) {\", // string.replace(regexp, function)\n \"var subs = [];\",\n \"var m = substr.exec(str);\",\n \"while (m) {\",\n \"m.push(m.index, str);\",\n \"var inject = newSubstr.apply(null, m);\",\n \"subs.push([m.index, m[0].length, inject]);\",\n \"m = substr.global ? substr.exec(str) : null;\",\n \"}\",\n \"for (var i = subs.length - 1; i >= 0; i--) {\",\n \"str = str.substring(0, subs[i][0]) + subs[i][2] + \" + \"str.substring(subs[i][0] + subs[i][1]);\",\n \"}\",\n \"} else {\", // string.replace(string, function)\n \"var i = str.indexOf(substr);\",\n \"if (i !== -1) {\",\n \"var inject = newSubstr(str.substr(i, substr.length), i, str);\",\n \"str = str.substring(0, i) + inject + \" + \"str.substring(i + substr.length);\",\n \"}\",\n \"}\",\n \"return str;\",\n \"};\",\n \"})();\",\n\n // Polyfill copied from:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n \"if (!String.prototype.endsWith) {\",\n \"String.prototype.endsWith = function(search, this_len) {\",\n \"if (this_len === undefined || this_len > this.length) {\",\n \"this_len = this.length;\",\n \"}\",\n \"return this.substring(this_len - search.length, this_len) === search;\",\n \"};\",\n \"}\",\n\n //Polyfill copied from:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n \"if (!String.prototype.includes) {\",\n \"String.prototype.includes = function(search, start) {\",\n \"'use strict';\",\n \"if (typeof start !== 'number') {\",\n \"start = 0;\",\n \"}\",\n \" \",\n \"if (start + search.length > this.length) {\",\n \"return false;\",\n \"} else {\",\n \"return this.indexOf(search, start) !== -1;\",\n \"}\",\n \"};\",\n \"}\",\n\n // Polyfill copied from:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n \"if (!String.prototype.startsWith) {\",\n \"String.prototype.startsWith = function(search, pos) {\",\n \"return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\",\n \"};\",\n \"}\",\n\n \"\",\n );\n};\n\n/**\n * Initialize the Boolean class.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initBoolean = function (scope) {\n var thisInterpreter = this;\n var wrapper;\n // Boolean constructor.\n wrapper = function (value) {\n value = Boolean(value);\n if (thisInterpreter.calledWithNew()) {\n // Called as new Boolean().\n this.data = value;\n return this;\n } else {\n // Called as Boolean().\n return value;\n }\n };\n this.BOOLEAN = this.createNativeFunction(wrapper, true);\n this.setProperty(scope, \"Boolean\", this.BOOLEAN);\n};\n\n/**\n * Initialize the Number class.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initNumber = function (scope) {\n var thisInterpreter = this;\n var wrapper;\n // Number constructor.\n wrapper = function (value) {\n value = Number(value);\n if (thisInterpreter.calledWithNew()) {\n // Called as new Number().\n this.data = value;\n return this;\n } else {\n // Called as Number().\n return value;\n }\n };\n this.NUMBER = this.createNativeFunction(wrapper, true);\n this.setProperty(scope, \"Number\", this.NUMBER);\n\n var numConsts = [\"MAX_VALUE\", \"MIN_VALUE\", \"NaN\", \"NEGATIVE_INFINITY\", \"POSITIVE_INFINITY\"];\n for (var i = 0; i < numConsts.length; i++) {\n this.setProperty(this.NUMBER, numConsts[i], Number[numConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n }\n\n // Instance methods on Number.\n wrapper = function (fractionDigits) {\n try {\n return Number(this).toExponential(fractionDigits);\n } catch (e) {\n // Throws if fractionDigits isn't within 0-20.\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toExponential\", wrapper);\n\n wrapper = function (digits) {\n try {\n return Number(this).toFixed(digits);\n } catch (e) {\n // Throws if digits isn't within 0-20.\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toFixed\", wrapper);\n\n wrapper = function (precision) {\n try {\n return Number(this).toPrecision(precision);\n } catch (e) {\n // Throws if precision isn't within range (depends on implementation).\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toPrecision\", wrapper);\n\n wrapper = function (radix) {\n try {\n return Number(this).toString(radix);\n } catch (e) {\n // Throws if radix isn't within 2-36.\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toString\", wrapper);\n\n wrapper = function (locales, options) {\n locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined;\n options = options ? thisInterpreter.pseudoToNative(options) : undefined;\n return Number(this).toLocaleString(locales, options);\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toLocaleString\", wrapper);\n};\n\n/**\n * Initialize the Date class.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initDate = function (scope) {\n var thisInterpreter = this;\n var wrapper;\n // Date constructor.\n wrapper = function (value, var_args) {\n if (!thisInterpreter.calledWithNew()) {\n // Called as Date().\n // Calling Date() as a function returns a string, no arguments are heeded.\n return Date();\n }\n // Called as new Date().\n var args = [null].concat(Array.from(arguments));\n this.data = new (Function.prototype.bind.apply(Date, args))();\n return this;\n };\n this.DATE = this.createNativeFunction(wrapper, true);\n this.DATE_PROTO = this.DATE.properties[\"prototype\"];\n this.setProperty(scope, \"Date\", this.DATE);\n\n // Static methods on Date.\n this.setProperty(this.DATE, \"now\", this.createNativeFunction(Date.now, false), Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n this.setProperty(\n this.DATE,\n \"parse\",\n this.createNativeFunction(Date.parse, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n\n this.setProperty(this.DATE, \"UTC\", this.createNativeFunction(Date.UTC, false), Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n // Instance methods on Date.\n var functions = [\n \"getDate\",\n \"getDay\",\n \"getFullYear\",\n \"getHours\",\n \"getMilliseconds\",\n \"getMinutes\",\n \"getMonth\",\n \"getSeconds\",\n \"getTime\",\n \"getTimezoneOffset\",\n \"getUTCDate\",\n \"getUTCDay\",\n \"getUTCFullYear\",\n \"getUTCHours\",\n \"getUTCMilliseconds\",\n \"getUTCMinutes\",\n \"getUTCMonth\",\n \"getUTCSeconds\",\n \"getYear\",\n \"setDate\",\n \"setFullYear\",\n \"setHours\",\n \"setMilliseconds\",\n \"setMinutes\",\n \"setMonth\",\n \"setSeconds\",\n \"setTime\",\n \"setUTCDate\",\n \"setUTCFullYear\",\n \"setUTCHours\",\n \"setUTCMilliseconds\",\n \"setUTCMinutes\",\n \"setUTCMonth\",\n \"setUTCSeconds\",\n \"setYear\",\n \"toDateString\",\n \"toISOString\",\n \"toJSON\",\n \"toGMTString\",\n \"toLocaleDateString\",\n \"toLocaleString\",\n \"toLocaleTimeString\",\n \"toTimeString\",\n \"toUTCString\",\n ];\n for (var i = 0; i < functions.length; i++) {\n wrapper = (function (nativeFunc) {\n return function (var_args) {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args[i] = thisInterpreter.pseudoToNative(arguments[i]);\n }\n return this.data[nativeFunc].apply(this.data, args);\n };\n })(functions[i]);\n this.setNativeFunctionPrototype(this.DATE, functions[i], wrapper);\n }\n};\n\n/**\n * Initialize Regular Expression object.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initRegExp = function (scope) {\n var thisInterpreter = this;\n var wrapper;\n // RegExp constructor.\n wrapper = function (pattern, flags) {\n if (thisInterpreter.calledWithNew()) {\n // Called as new RegExp().\n var rgx = this;\n } else {\n // Called as RegExp().\n var rgx = thisInterpreter.createObjectProto(thisInterpreter.REGEXP_PROTO);\n }\n pattern = pattern ? pattern.toString() : \"\";\n flags = flags ? flags.toString() : \"\";\n thisInterpreter.populateRegExp(rgx, new RegExp(pattern, flags));\n return rgx;\n };\n this.REGEXP = this.createNativeFunction(wrapper, true);\n this.REGEXP_PROTO = this.REGEXP.properties[\"prototype\"];\n this.setProperty(scope, \"RegExp\", this.REGEXP);\n\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"global\",\n undefined,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR,\n );\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"ignoreCase\",\n undefined,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR,\n );\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"multiline\",\n undefined,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR,\n );\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"source\",\n \"(?:)\",\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR,\n );\n\n wrapper = function (str) {\n return this.data.test(str);\n };\n this.setNativeFunctionPrototype(this.REGEXP, \"test\", wrapper);\n\n wrapper = function (str) {\n str = str.toString();\n // Get lastIndex from wrapped regex, since this is settable.\n this.data.lastIndex = Number(thisInterpreter.getProperty(this, \"lastIndex\"));\n var match = this.data.exec(str);\n thisInterpreter.setProperty(this, \"lastIndex\", this.data.lastIndex);\n\n if (match) {\n var result = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO);\n for (var i = 0; i < match.length; i++) {\n thisInterpreter.setProperty(result, i, match[i]);\n }\n // match has additional properties.\n thisInterpreter.setProperty(result, \"index\", match.index);\n thisInterpreter.setProperty(result, \"input\", match.input);\n return result;\n }\n return null;\n };\n this.setNativeFunctionPrototype(this.REGEXP, \"exec\", wrapper);\n};\n\n/**\n * Initialize the Error class.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initError = function (scope) {\n var thisInterpreter = this;\n // Error constructor.\n this.ERROR = this.createNativeFunction(function (opt_message) {\n if (thisInterpreter.calledWithNew()) {\n // Called as new Error().\n var newError = this;\n } else {\n // Called as Error().\n var newError = thisInterpreter.createObject(thisInterpreter.ERROR);\n }\n if (opt_message) {\n thisInterpreter.setProperty(newError, \"message\", String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR);\n }\n return newError;\n }, true);\n this.setProperty(scope, \"Error\", this.ERROR);\n this.setProperty(this.ERROR.properties[\"prototype\"], \"message\", \"\", Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.setProperty(this.ERROR.properties[\"prototype\"], \"name\", \"Error\", Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n var createErrorSubclass = function (name) {\n var constructor = thisInterpreter.createNativeFunction(function (opt_message) {\n if (thisInterpreter.calledWithNew()) {\n // Called as new XyzError().\n var newError = this;\n } else {\n // Called as XyzError().\n var newError = thisInterpreter.createObject(constructor);\n }\n if (opt_message) {\n thisInterpreter.setProperty(newError, \"message\", String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR);\n }\n return newError;\n }, true);\n thisInterpreter.setProperty(constructor, \"prototype\", thisInterpreter.createObject(thisInterpreter.ERROR));\n thisInterpreter.setProperty(\n constructor.properties[\"prototype\"],\n \"name\",\n name,\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n thisInterpreter.setProperty(scope, name, constructor);\n\n return constructor;\n };\n\n this.EVAL_ERROR = createErrorSubclass(\"EvalError\");\n this.RANGE_ERROR = createErrorSubclass(\"RangeError\");\n this.REFERENCE_ERROR = createErrorSubclass(\"ReferenceError\");\n this.SYNTAX_ERROR = createErrorSubclass(\"SyntaxError\");\n this.TYPE_ERROR = createErrorSubclass(\"TypeError\");\n this.URI_ERROR = createErrorSubclass(\"URIError\");\n};\n\n/**\n * Initialize Math object.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initMath = function (scope) {\n var thisInterpreter = this;\n var myMath = this.createObjectProto(this.OBJECT_PROTO);\n this.setProperty(scope, \"Math\", myMath);\n var mathConsts = [\"E\", \"LN2\", \"LN10\", \"LOG2E\", \"LOG10E\", \"PI\", \"SQRT1_2\", \"SQRT2\"];\n for (var i = 0; i < mathConsts.length; i++) {\n this.setProperty(myMath, mathConsts[i], Math[mathConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n }\n var numFunctions = [\n \"abs\",\n \"acos\",\n \"asin\",\n \"atan\",\n \"atan2\",\n \"ceil\",\n \"cos\",\n \"exp\",\n \"floor\",\n \"log\",\n \"max\",\n \"min\",\n \"pow\",\n \"random\",\n \"round\",\n \"sin\",\n \"sqrt\",\n \"tan\",\n ];\n for (var i = 0; i < numFunctions.length; i++) {\n this.setProperty(\n myMath,\n numFunctions[i],\n this.createNativeFunction(Math[numFunctions[i]], false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n }\n};\n\n/**\n * Initialize JSON object.\n * @param {!Interpreter.Object} scope Global scope.\n */\nInterpreter.prototype.initJSON = function (scope) {\n var thisInterpreter = this;\n var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO);\n this.setProperty(scope, \"JSON\", myJSON);\n\n var wrapper = function (text) {\n try {\n var nativeObj = JSON.parse(text.toString());\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message);\n }\n return thisInterpreter.nativeToPseudo(nativeObj);\n };\n this.setProperty(myJSON, \"parse\", this.createNativeFunction(wrapper, false));\n\n wrapper = function (value) {\n var nativeObj = thisInterpreter.pseudoToNative(value);\n try {\n var str = JSON.stringify(nativeObj);\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, e.message);\n }\n return str;\n };\n this.setProperty(myJSON, \"stringify\", this.createNativeFunction(wrapper, false));\n};\n\n/**\n * Is an object of a certain class?\n * @param {Interpreter.Value} child Object to check.\n * @param {Interpreter.Object} constructor Constructor of object.\n * @return {boolean} True if object is the class or inherits from it.\n * False otherwise.\n */\nInterpreter.prototype.isa = function (child, constructor) {\n if (child === null || child === undefined || !constructor) {\n return false;\n }\n var proto = constructor.properties[\"prototype\"];\n if (child === proto) {\n return true;\n }\n // The first step up the prototype chain is harder since the child might be\n // a primitive value. Subsequent steps can just follow the .proto property.\n child = this.getPrototype(child);\n while (child) {\n if (child === proto) {\n return true;\n }\n child = child.proto;\n }\n return false;\n};\n\n/**\n * Is a value a legal integer for an array length?\n * @param {Interpreter.Value} x Value to check.\n * @return {number} Zero, or a positive integer if the value can be\n * converted to such. NaN otherwise.\n */\nInterpreter.legalArrayLength = function (x) {\n var n = x >>> 0;\n // Array length must be between 0 and 2^32-1 (inclusive).\n return n === Number(x) ? n : NaN;\n};\n\n/**\n * Is a value a legal integer for an array index?\n * @param {Interpreter.Value} x Value to check.\n * @return {number} Zero, or a positive integer if the value can be\n * converted to such. NaN otherwise.\n */\nInterpreter.legalArrayIndex = function (x) {\n var n = x >>> 0;\n // Array index cannot be 2^32-1, otherwise length would be 2^32.\n // 0xffffffff is 2^32-1.\n return String(n) === String(x) && n !== 0xffffffff ? n : NaN;\n};\n\n/**\n * Typedef for JS values.\n * @typedef {!Interpreter.Object|boolean|number|string|undefined|null}\n */\nInterpreter.Value;\n\n/**\n * Class for an object.\n * @param {Interpreter.Object} proto Prototype object or null.\n * @constructor\n */\nInterpreter.Object = function (proto) {\n this.getter = Object.create(null);\n this.setter = Object.create(null);\n this.properties = Object.create(null);\n this.proto = proto;\n};\n\n/** @type {Interpreter.Object} */\nInterpreter.Object.prototype.proto = null;\n\n/** @type {boolean} */\nInterpreter.Object.prototype.isObject = true;\n\n/** @type {string} */\nInterpreter.Object.prototype.class = \"Object\";\n\n/** @type {Date|RegExp|boolean|number|string|undefined|null} */\nInterpreter.Object.prototype.data = null;\n\n/**\n * Convert this object into a string.\n * @return {string} String value.\n * @override\n */\nInterpreter.Object.prototype.toString = function () {\n if (this.class === \"Array\") {\n // Array\n var cycles = Interpreter.toStringCycles_;\n cycles.push(this);\n try {\n var strs = [];\n for (var i = 0; i < this.properties.length; i++) {\n var value = this.properties[i];\n strs[i] = value && value.isObject && cycles.indexOf(value) !== -1 ? \"...\" : value;\n }\n } finally {\n cycles.pop();\n }\n return strs.join(\",\");\n }\n if (this.class === \"Error\") {\n var cycles = Interpreter.toStringCycles_;\n if (cycles.indexOf(this) !== -1) {\n return \"[object Error]\";\n }\n var name, message;\n // Bug: Does not support getters and setters for name or message.\n var obj = this;\n do {\n if (\"name\" in obj.properties) {\n name = obj.properties[\"name\"];\n break;\n }\n } while ((obj = obj.proto));\n var obj = this;\n do {\n if (\"message\" in obj.properties) {\n message = obj.properties[\"message\"];\n break;\n }\n } while ((obj = obj.proto));\n cycles.push(this);\n try {\n name = name && name.toString();\n message = message && message.toString();\n } finally {\n cycles.pop();\n }\n return message ? name + \": \" + message : String(name);\n }\n\n // RegExp, Date, and boxed primitives.\n if (this.data !== null) {\n return String(this.data);\n }\n\n return \"[object \" + this.class + \"]\";\n};\n\n/**\n * Return the object's value.\n * @return {Interpreter.Value} Value.\n * @override\n */\nInterpreter.Object.prototype.valueOf = function () {\n if (this.data === undefined || this.data === null || this.data instanceof RegExp) {\n return this; // An Object.\n }\n if (this.data instanceof Date) {\n return this.data.valueOf(); // Milliseconds.\n }\n return /** @type {(boolean|number|string)} */ (this.data); // Boxed primitive.\n};\n\n/**\n * Create a new data object based on a constructor's prototype.\n * @param {Interpreter.Object} constructor Parent constructor function,\n * or null if scope object.\n * @return {!Interpreter.Object} New data object.\n */\nInterpreter.prototype.createObject = function (constructor) {\n return this.createObjectProto(constructor && constructor.properties[\"prototype\"]);\n};\n\n/**\n * Create a new data object based on a prototype.\n * @param {Interpreter.Object} proto Prototype object.\n * @return {!Interpreter.Object} New data object.\n */\nInterpreter.prototype.createObjectProto = function (proto) {\n if (typeof proto !== \"object\") {\n throw Error(\"Non object prototype\");\n }\n var obj = new Interpreter.Object(proto);\n // Functions have prototype objects.\n if (this.isa(obj, this.FUNCTION)) {\n this.setProperty(obj, \"prototype\", this.createObjectProto(this.OBJECT_PROTO || null));\n obj.class = \"Function\";\n }\n // Arrays have length.\n if (this.isa(obj, this.ARRAY)) {\n this.setProperty(obj, \"length\", 0, {\n configurable: false,\n enumerable: false,\n writable: true,\n });\n obj.class = \"Array\";\n }\n if (this.isa(obj, this.ERROR)) {\n obj.class = \"Error\";\n }\n return obj;\n};\n\n/**\n * Initialize a pseudo regular expression object based on a native regular\n * expression object.\n * @param {!Interpreter.Object} pseudoRegexp The existing object to set.\n * @param {!RegExp} nativeRegexp The native regular expression.\n */\nInterpreter.prototype.populateRegExp = function (pseudoRegexp, nativeRegexp) {\n pseudoRegexp.data = nativeRegexp;\n // lastIndex is settable, all others are read-only attributes\n this.setProperty(pseudoRegexp, \"lastIndex\", nativeRegexp.lastIndex, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.setProperty(pseudoRegexp, \"source\", nativeRegexp.source, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n this.setProperty(pseudoRegexp, \"global\", nativeRegexp.global, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n this.setProperty(pseudoRegexp, \"ignoreCase\", nativeRegexp.ignoreCase, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n this.setProperty(pseudoRegexp, \"multiline\", nativeRegexp.multiline, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n};\n\n/**\n * Create a new function.\n * @param {!Object} node AST node defining the function.\n * @param {!Object} scope Parent scope.\n * @return {!Interpreter.Object} New function.\n */\nInterpreter.prototype.createFunction = function (node, scope) {\n var func = this.createObjectProto(this.FUNCTION_PROTO);\n func.parentScope = scope;\n func.node = node;\n this.setProperty(func, \"length\", func.node[\"params\"].length, Interpreter.READONLY_DESCRIPTOR);\n return func;\n};\n\n/**\n * Create a new native function.\n * @param {!Function} nativeFunc JavaScript function.\n * @param {boolean=} opt_constructor If true, the function's\n * prototype will have its constructor property set to the function.\n * If false, the function cannot be called as a constructor (e.g. escape).\n * Defaults to undefined.\n * @return {!Interpreter.Object} New function.\n */\nInterpreter.prototype.createNativeFunction = function (nativeFunc, opt_constructor) {\n var func = this.createObjectProto(this.FUNCTION_PROTO);\n func.nativeFunc = nativeFunc;\n nativeFunc.id = this.functionCounter_++;\n this.setProperty(func, \"length\", nativeFunc.length, Interpreter.READONLY_DESCRIPTOR);\n if (opt_constructor) {\n this.setProperty(func.properties[\"prototype\"], \"constructor\", func, Interpreter.NONENUMERABLE_DESCRIPTOR);\n } else if (opt_constructor === false) {\n func.illegalConstructor = true;\n this.setProperty(func, \"prototype\", undefined);\n }\n return func;\n};\n\n/**\n * Create a new native asynchronous function.\n * @param {!Function} asyncFunc JavaScript function.\n * @return {!Interpreter.Object} New function.\n */\nInterpreter.prototype.createAsyncFunction = function (asyncFunc) {\n var func = this.createObjectProto(this.FUNCTION_PROTO);\n func.asyncFunc = asyncFunc;\n asyncFunc.id = this.functionCounter_++;\n this.setProperty(func, \"length\", asyncFunc.length, Interpreter.READONLY_DESCRIPTOR);\n return func;\n};\n\n/**\n * Converts from a native JS object or value to a JS interpreter object.\n * Can handle JSON-style values, does NOT handle cycles.\n * @param {*} nativeObj The native JS object to be converted.\n * @return {Interpreter.Value} The equivalent JS interpreter object.\n */\nInterpreter.prototype.nativeToPseudo = function (nativeObj) {\n if ((typeof nativeObj !== \"object\" && typeof nativeObj !== \"function\") || nativeObj === null) {\n return nativeObj;\n }\n\n if (nativeObj instanceof RegExp) {\n var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO);\n this.populateRegExp(pseudoRegexp, nativeObj);\n return pseudoRegexp;\n }\n\n if (nativeObj instanceof Date) {\n var pseudoDate = this.createObjectProto(this.DATE_PROTO);\n pseudoDate.data = nativeObj;\n return pseudoDate;\n }\n\n if (nativeObj instanceof Function) {\n var interpreter = this;\n var wrapper = function () {\n return interpreter.nativeToPseudo(\n nativeObj.apply(\n interpreter,\n Array.prototype.slice.call(arguments).map(function (i) {\n return interpreter.pseudoToNative(i);\n }),\n ),\n );\n };\n return this.createNativeFunction(wrapper, undefined);\n }\n\n var pseudoObj;\n if (Array.isArray(nativeObj)) {\n // Array.\n pseudoObj = this.createObjectProto(this.ARRAY_PROTO);\n for (var i = 0; i < nativeObj.length; i++) {\n if (i in nativeObj) {\n this.setProperty(pseudoObj, i, this.nativeToPseudo(nativeObj[i]));\n }\n }\n } else {\n // Object.\n pseudoObj = this.createObjectProto(this.OBJECT_PROTO);\n for (var key in nativeObj) {\n this.setProperty(pseudoObj, key, this.nativeToPseudo(nativeObj[key]));\n }\n }\n return pseudoObj;\n};\n\n/**\n * Converts from a JS interpreter object to native JS object.\n * Can handle JSON-style values, plus cycles.\n * @param {Interpreter.Value} pseudoObj The JS interpreter object to be\n * converted.\n * @param {Object=} opt_cycles Cycle detection (used in recursive calls).\n * @return {*} The equivalent native JS object or value.\n */\nInterpreter.prototype.pseudoToNative = function (pseudoObj, opt_cycles) {\n if ((typeof pseudoObj !== \"object\" && typeof pseudoObj !== \"function\") || pseudoObj === null) {\n return pseudoObj;\n }\n\n if (this.isa(pseudoObj, this.REGEXP)) {\n // Regular expression.\n return pseudoObj.data;\n }\n\n if (this.isa(pseudoObj, this.DATE)) {\n // Date.\n return pseudoObj.data;\n }\n\n var cycles = opt_cycles || {\n pseudo: [],\n native: [],\n };\n var i = cycles.pseudo.indexOf(pseudoObj);\n if (i !== -1) {\n return cycles.native[i];\n }\n cycles.pseudo.push(pseudoObj);\n var nativeObj;\n if (this.isa(pseudoObj, this.ARRAY)) {\n // Array.\n nativeObj = [];\n cycles.native.push(nativeObj);\n var length = this.getProperty(pseudoObj, \"length\");\n for (var i = 0; i < length; i++) {\n if (this.hasProperty(pseudoObj, i)) {\n nativeObj[i] = this.pseudoToNative(this.getProperty(pseudoObj, i), cycles);\n }\n }\n } else {\n // Object.\n nativeObj = {};\n cycles.native.push(nativeObj);\n var val;\n for (var key in pseudoObj.properties) {\n val = pseudoObj.properties[key];\n nativeObj[key] = this.pseudoToNative(val, cycles);\n }\n }\n cycles.pseudo.pop();\n cycles.native.pop();\n return nativeObj;\n};\n\n/**\n * Converts from a native JS array to a JS interpreter array.\n * Does handle non-numeric properties (like str.match's index prop).\n * Does NOT recurse into the array's contents.\n * @param {!Array} nativeArray The JS array to be converted.\n * @return {!Interpreter.Object} The equivalent JS interpreter array.\n */\nInterpreter.prototype.arrayNativeToPseudo = function (nativeArray) {\n var pseudoArray = this.createObjectProto(this.ARRAY_PROTO);\n var props = Object.getOwnPropertyNames(nativeArray);\n for (var i = 0; i < props.length; i++) {\n this.setProperty(pseudoArray, props[i], nativeArray[props[i]]);\n }\n return pseudoArray;\n};\n\n/**\n * Converts from a JS interpreter array to native JS array.\n * Does handle non-numeric properties (like str.match's index prop).\n * Does NOT recurse into the array's contents.\n * @param {!Interpreter.Object} pseudoArray The JS interpreter array,\n * or JS interpreter object pretending to be an array.\n * @return {!Array} The equivalent native JS array.\n */\nInterpreter.prototype.arrayPseudoToNative = function (pseudoArray) {\n var nativeArray = [];\n for (var key in pseudoArray.properties) {\n nativeArray[key] = this.getProperty(pseudoArray, key);\n }\n // pseudoArray might be an object pretending to be an array. In this case\n // it's possible that length is non-existent, invalid, or smaller than the\n // largest defined numeric property. Set length explicitly here.\n nativeArray.length = Interpreter.legalArrayLength(this.getProperty(pseudoArray, \"length\")) || 0;\n return nativeArray;\n};\n\n/**\n * Look up the prototype for this value.\n * @param {Interpreter.Value} value Data object.\n * @return {Interpreter.Object} Prototype object, null if none.\n */\nInterpreter.prototype.getPrototype = function (value) {\n switch (typeof value) {\n case \"number\":\n return this.NUMBER.properties[\"prototype\"];\n case \"boolean\":\n return this.BOOLEAN.properties[\"prototype\"];\n case \"string\":\n return this.STRING.properties[\"prototype\"];\n }\n if (value) {\n return value.proto;\n }\n return null;\n};\n\n/**\n * Fetch a property value from a data object.\n * @param {Interpreter.Value} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @param {Acorn AST Node} node Node that triggered this function. Used by Bitburner for getting error line numbers\n * @return {Interpreter.Value} Property value (may be undefined).\n */\nInterpreter.prototype.getProperty = function (obj, name, node) {\n name = String(name);\n if (obj === undefined || obj === null) {\n let lineNum;\n if (node != null && node.loc != null && node.loc.start != null) {\n lineNum = node.loc.start.line;\n }\n this.throwException(this.TYPE_ERROR, \"Cannot read property '\" + name + \"' of \" + obj, lineNum);\n }\n if (name === \"length\") {\n // Special cases for magic length property.\n if (this.isa(obj, this.STRING)) {\n return String(obj).length;\n }\n } else if (name.charCodeAt(0) < 0x40) {\n // Might have numbers in there?\n // Special cases for string array indexing\n if (this.isa(obj, this.STRING)) {\n var n = Interpreter.legalArrayIndex(name);\n if (!isNaN(n) && n < String(obj).length) {\n return String(obj)[n];\n }\n }\n }\n do {\n if (obj.properties && name in obj.properties) {\n var getter = obj.getter[name];\n if (getter) {\n // Flag this function as being a getter and thus needing immediate\n // execution (rather than being the value of the property).\n getter.isGetter = true;\n return getter;\n }\n return obj.properties[name];\n }\n } while ((obj = this.getPrototype(obj)));\n return undefined;\n};\n\n/**\n * Does the named property exist on a data object.\n * @param {Interpreter.Value} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @return {boolean} True if property exists.\n */\nInterpreter.prototype.hasProperty = function (obj, name) {\n if (!obj.isObject) {\n throw TypeError(\"Primitive data type has no properties\");\n }\n name = String(name);\n if (name === \"length\" && this.isa(obj, this.STRING)) {\n return true;\n }\n if (this.isa(obj, this.STRING)) {\n var n = Interpreter.legalArrayIndex(name);\n if (!isNaN(n) && n < String(obj).length) {\n return true;\n }\n }\n do {\n if (obj.properties && name in obj.properties) {\n return true;\n }\n } while ((obj = this.getPrototype(obj)));\n return false;\n};\n\n/**\n * Set a property value on a data object.\n * @param {!Interpreter.Object} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @param {Interpreter.Value} value New property value.\n * Use Interpreter.VALUE_IN_DESCRIPTOR if value is handled by\n * descriptor instead.\n * @param {Object=} opt_descriptor Optional descriptor object.\n * @return {!Interpreter.Object|undefined} Returns a setter function if one\n * needs to be called, otherwise undefined.\n */\nInterpreter.prototype.setProperty = function (obj, name, value, opt_descriptor) {\n name = String(name);\n if (obj === undefined || obj === null) {\n this.throwException(this.TYPE_ERROR, \"Cannot set property '\" + name + \"' of \" + obj);\n }\n if (\n opt_descriptor &&\n (\"get\" in opt_descriptor || \"set\" in opt_descriptor) &&\n (\"value\" in opt_descriptor || \"writable\" in opt_descriptor)\n ) {\n this.throwException(\n this.TYPE_ERROR,\n \"Invalid property descriptor. \" + \"Cannot both specify accessors and a value or writable attribute\",\n );\n }\n var strict = !this.stateStack || this.getScope().strict;\n if (!obj.isObject) {\n if (strict) {\n this.throwException(this.TYPE_ERROR, \"Can't create property '\" + name + \"' on '\" + obj + \"'\");\n }\n return;\n }\n if (this.isa(obj, this.STRING)) {\n var n = Interpreter.legalArrayIndex(name);\n if (name === \"length\" || (!isNaN(n) && n < String(obj).length)) {\n // Can't set length or letters on String objects.\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot assign to read only \" + \"property '\" + name + \"' of String '\" + obj.data + \"'\",\n );\n }\n return;\n }\n }\n if (obj.class === \"Array\") {\n // Arrays have a magic length variable that is bound to the elements.\n var length = obj.properties.length;\n var i;\n if (name === \"length\") {\n // Delete elements if length is smaller.\n if (opt_descriptor) {\n if (!(\"value\" in opt_descriptor)) {\n return;\n }\n value = opt_descriptor.value;\n }\n value = Interpreter.legalArrayLength(value);\n if (isNaN(value)) {\n this.throwException(this.RANGE_ERROR, \"Invalid array length\");\n }\n if (value < length) {\n for (i in obj.properties) {\n i = Interpreter.legalArrayIndex(i);\n if (!isNaN(i) && value <= i) {\n delete obj.properties[i];\n }\n }\n }\n } else if (!isNaN((i = Interpreter.legalArrayIndex(name)))) {\n // Increase length if this index is larger.\n obj.properties.length = Math.max(length, i + 1);\n }\n }\n if (obj.preventExtensions && !(name in obj.properties)) {\n if (strict) {\n this.throwException(this.TYPE_ERROR, \"Can't add property '\" + name + \"', object is not extensible\");\n }\n return;\n }\n if (opt_descriptor) {\n // Define the property.\n if (\"get\" in opt_descriptor) {\n if (opt_descriptor.get) {\n obj.getter[name] = opt_descriptor.get;\n } else {\n delete obj.getter[name];\n }\n }\n if (\"set\" in opt_descriptor) {\n if (opt_descriptor.set) {\n obj.setter[name] = opt_descriptor.set;\n } else {\n delete obj.setter[name];\n }\n }\n var descriptor = {};\n if (\"configurable\" in opt_descriptor) {\n descriptor.configurable = opt_descriptor.configurable;\n }\n if (\"enumerable\" in opt_descriptor) {\n descriptor.enumerable = opt_descriptor.enumerable;\n }\n if (\"writable\" in opt_descriptor) {\n descriptor.writable = opt_descriptor.writable;\n delete obj.getter[name];\n delete obj.setter[name];\n }\n if (\"value\" in opt_descriptor) {\n descriptor.value = opt_descriptor.value;\n delete obj.getter[name];\n delete obj.setter[name];\n } else if (value !== Interpreter.VALUE_IN_DESCRIPTOR) {\n descriptor.value = value;\n delete obj.getter[name];\n delete obj.setter[name];\n }\n try {\n Object.defineProperty(obj.properties, name, descriptor);\n } catch (e) {\n this.throwException(this.TYPE_ERROR, \"Cannot redefine property: \" + name);\n }\n } else {\n // Set the property.\n if (value === Interpreter.VALUE_IN_DESCRIPTOR) {\n throw ReferenceError(\"Value not specified.\");\n }\n // Determine the parent (possibly self) where the property is defined.\n var defObj = obj;\n while (!(name in defObj.properties)) {\n defObj = this.getPrototype(defObj);\n if (!defObj) {\n // This is a new property.\n defObj = obj;\n break;\n }\n }\n if (defObj.setter && defObj.setter[name]) {\n return defObj.setter[name];\n }\n if (defObj.getter && defObj.getter[name]) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot set property '\" + name + \"' of object '\" + obj + \"' which only has a getter\",\n );\n }\n } else {\n // No setter, simple assignment.\n try {\n obj.properties[name] = value;\n } catch (e) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot assign to read only \" + \"property '\" + name + \"' of object '\" + obj + \"'\",\n );\n }\n }\n }\n }\n};\n\n/**\n * Convenience method for adding a native function as a non-enumerable property\n * onto an object's prototype.\n * @param {!Interpreter.Object} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @param {!Function} wrapper Function object.\n */\nInterpreter.prototype.setNativeFunctionPrototype = function (obj, name, wrapper) {\n this.setProperty(\n obj.properties[\"prototype\"],\n name,\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR,\n );\n};\n\n/**\n * Returns the current scope from the stateStack.\n * @return {!Interpreter.Object} Current scope dictionary.\n */\nInterpreter.prototype.getScope = function () {\n var scope = this.stateStack[this.stateStack.length - 1].scope;\n if (!scope) {\n throw Error(\"No scope found.\");\n }\n return scope;\n};\n\n/**\n * Create a new scope dictionary.\n * @param {!Object} node AST node defining the scope container\n * (e.g. a function).\n * @param {Interpreter.Object} parentScope Scope to link to.\n * @return {!Interpreter.Object} New scope.\n */\nInterpreter.prototype.createScope = function (node, parentScope) {\n var scope = this.createObjectProto(null);\n scope.parentScope = parentScope;\n if (!parentScope) {\n this.initGlobalScope(scope);\n }\n this.populateScope_(node, scope);\n\n // Determine if this scope starts with 'use strict'.\n scope.strict = false;\n if (parentScope && parentScope.strict) {\n scope.strict = true;\n } else {\n var firstNode = node[\"body\"] && node[\"body\"][0];\n if (\n firstNode &&\n firstNode.expression &&\n firstNode.expression[\"type\"] === \"Literal\" &&\n firstNode.expression.value === \"use strict\"\n ) {\n scope.strict = true;\n }\n }\n return scope;\n};\n\n/**\n * Create a new special scope dictionary. Similar to createScope(), but\n * doesn't assume that the scope is for a function body.\n * This is used for 'catch' clauses and 'with' statements.\n * @param {!Interpreter.Object} parentScope Scope to link to.\n * @param {Interpreter.Object=} opt_scope Optional object to transform into\n * scope.\n * @return {!Interpreter.Object} New scope.\n */\nInterpreter.prototype.createSpecialScope = function (parentScope, opt_scope) {\n if (!parentScope) {\n throw Error(\"parentScope required\");\n }\n var scope = opt_scope || this.createObjectProto(null);\n scope.parentScope = parentScope;\n scope.strict = parentScope.strict;\n return scope;\n};\n\n/**\n * Retrieves a value from the scope chain.\n * @param {string} name Name of variable.\n * @param {Acorn AST Node} node Node that triggered this function. Used by Bitburner for getting error line number\n * @return {Interpreter.Value} Any value.\n * May be flagged as being a getter and thus needing immediate execution\n * (rather than being the value of the property).\n */\nInterpreter.prototype.getValueFromScope = function (name, node) {\n var scope = this.getScope();\n while (scope && scope !== this.global) {\n if (name in scope.properties) {\n return scope.properties[name];\n }\n scope = scope.parentScope;\n }\n // The root scope is also an object which has inherited properties and\n // could also have getters.\n if (scope === this.global && this.hasProperty(scope, name)) {\n return this.getProperty(scope, name);\n }\n // Typeof operator is unique: it can safely look at non-defined variables.\n var prevNode = this.stateStack[this.stateStack.length - 1].node;\n if (prevNode[\"type\"] === \"UnaryExpression\" && prevNode[\"operator\"] === \"typeof\") {\n return undefined;\n }\n\n var lineNum;\n if (node != null && node.loc != null && node.loc.start != null) {\n lineNum = node.loc.start.line;\n }\n this.throwException(this.REFERENCE_ERROR, name + \" is not defined\", lineNum);\n};\n\n/**\n * Sets a value to the current scope.\n * @param {string} name Name of variable.\n * @param {Interpreter.Value} value Value.\n * @return {!Interpreter.Object|undefined} Returns a setter function if one\n * needs to be called, otherwise undefined.\n */\nInterpreter.prototype.setValueToScope = function (name, value) {\n var scope = this.getScope();\n var strict = scope.strict;\n while (scope && scope !== this.global) {\n if (name in scope.properties) {\n scope.properties[name] = value;\n return undefined;\n }\n scope = scope.parentScope;\n }\n // The root scope is also an object which has readonly properties and\n // could also have setters.\n if (scope === this.global && (!strict || this.hasProperty(scope, name))) {\n return this.setProperty(scope, name, value);\n }\n this.throwException(this.REFERENCE_ERROR, name + \" is not defined\");\n};\n\n/**\n * Create a new scope for the given node.\n * @param {!Object} node AST node (program or function).\n * @param {!Interpreter.Object} scope Scope dictionary to populate.\n * @private\n */\nInterpreter.prototype.populateScope_ = function (node, scope) {\n if (node[\"type\"] === \"VariableDeclaration\") {\n for (var i = 0; i < node[\"declarations\"].length; i++) {\n this.setProperty(scope, node[\"declarations\"][i][\"id\"][\"name\"], undefined, Interpreter.VARIABLE_DESCRIPTOR);\n }\n } else if (node[\"type\"] === \"FunctionDeclaration\") {\n this.setProperty(scope, node[\"id\"][\"name\"], this.createFunction(node, scope), Interpreter.VARIABLE_DESCRIPTOR);\n return; // Do not recurse into function.\n } else if (node[\"type\"] === \"FunctionExpression\") {\n return; // Do not recurse into function.\n } else if (node[\"type\"] === \"ExpressionStatement\") {\n return; // Expressions can't contain variable/function declarations.\n }\n var nodeClass = node[\"constructor\"];\n for (var name in node) {\n var prop = node[name];\n if (prop && typeof prop === \"object\") {\n if (Array.isArray(prop)) {\n for (var i = 0; i < prop.length; i++) {\n if (prop[i] && prop[i].constructor === nodeClass) {\n this.populateScope_(prop[i], scope);\n }\n }\n } else {\n if (prop.constructor === nodeClass) {\n this.populateScope_(prop, scope);\n }\n }\n }\n }\n};\n\n/**\n * Remove start and end values from AST, or set start and end values to a\n * constant value. Used to remove highlighting from polyfills and to set\n * highlighting in an eval to cover the entire eval expression.\n * @param {!Object} node AST node.\n * @param {number=} start Starting character of all nodes, or undefined.\n * @param {number=} end Ending character of all nodes, or undefined.\n * @private\n */\nInterpreter.prototype.stripLocations_ = function (node, start, end) {\n if (start) {\n node[\"start\"] = start;\n } else {\n delete node[\"start\"];\n }\n if (end) {\n node[\"end\"] = end;\n } else {\n delete node[\"end\"];\n }\n for (var name in node) {\n if (node.hasOwnProperty(name)) {\n var prop = node[name];\n if (prop && typeof prop === \"object\") {\n this.stripLocations_(prop, start, end);\n }\n }\n }\n};\n\n/**\n * Is the current state directly being called with as a construction with 'new'.\n * @return {boolean} True if 'new foo()', false if 'foo()'.\n */\nInterpreter.prototype.calledWithNew = function () {\n return this.stateStack[this.stateStack.length - 1].isConstructor;\n};\n\n/**\n * Gets a value from the scope chain or from an object property.\n * @param {!Array} ref Name of variable or object/propname tuple.\n * @param {Acorn AST Node} node Node that triggered this function. Used by Bitburner for getting error line number\n * @return {Interpreter.Value} Any value.\n * May be flagged as being a getter and thus needing immediate execution\n * (rather than being the value of the property).\n */\nInterpreter.prototype.getValue = function (ref, node) {\n if (ref[0] === Interpreter.SCOPE_REFERENCE) {\n // A null/varname variable lookup.\n return this.getValueFromScope(ref[1], node);\n } else {\n // An obj/prop components tuple (foo.bar).\n return this.getProperty(ref[0], ref[1], node);\n }\n};\n\n/**\n * Sets a value to the scope chain or to an object property.\n * @param {!Array} ref Name of variable or object/propname tuple.\n * @param {Interpreter.Value} value Value.\n * @return {!Interpreter.Object|undefined} Returns a setter function if one\n * needs to be called, otherwise undefined.\n */\nInterpreter.prototype.setValue = function (ref, value) {\n if (ref[0] === Interpreter.SCOPE_REFERENCE) {\n // A null/varname variable lookup.\n return this.setValueToScope(ref[1], value);\n } else {\n // An obj/prop components tuple (foo.bar).\n return this.setProperty(ref[0], ref[1], value);\n }\n};\n\n/**\n * Completion Value Types.\n * @enum {number}\n */\nInterpreter.Completion = {\n NORMAL: 0,\n BREAK: 1,\n CONTINUE: 2,\n RETURN: 3,\n THROW: 4,\n};\n\n/**\n * Throw an exception in the interpreter that can be handled by an\n * interpreter try/catch statement. If unhandled, a real exception will\n * be thrown. Can be called with either an error class and a message, or\n * with an actual object to be thrown.\n * @param {!Interpreter.Object} errorClass Type of error (if message is\n * provided) or the value to throw (if no message).\n * @param {string=} opt_message Message being thrown.\n */\nInterpreter.prototype.throwException = function (errorClass, opt_message, lineNumber) {\n if (opt_message === undefined) {\n var error = errorClass; // This is a value to throw, not an error class.\n } else {\n var error = this.createObject(errorClass);\n this.setProperty(error, \"message\", opt_message, Interpreter.NONENUMERABLE_DESCRIPTOR);\n }\n var lineNumErrorMsg;\n if (lineNumber != null) {\n lineNumErrorMsg = this.getErrorLineNumberMessage(lineNumber);\n }\n this.unwind(Interpreter.Completion.THROW, error, undefined, lineNumErrorMsg);\n // Abort anything related to the current step.\n throw Interpreter.STEP_ERROR;\n};\n\n/**\n * Unwind the stack to the innermost relevant enclosing TryStatement,\n * For/ForIn/WhileStatement or Call/NewExpression. If this results in\n * the stack being completely unwound the thread will be terminated\n * and the appropriate error being thrown.\n * @param {Interpreter.Completion} type Completion type.\n * @param {Interpreter.Value=} value Value computed, returned or thrown.\n * @param {string=} label Target label for break or return.\n */\nInterpreter.prototype.unwind = function (type, value, label, lineNumberMsg = \"\") {\n if (type === Interpreter.Completion.NORMAL) {\n throw TypeError(\"Should not unwind for NORMAL completions\");\n }\n\n for (var stack = this.stateStack; stack.length > 0; stack.pop()) {\n var state = stack[stack.length - 1];\n switch (state.node[\"type\"]) {\n case \"TryStatement\":\n state.cv = { type: type, value: value, label: label };\n return;\n case \"CallExpression\":\n case \"NewExpression\":\n if (type === Interpreter.Completion.RETURN) {\n state.value = value;\n return;\n } else if (type !== Interpreter.Completion.THROW) {\n throw Error(\"Unsynatctic break/continue not rejected by Acorn\");\n }\n }\n if (type === Interpreter.Completion.BREAK) {\n if (label ? state.labels && state.labels.indexOf(label) !== -1 : state.isLoop || state.isSwitch) {\n stack.pop();\n return;\n }\n } else if (type === Interpreter.Completion.CONTINUE) {\n if (label ? state.labels && state.labels.indexOf(label) !== -1 : state.isLoop) {\n return;\n }\n }\n }\n\n // Unhandled completion. Throw a real error.\n var realError;\n if (this.isa(value, this.ERROR)) {\n var errorTable = {\n EvalError: EvalError,\n RangeError: RangeError,\n ReferenceError: ReferenceError,\n SyntaxError: SyntaxError,\n TypeError: TypeError,\n URIError: URIError,\n };\n var name = this.getProperty(value, \"name\").toString();\n var message = this.getProperty(value, \"message\").valueOf();\n var type = errorTable[name] || Error;\n realError = type(message + lineNumberMsg);\n } else {\n realError = String(value) + lineNumberMsg;\n }\n throw realError;\n};\n\n/**\n * Create a call to a getter function.\n * @param {!Interpreter.Object} func Function to execute.\n * @param {!Interpreter.Object|!Array} left\n * Name of variable or object/propname tuple.\n * @private\n */\nInterpreter.prototype.createGetter_ = function (func, left) {\n // Normally 'this' will be specified as the object component (o.x).\n // Sometimes 'this' is explicitly provided (o).\n var funcThis = Array.isArray(left) ? left[0] : left;\n var node = new this.nodeConstructor();\n node[\"type\"] = \"CallExpression\";\n var state = new Interpreter.State(node, this.stateStack[this.stateStack.length - 1].scope);\n state.doneCallee_ = true;\n state.funcThis_ = funcThis;\n state.func_ = func;\n state.doneArgs_ = true;\n state.arguments_ = [];\n return state;\n};\n\n/**\n * Create a call to a setter function.\n * @param {!Interpreter.Object} func Function to execute.\n * @param {!Interpreter.Object|!Array} left\n * Name of variable or object/propname tuple.\n * @param {Interpreter.Value} value Value to set.\n * @private\n */\nInterpreter.prototype.createSetter_ = function (func, left, value) {\n // Normally 'this' will be specified as the object component (o.x).\n // Sometimes 'this' is implicitly the global object (x).\n var funcThis = Array.isArray(left) ? left[0] : this.global;\n var node = new this.nodeConstructor();\n node[\"type\"] = \"CallExpression\";\n var state = new Interpreter.State(node, this.stateStack[this.stateStack.length - 1].scope);\n state.doneCallee_ = true;\n state.funcThis_ = funcThis;\n state.func_ = func;\n state.doneArgs_ = true;\n state.arguments_ = [value];\n return state;\n};\n\n/**\n * Class for a state.\n * @param {!Object} node AST node for the state.\n * @param {!Interpreter.Object} scope Scope object for the state.\n * @constructor\n */\nInterpreter.State = function (node, scope) {\n this.node = node;\n this.scope = scope;\n};\n\n///////////////////////////////////////////////////////////////////////////////\n// Functions to handle each node type.\n///////////////////////////////////////////////////////////////////////////////\n\nInterpreter.prototype[\"stepArrayExpression\"] = function (stack, state, node) {\n var elements = node[\"elements\"];\n var n = state.n_ || 0;\n if (!state.array_) {\n state.array_ = this.createObjectProto(this.ARRAY_PROTO);\n state.array_.properties.length = elements.length;\n } else {\n this.setProperty(state.array_, n, state.value);\n n++;\n }\n while (n < elements.length) {\n // Skip missing elements - they're not defined, not undefined.\n if (elements[n]) {\n state.n_ = n;\n return new Interpreter.State(elements[n], state.scope);\n }\n n++;\n }\n stack.pop();\n stack[stack.length - 1].value = state.array_;\n};\n\nInterpreter.prototype[\"stepAssignmentExpression\"] = function (stack, state, node) {\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n var nextState = new Interpreter.State(node[\"left\"], state.scope);\n nextState.components = true;\n return nextState;\n }\n if (!state.doneRight_) {\n if (!state.leftReference_) {\n state.leftReference_ = state.value;\n }\n if (state.doneGetter_) {\n state.leftValue_ = state.value;\n }\n if (!state.doneGetter_ && node[\"operator\"] !== \"=\") {\n var leftValue = this.getValue(state.leftReference_, node);\n state.leftValue_ = leftValue;\n if (leftValue && typeof leftValue === \"object\" && leftValue.isGetter) {\n // Clear the getter flag and call the getter function.\n leftValue.isGetter = false;\n state.doneGetter_ = true;\n var func = /** @type {!Interpreter.Object} */ (leftValue);\n return this.createGetter_(func, state.leftReference_);\n }\n }\n state.doneRight_ = true;\n return new Interpreter.State(node[\"right\"], state.scope);\n }\n if (state.doneSetter_) {\n // Return if setter function.\n // Setter method on property has completed.\n // Ignore its return value, and use the original set value instead.\n stack.pop();\n stack[stack.length - 1].value = state.setterValue_;\n return;\n }\n var value = state.leftValue_;\n var rightValue = state.value;\n switch (node[\"operator\"]) {\n case \"=\":\n value = rightValue;\n break;\n case \"+=\":\n value += rightValue;\n break;\n case \"-=\":\n value -= rightValue;\n break;\n case \"*=\":\n value *= rightValue;\n break;\n case \"/=\":\n value /= rightValue;\n break;\n case \"%=\":\n value %= rightValue;\n break;\n case \"<<=\":\n value <<= rightValue;\n break;\n case \">>=\":\n value >>= rightValue;\n break;\n case \">>>=\":\n value >>>= rightValue;\n break;\n case \"&=\":\n value &= rightValue;\n break;\n case \"^=\":\n value ^= rightValue;\n break;\n case \"|=\":\n value |= rightValue;\n break;\n default:\n throw SyntaxError(\"Unknown assignment expression: \" + node[\"operator\"]);\n }\n var setter = this.setValue(state.leftReference_, value);\n if (setter) {\n state.doneSetter_ = true;\n state.setterValue_ = value;\n return this.createSetter_(setter, state.leftReference_, value);\n }\n // Return if no setter function.\n stack.pop();\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepBinaryExpression\"] = function (stack, state, node) {\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n return new Interpreter.State(node[\"left\"], state.scope);\n }\n if (!state.doneRight_) {\n state.doneRight_ = true;\n state.leftValue_ = state.value;\n return new Interpreter.State(node[\"right\"], state.scope);\n }\n stack.pop();\n var leftValue = state.leftValue_;\n var rightValue = state.value;\n var value;\n switch (node[\"operator\"]) {\n case \"==\":\n value = leftValue == rightValue;\n break;\n case \"!=\":\n value = leftValue != rightValue;\n break;\n case \"===\":\n value = leftValue === rightValue;\n break;\n case \"!==\":\n value = leftValue !== rightValue;\n break;\n case \">\":\n value = leftValue > rightValue;\n break;\n case \">=\":\n value = leftValue >= rightValue;\n break;\n case \"<\":\n value = leftValue < rightValue;\n break;\n case \"<=\":\n value = leftValue <= rightValue;\n break;\n case \"+\":\n value = leftValue + rightValue;\n break;\n case \"-\":\n value = leftValue - rightValue;\n break;\n case \"*\":\n value = leftValue * rightValue;\n break;\n case \"/\":\n value = leftValue / rightValue;\n break;\n case \"%\":\n value = leftValue % rightValue;\n break;\n case \"&\":\n value = leftValue & rightValue;\n break;\n case \"|\":\n value = leftValue | rightValue;\n break;\n case \"^\":\n value = leftValue ^ rightValue;\n break;\n case \"<<\":\n value = leftValue << rightValue;\n break;\n case \">>\":\n value = leftValue >> rightValue;\n break;\n case \">>>\":\n value = leftValue >>> rightValue;\n break;\n case \"in\":\n if (!rightValue || !rightValue.isObject) {\n let lineNum = this.getErrorLineNumber(node);\n this.throwException(this.TYPE_ERROR, \"'in' expects an object, not '\" + rightValue + \"'\", lineNum);\n }\n value = this.hasProperty(rightValue, leftValue);\n break;\n case \"instanceof\":\n if (!this.isa(rightValue, this.FUNCTION)) {\n let lineNum = this.getErrorLineNumber(node);\n this.throwException(this.TYPE_ERROR, \"Right-hand side of instanceof is not an object\", lineNum);\n }\n value = leftValue.isObject ? this.isa(leftValue, rightValue) : false;\n break;\n default:\n throw SyntaxError(\"Unknown binary operator: \" + node[\"operator\"]);\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepBlockStatement\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var expression = node[\"body\"][n];\n if (expression) {\n state.n_ = n + 1;\n return new Interpreter.State(expression, state.scope);\n }\n stack.pop();\n};\n\nInterpreter.prototype[\"stepBreakStatement\"] = function (stack, state, node) {\n var label = node[\"label\"] && node[\"label\"][\"name\"];\n this.unwind(Interpreter.Completion.BREAK, undefined, label);\n};\n\nInterpreter.prototype[\"stepCallExpression\"] = function (stack, state, node) {\n if (!state.doneCallee_) {\n state.doneCallee_ = 1;\n // Components needed to determine value of 'this'.\n var nextState = new Interpreter.State(node[\"callee\"], state.scope);\n nextState.components = true;\n return nextState;\n }\n if (state.doneCallee_ === 1) {\n // Determine value of the function.\n state.doneCallee_ = 2;\n var func = state.value;\n if (Array.isArray(func)) {\n state.func_ = this.getValue(func, node);\n if (func[0] === Interpreter.SCOPE_REFERENCE) {\n // (Globally or locally) named function. Is it named 'eval'?\n state.directEval_ = func[1] === \"eval\";\n } else {\n // Method function, 'this' is object (ignored if invoked as 'new').\n state.funcThis_ = func[0];\n }\n func = state.func_;\n if (func && typeof func === \"object\" && func.isGetter) {\n // Clear the getter flag and call the getter function.\n func.isGetter = false;\n state.doneCallee_ = 1;\n return this.createGetter_(/** @type {!Interpreter.Object} */ (func), state.value);\n }\n } else {\n // Already evaluated function: (function(){...})();\n state.func_ = func;\n }\n state.arguments_ = [];\n state.n_ = 0;\n }\n var func = state.func_;\n if (!state.doneArgs_) {\n if (state.n_ !== 0) {\n state.arguments_.push(state.value);\n }\n if (node[\"arguments\"][state.n_]) {\n return new Interpreter.State(node[\"arguments\"][state.n_++], state.scope);\n }\n // Determine value of 'this' in function.\n if (node[\"type\"] === \"NewExpression\") {\n if (func.illegalConstructor) {\n // Illegal: new escape();\n let lineNum = this.getErrorLineNumber(node);\n this.throwException(this.TYPE_ERROR, func + \" is not a constructor\", lineNum);\n }\n // Constructor, 'this' is new object.\n var proto = func.properties[\"prototype\"];\n if (typeof proto !== \"object\" || proto === null) {\n // Non-object prototypes default to Object.prototype.\n proto = this.OBJECT_PROTO;\n }\n state.funcThis_ = this.createObjectProto(proto);\n state.isConstructor = true;\n } else if (state.funcThis_ === undefined) {\n // Global function, 'this' is global object (or 'undefined' if strict).\n state.funcThis_ = state.scope.strict ? undefined : this.global;\n }\n state.doneArgs_ = true;\n }\n if (!state.doneExec_) {\n state.doneExec_ = true;\n if (!func || !func.isObject) {\n let lineNum = this.getErrorLineNumber(node);\n this.throwException(this.TYPE_ERROR, func + \" is not a function\", lineNum);\n }\n var funcNode = func.node;\n if (funcNode) {\n var scope = this.createScope(funcNode[\"body\"], func.parentScope);\n // Add all arguments.\n for (var i = 0; i < funcNode[\"params\"].length; i++) {\n var paramName = funcNode[\"params\"][i][\"name\"];\n var paramValue = state.arguments_.length > i ? state.arguments_[i] : undefined;\n this.setProperty(scope, paramName, paramValue);\n }\n // Build arguments variable.\n var argsList = this.createObjectProto(this.ARRAY_PROTO);\n for (var i = 0; i < state.arguments_.length; i++) {\n this.setProperty(argsList, i, state.arguments_[i]);\n }\n this.setProperty(scope, \"arguments\", argsList);\n // Add the function's name (var x = function foo(){};)\n var name = funcNode[\"id\"] && funcNode[\"id\"][\"name\"];\n if (name) {\n this.setProperty(scope, name, func);\n }\n this.setProperty(scope, \"this\", state.funcThis_, Interpreter.READONLY_DESCRIPTOR);\n state.value = undefined; // Default value if no explicit return.\n return new Interpreter.State(funcNode[\"body\"], scope);\n } else if (func.eval) {\n var code = state.arguments_[0];\n if (typeof code !== \"string\") {\n // JS does not parse String objects:\n // eval(new String('1 + 1')) -> '1 + 1'\n state.value = code;\n } else {\n try {\n var ast = acorn.parse(code.toString(), Interpreter.PARSE_OPTIONS);\n } catch (e) {\n // Acorn threw a SyntaxError. Rethrow as a trappable error.\n let lineNum = this.getErrorLineNumber(node);\n this.throwException(this.SYNTAX_ERROR, \"Invalid code: \" + e.message, lineNum);\n }\n var evalNode = new this.nodeConstructor();\n evalNode[\"type\"] = \"EvalProgram_\";\n evalNode[\"body\"] = ast[\"body\"];\n this.stripLocations_(evalNode, node[\"start\"], node[\"end\"]);\n // Create new scope and update it with definitions in eval().\n var scope = state.directEval_ ? state.scope : this.global;\n if (scope.strict) {\n // Strict mode get its own scope in eval.\n scope = this.createScope(ast, scope);\n } else {\n // Non-strict mode pollutes the current scope.\n this.populateScope_(ast, scope);\n }\n this.value = undefined; // Default value if no code.\n return new Interpreter.State(evalNode, scope);\n }\n } else if (func.nativeFunc) {\n state.value = func.nativeFunc.apply(state.funcThis_, state.arguments_);\n } else if (func.asyncFunc) {\n var thisInterpreter = this;\n var callback = function (value) {\n state.value = value;\n thisInterpreter.paused_ = false;\n };\n var argsWithCallback = state.arguments_.concat(callback);\n this.paused_ = true;\n func.asyncFunc.apply(state.funcThis_, argsWithCallback);\n return;\n } else {\n /* A child of a function is a function but is not callable. For example:\n var F = function() {};\n F.prototype = escape;\n var f = new F();\n f();\n */\n let lineNum = this.getErrorLineNumber(node);\n this.throwException(this.TYPE_ERROR, func.class + \" is not a function\", lineNum);\n }\n } else {\n // Execution complete. Put the return value on the stack.\n stack.pop();\n if (state.isConstructor && typeof state.value !== \"object\") {\n stack[stack.length - 1].value = state.funcThis_;\n } else {\n stack[stack.length - 1].value = state.value;\n }\n }\n};\n\nInterpreter.prototype[\"stepCatchClause\"] = function (stack, state, node) {\n if (!state.done_) {\n state.done_ = true;\n // Create an empty scope.\n var scope = this.createSpecialScope(state.scope);\n // Add the argument.\n this.setProperty(scope, node[\"param\"][\"name\"], state.throwValue);\n // Execute catch clause.\n return new Interpreter.State(node[\"body\"], scope);\n } else {\n stack.pop();\n }\n};\n\nInterpreter.prototype[\"stepConditionalExpression\"] = function (stack, state, node) {\n var mode = state.mode_ || 0;\n if (mode === 0) {\n state.mode_ = 1;\n return new Interpreter.State(node[\"test\"], state.scope);\n }\n if (mode === 1) {\n state.mode_ = 2;\n var value = Boolean(state.value);\n if (value && node[\"consequent\"]) {\n // Execute 'if' block.\n return new Interpreter.State(node[\"consequent\"], state.scope);\n } else if (!value && node[\"alternate\"]) {\n // Execute 'else' block.\n return new Interpreter.State(node[\"alternate\"], state.scope);\n }\n // eval('1;if(false){2}') -> undefined\n this.value = undefined;\n }\n stack.pop();\n if (node[\"type\"] === \"ConditionalExpression\") {\n stack[stack.length - 1].value = state.value;\n }\n};\n\nInterpreter.prototype[\"stepContinueStatement\"] = function (stack, state, node) {\n var label = node[\"label\"] && node[\"label\"][\"name\"];\n this.unwind(Interpreter.Completion.CONTINUE, undefined, label);\n};\n\nInterpreter.prototype[\"stepDebuggerStatement\"] = function (stack, state, node) {\n // Do nothing. May be overridden by developers.\n stack.pop();\n};\n\nInterpreter.prototype[\"stepDoWhileStatement\"] = function (stack, state, node) {\n if (node[\"type\"] === \"DoWhileStatement\" && state.test_ === undefined) {\n // First iteration of do/while executes without checking test.\n state.value = true;\n state.test_ = true;\n }\n if (!state.test_) {\n state.test_ = true;\n return new Interpreter.State(node[\"test\"], state.scope);\n }\n if (!state.value) {\n // Done, exit loop.\n stack.pop();\n } else if (node[\"body\"]) {\n // Execute the body.\n state.test_ = false;\n state.isLoop = true;\n return new Interpreter.State(node[\"body\"], state.scope);\n }\n};\n\nInterpreter.prototype[\"stepEmptyStatement\"] = function (stack, state, node) {\n stack.pop();\n};\n\nInterpreter.prototype[\"stepEvalProgram_\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var expression = node[\"body\"][n];\n if (expression) {\n state.n_ = n + 1;\n return new Interpreter.State(expression, state.scope);\n }\n stack.pop();\n stack[stack.length - 1].value = this.value;\n};\n\nInterpreter.prototype[\"stepExpressionStatement\"] = function (stack, state, node) {\n if (!state.done_) {\n state.done_ = true;\n return new Interpreter.State(node[\"expression\"], state.scope);\n }\n stack.pop();\n // Save this value to interpreter.value for use as a return value if\n // this code is inside an eval function.\n this.value = state.value;\n};\n\nInterpreter.prototype[\"stepForInStatement\"] = function (stack, state, node) {\n // First, initialize a variable if exists. Only do so once, ever.\n if (!state.doneInit_) {\n state.doneInit_ = true;\n if (node[\"left\"][\"declarations\"] && node[\"left\"][\"declarations\"][0][\"init\"]) {\n if (state.scope.strict) {\n let lineNum = this.getErrorLineNumber(node);\n this.throwException(\n this.SYNTAX_ERROR,\n \"for-in loop variable declaration may not have an initializer.\",\n lineNum,\n );\n }\n // Variable initialization: for (var x = 4 in y)\n return new Interpreter.State(node[\"left\"], state.scope);\n }\n }\n // Second, look up the object. Only do so once, ever.\n if (!state.doneObject_) {\n state.doneObject_ = true;\n if (!state.variable_) {\n state.variable_ = state.value;\n }\n return new Interpreter.State(node[\"right\"], state.scope);\n }\n if (!state.isLoop) {\n // First iteration.\n state.isLoop = true;\n state.object_ = state.value;\n state.visited_ = Object.create(null);\n }\n // Third, find the property name for this iteration.\n if (state.name_ === undefined) {\n gotPropName: while (true) {\n if (state.object_ && state.object_.isObject) {\n if (!state.props_) {\n state.props_ = Object.getOwnPropertyNames(state.object_.properties);\n }\n while (true) {\n var prop = state.props_.shift();\n if (prop === undefined) {\n break; // Reached end of this object's properties.\n }\n if (!Object.prototype.hasOwnProperty.call(state.object_.properties, prop)) {\n continue; // Property has been deleted in the loop.\n }\n if (state.visited_[prop]) {\n continue; // Already seen this property on a child.\n }\n state.visited_[prop] = true;\n if (!Object.prototype.propertyIsEnumerable.call(state.object_.properties, prop)) {\n continue; // Skip non-enumerable property.\n }\n state.name_ = prop;\n break gotPropName;\n }\n } else if (state.object_ !== null && state.object_ !== undefined) {\n // Primitive value (other than null or undefined).\n if (!state.props_) {\n state.props_ = Object.getOwnPropertyNames(state.object_);\n }\n while (true) {\n var prop = state.props_.shift();\n if (prop === undefined) {\n break; // Reached end of this value's properties.\n }\n state.visited_[prop] = true;\n if (!Object.prototype.propertyIsEnumerable.call(state.object_, prop)) {\n continue; // Skip non-enumerable property.\n }\n state.name_ = prop;\n break gotPropName;\n }\n }\n state.object_ = this.getPrototype(state.object_);\n state.props_ = null;\n if (state.object_ === null) {\n // Done, exit loop.\n stack.pop();\n return;\n }\n }\n }\n // Fourth, find the variable\n if (!state.doneVariable_) {\n state.doneVariable_ = true;\n var left = node[\"left\"];\n if (left[\"type\"] === \"VariableDeclaration\") {\n // Inline variable declaration: for (var x in y)\n state.variable_ = [Interpreter.SCOPE_REFERENCE, left[\"declarations\"][0][\"id\"][\"name\"]];\n } else {\n // Arbitrary left side: for (foo().bar in y)\n state.variable_ = null;\n var nextState = new Interpreter.State(left, state.scope);\n nextState.components = true;\n return nextState;\n }\n }\n if (!state.variable_) {\n state.variable_ = state.value;\n }\n // Fifth, set the variable.\n if (!state.doneSetter_) {\n state.doneSetter_ = true;\n var value = state.name_;\n var setter = this.setValue(state.variable_, value);\n if (setter) {\n return this.createSetter_(setter, state.variable_, value);\n }\n }\n // Next step will be step three.\n state.name_ = undefined;\n // Reevaluate the variable since it could be a setter on the global object.\n state.doneVariable_ = false;\n state.doneSetter_ = false;\n // Sixth and finally, execute the body if there was one. this.\n if (node[\"body\"]) {\n return new Interpreter.State(node[\"body\"], state.scope);\n }\n};\n\nInterpreter.prototype[\"stepForStatement\"] = function (stack, state, node) {\n var mode = state.mode_ || 0;\n if (mode === 0) {\n state.mode_ = 1;\n if (node[\"init\"]) {\n return new Interpreter.State(node[\"init\"], state.scope);\n }\n } else if (mode === 1) {\n state.mode_ = 2;\n if (node[\"test\"]) {\n return new Interpreter.State(node[\"test\"], state.scope);\n }\n } else if (mode === 2) {\n state.mode_ = 3;\n if (node[\"test\"] && !state.value) {\n // Done, exit loop.\n stack.pop();\n } else {\n // Execute the body.\n state.isLoop = true;\n return new Interpreter.State(node[\"body\"], state.scope);\n }\n } else if (mode === 3) {\n state.mode_ = 1;\n if (node[\"update\"]) {\n return new Interpreter.State(node[\"update\"], state.scope);\n }\n }\n};\n\nInterpreter.prototype[\"stepFunctionDeclaration\"] = function (stack, state, node) {\n // This was found and handled when the scope was populated.\n stack.pop();\n};\n\nInterpreter.prototype[\"stepFunctionExpression\"] = function (stack, state, node) {\n stack.pop();\n stack[stack.length - 1].value = this.createFunction(node, state.scope);\n};\n\nInterpreter.prototype[\"stepIdentifier\"] = function (stack, state, node) {\n stack.pop();\n if (state.components) {\n stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node[\"name\"]];\n return;\n }\n var value = this.getValueFromScope(node[\"name\"], node);\n // An identifier could be a getter if it's a property on the global object.\n if (value && typeof value === \"object\" && value.isGetter) {\n // Clear the getter flag and call the getter function.\n value.isGetter = false;\n var scope = state.scope;\n while (!this.hasProperty(scope, node[\"name\"])) {\n scope = scope.parentScope;\n }\n var func = /** @type {!Interpreter.Object} */ (value);\n return this.createGetter_(func, this.global);\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepIfStatement\"] = Interpreter.prototype[\"stepConditionalExpression\"];\n\nInterpreter.prototype[\"stepLabeledStatement\"] = function (stack, state, node) {\n // No need to hit this node again on the way back up the stack.\n stack.pop();\n // Note that a statement might have multiple labels.\n var labels = state.labels || [];\n labels.push(node[\"label\"][\"name\"]);\n var nextState = new Interpreter.State(node[\"body\"], state.scope);\n nextState.labels = labels;\n return nextState;\n};\n\nInterpreter.prototype[\"stepLiteral\"] = function (stack, state, node) {\n stack.pop();\n var value = node[\"value\"];\n if (value instanceof RegExp) {\n var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO);\n this.populateRegExp(pseudoRegexp, value);\n value = pseudoRegexp;\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepLogicalExpression\"] = function (stack, state, node) {\n if (node[\"operator\"] !== \"&&\" && node[\"operator\"] !== \"||\") {\n throw SyntaxError(\"Unknown logical operator: \" + node[\"operator\"]);\n }\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n return new Interpreter.State(node[\"left\"], state.scope);\n }\n if (!state.doneRight_) {\n if ((node[\"operator\"] === \"&&\" && !state.value) || (node[\"operator\"] === \"||\" && state.value)) {\n // Shortcut evaluation.\n stack.pop();\n stack[stack.length - 1].value = state.value;\n } else {\n state.doneRight_ = true;\n return new Interpreter.State(node[\"right\"], state.scope);\n }\n } else {\n stack.pop();\n stack[stack.length - 1].value = state.value;\n }\n};\n\nInterpreter.prototype[\"stepMemberExpression\"] = function (stack, state, node) {\n if (!state.doneObject_) {\n state.doneObject_ = true;\n return new Interpreter.State(node[\"object\"], state.scope);\n }\n var propName;\n if (!node[\"computed\"]) {\n state.object_ = state.value;\n // obj.foo -- Just access 'foo' directly.\n propName = node[\"property\"][\"name\"];\n } else if (!state.doneProperty_) {\n state.object_ = state.value;\n // obj[foo] -- Compute value of 'foo'.\n state.doneProperty_ = true;\n return new Interpreter.State(node[\"property\"], state.scope);\n } else {\n propName = state.value;\n }\n stack.pop();\n if (state.components) {\n stack[stack.length - 1].value = [state.object_, propName];\n } else {\n var value = this.getProperty(state.object_, propName);\n if (value && typeof value === \"object\" && value.isGetter) {\n // Clear the getter flag and call the getter function.\n value.isGetter = false;\n var func = /** @type {!Interpreter.Object} */ (value);\n return this.createGetter_(func, state.object_);\n }\n stack[stack.length - 1].value = value;\n }\n};\n\nInterpreter.prototype[\"stepNewExpression\"] = Interpreter.prototype[\"stepCallExpression\"];\n\nInterpreter.prototype[\"stepObjectExpression\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var property = node[\"properties\"][n];\n if (!state.object_) {\n // First execution.\n state.object_ = this.createObjectProto(this.OBJECT_PROTO);\n state.properties_ = Object.create(null);\n } else {\n // Determine property name.\n var key = property[\"key\"];\n if (key[\"type\"] === \"Identifier\") {\n var propName = key[\"name\"];\n } else if (key[\"type\"] === \"Literal\") {\n var propName = key[\"value\"];\n } else {\n throw SyntaxError(\"Unknown object structure: \" + key[\"type\"]);\n }\n // Set the property computed in the previous execution.\n if (!state.properties_[propName]) {\n // Create temp object to collect value, getter, and/or setter.\n state.properties_[propName] = {};\n }\n state.properties_[propName][property[\"kind\"]] = state.value;\n state.n_ = ++n;\n property = node[\"properties\"][n];\n }\n if (property) {\n return new Interpreter.State(property[\"value\"], state.scope);\n }\n for (var key in state.properties_) {\n var kinds = state.properties_[key];\n if (\"get\" in kinds || \"set\" in kinds) {\n // Set a property with a getter or setter.\n var descriptor = {\n configurable: true,\n enumerable: true,\n get: kinds[\"get\"],\n set: kinds[\"set\"],\n };\n this.setProperty(state.object_, key, null, descriptor);\n } else {\n // Set a normal property with a value.\n this.setProperty(state.object_, key, kinds[\"init\"]);\n }\n }\n stack.pop();\n stack[stack.length - 1].value = state.object_;\n};\n\nInterpreter.prototype[\"stepProgram\"] = function (stack, state, node) {\n var expression = node[\"body\"].shift();\n if (expression) {\n state.done = false;\n return new Interpreter.State(expression, state.scope);\n }\n state.done = true;\n // Don't pop the stateStack.\n // Leave the root scope on the tree in case the program is appended to.\n};\n\nInterpreter.prototype[\"stepReturnStatement\"] = function (stack, state, node) {\n if (node[\"argument\"] && !state.done_) {\n state.done_ = true;\n return new Interpreter.State(node[\"argument\"], state.scope);\n }\n this.unwind(Interpreter.Completion.RETURN, state.value, undefined);\n};\n\nInterpreter.prototype[\"stepSequenceExpression\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var expression = node[\"expressions\"][n];\n if (expression) {\n state.n_ = n + 1;\n return new Interpreter.State(expression, state.scope);\n }\n stack.pop();\n stack[stack.length - 1].value = state.value;\n};\n\nInterpreter.prototype[\"stepSwitchStatement\"] = function (stack, state, node) {\n if (!state.test_) {\n state.test_ = 1;\n return new Interpreter.State(node[\"discriminant\"], state.scope);\n }\n if (state.test_ === 1) {\n state.test_ = 2;\n // Preserve switch value between case tests.\n state.switchValue_ = state.value;\n state.defaultCase_ = -1;\n }\n\n while (true) {\n var index = state.index_ || 0;\n var switchCase = node[\"cases\"][index];\n if (!state.matched_ && switchCase && !switchCase[\"test\"]) {\n // Test on the default case is null.\n // Bypass (but store) the default case, and get back to it later.\n state.defaultCase_ = index;\n state.index_ = index + 1;\n continue;\n }\n if (!switchCase && !state.matched_ && state.defaultCase_ !== -1) {\n // Ran through all cases, no match. Jump to the default.\n state.matched_ = true;\n state.index_ = state.defaultCase_;\n continue;\n }\n if (switchCase) {\n if (!state.matched_ && !state.tested_ && switchCase[\"test\"]) {\n state.tested_ = true;\n return new Interpreter.State(switchCase[\"test\"], state.scope);\n }\n if (state.matched_ || state.value === state.switchValue_) {\n state.matched_ = true;\n var n = state.n_ || 0;\n if (switchCase[\"consequent\"][n]) {\n state.isSwitch = true;\n state.n_ = n + 1;\n return new Interpreter.State(switchCase[\"consequent\"][n], state.scope);\n }\n }\n // Move on to next case.\n state.tested_ = false;\n state.n_ = 0;\n state.index_ = index + 1;\n } else {\n stack.pop();\n return;\n }\n }\n};\n\nInterpreter.prototype[\"stepThisExpression\"] = function (stack, state, node) {\n stack.pop();\n stack[stack.length - 1].value = this.getValueFromScope(\"this\", node);\n};\n\nInterpreter.prototype[\"stepThrowStatement\"] = function (stack, state, node) {\n if (!state.done_) {\n state.done_ = true;\n return new Interpreter.State(node[\"argument\"], state.scope);\n } else {\n this.throwException(state.value);\n }\n};\n\nInterpreter.prototype[\"stepTryStatement\"] = function (stack, state, node) {\n if (!state.doneBlock_) {\n state.doneBlock_ = true;\n return new Interpreter.State(node[\"block\"], state.scope);\n }\n if (state.cv && state.cv.type === Interpreter.Completion.THROW && !state.doneHandler_ && node[\"handler\"]) {\n state.doneHandler_ = true;\n var nextState = new Interpreter.State(node[\"handler\"], state.scope);\n nextState.throwValue = state.cv.value;\n state.cv = undefined; // This error has been handled, don't rethrow.\n return nextState;\n }\n if (!state.doneFinalizer_ && node[\"finalizer\"]) {\n state.doneFinalizer_ = true;\n return new Interpreter.State(node[\"finalizer\"], state.scope);\n }\n stack.pop();\n if (state.cv) {\n // There was no catch handler, or the catch/finally threw an error.\n // Throw the error up to a higher try.\n this.unwind(state.cv.type, state.cv.value, state.cv.label);\n }\n};\n\nInterpreter.prototype[\"stepUnaryExpression\"] = function (stack, state, node) {\n if (!state.done_) {\n state.done_ = true;\n var nextState = new Interpreter.State(node[\"argument\"], state.scope);\n nextState.components = node[\"operator\"] === \"delete\";\n return nextState;\n }\n stack.pop();\n var value = state.value;\n if (node[\"operator\"] === \"-\") {\n value = -value;\n } else if (node[\"operator\"] === \"+\") {\n value = +value;\n } else if (node[\"operator\"] === \"!\") {\n value = !value;\n } else if (node[\"operator\"] === \"~\") {\n value = ~value;\n } else if (node[\"operator\"] === \"delete\") {\n var result = true;\n // If value is not an array, then it is a primitive, or some other value.\n // If so, skip the delete and return true.\n if (Array.isArray(value)) {\n var obj = value[0];\n if (obj === Interpreter.SCOPE_REFERENCE) {\n // 'delete foo;' is the same as 'delete window.foo'.\n obj = state.scope;\n }\n var name = String(value[1]);\n try {\n delete obj.properties[name];\n } catch (e) {\n if (state.scope.strict) {\n this.throwException(this.TYPE_ERROR, \"Cannot delete property '\" + name + \"' of '\" + obj + \"'\");\n } else {\n result = false;\n }\n }\n }\n value = result;\n } else if (node[\"operator\"] === \"typeof\") {\n value = value && value.class === \"Function\" ? \"function\" : typeof value;\n } else if (node[\"operator\"] === \"void\") {\n value = undefined;\n } else {\n throw SyntaxError(\"Unknown unary operator: \" + node[\"operator\"]);\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepUpdateExpression\"] = function (stack, state, node) {\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n var nextState = new Interpreter.State(node[\"argument\"], state.scope);\n nextState.components = true;\n return nextState;\n }\n if (!state.leftSide_) {\n state.leftSide_ = state.value;\n }\n if (state.doneGetter_) {\n state.leftValue_ = state.value;\n }\n if (!state.doneGetter_) {\n var leftValue = this.getValue(state.leftSide_, node);\n state.leftValue_ = leftValue;\n if (leftValue && typeof leftValue === \"object\" && leftValue.isGetter) {\n // Clear the getter flag and call the getter function.\n leftValue.isGetter = false;\n state.doneGetter_ = true;\n var func = /** @type {!Interpreter.Object} */ (leftValue);\n return this.createGetter_(func, state.leftSide_);\n }\n }\n if (state.doneSetter_) {\n // Return if setter function.\n // Setter method on property has completed.\n // Ignore its return value, and use the original set value instead.\n stack.pop();\n stack[stack.length - 1].value = state.setterValue_;\n return;\n }\n var leftValue = Number(state.leftValue_);\n var changeValue;\n if (node[\"operator\"] === \"++\") {\n changeValue = leftValue + 1;\n } else if (node[\"operator\"] === \"--\") {\n changeValue = leftValue - 1;\n } else {\n throw SyntaxError(\"Unknown update expression: \" + node[\"operator\"]);\n }\n var returnValue = node[\"prefix\"] ? changeValue : leftValue;\n var setter = this.setValue(state.leftSide_, changeValue);\n if (setter) {\n state.doneSetter_ = true;\n state.setterValue_ = returnValue;\n return this.createSetter_(setter, state.leftSide_, changeValue);\n }\n // Return if no setter function.\n stack.pop();\n stack[stack.length - 1].value = returnValue;\n};\n\nInterpreter.prototype[\"stepVariableDeclaration\"] = function (stack, state, node) {\n var declarations = node[\"declarations\"];\n var n = state.n_ || 0;\n var declarationNode = declarations[n];\n if (state.init_ && declarationNode) {\n // This setValue call never needs to deal with calling a setter function.\n // Note that this is setting the init value, not defining the variable.\n // Variable definition is done when scope is populated.\n this.setValueToScope(declarationNode[\"id\"][\"name\"], state.value);\n state.init_ = false;\n declarationNode = declarations[++n];\n }\n while (declarationNode) {\n // Skip any declarations that are not initialized. They have already\n // been defined as undefined in populateScope_.\n if (declarationNode[\"init\"]) {\n state.n_ = n;\n state.init_ = true;\n return new Interpreter.State(declarationNode[\"init\"], state.scope);\n }\n declarationNode = declarations[++n];\n }\n stack.pop();\n};\n\nInterpreter.prototype[\"stepWithStatement\"] = function (stack, state, node) {\n if (!state.doneObject_) {\n state.doneObject_ = true;\n return new Interpreter.State(node[\"object\"], state.scope);\n } else if (!state.doneBody_) {\n state.doneBody_ = true;\n var scope = this.createSpecialScope(state.scope, state.value);\n return new Interpreter.State(node[\"body\"], scope);\n } else {\n stack.pop();\n }\n};\n\nInterpreter.prototype[\"stepWhileStatement\"] = Interpreter.prototype[\"stepDoWhileStatement\"];\n\n// Preserve top-level API functions from being pruned/renamed by JS compilers.\n// Add others as needed.\n// The global object ('window' in a browser, 'global' in node.js) is 'this'.\n//this['Interpreter'] = Interpreter;\nInterpreter.prototype[\"step\"] = Interpreter.prototype.step;\nInterpreter.prototype[\"run\"] = Interpreter.prototype.run;\nInterpreter.prototype[\"appendCode\"] = Interpreter.prototype.appendCode;\nInterpreter.prototype[\"createObject\"] = Interpreter.prototype.createObject;\nInterpreter.prototype[\"createObjectProto\"] = Interpreter.prototype.createObjectProto;\nInterpreter.prototype[\"createAsyncFunction\"] = Interpreter.prototype.createAsyncFunction;\nInterpreter.prototype[\"createNativeFunction\"] = Interpreter.prototype.createNativeFunction;\nInterpreter.prototype[\"getProperty\"] = Interpreter.prototype.getProperty;\nInterpreter.prototype[\"setProperty\"] = Interpreter.prototype.setProperty;\nInterpreter.prototype[\"nativeToPseudo\"] = Interpreter.prototype.nativeToPseudo;\nInterpreter.prototype[\"pseudoToNative\"] = Interpreter.prototype.pseudoToNative;\n// Obsolete. Do not use.\nInterpreter.prototype[\"createPrimitive\"] = function (x) {\n return x;\n};\n\nexport { Interpreter };\n","import { CONSTANTS } from \"../../Constants\";\nimport { Server } from \"../Server\";\nimport { BitNodeMultipliers } from \"../../BitNode/BitNodeMultipliers\";\nimport { IPlayer } from \"../../PersonObjects/IPlayer\";\n\nexport function calculateServerGrowth(server: Server, threads: number, p: IPlayer, cores = 1): number {\n const numServerGrowthCycles = Math.max(Math.floor(threads), 0);\n\n //Get adjusted growth rate, which accounts for server security\n const growthRate = CONSTANTS.ServerBaseGrowthRate;\n let adjGrowthRate = 1 + (growthRate - 1) / server.hackDifficulty;\n if (adjGrowthRate > CONSTANTS.ServerMaxGrowthRate) {\n adjGrowthRate = CONSTANTS.ServerMaxGrowthRate;\n }\n\n //Calculate adjusted server growth rate based on parameters\n const serverGrowthPercentage = server.serverGrowth / 100;\n const numServerGrowthCyclesAdjusted =\n numServerGrowthCycles * serverGrowthPercentage * BitNodeMultipliers.ServerGrowthRate;\n\n //Apply serverGrowth for the calculated number of growth cycles\n const coreBonus = 1 + (cores - 1) / 16;\n return Math.pow(adjGrowthRate, numServerGrowthCyclesAdjusted * p.hacking_grow_mult * coreBonus);\n}\n","import { FactionNames } from \"../../Faction/data/FactionNames\";\nimport { Sleeve } from \"./Sleeve\";\n\nimport { IPlayer } from \"../IPlayer\";\n\nimport { Augmentation } from \"../../Augmentation/Augmentation\";\nimport { Augmentations } from \"../../Augmentation/Augmentations\";\nimport { AugmentationNames } from \"../../Augmentation/data/AugmentationNames\";\nimport { Faction } from \"../../Faction/Faction\";\nimport { Factions } from \"../../Faction/Factions\";\n\nexport function findSleevePurchasableAugs(sleeve: Sleeve, p: IPlayer): Augmentation[] {\n // You can only purchase Augmentations that are actually available from\n // your factions. I.e. you must be in a faction that has the Augmentation\n // and you must also have enough rep in that faction in order to purchase it.\n\n const ownedAugNames: string[] = sleeve.augmentations.map((e) => {\n return e.name;\n });\n const availableAugs: Augmentation[] = [];\n\n // Helper function that helps filter out augs that are already owned\n // and augs that aren't allowed for sleeves\n function isAvailableForSleeve(aug: Augmentation): boolean {\n if (aug.name === AugmentationNames.NeuroFluxGovernor) {\n return false;\n }\n if (ownedAugNames.includes(aug.name)) {\n return false;\n }\n if (availableAugs.includes(aug)) {\n return false;\n }\n if (aug.isSpecial) {\n return false;\n }\n\n const validMults = [\n \"hacking_mult\",\n \"strength_mult\",\n \"defense_mult\",\n \"dexterity_mult\",\n \"agility_mult\",\n \"charisma_mult\",\n \"hacking_exp_mult\",\n \"strength_exp_mult\",\n \"defense_exp_mult\",\n \"dexterity_exp_mult\",\n \"agility_exp_mult\",\n \"charisma_exp_mult\",\n \"company_rep_mult\",\n \"faction_rep_mult\",\n \"crime_money_mult\",\n \"crime_success_mult\",\n \"work_money_mult\",\n ];\n for (const mult of Object.keys(aug.mults)) {\n if (validMults.includes(mult)) {\n return true;\n }\n }\n\n return false;\n }\n\n // If player is in a gang, then we return all augs that the player\n // has enough reputation for (since that gang offers all augs)\n if (p.inGang()) {\n const fac = p.getGangFaction();\n\n for (const augName of Object.keys(Augmentations)) {\n const aug = Augmentations[augName];\n if (!isAvailableForSleeve(aug)) {\n continue;\n }\n\n if (fac.playerReputation > aug.baseRepRequirement) {\n availableAugs.push(aug);\n }\n }\n }\n\n for (const facName of p.factions) {\n if (facName === FactionNames.Bladeburners) {\n continue;\n }\n if (facName === FactionNames.Netburners) {\n continue;\n }\n const fac: Faction | null = Factions[facName];\n if (fac == null) {\n continue;\n }\n\n for (const augName of fac.augmentations) {\n const aug: Augmentation = Augmentations[augName];\n if (!isAvailableForSleeve(aug)) {\n continue;\n }\n\n if (fac.playerReputation > aug.baseRepRequirement) {\n availableAugs.push(aug);\n }\n }\n }\n\n return availableAugs;\n}\n","import { EventEmitter } from \"../utils/EventEmitter\";\nexport const StaneksGiftEvents = new EventEmitter<[]>();\n","import { Construction, CheckBox, CheckBoxOutlineBlank } from \"@mui/icons-material\";\nimport { Box, Button, Container, List, ListItemButton, Paper, Typography } from \"@mui/material\";\nimport React, { useState } from \"react\";\nimport { Augmentation } from \"../../../Augmentation/Augmentation\";\nimport { Augmentations } from \"../../../Augmentation/Augmentations\";\nimport { AugmentationNames } from \"../../../Augmentation/data/AugmentationNames\";\nimport { CONSTANTS } from \"../../../Constants\";\nimport { hasAugmentationPrereqs } from \"../../../Faction/FactionHelpers\";\nimport { LocationName } from \"../../../Locations/data/LocationNames\";\nimport { Locations } from \"../../../Locations/Locations\";\nimport { Settings } from \"../../../Settings/Settings\";\nimport { IMap } from \"../../../types\";\nimport { use } from \"../../../ui/Context\";\nimport { ConfirmationModal } from \"../../../ui/React/ConfirmationModal\";\nimport { Money } from \"../../../ui/React/Money\";\nimport { convertTimeMsToTimeElapsedString, formatNumber } from \"../../../utils/StringHelperFunctions\";\nimport { IPlayer } from \"../../IPlayer\";\nimport { GraftableAugmentation } from \"../GraftableAugmentation\";\n\nconst GraftableAugmentations: IMap = {};\n\nexport const getAvailableAugs = (player: IPlayer): string[] => {\n const augs: string[] = [];\n\n for (const [augName, aug] of Object.entries(Augmentations)) {\n if (augName === AugmentationNames.NeuroFluxGovernor || augName === AugmentationNames.TheRedPill || aug.isSpecial)\n continue;\n augs.push(augName);\n }\n\n return augs.filter((augmentation: string) => !player.hasAugmentation(augmentation));\n};\n\nconst canGraft = (player: IPlayer, aug: GraftableAugmentation): boolean => {\n if (player.money < aug.cost) {\n return false;\n }\n return hasAugmentationPrereqs(aug.augmentation);\n};\n\ninterface IProps {\n player: IPlayer;\n aug: Augmentation;\n}\n\nconst AugPreReqsChecklist = (props: IProps): React.ReactElement => {\n const aug = props.aug,\n player = props.player;\n\n return (\n \n Pre-Requisites:\n \n {aug.prereqs.map((preAug) => (\n \n {player.hasAugmentation(preAug) ? : }\n {preAug}\n \n ))}\n \n );\n};\n\nexport const GraftingRoot = (): React.ReactElement => {\n const player = use.Player();\n const router = use.Router();\n\n for (const aug of Object.values(Augmentations)) {\n const name = aug.name;\n const graftableAug = new GraftableAugmentation(aug);\n GraftableAugmentations[name] = graftableAug;\n }\n\n const [selectedAug, setSelectedAug] = useState(getAvailableAugs(player)[0]);\n const [graftOpen, setGraftOpen] = useState(false);\n\n return (\n \n \n Grafting Laboratory\n \n You find yourself in a secret laboratory, owned by a mysterious researcher.\n \n The scientist explains that they've been studying Augmentation grafting, the process of applying Augmentations\n without requiring a body reset.\n \n \n Through legally questionable connections, the scientist has access to a vast array of Augmentation blueprints,\n even private designs. They offer to build and graft the Augmentations to you, in exchange for both a hefty sum\n of money, and being a lab rat.\n \n\n \n Graft Augmentations\n {getAvailableAugs(player).length > 0 ? (\n \n \n {getAvailableAugs(player).map((k, i) => (\n setSelectedAug(k)} selected={selectedAug === k}>\n {k}\n \n ))}\n \n \n \n {selectedAug}\n \n \n setGraftOpen(false)}\n onConfirm={() => {\n const graftableAug = GraftableAugmentations[selectedAug];\n player.loseMoney(graftableAug.cost, \"augmentations\");\n player.startGraftAugmentationWork(selectedAug, graftableAug.time);\n player.startFocusing();\n router.toWork();\n }}\n confirmationText={\n <>\n Cancelling grafting will not save grafting progress, and the money you spend will not{\" \"}\n be returned.\n \n \n Additionally, grafting an Augmentation will increase the potency of the Entropy virus.\n >\n }\n />\n \n Time to Graft:{\" \"}\n {convertTimeMsToTimeElapsedString(\n GraftableAugmentations[selectedAug].time / (1 + (player.getIntelligenceBonus(3) - 1) / 3),\n )}\n {/* Use formula so the displayed creation time is accurate to player bonus */}\n \n {Augmentations[selectedAug].prereqs.length > 0 && (\n \n )}\n\n \n \n {(() => {\n const aug = Augmentations[selectedAug];\n\n const info = typeof aug.info === \"string\" ? {aug.info} : aug.info;\n const tooltip = (\n <>\n {info}\n \n \n {aug.stats}\n >\n );\n return tooltip;\n })()}\n \n \n \n ) : (\n All Augmentations owned\n )}\n \n\n \n Entropy Virus\n\n \n \n Entropy strength: {player.entropy}\n \n All multipliers decreased by:{\" \"}\n {formatNumber((1 - CONSTANTS.EntropyEffect ** player.entropy) * 100, 3)}% (multiplicative)\n \n \n\n \n When installed on an unconscious individual, Augmentations are scanned by the body on awakening, eliminating\n hidden malware. However, grafted Augmentations do not provide this security measure.\n \n \n Individuals who tested Augmentation grafting have reported symptoms of an unknown virus, which they've dubbed\n \"Entropy\". This virus seems to grow more potent with each grafted Augmentation...\n \n \n \n );\n};\n","import { ITerminal } from \"../ITerminal\";\nimport { IRouter } from \"../../ui/Router\";\nimport { IPlayer } from \"../../PersonObjects/IPlayer\";\nimport { BaseServer } from \"../../Server/BaseServer\";\nimport { isScriptFilename } from \"../../Script/isScriptFilename\";\nimport FileSaver from \"file-saver\";\nimport JSZip from \"jszip\";\n\nexport function exportScripts(pattern: string, server: BaseServer): void {\n const matchEnding = pattern.length == 1 || pattern === \"*.*\" ? null : pattern.slice(1); // Treat *.* the same as *\n const zip = new JSZip();\n // Helper function to zip any file contents whose name matches the pattern\n const zipFiles = (fileNames: string[], fileContents: string[]): void => {\n for (let i = 0; i < fileContents.length; ++i) {\n let name = fileNames[i];\n if (name.startsWith(\"/\")) name = name.slice(1);\n if (!matchEnding || name.endsWith(matchEnding))\n zip.file(name, new Blob([fileContents[i]], { type: \"text/plain\" }));\n }\n };\n // In the case of script files, we pull from the server.scripts array\n if (!matchEnding || isScriptFilename(matchEnding))\n zipFiles(\n server.scripts.map((s) => s.filename),\n server.scripts.map((s) => s.code),\n );\n // In the case of text files, we pull from the server.scripts array\n if (!matchEnding || matchEnding.endsWith(\".txt\"))\n zipFiles(\n server.textFiles.map((s) => s.fn),\n server.textFiles.map((s) => s.text),\n );\n\n // Return an error if no files matched, rather than an empty zip folder\n if (Object.keys(zip.files).length == 0) throw new Error(`No files match the pattern ${pattern}`);\n const zipFn = `bitburner${isScriptFilename(pattern) ? \"Scripts\" : pattern === \"*.txt\" ? \"Texts\" : \"Files\"}.zip`;\n zip.generateAsync({ type: \"blob\" }).then((content: any) => FileSaver.saveAs(content, zipFn));\n}\n\nexport function download(\n terminal: ITerminal,\n router: IRouter,\n player: IPlayer,\n server: BaseServer,\n args: (string | number | boolean)[],\n): void {\n try {\n if (args.length !== 1) {\n terminal.error(\"Incorrect usage of download command. Usage: download [script/text file]\");\n return;\n }\n const fn = args[0] + \"\";\n // If the parameter starts with *, download all files that match the wildcard pattern\n if (fn.startsWith(\"*\")) {\n try {\n exportScripts(fn, server);\n return;\n } catch (error: any) {\n return terminal.error(error.message);\n }\n } else if (isScriptFilename(fn)) {\n // Download a single script\n const script = terminal.getScript(player, fn);\n if (script != null) {\n return script.download();\n }\n } else if (fn.endsWith(\".txt\")) {\n // Download a single text file\n const txt = terminal.getTextFile(player, fn);\n if (txt != null) {\n return txt.download();\n }\n } else {\n terminal.error(`Cannot download this filetype`);\n return;\n }\n terminal.error(`${fn} does not exist`);\n return;\n } catch (e) {\n terminal.error(e + \"\");\n return;\n }\n}\n","/**\n * React Component for displaying a single Augmentation as an accordion.\n *\n * The header of the accordion contains the Augmentation's name (and level, if\n * applicable), and the accordion's panel contains the Augmentation's description.\n */\nimport React, { useState } from \"react\";\n\nimport { Augmentation } from \"../../Augmentation/Augmentation\";\nimport { AugmentationNames } from \"../../Augmentation/data/AugmentationNames\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\nimport Paper from \"@mui/material/Paper\";\nimport Collapse from \"@mui/material/Collapse\";\nimport ExpandMore from \"@mui/icons-material/ExpandMore\";\nimport ExpandLess from \"@mui/icons-material/ExpandLess\";\n\ntype IProps = {\n aug: Augmentation;\n level?: number | string | null;\n};\n\nexport function AugmentationAccordion(props: IProps): React.ReactElement {\n const [open, setOpen] = useState(false);\n let displayName = props.aug.name;\n if (props.level != null) {\n if (props.aug.name === AugmentationNames.NeuroFluxGovernor) {\n displayName += ` - Level ${props.level}`;\n }\n }\n\n if (typeof props.aug.info === \"string\") {\n return (\n \n setOpen((old) => !old)}>\n {displayName}} />\n {open ? : }\n \n \n \n \n {props.aug.stats && (\n <>\n \n \n {props.aug.stats}\n >\n )}\n \n \n \n );\n }\n\n return (\n \n setOpen((old) => !old)}>\n {displayName}} />\n {open ? : }\n \n \n \n \n {props.aug.info}\n {props.aug.stats && (\n <>\n \n \n {props.aug.stats}\n >\n )}\n \n \n \n \n );\n}\n","import * as React from \"react\";\n\nexport const stealthIcon = (\n \n);\nexport const killIcon = (\n \n);\n","import React from \"react\";\nimport { IAction } from \"../IAction\";\nimport { IBladeburner } from \"../IBladeburner\";\nimport { BladeburnerConstants } from \"../data/Constants\";\nimport { use } from \"../../ui/Context\";\n\nimport Typography from \"@mui/material/Typography\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ArrowDropUpIcon from \"@mui/icons-material/ArrowDropUp\";\nimport ArrowDropDownIcon from \"@mui/icons-material/ArrowDropDown\";\n\ninterface IProps {\n action: IAction;\n isActive: boolean;\n bladeburner: IBladeburner;\n rerender: () => void;\n}\n\nexport function ActionLevel({ action, isActive, bladeburner, rerender }: IProps): React.ReactElement {\n const player = use.Player();\n\n const canIncrease = action.level < action.maxLevel;\n const canDecrease = action.level > 1;\n\n function increaseLevel(): void {\n if (!canIncrease) return;\n ++action.level;\n if (isActive) bladeburner.startAction(player, bladeburner.action);\n rerender();\n }\n\n function decreaseLevel(): void {\n if (!canDecrease) return;\n --action.level;\n if (isActive) bladeburner.startAction(player, bladeburner.action);\n rerender();\n }\n\n return (\n \n \n \n {action.getSuccessesNeededForNextLevel(BladeburnerConstants.ContractSuccessesPerLevel)} successes needed\n for next level\n \n }\n >\n \n Level: {action.level} / {action.maxLevel}\n \n \n \n WARNING: changing the level will restart the Operation : \"\"}>\n \n \n \n \n \n \n WARNING: changing the level will restart the Operation : \"\"}>\n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { IAction } from \"../IAction\";\nimport Typography from \"@mui/material/Typography\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Box from \"@mui/material/Box\";\nimport Switch from \"@mui/material/Switch\";\n\ninterface IProps {\n action: IAction;\n rerender: () => void;\n}\n\nexport function Autolevel(props: IProps): React.ReactElement {\n function onAutolevel(event: React.ChangeEvent): void {\n props.action.autoLevel = event.target.checked;\n props.rerender();\n }\n return (\n \n Automatically increase operation level when possible}>\n Autolevel:\n \n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { Operation } from \"../Operation\";\nimport { IBladeburner } from \"../IBladeburner\";\nimport { TeamSizeModal } from \"./TeamSizeModal\";\nimport { formatNumber } from \"../../utils/StringHelperFunctions\";\nimport Button from \"@mui/material/Button\";\ninterface IProps {\n action: Operation;\n bladeburner: IBladeburner;\n}\nexport function TeamSizeButton(props: IProps): React.ReactElement {\n const [open, setOpen] = useState(false);\n\n return (\n <>\n \n setOpen(false)} action={props.action} bladeburner={props.bladeburner} />\n >\n );\n}\n","import React, { useState, useEffect } from \"react\";\n\nexport function BlinkingCursor(): React.ReactElement {\n const [on, setOn] = useState(true);\n useEffect(() => {\n const i = setInterval(() => setOn((old) => !old), 1000);\n return () => clearInterval(i);\n });\n return <>{on ? \"|\" : \"\"}>;\n}\n","import React, { useState } from \"react\";\nimport { deleteGame } from \"../../db\";\nimport { ConfirmationModal } from \"./ConfirmationModal\";\nimport Button from \"@mui/material/Button\";\nimport { Tooltip } from \"@mui/material\";\n\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { pushDisableRestore } from \"../../Electron\";\n\ninterface IProps {\n color?: \"primary\" | \"warning\" | \"error\";\n}\n\nexport function DeleteGameButton({ color = \"primary\" }: IProps): React.ReactElement {\n const [modalOpened, setModalOpened] = useState(false);\n\n return (\n <>\n \n } color={color} onClick={() => setModalOpened(true)}>\n Delete Save\n \n \n {\n setModalOpened(false);\n deleteGame()\n .then(() => {\n pushDisableRestore();\n setTimeout(() => location.reload(), 1000);\n })\n .catch((r) => console.error(`Could not delete game: ${r}`));\n }}\n open={modalOpened}\n onClose={() => setModalOpened(false)}\n confirmationText={\"Really delete your game? (It's permanent!)\"}\n />\n >\n );\n}\n","import React, { useState } from \"react\";\n\nimport { ConfirmationModal } from \"./ConfirmationModal\";\nimport Button from \"@mui/material/Button\";\nimport { Tooltip } from \"@mui/material\";\nimport RestartAltIcon from \"@mui/icons-material/RestartAlt\";\n\ninterface IProps {\n color?: \"primary\" | \"warning\" | \"error\";\n noConfirmation?: boolean;\n onTriggered: () => void;\n}\n\nexport function SoftResetButton({\n color = \"primary\",\n noConfirmation = false,\n onTriggered,\n}: IProps): React.ReactElement {\n const [modalOpened, setModalOpened] = useState(false);\n\n function handleButtonClick(): void {\n if (noConfirmation) {\n onTriggered();\n } else {\n setModalOpened(true);\n }\n }\n\n return (\n <>\n \n } color={color} onClick={handleButtonClick}>\n Soft Reset\n \n \n setModalOpened(false)}\n confirmationText={\"This will perform the same action as installing Augmentations, are you sure?\"}\n />\n >\n );\n}\n","import React, { useState } from \"react\";\nimport Button from \"@mui/material/Button\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { ThemeEditorModal } from \"./ThemeEditorModal\";\nimport { IRouter } from \"../../ui/Router\";\nimport ColorizeIcon from \"@mui/icons-material/Colorize\";\n\ninterface IProps {\n router: IRouter;\n}\n\nexport function ThemeEditorButton({ router }: IProps): React.ReactElement {\n const [themeEditorOpen, setThemeEditorOpen] = useState(false);\n return (\n <>\n \n } onClick={() => setThemeEditorOpen(true)}>\n Theme Editor\n \n \n setThemeEditorOpen(false)} router={router} />\n >\n );\n}\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Link } from \"@mui/material\";\n\nexport function ThemeCollaborate(): React.ReactElement {\n return (\n <>\n \n If you've created a theme that you believe should be added in game's theme browser, feel free to{\" \"}\n \n create a pull request\n \n .\n \n \n Head over to the{\" \"}\n \n theme-sharing\n {\" \"}\n discord channel for more.\n \n >\n );\n}\n","import React, { useState } from \"react\";\nimport Button from \"@mui/material/Button\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport TextFormatIcon from \"@mui/icons-material/TextFormat\";\nimport { StyleEditorModal } from \"./StyleEditorModal\";\n\nexport function StyleEditorButton(): React.ReactElement {\n const [styleEditorOpen, setStyleEditorOpen] = useState(false);\n return (\n <>\n \n } onClick={() => setStyleEditorOpen(true)}>\n Style Editor\n \n \n setStyleEditorOpen(false)} />\n >\n );\n}\n","/**\n * React Subcomponent for displaying a location's UI, when that location is a Travel Agency\n *\n * TThis subcomponent renders all of the buttons for traveling to different cities\n */\nimport React, { useState, useEffect } from \"react\";\n\nimport { CityName } from \"../data/CityNames\";\nimport { TravelConfirmationModal } from \"./TravelConfirmationModal\";\n\nimport { CONSTANTS } from \"../../Constants\";\nimport { IPlayer } from \"../../PersonObjects/IPlayer\";\nimport { IRouter } from \"../../ui/Router\";\nimport { Settings } from \"../../Settings/Settings\";\n\nimport { use } from \"../../ui/Context\";\nimport { Money } from \"../../ui/React/Money\";\nimport { WorldMap } from \"../../ui/React/WorldMap\";\nimport { dialogBoxCreate } from \"../../ui/React/DialogBox\";\n\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\n\ntype IProps = {\n p: IPlayer;\n router: IRouter;\n};\n\nfunction travel(p: IPlayer, router: IRouter, to: CityName): void {\n const cost = CONSTANTS.TravelCost;\n if (!p.canAfford(cost)) {\n return;\n }\n\n p.loseMoney(cost, \"other\");\n p.travel(to);\n dialogBoxCreate(<>You are now in {to}!>);\n router.toCity();\n}\n\nexport function TravelAgencyRoot(props: IProps): React.ReactElement {\n const player = use.Player();\n const router = use.Router();\n const setRerender = useState(false)[1];\n const [open, setOpen] = useState(false);\n const [destination, setDestination] = useState(CityName.Sector12);\n function rerender(): void {\n setRerender((o) => !o);\n }\n\n useEffect(() => {\n const id = setInterval(rerender, 1000);\n return () => clearInterval(id);\n }, []);\n\n function startTravel(city: CityName): void {\n const cost = CONSTANTS.TravelCost;\n if (!player.canAfford(cost)) {\n return;\n }\n if (Settings.SuppressTravelConfirmation) {\n travel(player, router, city);\n return;\n }\n setOpen(true);\n setDestination(city);\n }\n\n return (\n <>\n Travel Agency\n \n \n From here, you can travel to any other city! A ticket costs{\" \"}\n .\n \n {Settings.DisableASCIIArt ? (\n <>\n {Object.values(CityName)\n .filter((city: string) => city != props.p.city)\n .map((city: string) => {\n const match = Object.entries(CityName).find((entry) => entry[1] === city);\n if (match === undefined) throw new Error(`could not find key for city '${city}'`);\n return (\n \n \n \n \n );\n })}\n >\n ) : (\n startTravel(city)} />\n )}\n \n travel(player, router, destination)}\n open={open}\n onClose={() => setOpen(false)}\n />\n >\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from \"react\";\nimport Editor, { Monaco } from \"@monaco-editor/react\";\nimport * as monaco from \"monaco-editor\";\n\ntype IStandaloneCodeEditor = monaco.editor.IStandaloneCodeEditor;\ntype ITextModel = monaco.editor.ITextModel;\nimport { OptionsModal } from \"./OptionsModal\";\nimport { Options } from \"./Options\";\nimport { isValidFilePath } from \"../../Terminal/DirectoryHelpers\";\nimport { IPlayer } from \"../../PersonObjects/IPlayer\";\nimport { IRouter } from \"../../ui/Router\";\nimport { dialogBoxCreate } from \"../../ui/React/DialogBox\";\nimport { isScriptFilename } from \"../../Script/isScriptFilename\";\nimport { Script } from \"../../Script/Script\";\nimport { TextFile } from \"../../TextFile\";\nimport { calculateRamUsage, checkInfiniteLoop } from \"../../Script/RamCalculations\";\nimport { RamCalculationErrorCode } from \"../../Script/RamCalculationErrorCodes\";\nimport { numeralWrapper } from \"../../ui/numeralFormat\";\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\nimport SearchIcon from \"@mui/icons-material/Search\";\n\nimport { NetscriptFunctions } from \"../../NetscriptFunctions\";\nimport { WorkerScript } from \"../../Netscript/WorkerScript\";\nimport { Settings } from \"../../Settings/Settings\";\nimport { iTutorialNextStep, ITutorial, iTutorialSteps } from \"../../InteractiveTutorial\";\nimport { debounce } from \"lodash\";\nimport { saveObject } from \"../../SaveObject\";\nimport { loadThemes } from \"./themes\";\nimport { GetServer } from \"../../Server/AllServers\";\n\nimport Button from \"@mui/material/Button\";\nimport Typography from \"@mui/material/Typography\";\nimport Link from \"@mui/material/Link\";\nimport Box from \"@mui/material/Box\";\nimport SettingsIcon from \"@mui/icons-material/Settings\";\nimport SyncIcon from \"@mui/icons-material/Sync\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Table from \"@mui/material/Table\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableBody from \"@mui/material/TableBody\";\nimport { PromptEvent } from \"../../ui/React/PromptManager\";\nimport { Modal } from \"../../ui/React/Modal\";\n\nimport libSource from \"!!raw-loader!../NetscriptDefinitions.d.ts\";\nimport { TextField, Tooltip } from \"@mui/material\";\n\ninterface IProps {\n // Map of filename -> code\n files: Record;\n hostname: string;\n player: IPlayer;\n router: IRouter;\n vim: boolean;\n}\n\n// TODO: try to remove global symbols\nlet symbolsLoaded = false;\nlet symbols: string[] = [];\nexport function SetupTextEditor(): void {\n const ns = NetscriptFunctions({} as WorkerScript);\n\n // Populates symbols for text editor\n function populate(ns: any): string[] {\n let symbols: string[] = [];\n const keys = Object.keys(ns);\n for (const key of keys) {\n if (typeof ns[key] === \"object\") {\n symbols.push(key);\n symbols = symbols.concat(populate(ns[key]));\n }\n if (typeof ns[key] === \"function\") {\n symbols.push(key);\n }\n }\n\n return symbols;\n }\n\n symbols = populate(ns);\n\n const exclude = [\"heart\", \"break\", \"exploit\", \"bypass\", \"corporation\", \"alterReality\"];\n symbols = symbols.filter((symbol: string) => !exclude.includes(symbol)).sort();\n}\n\n// Holds all the data for a open script\nclass OpenScript {\n fileName: string;\n code: string;\n hostname: string;\n lastPosition: monaco.Position;\n model: ITextModel;\n\n constructor(fileName: string, code: string, hostname: string, lastPosition: monaco.Position, model: ITextModel) {\n this.fileName = fileName;\n this.code = code;\n this.hostname = hostname;\n this.lastPosition = lastPosition;\n this.model = model;\n }\n}\n\nlet openScripts: OpenScript[] = [];\nlet currentScript: OpenScript | null = null;\n\n// Called every time script editor is opened\nexport function Root(props: IProps): React.ReactElement {\n const setRerender = useState(false)[1];\n function rerender(): void {\n setRerender((o) => !o);\n }\n const editorRef = useRef(null);\n const monacoRef = useRef(null);\n const vimStatusRef = useRef(null);\n const [vimEditor, setVimEditor] = useState(null);\n const [editor, setEditor] = useState(null);\n const [filter, setFilter] = useState(\"\");\n const [searchExpanded, setSearchExpanded] = useState(false);\n\n const [ram, setRAM] = useState(\"RAM: ???\");\n const [ramEntries, setRamEntries] = useState([[\"???\", \"\"]]);\n const [updatingRam, setUpdatingRam] = useState(false);\n const [decorations, setDecorations] = useState([]);\n\n const [optionsOpen, setOptionsOpen] = useState(false);\n const [options, setOptions] = useState({\n theme: Settings.MonacoTheme,\n insertSpaces: Settings.MonacoInsertSpaces,\n fontSize: Settings.MonacoFontSize,\n wordWrap: Settings.MonacoWordWrap,\n vim: props.vim || Settings.MonacoVim,\n });\n\n const [ramInfoOpen, setRamInfoOpen] = useState(false);\n\n // Prevent Crash if script is open on deleted server\n openScripts = openScripts.filter((script) => {\n return GetServer(script.hostname) !== null;\n });\n if (currentScript && GetServer(currentScript.hostname) === null) {\n currentScript = openScripts[0];\n if (currentScript === undefined) currentScript = null;\n }\n\n const [dimensions, setDimensions] = useState({\n height: window.innerHeight,\n width: window.innerWidth,\n });\n useEffect(() => {\n const debouncedHandleResize = debounce(function handleResize() {\n setDimensions({\n height: window.innerHeight,\n width: window.innerWidth,\n });\n }, 250);\n\n window.addEventListener(\"resize\", debouncedHandleResize);\n\n return () => {\n window.removeEventListener(\"resize\", debouncedHandleResize);\n };\n }, []);\n\n useEffect(() => {\n if (currentScript !== null) {\n updateRAM(currentScript.code);\n }\n }, []);\n\n useEffect(() => {\n function keydown(event: KeyboardEvent): void {\n if (Settings.DisableHotkeys) return;\n //Ctrl + b\n if (event.code == \"KeyB\" && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n props.router.toTerminal();\n }\n\n // CTRL/CMD + S\n if (event.code == \"KeyS\" && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n event.stopPropagation();\n save();\n }\n }\n document.addEventListener(\"keydown\", keydown);\n return () => document.removeEventListener(\"keydown\", keydown);\n });\n\n useEffect(() => {\n // setup monaco-vim\n if (options.vim && editor && !vimEditor) {\n try {\n // This library is not typed\n // @ts-expect-error\n window.require([\"monaco-vim\"], function (MonacoVim: any) {\n setVimEditor(MonacoVim.initVimMode(editor, vimStatusRef.current));\n MonacoVim.VimMode.Vim.defineEx(\"write\", \"w\", function () {\n // your own implementation on what you want to do when :w is pressed\n save();\n });\n MonacoVim.VimMode.Vim.defineEx(\"quit\", \"q\", function () {\n props.router.toTerminal();\n });\n // \"wqriteandquit\" is not a typo, prefix must be found in full string\n MonacoVim.VimMode.Vim.defineEx(\"wqriteandquit\", \"wq\", function () {\n save();\n props.router.toTerminal();\n });\n\n // Setup \"go to next tab\" and \"go to previous tab\". This is a little more involved\n // since these aren't Ex commands (they run in normal mode, not after typing `:`)\n MonacoVim.VimMode.Vim.defineAction(\"nextTabs\", function (_cm: any, args: { repeat?: number }) {\n const nTabs = args.repeat ?? 1;\n // Go to the next tab (to the right). Wraps around when at the rightmost tab\n const currIndex = currentTabIndex();\n if (currIndex !== undefined) {\n const nextIndex = (currIndex + nTabs) % openScripts.length;\n onTabClick(nextIndex);\n }\n });\n MonacoVim.VimMode.Vim.defineAction(\"prevTabs\", function (_cm: any, args: { repeat?: number }) {\n const nTabs = args.repeat ?? 1;\n // Go to the previous tab (to the left). Wraps around when at the leftmost tab\n const currIndex = currentTabIndex();\n if (currIndex !== undefined) {\n let nextIndex = currIndex - nTabs;\n while (nextIndex < 0) {\n nextIndex += openScripts.length;\n }\n onTabClick(nextIndex);\n }\n });\n MonacoVim.VimMode.Vim.mapCommand(\"gt\", \"action\", \"nextTabs\", {}, { context: \"normal\" });\n MonacoVim.VimMode.Vim.mapCommand(\"gT\", \"action\", \"prevTabs\", {}, { context: \"normal\" });\n editor.focus();\n });\n } catch {}\n } else if (!options.vim) {\n // Whem vim mode is disabled\n vimEditor?.dispose();\n setVimEditor(null);\n }\n\n return () => {\n vimEditor?.dispose();\n };\n }, [options, editorRef, editor, vimEditor]);\n\n // Generates a new model for the script\n function regenerateModel(script: OpenScript): void {\n if (monacoRef.current !== null) {\n script.model = monacoRef.current.editor.createModel(\n script.code,\n script.fileName.endsWith(\".txt\") ? \"plaintext\" : \"javascript\",\n );\n }\n }\n\n const debouncedSetRAM = useMemo(\n () =>\n debounce((s, e) => {\n setRAM(s);\n setRamEntries(e);\n setUpdatingRam(false);\n }, 300),\n [],\n );\n\n async function updateRAM(newCode: string): Promise {\n if (currentScript != null && currentScript.fileName.endsWith(\".txt\")) {\n debouncedSetRAM(\"N/A\", [[\"N/A\", \"\"]]);\n return;\n }\n setUpdatingRam(true);\n const codeCopy = newCode + \"\";\n const ramUsage = await calculateRamUsage(props.player, codeCopy, props.player.getCurrentServer().scripts);\n if (ramUsage.cost > 0) {\n const entries = ramUsage.entries?.sort((a, b) => b.cost - a.cost) ?? [];\n const entriesDisp = [];\n for (const entry of entries) {\n entriesDisp.push([`${entry.name} (${entry.type})`, numeralWrapper.formatRAM(entry.cost)]);\n }\n\n debouncedSetRAM(\"RAM: \" + numeralWrapper.formatRAM(ramUsage.cost), entriesDisp);\n return;\n }\n switch (ramUsage.cost) {\n case RamCalculationErrorCode.ImportError: {\n debouncedSetRAM(\"RAM: Import Error\", [[\"Import Error\", \"\"]]);\n break;\n }\n case RamCalculationErrorCode.URLImportError: {\n debouncedSetRAM(\"RAM: HTTP Import Error\", [[\"HTTP Import Error\", \"\"]]);\n break;\n }\n case RamCalculationErrorCode.SyntaxError:\n default: {\n debouncedSetRAM(\"RAM: Syntax Error\", [[\"Syntax Error\", \"\"]]);\n break;\n }\n }\n return new Promise(() => undefined);\n }\n\n // Formats the code\n function beautify(): void {\n if (editorRef.current === null) return;\n editorRef.current.getAction(\"editor.action.formatDocument\").run();\n }\n\n // How to load function definition in monaco\n // https://github.com/Microsoft/monaco-editor/issues/1415\n // https://microsoft.github.io/monaco-editor/api/modules/monaco.languages.html\n // https://www.npmjs.com/package/@monaco-editor/react#development-playground\n // https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-custom-languages\n // https://github.com/threehams/typescript-error-guide/blob/master/stories/components/Editor.tsx#L11-L39\n // https://blog.checklyhq.com/customizing-monaco/\n // Before the editor is mounted\n function beforeMount(monaco: any): void {\n if (symbolsLoaded) return;\n // Setup monaco auto completion\n symbolsLoaded = true;\n monaco.languages.registerCompletionItemProvider(\"javascript\", {\n provideCompletionItems: () => {\n const suggestions = [];\n for (const symbol of symbols) {\n suggestions.push({\n label: symbol,\n kind: monaco.languages.CompletionItemKind.Function,\n insertText: symbol,\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n });\n }\n return { suggestions: suggestions };\n },\n });\n\n (async function () {\n // We have to improve the default js language otherwise theme sucks\n const l = await monaco.languages\n .getLanguages()\n .find((l: any) => l.id === \"javascript\")\n .loader();\n // replaced the bare tokens with regexes surrounded by \\b, e.g. \\b{token}\\b which matches a word-break on either side\n // this prevents the highlighter from highlighting pieces of variables that start with a reserved token name\n l.language.tokenizer.root.unshift([new RegExp(\"\\\\bns\\\\b\"), { token: \"ns\" }]);\n for (const symbol of symbols)\n l.language.tokenizer.root.unshift([new RegExp(`\\\\b${symbol}\\\\b`), { token: \"netscriptfunction\" }]);\n const otherKeywords = [\"let\", \"const\", \"var\", \"function\"];\n const otherKeyvars = [\"true\", \"false\", \"null\", \"undefined\"];\n otherKeywords.forEach((k) =>\n l.language.tokenizer.root.unshift([new RegExp(`\\\\b${k}\\\\b`), { token: \"otherkeywords\" }]),\n );\n otherKeyvars.forEach((k) =>\n l.language.tokenizer.root.unshift([new RegExp(`\\\\b${k}\\\\b`), { token: \"otherkeyvars\" }]),\n );\n l.language.tokenizer.root.unshift([new RegExp(\"\\\\bthis\\\\b\"), { token: \"this\" }]);\n })();\n\n const source = (libSource + \"\").replace(/export /g, \"\");\n monaco.languages.typescript.javascriptDefaults.addExtraLib(source, \"netscript.d.ts\");\n monaco.languages.typescript.typescriptDefaults.addExtraLib(source, \"netscript.d.ts\");\n loadThemes(monaco);\n }\n\n // When the editor is mounted\n function onMount(editor: IStandaloneCodeEditor, monaco: Monaco): void {\n // Required when switching between site navigation (e.g. from Script Editor -> Terminal and back)\n // the `useEffect()` for vim mode is called before editor is mounted.\n setEditor(editor);\n\n editorRef.current = editor;\n monacoRef.current = monaco;\n\n if (editorRef.current === null || monacoRef.current === null) return;\n\n if (!props.files && currentScript !== null) {\n // Open currentscript\n regenerateModel(currentScript);\n editorRef.current.setModel(currentScript.model);\n editorRef.current.setPosition(currentScript.lastPosition);\n editorRef.current.revealLineInCenter(currentScript.lastPosition.lineNumber);\n updateRAM(currentScript.code);\n editorRef.current.focus();\n return;\n }\n if (props.files) {\n const files = Object.entries(props.files);\n\n if (!files.length) {\n editorRef.current.focus();\n return;\n }\n\n for (const [filename, code] of files) {\n // Check if file is already opened\n const openScript = openScripts.find(\n (script) => script.fileName === filename && script.hostname === props.hostname,\n );\n if (openScript) {\n // Script is already opened\n if (openScript.model === undefined || openScript.model === null || openScript.model.isDisposed()) {\n regenerateModel(openScript);\n }\n\n currentScript = openScript;\n editorRef.current.setModel(openScript.model);\n editorRef.current.setPosition(openScript.lastPosition);\n editorRef.current.revealLineInCenter(openScript.lastPosition.lineNumber);\n updateRAM(openScript.code);\n } else {\n // Open script\n const newScript = new OpenScript(\n filename,\n code,\n props.hostname,\n new monacoRef.current.Position(0, 0),\n monacoRef.current.editor.createModel(code, filename.endsWith(\".txt\") ? \"plaintext\" : \"javascript\"),\n );\n openScripts.push(newScript);\n currentScript = { ...newScript };\n editorRef.current.setModel(newScript.model);\n updateRAM(newScript.code);\n }\n }\n }\n\n editorRef.current.focus();\n }\n\n function infLoop(newCode: string): void {\n if (editorRef.current === null || currentScript === null) return;\n if (!currentScript.fileName.endsWith(\".ns\") && !currentScript.fileName.endsWith(\".js\")) return;\n const awaitWarning = checkInfiniteLoop(newCode);\n if (awaitWarning !== -1) {\n const newDecorations = editorRef.current.deltaDecorations(decorations, [\n {\n range: {\n startLineNumber: awaitWarning,\n startColumn: 1,\n endLineNumber: awaitWarning,\n endColumn: 10,\n },\n options: {\n isWholeLine: true,\n glyphMarginClassName: \"myGlyphMarginClass\",\n glyphMarginHoverMessage: {\n value: \"Possible infinite loop, await something.\",\n },\n },\n },\n ]);\n setDecorations(newDecorations);\n } else {\n const newDecorations = editorRef.current.deltaDecorations(decorations, []);\n setDecorations(newDecorations);\n }\n }\n\n // When the code is updated within the editor\n function updateCode(newCode?: string): void {\n if (newCode === undefined) return;\n updateRAM(newCode);\n if (editorRef.current === null) return;\n const newPos = editorRef.current.getPosition();\n if (newPos === null) return;\n if (currentScript !== null) {\n currentScript = { ...currentScript, code: newCode, lastPosition: newPos };\n const curIndex = openScripts.findIndex(\n (script) =>\n currentScript !== null &&\n script.fileName === currentScript.fileName &&\n script.hostname === currentScript.hostname,\n );\n const newArr = [...openScripts];\n const tempScript = currentScript;\n tempScript.code = newCode;\n newArr[curIndex] = tempScript;\n openScripts = [...newArr];\n }\n try {\n infLoop(newCode);\n } catch (err) {}\n }\n\n function saveScript(scriptToSave: OpenScript): void {\n const server = GetServer(scriptToSave.hostname);\n if (server === null) throw new Error(\"Server should not be null but it is.\");\n if (isScriptFilename(scriptToSave.fileName)) {\n //If the current script already exists on the server, overwrite it\n for (let i = 0; i < server.scripts.length; i++) {\n if (scriptToSave.fileName == server.scripts[i].filename) {\n server.scripts[i].saveScript(\n props.player,\n scriptToSave.fileName,\n scriptToSave.code,\n props.player.currentServer,\n server.scripts,\n );\n if (Settings.SaveGameOnFileSave) saveObject.saveGame();\n props.router.toTerminal();\n return;\n }\n }\n\n //If the current script does NOT exist, create a new one\n const script = new Script();\n script.saveScript(\n props.player,\n scriptToSave.fileName,\n scriptToSave.code,\n props.player.currentServer,\n server.scripts,\n );\n server.scripts.push(script);\n } else if (scriptToSave.fileName.endsWith(\".txt\")) {\n for (let i = 0; i < server.textFiles.length; ++i) {\n if (server.textFiles[i].fn === scriptToSave.fileName) {\n server.textFiles[i].write(scriptToSave.code);\n if (Settings.SaveGameOnFileSave) saveObject.saveGame();\n props.router.toTerminal();\n return;\n }\n }\n const textFile = new TextFile(scriptToSave.fileName, scriptToSave.code);\n server.textFiles.push(textFile);\n } else {\n dialogBoxCreate(\"Invalid filename. Must be either a script (.script, .js, or .ns) or a text file (.txt)\");\n return;\n }\n\n if (Settings.SaveGameOnFileSave) saveObject.saveGame();\n props.router.toTerminal();\n }\n\n function save(): void {\n if (currentScript === null) {\n console.error(\"currentScript is null when it shouldn't be. Unable to save script\");\n return;\n }\n // this is duplicate code with saving later.\n if (ITutorial.isRunning && ITutorial.currStep === iTutorialSteps.TerminalTypeScript) {\n //Make sure filename + code properly follow tutorial\n if (currentScript.fileName !== \"n00dles.script\") {\n dialogBoxCreate(\"Leave the script name as 'n00dles.script'!\");\n return;\n }\n if (currentScript.code.replace(/\\s/g, \"\").indexOf(\"while(true){hack('n00dles');}\") == -1) {\n dialogBoxCreate(\"Please copy and paste the code from the tutorial!\");\n return;\n }\n\n //Save the script\n saveScript(currentScript);\n\n iTutorialNextStep();\n\n return;\n }\n\n if (currentScript.fileName == \"\") {\n dialogBoxCreate(\"You must specify a filename!\");\n return;\n }\n\n if (!isValidFilePath(currentScript.fileName)) {\n dialogBoxCreate(\n \"Script filename can contain only alphanumerics, hyphens, and underscores, and must end with an extension.\",\n );\n return;\n }\n\n const server = GetServer(currentScript.hostname);\n if (server === null) throw new Error(\"Server should not be null but it is.\");\n if (isScriptFilename(currentScript.fileName)) {\n //If the current script already exists on the server, overwrite it\n for (let i = 0; i < server.scripts.length; i++) {\n if (currentScript.fileName == server.scripts[i].filename) {\n server.scripts[i].saveScript(\n props.player,\n currentScript.fileName,\n currentScript.code,\n props.player.currentServer,\n server.scripts,\n );\n if (Settings.SaveGameOnFileSave) saveObject.saveGame();\n return;\n }\n }\n\n //If the current script does NOT exist, create a new one\n const script = new Script();\n script.saveScript(\n props.player,\n currentScript.fileName,\n currentScript.code,\n props.player.currentServer,\n server.scripts,\n );\n server.scripts.push(script);\n } else if (currentScript.fileName.endsWith(\".txt\")) {\n for (let i = 0; i < server.textFiles.length; ++i) {\n if (server.textFiles[i].fn === currentScript.fileName) {\n server.textFiles[i].write(currentScript.code);\n if (Settings.SaveGameOnFileSave) saveObject.saveGame();\n return;\n }\n }\n const textFile = new TextFile(currentScript.fileName, currentScript.code);\n server.textFiles.push(textFile);\n } else {\n dialogBoxCreate(\"Invalid filename. Must be either a script (.script, .js, or .ns) or a text file (.txt)\");\n return;\n }\n\n if (Settings.SaveGameOnFileSave) saveObject.saveGame();\n }\n\n function reorder(list: Array, startIndex: number, endIndex: number): OpenScript[] {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n\n return result;\n }\n\n function onDragEnd(result: any): void {\n // Dropped outside of the list\n if (!result.destination) {\n result;\n return;\n }\n\n const items = reorder(openScripts, result.source.index, result.destination.index);\n\n openScripts = items;\n }\n\n function currentTabIndex(): number | undefined {\n if (currentScript !== null) {\n return openScripts.findIndex(\n (script) =>\n currentScript !== null &&\n script.fileName === currentScript.fileName &&\n script.hostname === currentScript.hostname,\n );\n }\n\n return undefined;\n }\n\n function onTabClick(index: number): void {\n if (currentScript !== null) {\n // Save currentScript to openScripts\n const curIndex = currentTabIndex();\n if (curIndex !== undefined) {\n openScripts[curIndex] = currentScript;\n }\n }\n\n currentScript = { ...openScripts[index] };\n\n if (editorRef.current !== null && openScripts[index] !== null) {\n if (openScripts[index].model === undefined || openScripts[index].model.isDisposed()) {\n regenerateModel(openScripts[index]);\n }\n editorRef.current.setModel(openScripts[index].model);\n\n editorRef.current.setPosition(openScripts[index].lastPosition);\n editorRef.current.revealLineInCenter(openScripts[index].lastPosition.lineNumber);\n updateRAM(openScripts[index].code);\n editorRef.current.focus();\n }\n }\n\n function onTabClose(index: number): void {\n // See if the script on the server is up to date\n const closingScript = openScripts[index];\n const savedScriptIndex = openScripts.findIndex(\n (script) => script.fileName === closingScript.fileName && script.hostname === closingScript.hostname,\n );\n let savedScriptCode = \"\";\n if (savedScriptIndex !== -1) {\n savedScriptCode = openScripts[savedScriptIndex].code;\n }\n const server = GetServer(closingScript.hostname);\n if (server === null) throw new Error(`Server '${closingScript.hostname}' should not be null, but it is.`);\n\n const serverScriptIndex = server.scripts.findIndex((script) => script.filename === closingScript.fileName);\n if (serverScriptIndex === -1 || savedScriptCode !== server.scripts[serverScriptIndex as number].code) {\n PromptEvent.emit({\n txt: \"Do you want to save changes to \" + closingScript.fileName + \"?\",\n resolve: (result: boolean | string) => {\n if (result) {\n // Save changes\n closingScript.code = savedScriptCode;\n saveScript(closingScript);\n }\n },\n });\n }\n\n if (openScripts.length > 1) {\n openScripts = openScripts.filter((value, i) => i !== index);\n\n let indexOffset = -1;\n if (openScripts[index + indexOffset] === undefined) {\n indexOffset = 1;\n if (openScripts[index + indexOffset] === undefined) {\n indexOffset = 0;\n }\n }\n\n // Change current script if we closed it\n currentScript = openScripts[index + indexOffset];\n if (editorRef.current !== null) {\n if (\n openScripts[index + indexOffset].model === undefined ||\n openScripts[index + indexOffset].model === null ||\n openScripts[index + indexOffset].model.isDisposed()\n ) {\n regenerateModel(openScripts[index + indexOffset]);\n }\n\n editorRef.current.setModel(openScripts[index + indexOffset].model);\n editorRef.current.setPosition(openScripts[index + indexOffset].lastPosition);\n editorRef.current.revealLineInCenter(openScripts[index + indexOffset].lastPosition.lineNumber);\n editorRef.current.focus();\n }\n rerender();\n } else {\n // No more scripts are open\n openScripts = [];\n currentScript = null;\n props.router.toTerminal();\n }\n }\n\n function onTabUpdate(index: number): void {\n const openScript = openScripts[index];\n const serverScriptCode = getServerCode(index);\n if (serverScriptCode === null) return;\n\n if (openScript.code !== serverScriptCode) {\n PromptEvent.emit({\n txt:\n \"Do you want to overwrite the current editor content with the contents of \" +\n openScript.fileName +\n \" on the server? This cannot be undone.\",\n resolve: (result: boolean | string) => {\n if (result) {\n // Save changes\n openScript.code = serverScriptCode;\n\n // Switch to target tab\n onTabClick(index);\n\n if (editorRef.current !== null && openScript !== null) {\n if (openScript.model === undefined || openScript.model.isDisposed()) {\n regenerateModel(openScript);\n }\n editorRef.current.setModel(openScript.model);\n\n editorRef.current.setValue(openScript.code);\n updateRAM(openScript.code);\n editorRef.current.focus();\n }\n }\n },\n });\n }\n }\n\n function dirty(index: number): string {\n const openScript = openScripts[index];\n const serverScriptCode = getServerCode(index);\n if (serverScriptCode === null) return \" *\";\n\n // The server code is stored with its starting & trailing whitespace removed\n const openScriptFormatted = Script.formatCode(openScript.code);\n return serverScriptCode !== openScriptFormatted ? \" *\" : \"\";\n }\n\n function getServerCode(index: number): string | null {\n const openScript = openScripts[index];\n const server = GetServer(openScript.hostname);\n if (server === null) throw new Error(`Server '${openScript.hostname}' should not be null, but it is.`);\n\n const serverScript = server.scripts.find((s) => s.filename === openScript.fileName);\n return serverScript?.code ?? null;\n }\n function handleFilterChange(event: React.ChangeEvent): void {\n setFilter(event.target.value);\n }\n function handleExpandSearch(): void {\n setFilter(\"\");\n setSearchExpanded(!searchExpanded);\n }\n const filteredOpenScripts = Object.values(openScripts).filter(\n (script) => script.hostname.includes(filter) || script.fileName.includes(filter),\n );\n\n // Toolbars are roughly 112px:\n // 8px body margin top\n // 38.5px filename tabs\n // 5px padding for top of editor\n // 44px bottom tool bar + 16px margin\n // + vim bar 34px\n const editorHeight = dimensions.height - (130 + (options.vim ? 34 : 0));\n const tabsMaxWidth = 1640;\n const tabMargin = 5;\n const tabMaxWidth = filteredOpenScripts.length ? tabsMaxWidth / filteredOpenScripts.length - tabMargin : 0;\n const tabIconWidth = 25;\n const tabTextWidth = tabMaxWidth - tabIconWidth * 2;\n return (\n <>\n
\n \n No open files\n \n Use nano FILENAME in\n \n the terminal to open files\n \n \n
\n >\n );\n}\n","/**\n * Uses the acorn.js library to parse a script's code into an AST and\n * recursively walk through that AST to replace import urls with blobs\n */\nimport * as walk from \"acorn-walk\";\nimport { parse } from \"acorn\";\n\nimport { makeRuntimeRejectMsg } from \"./NetscriptEvaluator\";\nimport { ScriptUrl } from \"./Script/ScriptUrl\";\nimport { WorkerScript } from \"./Netscript/WorkerScript\";\nimport { Script } from \"./Script/Script\";\nimport { areImportsEquals } from \"./Terminal/DirectoryHelpers\";\nimport { IPlayer } from \"./PersonObjects/IPlayer\";\n\n// Makes a blob that contains the code of a given script.\nfunction makeScriptBlob(code: string): Blob {\n return new Blob([code], { type: \"text/javascript\" });\n}\n\nexport async function compile(player: IPlayer, script: Script, scripts: Script[]): Promise {\n if (!shouldCompile(script, scripts)) return;\n // The URL at the top is the one we want to import. It will\n // recursively import all the other modules in the urlStack.\n //\n // Webpack likes to turn the import into a require, which sort of\n // but not really behaves like import. Particularly, it cannot\n // load fully dynamic content. So we hide the import from webpack\n // by placing it inside an eval call.\n await script.updateRamUsage(player, scripts);\n const uurls = _getScriptUrls(script, scripts, []);\n const url = uurls[uurls.length - 1].url;\n if (script.url && script.url !== url) {\n URL.revokeObjectURL(script.url);\n // Thoughts: Should we be revoking any URLs here?\n // If a script is modified repeatedly between two states,\n // we could reuse the blob at a later time.\n // BlobCache.removeByValue(script.url);\n // URL.revokeObjectURL(script.url);\n // if (script.dependencies.length > 0) {\n // script.dependencies.forEach((dep) => {\n // removeBlobFromCache(dep.url);\n // URL.revokeObjectURL(dep.url);\n // });\n // }\n }\n if (script.dependencies.length > 0) script.dependencies.forEach((dep) => URL.revokeObjectURL(dep.url));\n script.url = uurls[uurls.length - 1].url;\n script.module = new Promise((resolve) => resolve(eval(\"import(uurls[uurls.length - 1].url)\")));\n script.dependencies = uurls;\n}\n\n// Begin executing a user JS script, and return a promise that resolves\n// or rejects when the script finishes.\n// - script is a script to execute (see Script.js). We depend only on .filename and .code.\n// scripts is an array of other scripts on the server.\n// env is the global environment that should be visible to all the scripts\n// (i.e. hack, grow, etc.).\n// When the promise returned by this resolves, we'll have finished\n// running the main function of the script.\nexport async function executeJSScript(\n player: IPlayer,\n scripts: Script[] = [],\n workerScript: WorkerScript,\n): Promise {\n const script = workerScript.getScript();\n if (script === null) throw new Error(\"script is null\");\n await compile(player, script, scripts);\n workerScript.ramUsage = script.ramUsage;\n const loadedModule = await script.module;\n\n const ns = workerScript.env.vars;\n\n // TODO: putting await in a non-async function yields unhelpful\n // \"SyntaxError: unexpected reserved word\" with no line number information.\n if (!loadedModule.main) {\n throw makeRuntimeRejectMsg(\n workerScript,\n `${script.filename} cannot be run because it does not have a main function.`,\n );\n }\n return loadedModule.main(ns);\n}\n\nfunction isDependencyOutOfDate(filename: string, scripts: Script[], scriptModuleSequenceNumber: number): boolean {\n const depScript = scripts.find((s) => s.filename == filename);\n\n // If the script is not present on the server, we should recompile, if only to get any necessary\n // compilation errors.\n if (!depScript) return true;\n\n const depIsMoreRecent = depScript.moduleSequenceNumber > scriptModuleSequenceNumber;\n return depIsMoreRecent;\n}\n/** Returns whether we should compile the script parameter.\n *\n * @param {Script} script\n * @param {Script[]} scripts\n */\nfunction shouldCompile(script: Script, scripts: Script[]): boolean {\n if (script.module === \"\") return true;\n return script.dependencies.some((dep) => isDependencyOutOfDate(dep.filename, scripts, script.moduleSequenceNumber));\n}\n\n// Gets a stack of blob urls, the top/right-most element being\n// the blob url for the named script on the named server.\n//\n// - script -- the script for whom we are getting a URL.\n// - scripts -- all the scripts available on this server\n// - seen -- The modules above this one -- to prevent mutual dependency.\n//\n// TODO We don't make any effort to cache a given module when it is imported at\n// different parts of the tree. That hasn't presented any problem with during\n// testing, but it might be an idea for the future. Would require a topo-sort\n// then url-izing from leaf-most to root-most.\n/**\n * @param {Script} script\n * @param {Script[]} scripts\n * @param {Script[]} seen\n * @returns {ScriptUrl[]} All of the compiled scripts, with the final one\n * in the list containing the blob corresponding to\n * the script parameter.\n */\n// BUG: apparently seen is never consulted. Oops.\nfunction _getScriptUrls(script: Script, scripts: Script[], seen: Script[]): ScriptUrl[] {\n // Inspired by: https://stackoverflow.com/a/43834063/91401\n const urlStack: ScriptUrl[] = [];\n // Seen contains the dependents of the current script. Make sure we include that in the script dependents.\n for (const dependent of seen) {\n if (!script.dependents.some((s) => s.server === dependent.server && s.filename == dependent.filename)) {\n script.dependents.push({ server: dependent.server, filename: dependent.filename });\n }\n }\n seen.push(script);\n try {\n // Replace every import statement with an import to a blob url containing\n // the corresponding script. E.g.\n //\n // import {foo} from \"bar.js\";\n //\n // becomes\n //\n // import {foo} from \"blob://\"\n //\n // Where the blob URL contains the script content.\n\n // Parse the code into an ast tree\n const ast: any = parse(script.code, { sourceType: \"module\", ecmaVersion: \"latest\", ranges: true });\n\n const importNodes: Array = [];\n // Walk the nodes of this tree and find any import declaration statements.\n walk.simple(ast, {\n ImportDeclaration(node: any) {\n // Push this import onto the stack to replace\n importNodes.push({\n filename: node.source.value,\n start: node.source.range[0] + 1,\n end: node.source.range[1] - 1,\n });\n },\n ExportNamedDeclaration(node: any) {\n if (node.source) {\n importNodes.push({\n filename: node.source.value,\n start: node.source.range[0] + 1,\n end: node.source.range[1] - 1,\n });\n }\n },\n ExportAllDeclaration(node: any) {\n if (node.source) {\n importNodes.push({\n filename: node.source.value,\n start: node.source.range[0] + 1,\n end: node.source.range[1] - 1,\n });\n }\n },\n });\n // Sort the nodes from last start index to first. This replaces the last import with a blob first,\n // preventing the ranges for other imports from being shifted.\n importNodes.sort((a, b) => b.start - a.start);\n let transformedCode = script.code;\n // Loop through each node and replace the script name with a blob url.\n for (const node of importNodes) {\n const filename = node.filename.startsWith(\"./\") ? node.filename.substring(2) : node.filename;\n\n // Find the corresponding script.\n const matchingScripts = scripts.filter((s) => areImportsEquals(s.filename, filename));\n if (matchingScripts.length === 0) continue;\n\n const [importedScript] = matchingScripts;\n\n const urls = _getScriptUrls(importedScript, scripts, seen);\n\n // The top url in the stack is the replacement import file for this script.\n urlStack.push(...urls);\n const blob = urls[urls.length - 1].url;\n\n // Replace the blob inside the import statement.\n transformedCode = transformedCode.substring(0, node.start) + blob + transformedCode.substring(node.end);\n }\n\n // We automatically define a print function() in the NetscriptJS module so that\n // accidental calls to window.print() do not bring up the \"print screen\" dialog\n transformedCode += `\\n\\nfunction print() {throw new Error(\"Invalid call to window.print(). Did you mean to use Netscript's print()?\");}`;\n\n const blob = URL.createObjectURL(makeScriptBlob(transformedCode));\n // Push the blob URL onto the top of the stack.\n urlStack.push(new ScriptUrl(script.filename, blob, script.moduleSequenceNumber));\n return urlStack;\n } catch (err) {\n // If there is an error, we need to clean up the URLs.\n for (const url of urlStack) URL.revokeObjectURL(url.url);\n throw err;\n } finally {\n seen.pop();\n }\n}\n","import { toNative } from \"./toNative\";\nimport * as libarg from \"arg\";\n\nexport function Flags(vargs: string[]): any {\n return function (data: any): any {\n data = toNative(data);\n // We always want the help flag.\n const args: {\n [key: string]: any;\n } = {};\n\n for (const d of data) {\n let t: any = String;\n if (typeof d[1] === \"number\") {\n t = Number;\n } else if (typeof d[1] === \"boolean\") {\n t = Boolean;\n } else if (Array.isArray(d[1])) {\n t = [String];\n }\n const numDashes = d[0].length > 1 ? 2 : 1;\n args[\"-\".repeat(numDashes) + d[0]] = t;\n }\n const ret = libarg(args, { argv: vargs });\n for (const d of data) {\n if (!ret.hasOwnProperty(\"--\" + d[0]) || !ret.hasOwnProperty(\"-\" + d[0])) ret[d[0]] = d[1];\n }\n for (const key of Object.keys(ret)) {\n if (!key.startsWith(\"-\")) continue;\n const value = ret[key];\n delete ret[key];\n const numDashes = key.length === 2 ? 1 : 2;\n ret[key.slice(numDashes)] = value;\n }\n return ret;\n };\n}\n","import { Interpreter } from \"../ThirdParty/JSInterpreter\";\n\nconst defaultInterpreter = new Interpreter(\"\", () => undefined);\n\n// the acorn interpreter has a bug where it doesn't convert arrays correctly.\n// so we have to more or less copy it here.\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function toNative(pseudoObj: any): any {\n if (pseudoObj == null) return null;\n if (\n !pseudoObj.hasOwnProperty(\"properties\") ||\n !pseudoObj.hasOwnProperty(\"getter\") ||\n !pseudoObj.hasOwnProperty(\"setter\") ||\n !pseudoObj.hasOwnProperty(\"proto\")\n ) {\n return pseudoObj; // it wasn't a pseudo object anyway.\n }\n\n let nativeObj: any;\n if (pseudoObj.hasOwnProperty(\"class\") && pseudoObj.class === \"Array\") {\n nativeObj = [];\n const length = defaultInterpreter.getProperty(pseudoObj, \"length\");\n for (let i = 0; i < length; i++) {\n if (defaultInterpreter.hasProperty(pseudoObj, i)) {\n nativeObj[i] = toNative(defaultInterpreter.getProperty(pseudoObj, i));\n }\n }\n } else {\n // Object.\n nativeObj = {};\n for (const key of Object.keys(pseudoObj.properties)) {\n const val = pseudoObj.properties[key];\n nativeObj[key] = toNative(val);\n }\n }\n return nativeObj;\n}\n","import * as React from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport FirstPageIcon from \"@mui/icons-material/FirstPage\";\nimport KeyboardArrowLeft from \"@mui/icons-material/KeyboardArrowLeft\";\nimport KeyboardArrowRight from \"@mui/icons-material/KeyboardArrowRight\";\nimport LastPageIcon from \"@mui/icons-material/LastPage\";\n\ninterface TablePaginationActionsProps {\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange: (event: React.MouseEvent, newPage: number) => void;\n}\n\nexport function TablePaginationActionsAll(props: TablePaginationActionsProps): React.ReactElement {\n const theme = useTheme();\n const { count, page, rowsPerPage, onPageChange } = props;\n\n const handleFirstPageButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, 0);\n };\n\n const handleBackButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, page - 1);\n };\n\n const handleNextButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, page + 1);\n };\n\n const handleLastPageButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));\n };\n\n return (\n \n \n {theme.direction === \"rtl\" ? : }\n \n \n {theme.direction === \"rtl\" ? : }\n \n = Math.ceil(count / rowsPerPage) - 1}>\n {theme.direction === \"rtl\" ? : }\n \n = Math.ceil(count / rowsPerPage) - 1}>\n {theme.direction === \"rtl\" ? : }\n \n \n );\n}\n","import * as React from \"react\";\n\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { TableCell as MuiTableCell, TableCellProps } from \"@mui/material\";\n\nconst useStyles = makeStyles({\n root: {\n border: \"1px solid white\",\n width: \"5px\",\n height: \"5px\",\n },\n});\n\nexport const TableCell: React.FC = (props: TableCellProps) => {\n return (\n \n );\n};\n\ntype IProps = {\n onMouseEnter?: () => void;\n onClick?: () => void;\n color: string;\n};\n\nexport function Cell(cellProps: IProps): React.ReactElement {\n return (\n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { EventEmitter } from \"../utils/EventEmitter\";\nimport { Modal } from \"./React/Modal\";\n\nconst frames = [\n \"ttftfffttttttttttfffffffttftt1ttttttt111tttt1111111tttt1tt111tttt111111tttt1ttttttttttttttt111111111\\nttfttttttttttttttttfLLLftfffffffffftttt111tt11111ttffffftttt1111111111111111ttttttfttttttttt111111t1\\nttttttttttttttttffffLfftffffffffLLffttttttftt111ttfffffftttttttt111111ttttttffffttfffttttttt111111tt\\nttttttttttttttttfffLfttffffffLLffffttttttttttt1tfffffffffftttttt111111tffffffffftttfffftttt11111ttt1\\nttttttttttttffLfttfffttfffffffffttfftttttt1t1tt11tfffffftttttt111t111111ttffffLLffttfffftt111111tttt\\nttttttttttffLLLLfttttffLLLfttttftfLftttttttffffttttffffttttfftt11t111tt111ttfffLffttfftttttt1111tttt\\nttttttttffLLLLLLLffttfLLffttfffftfLfttttttffttt11111ttttffffffftt1111tft11111ttffffttt11tfftt11ttttt\\ntttttttfffLLLLLLLLfftffttttffLffftfftttttft1i;;::::;iitffffffffftt111tft1tttt1ttffLfttttfffffttttttt\\ntttttttfffLLLLLLLLfttttffftffffftfttttttff1:,,,,,,,,::itfffffffft11111111ttttttttttt1tfffffffffffttt\\ntttffttffLLLLLLLLLfttfftffffffffLLLftttttt;::,:::;;;;::1tfffftfft11111ttt1ttt1tfttt11ttffffffffLfttt\\ntffffffffLLLLLLLffftfLfffttfLLffLLLfttttti;;;iii11111;:i11ttffft111111tfft11t11tt1tttttfffLLLLLLfttf\\ntfffffttttfLLLffttttfffffttLLLLfLLLftttfti:;;;iiiiiiii;it111tt111t1111tffttfftt11ttftttfffLLLLLLffff\\nttttfttttffffftttttttttttttfLLLffLLfttttt1;;;;;;iiiiii;1tft11tt1111111tfftfffftttttttttttfLLfffttfff\\ntfffffffffftttfffffffffttffttLLfffLfttttt11i;;;;iiiiiii1tt11tfftt11111ttt1fffttt1tttttttttfffftttttt\\nttffffffffftttfffffffffttffftffttftttttff1ii;;;;iii1iii111tt1ttttt1111t111ffttffttfffffLffttttffffff\\nttffffffffttttffffffffttttttttttffftttttft1ii;;;ii1iii111tfft11ttt111111t1tt1tfft1ttffffLLftttLLLLLL\\ntttffffffffttfffffffftttttttt11fffftttt1t111iiii;iiiii11ttffft11111111ttttttt1tt11ttffffLfftttfLLLLf\\ntttttttffffttfffttttttttffttt11tffttttttt11ttii;;;iiii11i1ffftt1111111tttt111tttt11ttttffffftffLLLff\\ntfttttttttttttttttttttfffftttt11tfftttttt111t1i;;;iiii1i,,:;i1111t1111ttt111t1tfftt11111ttfftffffftt\\nttttfffftttttttfffftttffffttffttttft111tt11111i;;;iiii1;,,....,:::;i11tt111tt11tffftttttttt1tttttttt\\nt11ttffffftttffffffttttfffttffttttft1111111111;;;;;;;it;,...........,:it111ttt1tffftttttfft11ttfffff\\ntt1ttfffftt1ttfffft111tffttfttttttt1111t1i;:;11i1i;;1t1:,,............,itt11tt1tfftt1tfffffft1tffLLf\\ntfttttfttttt11tttt1ttt11ttttttftt111111i:,..:1111iii11;,...............;tt111t11ttttttttffttt11ffLLf\\ntfftttttttfftttttttffftt111ttffftt11i;,.,...,iiii;;;;:,,...............:1ttt1111ttfffttttft1tt1ttfft\\nttttttttttttttt11ttttttttttfffffft1:,..........::::::,,,...............,1ttttt11ttfffffttttffftttttt\\ntfffttttffffftt11ttttttttttfffffft1:...........:;::;:..................,1tttttt1ttfffffttttttttftttf\\ntfffttttfffffft1ttftttfftttttffft11:...........,:::::..................,1tttft11tfffffffttfffffffttf\\ntfffttttffffff11tttttttttttttttttt1;...........,::::,...................;t1t1111tfffffLfttfffffffttf\\ntfffttttfftttt11tttttttt1tfftttttt1:...........,::::,...... ............,1111tt11fffffLftttffttffttf\\ntttttttttttttt11tttttttt1tffftttft1:...........,:::,,....................it1ttt11tfffffftttffttffttt\\nttttt1tttttttt11ttttttttttffttttttt:...........,::,,.....................:111tt11tttttttt1tttttttttt\\nttttt1tttttttt11tftttttftttttttttt1;,:;:.......,:,,,....................,,1111t11ttttttt11ttttttfttt\\n1tttt1ttfffttt11ttffffffttttfffft11ii1i:.......,:,,,.....................,1tt1111ttttttt111tttttfttt\\n1ttt11tttttttt11tttttttttttttttttti;;;;:.......,:,,,....... .............,itt1111tttt11t111ttttttt1t\\n111111tttttttt11111111ttttttttttt1i;;;;:.......,:,,,......................itt11111111111111111111111\\n1111111111111111111111ttttttttttt1;;;;;:...... ,:,,,,.....................itt11t11111111111111111111\\n1111111111111111111111tttttttttt1;:,::;,...... ,:...,.....................ittttt11111111111111111111\\n111111111111111111111111tttttttt1i,..... .... .:........................,i1tttt11111111111111111111\\n1111111111111111111111111t11t11111;,....,,.... ,:::,,,...................,11ttttt11t1111111t11111111\\n11111111111111111111111111111111111iiiiii. ... .::::::,..................,11t1ttt111t11111tttttt1111\\n1111111111111111111111111111111111111111:.,.....::::::,..................:111tttttt1tttt11tttttt1111\\n1111111111111111111111111111111111111111:::,...,::::;::,..,,.............:11tt1ttttttttttttttttt1111\\n\",\n \"ttftfffttttttttttffffffftfftttttttttt111tttt1111111ttttttt111tttt111111tttttttttttttttttttt11111111t\\nttfttttttttttttttftfLLLftfffffffffftt11111tt11111ttffffttttt1111111111111111ttttttfttttttttt111111tt\\nttftttttttttttttffffLftttfffffffLLLfttttttftt111ttfffffftttttttt111111tttttffffftfffftttttt1111111tt\\nttttttttttttttttfffLLttffffffLLffffttttttttttt1tffffffffffttttttt11111tffffffffftttfffffttt1111ttttt\\nttttttttttttffffttfffttfffffffffttfftttttt1tttt1ttftfffftt1ttt111t111111ttffffLLffttfffft1111111tttt\\nttttttttttffLLLLfttttffLLLfttttttfLftttttttfft11i;;:;;i11ttfftt11t111tt111tttffffftttttttttt111ttttt\\nttttttttffLLLLLLLffttfLLLfttfffftfLLttttttfff1;,,,,,,,,:;tffffft11111tft11111ttffffttt11tffftt1ttttt\\ntttttttfffLLLLLLLLfftffttttffLffftfftttttfft1;:,,,,,::::,;tffftttt111tft1tttt1ttffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffftffffftfftttttfffti:;;;iiii11i;:tffffft11111111ttftttttttt1ttffffffffffttt\\ntttffttffLLLLLLLLLftffftfLftfftfLLLftttttfft::i;iiiiii11i:1ffftft11111ttt1ttt1ttttt11ttfffffLLfLfttt\\nttfLfffffLLLLLLLLfftfLLfffffLfffLLLfttttt1tt;:;;;;;iiiiiii1tffft11111tffft11t11tt1tttttfffLLLLLLffff\\ntffftfttttfLLLffttttfffffttLLLLfLLLftttft111i;;;;;;iiiiii111tt111t1111tffttfftt11tfft1tfffLLLLLLLffL\\ntttfftttttffLftttttttttttttfLfLffLLfttttttt1iii;;;;;ii11i1t11t11111111tffttfffttttttt11ttfLLLLffftff\\nttfLffffffftttfffffffffttfftfLLfffLftttttfft1ii;;;;iii1i1tt1tfftt11111ttt1tffttt1ttt1tttttffffttffft\\nttffffffffftttffffffffttfffftffffftttttfffft111;;;;iiii1111t1ttttt1111tt11ffttfftttfffffLfttttfffffL\\nttffffffffttttffffffffttttttttttffftttttttt11ttii;iiiiii11tft11ttt111111t11t1tfft1tfffffLLftttLLLLLL\\n1ttffffffffttfffffffftttttttt11ffffttttt1111tftiii;;iiii1;,;1111111111tttt11111111ttffffLfftttffLLLf\\nttttttttfffttfffttttttttffttt11tffftttttt11ttf1;;;i;iiii1:,,.,,::;ii11tttt111tttt11ttffffffftffLLLff\\ntfttttttttttttttttttttfffftttt11tfftttttt111tt1;;;i;;ii1t:,,........,:;1t111t1tfftt11111ttfftffffftt\\ntftttffffttttttfftftttffffttffttttftt11tt111i;;;;;;;;;it1,,............,;11tt11tffffttttttt1tttttttt\\ntttttffffftttfffffft1ttffftfffttttft111111;:,.;iii;;;i11,.,.............,1tttt1tffftttttfft111tfffff\\n1tttffffftt1ttfffftt11tffttfttttttt1111i;,....,1iii;ii;,................,111tt1tfft11tffffftt1tLffLf\\ntftttfftt1ttt1tttt1tttt1ttttttttt1111;:,.......i1;;;:::.................,it11t11ttttttttffftt11fffLf\\ntfftttttttfftt1111ttfftt11ttfffftt1ti..........:i;::;:,..................ittt111t1tffttttft1tt1tffft\\nttttttttttttttt11tttttttt1tffffffftti,.........,::::::,..................itttt11ttffffftttttfftttttt\\ntfffttttfffffft11ttttttttttffffffft1i,.........,:,:::,...................,1tttt11tfffffttttttttffttf\\ntfffttttfffffft11tftttfftttttffft1111:.........,:,:::,....................;tt111tfffffffttfffffffttf\\ntfffttttfffffft1tttttttftttttttttt111;.........,:,::,,....................,111111fffffLfttfffffffttf\\ntffftttttttffft11tttttttttffttttfft11i.........,:.:,,......................:1tt11fffffLftttffttffttf\\ntttttttttttttt111ttttttt1tffftttfft111:....... ,:.:,,.......................1tt11tfffffftttffftffttt\\nttttt1tttttttt11ttttttttttfttttttft111i,...... ,:,,,,......................,itt11ttttttt11ttttttfttt\\nttttt1tttttttt11tfttttfftttttffttt1111i,...... ,:.,,,......................:11111ttttttt11ttttttfttt\\n1tttt1ttftfttt11tfffffffttttfffft11111,....... ,,.,,....... ...............it1111ttttttt111tttttfttt\\n1tttt1tttttttt11ttttttttttttttttt1111;,....... ,,.,,......................:tt11111ttt11t111ttttttt1t\\n11t111tttttttt111t1111tttttttttt1iiii:,,...... ,,.........................;t111111111111111111111111\\n111111111tt11111111111ttttttttt1;;iiii:....... ,,............ ...........;tttt1111111111111111111111\\n1111111111111111111111ttttttttt1;;;iii;... ....,::::,....,:::,,.........;1ttttt111111111111111111111\\n111111111111111111111111tttttttt1i;;ii: .,....,:::::... .;;;;;:,.....,;1ttttttttt111111111111111111\\n1111111111111111111111111tt1111111i,,.,:;i: ...,:::::.....:;;;;;:.....,1ttttttttt11t1111111t11111111\\n11111111111111111111111111111111111:.:1tti,....,:::::.... ,;;;;;;,.....ittttttttt111t11111ttttt11111\\n1111111111111111111111111111111111111ttt;,,....,:::::,... .,;;;;:,.,,..:ttttttttttt1tttt11tttttt1111\\n11111111111111111111111111111111111111t1,,,....:;;::::,.....:;;;:......,1ttttttttttttttttttttttt1111\\n\",\n \"ttftffftttttttttffffffLftfftttttttttt111tttt1111111tttt1tt111tttt111111tttttttttttttttttttt11111111t\\nttfttttttttttttttfffLLLftfffffffffttt11111tt11111ttfffft1ttt1111111111111111tttttffttttttttt111111tt\\nttftttttttttttttffffLffttfffffffLLLfttttttfttt11tffffffftttttttt111111tttttffffftfffftttttt1111111tt\\nttttttttttttttttfffLLttffffffLLffffttttttttttt1ttt1iiiii1tttttttt11111tffffffffftttfffffttt1111t1tt1\\nttttttttttttffffttffftffffffffffttffttttt11tttt1i::,,,,,,:;111111t111111ttffffLLffttfLfftt11111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfft1i;,,,,,,,,,:;ttt11t111tt111tttffffftttftttttt111ttttt\\nttttttttffLLLLLLLffttfLLLfttfffftfLLtttttffffti;::;;;;;iii::1ftt11111tft11111ttffffttt11tffftt1ttttt\\ntttttttfffLLLLLLLLLftffttttffLffftffttttffffft;:;iiii11111i:iftttt111ttt1tttt11tffLfttttfffffttttttt\\ntttttttffLLLLLLLLLfttttffftffLLftfftttttffffft;:;;;;;iiiiii;1fftt11111111ttftttttttt1ttffffffffffttt\\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttttffffti;;;;;;;ii;iiitffft11111ttt1ttt1tfttt11ttfffffLLfLfttt\\nttfLfffffLLLLLLLLffffLLfffffLfffLLLLtttttttff1iii;;i;;iii111tfft111111ffft11t11tt1tttttfffLLLLLLffff\\ntffftftttffLLLffttttfffffttLLLLfLLLffttftt11t1iii;;;;;iiiii1tt111t1111tffttfftt11tfft1tfffLLLLLLLfff\\nttffftttttffLftttttttttttttfLLLffLLftttttttft111i;;;;iiii1111111111111tffttfffttttttt11ttfLLffffftff\\nttfLffffffftttfffffffffttfttfLLfffLftttttfffft11i;;;;iiii1t1ttttt11111ttt1tffttt11ttttttttfffftfttft\\nttffffffffftttffffffffttfffftffffftttttfffft11t1i;;;;;iii1ii1ttttt1111t111ffttfft1tfffffLfttttfffffL\\nttffffffffttttffffffffttttttttttffftttttttt11tft1i;;;;iii1i,:;i1ttt11111t11t1tfft1ttffffLLfttfLLLLLL\\ntttffffffffttfffffffftttttttt11ffffttttt1111tfti;ii;;iiii1;,,...,:;ii1tttt1111tt11ttffffffftttffLLLf\\nttttttttfffttfffttttttttffttt11tffftttttt11t1iii;;ii;;;i1t:,.........,:;1t111ttt111ttffffffftffLLLLf\\ntfttttttttttttttttttttfffftttt11tfftt11tt1i:,.:;;;i;;;itti,,............,;1111ttttt11111ttfftffffftt\\ntfttfffftttttttfffftttffffttffttttft1111i:....,;;;ii;i11;.,,.............:1tt1ttffffttttttt1ttttttft\\ntttttffffftttffftffttttffftfffttttft1i:,.......:;;;;;;;:,................:tttt1tffftttttfft11ttfffff\\n1t1tffffftt1ttfffftt11tffttftttttttt1,.........,ii;;;;;,.................:11tt1tfft11tfffffft1fLLfLf\\ntftttfftt1ttt1tftt1ttt11ttttttttt111i,.........,11;:;;:,.................,1t1t11ttttttttfftt111fffLf\\ntfftttttttffttt111ttfftt11ttffffftt11,.........,i;::::,..................,1tt11111ffft1ttt11tt1tffft\\nttttttttttttttt11tttttttt1tffffffft11;..........::::::,...................;tt1111tfffftttttffftttttt\\ntfffttttfffffft11ttttttttttffffffft11:..........:::::,..,;:,...............ittt1tttttffttttttttffttf\\ntfffttttfffffft11tftttffttttfffft1111:..........:::::,..;1i;:,..............1t11tfffffffttfffffffttf\\ntfffttttfffffft1tttttttftttttttttt111;..........::,:,...;ii;;;,.............:1111tffffLfttfffffffttf\\ntffftttttttfft11ttttttttttfftttttft11i,.........::,,,...;;;;;i:..............;111tffffLfttfffttffttf\\ntttttttttttttt111tttttttttffftttfft11i,.........::,,,...;;;;;i:..............:111tfffffftttffttffttt\\ntttttttttttttt11ttttttttttfftttttft111:.........:,,,....::;;;;:.............,1t11ttttttt11tttttffttt\\nttttt1tttttttt11tfttttfftttttfftttt111:.........:,,,......,::::..,.........,i1111ttttttt11ttttttfttt\\n1tttt1ttfttttt11tfffffffttttfffft1111i:,........:,,,..... .......,,...... .it1111ttttttt111tttttft1t\\n1tttt1tttttttt11ttttttttttttttttt1iiii;,........:........... ...........:itt11111ttt1t1111ttttttt1t\\n111111tttttttt111tt111tttttttttti;;;iii:... ....:,,...................:i1tttt11111111111111111111111\\n111111111tt11111111111tttttttttt1;;;;;;;. .,....::::..................:1tttttt1111111111111111111111\\n1111111111111111111111ttttttttttt1i;;::..:;1,...::::...................;ttttttt111111111111111111111\\n1111111111111111111111111tttttttt111i,.,it1;....::::,..................,1ttttttttt111111111111111111\\n1111111111111111111111111tttt11111111ii1t1i:...,::::,........,..........itttttttt11t1111111tt1t11111\\n11111111111111111111111111111111111111tt1;:....::::;:.......,...........:1ttttttt111t11111ttttt11111\\n111111111111111111111111111111111111111ti,,....:;:;::,..................,ittttttttt1tttt11tttttt1111\\n111111111111111111111111111111111111111t:,:.,.:;;;;:::,..................;111t1ttttttttttttttttt1111\\n\",\n \"ttftffftttttttttffffffLftfftttttttttt111tttt1111111tttt11t111tttt111111tttttttttttttttttttt11111111t\\nttfttttttttttttttfffLLLftfffffffffttttt1111t11111ttffffftttt1111111111111111tttttfftttttttt1111111tt\\nttftttttttttttttffffLffttffffffffLLfttttttfttt11ttt1iiii;i11tttt111111tttttffffftffffttttttt111111tt\\nttttttttttttttttfffLLttffffffLLffffttttttttttt1tt1::,,,,,,:;1ttt111111tfftfffffftttfffffttt1111t1tt1\\nttttttttttttffffttffftffffffffffttfftttttt1ttt11i;:,,,,,,,,,:1111t1111111tffffLLffttfLfftt11111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLftttttttffft1;:::;;;;;;;::it11t111tt111tttffffftttfttttt1111ttttt\\nttttttttffLLLLLLLffttfLLLfttfffftfLLtttttfffffti:;;ii111111i:itt11111tft11111ttffffttt1ttffftt1ttttt\\ntttttttfffLLLLLLLLLftffftttffLffftffttttfffffft;:;;;;;iiiiii;ittt1111ttt1tttt11tffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffftffLLftfftttttffffffti;;;;;;;ii;iiitttt11111111ttftttttttt1ttffffffffffttt\\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttttfffff1iii;;i;;i1i1i1tttt11111ttt1ttt1tfttt111tfffffLLfLfttt\\nttfLffffffLLLLLLLffffLLfffffLfffLLLftttttttfft1i;;;;;;;iiiiitfft111111ffft11t11tt1tttttffffLLLLLffft\\ntffftfttttfLLLffttttffffftfLLLLfLLLftttftt1111111i;;;;iiii111t111t1111tffttfftt11tfft1tffLLLLLLLLfff\\nttffftttttffLftttttttttttttfLLLffLLftttt1tttt11tti;;;iiiii111111111111tffttffftttttttt1ttfLLLfffffff\\nttfLffffffftttfffffffffttfttfLLfffLftttttffft1111i;;;;;ii111tfttt11111ttt1tffttt11ttttttttfLfftfttft\\nttffffffffftttfffffffffttffftffffftttttfffft11t11i;;;;iii1i:;1ttft11111111ffttfftttfffffLfttttfffffL\\nttffffffffttttffffffffttttttttttffftttttft111tttiii;;iiii1;,,,:;i1111111111t1tfft1ttffffLLftttfLLLLL\\ntttffffffffttffffffffttttttttttfffftttt1111i;:;iiii;;;i;11:,,.....,:;i1tft1111tt111tffffLfftttffLLLf\\nttttttttfffttfffttttttttfftt111tfffttt11i;,,..:i;;;i;ii1t1,,..........,:i1111ttt1111tffffffftffLLLLf\\ntfttttttttttttttttttttffffttttt1tffti;:,,.....,;;;iiii1ti,,,.............;1111ttttt11111ttfftffffftt\\ntttttffffttttttfffftttffffttffttttf1:.........,;:;;;;;;;,.,,,............:1tt1ttffff11ttttt1ttttttft\\ntttttffffftttffftfft1ttffftfffttttf1,..........,;;;;;;;:.:ii;;:,.........:tttt1tfffttttffft111tfffff\\n1tttffffftt1ttfffftt11tffttfttttt1t1,...........ii;;;::,,;i;;ii:.........:tttt1tfft11tfffffft1fLLfLf\\ntftttffttttt11tftt1tttt1ttttttttt11i,..........,1i;;::,.:i;;;;i:.........,1t1t11ttttttttfftt111fffLf\\ntfftttttttffttt11tttffttt1tttffft11i,..........,ii;:::,.,:;;iii:..........it111111tfft1ttt11tt1tffft\\nttttttttttttttt11tttttttt1tfffffftti,...........:::::,....:;;ii:..........:tt111ttfffftttttffftttttt\\ntfffttttfffffft11ttttttttttfffffft1i,...........:::::,.....,:;;:.... ......,1t111ttttffttttttttffttf\\ntfffttttfffffft11tftttffttttfffft111:...........:::::,........,..,..........,1111tffffffttfffffffttf\\ntfffttttfffffft1tttttttftttttttttt11:...........::,:,........ ...:;,.........:111tffffLfttfffttffttf\\ntffftttttttfft11ttttttttttffttttttti,...........:::,,.............,...........,i1tffffLfttfffttffttf\\ntttttttttttttt111tttttttttffftttfft;,:;:........:::,.............. ...........:11tfffffftttffttffttt\\ntttttttttttttt11ttttttttttfftttttftii1i;:.......:::,.......... ..............:t111tttttt11tttttffttt\\nttttt1tttttttt11tfttttfftttttffttt1ii;ii;,......::,,........................:1111ttttttt11ttttttfttt\\n1tttt1ttfttttt11tfffffffttttfffft11i;;ii;,......:,,,..........:........ .;t1111ttttttt111tttttft1t\\n1tttt1tttttttt11tttttttttttttttttt11;:;i:,,.....:,.................. .;i;;1tt1111tttt1t1111ttttttt1t\\n111111tttttttt111t111ttttttttttttt11i:,,:1;....,::....................:1ttttt11111111111111111111111\\n111111111tt1111111111tttttttttttttt11i;;1t:....:::::...................;tttttttt11111111111111111111\\n1111111111111111111111ttttttttttttt111ttt1,,,.,:::::,..................,1ttttttt11111111111111111111\\n111111111111111111111111tttttttttt1111111i,::.,;::;:,...................;ttttttttt111111111111111111\\n1111111111111111111111111ttttttt11111111t;.,,.,;;;;;,...................,1ttttttt11t1111111tttt11111\\n111111111111111111111111111111111111111t1:..,,:;;;;;:,...................;ttttttt111t11111ttttt11111\\n111111111111111111111111111111111111111ti,,,::;;;;;;;:,..................,1tttttttt1tttt11tttttt1111\\n111111111111111111111111111111111111111t;,,::,;;;ii;;::,..................it1tttttttttttttttttt11111\\n\",\n \"ttftffftttttttttffffffLftfftttttttttt111tttt1111111tttt111111tttt1111111ttttttttttttttttttt11111111t\\nttfttttttttttttttfffLLLftfffffffffttttt111tt11111ttffffftttt1111111111111111tttttfftttttttt1111111tt\\nttftttttttttttttffffLffttfffffffLLLftttttttttt11ttt1iiii;i11tttt111111ttttttfffftffffttttttt111111t1\\nttttttttttttttttfffLLttffffffLLffffttttttttttt1ttt;:,,,,,,,:itttt11111tfftfffffftttfffffttt1111t1ttt\\nttttttttttttffffttffftffffffffffttfftttttt1tttt11i:,,,,,,,,,:i111t1111111tffffLLffttfLfft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLftttttttffft1;::;;;;;;;;;,;t111111tt111tttffffftttftt1tt1111ttttt\\nttttttttffLLLLLLLffttfLLffttfffftfLLtttttffffff1,:iiii111111;:tt11111tft11111ttffffttt11tffft11ttttt\\ntttttttfffLLLLLLLLLftffftttffLffftffttttfffffffi:;;;;;iiiii1;;ttt1111ttt1tttt11tffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffftffLLftfftttttfffffff1;;;;;;;ii;;ii1ttt11111111ttftttttttt1ttffffffffffttt\\ntttfftfffLLLLLLLLLffffftfLftffffLLLftttttfffff1iiiiii;;iiii1itttt11111ttt1ttt11tttt11ttfffffLLfLfttt\\ntffLLffffLLLLLLLLffffLLftffLLLffLLLftttttttffftiii;;;;;ii1ii1tft111111ffft11t11tt1tttttffffLLLLLffft\\ntfffffttftfLLLffttttfffffttLLLLfLLLftttft111tt111i;;;;iiiii1tt111t1111tffttfftt11tfft1tffLLLLLLLLfff\\nttttfttfffffLftttttttttttttfLLLffLLftttt1tttt11tti;;;iiiii111t11111111tffttffftttttttt1ttfLLLfffffff\\nttffffffffftttfffffffffttfftfLLfffLftttttffft11t1i;;;;;iii11ttttt11111ttt1tffttt11ttttttttfLfftftttt\\nttffffffffftttfffffffffttffftffftftttttffft111t11i;;;;iii1ii11tttt1111tt11ffttfftttfffffLfttttffffff\\nttffffffffttttffffffffttttttttttffftttttttt11111iii;;iiii1;,:;1tttt11111t11t1tfft1ttffffLLftttfLLLLL\\ntttffffffffttffffffffttttttttt1tffftttt11i;:,:i;;i;;;;;i11,,..,,:;i111tttt1111tt11ttffffLfftttffLLLf\\nttttttttfffttfffttttttttffttt11ttff1ii;:,....,;::;i;;i11ti,,.......,:;ittt111ttt1111ttffffffttfLLLLf\\ntfttttttttttttttttttttfffftttt11tff;,,........;;;;iii1tti,,,,:;;::,....,i11111ttttt11111ttfftffffftt\\ntfttfffffttttttfffft1tffffttfft1ttt:..........:;;;;;;;i;...,;i;iii:.....,i1tt1ttffff11ttt1t1ttttttft\\nttttfffffftttfffffft11tffftffftttti,..........,:;;;;;;;,...,;;iiii,......;tttt1tffftttttftt111tfffff\\n1tttffffftt1ttfffftt111ffttft11tt1;,...........;i;;;;;:,.....:;iii,......;tttt1tfft11tffffftt1fLLfLf\\ntttttffttttt11tftt1tttt1tttt1tttti,............;1;::;;,......,;iii,......;t11t11ttttttttfftt111fffLf\\ntfftttttttffttt111ttfftt111ttfffti.............;i;::::,.......,;;;,......;ttt11111tfft1tttt1tt1tffft\\nttttttttttttttt11ttttttt11tffffffi,............,::;:::,..........,.......:ttt1111tfffftt1tttfftttttt\\ntfffttttfffffft11tttttttttttffffti,............,:::::,..............,....,ittt11ttttttft1ttttttffttf\\ntfffttttfffffft11tffttff11t1tfff1;...... ....,.,:::::,.....................;11111tffffffttfffffffttf\\ntfffttttfffffft1tttttttfttttttti:,......:iiii;,,:::,:.......................,;111tffffffttfffttffttf\\ntffftttttttfft11ttftttttttfftti,,::,.,:;1i;;;;.,::::,.........................,i1tffffLfttfffttffttf\\ntttttttttttttt111ttttttt1ttfft1:::,,,:,:;;;;i:.,:::,,..........................;1tfffffftttffttffttt\\nttttt1tttttttt11ttttttttttfttt1;,...,...:;;;:, ,:::,..........................;11ttttttt11ttttttfttt\\nttttt1tttttttt11tfttttfftttttfti,..,....,,,....,:::,.........................:111ttttttt11ttttttfttt\\n1tttt1ttfttttt11tfffffffttttffft1;::::,,.......,:,:,.................. .:1111ttttttt111tttttfttt\\n1tttt1tttttttt11ttttttttttttttttttt11111:......,:,,,..................,::,:1tt1111ttt1t1111ttttttt1t\\n111111tttttttt111t1111tttttttttttt111111:......,,.....................,1tttttt1111111111111111111111\\n1111111111t11111111111ttttttttttttt11111:......,:,,....................:1t1ttttt11111111111111111111\\n1111111111111111111111ttttttttttttt1111t:......,;;::....................:1ttttttt1111111111111111111\\n111111111111111111111111ttttttttt1111111:......,::::,...................,itttttt11111111111111111111\\n111111111111111111111111111tttt111111111:......,;;::,....................:1ttttttt1tt11111ttttt11111\\n1111111111111111111111111111111111111111:......:;;;::,...................,ittttttt11t11111ttttt11111\\n11111111111111111111111111111111111111t1:......:;i;;::,...................:11tttttt1tttt11ttttt11111\\n1111111111111111111111111111111111111111,......:;;;;;::,..................,1tttttttttttttttttttt1111\\n\",\n \"ttftfffttttttttttfffffLftfftttttttttt111tttt1111111tttt111111ttttt11111tttttttttttttttttttt11111111t\\nttfttttttttttttttfffLLLftffffffffftttttt111111111ttfffftt1tt1111111111111111ttttttftttttttt1111111tt\\nttftttttttttttttffffLftttfffffffLLLft1tttttft111tfftttfttttttttt111111ttttttfffftffffttttttt11111tt1\\nttttttttttttttttfffLfttffffffLLffffttttttttttt1ttti;;;;::;i1tttt111111tffffffffftttfffffttt11111ttt1\\ntttttttttttfffffttffftffffffffffttfftttttt1ttt111i,,,,,,,,,;11111t1111111tffffLLffttfLfft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLftttttttffft1i::,,,,,,,,,:1t11t111tt1111ttffffftttftt1tt1111ttttt\\nttttttttffLLLLLLLffttfLLLfttfLfftfLLtttttfffffti:;;iiiiiiii::1tt11111tftt1111ttffffttt11tffft11ttttt\\ntttttttfffLLLLLLLLLftffftttffLffftfftttttffffft::;;iii1i111i:1ttt1111ttt1tttt11tffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffftffLfftfftttttfffffft;;;;;;;iiiiii;tttt11111111ttftttttttt11tffffffffffttt\\ntttfftfffLLLLLLLLLfttfftfLfffffffLLftttttfffft1ii;;;;;iiiiiitfttt11111ttt1ttt11tttt11ttfffffLLfLfttt\\nttfLLfffffLLLLLLLfftfLLftfffLLffLLLftttttttfftiii;;i;;ii111itfft111111tfft11t11tt1tttttfffLLLLLLLfff\\ntfffffttftfLLLffttttffffftfLLLLfLLLftttft111tt1iii;;;;iiiii1tt111tt111tffttfftt11tfftttffLLLLLLLLfff\\nttttfttffttffftttttttttttttfLLLffLLftttt1tttt11t1i;;;iiii1111t11111111tffttffftttttttt1ttfLLLfffffff\\nttfLffffffftttfffffffffttftttfLfffLftttttfffft11i;;;;iiii111tfttt11111ttt1fffttt1ttt1tttttfLLffftttt\\nttffffffffftttfffffffffttfftttfttttttttffft11111i;;;;;iii1tt11tttt1111t111ffttffttfffffLLfttttfLffff\\nttffffffffttttffffffffttttttttttffftt11ttt1111t1i;;;iii1i1itt11ttt111111t11t1ttft1ttffffLLftttfLLLLL\\ntttffffffffttfffffffftttttt1111tffftttt11i;::i1iii;;;iii1i,:;i11t11111tttt1111tt11ttffffLfftttffLLLf\\nttttttttfffttfffttttttttffttt11ttft1ii;:,....;i;;;ii;;i1t:,...,:;i1111tttt111ttt1111tttffffftfLLLLLf\\ntfttttttttttttttttttttfffftttt11t1:,,........ii:;;iii1tt1,,,......,,;i1tt11111ttttt11111ttfftffffftt\\ntfttfffffttttttfffft1tffffttfft11;,..........:;::;ii11t1:,,,...,,:,...,it11tt11tffffttttttt1ttttffft\\nttttfffffftttfffffft11tfffttfttt1,....,,......,:;;;;;;i,.......:iii;;,.,1t1ttt1tffftttttfftt11tfffff\\n1tttffffftt1ttfffft1111tfttft11ti,.............;i;;;;;:........:iiiii:..it11tt1tfftt1tfffffft1fLffLf\\ntttttffttttt11tttt1tttt1tttt1tt;,..............i1;;;;;,........,;iii;,..it111t11ttttttttfftt111fffLf\\ntfftttttttfftt1111ttfft11111tft:...............;i;;;;:,.........:;ii:..,ittt111111tfftttttt1tt1tffft\\nttttttttttttttt11ttttttt11ttff1,...............,::::::......... ,;ii:...itttt111ttffffft1tttfttttttt\\ntfffttttffftttt11ttttttt111tft;,........... ..,:;:::,...........,:;:...;ttttt11ttfffffttttttttffttf\\ntfffttttfffffft11ttttttf11111;:,..... .....,:::::::::...............,...:1ttt1111fffffffttfffffffttf\\ntfffttttfffffft11ttttttt11ti,,...........,:;i;;;:::::..................,.:tt11111tffffffttfffffffttf\\ntffftttttttfff111ttttttt111,.,,,,...,,..,;;;;;i;:,::,....................,;i1t111tffffLfttfffftffttt\\ntttttttttttttt111ttttttt11t:.......,....,:;;;;;:::,:,.......................:1t11tfffffftttffttffttt\\nttttt11ttttttt11tttttttt11t1,............,,,...,::::.........................:111ttttttt11ttttttfttt\\nttttt1tttttttt11ttttttfft1t1:,............ .. ,:::,........................,i111ttttttt11ttttttfttt\\n1tttt1ttfttttt11tfftttfftttttt1;::,,::.........,:,,,........................i1111ttttttt111tttttfttt\\n1ttt11tttttttt11tttttttttttttttttt111i.........,::,,................. . .;t11111ttt1tt111ttttttt1t\\n11t111tttt1tt111111111tttttttttttt111i,........,:,,...................,..,itttt111111111111111111111\\n1111111111111111111111tttttttttttt111i,....... ,:....................i111ttttttt11111111111111111111\\n1111111111111111111111ttttttttttt1111i,....... ,:,::,................,i1t11tttttt1t11111111111111111\\n111111111111111111111111tttttttt11111i,........,::;:,..................;1ttttttt11111111111111111111\\n1111111111111111111111111tttt11111111i........ ,,:::,..................,1ttttttttttt1111111tt1t11111\\n1111111111111111111111111111111111111i,........,,:::,...................it111ttttt11t11111ttttt11111\\n111111111111111111111111111111111111t1,........,,,:::,..................,1t1ttttttt1tttt11ttttt11111\\n11111111111111111111111111111111111111,........,,,;;::,..................i111ttttttttttttttttttt1111\\n\",\n \"ttftffftttttttffffffffLfttftttttttttt111tttt1111111tttt111111tttt1111111ttttttttttttttttttt11111111t\\nttfttttttttttttttftfLLLftffftffffftttttt111111111ttfffftt1tt1111111111111111ttftttftttttttt1111111tt\\nttftttttttttttttffffLftttfffffffLLLft11tttfft111tfffffffttt1ttttt11111ttttttfffftffffttttttt11111tt1\\nttttttttttttttttfffffttffffffLLffffttt1ttttttt1tt111ii11tft1ttttt11111tfftfffffftttfffffttt11111ttt1\\nttttttttttttffffttfffttfffffffffttffftttt111ttt1:,,,,,,,:i1111111t111111ttffffLLffttfLfft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLLfttttttftt1;:,,,,,,,,,;1tt111t1111t111tttffffftttftt1ttt111ttttt\\nttttttttffLLLLLLLffttfLLLfttfffftfLLfttttffft1i;;;;;;;;;;::1tttt11111ttt11111ttffffttt11tffft11ttttt\\ntttttttfffLLLLLLLLLftffftttffLLfftfftttttffffi:;iii111111i:ittttt1111ttt1tttt11tfLLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffftffLfftfftttttfffff;:;;;;iiiiiii:ittttt11111111ttttttttttt11tffffffffffttt\\ntttffftffLLLLLLLLLfttfftfLftfffffLLftttttffff1i;;;;;ii;iiiittttft11111ttt1ttt1ttttt11ttfffffLLfLfttt\\nttfLLfffffLLLLLLLfftfLLftfffLfffLLLftttttttf1i1i;i;;iiii1i1tffft111111tfft11t11tt1tttttfffLLLLLLffff\\ntfffffttttfLLLffttttfffffttLLLLfLLLftttft1111iii;;;;ii1i1i11tt111t1111tffttfftt11tfftttfffLLLLLLLfff\\ntttffttfftffLftttttttttttttfLLLffLLfttttttttt11i;;;;iiii11t11111111111tffttfffttttttt11ttfLLLfffffff\\nttfLffffffftttfffffffffttftttfLfffLftttttffft11i;;;iiiii1t11ttttt11111ttt1fffttt1tttttttttfLLftftttt\\nttffffffffftttfffffffffttffttfffttttttttfft1111i;;;;iii1111111tttt1111tt11ffttffttfffffLffttftffffff\\nttffffffffttttffffffffttttttttttffftt11tttt11t1ii;;;iii11tfft11ttt111111t11tttfft1ttffffLLfttffLLLLL\\ntttffffffffttfffffffftt1ttt1111fffft1tt11iiii1iiii;iiii1i:1tft11111111tttt111ttt11ttffffLfftttffLLLf\\nttttttttfffttfffttttt1ttfft11111tft11i;:,..,;ti;;;i;iii1;,,,:;i1111111tttt111ttt1111tffffffftfLLLLLf\\ntfttttttttttttttttttttfffftttt11i;::,,......iti::;i;iitt:,,....,:;i111ttt111t1ttttt11111ttfftffffftt\\ntfttfffffttttttfffftttffffttft11:...........;ii::;i11tti,,,,.......,:itt111tt1ttffff11ttt111ttttttft\\nttttfffffftttffftfft11tfffttftt;,............,:;;;;;11;,..............;1111ttt1tffftttttfftt1ttfffLf\\n1t1tffffft11ttfffft1111tfttft11:.............,:ii;;;;;,...............:11t11tt1tfft11tfffffft1ffffLf\\ntttttfftt1tt11tttt1ttt11t1111t;,..............:i1;;;;:,...............,111111t11ftttttttfftt11tfffLf\\ntfftttttttfftt1111tttft11111t1,...............:ii;;;;,............,,,.,1tttt11111ttfftttttt1tt1tffft\\nttttttttttttttt11ttttttt11ttfi................:;::;::,...........,;i;;:1tttttt11ttffffftttttfftttttf\\ntfffttttftttttt11ttttttt11ttfi................,;;:::,............,;iiii1tttttft1ttffftfttttttttftttf\\ntfffttttfffffft11ttttttt11111;........ .......:;:::,............:iiiii11ttftt11tfffffffttfffffffttf\\ntfffttttftffff111ttttttt11ti:,....... ,:::;;:,.,;:::,............:;;ii:i11tt1111tfffffffttfffffffttf\\ntffftttttfffft111ttttttt11i,.........,iii;;;,..,:::,.............::;;,.it1111tt11tffffffttfffftffttf\\ntttttttttttttt111ttttttt11,.,,,,..,,,:;;;;;;,..,:::,.............,::;..:i111ttt11tfffffftttffttffttt\\nttttt1tttttttt111ttttttt11;,,,...... .:;;;;:...,:,,,.....................:111tt11ttttttt11tttttffttt\\nttttt1tttttttt11tttttttt111,..........,,,,.....,:,,.......................:111111ttttttt11tttttffttt\\n1tttt1tttttttt11ttttttfft11i:,.....,.... .....,::,......................,1t11111ttttttt111tttttft1t\\n1tttt1tttttttt11ttttttttttttt1ii;;;:...........,:,,.....................,it111111ttttttt111ttttttt1t\\n11t1111tttttt111111111tt1tttttttt11:...........,:,,.............. .;t11111111111111111111111111\\n1111111111111111111111ttttttttttt11,.......... ,,................,:,,,:i1tttt1t111111111111111111111\\n1111111111111111111111tttttttttt11i,...........,,,,..............:1t11ttttttttttt1111111111111111111\\n111111111111111111111111tttttt1111;........... ,,:;,..............:11ttttttttttttt111111111111111111\\n11111111111111111111111111tttt1111;........... ,,:;:...............:111tttttttttt11t1111111tttt11111\\n1111111111111111111111111111111111;....,,......,,,::................i1ttttttttttttt1t11111ttttt11111\\n1111111111111111111111111111111111;............:,,;:,...............;1tttttttttttttttttt11ttttt11111\\n1111111111111111111111111111111111:............,,:;;:...............,1t1tttttttttttttttttttttttt1111\\n\",\n \"ttftffftttttttfffffttfLfttftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt11111111t\\nttfttttttttttttttftffLLftffffffffttttttt111111111ttfffft1ttt1111111111111111ttttttftttttttt111111ttt\\nttftttttttttttttffffLftttfffffffLLLftt1tttttt111ttfffffftttttttt111111tttttffffftffffttttttt111tttt1\\nttttttttttttttttfffLfttffffffLLffffttt1tttttt11tffffffffffttttttt11111tffffffffftttfffffttt11111tttt\\nttttttttttttffffttfffttfffffffffttffftttt11111111i;i11ttt11tt1111t111111ttffffLLffttfLfft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLLfttttttfti:::,,,,:;i1ttfttt11t111tt111tttffffftttftt1ttt11tttttt\\nttttttttffLLLLLLLffttfLLLfttfffftfLLftttttft1;,,,,,,,,,,;tffffft11111tft11111ttffLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttfLLfLftffttttfffti;:;;;;iii;::1fffffttt111ttt1tttt1ttfLLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffLfftfftttttfffi;;iiiii1111i:iffffftt11111111ttttttttttt1ttffffffffffttt\\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttttffi:;;;;iiiiiii:1ftttfftt1111ttt1ttt1ttttt111tffffffLfLfttt\\ntffLLfffffLLLLLLLfftfLLftftfLfffLLLLttttt1t1i;;;;;ii;iiii1ttffft111111tfft1tt11tt1tt1ttfffLLLLLLffff\\ntfffffttttfLLLffttttfffffttLLLLfLLLftttft11i1i;;;;i111iii111tt111t1111fffttfftt11tfftttfffLLLLLLLffL\\ntttffttfftffLftttttttttttttfLLLffLLftttt1tti1i;;;;ii1iii1tt11111111111tffttffftttttttttttfLLLLfffffL\\nttfLfffffffttffffffffffttftttfLfffLftttttfftt1;;;;iiii11ttt1ttftt11111tfttffftt111ttttttttfLLftftttt\\nttffffffffftttfffffffffttffttfftttttttttfft111i;;;iiii1t111t1ttttt1111tt11ffttffttfffffLLfttffffffff\\nttffffffffttttffffffffttttttttttfffttt1tft1111i;;;iiii111tfft11ttt111111t11tttfft1tfffffLLfttfLLLLLL\\ntttffffffffttfffffffftt1ttt1111tffft11t111111iiii;;iii111fffft11111111ttft111ttt11tfffffLfftttfLLLLf\\ntttttttttffttfffttttt1ttfft1t11ttfftttt1iiii1i;;;iii1i1i,;i1ttt1111111tttt111tttt111tffffffftfLLLLLf\\ntfttttttttttttttttt11tfffftttt11tff11i;:,,,:11i;;iii;it;....,:;i111111ttt111t1ttftt11111ttfftffffftt\\ntfttfffffttttttfffftttffffttfft1ii;:,,.....:11;:;;;;1tt;,,,.....,,;i11tt111tt1ttfffftttttt11ttttttft\\nttttfffffftttffftfft11tfffttft1;,..........:1ii;;ii1tti,,,..........,it1111ttt1tfffttttffftt1ttfffLf\\n1tttffffftt1ttfffft1111tfttft1i,............,:;ii;;i1i,..............:111111tt1tfft11tfffffft1ffffLf\\ntftttffttttt11tttt1ttt11t1111t;..............,;1i;;;;,...............,1111111t11ftttttttfftt11tfffLf\\ntfftttttttfftt1111ttttt11111tt:............. ,;ii;;;:,...............,i111tt11111tffftttttt1tttttfft\\nttttttttttttttt11ttttttt11ttft,...............;;;;;:,.................ittttttt11ttffffftttttfffttttt\\ntfffftttftttttt11ttttttt11ttf1,...............:;;;::,.......,,,.......;tttttfftttfffftfttttttttffttf\\ntfffttttfffffft11ttttttt1111t1,...............:;;;::........,;i;:,....;t1ttfttt1tfffffffttfffffffttf\\ntfffttttftffft111ttttttt11t111,...............,::::,........:iiiii:...;t11tt1111tffffLffttfffffffttf\\ntffft1tttfffft111ttttttt11ttt1,..... ..........::::,.......,;iiii;,...it11111tt1tfffLfLfttfffftffttf\\ntttttttttttttt111ttttttt11tt1:... .,..........,:::.........:;;i;,...,1t1t11tft11tfffffftttffttffttt\\nttttt1tttttttt111ttttttt1tt1:,...:;ii:.........,::,.........,:;;:.....,it1111tt11ttttttt11tttttffttt\\nttttt1tttttttt11ttttttttt1t;::,;iiii;,.........,:,,...........,,,......,;11111111ttttttt11tttttffttt\\n1tttt1tttttttt11ttttttfft1ti:,,;;;:;;,.........,:,,.......... ..........:tttt1111ttttttt111tttttfttt\\n11ttt1tttttttt11ttttttttttt1,.,::::;;:.........,:,,...............,....;ttttt1111ttttttt111ttttttt1t\\n11tt11tttt1tt111111111111ttti:,,,::;:..........,:,,............ ......;ttttt11111111111111111111t111\\n1111111111111111111111tttttttt1:,,,............,:,.............,. .,;11tttttt1111111111111111111111\\n1111111111111111111111tttttttttt1:.............,,............ .11ii1ttttttt1111111111111111111111111\\n111111111111111111111111tttttt111,.............,::,,...........ittttttttttttt11111111111111111111111\\n11111111111111111111111111111111;..............,;;;:,..........:11tttttttttttttt11111111111111t11111\\n11111111111111111111111111111111;..............,;;;:,...........:11tttttttttttttttt1111111ttttt11111\\n11111111111111111111111111111111:..............,;;;;:...........:1ttttttttttttttttttttttt1ttttt11111\\n11111111111111111111111111111111:..............,;i;::,..........,1tttttttttttttttttttttttttttttt1111\\n\",\n \"ttftffftttttttfffffttfffttftttttttttt111tttt1111111ttttt11111tttt111111tttttttttttttttttttt11111111t\\nttfttttttttttttttftffLLftffffffffttttttt111111111ttfffffttttt111111111111111ttffttftttttttt11111tttt\\ntfttttttttttttttffffLffttfffffffLLLft11tttttt111tfffffffttttttttt11111ttttfffffftfLLfttttttt1111ttt1\\nttttttttttttttttfffLfttffffffLLffffttt1ttttttt1ttfffffffffttttttt1111ttfftffffLftttfffffttt11111tttt\\nttttttttttttffffttfffttffffffffftttfttttt111ttt1ttffffffttttt1111t111111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLftttttfLLLfftttttffLftttttttt11ii11fffft1ttfftt11t111tt111ttfffLLftttftt1ttt11tttttt\\nttttttttffLLLLLLLffttfLLLfttfffftfLLfttttt1i:;:,,::;i1tttffffftt11111tft11111ttfLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLftffttttffLffftffttttfti:,,,,,,,,,:;tfffffttttt111tftttttt1ttffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffftffLfftffttttttti:::::;;;;;,,1ffttffttt11111111ttttttttttt1ttffffffffffttt\\ntttfftfffLLLLLLLLLfftfftffftffffLLLfttttti;iiiii11111;:1ttfffffftt1111ttt1ttt1tftttt11tfffffLLfLfttt\\nttfLLffffLLLLLLLLfftfLLftttfffffLLLLttttt;;i;;iiiiii1;:i11tfffft111111ffft1tt11tt1tt1ttfffLLLLLLffff\\ntfffffttttfLLLffttttfffffttLLLLfLLLftttft1ii;;;ii;;iii;tt11ttt111t1111tffttfftt11tfftttffLLLLLLLLffL\\ntttffttfftffLftttttttttttttfLLLffLLftttt11ti;;;iiii1iii1ttt1ttt1111111tfftfffftttttttttttfLLLLffffff\\nttfLffffffftttfffffffffttftttfLfffLfttttt11i;;;iii1iii1tttt1tfftt11111tfttffftt11tttttttttfLLffftttt\\nttffffffffftttfffffffffttfftttfftffttttfft11;;;iiiii11tt111ttttttt1111tt1tffttffttfffffLLfttftfLffff\\nttffffffffttttffffffffttttttttttfffttt1tft11i;iii11i11111tfft11ttt11111tt11tttfft1tffffLLLfttfLLLLLL\\nttfffffffffttfffffffftt1ttt111tfffftttt11111i;i;iiii111ttfffft11111111tttt11tttt11tffffLLfftttfLLLLf\\nttttttttfffttfffttttt1ttfftt111tfffttt111111;;i;;iii11i1ttffft11111111tttt111tttt11ttfffffLftfLLLLLf\\ntfttttttttttttttttt11tfffftttt11tffttt1t1ii1;;i;;iiii1;,::i11tt1tt1111ttt11tt1tfftt11111ttfftfLffftt\\ntfttfffffttttttfffft1tffffttfft11tft11i::,,1ii;:;ii;it:,,...,,:;i11111tt111tt1ttfffftttttt11tttttfft\\nttttfffffftttffftfft11tfffttfttttt1i:,....,it1i;;;;i1t;,,,,.......,;111t111ttt1tfffttttffftt11tffLLf\\n1tttffffftt1ttfffft111ttfttft11i;:,........i1tt1ii1tt1:,,...........:1111111tt1tfftt1tfffffft1ffffLf\\ntftttffttttt11tttt1ttt11t1111t;,...........,;;;11;;;;:..............,1t111111t1tftttttttfftt11tfffLf\\ntfftttttttfftt1111ttttt11111tt:..............:;ii;;:,................it111tt11111tffftttttt1tttttfft\\nttttttttttttttt11ttttttt11ttf1,..............,;;;;::,................it1tttttt1ttfffffftttttfffttttt\\ntfffttttffttttt11ttttttt11ttfi................;;;:::,,:;:,...........;tttttttftttffffffttttttttffttf\\ntfffttttfffffft11ttttttt1111ti................:;:::,.:;iii;,.........:111ttfftt1tfffffffttfffffffttf\\ntfffttttftffff111ttttttt11t11;................,;:::,.;iiiii:.........:tt11ttt111tfffLfLfttfffffffttf\\ntffft1tttfffft111ttttttt1tttt;................,::::,.:;;ii;,.........;ttt1111tt1tfffLLLfttfffftffttf\\ntttttttttttttt111tttt1tt11ttti.................:::,...,;;i;,.........itttt11ttt11ffffffftttfftfffttt\\ntttttttttttttt111ttttttt11tt1;.................:::,....,:;:,.........,1tt1111tt11ttttttt11tttttffttt\\nttttt1tttttttt11ttttttttt1t11:.................:::,.... ..............:1111111t11ttttttt11tttttffttt\\n1tttt1tttttttt11ttttttfft11ti;,................,::,.........,......... :ttttt1111ttttttt111tttttfttt\\n11tt11tttttttt11tttttttt1tt1iiii:..............::,,...................:1tttt111111tttttt111ttttttt1t\\n11t1111tttttt1111111111t111iiiiii:.............,:,,,.................:1ttttt11111111111111111111t111\\n11111111111111111111111t11i;;iiii;.............,:,,,........... .,;ttttttttt1111111111111111111111\\n1111111111111111111111tt1t1i;;ii;,.............,,........... :i;;i1tttttttt1111111111111111111111111\\n1111111111111111111111111ttti:,,...............,,,.......... :ttttttttttttttt1t111111111111111111111\\n11111111111111111111111111111;::...............:;;::,........,i11ttttttttttttttt1111111111111tt11111\\n111111111111111111111111111111t;...............:ii;;:,........;t1tttttttttttttttt1t1111111ttttt11111\\n1111111111111111111111111111111:...............:;i;:::........:tttttttttttttttttttt1ttttt1ttttt11111\\n1111111111111111111111111111111:............. ,;ii;;;:,..,,...:ttttttttttttttttttttttttttttttttt1111\\n\",\n \"ttfttfftttttttffffftfffftfftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt11111111t\\nttfttttttttttttttttffLLttffffffftttttt1t111111111tfffffftttt1111111111111111ttffttfttttttttt1111tttt\\nttttttttttttttttffffLffttfffffffLLLftt1tttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt111ttttt\\nttttttttttttttttfffffttffffffLLffffttttttttttt1tffffffffffttttttt11111tfffffffLftttfffffttt1111ttttt\\nttttttttttttffffttfffttfffffffffttffttttt1111tt1ttffffffttttt1111t111111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffttttffffftttffftt11t111tt111ttfffLLftttftt1tt111tttttt\\nttttttttffLLLLLLLffttfLLLfttfffftfLftttttt11i;;;;i1tftttffffffftt1111tftt1111tffLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLftffttttffLLfftffttttti:::,,,,::;i1tffffffffttt111tft1tttt1ttffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffftffLfftfftttt11;,,,,,,,:,,,;tffffffffttt1111t11ttttttttttt1ttffffffLfffttt\\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttt1i;;;;iiiii:,:1tttfffffftt1111ttt1ttt1tfttt111tfffffLLfLfttt\\nttfLfffffLLLLLLLLfftfLLftttfLfffLLLLttt1i1iiiii1111i::1111ttffft111111ffft1tt11tt1tt1ttfffLLLLLLffff\\ntfffffttttfLLLffttttfffffttLLLLfLLLftttt11;;;iiiiiii:;ttt111tt111tt111tffttfftt11tfftttffLLLLLLLLffL\\ntttffttffttfLftttttttttttttfLLLffLLftttt1i;;;iii;iii;ittfft11tt1111111tfftfffftttttttttttfLLLLffffff\\nttffffffffftttfffffffffttfttfLLfffLfttt111;;;i111111iitfttt1tfftt11111tfttfffttt1tttttttttfLLftfttft\\nttffffffffftttfffffffffttffttffftfftttttt1i;;iiiii1i1tft11tttttttt1111tt1tffttffttfffffLLfttftffffff\\nttffffffffftttffffffffttttttttttfffttt1ttti;;;i111iitt111tfft11ttt111111t1ttttfft1tffffLLLfttfLLLLLL\\ntttffffffffttfffffffftt1ttt111tfffftttt111ii;iii;ii11111tfffft11111111tfft11tttt11tffffLLfftttfLLLLL\\nttttttttfffttfffttttt1ttfft1111tffftttt1111;;;i;;;i111ttttffftt1111111tttt111tttt11ttfffffLftfLLLLLf\\ntfttttttttttttttttt1ttfffftttt11tfft111tt1i;;;i;;i1i1;i11tffftt11t1111ttt11tt1tfftt11111ttfftfLffftt\\ntfttffffftt11ttfffftttffffttfft11tft11ii;ii;;;;:;iii1,.,,,:;iii1ttt111tt111tt1ttfffftttttt11ttttfftt\\nttttfffffftttffftfft11tfffttftttttt1;:,..:11;;i;;;;11:,,,.....,,:i1111tt111ttt1tffftttttfftt1ttffLLf\\ntt1tffffftt1ttfffft1111tfttft1111i:,.....,i11iiiii1tt:.,..........:111111t11tt1tffft1tfffffft1fLffLf\\ntftttffttttt11tttt1ttt11t11111;:,.........;i11i1111t;..............;t11111111t1tfttttttfffftt1tfffLf\\ntfftttttttfftt1111ttfft111111:.............,::;ii;;:...............:111111ttt111ttffftttfft1tttttfft\\nttttttttttttttt11ttttttt11tt1,..............::;;;;;,...............,1111tttttt11tffLffftttttfftttttt\\ntfffftttffttttt11ttttttt11tfi,..............,::;;::,,...............i111ttttfftttffffffttttttttffttf\\ntfffttttfffffft11ttttttt111ti................::::::,:;;::,..........it111ttffttttfffLfLfttfffffffttf\\ntfffttttftffff111ttttttt1tt1;................,;::::.:iiiii,.........;11111ttt11ttfffLfLfttfffffffttf\\ntffft1tttfffft111ttttttt11tti,................::::,.:ii;ii:.........;tttt1111ttttfffLLLfttfffftffttf\\ntttttttttttttt111ttttttt1ttf1.................,:::,.,:;iii:.. ......:ttttt11tft11tfffffftttfftfffttt\\ntttttttttttttt111ttttttt1ttt;::...............,:::,. .:;ii:..........;ttt1111tt11tttttft11tttttffttt\\nttttt1tttttttt11ttttttttt1t111i;,..............:::,....,::,...........;1111111t11ttttttt11tttttffttt\\n1tttt1tttttttt11ttttttfftt1iiiiii:.............:::,.... ............. :ttttt1111ttttttt111ttttffttt\\nt1ttt1tttttttt111ttttttttt1i;iiii;,............,:,,,................. ,1tttt111111tttttt111ttttttt1t\\n11t1111tt1ttt11111111111111i;iii1i,............,::,,.................:1tttt11111111111111111111tt111\\n11111111111111111111111111t1;;;;;,.............,:,,,.......... .:1tttttt111111111111111111111111\\n1111111111111111111111111t11;,.................,:,,..........,;:::;1ttttttt1111111111111111111111111\\n11111111111111111111111111111:..,..............,,............:ttttttttttttttttt111111111111111111111\\n111111111111111111111111111111ii;..............,::,...........i111ttttttttttt11111t11111111111111111\\n111111111111111111111111111111t;...............,;ii;::,.......:1ttttttttttttt11t1tt1111111ttttt11111\\n111111111111111111111111111111i,...............:;ii;;;:,......,1ttttttttttttttttttt111111tttttt11111\\n11111111111111111111111111111ti,...............:;ii;;;;:,..:..,1ttttttttttttttttttttttttttttttt11111\\n\",\n \"ttfttfffttttttffffttfffftfftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt1111111tt\\nttfttttttttttttttttffLLttffffffffftttttt111111111tfffffftttt1111111111111111ttftttfttttttttt1111tttt\\nttttttttttttttttffffLffttfffffffLLLftt1tttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt1111ttt1\\nttttttttttttttttfffffttffffffLLffffttttttttttt1tffffffffffttttttt1111ttfffffffLftttfffffttt1111ttttt\\nttttttttttttffffttfffttfffffffffttffftttt1111tt1ttffffffttttt1111t111111ttffffLLLfttfLLft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffft1ttfffftttffftt11t111tt111ttfffLLftttftt1ttt11tttttt\\nttttttttffLLLLLLLffttfLLLfttfffftfLftttttfttttttttttftttffffffftt1111tftt1111tffLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLftffttttffLffftffttttt1ii::::;111tttffffffffttt111tft1tttt1ttffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffLfftffttttt1:,,,,,,,,:;ittffffffffttt1111t11ttttttttttt1ttffffffffffttt\\ntttffttffLLLLLLLLLftffftfLftffffLLLftttti::,::::::,,,;ttttfffffftt1111tft1ttt1tffttt11tfffffLLfLfttt\\nttfLffffffLLLLLLLfftfLLftttfLfffLLLfftt11iiiii111i;,,;t111tfffft111111ffft1tt11ttttt1ttfffLLLLLLffff\\ntfffffttttfLLLffttttfffffttLLLLfLLLftttt1iiiii1111i:,iftt111ttt11tt111tffttfftt11tfftttffLLLLLLLLffL\\nttttftttttffLftttttttttttttfLLLffLLftttti;;;ii;iiii::1ttttt11tt1111111tfftfffftttttttttttfLLLLffffff\\nttfLfffffffttffffffffffttfttfLLfffLfttt1i;;i1i;iiii:;tftttt1tfftt11111tfttfffttt1tttttttttfLLftftttt\\nttffffffffftttffffffffftfffttffftffttttti;;iii111i1iitft11tttttttt1111tt11ffttffttfffffLLfttftfffffL\\nttffffffffftttffffffffttttttttttfffttttti;;;ii1111ii1t111tfft11ttt111111t11tttfft1tfffffLLfttfLLLLLL\\ntttffffffffttfffffffftt1ttt111tfffftttt1i;;;iiiiii11111ttfffft11111111tfftt1tttt11tfffffLfftttfLLLLf\\nttttttttfffttfffttttt1ttfft1111ttffttt111i;;ii;;;itt11ttttfffft1111111tttt111tttt11tttfffffftfLLLLLf\\ntfttttttttttttttttt11tfffftttt11tfft1t1t1i;;;ii;;it111ttttffftt11t1111ttt111t1tfftt11111ttfftfLffftt\\ntfttffffftt11ttfffftttffffttfft1ttft11ii1;;;;i;:;i1;;i11tttft111tt1111tt111tt1tffffftttttt11ttttfftt\\nttttfffffftttffftfft11tfffttftttt1i;:,,:1i;;;;i;;;1;.,,,;;i11111111111tt111ttt1tffftttttfftt1ttffLLf\\n1tttffffftt1ttfffft111tffttft1ii:,.....,11iiiiiii1t:,,,.....,:;i111111111t11tt1tffft1tfffffft1fLffLf\\ntftttffttttt11tttt1ttt11t11i;:,........,i1tt1ii11tt:,,,,........:t11111111111t1tfftttttfffftt1tfffLf\\ntfftttttttfftt1111ttfftt11i,............::;;iiiii1;,,............it1111111ttt111ttffftttfft1tttttfft\\nttttttttttttttt11ttttttt11;...............:;;;;:;;...............:111111tttttttttffLffftttttfftttttt\\ntfffftttffttttt11ttttttt11:...............,;;;;;;:,..............,111111ttttfftttffffffttttttttffttf\\ntfffttttfffffft11ttttttt11,...............,:;;;;:,...............,1111111ttffttttfffLfLfttfffffffttf\\ntfffttttftffff111ttttttt11:...... ........:;;;;:,...............,11111111ttt1tttfffLfLfttfffffffttf\\ntffft1tttfffft111ttttttt11:.......:;;;:....,;;::::.......,::,....,1tt11tt1111tt1tfffLLLfttfffftffttf\\ntttttttttttttt111ttttttt11:.....:;;;;;:.....:;:::,.......,:iii;,.,1t1t11tt11tft1tffffffftttfftfffttt\\ntttttttttttttt111ttttttt1i,.....:;:;;;:.....,::::,........;;iii;..;t1111t1111tt11tttttftt1tttttffttt\\nttttt1tttttttt11tttttttt1i,.....:::;;;,......::::,.......,;;ii;:..,;1t11111111t11ttttttt11tttttffttt\\n1tttt1tttttttt11ttttttttti....,,,,:;;,.......,:::,,.......,;;;;,....,it11tttt1111ttttttt111ttttffttt\\n11tt11tttttttt111ttttttt1:,,.,,,..,,,.........::::,........,:;,..... ,1tttttt11111ttttt1111ttttttt1t\\n1111111tttttt11111111111i,,..,,,.... .........::::,..................itttt111111111111111111111tt111\\n1111111111111111111111111,...,,...............,::,,,...........,,...;tttttt1111111111111111111111111\\n11111111111111111111111111,..... .............,::,,,......... . .:1tttttt1111111111111111111111111\\n1111111111111111111111111ti,,,.,,..............::,,..........,,,::i1tttttttttt1111111111111111111111\\n11111111111111111111111111111i11;..............:,............,1tttttttttttttt11111111111111111111111\\n1111111111111111111111111111111i...............:;:::::,.......;tttttttttttttt11t1ttt111111ttttt11111\\n1111111111111111111111111111111:...............:iiii;;::,......ittttttttttttttttttttt1111tttttt11111\\n1111111111111111111111111111111,...............:iiiii;;:,......,1tttttttttttttttttttttttttttttt11111\\n\",\n \"tttttfftttttttffffftfffftfftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt1111111tt\\nttfttttttttttttttttffLLftfffffffffttt1tt111111111tfffffftttt1111111111111111ttftttftttttttt11111tttt\\nttttttttttttttttfffffftttfffffffLLLftt1tttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt1111ttt1\\nttttttttttttttttfffffttffffffLLffffttttttttttt1tffffffffffttttttt11111tfffffffLfttffffffttt1111ttttt\\nttttttttttttffffttfffttfffffffffttfftttttt11ttt1ttfffffftttttt11tt111111ttffffLLLfttfLLft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffft1tffffftttffftt11t111tt111ttfffLLffttfft1tt111tttttt\\nttttttttfffLLLLLLffttfLLLfttfffftfLfttttttffffffttttftttffffffftt1111tftt1111tffLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLftffttttfLLffftfftttttftttttttffttttffffffffftt111tftttttttttfLLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffffftffttttttiii;::::i1ttttffffffffftt1111t11ttttttttttttttffffffffffttt\\ntttffttffLLLLLLLLLftffftfLfttfffLLLfttt11:,,,,,,,:::itttttfffffft11111tft1ttt1tffttt11tfffffLLfLfttt\\ntffLffffffLLLLLLLfftfLLftttfLfffLLLLfttt1i::::,,::,,,itt11tfffft111111ffft1tt11tt1tt1ttffLLLLLLLffff\\ntfffffttttfLLLffttttfffffttLLLLfLLLftttttiiiiii1i;:,,:ttt111ttt11tt111tffttfftt1ttfftttffLLLLLLLLffL\\nttttftttttffLftttttttttttttfLLLffLLftttti;iiii111i;:,iftftt11ttt11111tffftfffftttttttttttfLLLLffffff\\nttfLffffffftttfffffffffttfttfLLfffLfttt1;;;ii;iiii;::1ffttt1tffft11111ffttfffttt11ttttttttfLfftftttt\\nttffffffffftttffffffffftfffttffftfftttt1;;i1i;;iii;:itft11tttttfttt111tt1tffttffttfffffLLftfftfffffL\\nttffffffffftttffffffffttttttttttffftttt1;;iiii111iii1t111tfft1tttt111111t1ttttfftttfffffLLfttfLLLLLL\\ntttffffffffttfffffffftt1ttt111ttffftttti;;iiiiiiiii1111ttfffft11111111tffttttttt11tfffffLfftttfLLLLL\\nttttttttfffttfffttttt1ttfft1111ttfftttt1;;;iiii;;itt11tffffffft1111111tttt111tftt11tttfffffftfLLLLLf\\ntfttttttttttttttttt11tfffftttt11tfftttt1i;;;;ii;;it1111tftfffft11t1111ttt111t1tfftt11111ttfftfLffftt\\ntfttfffffttt1ttfffftttffftttfft11tft111i;;;;;ii;;i111111tttft111tt1111ttt11tt1tffffftttttt11ttttffft\\nttttfffffftttffftfft11tfffttfttt11i;;:ii;;;;iiiii1;11tt111t11111tt1111tt111tft1tffffttfffftt11tffLLf\\n1tttffffft11ttfffft1111tfttftii;:,....;1i;;;;ii111,,:;i1tt11tt11111111111t11tt1tffft1tfffffft1fLffLf\\ntftttffttttt11ttt11ttt1111i;:,.......,i1tiiii;;11i,,,..,:;i1t1t111t1111111111t1tfftttttfffftt1tfffLf\\ntfftttttttffttt111ttttt1i:...........,ii111iii11i:.,,......,:;1t111111111tttt111ttfLftttfftttttttfft\\nttttttttttttttt11tttt11t;..............,::;;i1ti:,............,1t1111111tttffttttffLfffttttffffttttt\\ntfffttttfftfttt11tttttt1,...............:;:;;;;;:..............;tt111111tttffftttffffffftttttttffttf\\ntfffttttfffffft11tttttt1................,;;;;;;;:..............:t11111111ttffttttffLLfLfttfffffffttf\\ntfffttttfttftt111tttttti............... .:;;;;;:,..............:1111111111tttttttffLLfLfttfffffffttf\\ntffft1ttttttft111tttttt;............. .:;;;;;;:::..............:111tt11tt111ttt1tfffLLLfttfffftffttf\\ntttttttttttttt111ttttt1,..............:;i;;i;::::..............:1ttt1111tt11tff1tffffffftttfftfffttt\\nttttttttttt1tt111ttttt;..............:;;;;;i:::::..............;1111111111111tt11tttttftt1tttttffttt\\nttttt1tttttttt11tttttt:..............:;;;::;:::::..............;t1111111111111t11ttttttt11tttttffttt\\n1tttt1tttttttt11ttttt1,........... .,,:,...,:::::..............,11i;;i111tttt1111ttttttt111ttttffttt\\n11tt11ttttttt1111tttt;............,..... ...,::::...............:i;:;;i1ttttt11111tttttt111ttttttt1t\\n11111111t1tt111111111,............,.........,::::,..............,:::;ii1tt111111111111111111111tt111\\n111111111111111111111,............ .........,,,::,..............::::;i11tt11111111111111111111111111\\n1111111111111111111111:....... .............,,:,,..............,::::i111t11111111111111111111111111\\n11111111111111111111111:....,,,,.............,:::,,..................,1t1111111111111111111111111111\\n111111111111111111111111iiii11t; .............,:,..,........ ..:1tttttt11111111111111111111111\\n111111111111111111111111111111t:...............:,,,:,,......,,,,,:;;1tttttttt1t111tt1111111tttt11111\\n111111111111111111111111111111t: .............::;ii;::,.....,i111ttttttttttttttt11ttt111111tttt11111\\n111111111111111111111111111111t:..............:;;iiii;:,.....,i1ttttttttttttttttttttttttttttttt11111\\n\",\n \"tttttfttttttttffffffffffffftttttttttt111tttt1111111ttttttt111tttt111111tttttttttttttttttttt1111111tt\\nttfttttttttttttttttffLLftfffffffffttt1tt111111t11tfffffftttt1111111111111111ttftttftttttttt111111ttt\\nttttttttttttttttffffLftttfffffffLLLfttttttttt111tfffffffftttttttt11111tttttffffftffLfttttttt11111ttt\\nttttttttttttttttfffffttffffffLLffffttt1ttttttt1tffffffffffttttttt11111tfffffffLffttfffffttt1111ttttt\\nttttttttttttffffttfffttfffffffffttfftttttt11ttt1ttfffffftttttt11tt111111ttffffLLLfttfLLft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffft1ttfffffttffftt11t111tt111ttfffLLftttftt1ttt11tttttt\\nttttttttfffLLLLLLffttfLLLfttfffftfLfttttttffffffttttffttffffffftt1111tftt111ttffLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttfLLffftfftttttfftffffffftttfffffffffftt111tft1tttttttfLLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffffftfftttttt1iii::;i1ttttfffffffffftt1111t11ttttttttttttttffffffffffttt\\nttttfttfLLLLLLLLLLfftfftfLfttfffLLLfttt11:,::,,,,,:;1tttttfffffftt1111tft1ttt1tffttt11tfffffLLLLfttt\\nttffffffffLLLLLLLfftfLLftttfLLffLLLffttt1;:,,,,,,,,,;ttt11tfffft111111ffft1tt11ttttt1ttffLLLLLLLLfff\\ntfffffttttfLLLffttttfffffttLLLLfLLLftttt1iiiiiiii;:,,iftt111ttt11tt111tffttfftt11tfftttffLLLLLLLLffL\\nttttftttttffLftttttttttttttfLLLffLLfttt1i;iii1111i:,:1ftfft11ttt111111tfftfffftttttttttttfLLLLffffff\\nttfLffffffftttfffffffffttffttfLfffLfttt1;;;i;iii1i:,;tffttt1tffft11111tfttfffttt11ttttttttfLLftfttft\\nttffffffffftttffffffffftffftttfffffttt11;;;ii;;iii::1fft11tttttfttt111tt1tffttffttfffffLLffffffffffL\\nttffffffffftttffffffffttttttttttfffttt1i;;iiiii11i;itt111tfft1tttt111111t1ttttfftttffffLLLfttfLLLLLL\\ntttffffffffttfffffffftt1ttt111ttfffttt1i;;iiiiiiiii1111ttfffft11t11111tffttttttt11ttffffLfftttfLLLLL\\nttttttttfffttfffttttt1ttfft1111ttffttt1i;;;iiii;;;1t11tffffffft1111111ttttt1ttfft11ttffffLfftfLLLLLf\\ntfttttttttttttttttt11tfffftttt11tfftt111;;iiiii;;;1111ttftfffft11t1111tttt1tt1tffttt1111ttfftfLffftt\\ntfttfffffttt1ttftfftttffftttfft11tft1i1i;;;;iii;;;111111tttft111tt1111ttt11tf1tffffftttttttttttttfft\\n111tfffffftttffftttt11tfftttfttt11i;;;1;;;;;iiii;i1t11t111t11111tt1111tt111tft1fffffttfffftt11tffLLf\\n1t1tffffft11ttffttt1111tftttti;:,,...:1i;;;;iiii1i:;i1ttt111tt11111111111t11tt1tffft1tffffffttfLffLf\\ntftttfftt11t11ttt11ttt111i;:,,.......:11ii;;ii;11i,.,,:;11tt11tt11t1111111111t1tffttttffffftt1tfffLf\\ntffttttttttftt1111ttttt1:............:1111iiii1ti;,,....,,;i1tttt11111111tttt111ttfLffttfftttttttfft\\nttttttttttttttt111ttt1t;...............,:;;i1tt1;,..........,itttt111111tttttttttffLfffttttffffttttf\\ntfffttttfftfttt11ttttt1,................:::::;i;:,...........,1ttt111111ttttfftttffffffftttttttffttf\\ntffft1ttffffff111ttttti.................,;;;;;;;:,...........,1t111111111ttffttttffLLfLfttfffffffttf\\ntffft1ttfttttt111ttttti................,,;;;;;;::,............it1111111111tttttttffLLfLfttfffffffttf\\ntffft1tttttttt111ttttt;.............:;iii;;:;;:::,............it1111111tt111tttttfffLLLfttfffftffttf\\nttttt1tttttttt111tttti,............,;;iiii::;::::,...........,1ttttt111ttt11tft1tfffffLftttfftfffttt\\nttttt1tttt11tt111ttt1:.............:;;;iii;::::::............,1tttt1111111111tt1tttfttftt1tttttffttt\\nttttt1tttttttt11tttti..............,;;;;:,,:::,,:............:tt11t11111111111t11ttttttt11tttttffttt\\n1tttt1tttttttt11tttt:............. ,::,. .::,,,:........... :t1111111t111ttt1111ttttttt111ttttffttt\\n11tt11tttttt111111ti.......................,:::::.............it111t11111tttt1111tttttt1111ttttttt1t\\n1111111111111111111,.............,.........,:::::.............:1t11ii;:;11111111111111111111111tt111\\n1111111111111111111:........................,,:::..............;ii;:;:;ii111111111111111111111111111\\n11111111111111111111:....... ..............,,,:,...............,:::::;i1111111111111111111111111111\\n111111111111111111111:......,,..............,,,:,...............:::;::;i11t1111111111111111111111111\\n1111111111111111111111iiiiii1;...............,,,,.,..............,::::;11111111111111111111111111111\\n11111111111111111111111111111;................,,:,,,...... .it1111111111111111111111111111\\n1111111111111111111111111111t;...............;i;;;::,.....,,.....,,,;i1ttttttttt11tt111111ttttt11111\\n1111111111111111111111111111t;...............:i;;i;::,....:i111111tttttttttttttttttttttttttttttt1111\\n\",\n \"tttttfttttttttffffftfffftfftttttttttt111tttt1111111ttttttt111tttt111111tttttttttttttttttttt1111111tt\\nttfttttttttttttttttffLLftfffffffftttt1t1111111t11tfffffftttt1111111111111111ttftttftttttttt111111ttt\\nttttttttttttttttffffLftttfffffffLLfftt1tttttt111tfffffffftttttttt11111tttttffffftffLfttttttt11111ttt\\nttttttttttttttttfffffttffffffLLLfffttt1ttttttt1tffffffffffttttttt11111tfffffffLffttfffffttt1111ttttt\\nttttttttttttffffttfffttffffffffftttftttttt11ttt1ttfffffftttttt11tt111111ttffffLLLfttfLLft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttfffttttt1tfffft1ttfffffttfffft11t111tt111ttfffLLftttftt1ttt11tttttt\\nttttttttfffLLLLLLffttfLLLfttfffftfLftttttttfffffftttffttffffffftt1111tftt111ttffLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttfLLffftffttttt111i;iitfftttfffffffffftt111tft1tttttttfLLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffffftfftttt1;:,::,,,:;ittttffffffffftt1111t11ttttttttttttttffffffffffttt\\ntttffftfLLLLLLLLLLfttfftfffttfffLLLftt1i:,,,,,,,,,,:1tttttfffffftt1111tft1ttt1tffttt11tffffLLLLLfttt\\nttffffffffLLLLLLLfftfLLftttfLLffLLLftt1i;;;;;;;i;:,:tftt11tfffft11111tffft1tt11ttttt1ttfffLLLLLLLfff\\ntfffffttttfLLLffttttfffffttLLLLfLLLft1;iiiii11111i::tffft11tttt11t111tfffttfftt1ttfftttffLLLLLLLLffL\\ntttfftttttffLftttttttttttttfLLLffLLftt11;;;iiiiiii:;tffffft11tt1111111tfftfffftttttttttttfLLLLffffff\\nttfLffffffftttfffffffffttffttLLfffLft11i;;;;i;;iii;tffffttt1tffft11111tfttfffttt1tttttttttfLLftffttt\\nttffffffffftttffffffffftffffttfftfttt11i;;;i1iii1iitffft11tttttfft1111tt1tffttffttfffffLLfffftfLffLL\\nttffffffffftttffffffffttttttttttffftt11i;;;iii111ii1tt111tfft1ttft111111t1ttttfftttffffLLLfttfLLLLLL\\ntttffffffffttfffffffftt1ttt111ttffftttti;;;;iiiiii11111ttfffft11t11111tfftttttttt1tfffffLLftttfLLLLf\\nttttttttfffttfffttttt1ttfft1111ttffttt1i;;;iiii;;itt11tffffffft1111111ttttt1ttfft11ttffffLfftfLLLLLf\\ntftttttttttttt1tttt11tfffft1tt11tfft111;;;;;iii;;it111ttfffffft11t1111tttt1tt1tffftt1111ttfftfLffftt\\ntfttffffftt11ttftfftttffftttfft11tti;;1;;;:;iii::i111111ttfft111tt1111ttt11tf1tffffftttttttttttttfft\\n111tfffffftttffftttt11tfftttft1i;:,..,1i;;;;iii;i;:;;1t111t11111tt1111tt111tft1fffffttfffftt11tffLLf\\n1tttffffft11ttffftt1111tt1ii:,,......,i1i;;;ii;11;...,:;i111tt11111111111t11tf1tfffttfffffffttfLffLf\\ntfttttftt11t11ttt11ttt11;,,..........,11t1iiii1t1:,,.....,:i111111t1111111111t1tffttttffffttt1tfffLf\\ntffttttttttfttt111ttttti,.............:;;iii11t1i,,.........,ittt11111111tttt11tttfLffttffttttttffft\\nttttttttttttttt111tttt1:................:;;;;;i;:,...........:ttt1111111tttffttttffLLffttttffftttttf\\ntfffttttftttttt11ttttti.................,;;;ii;;:............,1ttt11111ttttffftttffffffttttttttffttf\\ntffft1ttfffftf111ttttti..................:;;;i;;:,...........,1tt11111111ttffttttffLLfLfttfffffffttf\\ntffft1ttfttttt111ttttt;..................,;;;;;::,...........,1t1111111111tttttttffLLfLfttfffffffttf\\ntffft1tttttttt111ttttt;...........,,.....,;;:;:::............,111111111tt111tttttfffLLLfttfffftffttf\\nttttt1tttttttt111tttti,........,;ii:......:;:::::............,ittttt111ttt11tft1tfffffLftttfftfffttt\\nttttt1tttt111t111tttt;........:;;;;:,.....,;:::::.............ittttt1111t1111tt1ttfttttttttttttffttt\\nttttt1tttttttt11tttt1,.......,:::;;;,......::::::.............;tt1t1111111ttt1tttfttttttt1tttttffttt\\n1tttt1tttttttt11tttti.........,:::;:.......,:::::..........,,:;1t11111111ttff1111ttttttt111ttttffttt\\n111111tttttt111111t1,..........,:::........,:::::..........,:;;i1111t111ttttt11111ttttt1111ttttttt1t\\n1111111111111111111;............,,.........,::::,.........,:;;;i1111111111111111111111111111111tt111\\n11111111111111111111:.......................,:::,.. ......,:;;ii111111111111111111111111111111111111\\n111111111111111111111:.......,..............,:::,..........,::i11t1111111111111111111111111111111111\\n1111111111111111111111:,,..,, ..............,,,::,............,1111111111111111111111111111111111111\\n1111111111111111111111111i11:...............,..,:,,..... ..:1t11111111111111111111111111111111111\\n111111111111111111111111111;................,::::,,.....::::;i11tttt111111t1111111111111111111111111\\n111111111111111111111111111,.................ii;;::,....:1tttt1ttttttttttttttttt11tt111111ttttt11111\\n1111111111111111111111111ti..................;i;;;:,.....;t1ttttttttttttttttttttt1ttttttttttttt11111\\n\",\n \"ttffftfffttttttttftttfffttftttttttttt111tttt111111tttttttt111tttt111111tttttttttttttttttttt1111111tt\\nttfftttttttttttttttffLLftfffffffftttt1t111t111t11tfffffftttt111111111111111tttftttfttttttttt1111tttt\\nttttttttttttttttffffLftttfffffffLLffttttttttt111tfffffffftttttttt11111ttttfffffftfLLfttttttt111tttt1\\nttttttttttttttftfffffttffffffLLffffttttttttttt1tffffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\\nttttttttttttffffttfffttffffffffftttfttttt1111tt1ttffffffttttt1111tt11111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttffftttt11tttffttttfffffttfffft11t111tt111ttfffLLftttftt1ttt11tttttt\\nttttttttfffLLLLLLffttfLLLfttfffftfLftt11ii;i;;ii1tttffttffffffftt1111tftt111ttffLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttfLLffftfftt1:,,,,,,,,:iftttfffffffffftt111tft1tttttttfLLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffffftff1i;;:,,,,,,,,:;ttttfffffffffftt1111t11ttttttttttttttffffffffffttt\\ntttffftfLLLLLLLLLLfttfftfffttfffLLLt;,,:;;;;;iiii:ittttttffffffftt1111tft1ttt1tftttt11tffffLLLLLfttt\\nttffffffffLLLLLLLfftfLLftttfLLffLLLfi,:iiii111111;1ffftt11tfffft11111tffftt1t1tttttt1ttfffLLLLLLffff\\ntfffffttttfLLLffttttfffffttLLLLfffffi:;;;;;iiiiiiitffffft11tttt11t111tfffttffft1ttfftttffLLLLLLLLffL\\ntttfftttttfffftttttttttttttfLLLffLLti;;;;;i;;iiii1ftffffftt11tt1111111tfftfffftttttttttttfLLLLffffff\\nttfLffffffftttfffffffffttffttfLfffLtii;;;ii;;i1111tfffffttt1tffft11111tfttffftttttttttttttfLLfffffft\\nttffffffffftttffffffffftffffttfftftt1ii;;;;;;iii11ttffft11tttttfftt111tt1tffttffttfffffLLffffffLffLL\\nttffffffffftttffffffffttttttttttffftt11i;;;;;i111111tt111tfft1ttft11111tt1ttttfftttffffLLLfttfLLLLLL\\ntttffffffffttfffffffftt1ttt1111tfffttti;;;;;;iiiii11111ttfffft11t11111tfftttttttt1ttfffLLLftttfLLLLf\\nttttttttfffttfffttttt1ttfft11111tfft11i;;;:;;ii;;itt11ttfffffft1111111ttttt1ttfft11ttffffffftfLLLLLf\\ntftttttttttttt1tttt11ttffft1tt11ttti::i;;;:;iii;;;i;i1ttftfffft1tt1111tttt1tt1tffftt1111tffftfLffftt\\ntfttffffftt11ttftfft1tffftttff1i;:,...;1;;;;;i;:;i,..,:;i1tft111tt1111ttt11tf1tffffftttttttttttttfft\\n111tfffffftttffftttt11tfft11i;:,......,11;iii;;iii,,,....,:;i1111t1111tt111tft1fffffttfffftt11tffLLf\\n1tttffffft11ttffftt1111t1;;,..........,i1t11ii11i:.,........,111111111111t11tt1tfffttfffffffttfLffLf\\ntfttttftt11t11ttt11ttt11:..............;iiiiiii11,,,......,,,itt11t1111111111t1tffttttffffftt1tfffLf\\ntffttttttttfttt111ttttt;................,;;;i;;ii,...........;ttt11111111ttt111tttfLffttfft1ttttffft\\nttttttttttttttt111ttt11:.................:;;;i;::............;ttt1111111tttftttttffLLffttttffffttttf\\ntfffttttftttttt11ttttt1,.................,;;;;;;:............:ttttt11111tttffftttffffffftttttttffttf\\ntffft1ttfffftf111ttttt1,..................:;;;:::............:1tt11111111ttffttttffLLfLfttfffffffttf\\ntffft1tttttttt111ttttti...................,;;::::............,111111111111tttttttffLLfLfttfffffffttf\\ntffft1tttttttt111ttttt:...................,::::::,:::,.......,1t1t11111tt111tttttfffLLLfttfffftffttf\\nttttt1tttttttt111tttt1,....................,::::::;;;ii:......ittt11111ttt1ttff1tfffffLftttfftfffttt\\nttttt1ttttt11t111tttti.....................,:::::,;;;ii;,.....itttt1111tt111tttttttttttttttttttffttt\\nttttt1tttttttt11ttttt;........ .............:::::,;;;ii;,.....:1t1t1111111tttttttfttttttt1tttttffttt\\n1tttt1tttttttt11ttttt:.... :i;:.............:::::..,;;i:.......it11111111ttff1111tfttttt11tttttffttt\\n11tt11tttttt1111111t1,...,;iiii;, ..........::::,. .,:,......;111111111ttttt1111ttttttt111ttttttt1t\\n11111111111111111111i..,.,;;;iii;...........:::::.......,....itt1111111111111111111111111111111tt111\\n11t111111111111111111;....::;;ii;...........::::,..........,;111111111111111111111111111111111111111\\n1111111111111111111111, ...,:;;;,............,,:,.....,,:;11tt11111111111111111111111111111111111111\\n1111111111111111111111i:,....... ............,,:,.....:1tttttt11111111111111111111111111111111111111\\n1111111111111111111111111;.,. ..............;;;:,,....,it11ttt11111111111t11111111111111111111111111\\n111111111111111111111111i,..................;ii;:,.....,1t1ttttt1111111111t1111111111111111111111111\\n111111111111111111111111:...................;ii;;:......;ttttttttttt11tttt1t111111tt11111111ttt11111\\n111111111111111111111111:...................:i;:;;,.....:t1tttttttttttttttttttttt1tttttttttttttt1111\\n\",\n \"ttffftfffttttttttttttfffttftt111ttttt111tttt111111ttttttttt11tttt111111ttttttttttttttttttttt111111tt\\nttfftttttttttttttttffLLftfffffffftttt111111111t11tffffffttttt11111111111111tttftttfttttttttt1111tttt\\nttttttttttttttttffffLftttfffffffLLfft111ttttt111tfffffffftttttttt11111ttttfffffftfLLfttttttt111ttttt\\nttttttttttttttttfffffttffffffLLLfffttt1ttttttt1tffffffffffttttttt1111ttffffffLffttffffffttt1111tttt1\\nttttttttttttfffftttffttffffffffftttftt1t1iii11111tfffffftttttt11tt111111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttffft11i:,,,::::;1tfffftttfffft11t111tt111ttfffLLfttfftt1ttt11tttttt\\nttttttttfffLLLLLLffttfLLLfttfffftfft1;:,,,,,,,,,:tttttttffffffftt1111tftt111tttfLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttffLfftt1::,,,,,:::::;itfttttffffffffftt111tft1ttfttttfLLfttttfffffftttttt\\ntttttttfLLLLLLLLLLfttttffftffffttf1,,,,:;iii1111itftttfffffffffftt1111t11ttffttttttttttffffffffffttt\\ntttffftfLLLLLLLLLLfttfftfffttffffft:,,,:;iii111ii1tttttttffffffftt1111tft1ttt1tftttt11tffffLLLLLfttt\\nttffffffffLLLLLLLfftfLLftttfLfffLft:,,:;;;;iiiiii1tffftt11tfffft111111ffftt1t1tttttttttfffLLLLLLffff\\ntfffffttttfLLLffttttfffffttfLLfffft;:::;;;iii;iii1tffffft11tttt11tt111fffttffft1ttfftttffLLLLLLLLffL\\ntttfftttttfffftttttttttttttfLLLffffti;;;i;;iii;iitfffffffft1tttt1t1111tfftfffftttttttttttfLLLLffffff\\nttfLffffffftttfffffffffttffttfLftfft1i;;;;;iiiii11ffffftttt1tffft11111tfttffftttttttttttttfLLffffftt\\nttffffffffftttfffffffftttfftttftttttt1;;;;;iiiii11ttffft11tttttfftt111tt1tffttffttfffffLLffffffLffLL\\nttffffffffftttffffffffttttttttttfftt11i;;;;;;ii1111ttt111tfft1ttft11111tt1ttttfftttffffLLLfttffLLLLL\\ntttffffffffttfffffffft11ttt1111ttff1;i;;;;;;;ii;iiii111ttfffft11t11111tfftttttttt1tffffLLLftttfLLLLf\\nttttttttfffttffftt1tt1tttft1111tt1;,.:i;;;;;iii::;;,,:;i1tfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\\ntfttttttttttttttttt11ttffft1tti;:,...,ii;;;;ii;::;;.....,:itftt1tt1111tttt1tt1tffftt1111tffftfLffftt\\ntfttffffftt11ttftfft1tttft1i;:,.......:11iiii;;;:;:,,,,,,..;t111tt1111ttt11tf1tffffftttttttttttttfft\\n111tfffffftttffttttt11tti;:,..........,1tt1ii11i;;,,.,.,,,,,1111t11111tt111tft1tffffttfffftt11tffLLf\\n1tttffffft11ttttttt1111;...............:11iiii;;1;.,.,,.,..,1t11111111111t11tf1tfffttfffffffttfLffLf\\ntfttttftt11t11ttt111tt1,................,;;;ii;i1:.........,111t1111111111111t1tffttttffffftt1tfffLf\\ntffttttttttftt11111ttt;..................:;;;;:;i:..........itttt11111111ttt111tttfLffttfft1tttttfft\\ntttttttttttttt1111ttt1:..................,;;;;:::,..,.......;tttt1111111tttffttttffLLffttttffftttttf\\ntfffttttftttttt11tttt;....................:;;::::,,.........:ttttt111111ttttfftttffffffftttttttffttf\\ntffft1ttfftttt111tttt:....................,;:::,:;;;;:,.....:1ttt11111111ttffttttffLLfLfttfffffffttf\\ntffft1ttfttttt111ttt1,.....................:::,,::;iii;,.....itt1111111111tttttttffLLfLfttfffffffttf\\ntffft1tttttttt111ttt;......................,::,,::;;;i;,.....:111111111tt111tttttfffLLLfttfffftffttf\\nttttt11ttttttt111tt1:......................,:,..:,:;;i;.......:tttt1111ttt1ttffttffffffftttfftfffttt\\nttttt1ttttt111111tt1:......................,:,..:. .:;:......,itttt1111tt111ttttttfttffft1tftttffttt\\nttttt1tttttttt111tt1:........... .........,,,.,:...........,1tt11tt111111ttt1ttttffftttt1tftttffttt\\nttttt1tttttttt11ttti,......... .,..........,,,.,:..........,it11111111111ttft1111ttttttt11tttttffttt\\n11tt11ttttt111111tt:..........,::;,........,,,.,:......,:i11t11111111111ttttt1111ttttttt111ttttttt1t\\n11111111111111111111:........:;;ii;.........,,.,,.....i1ttt11t11t111111111111111111111111111111tt111\\n1111111111111111111ti........,:;;i;,...........,,.....;t11111111111111111111111111111111111111111111\\n11111111111111111111ti;,......,:;;;. ......,:,.,:.....,1t1t11111111111111111111111111111111111111111\\n11111111111111111111111;........,,,........:;::,,......;t1tttt11111111111111111111111111111111111111\\n1111111111111111111111i......... ........:;;::,......,1ttttt11111111111t11111111111111111111111111\\n1111111111111111111111:........ ...........:;;;::.......it1ttttt1111111111t1111111111111111111111111\\n111111111111111111111i,........,......... ,ii;;::,......:ttttttttttt11ttt1tt11t111tt111111t1tttt1111\\n11111111111111111111t;.........,..........:iiii;::,.....,1ttttttttttttttt1ttt1ttt1tttttttttttttt1111\\n\",\n \"ttttftfffttttttttttttfffttttt111ttttt111tttt111111ttttttttt11tttt111111tttttttttttttttttttt1111111tt\\nttfftttttttttttttttffLLftffftfffftttt111111111t11tffffffttttt11111111111111tttftttfttttttttt1111tttt\\nttttttttttttttttfffffftttfffffffLLLft111tttttt11tfffffffftttttttt11111ttttfffffftfLLfttttttt111ttttt\\nttttttttttttttttfffffttfffffffffffft11111;:::;;i1tffffffffttttttt1111ttffffffLffttffffffttt1111tttt1\\nttttttttttttfffftttffttffffffffftttft1;::,,,,,,,,ifffffftttttt11tt111111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLfttttffLLLfftttttff1;:,,,,,,,,,,:itfffftttfffft11t111tt111ttfffLLfttfftt1ttt11tttttt\\nttttttttfffLLLLLLffttfLLLfttfffttt1:,,,,:::;;i;;1tttftttffffffftt1111tftt111tttfLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttffLfftt;,,,,,:;ii11t11tfttttffffffffftt111tft1ttfttttfLLfttttfffffftttttt\\ntttttttfLLLLLLLLLLfttttffffffffttt;,,,,:;;;iii1111ttttfffffffffftt1111t11ttffttttttt1ttffffffffffttt\\ntttffftfLLLLLLLLLLfttfftfffttttfft:,,,,:;;;iiiiii1tttttttffffffftt1111tft1ttt1tftttt11tffffLLLLLfttt\\nttffffffffLLLLLLLfftfffftttfLftfLfi;;;;;;;iii1iii1tffftt11tfffft111111ffftt1t1tttttttttfffLLLLLLffff\\ntfffffttttfLLLffttttfffffttfLLftfffi;;;i;;;;iiiii1fffffft11tttt11tt111fffttffft1ttfftttffLLLLLLLLffL\\ntttfftttttffffttttttttttttttffftffft;;;;;;;;iiii1tttfffffft1tttt1t1111tfftfffftttttttttttfLLLLffffff\\nttffffffffftttfffffffffttftttffftfft1;;;;;;;;iii1ttfffffttt1tffft11111tfttfLftttttttttttttfLLftffftt\\nttffffffffftttfffffffftttfftttftttt1i;;;;;;;;ii111tffftt11tttttfftt111tt1tffttffttfffffLLffffffLffLL\\nttffffffffttttfffffffft1tt1111ttt1::i;;;;;;;i1i;i111ttt11tfft1ttft11111tt1ttttfftttffffLLLfttffLLLLL\\ntttffffffffttffffffftt111tt111i;:,..;i;;i;iii11;;;;,::;1tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\\nttttttttfffttffttttt111ttt1;:,......,ii;;iii;11;:;;,...,:1fffft1111111ttftt1ttfft11ttffffffftfLLLLLf\\ntftttttttttttt11tt111tt1;:,..........;11iii;1t1;:;;,,,,,.:tfttt1tt1111tttt1tt1tffftt1111ttfftfLffftt\\ntfttffffftt11tttttt111:..............:1tt1ii11i::;:,,,,,,,if1111tt1111ttt11tf1tfffffttttttttttttffft\\n111tfffffft1tfftttt11;................:ii;;i;:,,;;,.,,.,..it1111111111tt111tft1tffffttfffftt1ttffLLf\\n1tttffffft111tttttt1i,............,....:;;;;;;:,1i,..,,,..;ttt11111111111t11tt1tfffttfffffffttfLfLLL\\ntfttttftt1t111ttt111;..................,;;;;;:,:1i,.......it111t11t1111111111t1tffttttffffftt1tffLLf\\ntffttttttttft1111111,...................:;;;::,,;;,.......it1tttt11111111ttt111tttfLffttfft1tttttfft\\ntttttttttttttt1111t;....................,;;:::,.:,..,.....:tttttt1111111tttffttttffLLffttttffffttttf\\ntfffttttfttttt111t1,.....................;;:::..:,........,1tttttt111111ttttfftttffffffftttttttffttf\\ntffft1ttfftttt111ti......................::::,..:,.....,:::i1ttt111111111ttffttttffLLfLfttfffffffttf\\nttfft1tttttttt111t:......................,:::,..:,....,:;iiiitt11111111111tttttttffLLfLfttfffffffttf\\ntffft1tttttttt1111;.......................,:,...:,....:;;iiii1111111111tt111tftttfffLLLfttfffftffttf\\nttttt11ttttttt111t;...................,,,,,,,...,......,;;ii1111ttt1111ttt1tfffttffffffftttfftfffttt\\nttttt11tt11111111i,.................,::::::,....:........,,:i1111tt1111tt111ttttttfffffft1tftttffttt\\nttttt11ttttttt11t;.................,:;;;;;;,....:.... .. .,1t11ttt1111111ttt1ttttffffttt1tftttffttt\\nttttt11ttttttt1111:................,::::;i:.....:.,..,,,:;i11tttt111111111tft1111ttttttt11tttttffttt\\n111tt11ttt1111111t1:. ............::::;:.....,:....it11111tt1tt1111111ttttt1111ttttttt111ttttttt1t\\n11111111111111111111i:,..............,,,,......,:....:1tt111111t1111111111111111111111111111111tt111\\n11111111111111111111t11:........,.... . ..,....:.....it1t111t11111111111111111111111111111111111111\\n11111111111111111111111:,..................:....:.....:1ttt11t11t11111111111111111111111111111111111\\n1111111111111111111111i,...................:....:......it1ttttt1tt11111111111t1111111111111111111111\\n1111111111111111111111;....................,,..,:,.....:tttttttt111111111111111111111111111111111111\\n1111111111111111111111:.................. .::..,:......,1t1ttttt11t1t11111t1111111111111111111111111\\n11111111111111111111ti,.................. ,;::,,:.......itttttttttttt111t1tt11t111tt111tttt1tttt1111\\n11111111111111111111t;....................,;;;:,:.......:tttttttttttttttt1ttt1ttt1tttttttttttttt1111\\n\",\n \"tttttttttttttttttttttffftttt1111111tt1111tt1111111ttttttttt11tttt1111111ttttttttttttttttttt1111111tt\\nttfttttttttttttttttffLfttffttfffttttt1111111111111tffffftttt111111111111111tttffttftttttttt11111tttt\\nttttttttttttttttffffLftttfffffffffftt11111iii1i11ffffffffttttttt111111tttttffffftfLLfttttttt111ttttt\\nttttttttttttttttffffftttffffffffffttt11;::,,,,,:;1ffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\\nttttttttttttfffftttffttffffffffttttt1;:,,,,,,,,,,:tffffftttttt111t111111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLftttttffLLfttttttft;,,,,,,,,:::,:itfffftttfffft11t111tt111ttfffLLfttfftt1ttt11tttttt\\nttttttttffLLLLLLLffttfLLLfttfffttt;,,,,,,:;ii1111tttttttffffffftt1111tftt111tttfLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLffttfttttffffft1:,,,,,:;iii11111fttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\\ntttttttfLLLLLLLLLffttttffftfffftt1:,,,,,:;;;iiiii1ftttfffffffffftt1111t11ttffttttttt1ttffffffffffttt\\ntttffttfLLLLLLLLLLfttfttffftttttft::;;::;;iiiiiii1ttttttttfffffftt1111tft1ttt1tffttt11tffffLLLLLfttt\\nttffffffffLLLLLLffftfffttttffftfLfi:;i;;;;;iiiiii1tffftt11tfffft111111ffftt1tt1tt1tttttfffLLLLLLffff\\ntffftfttttfLLLfftttttffffttfLLftfff;:;;;;;;;iiiii1tffffftt1tttt11tt111fffttffft1ttfftttffLLLLLLLLffL\\ntttttttttttfffttttttttttttttffffffft;;;;;;;;iiii1ttffffffft1ttt1111111tfftfffftttttttttttfLLLLffffff\\nttffffffffftttfffffffffttft1tfffttt1i;;;;;;;;iii1ttfffftttt1tffft11111tfttffftttttttttttttfLLfffffft\\nttffffffffftttfffffffftttffttttti::i;;;i;;;;ii1111tttttt11tttttfftt111tt1tffttffttfffffLLffffffLLfLL\\nttffffffffttttfffffffft1ttt11i;:,.,ii;;iiiii11:i1111tt111tfft1ttft11111tt1ttttffttttfffLLLfttfLLLLLL\\ntttffffffffttffffffftt111i;:,......:11;;iiiii1::;;;::;i1ttffft11t11111tfftttttttt1ttffffLfftttLLLLLf\\nttttttttfffttfttt1111ii;:,.........,it1iii;;1ti::;;,..,:1tfffft1111111ttttt11tfft11ttffffffftfLLLLLf\\ntfttttttttt1tt111111;,..............;1111ii1ti:;:;;,,,,.:tffftt11t1111tttt1tt1tffftt1111ttfftfLffftt\\ntfttfffftt1111ttttti,................:;;;i;;;,,:;;:,,,,,,itt1111tt1111ttt11tf1tffffftttttt1tttttffft\\n111tfffffft1ttttttt:..........,,......:;;;;;;,.,i;,,,,,,.;t111111111111t111tft1tffffttfffftt1ttffLLf\\n111ttfffft111ttttt1,............,.....,;;;;;:,.:1i,......;11t111111111111t11tt1tfffttfffffffttfLfLLL\\ntttt1tftt11111tt11;....................:;;;;:,.:1i,......:tt11111111111111111t1tffttttffffftt1tffLLf\\nttft11ttttttt1111i,....................,:;:;:.,,;:,......:111tttt11111111tttt11tttfLffttfft1tttttfft\\ntttttt1ttttttt111;......................,;:;:..,:,.......:11tttttt111111tttffttttffLLffttttffffttttf\\ntffft11ttttttt11i,.......................:::,..,:,.......,1tttttttt11111ttttfftttffffffftttftttffttf\\ntffft11ttttttt11;........................,:::,..:,........;11tttt11111111ttffttttffLLfLfttfffffffttf\\ntttft11ttttttt11;......................,:;;;;;;,:,........,111tt1111111111tttttttffLLfLfttfffffffttf\\ntfttt11ttttttt11i.....................:::;;;;;:.:,....... ,1t11111111111t111tftttfffLLLfttfffftffttf\\ntttt111ttttttt11:....................,:::;;;;;.,:,..........,:;iii11111ttt11tffttffffffftttfftfffttt\\nttttt11tt1111111,....................,:::;;;;,.,:.......... .::;;;;ii11111ttftttftfffft1tftttffttt\\nttttt11ttttttt11i................. ....,,,,.....:.... ........,:::;;;;ii111tt1tttfffffttt1tftttffttt\\nttttt11ttttttt11ti,. .........,... .. ....,..:,.. ....,:::;;;iii1ttt1111ttttttt11tttttffttt\\n11111111ttt111111t1ii;;;,.......................:..,.:1;:,,.. ..,;i1i1t1ttt1111ttttttt111ttttttt1t\\n1111111111111111111ttttt:,......................:.. ,tttt111i;;;;i1tt1111111111111111111111111tt111\\n111111111111111111111111:,..................,...:.....it1t1ttttttttt11111111111111111111111111111111\\n111111111111111111111111;,..................,...:.... ;tttt11t11t11111111111111111111111111111111111\\n111111111111111111111111:...................,..,:.....:ttttttttttt1111111111111111111111111111111111\\n11111111111111111111111i,...................:,.,:.....,1ttttttttt11111111111111111111111111111111111\\n11111111111111111111111;...................,::..:.....,1ttttttttt1t11t1111t1111111111111111111111111\\n11111111111111111111111:.................. :;:,,:......itttttttttttttt111ttt11t1111t111t1ttttttt1111\\n111111111111111111111t1:.................. :;;:::......;ttttttttttttttttt1ttt1ttt11ttttttttttttt1111\\n\",\n \"tttftttttttttttttttttffftttt1111111tt1111tt11111111tttt1ttt11tttt111111tttttttttttttttttttt1111111tt\\nttfftttttttttttttttffLfftfftttffttttt111111111111ttffffftttt1111111111111111ttffttfttttttttt1111tttt\\ntttttttttttttttttffffftttffffffffffft111tt111111ttffffffttttttttt11111tttttffffftfLLftttttt11111ttt1\\nttttttttttttttttffffftttffffffLffftt111i;;:::::;1tffffffffttttttt11111tfffffffLfftfffffftttt111ttttt\\nttttttttttttfffftttffttffffffffttttt1i;,,,,,,,,,,;fffffftttttt111t111111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLftttttffLLftttttttti:,,,,,,,,,,,,;tfffftttfffft11t111tt111tttffLLfttfftt1tt111tttttt\\nttttttttffLLLLLLLffttfLLffttfffttti,,,,,,:;;;ii;itttttttffffffftt1111tftt1tttttfLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttffffft1:,,,,::;i111tt1tfttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\\ntttttttfLfLLLLLLLLfttttffftfffftti,,,,,,:;;iiii1i1ftttfffffffffft11111t11ttftttttttttttfffffLLfLfttt\\ntttffttfLLLLLLLLLLfttfttffftttttf1,,::,:;iiiiiiii1ttttttttfffffftt1111tft1ttt1ttfttt11tffffLLLLLfttt\\nttfffftfffLLLLLfffftfffttttffftfLf;:ii;;;;iii11ii1tfffft11tfffft111111ffft11t1ttt1tt1tffffLLLLLLLfff\\ntffftfttttfLLLfttttttffffttfLLftff1:;ii;;;;iiiiii1ffffftt11tttt1ttt111fffttfffttttfft1tffLLLLLLLLffL\\ntttttttttttfffttttttttttttttfffffff1;;;;;;;iiiii1tffffffftt1ttt1111111tfftfffftttttttttttfLLLLffffff\\nttffffffffftttffffffffftttt1tffftft1i;;;;;;;iiii1ttfffffttt1tffft11111tfttfffttt1tttttttttfLLftfffft\\nttffffffffttttfffffffft1tftt1tft1;ii;;;;;;;;ii1111ttftft11tttttfft1111tt1tffttffttfffffLLffffffLffLL\\nttffffffffttttfffffffft1tttt1ii;,.:i;;;i;iii111t111ttt111tffttttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\\ntttffffffffttfffftfttt111ii;:,....,i1;;iiiii1i:;;;i11111tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\\ntttttttttffttfttt1111ii;:,.........;11iiii;;11;::;;,:;1tftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\\ntft1ttttttt1t1111111:,.............:1tt1iii1t1;;:;:,,.,:1tffftt11t1111ttt11tt1tffftt1111ttfftfLLfftt\\ntttttffttt1111ttttt;................:iiiiii11,:;:;:,,,,.:tttt111tt1111ttt11tf1tffffftttttt1ttttttfft\\n1tttfffffft1tftttt1,.................,;;;;:;:.,:i:,,,,,,,it11111111111tt111tft1tffffttfffftt11tffLLf\\n111ttfffft111ttttti...................:;;;;;:,,:1;.......;t1tt11111111111t11tf1tfffttfffffffttfLfLLf\\ntttt1tftt11111ttt1:...................,;:;;;:..;1;.......:tt111t11t1111111111t1tffttttffffftt11ffLLf\\nttft1111ttttt1111;.....................:;:;;,..,;:.......,111tttt11111111tttt11tttfLffttfft1tt1tffft\\n1tttt11ttttttt111,.....................,::;;,..,:,.......,1ttttttt111111tttffttttffLLffttttffffttttf\\ntfftt11ttttttt11;.......................:::;,..,:,........itttttttt1111tttttfftttffffffftttftttffttf\\nttfft11ttttttt11,.......................,;;;;:,,:,........;11tttt11111111ttffttttffLLfLfttfffffffttf\\ntttft11ttttttt1i,.....................,::;i;;;,,:.........:111tt1111111111tttttttffLLfLfttfffffffttf\\nttttt11ttttttt1i.....................,:::;i;i:.,:,........,1t1111t111111t111ttfttffLLLLfttfffttffttf\\ntttt111ttt11t11;.....................,:::;;;;,.,:..........1tt111tt11111ttt1tffttffffffftttffftffttt\\nttttt11t1111111:......................:::::,...,:..........:i1tttt1tt111t1111tttttfttffft1tttttffttt\\nttttt11tttt11t1i.......................... ....,,.......... .,,:i11iii11111tt1t1ttffffttt1ttttttfttt\\nttttt11tttttt111;... ......................,:............ .,:::;iiii1111111tfttttt11ttttttfttt\\n11111111t1111111t1i;;::::......................,:..,:.. .......,::;;;;;;iii11111tttttt111ttttttt1t\\n11111111111111111ttttttt1,.....................,:......:,.. ..,:;;;:;;;iiii11111111111111111tt111\\n111111111111111111111111i,.................,::..,.... ,tt1ii;,,.. ..,:i;;iii111111111111111111111111\\n111111111111111111111111i,.................,;:,,,......1tttttt11i;;::itt11t1111111111111111111111111\\n111111111111111111111111i,................ ,;:::,......it1t1tttttttttt11tt11t111111111111111111t1111\\n111111111111111111111111;................. ,;;::,......it1tttttttt1111111t11111111111111111111111111\\n111111111111111111111111:................. .;;:::......;t1ttttttt1ttttt111t1111111111111111111111111\\n111111111111111111111111,...................;i;::,.....;tt1ttttttttttt11tttttttt111t111111tttttt1111\\n111111111111111111111111:...................:i;:::.....ittttttttttttttttttttt1ttt111tttttttttttt1111\\n\",\n \"tttftttttttttttttttttffftttt1111111tt1111tt11111111tttt1ttt11tttt111111tttttttttttttttttttt1111111tt\\nttfftttttttttttttttffLfftfftttffttttt111111111111ttffffftttt1111111111111111ttffttfttttttttt1111tttt\\ntttttttttttttttttffffftttffffffffffft1111tttt111ttffffffttttttttt11111tttttffffftfLLfttttttt1111ttt1\\nttttttttttttttttffffftttffffffLffftt11111i;iiii1tfffffffffttttttt11111tfffffffLfttffffffttt1111ttttt\\nttttttttttttfffftttffttffffffffttttt11;::,,,,,,::1fffffftttttt111t111111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLftttttffLLftttttttf1;:,,,,,,,,,,,itfffftttfffft11t111tt111tttffLLfttfftt1ttt11tttttt\\nttttttttfffLLLLLLffttfLLffttfffttt1,,,,,,,::::::itttftttffffffftt1111tftt11t11tfLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttffLfft1:,,,,,:;ii11111ffttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\\ntttttttfLfLLLLLLLLfttttffftfffftt1:,,,,:;;iii1111fftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\\ntttffttfLLLLLLLLLLfttfttffftttttf1,,,,,:;iiii;iii1ttttttttfffffftt1111ttt1ttt1ttfttt11tfffffLLLLfttt\\nttfffftfffLLLLLfffftfffttttffftfLt:;;;:;;iiiiiii11tfffft11tfffft111111ffft1tt1ttt1tt1tfffLLLLLLLffff\\ntffftfttttfLLLfttttttffftttfLLftff1;;;i;;;iii1iiitfffffft11tttt1ttt111fffttfffttttfftttffLLLLLLLLffL\\ntttttttttttfffttttttttttttttffftfffi;;;;;;iiiiii1tffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\\nttffffffffftttffffffffftttt1tffftffti;;;;;;iiiii1tttffffttt1tffft11111tfttfffttt1tttttttttfLLftfffft\\nttffffffffftttfffffffftttftt1tftt111i;;;;;;;;ii111tfftft11tttttfft1111tt1tffttffttfffffLLffffffLffLL\\ntttfffffffttttfffffffft1tt111111i::i;;;i;;;;i11t111ttt111tffttttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\\ntttffffffffttfffftfftt111111i;:,..,ii;;iiiii11:;;;111111tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\\ntttttttttffttfttt1111111i;:,.......:11;iiii;11;::;;,:i1tftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\\ntfttttttttt1t1111111i;:,...........:1t1iii;itt;;;;:.,,,:itffftt11t1111ttt11tt1tffftt1111ttfftfLffftt\\ntttttffftt1111ttttt1:..............,i111ii1tti:;;;:,,,,.,1tft111tt1111ttt11tf1tffffftttttt1ttttttftt\\n111tfffffft1tfttttt;.................:;;;;;;;,.:i:.,,,,,.;t11111111111tt111tft1tffffttfffftt11tfffLf\\n111ttfffft111ttttt1,..................:;;;;;:,.:1;.....,.:11tt11111111111t11tf1tfffttfffffffttfLfLLf\\ntttt1tftt111111tt11,..................,;;;;;:,.;1;.......,1t111t11t1111111111tttffttttffffftt11fffLf\\ntttt111tttttt11111;....................::;;;,..,;:.......,i11tttt11111111tttt11tttfLffttfft1tt1tffft\\n1tttt11ttttttt111i.....................,::;;,..,:.........ittttttt111111tttffttttffLLffttttffffttttf\\ntfftt11ttttttt111,......................::::,..,:,........itttttttt11111ttttfftttffffffftttttttffttf\\nttfft11ttttttt11;.......................,:::,..,:,........;11tttt11111111ttffttttffLLfLfttfffffffttf\\ntttft11ttttttt11:........................,:,,..,:,........,111tt1111111111tftttttffLLfLfttfffffffttf\\nttttt11ttttttt11,.......................,,::,..,:..........it11111t11111t111tttttffLLLLfttffftfffttf\\ntttt111tttt1t11i......................::;;;;;:.,:..........;t11tttt11111tt11tffttffffffftttffftffttt\\nttttt11tt111111:....................,:::;i;;i,.,:..........;ttttttt1111111111tttttfttffft1tttttffttt\\nttttt11ttttttt1;....................,:::;i;;:..,,...........:;iii1111111111tt1t1ttfffttt11ttttttfttt\\nttttt11tttttt111:...................,:::;;;;...,,........... .,:;;;:;i1111ttt1111ttttttt11ttttttfttt\\n11111111t11t11111;,.. ...............,,,....,:.... .......,:::::;;11tt11111111tt1tt1111ttttttt1t\\n11111111111111111t11i;;;:.......,..... ......,,....,,. ...,::;::;i1111111111111111111111111tt111\\n11111111111111111111tttti,...................,.,,... :1i:,. .,,;;i1111111111111111111111111111111\\n111111111111111111111111i,...................:,,,.....ittt1i:,.. ,1tttt111111111111111111111111t1111\\n111111111111111111111111;,...................,,::.... .111tttt1ii1ttt11111111t11111111111111111t1111\\n111111111111111111111111;....................,:::......it1t11ttttt1111111111111111111111111111111111\\n111111111111111111111111;....................,::,......;t1tttttt11tt1tt111t1111111111111111111111111\\n11111111111111111111111t:....................::::......:1111ttttttttttt1tt11ttt11111111111tttttt1111\\n11111111111111111111111t:....................:;::,.....,1tttttttttttttttttttttttt111tttttttttttt1111\\n\",\n \"tttftttttttttttttttttffftttttt11ttttt1111tt11111111tttt1ttt11tttt111111tttttttttttttttttttt1111111tt\\nttfftttttttttttttttffLfftfffttffttttt111111111t11ttffffftttt1111111111111111ttffttfttttttttt1111tttt\\ntttttttttttttttttffffftttffffffffffft1111tttt111tfffffffttttttttt11111tttttffffftfLLfttttttt1111ttt1\\nttttttttttttttttffffftttffffffLfffttt1111ttttt1tffffffffffttttttt11111tfffffffLfttffffffttt1111ttttt\\nttttttttttttfffftttftttffffffffttttft1i;:;;;;;i11tfffffftttttt111t111111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLftttttffLLfttttttfft1;:,,,,,,,,:1ttfffftttfffft11t111tt111tttffLLfttffft1ttt11tttttt\\nttttttttfffLLLLLLffttfLLffttfffttti::,,,,,,,,,,;ttttftttffffffftt1111tftt11t11tfLLfttt11tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttfffffti,,,,::;;;iiiii1ffttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\\ntttttttfLLLLLLLLLLftttttfftfffftt1:,,,;iii1111111fftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\\ntttffttfffLLLLLLLLfttfttffftttttff:,,:;;;iiii1ii1tttttttttfffffftt1111ttt1ttt1ttfttt11tfffffLLLLfttt\\nttfffftfffLLLLLfffttfffttttffftfLt;:,:;;;;iiiiii11tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\\ntffftfttttfLLffttttttffftttfLLftff1;;;;;iiiii;i11ttfffftt11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\\ntttttttttttffftttttttttttttfffLtfffii;;;;;ii;;iittffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\\nttffffffffftttfffffffffttft1tffftffti;;;;;iiiii1ttttffffttt1tffft11111tfttfffttt1tttttttttfLLfffffft\\nttffffffffftttfffffffftttfttttfttttti;;;;;iiii1111tfftft11ttttffff1111tt1tffttffttfffffLLffffffLffLL\\nttffffffffttttfffffffft1tt11111tft11i;;;;;;;iit11111tt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\\ntttffffffftttfffftfftt1111111111i:,;i;;;;;;ii1i;;;111111tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\\nttttt1tttffttfttt11t111tttt1i;:,...:1i;ii;ii;1i:;;i;;i1tftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\\ntfttttttttt1tt1111111ttt1;:,,.......;ti;iii;it1;;;;,..,:i1fffft11t1111ttt11tt1tffftt1111ttfftfLffftt\\nttttfffftt1111ttttt111;:,...........;tt11iii1t1::;;,,,,,.,1ft111tt1111ttt11tf1tffffftttttt1ttttttftt\\n111tfffffft1ttttttt11,..............:i11iii111:,;;,,,,,,,.;t1111t11111tt111tft1tffffttfffftt11tfffLf\\n111ttfffft111ttttttt;.................:;;;;;;:.,ii,....,,.:1tt11111111111t11tf1tfffttfffffffttfLfLLf\\ntttt1tftt11111ttt111:.................,;;i;;;,.,1i,.......:t111111t1111111111tttffttttffffftt11fffLf\\ntttt11ttttttt1111111,..................:;;;;;,,,;;,.......:11tttt11111111tttt11tttfLffttfft1tt1tffft\\n1tttt11ttttttt11111i...................,;;;;:,..:,........:1tttttt111111tttffttttfLLLLfttttffffttttf\\ntfftt11ttttttt11111:....................:i;;:,.,:,........,1ttttttt1111ttttffftttffffffftttttttffttf\\nttfft11ttftttt111ti,.....................;;::,..:,........,i1tttt11111111ttffttttffLLfLfttfffffffttf\\ntttft11ttttttt111t;......................,::,...:,.........;11t11111111111ttt1tttffLLLLfttfffffffttf\\nttttt11ttttttt111t:......................,::,...:,...,,....it11111111111t111tttttfffLLLfttfffftffttf\\ntttt11tttt11tt1111,.......................,,,...:,...,:;;;;itt11ttt1111ttt1ttftttffffffftttffftffttt\\nttttt11t111111111i.........................,,...:,...,:;iiii11111t111111t111tttttttttffft1tftttffttt\\nttttt11ttttttt111,.........................,,...:....,:;;iii11111111111111ttttt1ttfffttt11ttttttfttt\\nttttt11ttttttt111;...................,,,,..,....,......,:;ii1ttt1111111111ttt1111tfttttt11ttttttfttt\\n11111111t11t11111t;...............,:::::::..,...:.........,,it11tt1111111tttt1111ttt1tt1111ttttttt1t\\n1111111111111111111,.............:::::;;i:......:..... :1ttttt111111111111111111111111111111t111\\n11111111111111111111;,.. ........,::::;;:.......,... ,i;;;i1tttt111111111111111111111111111111111111\\n11111111111111111111t11i,.........,:::;;. ..,:,.:.....itttttttt1111111t111111111111111111111111t1111\\n11111111111111111111111t;...........,,,.... ,:,,:......it1111ttt1111111111111111111111111111111t1111\\n111111111111111111111111;.......... .... .:,,:,. ...:tttt11tt111111111111111111111111111111111111\\n111111111111111111111111;....................::::..,,..,1tttttttt1tttt1111t1111111111111111111111111\\n11111111111111111111111t;....................::::..,,...;t1tttttttttttt1t11ttttt111t111111tttttt1111\\n11111111111111111111111ti....................:;::,......:11tttttttttttttttttttttt11t11t1111ttttt1111\\n\",\n \"tttftftttttttttttttttfffttttt1111tttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt1111111tt\\nttfftttttttttttttttffLfttfffttffttttt111111111t11tfffffftttt1111111111111111ttffttfttttttttt1111tttt\\nttttttttttttttttfffffftttffffffffffftt11ttttt111tffffffftttttttt11111ttttttffffftfLLfttttttt1111ttt1\\nttttttttttttttttffffftttffffffLfffttttt11tttt11tffffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\\nttttttttttttfffftttffttffffffffftttft1tttt11ttt1ttfffffftttttt111t111111ttffffLLffttfLLft111111ttttt\\nttttttttttffLLLLftttttffLLftttttttfft11iiiiiittt1ttfffffttfffft11t111tt111tttffLLfttffft1ttt11tttttt\\nttttttttfffLLLLLLffttfLLffttfffttfft;::,,,,,,:itttttffttffffffftt1111tftt11t11tfLLftttt1tffftttttttt\\ntttttttfffLLLLLLLLLfttfttttffffft11i:,,,,,,,,:,;fffttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttfffttffftt1;:::::;;;iii;:tfftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\\ntttffttfffLLLLLLLLfttfttfLfttttfft;:;iii111111i;1ttttttttffffffftt1111ttt1ttt1ttftt11ttfffffLLLLfttt\\nttfffftfffLLLLLLffftfffttttfffffLf;:;;;;ii1iiiii11tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\\ntffffftttffLLffftttttffffttfLLffffi:i;;;;;ii;ii11ttffffft11tttt1ttt11tfffttffft1ttfftttffLLLLLLLLffL\\ntttttttttttffftttttttttttttfLfftffi;ii;ii;i11111tfffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\\nttffffffffftttfffffffffttftttfLftf1;;;;;;;;i1111tttffffftttttffft11111tfttfffttt1tttttttttfLLfffffft\\nttffffffffftttfffffffftttfftttftttt1i;;;;;iiii1111ttftft11ttttffff1111tt1tffttffttfffffLLfffffffffLL\\ntttfffffffttttfffffffft1ttt1111tfftt1i;;;;iii1tt111ttt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\\ntttffffffffttffffttftt111t11111ttfft1;;;;;;ii1ti;;i11111ttffft11t11111tfft1tttttt1tfffffLfftttfLLLLL\\nttttt1tttffttfttt111111tttt11111tti:i;;;;;;iii1;:;i1i1ttftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\\ntfttttttttt1tt11t1111ttfftt1tt1i;:..;i;;;;;iii1i:;;:,,:;i1ffftt11t1111ttt11tt1tffftt1111ttfftfLffftt\\ntfttfffftt1111tttttt1tttttt1i;,.....:11;ii;;;iti:;;,,,...,:1t111tt1111ttt11tf1tffffftttttt1tttttfftt\\n1t1tfffffft1tttttttt111tti:,....,...,i11iii;i1ti;i,,,,,,,,.,i111t11111tt111tft1tffffttfffftt11tffLLf\\n1t1ttfffft111tttttt1111:,...........,i1t1iii11i,;1,....,,...;t11111111111t11tf1tfffttfffffffttfLLLLf\\ntftt1tftt1tt11ttt111tt;..............,:;i;;;;;,.i1,.........:11111t1111111111tttffttttffffftt1tffLLf\\ntfftttttttttt111111ttt:................,;;i;;:,,:;,.........:tttt11111111tttt11tttfLffttfft1tt1tffft\\ntttttt1ttttttt1111ttti,................,:;;;;:,.,:..........,ttttt111111tttffttttfLLLLfttttffffttttf\\ntffft11ttttttt1111ttt;..................,;;;::,.,,..........,1tttt111111tttffftttffffffftttttttffttf\\ntffft11ttftttt111tttt:...................:;;::..::,,.........ittt11111111ttffttttffLLfLfttfffffffttf\\ntffft11ttttttt111ttt1:...................,;::,,::;;;i;,......;t11111111111ttt1tttffLLLLfttfffffffttf\\ntttft11ttttttt111ttt1,....................,::,,::;;iii;. ...,it11tt11111t111tttttfffLLLfttfffftffttf\\nttttt1tttttttt111t1ti.....................,:,,,,::;iii;.....,it11tt1111ttt1ttftttffffffftttffftffttt\\nttttt11tt11111111t1ti......................,:,. ,,,:;i:.......;11tt11111t111tttttttttffft1tttttffttt\\nttttt11tttt11t11tttt;......................,,,..,, .,,.......,;11111111111ttttt1ttfffttt11ttttttfttt\\nttttt1tttttttt111ttt:.......................,,..,,.....,....:1ttt111111111ttt1111tfttttt11ttttttfttt\\n1111111ttt1t11111tt1,.......................,,..:,.........:1t11111111111tttt1111ttt1ttt111ttttttt1t\\n11111111111111111111;....... ............,,..:,.....,;ii1t1t111111111111111111111111111111111t111\\n111111111111111111111,.... .,::,................:....,11ttt11tt11t1111111111111111111111111111111111\\n111111111111111111111;.....;i;;;,...............:,....it1111ttt1tt1111t111111111111111111111111t1111\\n1111111111111111111111i:.,iii;;i:.......... ,::,:......itttttttt1111111111111111111111111111111t1111\\n111111111111111111111111i,:;;;ii;,......... ,;;::,.....:1ttttttt11111111111t111111111111111111111111\\n111111111111111111111111i,.,::;;:.......... ,;;;::......itttttttt1tttt11t1tt111111111111111111111111\\n111111111111111111111111i..,.................;;;::,.,,..:1tt1tttttttttttt11ttttt11111111tttttttt1111\\n111111111111111111111111i..... .............;i;:::,.....itttttttttttttt1tttttttt11t11t1111ttttt1111\\n\",\n \"tttfttfttttttttttttttfffttttt1111tttt111tttt111111ttttttttt11tttt111111tttttttttttttttttttt111111ttt\\nttfftttttttttttttttffLfftfftttffftttt111111111111tfffffftttt111111111111111tttffttfttttttttt11111ttt\\nttttttttttttttttffffLffttfffffffffffttttttttt111tffffffffttttttt111111ttttffffLfffLLfttttttt1111t1t1\\nttttttttttttttttffffftttffffffLffffttttttttttt1tffffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\\nttttttttttttfffftttffttffffffffftttftttttt11ttt1ttfffffftttttt111t111111ttffffLLffttfLLfft111111tttt\\nttttttttttffLLLLftttttfLLLftttttttfftttttttfffft1tffffftttfffft11t111tt111tttffLLfttfftt1ttt111ttttt\\nttttttttfffLLLLLLffttfLLLfttfffftffft11i;ii1ttffttttffttffffffftt1111tftt11t11tfLLfftt11tffftttttttt\\ntttttttfffLLLLLLLLffttfttttffLfLftti;:;:,,,:;;itffftttfffffffffftt111tft1ttft11tffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffftffffftt1;,,,,,,,,::,:tfftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\\ntttffttfffLLLLLLLLfttfftfLftttffff1;::::;;iii;,:1ttttttttffffffftt1111ttt1ttt1ttfttt1ttfffffLLLLfttt\\nttfffftfffLLLLLfffftfffftttfLfffLfi;iiii11111i;:i1tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\\ntffffftttffLLfffttttfffffttfLLffLf;;;;iiiiiiii;:1tfffffft11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\\ntttttttttttffftttttttttttttffLLffLt;;:;;ii;;iii;ttffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\\nttffffffffftttfffffffffttftttfLftf11i;;;i1ii11ii1tfffffftttttffft11111tfttfffttt1tttttttttfLLfffffft\\nttffffffffftttfffffffftttfftttfttt11i;;;;i1111i111ttffft11ttttffft1111tt1tffttffttfffffLLfffffffffLL\\ntttfffffffttttfffffffftttttt111tfft11;;;;iiiii1t1111tt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\\ntttffffffffttfffffffft111tt1111ttfft1i;;;iiiii1;;;111111ttffft11t11111tfft1tttttt1tfffffLfftttfLLLLL\\nttttt1tttffttfftttttt11ttttt111tttft1i;;;;iiiii;;;1t11ttftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\\ntft1ttttttttttttttt11tffftt1tt11tff1ii;;;;;iiii:;;i;;i1tttffftt11t1111ttt11tt1tffftt1111ttfftfLffftt\\nttttffffttt11tttttft1tttttt1ttt11i;,:i;;;;;iii;;;;:...,,,:;i1111tt1111ttt11tt1tffffftttttt1ttttttftt\\n111tfffffft1ttfftttt11tttt1tfti;,...,i1i;;ii;;i1i;,.........,i11111111tt111tft1tffffttfffftt11tffLLf\\n1t1ttfffft111tftttt1111ttt11;:,......;11iii;;1t11;......,.,,.,i1111111111t11tt1tfffttfffffffttfLLLLf\\ntftt1tftt1tt11ttt11ttt11i;:,.........:1tt1i;i1111;............;t11t1111111111tttffttttffffftt1tffLLf\\ntfftttttttttt111111tttt1,.............:;;;;;;;;:;:............:tt11111111tttt11tttffftttfft1tt1tffft\\n1ttttt1ttttttt1111tt11ti................:;;;;;:,:,............,1tt111111tttffttttfLLLLfttttffffttttf\\ntffftttttttttt111tttt1ti................,;;;;::,:,.............ittt11111tttffftttffffffftttttttffttf\\ntfffttttfftttt111tttttt;.................:;;:::,:,.............:tt1111111ttffttttffLLfLfttfffffffttf\\ntffftttttttttt111tttttt;.................,:;:::,:.,:,,.........,it11111111ttt1tttffLLLLfttfffffffttf\\ntttft11ttttttt111tttttt:..................,::::,:,,;;;;;:,......itt11111t111tttttffLLLLfttfffftffttf\\nttttt1tttttttt1111t1ttt;...................,::,,:,:;;;iii;.....,1tt1111ttt11tftttffffffftttffftffttt\\nttttt11tt1111t111tt1ttt:...................,::,,:::;;iiii;,.....:i1t1111t111tttttttttffft1tftttffttt\\nttttt11ttttttt11ttttttt:....................::,,:..,,:;ii:...... .1t111111ttttt1ttffffft11ttttttfttt\\nttttt1tttttttt111tttttt:....................,::,:. ..::,......,1t1111111ttt1111tfttttt11ttttttfttt\\n1111111tttttt1111ttt1tt:.... ...............,:,,:..............,1t1111111tttt1111ttt1ttt111ttttttt1t\\n11111111111111111111111;;;;:,...............,:,,:....... ...,,:1ttt11111111111111111111111111111t111\\n11111111111111111111111iiiiii:...............,,,:........,:i11tt1tt111111111111111111111111111111111\\n11111111111111111111111iiiiiii...............,,,:.......,1tttt11tt1111t111111111111111111111111t1111\\n1111111111111111111111i;iiiiii,..............,.,:........ittt11t111111111111111111111111111111111111\\n111111111111111111111111iiii;,...............::::,,......:1ttttt11t111111111111111111111111111111111\\n1111111111111111111111111i:,. ...............:i;:::,......itttttt1ttt111t1tt111111111111111111111111\\n11111111111111111111111111:................. :i;;;::,.....;ttttttttttttttt1ttttt111111111ttttttt1111\\n11111111111111111111111111:................. :i;;;;::,....:tttttttttttttttttttttt11t11t1111ttttt1111\\n\",\n \"tttftttttttttttttttttfffttttt1t1ttttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt111111ttt\\nttfftttttttttttttttffLLftffftfffftttt111111111t11tfffffftttt1111111111111111ttffttfttttttttt1111tttt\\nttttttttttttttttffffLffttfffffffffffttttttttt111tfffffffftttttttt11111tttttfffffffLLfttttttt111tttt1\\nttttttttttttttttfffffttfffffffLffffttttttttttt1tffffffffffttttttt1111ttffffffLLfttffffffttt1111tttt1\\nttttttttttttfffftttftttffffffffftttfttttt111ttt1ttfffffftttttt111tt11111ttffffLLffttfLLff111111ttttt\\nttttttttttffLLLLftttttfLLLftttttttffttttttttffft1tffffftttfffft11tt11tt111tttffLLfttfftt1ttt111ttttt\\nttttttttfffLLLLLLffttfLLffttfffftfffttttttfffffftfttffttffffffftt1111tftt11t11tfLLfftt11tffftttttttt\\ntttttttfffLLLLLLLLffttfttttffffffttft111i;ii1ttfffftttffffffffffft111tft1ttft11tffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffffftft1i:::,,,,::;;1fftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\\ntttffttfffLLLLLLLLfttfftfLffftfffLf1;,,,,,,,::,,:1tttttttffffffftt1111ttt1ttt1ttfttt1ttfffffLLLLfttt\\nttfLfftfffLLLLLfffftfLfftttfffffLLf1;;;;;iiiii:,:1tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\\ntffffftttffLLfffttttfffffttfLLLffLfiiiii111111i::1tffffft11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\\ntttftttttttffftttttttttttttfffLffLfii;;;iiiiiii;:1ftffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\\nttffffffffftttfffffffffttfttffLfffLti;:;;ii;ii1;;ttffffftttttffft11111tfttffftttttttttttttfLLfffftft\\nttffffffffftttfffffffftttfftttftttt1i;;;ii11111ii1ttffft11ttttffft1111tt1tffttffttfffffLLfffffffffLL\\ntttfffffffttttfffffffftttttt111tfff1ii;;;iiiiiii1111tt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\\n1tfffffffffttfffffffftt1ttt1111tffft1i;;;iiiiii;;i111111tfffft11t11111tfft1tttttt1tfffffLfftttfLLLLL\\ntttttttttffttfftttttt1ttfft1111tttftt1;;;iiiiii;:;tt11ttftfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\\ntft1ttttttttttttttt11tfffft1tt11ttft11;;;;;iiii;;;1t11ttttffftt11t1111tftt1tt1tffftt1111ttfftfLffftt\\nttttffffttt11tttttft1ttfffttfft11tftiii;;;;iiii;;;;:;ii1tttft111tt1111ttt11tt1tffffftttttttttttttftt\\n111tfffffft1ttfttttt11tfftttfttt11i:,ii;;;;;iii;i:.....,,::;i111t11111tt111tft1fffffttfffftt11tffLLf\\n1t1ttfffft111tffttt1111tft1ft1i;:,...;1i;;;;;;i11:...........,;1111111111t11tt1tfffttfffffffttfLLLLf\\ntftt1tftt1tt11tft11ttt111111;:,......,111ii;;i1t1:........,,...;11t1111111111tttffttttffffftt1tffLLf\\ntffttttttttttt1111ttttt11;:,.........,i111i;i1t1;,.............,1t1111111tttt11t1tfLftttfft1tt1tffft\\n1ttttttttttttt1111ttt11ti,............,::::;;;i;:,..............it111111tttffttttfLLLffttttffffttttf\\ntfffttttffttttt11ttttttti...............,;;;;;;;:...............:t111111tttffftttffffffftttttttffttf\\ntfffttttfffttft11ttttttt;...............,:;;;;:::...............,1t111111ttffttttffLLfLfttfffffffttf\\ntffft1ttttttttt11ttttttt:................,;;;;:::................it1111111ttt1tttffLLLLfttfffffffttf\\ntffft1tttttttt111ttttttt:................,:;;::::................:t1111tt111tttttffLLLLfttfffftffttf\\nttttt1tttttttt111111tt1t;.................,::::::................,1t111ttt11tftttfffffffttfffftffttt\\nttttt1tttt11tt111ttttttt:.,:;:............,::::::................,itt111t111ttt1tttttfft11tftttffttt\\nttttt1tttttttt11tttttttt;:;iii:............,:::::...........,:,....:1t11111tttt11tfffttt11ttttttfttt\\nttttt1tttttttt111ttttttt;;iiiii:. ..........:::::...........,;;;;:..it1111tft1111ttttttt11ttttttfttt\\n1111111tttttt1111ttttttt:;iiiii;............,::::,........,::;;iii;it111ttttt11111tt1ttt111ttttttt1t\\n111111111111111111111111:;;iiii;,...........,:,::,.........,;;iiii;it111111111111111111111111111tt11\\n111111111111111111111111;:;:;;;,............,::::,...........:;;ii;it1111111111111111111111111111111\\n111111111111111111111111;::.... .............,:::,,......... .,,:i1t1111111111111111111111111111111\\n111111111111111111111111i;,..................,,,:,,....... .;,..,;11111111111111111111111111111t1111\\n1111111111111111111111111i;:;i;,..............,,:,,,........1tii11t111111111111111111111111111111111\\n111111111111111111111111111111:..............,:::;;:,.......;ttttttttt11t1tt111111111111111111111111\\n11111111111111111111111111111;,..............:i;;ii;;:,.....,1ttt1tttttttt1ttttt1111111111tttttt1111\\n1111111111111111111111111111i,...............,i;;iiii;:......ittttttttttttttttttt11t11t1111ttttt1111\\n\",\n \"tttftttttttttttttttttfffttttt1t1ttttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt111111ttt\\nttfftttttttttttttttffLLftffftfffftttt111111111t11ttffffftttt1111111111111111ttftttfttttttttt1111tttt\\nttttttttttttttttffffLffttfffffffffffttttttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt111tttt1\\nttttttttttttttttfffffttfffffffLfffftttttttttt11tffffffffffttttttt1111ttfffffffLftttfffffttt1111tttt1\\nttttttttttttfffftttftttffffffffftttfttttt111ttt1ttfffffftttttt111tt11111ttffffLLffttfLLff111111ttttt\\nttttttttttffLLLLftttttfLLLftttttttffttttttttffft1ttfffffttfffft11tt11tt111tttffLLfttfftt1ttt111ttttt\\nttttttttfffLLLLLLffttfLLLfttfffftffftttttfffffffffttffttffffffftt1111tftt11t11tfLLfftt11tffftttttttt\\ntttttttfffLLLLLLLLffttfttttffLffftfftttttfftffffffftttffffffffffft111tft1ttft11tffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffffftfftt11iii;:;;i1tfftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\\ntttffttfLLLLLLLLLLfttfftfLffttfffLLft1;:::,,,,::;;1ttttttffffffftt1111ttt1ttt1ttfttt1ttffffLLLLLfttt\\nttfLLftfffLLLLLLLfftfLfftttfLfffLLLfti;,,,,:::::,,;fffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\\ntfffffttttfLLfffttttfffffttLLLLffLLf1ii;;iiii11i:,;tfffft11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\\ntttttttttttffftttttttttttttfffLffLLf1iiiiiii1111;:;tffffftt1ttt111111tffftfffftttttttt1ttfLLLLffffff\\nttffffffffftttfffffffffttfttffLfffLf111;;;ii;;i1i:itfffftttttffft11111tfttffftttttttttttttfLLfffftft\\nttffffffffftttffffffffttffftttftttttt1i;;;iii;iii;ifftft11tttttffft111tt1tffttffttfffffLLfffffffffLL\\ntttfffffffttttfffffffftttttt111tffft11i;;;ii11111111tt111tffftttft11111tt1ttttfft1tffffLLLfttfLLLLLL\\n1tfffffffffttfffffffftt1ttt1111fffft111i;;;iiiiiii11111ttfffft11111111tfft1tttttt1tfffffLfftttfLLLLL\\ntttttttttffttfftttttt1ttftt1111ttffttt1i;;;iiii;;;1t11ttttfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\\ntft1ttttttttttttttt1ttfffftttt11ttft1t1i;;iiiii;:;1t111tttffftt11t1111tftt1tt1tffftt1111ttfftfLffftt\\nttttfffftttt1ttttfft1tffffttfft11tft111i;;;;;ii;:;i11111ttttt1111t1111ttt11tt1tfffffttttttttttttffft\\n111tfffffftttffftttt11tfftttfttt1ttt1i1i;;;;iiiiii::;i111tt11111t11111tt111tft1fffffttfffftt1ttfLLLf\\n1t1ttfffft111tffttt1111tfttft11tti;::,i1;;;;;iii11:...,,::;i1tt1111111111t11tt1tfffttfffffffttfLLLLf\\ntttt1tftt1tt11ttt11ttt1111tt11i;,,....;1i;;;;;;i11:.,.......,,:i11t1111111111tttffttttffffftt1tffLLf\\ntffttttttttttt1111ttttt111i;:,........;1t1ii;;i1ii,.............;t1111111tttt11t1tfLftttfft1tt1tffft\\n1ttttttttttttt1111tttttt11:...........:iiiiii1tti,..............,1t11111tttttttttfLLLffttttffffttttf\\ntfffttttffttttt11ttttttt1i,.............,:::;;ii;,...............;t11111ttttfftttffffffftttttttffttf\\ntfffttttfffffft11ttttttt1;..............,:;;;;;;:,...............,1111111ttffttttffLLfLfttfffffffttf\\ntffftttttttttt111ttttttt1:.......... ....:;;;;;;:,................it111111tttttttffLLLLfttfffffffttf\\ntffft1tttttttt111ttttttt1,........,,:;:,.,;;;;;:;,................;t1111t111tttttffffLLfttfffffffttf\\nttttt1tttttttt1111t1tttt1,.......;;;;;:,..:;;::::,................,1t11ttt11tftttfffffffttfffftffttt\\nttttt1tttt11tt111ttttttt1:......;;;;;;;:,.:;;::::,................,it111t1111tt11ttttfft11tftttffttt\\nttttt1tttttttt11tttttttti,......:;:;;;:...,:;::::,.................:1t11111tt1t11tfffttt11ttttttfttt\\nttttt1tttttttt11tttttttti,......:;:;;:.....,:::::,..................:11111ttt1111ttttttt11ttttttfttt\\n1t1t111tttttt111111ttttt;...,,,.,:::. ......:::::,...................,111tttt11111ttttt1111ttttttt1t\\n111111111111111111111111,,,,,,,.............,:::::,..................,1t111111111111111111111111tt11\\n11111111111111111111111i,,..:,..............,,::::,,.................,11tt11111111111111111111111111\\n111111111111111111111111;...................,:,,::,,.................,;ii11t111111111111111111111111\\n111111111111111111111111i,..................,:::::,,................:::;;;i111t111111111111111111111\\n1111111111111111111111111i;;;;i1:............::,:,,,,........... ..::;;;;i1111111111111111111111111\\n111111111111111111111111111111t1,............,.,:,,,:,,........:,,..,:;;;i11t11111111111111111111111\\n1111111111111111111111111111111i.............,,::;;;i;:,...... :111i;::;;;1ttttt11t1111111tttttt1111\\n111111111111111111111111111111ti.............:1;;1iiii;:,.......i1tttt11111tt1tt111111t1111ttttt1111\\n\",\n \"tttttttttttttttttttttfffttttt1111tttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt111111ttt\\nttfftttttttttttttttffLLftffftfffftttt111111111t11ttffffftttt1111111111111111ttftttfttttttttt1111tttt\\nttttttttttttttttffffLffttfffffffffffttttttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt1111ttt1\\nttttttttttttttttfffffttfffffffLfffftttttttttt11tffffffffffttttttt11111tffffffffftttfffffttt11111ttt1\\nttttttttttttfffftttffttffffffffftttfttttt111ttt1ttfffffftttttt11tt111111ttffffLLffttfLLff111111ttttt\\nttttttttttffLLLLftttttfLLLfttttttffffttttttfffft1tffffffttfffft11t111tt111tttffLLfttfftt1ttt111ttttt\\nttttttttfffLLLLLLffttfLLLfttfffftfffttttttfffffftfttfftffffffffttt111tftt11t11tfLLLftt11tffft1tttttt\\ntttttttfLfLLLLLLLLffttfttttffLLfftffttttffffffffffftttfffffffffftt111tft1ttft11tffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffLLftffttttttt11i;ii1tftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\\ntttffttfLLLLLLLLLLfttfftfffffffffLLfttt1i;::,,,,:;;1tttttffffffftt1111ttt1ttt1ttfttt1ttfffffLLLLfttt\\nttfLLftfffLLLLLLLfftfLfftttfLfffLLLLttt1;,,,,,,,::,:iftt11tfffft11111tffft1tt11tt1ttttfffLLLLLLLLfff\\ntfffffttttfLLfffttttfffffttLLLLfLLLftt1i;;;;;;iiii:,;fftt11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\\ntttttttttttffftttttttttttttffLLffLLftt1;iiiii11111i::tfffft1ttt111111tffftfffftttttttt1ttfLLLLffffff\\nttfLffffffftttfffffffffttfttffLfffLftt1;i;;;iiiiiii;;tfftttttffft11111tfttffftttttttttttttfLLftfffft\\nttffffffffftttffffffffftffftttfttftttttii;;;;ii;;ii;iftt11tttttfft1111tt1tffttffttfffffLLfffffffffLL\\nttffffffffttttfffffffftttttt11ttfffttt11ii;;ii1111ii11111tffftttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\\n1ttffffffffttfffffffftt1ttt111tffffttt1i1i;;;iiiiii1111ttfffft11t11111tfft1tttttt1ttffffLfftttfLLLLf\\ntttttttttffttfftttttt1ttfff1111ttffttttt1i;;;;i;:;it11ttftfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\\ntft1ttttttttttttttt11tfffftttt11tfftt11tt1;;;ii;;;1t111tttffftt11t1111tttt1tt1tffftt1111ttfftfLffftt\\ntfttfffftttt1ttttfft1tffffttfftt1tft1111t1;;;;i;:;i11111tttft111tt1111ttt11tt1tfffffttttttttttttffft\\n1tttfffffftttffftfft11tfffttfttttttt11111i;;:;iiii1i;i1t1tt11111t11111tt111tft1fffffttfffftt1ttffLLf\\n1t1tffffft111tffttt1111tfttft11tt1t1i;;;1i;;;;ii1ii1,.,:;ii1tt11111111111t11tt1tfffttfffffffttfLfLLf\\ntfttttftt1tt11ttt11ttt11t1t11tt11i:,...,11;;;;;it111,,.....,:;i11tt1111111111tttffttttffffftt1tffLLf\\ntffttttttttttt1111ttftt111111i;:,......:1t1i;;;;i1t1,..........,:i1111111tttt11t1tfLftttfft1tt1tffft\\n1ttttttttttttt1111ttttt111tt;..........:1111iii1;11:.............,it1111tttttt1ttfLLLffttttffffttttf\\ntfffttttffttttt11ttttttt11t1,...........,,:::;;i;;:...............:t1111ttttfft1tffffffftttttttffttf\\ntfffttttfffffft11ttttttt111i..............:;:::;;::...............,1t1111ttffttttffLLfLfttfffffffttf\\ntfffttttttttttt11ttttttt111:..............,;;;;;;:,................;t11111ttt1t1tffLLLLfttfffffffttf\\ntffft1tttttttt111ttttttt11i,..........,::::;;;;;;:,................,1t11t111tttttffffLLfttfffffffttf\\nttttt1tttttttt111tt1tttt11i.........:;;;;:,;;::::::.................;t1ttt11tftttffffffftttffftffttt\\nttttt1tttt11tt111ttttttt111,.......;;;;;;:,:;::::::,................:tttt1111tt11ttfttft11tftttffttt\\nttttt1tttttttt11tttttttt11;,......,;;;;;;:::;::::::,................,itt111t11t11ttftttt11ttttttfttt\\nttttt1tttttttt11tttttttt11;,......:;;;;i;...,:::::,,.................:tt1tttt1111ttttttt11ttttttfttt\\n1t1t111tttttt111tttttttt1;,.,.....,:;:......,:::::,,..................it1tttt11111tttt11111ttttttt1t\\n1111111111111111111111111:,,,......,,. .....,,::::,,..................,1t11111111111111111111111tt11\\n1111111111111111111111111,,....,,...........,,,:::::,..................itt11111111111111111111111111\\n1111111111111111111111111;,.................,:::::::,,................:1tt11111111111111111111111111\\n11111111111111111111111111:.... ............,:::,:,,.................,1tt11111111111111111111111111\\n11111111111111111111111111ii;;;;;i, .........,,::,,,,,................,:;;1tt11111111111111111111111\\n11111111111111111111111111111111t1,..........,,,:,,:,:,,. ...........,:::;;i11tt11111111111111111111\\n11111111111111111111111111111111t;.............,:::;;;;:,........ .,:::;;:;i1t111111111ttttttt11111\\n111111111111111111111111111111111:...........,;;;i1iiii;:,.......::,,::::;;i1ttt111t11t1111ttttt1111\\n\",\n \"tttftttttttttttttttttfffttttt1111tttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt11111111t\\nttfftttttttttttttttffLLftffftfffftttt111111111t11ttffffftttt1111111111111111ttftttfttttttttt1111tttt\\nttftttttttttttttffffLffttfffffffLfffttttttttt111tfffffffftttttttt11111ttttttfffftfLLfttttttt111tttt1\\nttttttttttttttttfffffttfffffffLfffftttttttttt11tffffffffffttttttt11111tfffffffffttffffffttt11111ttt1\\ntttttttttttffffftttffttffffffffftttfttttt111ttt1ttfffffftttttt11tt111111ttffffLLffttfLLfft11111ttttt\\nttttttttttffLLLLftttttfLLLfttttttffLftttttttffft1ttfffffttfffft11t111tt111tttffLLfttfftt1ttt111ttttt\\nttttttttfffLLLLLLffttfLLLfttfffftfLfttttttffffffffftftttfffffffttt111tftt11t11tfLLfftt11tffft11ttttt\\ntttttttfffLLLLLLLLffttfttttfLLLfftffttttffftt1iii11tttfffffffffftt111tft1ttft11tffLfttttfffffftttttt\\ntttttttffLLLLLLLLLfttttffffffLffffftttttfti;;::,,,:;i1tffffffffftt1111111ttftttttttttttfffffLLfffttt\\ntttfffffLLLLLLLLLLfttfftfLfffffffLLfttttt1;,,,,,,,::,:ittffffffftt1111ttt1ttt1tftttt1ttffffLLLLLfttt\\nttfLLffffLLLLLLLLfftfLfftttfLfffLLLLfttt1i;:::;;iiii;,;t11tfffft11111tffft1tt1ttt1ttttfffLLLLLLLLfff\\ntffffftttffLLLffttttfffffttLLLLfLLLffttf1;;iiii11111i::1t11tttt1ttt11tfffttfftttttfft1tffLLLLLLLLffL\\ntttttttttttffftttttttttttttfffLffLLftttti:;;;;iiiiiii;;tftt1ttt111111tffftfffftttttttt1ttfLLLLffffff\\nttfLffffffftttfffffffffttfttffLfffLfttttti;;;;;iii;i1iiftttttffft11111tfttffftttttttttttttfLLftfffft\\nttffffffffftttffffffffftfffftffffftttttft11i;;;iiii1iiit11tttttfft1111tt11ffttffttfffffLLfffffffffLL\\nttffffffffttttfffffffftttttt1tttffftttttti1i;;;ii11iii111tffftttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\\n1ttffffffffttfffffffftt1ttt1111tfffftttt111i;;iiiiii111ttfffft11t11111tfftttttttt1ttffffLfftttfLLLLf\\ntttttttttffttfftttttt1ttfftttt1ttfftttttt111i;i;:;ii11ttftfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\\ntft1ttttttttttttttt11tfffftttt11tfftt1ttt111;;i;;;iii1ttttffftt11t1111ttt11tt1tffttt1111ttfftfLffftt\\ntfttffffttt11tttttft1tffffttffttttft111ttt11;;;;:;i1i1;;11tft111tt1111tt111tt1tfffffttttt11tttttffft\\n1tttfffffftttffftfft11tfftttffttttft1111iii1;;;i;iiii1i,,,:;;i11tt1111tt111tft1fffffttfffftt11tffLLf\\n111ttfffftt1ttffttt1111tfttft11tt1t1i;:,,,;1i;;i1ii;iti,,.....,:;i1t11111t11tt1tfffttffffffft1fffLLf\\ntfttttftt1tt11tft11ttt11tttt1tt11i;:,.....;11i;i1i;1tt;,,.........,:i11111111t1tffttttffffftt1tfffLf\\ntffttttttttftt1111ttttt11111tft;,.........;11111i1ttti,.............,1111tttt1111tffftttfft1tt1tffft\\n1ttttttttttttt1111tttttt11tfff1,...........,:;;;;;11i:...............itttttttt1ttfffLffttttffffttttf\\ntfffttttffttttt11ttttttt11tfffi............ ,:;;;;;;;,...............;t1ttttfft1tffffffftttttttffttf\\ntfffttttfffffft11tttttttttt1tf;..............:;;;;;;;,...............:111ttttttttfffLfLfttfffffffttf\\ntfffttttftftft111ttttttt11t111:..............:;;;;;::,...............,1t11ttt1t1tffLLLLfttfffffffttf\\ntfffttttfttttt111ttttttt11ttt1:..............,;;;::;::................itt111tttttffffLLfttfffffffttf\\ntttttttttttttt111ttttttt1ttfft:..............,;;;;::::................:1tt11tft1tffffffftttffttffttt\\nttttt1tttt11tt11tttttttt1tttt1;.,::,..........:;:::;::,...............,1t1111tt11tttttft11tfttttfttt\\nttttt1tttttttt11ttttttttt1ttt1;,:;;:..........,::::::,,................it11111111ttftttt11ttttttfttt\\nttttt1tttttttt11tttttttttttttiiiiii;,.........,:::::::,................:ttttt1111ttttttt11ttttttfttt\\n1t1111tttttttt11tttttttt1ttt1;;;;ii;,.........,:::::::,.................ittttt1111tttt11111ttttttt1t\\n11111111111111111111111111tt1;;;;ii;...........::::::::................ :1t111111111111111111111t111\\n11111111111111111111111111tt1;::;;i:...........,:::::::,...............,itttt11111111111111111111111\\n11111111111111111111111tttttt;,,,::............,::::::,,...............ittttt11111111111111111111111\\n1111111111111111111111111tttt1:,,..............,:::::,,,,.......,:;::,:1t1111111111111111111111t1111\\n11111111111111111111111111111111i;;i:..........,:,,,.,,.,.......::;;i;it1ttt111111111111111111111111\\n1111111111111111111111111111111111ti...........,,.,:,:;::,......,:;;ii1ttttt11111111111111111t111111\\n1111111111111111111111111111111111t;...........,;iiiiiii;:,......:;;;i1ttttt111t1111111111tttttt1111\\n11111111111111111111111111111111111:...........,;i11iiii;:,.......,:i1tttttt1ttttt1t11t1111ttttt1111\\n\",\n];\n\nfunction isApr1(): boolean {\n const d = new Date();\n // Months are 0 indexed\n return d.getMonth() === 3 && d.getDate() === 1;\n}\n\nexport const Apr1Events = new EventEmitter();\n\nexport function Apr1(): React.ReactElement {\n const [open, setOpen] = useState(isApr1());\n const [n, setN] = useState(0);\n\n useEffect(() => {\n const id = setInterval(() => setN((n) => (n + 1) % frames.length), 100);\n return () => clearInterval(id);\n }, []);\n\n useEffect(\n () =>\n Apr1Events.subscribe(() => {\n setOpen(true);\n }),\n [],\n );\n\n if (!open) return <>>;\n\n return (\n setOpen(false)}>\n
{frames[n]}
\n
\n \n
\n \n );\n}\n","import { GetServer } from \"../Server/AllServers\";\nimport { RunningScript } from \"./RunningScript\";\n\nexport function getRamUsageFromRunningScript(script: RunningScript): number {\n if (script.ramUsage != null && script.ramUsage > 0) {\n return script.ramUsage; // Use cached value\n }\n\n const server = GetServer(script.server);\n if (server == null) {\n return 0;\n }\n for (let i = 0; i < server.scripts.length; ++i) {\n if (server.scripts[i].filename === script.filename) {\n // Cache the ram usage for the next call\n script.ramUsage = server.scripts[i].ramUsage;\n return script.ramUsage;\n }\n }\n\n return 0;\n}\n","import { ITerminal } from \"../../ITerminal\";\nimport { removeLeadingSlash, removeTrailingSlash } from \"../../DirectoryHelpers\";\nimport { IRouter, ScriptEditorRouteOptions } from \"../../../ui/Router\";\nimport { IPlayer } from \"../../../PersonObjects/IPlayer\";\nimport { BaseServer } from \"../../../Server/BaseServer\";\nimport { isScriptFilename } from \"../../../Script/isScriptFilename\";\nimport { CursorPositions } from \"../../../ScriptEditor/CursorPositions\";\nimport { Script } from \"../../../Script/Script\";\nimport { isEmpty } from \"lodash\";\n\ninterface EditorParameters {\n terminal: ITerminal;\n router: IRouter;\n player: IPlayer;\n server: BaseServer;\n args: (string | number | boolean)[];\n}\n\nfunction isNs2(filename: string): boolean {\n return filename.endsWith(\".ns\") || filename.endsWith(\".js\");\n}\n\nconst newNs2Template = `/** @param {NS} ns */\nexport async function main(ns) {\n\n}`;\n\ninterface ISimpleScriptGlob {\n glob: string;\n preGlob: string;\n postGlob: string;\n globError: string;\n globMatches: string[];\n globAgainst: Script[];\n}\n\nfunction containsSimpleGlob(filename: string): boolean {\n return filename.includes(\"*\");\n}\n\nfunction detectSimpleScriptGlob(\n args: EditorParameters[\"args\"],\n player: IPlayer,\n terminal: ITerminal,\n): ISimpleScriptGlob | null {\n if (args.length == 1 && containsSimpleGlob(`${args[0]}`)) {\n const filename = `${args[0]}`;\n const scripts = player.getCurrentServer().scripts;\n const parsedGlob = parseSimpleScriptGlob(filename, scripts, terminal);\n return parsedGlob;\n }\n return null;\n}\n\nfunction parseSimpleScriptGlob(globString: string, globDatabase: Script[], terminal: ITerminal): ISimpleScriptGlob {\n const parsedGlob: ISimpleScriptGlob = {\n glob: globString,\n preGlob: \"\",\n postGlob: \"\",\n globError: \"\",\n globMatches: [],\n globAgainst: globDatabase,\n };\n\n // Ensure deep globs are minified to simple globs, which act as deep globs in this impl\n globString = globString.replace(\"**\", \"*\");\n\n // Ensure only a single glob is present\n if (globString.split(\"\").filter((c) => c == \"*\").length !== 1) {\n parsedGlob.globError = \"Only a single glob is supported per command.\\nexample: `nano my-dir/*.js`\";\n return parsedGlob;\n }\n\n // Split arg around glob, normalize preGlob path\n [parsedGlob.preGlob, parsedGlob.postGlob] = globString.split(\"*\");\n parsedGlob.preGlob = removeLeadingSlash(parsedGlob.preGlob);\n\n // Add CWD to preGlob path\n const cwd = removeTrailingSlash(terminal.cwd());\n parsedGlob.preGlob = `${cwd}/${parsedGlob.preGlob}`;\n\n // For every script on the current server, filter matched scripts per glob values & persist\n globDatabase.forEach((script) => {\n const filename = script.filename.startsWith(\"/\") ? script.filename : `/${script.filename}`;\n if (filename.startsWith(parsedGlob.preGlob) && filename.endsWith(parsedGlob.postGlob)) {\n parsedGlob.globMatches.push(filename);\n }\n });\n\n // Rebuild glob for potential error reporting\n parsedGlob.glob = `${parsedGlob.preGlob}*${parsedGlob.postGlob}`;\n\n return parsedGlob;\n}\n\nexport function commonEditor(\n command: string,\n { terminal, router, player, args }: EditorParameters,\n scriptEditorRouteOptions?: ScriptEditorRouteOptions,\n): void {\n if (args.length < 1) {\n terminal.error(`Incorrect usage of ${command} command. Usage: ${command} [scriptname]`);\n return;\n }\n\n let filesToLoadOrCreate = args;\n try {\n const globSearch = detectSimpleScriptGlob(args, player, terminal);\n if (globSearch) {\n if (isEmpty(globSearch.globError) === false) throw new Error(globSearch.globError);\n filesToLoadOrCreate = globSearch.globMatches;\n }\n\n const files = filesToLoadOrCreate.map((arg) => {\n const filename = `${arg}`;\n\n if (isScriptFilename(filename)) {\n const filepath = terminal.getFilepath(filename);\n const script = terminal.getScript(player, filename);\n const fileIsNs2 = isNs2(filename);\n const code = script !== null ? script.code : fileIsNs2 ? newNs2Template : \"\";\n\n if (code === newNs2Template) {\n CursorPositions.saveCursor(filename, {\n row: 3,\n column: 5,\n });\n }\n\n return [filepath, code];\n }\n\n if (filename.endsWith(\".txt\")) {\n const filepath = terminal.getFilepath(filename);\n const txt = terminal.getTextFile(player, filename);\n return [filepath, txt === null ? \"\" : txt.text];\n }\n\n throw new Error(\n `Invalid file. Only scripts (.script, .ns, .js), or text files (.txt) can be edited with ${command}`,\n );\n });\n\n if (globSearch && files.length === 0) {\n throw new Error(`Could not find any valid files to open with ${command} using glob: \\`${globSearch.glob}\\``);\n }\n\n router.toScriptEditor(Object.fromEntries(files), scriptEditorRouteOptions);\n } catch (e) {\n terminal.error(`${e}`);\n }\n}\n","import { Bladeburner } from \"../../Bladeburner/Bladeburner\";\nimport { SourceFileFlags } from \"../../SourceFile/SourceFileFlags\";\nimport { IPlayer } from \"../IPlayer\";\n\nexport function canAccessBladeburner(this: IPlayer): boolean {\n if (this.bitNodeN === 8) {\n return false;\n }\n\n return this.bitNodeN === 6 || this.bitNodeN === 7 || SourceFileFlags[6] > 0 || SourceFileFlags[7] > 0;\n}\n\nexport function inBladeburner(this: IPlayer): boolean {\n if (this.bladeburner == null) {\n return false;\n }\n return this.bladeburner instanceof Bladeburner;\n}\n\nexport function startBladeburner(this: IPlayer): void {\n this.bladeburner = new Bladeburner(this);\n}\n","import { IBladeburner } from \"./IBladeburner\";\nimport { Action, IActionParams } from \"./Action\";\nimport { Generic_fromJSON, Generic_toJSON, Reviver } from \"../utils/JSONReviver\";\n\nexport class Contract extends Action {\n constructor(params: IActionParams | null = null) {\n super(params);\n }\n\n getActionTypeSkillSuccessBonus(inst: IBladeburner): number {\n return inst.skillMultipliers.successChanceContract;\n }\n\n toJSON(): any {\n return Generic_toJSON(\"Contract\", this);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static fromJSON(value: any): Contract {\n return Generic_fromJSON(Contract, value.data);\n }\n}\n\nReviver.constructors.Contract = Contract;\n","export const ConsoleHelpText: {\n [key: string]: string[];\n helpList: string[];\n automate: string[];\n clear: string[];\n cls: string[];\n help: string[];\n log: string[];\n skill: string[];\n start: string[];\n stop: string[];\n} = {\n helpList: [\n \"Use 'help [command]' to get more information about a particular Bladeburner console command.\",\n \" \",\n \" automate [var] [val] [hi/low] Configure simple automation for Bladeburner tasks\",\n \" clear/cls Clear the console\",\n \" help [cmd] Display this help text, or help text for a specific command\",\n \" log [en/dis] [type] Enable or disable logging for events and actions\",\n \" skill [action] [name] Level or display info about your Bladeburner skills\",\n \" start [type] [name] Start a Bladeburner action/task\",\n \" stop Stops your current Bladeburner action/task\",\n \" \",\n ],\n automate: [\n \"Usage: automate [var] [val] [hi/low]\",\n \" \",\n \"A simple way to automate your Bladeburner actions. This console command can be used \" +\n \"to automatically start an action when your stamina rises above a certain threshold, and \" +\n \"automatically switch to another action when your stamina drops below another threshold.\",\n \" \",\n \" automate status - Check the current status of your automation and get a brief description of what it'll do\",\n \" automate en - Enable the automation feature\",\n \" automate dis - Disable the automation feature\",\n \" \",\n \"There are four properties that must be set for this automation to work properly. Here is how to set them:\",\n \" \",\n \" automate stamina 100 high\",\n \" automate contract Tracking high\",\n \" automate stamina 50 low\",\n \" automate general 'Field Analysis' low\",\n \" \",\n \"Using the four console commands above will set the automation to perform Tracking contracts \" +\n \"if your stamina is 100 or higher, and then switch to Field Analysis if your stamina drops below \" +\n \"50. Note that when setting the action, the name of the action is CASE-SENSITIVE. It must \" +\n \"exactly match whatever the name is in the UI.\",\n \" \",\n ],\n clear: [\"Usage: clear\", \" \", \"Clears the console\", \" \"],\n cls: [\"Usage: cls\", \" \", \"Clears the console\", \" \"],\n help: [\n \"Usage: help [command]\",\n \" \",\n \"Running 'help' with no arguments displays the general help text, which lists all console commands \" +\n \"and a brief description of what they do. A command can be specified to get more specific help text \" +\n \"about that particular command. For example:\",\n \" \",\n \" help automate\",\n \" \",\n \"will display specific information about using the automate console command\",\n \" \",\n ],\n log: [\n \"Usage: log [en/dis] [type]\",\n \" \",\n \"Enable or disable logging. By default, the results of completing actions such as contracts/operations are logged \" +\n \"in the console. There are also random events that are logged in the console as well. The five categories of \" +\n \"things that get logged are:\",\n \" \",\n \"[general, contracts, ops, blackops, events]\",\n \" \",\n \"The logging for these categories can be enabled or disabled like so:\",\n \" \",\n \" log dis contracts - Disables logging that occurs when contracts are completed\",\n \" log en contracts - Enables logging that occurs when contracts are completed\",\n \" log dis events - Disables logging for Bladeburner random events\",\n \" \",\n \"Logging can be universally enabled/disabled using the 'all' keyword:\",\n \" \",\n \" log dis all\",\n \" log en all\",\n \" \",\n ],\n skill: [\n \"Usage: skill [action] [name]\",\n \" \",\n \"Level or display information about your skills.\",\n \" \",\n \"To display information about all of your skills and your multipliers, use:\",\n \" \",\n \" skill list\",\n \" \",\n \"To display information about a specific skill, specify the name of the skill afterwards. \" +\n \"Note that the name of the skill is case-sensitive. Enter it exactly as seen in the UI. If \" +\n \"the name of the skill has whitespace, enclose the name of the skill in double quotation marks:\",\n \" \",\n \" skill list Reaper\",\n \" skill list 'Digital Observer'\",\n \" \",\n \"This console command can also be used to level up skills:\",\n \" \",\n \" skill level [skill name]\",\n \" \",\n ],\n start: [\n \"Usage: start [type] [name]\",\n \" \",\n \"Start an action. An action is specified by its type and its name. The \" +\n \"name is case-sensitive. It must appear exactly as it does in the UI. If \" +\n \"the name of the action has whitespace, enclose it in double quotation marks. \" +\n \"Valid action types include:\",\n \" \",\n \"[general, contract, op, blackop]\",\n \" \",\n \"Examples:\",\n \" \",\n \" start contract Tracking\",\n \" start op 'Undercover Operation'\",\n \" \",\n ],\n stop: [\"Usage: stop\", \" \", \"Stop your current action and go idle.\", \" \"],\n};\n","import { Corporation } from \"../../Corporation/Corporation\";\nimport { CorporationUnlockUpgrades } from \"../../Corporation/data/CorporationUnlockUpgrades\";\nimport { SourceFileFlags } from \"../../SourceFile/SourceFileFlags\";\nimport { IPlayer } from \"../IPlayer\";\n\nexport function canAccessCorporation(this: IPlayer): boolean {\n return this.bitNodeN === 3 || SourceFileFlags[3] > 0;\n}\n\nexport function hasCorporation(this: IPlayer): boolean {\n if (this.corporation == null) {\n return false;\n }\n return this.corporation instanceof Corporation;\n}\n\nexport function startCorporation(this: IPlayer, corpName: string, additionalShares = 0): void {\n this.corporation = new Corporation({\n name: corpName,\n });\n\n if (SourceFileFlags[3] === 3) {\n const warehouseApi = CorporationUnlockUpgrades[\"7\"][0];\n const OfficeApi = CorporationUnlockUpgrades[\"8\"][0];\n\n this.corporation.unlockUpgrades[warehouseApi] = 1;\n this.corporation.unlockUpgrades[OfficeApi] = 1;\n }\n\n this.corporation.totalShares += additionalShares;\n}\n","// Defines a \"Research Tree\"\n// Each Industry has a unique Research Tree\n// Each Node in the Research Trees only holds the name(s) of Research,\n// not an actual Research object. The name can be used to obtain a reference\n// to the corresponding Research object using the ResearchMap\nimport { Research } from \"./Research\";\nimport { ResearchMap } from \"./ResearchMap\";\n\nimport { IMap } from \"../types\";\n\nimport { numeralWrapper } from \"../ui/numeralFormat\";\n\ninterface IConstructorParams {\n children?: Node[];\n cost: number;\n text: string;\n parent?: Node | null;\n}\n\nexport class Node {\n // All child Nodes in the tree\n // The Research held in this Node is a prerequisite for all Research in\n // child Nodes\n children: Node[] = [];\n\n // How much Scientific Research is needed for this\n // Necessary to show it on the UI\n cost = 0;\n\n // Whether or not this Research has been unlocked\n researched = false;\n\n // Parent node in the tree\n // The parent node defines the prerequisite Research (there can only be one)\n // Set as null for no prerequisites\n parent: Node | null = null;\n\n // Name of the Research held in this Node\n text = \"\";\n\n constructor(p: IConstructorParams = { cost: 0, text: \"\" }) {\n if (ResearchMap[p.text] == null) {\n throw new Error(`Invalid Research name used when constructing ResearchTree Node: ${p.text}`);\n }\n\n this.text = p.text;\n this.cost = p.cost;\n\n if (p.children && p.children.length > 0) {\n this.children = p.children;\n }\n\n if (p.parent != null) {\n this.parent = p.parent;\n }\n }\n\n addChild(n: Node): void {\n this.children.push(n);\n n.parent = this;\n }\n\n // Return an object that describes a TreantJS-compatible markup/config for this Node\n // See: http://fperucic.github.io/treant-js/\n createTreantMarkup(): any {\n const childrenArray = [];\n for (let i = 0; i < this.children.length; ++i) {\n childrenArray.push(this.children[i].createTreantMarkup());\n }\n\n // Determine what css class this Node should have in the diagram\n let htmlClass = \"tooltip\";\n if (this.researched) {\n htmlClass += \" researched\";\n } else if (this.parent && this.parent.researched === false) {\n htmlClass += \" locked\";\n } else {\n htmlClass += \" unlocked\";\n }\n\n const research: Research | null = ResearchMap[this.text];\n const sanitizedName: string = this.text.replace(/\\s/g, \"\");\n return {\n children: childrenArray,\n HTMLclass: htmlClass,\n innerHTML:\n `
\" +\n \"When starting out, hacking is the most profitable way to earn money and progress. This \" +\n \"is a brief collection of tips/pointers on how to make the most out of your hacking scripts.
\" +\n \"-hack() and grow() both work by percentages. hack() steals a certain percentage of the \" +\n \"money on a server, and grow() increases the amount of money on a server by some percentage (multiplicatively)
\" +\n \"-Because hack() and grow() work by percentages, they are more effective if the target server has a high amount of money. \" +\n \"Therefore, you should try to increase the amount of money on a server (using grow()) to a certain amount before hacking it. Two \" +\n \"important Netscript functions for this are getServerMoneyAvailable() and getServerMaxMoney()
\" +\n \"-Keep security level low. Security level affects everything when hacking. Two important Netscript functions \" +\n \"for this are getServerSecurityLevel() and getServerMinSecurityLevel()
\" +\n \"-Purchase additional servers by visiting 'Alpha Enterprises' in the city. They are relatively cheap \" +\n \"and give you valuable RAM to run more scripts early in the game
\" +\n \"-Prioritize upgrading the RAM on your home computer. This can also be done at 'Alpha Enterprises'
\" +\n \"-Many low level servers have free RAM. You can use this RAM to run your scripts. Use the scp Terminal or \" +\n \"Netscript command to copy your scripts onto these servers and then run them.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"The Complete Handbook for Creating a Successful Corporation\";\n fn = LiteratureNames.CorporationManagementHandbook;\n txt =\n \"Getting Started with Corporations \" +\n \"To get started, visit the City Hall in Sector-12 in order to create a Corporation. This requires \" +\n \"$150b of your own money, but this $150b will get put into your Corporation's funds. \" +\n \"Your Corporation can have many different divisions, each in a different Industry. There are many different \" +\n \"types of Industries, each with different properties. To create your first division, click the \" +\n \"'Expand into new Industry' button at the top of the management UI. The Agriculture \" +\n \"and Software industries are recommended for your first division.
\" +\n \"The first thing you'll need to do is hire some employees. Employees can be assigned to five different positions. \" +\n \"Each position has a different effect on various aspects of your Corporation. It is recommended to have at least \" +\n \"one employee at each position.
\" +\n \"Each industry uses some combination of Materials in order to produce other Materials and/or create Products. \" +\n \"Specific information about this is displayed in each of your divisions' UI.
\" +\n \"Products are special, industry-specific objects. They are different than Materials because you \" +\n \"must manually choose to develop them, and you can choose to develop any number of Products. Developing \" +\n \"a Product takes time, but a Product typically generates significantly more revenue than any Material. \" +\n \"Not all industries allow you to create Products. To create a Product, look for a button \" +\n \"in the top-left panel of the division UI (e.g. For the Software Industry, the button says 'Develop Software').
\" +\n \"To get your supply chain system started, \" +\n \"purchase the Materials that your industry needs to produce other Materials/Products. This can be done \" +\n \"by clicking the 'Buy' button next to the corresponding Material(s). After you have the required Materials, \" +\n \"you will immediately start production. The amount of Materials/Products you produce is based on a variety of factors, \" +\n \"one of which is your employees and their productivity.
\" +\n \"Once you start producing Materials/Products, you can sell them in order to start earning revenue. This can be done \" +\n \"by clicking the 'Sell' button next to the corresponding Material or Product. The amount of Material/Product you sell is dependent \" +\n \"on a wide variety of different factors.
\" +\n \"These are the basics of getting your Corporation up and running! Now, you can start purchasing upgrades to improve \" +\n \"your bottom line. If you need money, consider looking for seed investors, who will give you money in exchange for stock shares. \" +\n \"Otherwise, once you feel you are ready, take your Corporation public! Once your Corporation goes public, you can no longer \" +\n \"find investors. Instead, your Corporation will be publicly traded and its stock price will change based on how well \" +\n \"it's performing financially. You can then sell your stock shares in order to make money.
\" +\n \"Tips/Pointers \" +\n \"-The 'Smart Supply' upgrade is extremely useful. Consider purchasing it as soon as possible.
\" +\n \"-Purchasing Hardware, Robots, AI Cores, and Real Estate can potentially increase your production. \" +\n \"The effects of these depend on what industry you are in.
\" +\n \"-In order to optimize your production, you will need a good balance of Operators, Managers, and Engineers
\" +\n \"-Different employees excel in different jobs. For example, the highly intelligent employees will probably do best \" +\n \"if they are assigned to do Engineering work or Research & Development.
\" +\n \"-If your employees have low morale, energy, or happiness, their production will greatly suffer.
\" +\n \"-Tech is important, but don't neglect sales! Having several Businessmen can boost your sales and your bottom line.
\" +\n \"-Don't forget to advertise your company. You won't have any business if nobody knows you.
\" +\n \"-Having company awareness is great, but what's really important is your company's popularity. Try to keep \" +\n \"your popularity as high as possible to see the biggest benefit for your sales
\" +\n \"-Remember, you need to spend money to make money!
\" +\n \"-Corporations do not reset when installing Augmentations, but they do reset when destroying a BitNode\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"A Brief History of Synthoids\";\n fn = LiteratureNames.HistoryOfSynthoids;\n txt =\n \"Synthetic androids, or Synthoids for short, are genetically engineered robots and, short of Augmentations, \" +\n \"are composed entirely of organic substances. For this reason, Synthoids are virtually identical to \" +\n \"humans in form, composition, and appearance.
\" +\n `Synthoids were first designed and manufactured by ${FactionNames.OmniTekIncorporated} sometime around the middle of the century. ` +\n \"Their original purpose was to be used for manual labor and as emergency responders for disasters. As such, they \" +\n \"were initially programmed only for their specific tasks. Each iteration that followed improved upon the \" +\n \"intelligence and capabilities of the Synthoids. By the 6th iteration, called MK-VI, the Synthoids were \" +\n `so smart and capable enough of making their own decisions that many argued ${FactionNames.OmniTekIncorporated} had created the first ` +\n \"sentient AI. These MK-VI Synthoids were produced in mass quantities (estimates up to 50 billion) with the hopes of increasing society's \" +\n \"productivity and bolstering the global economy. Stemming from humanity's desire for technological advancement, optimism \" +\n \"and excitement about the future had never been higher.
\" +\n \"All of that excitement and optimism quickly turned to fear, panic, and dread in 2070, when a terrorist group \" +\n `called Ascendis Totalis hacked into ${FactionNames.OmniTekIncorporated} and uploaded a rogue AI into severeal of their Synthoid manufacturing facilities. ` +\n `This hack went undetected and for months ${FactionNames.OmniTekIncorporated} unknowingly churned out legions of Synthoids embedded with this ` +\n \"rogue AI. Then, on December 24th, 2070, Omnica activated dormant protocols in the rogue AI, causing all of the \" +\n \"infected Synthoids to immediately launch a military campaign to seek and destroy all of humanity.
\" +\n \"What ensued was the deadlist conflict in human history. This crisis, now commonly known as the Synthoid Uprising, \" +\n \"resulted in almost ten billion deaths over the course of a year. Despite the nations of the world banding together \" +\n \"to combat the threat, the MK-VI Synthoids were simply stronger, faster, more intelligent, and more adaptable than humans, \" +\n \"outsmarting them at every turn.
\" +\n `It wasn't until the sacrifice of an elite international military taskforce, called the ${FactionNames.Bladeburners}, that humanity ` +\n `was finally able to defeat the Synthoids. The ${FactionNames.Bladeburners}' final act was a suicide bombing mission that ` +\n \"destroyed a large portion of the MK-VI Synthoids, including many of its leaders. In the following \" +\n \"weeks militaries from around the world were able to round up and shut down the remaining rogue MK-VI Synthoids, ending \" +\n \"the Synthoid Uprising.
\" +\n `In the aftermath of the bloodshed, the Synthoid Accords were drawn up. These Accords banned ${FactionNames.OmniTekIncorporated} ` +\n \"from manufacturing any Synthoids beyond the MK-III series. They also banned any other corporation \" +\n \"from constructing androids with advanced, near-sentient AI. MK-VI Synthoids that did not have the rogue Ascendis Totalis \" +\n \"AI were allowed to continue their existence, but they were stripped of all rights and protections as they \" +\n \"were not considered humans. They were also banned from doing anything that may pose a global security threat, such \" +\n \"as working for any military/defense organization or conducting any bioengineering, computing, or robotics related research.
\" +\n \"Unfortunately, many believe that not all of the rogue MK-VI Synthoids from the Uprising were found and destroyed, \" +\n \"and that many of them are blending in as normal humans in society today. In response, many nations have created \" +\n `${FactionNames.Bladeburners} divisions, special military branches that are tasked with investigating and dealing with any Synthoid threats.
` +\n \"To this day, tensions still exist between the remaining Synthoids and humans as a result of the Uprising.
\" +\n \"Nobody knows what happened to the terrorist group Ascendis Totalis.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"A Green Tomorrow\";\n fn = LiteratureNames.AGreenTomorrow;\n txt =\n \"Starting a few decades ago, there was a massive global movement towards the generation of renewable energy in an effort to \" +\n \"combat global warming and climate change. The shift towards renewable energy was a big success, or so it seemed. In 2045 \" +\n \"a staggering 80% of the world's energy came from non-renewable fossil fuels. Now, about three decades later, that \" +\n \"number is down to only 15%. Most of the world's energy now comes from nuclear power and renewable sources such as \" +\n \"solar and geothermal energy. Unfortunately, these efforts were not the huge success that they seem to be.
\" +\n \"Since 2045 primary energy use has soared almost tenfold. This was mainly due to growing urban populations and \" +\n \"the rise of increasingly advanced (and power-hungry) technology that has become ubiquitous in our lives. So, \" +\n \"despite the fact that the percentage of our energy that comes from fossil fuels has drastically decreased, \" +\n \"the total amount of energy we are producing from fossil fuels has actually increased.
\" +\n \"The grim effects of our species' irresponsible use of energy and neglect of our mother world have become increasingly apparent. \" +\n \"Last year a temperature of 190F was recorded in the Death Valley desert, which is over 50% higher than the highest \" +\n \"recorded temperature at the beginning of the century. In the last two decades numerous major cities such as Manhattan, Boston, and \" +\n \"Los Angeles have been partially or fully submerged by rising sea levels. In the present day, over 75% of the world's agriculture is \" +\n \"done in climate-controlled vertical farms, as most traditional farmland has become unusable due to severe climate conditions.
\" +\n \"Despite all of this, the greedy and corrupt corporations that rule the world have done nothing to address these problems that \" +\n \"threaten our species. And so it's up to us, the common people. Each and every one of us can make a difference by doing what \" +\n \"these corporations won't: taking responsibility. If we don't, pretty soon there won't be an Earth left to save. We are \" +\n \"the last hope for a green tomorrow.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Alpha and Omega\";\n fn = LiteratureNames.AlphaOmega;\n txt =\n \"Then we saw a new Heaven and a new Earth, for our first Heaven and Earth had gone away, and our sea was no more. \" +\n \"And we saw a new holy city, new Aeria, coming down out of this new Heaven, prepared as a bride adorned for her husband. \" +\n \"And we heard a loud voice saying, 'Behold, the new dwelling place of the Gods. We will dwell with them, and they \" +\n \"will be our people, and we will be with them as their Gods. We will wipe away every tear from their eyes, and death \" +\n \"shall be no more, neither shall there be mourning, nor crying, nor pain anymore, for the former things \" +\n \"have passed away.'
\" +\n \"And once we were seated on the throne we said 'Behold, I am making all things new.' \" +\n \"Also we said, 'Write this down, for these words are trustworthy and true.' And we said to you, \" +\n \"'It is done! I am the Alpha and the Omega, the beginning and the end. To the thirsty I will give from the spring \" +\n \"of the water of life without payment. The one who conquers will have this heritage, and we will be his God and \" +\n \"he will be our son. But as for the cowardly, the faithless, the detestable, as for murderers, \" +\n \"the sexually immoral, sorcerers, idolaters, and all liars, their portion will be in the lake that \" +\n \"burns with fire and sulfur, for it is the second true death.'\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Are We Living in a Computer Simulation?\";\n fn = LiteratureNames.SimulatedReality;\n txt =\n \"The idea that we are living in a virtual world is not new. It's a trope that has \" +\n \"been explored constantly in literature and pop culture. However, it is also a legitimate \" +\n \"scientific hypothesis that many notable physicists and philosophers have debated for years.
\" +\n \"Proponents for this simulated reality theory often point to how advanced our technology has become, \" +\n \"as well as the incredibly fast pace at which it has advanced over the past decades. The amount of computing \" +\n \"power available to us has increased over 100-fold since 2060 due to the development of nanoprocessors and \" +\n \"quantum computers. Artifical Intelligence has advanced to the point where our entire lives are controlled \" +\n \"by robots and machines that handle our day-to-day activities such as autonomous transportation and scheduling. \" +\n \"If we consider the pace at which this technology has advanced and assume that these developments continue, it's \" +\n \"reasonable to assume that at some point in the future our technology would be advanced enough that \" +\n \"we could create simulations that are indistinguishable from reality. However, if continued technological advancement \" +\n \"is a reasonable outcome, then it is very likely that such a scenario has already happened.
\" +\n \"Statistically speaking, somewhere out there in the infinite universe there is an advanced, intelligent species \" +\n \"that already has such technology. Who's to say that they haven't already created such a virtual reality: our own?\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Beyond Man\";\n fn = LiteratureNames.BeyondMan;\n txt =\n \"Humanity entered a 'transhuman' era a long time ago. And despite the protests and criticisms of many who cried out against \" +\n \"human augmentation at the time, the transhuman movement continued and prospered. Proponents of the movement ignored the critics, \" +\n \"arguing that it was in our inherent nature to better ourselves. To improve. To be more than we were. They claimed that \" +\n \"not doing so would be to go against every living organism's biological purpose: evolution and survival of the fittest.
\" +\n \"And here we are today, with technology that is advanced enough to augment humans to a state that \" +\n \"can only be described as posthuman. But what do we have to show for it when this augmentation \" +\n \"technology is only available to the so-called 'elite'? Are we really better off than before when only 5% of the \" +\n \"world's population has access to this technology? When the powerful corporations and organizations of the world \" +\n \"keep it all to themselves, have we really evolved?
\" +\n \"Augmentation technology has only further increased the divide between the rich and the poor, between the powerful and \" +\n \"the oppressed. We have not become 'more than human'. We have not evolved from nature's original design. We are still the greedy, \" +\n \"corrupted, and evil men that we always were.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Brighter than the Sun\";\n fn = LiteratureNames.BrighterThanTheSun;\n txt =\n `When people think about the corporations that dominate the East, they typically think of ${FactionNames.KuaiGongInternational}, which ` +\n \"holds a complete monopoly for manufacturing and commerce in Asia, or Global Pharmaceuticals, the world's largest \" +\n `drug company, or ${FactionNames.OmniTekIncorporated}, the global leader in intelligent and autonomous robots. But there's one company ` +\n \"that has seen a rapid rise in the last year and is poised to dominate not only the East, but the entire world: TaiYang Digital.
\" +\n \"TaiYang Digital is a Chinese internet-technology corporation that provides services such as \" +\n \"online advertising, search engines, gaming, media, entertainment, and cloud computing/storage. Its name TaiYang comes from the Chinese word \" +\n \"for 'sun'. In Chinese culture, the sun is a 'yang' symbol \" +\n \"associated with life, heat, masculinity, and heaven.
\" +\n \"The company was founded \" +\n \"less than 5 years ago and is already the third highest valued company in all of Asia. In 2076 it generated a total revenue of \" +\n \"over 10 trillion yuan. It's services are used daily by over a billion people worldwide.
\" +\n \"TaiYang Digital's meteoric rise is extremely surprising in modern society. This sort of growth is \" +\n \"something you'd commonly see in the first half of the century, especially for tech companies. However in \" +\n \"the last two decades the number of corporations has significantly declined as the largest entities \" +\n `quickly took over the economy. Corporations such as ${FactionNames.ECorp}, ${FactionNames.MegaCorp}, and ${FactionNames.KuaiGongInternational} have established ` +\n \"such strong monopolies in their market sectors that they have effectively killed off all \" +\n \"of the smaller and new corporations that have tried to start up over the years. This is what makes \" +\n \"the rise of TaiYang Digital so impressive. And if TaiYang continues down this path, then they have \" +\n \"a bright future ahead of them.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Democracy is Dead: The Fall of an Empire\";\n fn = LiteratureNames.DemocracyIsDead;\n txt =\n \"They rose from the shadows in the street. From the places where the oppressed meet. \" +\n \"Their cries echoed loudly through the air. As they once did in Tiananmen Square. \" +\n \"Loudness in the silence, Darkness in the light. They came forth with power and might. \" +\n \"Once the beacon of democracy, America was first. Its pillars of society destroyed and dispersed. \" +\n \"Soon the cries rose everywhere, with revolt and riot. Until one day, finally, all was quiet. \" +\n \"From the ashes rose a new order, corporatocracy was its name. \" +\n \"Rome, Mongol, Byzantine, all of history is just the same. \" +\n \"For man will never change in a fundamental way. \" +\n \"And now democracy is dead, in the USA.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = `Figures Show Rising Crime Rates in ${CityName.Sector12}`;\n fn = LiteratureNames.Sector12Crime;\n txt =\n \"A recent study by analytics company Wilson Inc. shows a significant rise \" +\n `in criminal activity in ${CityName.Sector12}. Perhaps the most alarming part of the statistic ` +\n \"is that most of the rise is in violent crime such as homicide and assault. According \" +\n \"to the study, the city saw a total of 21,406 reported homicides in 2076, which is over \" +\n \"a 20% increase compared to 2075.
\" +\n \"CIA director David Glarow says its too early to know \" +\n \"whether these figures indicate the beginning of a sustained increase in crime rates, or whether \" +\n \"the year was just an unfortunate outlier. He states that many intelligence and law enforcement \" +\n \"agents have noticed an increase in organized crime activites, and believes that these figures may \" +\n `be the result of an uprising from criminal organizations such as ${FactionNames.TheSyndicate} or the ${FactionNames.SlumSnakes}.`;\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Man and the Machine\";\n fn = LiteratureNames.ManAndMachine;\n txt =\n \"In 2005 Ray Kurzweil popularized his theory of the Singularity. He predicted that the rate \" +\n \"of technological advancement would continue to accelerate faster and faster until one day \" +\n \"machines would be become infinitely more intelligent than humans. This point, called the \" +\n \"Singularity, would result in a drastic transformation of the world as we know it. He predicted \" +\n \"that the Singularity would arrive by 2045. \" +\n \"And yet here we are, more than three decades later, where most would agree that we have not \" +\n \"yet reached a point where computers and machines are vastly more intelligent than we are. So what gives?
\" +\n \"The answer is that we have reached the Singularity, just not in the way we expected. The artifical superintelligence \" +\n \"that was predicted by Kurzweil and others exists in the world today - in the form of Augmentations. \" +\n \"Yes, those Augmentations that the rich and powerful keep to themselves enable humans \" +\n \"to become superintelligent beings. The Singularity did not lead to a world where \" +\n \"our machines are infinitely more intelligent than us, it led to a world \" +\n \"where man and machine can merge to become something greater. Most of the world just doesn't \" +\n \"know it yet.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Secret Societies\";\n fn = LiteratureNames.SecretSocieties;\n txt =\n \"The idea of secret societies has long intrigued the general public by inspiring curiosity, fascination, and \" +\n \"distrust. People have long wondered about who these secret society members are and what they do, with the \" +\n \"most radical of conspiracy theorists claiming that they control everything in the entire world. And while the world \" +\n \"may never know for sure, it is likely that many secret societies do actually exist, even today.
\" +\n \"However, the secret societies of the modern world are nothing like those that (supposedly) existed \" +\n `decades and centuries ago. The Freemasons, Knights Templar, and ${FactionNames.Illuminati}, while they may have been around ` +\n \"at the turn of the 21st century, almost assuredly do not exist today. The dominance of the Web in \" +\n \"our everyday lives and the fact that so much of the world is now digital has given rise to a new breed \" +\n \"of secret societies: Internet-based ones.
\" +\n \"Commonly called 'hacker groups', Internet-based secret societies have become well-known in today's \" +\n `world. Some of these, such as ${FactionNames.TheBlackHand}, are black hat groups that claim they are trying to ` +\n `help the oppressed by attacking the elite and powerful. Others, such as ${FactionNames.NiteSec}, are hacktivist groups ` +\n \"that try to push political and social agendas. Perhaps the most intriguing hacker group \" +\n `is the mysterious ${FactionNames.BitRunners}, whose purpose still remains unknown.`;\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Space: The Failed Frontier\";\n fn = LiteratureNames.TheFailedFrontier;\n txt =\n \"Humans have long dreamed about spaceflight. With enduring interest, we were driven to explore \" +\n \"the unknown and discover new worlds. We dreamed about conquering the stars. And in our quest, \" +\n \"we pushed the boundaries of our scientific limits, and then pushed further. Space exploration \" +\n \"lead to the development of many important technologies and new industries.
\" +\n \"But sometime in the middle of the 21st century, all of that changed. Humanity lost its ambitions and \" +\n \"aspirations of exploring the cosmos. The once-large funding for agencies like NASA and the European \" +\n \"Space Agency gradually whittled away until their eventual disbanding in the 2060's. Not even \" +\n \"militaries are fielding flights into space nowadays. The only remnants of the once great mission for cosmic \" +\n \"conquest are the countless satellites in near-earth orbit, used for communications, espionage, \" +\n \"and other corporate interests.
\" +\n \"And as we continue to look at the state of space technology, it becomes more and \" +\n \"more apparent that we will never return to that golden age of space exploration, that \" +\n \"age where everyone dreamed of going beyond earth for the sake of discovery.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Coded Intelligence: Myth or Reality?\";\n fn = LiteratureNames.CodedIntelligence;\n txt =\n \"Tremendous progress has been made in the field of Artificial Intelligence over the past few decades. \" +\n \"Our autonomous vehicles and transportation systems. The electronic personal assistants that control our everyday lives. \" +\n \"Medical, service, and manufacturing robots. All of these are examples of how far AI has come and how much it has \" +\n \"improved our daily lives. However, the question still remains of whether AI will ever be advanced enough to re-create \" +\n \"human intelligence.
\" +\n `We've certainly come close to artificial intelligence that is similar to humans. For example ${FactionNames.OmniTekIncorporated}'s ` +\n \"CompanionBot, a robot meant to act as a comforting friend for lonely and grieving people, is eerily human-like \" +\n \"in its appearance, speech, mannerisms, and even movement. However its artificial intelligence isn't the same as \" +\n \"that of humans. Not yet. It doesn't have sentience or self-awareness or consciousness.
\" +\n \"Many neuroscientists believe that we won't ever reach the point of creating artificial human intelligence. 'At the end of the \" +\n \"the day, AI comes down to 1's and 0's, while the human brain does not. We'll never see AI that is identical to that of \" +\n \"humans.'\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Synthetic Muscles\";\n fn = LiteratureNames.SyntheticMuscles;\n txt =\n \"Initial versions of synthetic muscles weren't made of anything organic but were actually \" +\n \"crude devices made to mimic human muscle function. Some of the early iterations were actually made of \" +\n \"common materials such as fishing lines and sewing threads due to their high strength for \" +\n \"a cheap cost.
\" +\n \"As technology progressed, however, advances in biomedical engineering paved the way for a new method of \" +\n \"creating synthetic muscles. Instead of creating something that closely imitated the functionality \" +\n \"of human muscle, scientists discovered a way of forcing the human body itself to augment its own \" +\n \"muscle tissue using both synthetic and organic materials. This is typically done using gene therapy \" +\n \"or chemical injections.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"Tensions rise in global tech race\";\n fn = LiteratureNames.TensionsInTechRace;\n txt =\n \"Have we entered a new Cold War? Is WWIII just beyond the horizon?
\" +\n `After rumors came out that ${FactionNames.OmniTekIncorporated} had begun developing advanced robotic supersoldiers, ` +\n \"geopolitical tensions quickly flared between the USA, Russia, and several Asian superpowers. \" +\n `In a rare show of cooperation between corporations, ${FactionNames.MegaCorp} and ${FactionNames.ECorp} have ` +\n \"reportedly launched hundreds of new surveillance and espionage satellites. \" +\n \"Defense contractors such as \" +\n \"DeltaOne and AeroCorp have been working with the CIA and NSA to prepare \" +\n \"for conflict. Meanwhile, the rest of the world sits in earnest \" +\n \"hoping that it never reaches full-scale war. With today's technology \" +\n \"and firepower, a World War would assuredly mean the end of human civilization.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"The Cost of Immortality\";\n fn = LiteratureNames.CostOfImmortality;\n txt =\n \"Evolution and advances in medical and augmentation technology has lead to drastic improvements \" +\n \"in human mortality rates. Recent figures show that the life expectancy for humans \" +\n \"that live in a first-world country is about 130 years of age, almost double of what it was \" +\n \"at the turn of the century. However, this increase in average lifespan has had some \" +\n \"significant effects on society and culture.
\" +\n \"Due to longer lifespans and a better quality of life, many adults are holding \" +\n \"off on having kids until much later. As a result, the percentage of youth in \" +\n \"first-world countries has been decreasing, while the number \" +\n \"of senior citizens is significantly increasing.
\" +\n \"Perhaps the most alarming result of all of this is the rapidly shrinking workforce. \" +\n \"Despite the increase in life expectancy, the typical retirement age for \" +\n \"workers in America has remained about the same, meaning a larger and larger \" +\n \"percentage of people in America are retirees. Furthermore, many \" +\n \"young adults are holding off on joining the workforce because they feel that \" +\n \"they have plenty of time left in their lives for employment, and want to \" +\n \"'enjoy life while they're young.' For most industries, this shrinking workforce \" +\n \"is not a major issue as most things are handled by robots anyways. However, \" +\n \"there are still several key industries such as engineering and education \" +\n \"that have not been automated, and these remain in danger to this cultural \" +\n \"phenomenon.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"The Hidden World\";\n fn = LiteratureNames.TheHiddenWorld;\n txt =\n \"WAKE UP SHEEPLE
\" +\n \"THE GOVERNMENT DOES NOT EXIST. CORPORATIONS DO NOT RUN SOCIETY
\" +\n `THE ${FactionNames.Illuminati.toUpperCase()} ARE THE SECRET RULERS OF THE WORLD!
` +\n `Yes, the ${FactionNames.Illuminati} of legends. The ancient secret society that controls the entire ` +\n \"world from the shadows with their invisible hand. The group of the rich and wealthy \" +\n \"that have penetrated every major government, financial agency, and corporation in the last \" +\n \"three hundred years.
\" +\n \"OPEN YOUR EYES
\" +\n `It was the ${FactionNames.Illuminati} that brought an end to democracy in the world. They are the driving force ` +\n \"behind everything that happens.
\" +\n \"THEY ARE ALL AROUND YOU
\" +\n \"After destabilizing the world's governments, they are now entering the final stage of their master plan. \" +\n \"They will secretly initiate global crises. Terrorism. Pandemics. World War. And out of the chaos \" +\n \"that ensues they will build their New World Order.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"The New God\";\n fn = LiteratureNames.TheNewGod;\n txt =\n \"Everyone has a moment in their life when they wonder about the bigger questions.
\" +\n \"What's the point of all this? What is my purpose?
\" +\n \"Some people dare to think even bigger.
\" +\n \"What will the fate of the human race be?
\" +\n \"We live in an era vastly different from that of 15 or even 20 years ago. We have gone \" +\n \"beyond the limits of humanity. We have stripped ourselves of the tyranny of flesh.
\" +\n \"The Singularity is here. The merging of man and machine. This is where humanity evolves into \" +\n \"something greater. This is our future.
\" +\n \"Embrace it, and you will obey a new god. The God in the Machine.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"The New Triads\";\n fn = LiteratureNames.NewTriads;\n txt =\n \"The Triads were an ancient transnational crime syndicate based in China, Hong Kong, and other Asian \" +\n \"territories. They were often considered one of the first and biggest criminal secret societies. \" +\n \"While most of the branches of the Triads have been destroyed over the past few decades, the \" +\n \"crime faction has spawned and inspired a number of other Asian crime organizations over the past few years. \" +\n `The most notable of these is the ${FactionNames.Tetrads}.
` +\n `It is widely believed that the ${FactionNames.Tetrads} are a rogue group that splintered off from the Triads sometime in the ` +\n `mid 21st century. The founders of the ${FactionNames.Tetrads}, all of whom were ex-Triad members, believed that the ` +\n `Triads were losing their purpose and direction. The ${FactionNames.Tetrads} started off as a small group that mainly engaged ` +\n \"in fraud and extortion. They were largely unknown until just a few years ago when they took over the illegal \" +\n \"drug trade in all of the major Asian cities. They quickly became the most powerful crime syndicate in the \" +\n \"continent.
\" +\n `Not much else is known about the ${FactionNames.Tetrads}, or about the efforts the Asian governments and corporations are making ` +\n `to take down this large new crime organization. Many believe that the ${FactionNames.Tetrads} have infiltrated the governments ` +\n \"and powerful corporations in Asia, which has helped faciliate their recent rapid rise.\";\n Literatures[fn] = new Literature(title, fn, txt);\n\n title = \"The Secret War\";\n fn = LiteratureNames.TheSecretWar;\n txt = \"\";\n Literatures[fn] = new Literature(title, fn, txt);\n})();\n","import { ITaskParams } from \"../ITaskParams\";\n/* tslint:disable:max-line-length */\n\n/**\n * Defines the parameters that can be used to initialize and describe a GangMemberTask\n * (defined in Gang.js)\n */\ninterface IGangMemberTaskMetadata {\n /**\n * Description of the task\n */\n desc: string;\n\n /**\n * Whether or not this task is meant for Combat-type gangs\n */\n isCombat: boolean;\n\n /**\n * Whether or not this task is for Hacking-type gangs\n */\n isHacking: boolean;\n\n /**\n * Name of the task\n */\n name: string;\n\n /**\n * An object containing weighting parameters for the task. These parameters are used for\n * various calculations (respect gain, wanted gain, etc.)\n */\n params: ITaskParams;\n}\n\n/**\n * Array of metadata for all Gang Member tasks. Used to construct the global GangMemberTask\n * objects in Gang.js\n */\nexport const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [\n {\n desc: \"This gang member is currently idle\",\n isCombat: true,\n isHacking: true,\n name: \"Unassigned\",\n params: { hackWeight: 100 }, // This is just to get by the weight check in the GangMemberTask constructor\n },\n {\n desc: \"Assign this gang member to create and distribute ransomware
Earns money - Slightly increases respect - Slightly increases wanted level\",\n isCombat: false,\n isHacking: true,\n name: \"Ransomware\",\n params: {\n baseRespect: 0.00005,\n baseWanted: 0.0001,\n baseMoney: 3,\n hackWeight: 100,\n difficulty: 1,\n },\n },\n {\n desc: \"Assign this gang member to attempt phishing scams and attacks
Earns money - Increases respect - Increases wanted level\",\n isCombat: false,\n isHacking: true,\n name: \"Money Laundering\",\n params: {\n baseRespect: 0.001,\n baseWanted: 1.25,\n baseMoney: 360,\n hackWeight: 75,\n chaWeight: 25,\n difficulty: 25,\n },\n },\n {\n desc: \"Assign this gang member to commit acts of cyberterrorism
Greatly increases respect - Greatly increases wanted level\",\n isCombat: false,\n isHacking: true,\n name: \"Cyberterrorism\",\n params: {\n baseRespect: 0.01,\n baseWanted: 6,\n hackWeight: 80,\n chaWeight: 20,\n difficulty: 36,\n },\n },\n {\n desc: \"Assign this gang member to be an ethical hacker for corporations
Earns money - Lowers wanted level\",\n isCombat: false,\n isHacking: true,\n name: \"Ethical Hacking\",\n params: {\n baseWanted: -0.001,\n baseMoney: 3,\n hackWeight: 90,\n chaWeight: 10,\n difficulty: 1,\n },\n },\n {\n desc: \"Assign this gang member to mug random people on the streets
Earns money - Slightly increases respect - Very slightly increases wanted level\",\n isCombat: true,\n isHacking: false,\n name: \"Mug People\",\n params: {\n baseRespect: 0.00005,\n baseWanted: 0.00005,\n baseMoney: 3.6,\n strWeight: 25,\n defWeight: 25,\n dexWeight: 25,\n agiWeight: 10,\n chaWeight: 15,\n difficulty: 1,\n },\n },\n {\n desc: \"Assign this gang member to sell drugs
Earns money - Slightly increases respect - Slightly increases wanted level - Scales slightly with territory\",\n isCombat: true,\n isHacking: false,\n name: \"Deal Drugs\",\n params: {\n baseRespect: 0.00006,\n baseWanted: 0.002,\n baseMoney: 15,\n agiWeight: 20,\n dexWeight: 20,\n chaWeight: 60,\n difficulty: 3.5,\n territory: {\n money: 1.2,\n respect: 1,\n wanted: 1.15,\n },\n },\n },\n {\n desc: \"Assign this gang member to extort civilians in your territory